From 5ee0e233b86beb1a831cfc67963baff1ac0c203b Mon Sep 17 00:00:00 2001 From: Indrani Bhattacharya <70219648+indraniBh@users.noreply.github.com> Date: Fri, 17 Nov 2023 16:44:50 +0530 Subject: [PATCH 01/15] Create licensing-faq.md --- docs/reference/licensing-faq.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 docs/reference/licensing-faq.md diff --git a/docs/reference/licensing-faq.md b/docs/reference/licensing-faq.md new file mode 100644 index 00000000..897f9ae5 --- /dev/null +++ b/docs/reference/licensing-faq.md @@ -0,0 +1,4 @@ +#License Consumtion Mechanism + + +#FAQ From 313fdb8acd903ddb151ddd010746abe1c216197c Mon Sep 17 00:00:00 2001 From: itachary Date: Wed, 22 Nov 2023 15:25:01 +0000 Subject: [PATCH 02/15] Added ref/licensing.md --- docs/reference/{licensing-faq.md => licensing.md} | 0 mkdocs.yml | 1 + 2 files changed, 1 insertion(+) rename docs/reference/{licensing-faq.md => licensing.md} (100%) diff --git a/docs/reference/licensing-faq.md b/docs/reference/licensing.md similarity index 100% rename from docs/reference/licensing-faq.md rename to docs/reference/licensing.md diff --git a/mkdocs.yml b/mkdocs.yml index cab78cce..f5c3f8f5 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -80,6 +80,7 @@ nav: - Reference Guide: - Capabilities: reference/capabilities.md - Resource requirements: reference/resource-requirements.md + - Licensing: reference/licensing.md - Releases: - Releases: releases.md - Announcements: news.md # Check if autogenerated. If yes, see how to merge with releases From fe36ccb2bbcb503a8c49f2c1f70f4174007b331f Mon Sep 17 00:00:00 2001 From: itachary Date: Wed, 22 Nov 2023 17:56:00 +0000 Subject: [PATCH 03/15] Added contents to ref/licensing.md --- docs/reference/licensing.md | 155 +++++++++++++++++++++++++++++++++++- 1 file changed, 153 insertions(+), 2 deletions(-) diff --git a/docs/reference/licensing.md b/docs/reference/licensing.md index 897f9ae5..8201455c 100644 --- a/docs/reference/licensing.md +++ b/docs/reference/licensing.md @@ -1,4 +1,155 @@ -#License Consumtion Mechanism +# Licensing +## Section1:License consumption mechanism and feature licenses -#FAQ +Details on how the features are consumed is given below: + +KENG provides the following license features based on license bundles. + +#### Table1: KENG Feature License + + | Feature Licenses | Developer | Team | System | + |-------------------------------------|----------------------|-----------------|------------------------| + | KENG-SEAT | 1 | 8 | 16 | + | KENG-SEAT​-UHD | NA | 8 | 16 | + | KENG-SEAT​-IXHW | NA | NA | 16 | + | KENG-DPLU | 50 | 400 | 800 | + | KENG-CPLU | 50 | 400 | 800 | + | KENG-UNLIMITED-CP | NA | NA | 16 | + +Test cost is calculated based on the test configuration such as port type, port speed, protocol, protocol sessions etc. + +#### Table2: Test Cost Matrix + + | Port Type | Condition | Seat Cost | CP Cost | DP cost | + |-----------------------|----------------------|-----------------------------------------------------------------------|-------------------------|---------------| + | IXOS HW | | 1 x KENG-SEAT,
1 x KENG-SEAT-IXHW​ | 0 | 0 | + | UHD400T | If CP Cost <= 50​ | 1 x KENG-SEAT,​
1 x KENG-SEAT-UHD​ | SUM (Protocol Cost1)​ | 0 | + | UHD400T | If CP Cost > 50 | 1 x KENG-SEAT,​
1 x KENG-SEAT-UHD​,
1 x KENG-UNLIMITED-CP| 50 | 0 | + | Ixia-c SW | If CP Cost <= 50 | 1 x KENG-SEAT | SUM (Protocol Cost1)​ | SUM (Speed Cost2) | + | Ixia-c SW | If CP Cost > 50 | 1 x KENG-SEAT,​
1 x KENG-UNLIMITED-CP | 50 | SUM (Speed Cost2) | + + 1 See “Control Plane Cost” reference table [Table3] for Protocol cost. + + 2 See “Data Plane Speed Cost” reference table [Table4] for Speed cost. + + Seat is the number of running keng-controller instances and Seat cost is calculated based on controller instances (KENG-SEAT) and port type (KENG-SEAT-UHD, KENG-SEAT-IXHW) in a test configuration. Data Plane License Unit (KENG-DPLU) is associated with traffic port capacity. The number of required units is determined as a sum of configured port speeds (1, 10, 25, 40, 50, 100GE). Maximum port performance might be less than configured port speed. Control Plane License unit (KENG-CPLU) is associated with control plane protocol scale. The number of required CP units is determined as a sum of configured protocol sessions. Configurations exceeding 50 protocol sessions will consume KENG-UNLIMITED-CP license if available and 50 KENG-CPLU. If KENG-UNLIMITED-CP is not available, an exact required number of KENG-CPLU will be consumed. + + Total Test Cost = Seat Cost + CP Cost * KENG-CPLU + DP Cost * KENG-DPLU​ + +#### Table3: Control Plane Cost Reference Table + + | Protocol | Session Definition | Protocol Cost/Session | Comment | + |------------------------------|-----------------------------------------|-----------------------------------|------------------------| + | IP Interface (ARP, ND) | devices:
- ethernets:
- ipv4_addresses:
- ipv6_addresses: | 0 | | + | IP Loopbacks​ | devices:
- ipv4_loopbacks:
- ipv6_loopbacks: | 0 | | + | LLDP​ | lldp:
- connection:
- port_name: | 1 | Session = Test Port with LLDP enabled | + | LACP | lacp:
- ports:
- port_name:
lacp: | 1 | Session = LAG group, no matter group size​ | + | BGP | devices:
- bgp:
- ipv4_addresses:
- ipv6_addresses:
- peers:​ | 1 | Session = BGP peer | + | ISIS | devices:
- isis:
- interfaces:
- eth_name: ​ | 1 | Session = ISIS interface | + | RSVP | devices:
- rsvp:
- ipv4_interfaces:
- neighbor_ip: ​ | 1 | Session = RSVP neighbor​ | + + +CP Cost/Port = SUM (Protocol Cost) on each port + + +#### Table4: Data Plane Speed Cost Reference Table + + | DP Port Speed | 1G | 10G | 25G | 40G | 50G | 100G | + |-----------------------|------------|-----------|-----------|------------|------------|-----------| + | DP Cost | 1 | 10 | 25 | 40 | 50 | 100 | + + +#### Sample Use case: + +Number of keng-controller instance: 1 + +**Test configuration:** + +* Number of ports: 4 +* Port Speed: 100G +* Protocol: 100 BGP sessions/port +* Port type: ixia-c Software + +**Scenario1: License without unlimited CP capability** + +**Consumed features:** + + KENG-SEAT: 1 [1 keng-controller instance and ixia-c SW port]3 + + KENG-DPLU: 400 [100G speed * 4 ports]4 + + KENG-CPLU: 400 [100 BGP sessions/port * 4 ports]5 + +**Scenario2: License with unlimited CP capability** + +**Consumed features:** + + KENG-SEAT: 1 [1 keng-controller instance and ixia-c SW port]3 + + KENG-DPLU: 400 [100G speed * 4 ports]4 + + KENG-CPLU: 50 [CP cost = 400 (100 BGP sessions/port * 4 ports) which is greater than 50 and unlimited cp capability present]5 + + KENG-UNLIMITED-CP: 1 + +3Test Cost Matrix “Table2” ; 4Control Plane Cost Reference Table “Table4”; 5Control Plane Cost Reference Table “Table3” + + +## Section2:Liveliness check and timeout on license server communication + +**Q1. What is the impact of frequent license checking on test execution time for individual test and batch?** + +License check-out/check-in mechanism in keng-controller works as follows: + + a. For any test configuration, it will calculate license requirements (say n) + [This n is derived from multiple aspects of testcases, to understand it you can go to Section1* ] + b. Based on calculation done in step a, check-out the licenses at the time of OTG SetConfig. + c. In the next iftest configuration requires, + if # of licenses == n: + - keng-controller will not have any communication with configured license servers [check-in and check-out] + else if # of licenses > n: + - keng-controller will not check-in licenses, it will attempt to check-out required surplus licenses + else if # of licenses < n: + - keng-controller will check-in additionally acquired licenses + +*[Section1](#section1license-consumption-mechanism-and-feature-licenses) + +On the timing aspect the entire aforementioned license check-out/check-in mechanism works concurrently with control plane and data plane configuration in ports during OTG SetConfig operation.
+Therefore, potentially there is minimal impact in OTG SetConfig API response time, specially when the license server is in the same pod/host. Although, in case of license server sitting in separate host in LAN OTG Setconfig API response time might get impacted due to latency. + +**Q2. What is the granularity of license?** + +It depends on various aspects port type, port speed, protocol type and number of protocol sessions. For details on granular license features and associated consummation mechanism, please refer to [Section1](#section1license-consumption-mechanism-and-feature-licenses). + +**Q3. What happens if the controller does not find the active license server on boot – how long does it try?** + +Keng-controller is allowed to be given a bootstrap input of maximum 4 license servers. Keng-controller is trying to connect to those license servers during bootstrap. If neither of them is connected, then keng-controller capability is set as community capability.
+A background routine is initiated to make recurrent attempts to connect those configured license servers in 30 second intervals.
+It is possible that after recurrent attempts none of the license servers is reachable. Till that point any configuration beyond community capability will return error.
+Meanwhile, in any of the recurrent attempt keng-controller is able to communicate or establish connection with any of the license servers, then for the configuration beyond the community standard, keng-controller will try to check-out a license from the license server with which the connection is established.
+ +**Q4. What message it generates if server not found?** + +If any of the configured license servers are not reachable, the keng-controller capability is kept to community capability. For the configuration beyond community capability will throw error as mentioned in Q1. + +**Q5. What exactly is the error code and message when the license is needed but cannot be checked out?** + +There are two possible scenarios when license cannot checkout. + +Secnario1: Any of the license servers doesn't have adequate license features required for the test configuration
+It will throw error with error code 13 and the sample error message "Current configuration requires following additional license feature(s): {map[KENG-DPLU:50 KENG-SEAT:1]} which is not available in configured license server(s): {[ip1, ip2]} Available license feature(s) in license-server(s) are {ip1 : map[KENG-DPLU:0 KENG-SEAT:0] ,ip2 : map[KENG-DPLU:0 KENG-SEAT:0] }." .
+Scenario2: Configured license server is not available/reachable
+It will throw error with error code 13 and the sample error message "issue consuming license from server 10.39.35.77: rpc error: code = DeadlineExceeded desc = context deadline exceeded". + +**Q6. Details about the “Retry” behavior for liveness check– how many retries, after how many retries things are considered dead, how long does it take?** + +The controller keeps on probing liveliness check on the list of license servers supplied on boot-up time in background routine every 30 seconds during controller lifetime. + +**Q7. What happens if there is more than one license servers alive at the time of the last check, but when the controller actually checks the license from the first one, it is no longer available?** + +The keng-controller will attempt to check out license from next available license server in the configured list. + +**Q8. Clarify once a license is granted then how long it is valid?** + +Once a specific count of license feature or collection of same [details of license feature are given in the above [Section1](#section1license-consumption-mechanism-and-feature-licenses)] is granted by the license server to an instance of the keng-controller, validity of it will be determined by subsequent incoming test configurations details on which is mentioned in Q1. From 4b417b5d3577f8a8eccf077c78956292b9c99843 Mon Sep 17 00:00:00 2001 From: itachary Date: Thu, 23 Nov 2023 05:31:14 +0000 Subject: [PATCH 04/15] added code block --- docs/reference/licensing.md | 43 ++++++++++++++----------------------- 1 file changed, 16 insertions(+), 27 deletions(-) diff --git a/docs/reference/licensing.md b/docs/reference/licensing.md index 8201455c..15549834 100644 --- a/docs/reference/licensing.md +++ b/docs/reference/licensing.md @@ -2,8 +2,7 @@ ## Section1:License consumption mechanism and feature licenses -Details on how the features are consumed is given below: - +Details on how the features are consumed is given below:
KENG provides the following license features based on license bundles. #### Table1: KENG Feature License @@ -29,13 +28,12 @@ Test cost is calculated based on the test configuration such as port type, port | Ixia-c SW | If CP Cost <= 50 | 1 x KENG-SEAT | SUM (Protocol Cost1)​ | SUM (Speed Cost2) | | Ixia-c SW | If CP Cost > 50 | 1 x KENG-SEAT,​
1 x KENG-UNLIMITED-CP | 50 | SUM (Speed Cost2) | - 1 See “Control Plane Cost” reference table [Table3] for Protocol cost. - - 2 See “Data Plane Speed Cost” reference table [Table4] for Speed cost. + 1 “Control Plane Cost” reference table [Table3] for Protocol cost.
+ 2 “Data Plane Speed Cost” reference table [Table4] for Speed cost. Seat is the number of running keng-controller instances and Seat cost is calculated based on controller instances (KENG-SEAT) and port type (KENG-SEAT-UHD, KENG-SEAT-IXHW) in a test configuration. Data Plane License Unit (KENG-DPLU) is associated with traffic port capacity. The number of required units is determined as a sum of configured port speeds (1, 10, 25, 40, 50, 100GE). Maximum port performance might be less than configured port speed. Control Plane License unit (KENG-CPLU) is associated with control plane protocol scale. The number of required CP units is determined as a sum of configured protocol sessions. Configurations exceeding 50 protocol sessions will consume KENG-UNLIMITED-CP license if available and 50 KENG-CPLU. If KENG-UNLIMITED-CP is not available, an exact required number of KENG-CPLU will be consumed. - Total Test Cost = Seat Cost + CP Cost * KENG-CPLU + DP Cost * KENG-DPLU​ + Total Test Cost = Seat Cost + CP Cost * KENG-CPLU + DP Cost * KENG-DPLU​ #### Table3: Control Plane Cost Reference Table @@ -50,7 +48,7 @@ Test cost is calculated based on the test configuration such as port type, port | RSVP | devices:
- rsvp:
- ipv4_interfaces:
- neighbor_ip: ​ | 1 | Session = RSVP neighbor​ | -CP Cost/Port = SUM (Protocol Cost) on each port + CP Cost/Port = SUM (Protocol Cost) on each port #### Table4: Data Plane Speed Cost Reference Table @@ -71,26 +69,17 @@ Number of keng-controller instance: 1 * Protocol: 100 BGP sessions/port * Port type: ixia-c Software -**Scenario1: License without unlimited CP capability** - -**Consumed features:** - - KENG-SEAT: 1 [1 keng-controller instance and ixia-c SW port]3 - - KENG-DPLU: 400 [100G speed * 4 ports]4 - - KENG-CPLU: 400 [100 BGP sessions/port * 4 ports]5 - -**Scenario2: License with unlimited CP capability** - -**Consumed features:** - - KENG-SEAT: 1 [1 keng-controller instance and ixia-c SW port]3 - - KENG-DPLU: 400 [100G speed * 4 ports]4 - - KENG-CPLU: 50 [CP cost = 400 (100 BGP sessions/port * 4 ports) which is greater than 50 and unlimited cp capability present]5 - +**Scenario1: License without unlimited CP capability**
+**Consumed features:**
+ KENG-SEAT: 1 [1 keng-controller instance and ixia-c SW port]3
+ KENG-DPLU: 400 [100G speed * 4 ports]4
+ KENG-CPLU: 400 [100 BGP sessions/port * 4 ports]5
+ +**Scenario2: License with unlimited CP capability**
+**Consumed features:**
+ KENG-SEAT: 1 [1 keng-controller instance and ixia-c SW port]3
+ KENG-DPLU: 400 [100G speed * 4 ports]4
+ KENG-CPLU: 50 [CP cost = 400 (100 BGP sessions/port * 4 ports) which is greater than 50 and unlimited cp capability is present]5
KENG-UNLIMITED-CP: 1 3Test Cost Matrix “Table2” ; 4Control Plane Cost Reference Table “Table4”; 5Control Plane Cost Reference Table “Table3” From f5318f5833d169766d9d6f5e210123e022580530 Mon Sep 17 00:00:00 2001 From: Alex Bortok <431965+bortok@users.noreply.github.com> Date: Tue, 28 Nov 2023 17:02:21 -0800 Subject: [PATCH 05/15] rewrote reference/licensing.md --- docs/reference/licensing.md | 160 +++++++++++++++++++----------------- 1 file changed, 86 insertions(+), 74 deletions(-) diff --git a/docs/reference/licensing.md b/docs/reference/licensing.md index 15549834..11bf7e4d 100644 --- a/docs/reference/licensing.md +++ b/docs/reference/licensing.md @@ -1,41 +1,46 @@ # Licensing -## Section1:License consumption mechanism and feature licenses +## Section 1: License consumption mechanism and feature licenses -Details on how the features are consumed is given below:
-KENG provides the following license features based on license bundles. +Elastic Network Generator [licenses](../licensing.md) include the following features depending on the license edition. Details on how the features are consumed are given below. -#### Table1: KENG Feature License +### Table 1: KENG Feature Licenses | Feature Licenses | Developer | Team | System | |-------------------------------------|----------------------|-----------------|------------------------| | KENG-SEAT | 1 | 8 | 16 | - | KENG-SEAT​-UHD | NA | 8 | 16 | - | KENG-SEAT​-IXHW | NA | NA | 16 | + | KENG-SEAT​-UHD | N/A | 8 | 16 | + | KENG-SEAT​-IXHW | N/A | N/A | 16 | | KENG-DPLU | 50 | 400 | 800 | | KENG-CPLU | 50 | 400 | 800 | - | KENG-UNLIMITED-CP | NA | NA | 16 | - -Test cost is calculated based on the test configuration such as port type, port speed, protocol, protocol sessions etc. + | KENG-UNLIMITED-CP | N/A | N/A | 16 | -#### Table2: Test Cost Matrix +The exact list of feature licenses required by a specific test configuration is calculated based on the test port type, port speed, protocol, protocol sessions etc. Overall, the list of required licenses is referred to as Test Cost. - | Port Type | Condition | Seat Cost | CP Cost | DP cost | - |-----------------------|----------------------|-----------------------------------------------------------------------|-------------------------|---------------| - | IXOS HW | | 1 x KENG-SEAT,
1 x KENG-SEAT-IXHW​ | 0 | 0 | - | UHD400T | If CP Cost <= 50​ | 1 x KENG-SEAT,​
1 x KENG-SEAT-UHD​ | SUM (Protocol Cost1)​ | 0 | - | UHD400T | If CP Cost > 50 | 1 x KENG-SEAT,​
1 x KENG-SEAT-UHD​,
1 x KENG-UNLIMITED-CP| 50 | 0 | - | Ixia-c SW | If CP Cost <= 50 | 1 x KENG-SEAT | SUM (Protocol Cost1)​ | SUM (Speed Cost2) | - | Ixia-c SW | If CP Cost > 50 | 1 x KENG-SEAT,​
1 x KENG-UNLIMITED-CP | 50 | SUM (Speed Cost2) | - - 1 “Control Plane Cost” reference table [Table3] for Protocol cost.
- 2 “Data Plane Speed Cost” reference table [Table4] for Speed cost. +### Table 2: Test Cost Calculation Matrix - Seat is the number of running keng-controller instances and Seat cost is calculated based on controller instances (KENG-SEAT) and port type (KENG-SEAT-UHD, KENG-SEAT-IXHW) in a test configuration. Data Plane License Unit (KENG-DPLU) is associated with traffic port capacity. The number of required units is determined as a sum of configured port speeds (1, 10, 25, 40, 50, 100GE). Maximum port performance might be less than configured port speed. Control Plane License unit (KENG-CPLU) is associated with control plane protocol scale. The number of required CP units is determined as a sum of configured protocol sessions. Configurations exceeding 50 protocol sessions will consume KENG-UNLIMITED-CP license if available and 50 KENG-CPLU. If KENG-UNLIMITED-CP is not available, an exact required number of KENG-CPLU will be consumed. + | Port Type | Condition | Seat Cost | Control Plane (CP) Cost | Data Plane (DP) cost | + |------------------|------------------- |-----------------------------------------------------------------------|------------------------- |--------------- | + | Ixia-c SW | `If CP Cost <= 50` | `1x KENG-SEAT` | `SUM (Protocol Cost)`1​ | `SUM (Speed Cost)`2| + | Ixia-c SW | `If CP Cost > 50`3 | `1x KENG-SEAT`
`1x KENG-UNLIMITED-CP` | `50` | `SUM (Speed Cost)`2| + | UHD400T | `If CP Cost <= 50`​ | `1x KENG-SEAT`​
`1x KENG-SEAT-UHD`​ | `SUM (Protocol Cost)​`1 | `0` | + | UHD400T | `If CP Cost > 50`3 | `1x KENG-SEAT`
`1x KENG-SEAT-UHD`
`1x KENG-UNLIMITED-CP` | `50` | `0` | + | IxOS Hardware | | `1x KENG-SEAT`
`1x KENG-SEAT-IXHW`​ | `0` | `0` | - Total Test Cost = Seat Cost + CP Cost * KENG-CPLU + DP Cost * KENG-DPLU​ + 1 See reference table [Table 3](#table-3-control-plane-cost-reference-table) for `Protocol Cost`.
+ 2 See reference table [Table 4](#table-4-data-plane-speed-cost-reference-table) for `Speed Cost`.
+ 3 If `KENG-UNLIMITED-CP` is not available, an exact required number of `KENG-CPLU` will be consumed. -#### Table3: Control Plane Cost Reference Table + * Seat is the number of running `keng-controller` instances with a configuration exceeding capabilities of the Community Edition. + * Data Plane License Unit (`KENG-DPLU`) is associated with traffic port capacity. + * The number of required units is determined as a sum of configured port speeds (1, 10, 25, 40, 50, 100GE). Maximum port performance might be less than configured port speed. + * Control Plane License unit (`KENG-CPLU`) is associated with control plane protocol scale. The number of required CP units is determined as a sum of configured protocol sessions. + +``` +Test Cost = Seat Cost + CP Cost * KENG-CPLU + DP Cost * KENG-DPLU​ +``` + +### Table 3: Control Plane Cost Reference Table | Protocol | Session Definition | Protocol Cost/Session | Comment | |------------------------------|-----------------------------------------|-----------------------------------|------------------------| @@ -48,97 +53,104 @@ Test cost is calculated based on the test configuration such as port type, port | RSVP | devices:
- rsvp:
- ipv4_interfaces:
- neighbor_ip: ​ | 1 | Session = RSVP neighbor​ | - CP Cost/Port = SUM (Protocol Cost) on each port + CP Cost/Port = SUM (Protocol Cost) on each port -#### Table4: Data Plane Speed Cost Reference Table +### Table 4: Data Plane Speed Cost Reference Table | DP Port Speed | 1G | 10G | 25G | 40G | 50G | 100G | |-----------------------|------------|-----------|-----------|------------|------------|-----------| | DP Cost | 1 | 10 | 25 | 40 | 50 | 100 | -#### Sample Use case: +### Sample Use case + + +**Test configuration** + +Number of `keng-controller` instances: `1` -Number of keng-controller instance: 1 +* Number of ports: `4` +* Port Speed: `100G` +* Protocol: `100 BGP sessions/port` +* Port type: `Ixia-c software` -**Test configuration:** +#### Scenario 1: Unlimited CP capability `KENG-UNLIMITED-CP` is unavailable -* Number of ports: 4 -* Port Speed: 100G -* Protocol: 100 BGP sessions/port -* Port type: ixia-c Software +**Consumed features** -**Scenario1: License without unlimited CP capability**
-**Consumed features:**
- KENG-SEAT: 1 [1 keng-controller instance and ixia-c SW port]3
- KENG-DPLU: 400 [100G speed * 4 ports]4
- KENG-CPLU: 400 [100 BGP sessions/port * 4 ports]5
+ KENG-SEAT: 1 = (1 keng-controller instance and ixia-c SW port) + KENG-DPLU: 400 = (100G speed * 4 ports) + KENG-CPLU: 400 = (100 BGP sessions/port * 4 ports) -**Scenario2: License with unlimited CP capability**
-**Consumed features:**
- KENG-SEAT: 1 [1 keng-controller instance and ixia-c SW port]3
- KENG-DPLU: 400 [100G speed * 4 ports]4
- KENG-CPLU: 50 [CP cost = 400 (100 BGP sessions/port * 4 ports) which is greater than 50 and unlimited cp capability is present]5
- KENG-UNLIMITED-CP: 1 -3Test Cost Matrix “Table2” ; 4Control Plane Cost Reference Table “Table4”; 5Control Plane Cost Reference Table “Table3” +#### Scenario 2: Unlimited CP capability `KENG-UNLIMITED-CP` is available +**Consumed features** -## Section2:Liveliness check and timeout on license server communication + KENG-SEAT: 1 = (1 keng-controller instance and ixia-c SW port) + KENG-DPLU: 400 = (100G speed * 4 ports) + KENG-CPLU: 50 = (CP cost = 400 (100 BGP sessions/port * 4 ports) which is greater than 50 and unlimited cp capability is present) + KENG-UNLIMITED-CP: 1 -**Q1. What is the impact of frequent license checking on test execution time for individual test and batch?** +## Section 2: Liveliness check and timeout on license server communication + +### Q1. What is the impact of frequent license checking on test execution time for individual test and batch? License check-out/check-in mechanism in keng-controller works as follows: - a. For any test configuration, it will calculate license requirements (say n) - [This n is derived from multiple aspects of testcases, to understand it you can go to Section1* ] - b. Based on calculation done in step a, check-out the licenses at the time of OTG SetConfig. - c. In the next iftest configuration requires, - if # of licenses == n: - - keng-controller will not have any communication with configured license servers [check-in and check-out] - else if # of licenses > n: - - keng-controller will not check-in licenses, it will attempt to check-out required surplus licenses - else if # of licenses < n: - - keng-controller will check-in additionally acquired licenses +1. Calculate Test Cost, let's say it is N +2. Based on calculation done in step (1), check-out the licenses at the time of OTG SetConfig API call. +3. Execute the test if license check-out is successful. +4. For the next configuration, calculate Test Cost, let's say it is M -*[Section1](#section1license-consumption-mechanism-and-feature-licenses) +``` +if M == N: + - keng-controller will not have any communication with license servers +else if M > N: + - keng-controller will not check-in licenses + - it will attempt to check-out required additional licenses +else if M < N: + - keng-controller will check-in surplus of the licenses +``` -On the timing aspect the entire aforementioned license check-out/check-in mechanism works concurrently with control plane and data plane configuration in ports during OTG SetConfig operation.
-Therefore, potentially there is minimal impact in OTG SetConfig API response time, specially when the license server is in the same pod/host. Although, in case of license server sitting in separate host in LAN OTG Setconfig API response time might get impacted due to latency. +On the timing aspect the entire aforementioned license check-out/check-in mechanism works concurrently with control plane and data plane configuration in ports during OTG SetConfig operation. Therefore, potentially there is minimal impact in OTG SetConfig API response time, specially when the license server is in the same pod/host. Although, in case of license server sitting in separate host in LAN OTG Setconfig API response time might get impacted due to latency. -**Q2. What is the granularity of license?** +### Q2. What is the granularity of license? -It depends on various aspects port type, port speed, protocol type and number of protocol sessions. For details on granular license features and associated consummation mechanism, please refer to [Section1](#section1license-consumption-mechanism-and-feature-licenses). +It depends on various aspects port type, port speed, protocol type and number of protocol sessions. For details on granular license features and associated consummation mechanism, please refer to [Section 1](#section-1-license-consumption-mechanism-and-feature-licenses). -**Q3. What happens if the controller does not find the active license server on boot – how long does it try?** +### Q3. What happens if the controller does not find the active license server on boot – how long does it try? Keng-controller is allowed to be given a bootstrap input of maximum 4 license servers. Keng-controller is trying to connect to those license servers during bootstrap. If neither of them is connected, then keng-controller capability is set as community capability.
A background routine is initiated to make recurrent attempts to connect those configured license servers in 30 second intervals.
It is possible that after recurrent attempts none of the license servers is reachable. Till that point any configuration beyond community capability will return error.
Meanwhile, in any of the recurrent attempt keng-controller is able to communicate or establish connection with any of the license servers, then for the configuration beyond the community standard, keng-controller will try to check-out a license from the license server with which the connection is established.
-**Q4. What message it generates if server not found?** +### Q4. What message it generates if server not found? If any of the configured license servers are not reachable, the keng-controller capability is kept to community capability. For the configuration beyond community capability will throw error as mentioned in Q1. -**Q5. What exactly is the error code and message when the license is needed but cannot be checked out?** +### Q5. What exactly is the error code and message when the license is needed but cannot be checked out? + +There are two possible scenarios when license cannot checkout. + +* Scenario 1: Any of the license servers doesn't have adequate license features required for the test configuration. It will throw error with `error code 13` and the following error message: + + `Current configuration requires following additional license feature(s): {map[KENG-DPLU:50 KENG-SEAT:1]} which is not available in configured license server(s): {[ip1, ip2]} Available license feature(s) in license-server(s) are {ip1 : map[KENG-DPLU:0 KENG-SEAT:0] ,ip2 : map[KENG-DPLU:0 KENG-SEAT:0] }.` -There are two possible scenarios when license cannot checkout. +* Scenario 2: Configured license server is not available/reachable. It will throw error with `error code 13` and the following error message: -Secnario1: Any of the license servers doesn't have adequate license features required for the test configuration
-It will throw error with error code 13 and the sample error message "Current configuration requires following additional license feature(s): {map[KENG-DPLU:50 KENG-SEAT:1]} which is not available in configured license server(s): {[ip1, ip2]} Available license feature(s) in license-server(s) are {ip1 : map[KENG-DPLU:0 KENG-SEAT:0] ,ip2 : map[KENG-DPLU:0 KENG-SEAT:0] }." .
-Scenario2: Configured license server is not available/reachable
-It will throw error with error code 13 and the sample error message "issue consuming license from server 10.39.35.77: rpc error: code = DeadlineExceeded desc = context deadline exceeded". + `issue consuming license from server 10.39.35.77: rpc error: code = DeadlineExceeded desc = context deadline exceeded` -**Q6. Details about the “Retry” behavior for liveness check– how many retries, after how many retries things are considered dead, how long does it take?** +### Q6. Details about the “Retry” behavior for liveness check– how many retries, after how many retries things are considered dead, how long does it take? -The controller keeps on probing liveliness check on the list of license servers supplied on boot-up time in background routine every 30 seconds during controller lifetime. +The controller keeps on probing liveliness check on the list of license servers supplied on boot-up time in background routine every 30 seconds during controller lifetime. -**Q7. What happens if there is more than one license servers alive at the time of the last check, but when the controller actually checks the license from the first one, it is no longer available?** +### Q7. What happens if there is more than one license servers alive at the time of the last check, but when the controller actually checks the license from the first one, it is no longer available? The keng-controller will attempt to check out license from next available license server in the configured list. -**Q8. Clarify once a license is granted then how long it is valid?** +### Q8. Clarify once a license is granted then how long it is valid? -Once a specific count of license feature or collection of same [details of license feature are given in the above [Section1](#section1license-consumption-mechanism-and-feature-licenses)] is granted by the license server to an instance of the keng-controller, validity of it will be determined by subsequent incoming test configurations details on which is mentioned in Q1. +Once a specific count of license feature or collection of same details of license feature are given in the above [Section 1](#section-1-license-consumption-mechanism-and-feature-licenses) is granted by the license server to an instance of the keng-controller, validity of it will be determined by subsequent incoming test configurations details on which is mentioned in Q1. From 36cb823f6350e0726f1926f7c5926a1836a3a5ff Mon Sep 17 00:00:00 2001 From: Sahana Ghosh Date: Thu, 7 Dec 2023 17:44:30 +0530 Subject: [PATCH 06/15] Adding documentation index. --- conformance | 2 +- documentation-index.md | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 documentation-index.md diff --git a/conformance b/conformance index d544528b..f0f20145 160000 --- a/conformance +++ b/conformance @@ -1 +1 @@ -Subproject commit d544528bddcc1e808ba9262e05c1cea2f8b53675 +Subproject commit f0f20145616a039b9b7838c88d2bc70bc6a3630c diff --git a/documentation-index.md b/documentation-index.md new file mode 100644 index 00000000..305fd298 --- /dev/null +++ b/documentation-index.md @@ -0,0 +1,21 @@ +# Documentation index + +1. [Data Sheet](https://www.keysight.com/in/en/assets/3122-1455/data-sheets/Elastic-Network-Generator.pdf) +2. [Overview](docs/index.md) +3. Quick Start + * [Introduction](docs/quick-start/introduction.md) + * [First script](docs/developer/hello-snappi.md) +4. User Guide + * [Introduction](docs/user-guide-introduction.md) + * [Prerequisites](docs/prerequisites.md) + * Deployment + * [Ixia-c](docs/deployments.md) + * [UHD400T](docs/tests-uhd400.md) + * [IxOS Hardware](docs/tests-chassis-app.md) + * [Integrations](docs/integrated-environments.md) + * [Limitations](docs/limitations.md) + * [Troubleshooting](docs/troubleshooting.md) + * [Licensing](docs/licensing.md) +5. Reference Guide + * [Capabilities](docs/reference/capabilities.md) + * [Resource requirements](docs/reference/resource-requirements.md) From 2417645d00da0c34de518c197b034dd08e99afc9 Mon Sep 17 00:00:00 2001 From: Sahana Ghosh Date: Thu, 7 Dec 2023 20:07:21 +0530 Subject: [PATCH 07/15] Reformatting reference/license. --- docs/reference/licensing.md | 152 ++++++++++++++++++++---------------- 1 file changed, 86 insertions(+), 66 deletions(-) diff --git a/docs/reference/licensing.md b/docs/reference/licensing.md index 11bf7e4d..7924c785 100644 --- a/docs/reference/licensing.md +++ b/docs/reference/licensing.md @@ -1,10 +1,10 @@ # Licensing -## Section 1: License consumption mechanism and feature licenses +## License consumption mechanism and feature licenses -Elastic Network Generator [licenses](../licensing.md) include the following features depending on the license edition. Details on how the features are consumed are given below. +Elastic Network Generator [licenses](../licensing.md) include the following features which depends on the license edition. Details on how the features are consumed are as follows: -### Table 1: KENG Feature Licenses +### KENG Feature Licenses | Feature Licenses | Developer | Team | System | |-------------------------------------|----------------------|-----------------|------------------------| @@ -15,9 +15,9 @@ Elastic Network Generator [licenses](../licensing.md) include the following feat | KENG-CPLU | 50 | 400 | 800 | | KENG-UNLIMITED-CP | N/A | N/A | 16 | -The exact list of feature licenses required by a specific test configuration is calculated based on the test port type, port speed, protocol, protocol sessions etc. Overall, the list of required licenses is referred to as Test Cost. +The exact list of feature licenses that are required by a specific test configuration, is calculated based on the test port type, port speed, protocol, protocol sessions, and etc. Overall, the list of required licenses is referred to as Test Cost. -### Table 2: Test Cost Calculation Matrix +### Test Cost Calculation Matrix | Port Type | Condition | Seat Cost | Control Plane (CP) Cost | Data Plane (DP) cost | |------------------|------------------- |-----------------------------------------------------------------------|------------------------- |--------------- | @@ -27,20 +27,19 @@ The exact list of feature licenses required by a specific test configuration is | UHD400T | `If CP Cost > 50`3 | `1x KENG-SEAT`
`1x KENG-SEAT-UHD`
`1x KENG-UNLIMITED-CP` | `50` | `0` | | IxOS Hardware | | `1x KENG-SEAT`
`1x KENG-SEAT-IXHW`​ | `0` | `0` | - 1 See reference table [Table 3](#table-3-control-plane-cost-reference-table) for `Protocol Cost`.
- 2 See reference table [Table 4](#table-4-data-plane-speed-cost-reference-table) for `Speed Cost`.
- 3 If `KENG-UNLIMITED-CP` is not available, an exact required number of `KENG-CPLU` will be consumed. - - * Seat is the number of running `keng-controller` instances with a configuration exceeding capabilities of the Community Edition. - * Data Plane License Unit (`KENG-DPLU`) is associated with traffic port capacity. - * The number of required units is determined as a sum of configured port speeds (1, 10, 25, 40, 50, 100GE). Maximum port performance might be less than configured port speed. - * Control Plane License unit (`KENG-CPLU`) is associated with control plane protocol scale. The number of required CP units is determined as a sum of configured protocol sessions. - -``` +```bash Test Cost = Seat Cost + CP Cost * KENG-CPLU + DP Cost * KENG-DPLU​ ``` -### Table 3: Control Plane Cost Reference Table + See [Control Plane Cost Reference Table](#control-plane-cost-reference-table) for the `Protocol Cost` and [Data Plane Speed Cost Reference Table](#data-plane-speed-cost-reference-table) for the `Speed Cost`.
+ > If `KENG-UNLIMITED-CP` is not available, an exact number of `KENG-CPLU` will be consumed. + + **Seat** is the number of the running `keng-controller` instances, with a configuration that exceeds the capabilities of the Community Edition.
+ **The Data Plane License Unit** (`KENG-DPLU`) is associated with the traffic port capacity.
+ The number of required units is determined as a sum of the configured port speeds (1, 10, 25, 40, 50, 100GE). The maximum port performance might be less than the configured port speed.
+ **The Control Plane License unit** (`KENG-CPLU`) is associated with the control plane protocol scale. The number of required CP units is determined as a sum of the configured protocol sessions.
+ +### Control Plane Cost Reference Table | Protocol | Session Definition | Protocol Cost/Session | Comment | |------------------------------|-----------------------------------------|-----------------------------------|------------------------| @@ -52,21 +51,19 @@ Test Cost = Seat Cost + CP Cost * KENG-CPLU + DP Cost * KENG-DPLU​ | ISIS | devices:
- isis:
- interfaces:
- eth_name: ​ | 1 | Session = ISIS interface | | RSVP | devices:
- rsvp:
- ipv4_interfaces:
- neighbor_ip: ​ | 1 | Session = RSVP neighbor​ | +```bash +CP Cost/Port = SUM (Protocol Cost) on each port +``` - CP Cost/Port = SUM (Protocol Cost) on each port - - -### Table 4: Data Plane Speed Cost Reference Table +### Data Plane Speed Cost Reference Table | DP Port Speed | 1G | 10G | 25G | 40G | 50G | 100G | |-----------------------|------------|-----------|-----------|------------|------------|-----------| | DP Cost | 1 | 10 | 25 | 40 | 50 | 100 | +### Sample Use cases -### Sample Use case - - -**Test configuration** +#### Test configuration Number of `keng-controller` instances: `1` @@ -77,34 +74,40 @@ Number of `keng-controller` instances: `1` #### Scenario 1: Unlimited CP capability `KENG-UNLIMITED-CP` is unavailable -**Consumed features** +* Consumed features - KENG-SEAT: 1 = (1 keng-controller instance and ixia-c SW port) +```bash +KENG-SEAT: 1 = (1 keng-controller instance and ixia-c SW port) KENG-DPLU: 400 = (100G speed * 4 ports) KENG-CPLU: 400 = (100 BGP sessions/port * 4 ports) - +``` #### Scenario 2: Unlimited CP capability `KENG-UNLIMITED-CP` is available -**Consumed features** - - KENG-SEAT: 1 = (1 keng-controller instance and ixia-c SW port) +* Consumed features + +```bash +KENG-SEAT: 1 = (1 keng-controller instance and ixia-c SW port) KENG-DPLU: 400 = (100G speed * 4 ports) - KENG-CPLU: 50 = (CP cost = 400 (100 BGP sessions/port * 4 ports) which is greater than 50 and unlimited cp capability is present) + KENG-CPLU: 50 = (CP cost = 400 (100 BGP sessions/port * 4 ports) which is greater than 50 and unlimited cp capability is present) KENG-UNLIMITED-CP: 1 +``` -## Section 2: Liveliness check and timeout on license server communication +## Liveliness check and timeout on license server communication -### Q1. What is the impact of frequent license checking on test execution time for individual test and batch? +### FAQ -License check-out/check-in mechanism in keng-controller works as follows: +
+What is the impact of the frequent license checking on the test execution time for individual test and batch? +
+The license check-out/check-in mechanism in the keng-controller works as follows: -1. Calculate Test Cost, let's say it is N -2. Based on calculation done in step (1), check-out the licenses at the time of OTG SetConfig API call. +1. Calculate the Test Cost. For example, Test Cost = N. +2. Based on the calculation performed in step (1), check-out the licenses at the time of the OTG SetConfig API call. 3. Execute the test if license check-out is successful. -4. For the next configuration, calculate Test Cost, let's say it is M +4. For the next configuration, calculate Test Cost, For example, Test Cost = M. -``` +```bash if M == N: - keng-controller will not have any communication with license servers else if M > N: @@ -114,43 +117,60 @@ else if M < N: - keng-controller will check-in surplus of the licenses ``` -On the timing aspect the entire aforementioned license check-out/check-in mechanism works concurrently with control plane and data plane configuration in ports during OTG SetConfig operation. Therefore, potentially there is minimal impact in OTG SetConfig API response time, specially when the license server is in the same pod/host. Although, in case of license server sitting in separate host in LAN OTG Setconfig API response time might get impacted due to latency. +On the timing aspect, the entire license check-out/check-in mechanism works concurrently with the control plane and the data plane configurations in the ports during the OTG SetConfig operation. Therefore, potentially there is a minimal impact in the OTG SetConfig API response time, specially when the license server is in the same pod/host. Although, in case of the license server that is present in a separate host in the LAN OTG Setconfig API response time, might get impacted due to latency. +
-### Q2. What is the granularity of license? +
+What is the granularity of a license? +
+It depends on various aspects port type, port speed, protocol type, and the number of protocol sessions. For details on the granular license features and associated consummation mechanism, see [License consumption mechanism and feature licenses](#license-consumption-mechanism-and-feature-licenses). +
-It depends on various aspects port type, port speed, protocol type and number of protocol sessions. For details on granular license features and associated consummation mechanism, please refer to [Section 1](#section-1-license-consumption-mechanism-and-feature-licenses). - -### Q3. What happens if the controller does not find the active license server on boot – how long does it try? - -Keng-controller is allowed to be given a bootstrap input of maximum 4 license servers. Keng-controller is trying to connect to those license servers during bootstrap. If neither of them is connected, then keng-controller capability is set as community capability.
+
+What happens if the controller does not find the active license server on boot – how long shall it try? +
+The Keng-controller is allowed to be given a bootstrap input of 4 license servers in the maximum. The Keng-controller tries to connect to those license servers during the bootstrap. If neither of them is connected, the controller capability is set as the community capability.
A background routine is initiated to make recurrent attempts to connect those configured license servers in 30 second intervals.
-It is possible that after recurrent attempts none of the license servers is reachable. Till that point any configuration beyond community capability will return error.
-Meanwhile, in any of the recurrent attempt keng-controller is able to communicate or establish connection with any of the license servers, then for the configuration beyond the community standard, keng-controller will try to check-out a license from the license server with which the connection is established.
- -### Q4. What message it generates if server not found? +It is possible that none of the license servers is reachable, after recurrent attempts. Till that point any configuration beyond community capability will return errors.
+If the keng-controller is able to communicate or establish connection with any of the license servers, in any of the recurrent attempts, then for the configuration which is beyond the community standard, keng-controller will try to check-out a license from the license server with which the connection is established.
+
-If any of the configured license servers are not reachable, the keng-controller capability is kept to community capability. For the configuration beyond community capability will throw error as mentioned in Q1. +
+What are the messages it generates, if the server is not found? +
+If any of the configured license servers are not reachable, the keng-controller capability is kept to community capability. For the configuration beyond community capability will throw error as mentioned above. +
-### Q5. What exactly is the error code and message when the license is needed but cannot be checked out? +
+What are the error codes and messages it generates, when the license is needed but it cannot be checked out? +
+There are two possible scenarios when the license cannot checkout. -There are two possible scenarios when license cannot checkout. - -* Scenario 1: Any of the license servers doesn't have adequate license features required for the test configuration. It will throw error with `error code 13` and the following error message: +* Scenario 1: Any of the license servers does not have the adequate license features that are required for the test configuration. It will throw an error with the `error code 13` and the following error message: `Current configuration requires following additional license feature(s): {map[KENG-DPLU:50 KENG-SEAT:1]} which is not available in configured license server(s): {[ip1, ip2]} Available license feature(s) in license-server(s) are {ip1 : map[KENG-DPLU:0 KENG-SEAT:0] ,ip2 : map[KENG-DPLU:0 KENG-SEAT:0] }.` -* Scenario 2: Configured license server is not available/reachable. It will throw error with `error code 13` and the following error message: +* Scenario 2: Configured license server is not available/reachable. It will throw an error with the `error code 13` and the following error message: `issue consuming license from server 10.39.35.77: rpc error: code = DeadlineExceeded desc = context deadline exceeded` -### Q6. Details about the “Retry” behavior for liveness check– how many retries, after how many retries things are considered dead, how long does it take? - -The controller keeps on probing liveliness check on the list of license servers supplied on boot-up time in background routine every 30 seconds during controller lifetime. - -### Q7. What happens if there is more than one license servers alive at the time of the last check, but when the controller actually checks the license from the first one, it is no longer available? - -The keng-controller will attempt to check out license from next available license server in the configured list. - -### Q8. Clarify once a license is granted then how long it is valid? - -Once a specific count of license feature or collection of same details of license feature are given in the above [Section 1](#section-1-license-consumption-mechanism-and-feature-licenses) is granted by the license server to an instance of the keng-controller, validity of it will be determined by subsequent incoming test configurations details on which is mentioned in Q1. +
+ +
+After how many retries things are considered dead and how long does it take? +
+Details about the "Retry" behavior for liveness check:
+The controller keeps on probing liveliness check on the list of license servers that are supplied on boot-up time in the background routine in every 30 seconds during the controller lifetime. +
+ +
+What happens if there are more than one license servers alive at the time of the last check, but it is no longer available, when the controller actually checks the license from the first one? +
+The keng-controller will attempt to check out licenses from the next available license server in the configured list. +
+ +
+How long does a license remain valid, after it is granted? +
+Once a specific count of license features or a collection of the same details of a license feature are given in the [License consumption mechanism and feature licenses](#license-consumption-mechanism-and-feature-licenses), it is granted by the license server to an instance of the keng-controller. The validity will be determined by the subsequent incoming test configurations details as mentioned above. +
From 2369590194533a2ce7163586de1efa11126c8601 Mon Sep 17 00:00:00 2001 From: Alex Bortok <431965+bortok@users.noreply.github.com> Date: Fri, 8 Dec 2023 14:35:55 -0800 Subject: [PATCH 08/15] liceinsing.md formatting --- docs/reference/licensing.md | 90 ++++++++++++++++++++----------------- 1 file changed, 50 insertions(+), 40 deletions(-) diff --git a/docs/reference/licensing.md b/docs/reference/licensing.md index 7924c785..a9eb5487 100644 --- a/docs/reference/licensing.md +++ b/docs/reference/licensing.md @@ -6,60 +6,70 @@ Elastic Network Generator [licenses](../licensing.md) include the following feat ### KENG Feature Licenses - | Feature Licenses | Developer | Team | System | - |-------------------------------------|----------------------|-----------------|------------------------| - | KENG-SEAT | 1 | 8 | 16 | - | KENG-SEAT​-UHD | N/A | 8 | 16 | - | KENG-SEAT​-IXHW | N/A | N/A | 16 | - | KENG-DPLU | 50 | 400 | 800 | - | KENG-CPLU | 50 | 400 | 800 | - | KENG-UNLIMITED-CP | N/A | N/A | 16 | +| Feature Licenses | Developer | Team | System | +|-------------------------------------|----------------------|-----------------|------------------------| +| KENG-SEAT | 1 | 8 | 16 | +| KENG-SEAT​-UHD | N/A | 8 | 16 | +| KENG-SEAT​-IXHW | N/A | N/A | 16 | +| KENG-DPLU | 50 | 400 | 800 | +| KENG-CPLU | 50 | 400 | 800 | +| KENG-UNLIMITED-CP | N/A | N/A | 16 | The exact list of feature licenses that are required by a specific test configuration, is calculated based on the test port type, port speed, protocol, protocol sessions, and etc. Overall, the list of required licenses is referred to as Test Cost. -### Test Cost Calculation Matrix +### Test Cost Calculation - | Port Type | Condition | Seat Cost | Control Plane (CP) Cost | Data Plane (DP) cost | - |------------------|------------------- |-----------------------------------------------------------------------|------------------------- |--------------- | - | Ixia-c SW | `If CP Cost <= 50` | `1x KENG-SEAT` | `SUM (Protocol Cost)`1​ | `SUM (Speed Cost)`2| - | Ixia-c SW | `If CP Cost > 50`3 | `1x KENG-SEAT`
`1x KENG-UNLIMITED-CP` | `50` | `SUM (Speed Cost)`2| - | UHD400T | `If CP Cost <= 50`​ | `1x KENG-SEAT`​
`1x KENG-SEAT-UHD`​ | `SUM (Protocol Cost)​`1 | `0` | - | UHD400T | `If CP Cost > 50`3 | `1x KENG-SEAT`
`1x KENG-SEAT-UHD`
`1x KENG-UNLIMITED-CP` | `50` | `0` | - | IxOS Hardware | | `1x KENG-SEAT`
`1x KENG-SEAT-IXHW`​ | `0` | `0` | - -```bash +``` Test Cost = Seat Cost + CP Cost * KENG-CPLU + DP Cost * KENG-DPLU​ ``` - See [Control Plane Cost Reference Table](#control-plane-cost-reference-table) for the `Protocol Cost` and [Data Plane Speed Cost Reference Table](#data-plane-speed-cost-reference-table) for the `Speed Cost`.
- > If `KENG-UNLIMITED-CP` is not available, an exact number of `KENG-CPLU` will be consumed. - - **Seat** is the number of the running `keng-controller` instances, with a configuration that exceeds the capabilities of the Community Edition.
- **The Data Plane License Unit** (`KENG-DPLU`) is associated with the traffic port capacity.
- The number of required units is determined as a sum of the configured port speeds (1, 10, 25, 40, 50, 100GE). The maximum port performance might be less than the configured port speed.
- **The Control Plane License unit** (`KENG-CPLU`) is associated with the control plane protocol scale. The number of required CP units is determined as a sum of the configured protocol sessions.
+| Port Type | Condition | Seat Cost | CP Cost | DP cost | +|------------------|------------------- |-----------------------------------------------------------------------|------------------------- |--------------- | +| Ixia-c SW | `If CP Cost <= 50` | `1x KENG-SEAT` | `SUM (Protocol Cost)`1​ | `SUM (Speed Cost)`2| +| Ixia-c SW | `If CP Cost > 50`3 | `1x KENG-SEAT`
`1x KENG-UNLIMITED-CP` | `50` | `SUM (Speed Cost)`2| +| UHD400T | `If CP Cost <= 50`​ | `1x KENG-SEAT`​
`1x KENG-SEAT-UHD`​ | `SUM (Protocol Cost)​`1 | `0` | +| UHD400T | `If CP Cost > 50`3 | `1x KENG-SEAT`
`1x KENG-SEAT-UHD`
`1x KENG-UNLIMITED-CP` | `50` | `0` | +| IxOS Hardware | | `1x KENG-SEAT`
`1x KENG-SEAT-IXHW`​ | `0` | `0` | + +- **Seat** is the number of the running `keng-controller` instances, with a configuration that exceeds the capabilities of the Community Edition. +- **The Data Plane License Unit** (`KENG-DPLU`) is associated with the traffic port capacity. +The number of required units is determined as a sum of the configured port speeds (1, 10, 25, 40, 50, 100GE). The maximum port performance might be less than the configured port speed. +- **The Control Plane License unit** (`KENG-CPLU`) is associated with the control plane protocol scale. The number of required CP units is determined as a sum of the configured protocol sessions. +- If `KENG-UNLIMITED-CP` is not available, an exact number of `KENG-CPLU` will be consumed. +- See [Control Plane Cost Reference Table](#control-plane-cost-reference-table) for the `Protocol Cost` and [Data Plane Speed Cost Reference Table](#data-plane-speed-cost-reference-table) for the `Speed Cost`. ### Control Plane Cost Reference Table - | Protocol | Session Definition | Protocol Cost/Session | Comment | - |------------------------------|-----------------------------------------|-----------------------------------|------------------------| - | IP Interface (ARP, ND) | devices:
- ethernets:
- ipv4_addresses:
- ipv6_addresses: | 0 | | - | IP Loopbacks​ | devices:
- ipv4_loopbacks:
- ipv6_loopbacks: | 0 | | - | LLDP​ | lldp:
- connection:
- port_name: | 1 | Session = Test Port with LLDP enabled | - | LACP | lacp:
- ports:
- port_name:
lacp: | 1 | Session = LAG group, no matter group size​ | - | BGP | devices:
- bgp:
- ipv4_addresses:
- ipv6_addresses:
- peers:​ | 1 | Session = BGP peer | - | ISIS | devices:
- isis:
- interfaces:
- eth_name: ​ | 1 | Session = ISIS interface | - | RSVP | devices:
- rsvp:
- ipv4_interfaces:
- neighbor_ip: ​ | 1 | Session = RSVP neighbor​ | +Applies only to the Ixia-c software and UHD400T ports. -```bash -CP Cost/Port = SUM (Protocol Cost) on each port ``` +CP Cost = For each Port: SUM (Protocol Cost) +``` + +| Protocol | Session Definition | Protocol Cost/Session | Comment | +|------------------------------|----------------------------------------- |-----------------------|----------------------- | +| IP Interface (ARP, ND) | devices:
- ethernets:
- ipv4_addresses:
- ipv6_addresses: | 0 | | +| IP Loopbacks​ | devices:
- ipv4_loopbacks:
- ipv6_loopbacks: | 0 | | +| LLDP​ | lldp:
- connection:
- port_name: | 1 | Session = Test Port with LLDP enabled | +| LACP | lacp:
- ports:
- port_name:
lacp: | 1 | Session = LAG group, no matter group size​ | +| BGP | devices:
- bgp:
- ipv4_addresses:
- ipv6_addresses:
- peers:​ | 1 | Session = BGP peer | +| ISIS | devices:
- isis:
- interfaces:
- eth_name: ​ | 1 | Session = ISIS interface | +| RSVP | devices:
- rsvp:
- ipv4_interfaces:
- neighbor_ip: ​ | 1 | Session = RSVP neighbor​ | ### Data Plane Speed Cost Reference Table - | DP Port Speed | 1G | 10G | 25G | 40G | 50G | 100G | - |-----------------------|------------|-----------|-----------|------------|------------|-----------| - | DP Cost | 1 | 10 | 25 | 40 | 50 | 100 | +Applies only to the Ixia-c software ports. + +| Test Port Speed | DP Cost | +|------------------------|-----------------| +| 1GE | 1 | +| 10GE | 10 | +| 25GE | 25 | +| 40GE | 40 | +| 50GE | 50 | +| 100GE | 100 | +| 200GE | 200 | +| 400GE | 400 | ### Sample Use cases @@ -85,7 +95,7 @@ KENG-SEAT: 1 = (1 keng-controller instance and ixia-c SW port) #### Scenario 2: Unlimited CP capability `KENG-UNLIMITED-CP` is available * Consumed features - + ```bash KENG-SEAT: 1 = (1 keng-controller instance and ixia-c SW port) KENG-DPLU: 400 = (100G speed * 4 ports) From 9e97d9eb40cab30d1ad4e3afef82e506ceb162b2 Mon Sep 17 00:00:00 2001 From: Alex Bortok <431965+bortok@users.noreply.github.com> Date: Fri, 8 Dec 2023 14:44:34 -0800 Subject: [PATCH 09/15] Update licensing.md --- docs/reference/licensing.md | 48 +++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 26 deletions(-) diff --git a/docs/reference/licensing.md b/docs/reference/licensing.md index a9eb5487..6798a334 100644 --- a/docs/reference/licensing.md +++ b/docs/reference/licensing.md @@ -4,7 +4,7 @@ Elastic Network Generator [licenses](../licensing.md) include the following features which depends on the license edition. Details on how the features are consumed are as follows: -### KENG Feature Licenses +### Feature Licenses | Feature Licenses | Developer | Team | System | |-------------------------------------|----------------------|-----------------|------------------------| @@ -25,9 +25,9 @@ Test Cost = Seat Cost + CP Cost * KENG-CPLU + DP Cost * KENG-DPLU​ | Port Type | Condition | Seat Cost | CP Cost | DP cost | |------------------|------------------- |-----------------------------------------------------------------------|------------------------- |--------------- | -| Ixia-c SW | `If CP Cost <= 50` | `1x KENG-SEAT` | `SUM (Protocol Cost)`1​ | `SUM (Speed Cost)`2| -| Ixia-c SW | `If CP Cost > 50`3 | `1x KENG-SEAT`
`1x KENG-UNLIMITED-CP` | `50` | `SUM (Speed Cost)`2| -| UHD400T | `If CP Cost <= 50`​ | `1x KENG-SEAT`​
`1x KENG-SEAT-UHD`​ | `SUM (Protocol Cost)​`1 | `0` | +| Ixia-c SW | `If CP Cost <= 50` | `1x KENG-SEAT` | `SUM (Protocol Cost)` ​ | `SUM (Speed Cost)` | +| Ixia-c SW | `If CP Cost > 50`3 | `1x KENG-SEAT`
`1x KENG-UNLIMITED-CP` | `50` | `SUM (Speed Cost)` | +| UHD400T | `If CP Cost <= 50`​ | `1x KENG-SEAT`​
`1x KENG-SEAT-UHD`​ | `SUM (Protocol Cost)​` | `0` | | UHD400T | `If CP Cost > 50`3 | `1x KENG-SEAT`
`1x KENG-SEAT-UHD`
`1x KENG-UNLIMITED-CP` | `50` | `0` | | IxOS Hardware | | `1x KENG-SEAT`
`1x KENG-SEAT-IXHW`​ | `0` | `0` | @@ -36,9 +36,9 @@ Test Cost = Seat Cost + CP Cost * KENG-CPLU + DP Cost * KENG-DPLU​ The number of required units is determined as a sum of the configured port speeds (1, 10, 25, 40, 50, 100GE). The maximum port performance might be less than the configured port speed. - **The Control Plane License unit** (`KENG-CPLU`) is associated with the control plane protocol scale. The number of required CP units is determined as a sum of the configured protocol sessions. - If `KENG-UNLIMITED-CP` is not available, an exact number of `KENG-CPLU` will be consumed. -- See [Control Plane Cost Reference Table](#control-plane-cost-reference-table) for the `Protocol Cost` and [Data Plane Speed Cost Reference Table](#data-plane-speed-cost-reference-table) for the `Speed Cost`. +- See [Control Plane Cost Reference Table](#control-plane-cost) for the `Protocol Cost` and [Data Plane Speed Cost Reference Table](#data-plane-cost) for the `Speed Cost`. -### Control Plane Cost Reference Table +### Control Plane Cost Applies only to the Ixia-c software and UHD400T ports. @@ -56,7 +56,7 @@ CP Cost = For each Port: SUM (Protocol Cost) | ISIS | devices:
- isis:
- interfaces:
- eth_name: ​ | 1 | Session = ISIS interface | | RSVP | devices:
- rsvp:
- ipv4_interfaces:
- neighbor_ip: ​ | 1 | Session = RSVP neighbor​ | -### Data Plane Speed Cost Reference Table +### Data Plane Cost Applies only to the Ixia-c software ports. @@ -71,36 +71,32 @@ Applies only to the Ixia-c software ports. | 200GE | 200 | | 400GE | 400 | -### Sample Use cases +## Sample license consumption scenarios -#### Test configuration +### Test configuration Number of `keng-controller` instances: `1` * Number of ports: `4` -* Port Speed: `100G` -* Protocol: `100 BGP sessions/port` * Port type: `Ixia-c software` +* Port Speed: `100GE` +* Protocol scale: `100 BGP sessions/port` -#### Scenario 1: Unlimited CP capability `KENG-UNLIMITED-CP` is unavailable +### Scenario 1: Limited control plane licenses -* Consumed features - -```bash -KENG-SEAT: 1 = (1 keng-controller instance and ixia-c SW port) - KENG-DPLU: 400 = (100G speed * 4 ports) - KENG-CPLU: 400 = (100 BGP sessions/port * 4 ports) +``` +KENG-SEAT: 1 = (1 keng-controller instance and ixia-c SW port) +KENG-DPLU: 400 = (100G speed * 4 ports) +KENG-CPLU: 400 = (100 BGP sessions/port * 4 ports) ``` -#### Scenario 2: Unlimited CP capability `KENG-UNLIMITED-CP` is available - -* Consumed features +### Scenario 2: Unlimited control plane licenses -```bash -KENG-SEAT: 1 = (1 keng-controller instance and ixia-c SW port) - KENG-DPLU: 400 = (100G speed * 4 ports) - KENG-CPLU: 50 = (CP cost = 400 (100 BGP sessions/port * 4 ports) which is greater than 50 and unlimited cp capability is present) - KENG-UNLIMITED-CP: 1 +``` +KENG-SEAT: 1 = (1 keng-controller instance and ixia-c SW port) +KENG-DPLU: 400 = (100G speed * 4 ports) +KENG-CPLU: 50 = (CP cost = 400 (100 BGP sessions/port * 4 ports) which is greater than 50 and unlimited cp capability is present) +KENG-UNLIMITED-CP: 1 ``` ## Liveliness check and timeout on license server communication From 38cb4050210a48e0c0c8d06d81ed580e44baf806 Mon Sep 17 00:00:00 2001 From: Alex Bortok <431965+bortok@users.noreply.github.com> Date: Fri, 8 Dec 2023 14:47:53 -0800 Subject: [PATCH 10/15] Update licensing.md --- docs/reference/licensing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/licensing.md b/docs/reference/licensing.md index 6798a334..8df4b224 100644 --- a/docs/reference/licensing.md +++ b/docs/reference/licensing.md @@ -36,7 +36,7 @@ Test Cost = Seat Cost + CP Cost * KENG-CPLU + DP Cost * KENG-DPLU​ The number of required units is determined as a sum of the configured port speeds (1, 10, 25, 40, 50, 100GE). The maximum port performance might be less than the configured port speed. - **The Control Plane License unit** (`KENG-CPLU`) is associated with the control plane protocol scale. The number of required CP units is determined as a sum of the configured protocol sessions. - If `KENG-UNLIMITED-CP` is not available, an exact number of `KENG-CPLU` will be consumed. -- See [Control Plane Cost Reference Table](#control-plane-cost) for the `Protocol Cost` and [Data Plane Speed Cost Reference Table](#data-plane-cost) for the `Speed Cost`. +- See [Control Plane Cost](#control-plane-cost) for the `Protocol Cost` and [Data Plane Cost](#data-plane-cost) for the `Speed Cost`. ### Control Plane Cost From 373879cbe4e37b9b01982cbe3ba28ad96e8d8d9a Mon Sep 17 00:00:00 2001 From: Alex Bortok <431965+bortok@users.noreply.github.com> Date: Fri, 8 Dec 2023 15:31:59 -0800 Subject: [PATCH 11/15] finished licensing.md q&a section --- docs/reference/licensing.md | 83 ++++++++++++++++++++----------------- 1 file changed, 46 insertions(+), 37 deletions(-) diff --git a/docs/reference/licensing.md b/docs/reference/licensing.md index 8df4b224..553da3a0 100644 --- a/docs/reference/licensing.md +++ b/docs/reference/licensing.md @@ -99,21 +99,19 @@ KENG-CPLU: 50 = (CP cost = 400 (100 BGP sessions/port * 4 ports) which i KENG-UNLIMITED-CP: 1 ``` -## Liveliness check and timeout on license server communication - -### FAQ +## Q&A
-What is the impact of the frequent license checking on the test execution time for individual test and batch? +When the licenses are checked-out / checked-in?
-The license check-out/check-in mechanism in the keng-controller works as follows: +The license check-out/check-in mechanism in the keng-controller works as follows:
-1. Calculate the Test Cost. For example, Test Cost = N. -2. Based on the calculation performed in step (1), check-out the licenses at the time of the OTG SetConfig API call. -3. Execute the test if license check-out is successful. -4. For the next configuration, calculate Test Cost, For example, Test Cost = M. +1. Calculate the Test Cost. For example, Test Cost = N.
+2. Based on the calculation performed in step (1), check-out the licenses at the time of the OTG SetConfig API call.
+3. Execute the test if license check-out is successful.
+4. For the next configuration, calculate Test Cost, For example, Test Cost = M.
-```bash +``` if M == N: - keng-controller will not have any communication with license servers else if M > N: @@ -122,61 +120,72 @@ else if M > N: else if M < N: - keng-controller will check-in surplus of the licenses ``` - -On the timing aspect, the entire license check-out/check-in mechanism works concurrently with the control plane and the data plane configurations in the ports during the OTG SetConfig operation. Therefore, potentially there is a minimal impact in the OTG SetConfig API response time, specially when the license server is in the same pod/host. Although, in case of the license server that is present in a separate host in the LAN OTG Setconfig API response time, might get impacted due to latency.
-What is the granularity of a license? +Does licensing have impact on API response time?
-It depends on various aspects port type, port speed, protocol type, and the number of protocol sessions. For details on the granular license features and associated consummation mechanism, see [License consumption mechanism and feature licenses](#license-consumption-mechanism-and-feature-licenses). +On the timing aspect, the entire license check-out/check-in mechanism works concurrently with the control plane and the data plane configurations in the ports during the OTG SetConfig operation. Therefore, potentially there is a minimal impact in the OTG SetConfig API response time. If the license server is on a remote site from the controller, the OTG SetConfig API response time might get impacted due to the network latency.
-What happens if the controller does not find the active license server on boot – how long shall it try? +What happens if license servers are not available?
-The Keng-controller is allowed to be given a bootstrap input of 4 license servers in the maximum. The Keng-controller tries to connect to those license servers during the bootstrap. If neither of them is connected, the controller capability is set as the community capability.
-A background routine is initiated to make recurrent attempts to connect those configured license servers in 30 second intervals.
-It is possible that none of the license servers is reachable, after recurrent attempts. Till that point any configuration beyond community capability will return errors.
-If the keng-controller is able to communicate or establish connection with any of the license servers, in any of the recurrent attempts, then for the configuration which is beyond the community standard, keng-controller will try to check-out a license from the license server with which the connection is established.
+The keng-controller can work with up to 4 license servers. The controller tries to connect to all the license servers during the startup. If none of them is available, the controller capabilities are reduced to the Community Edition. After that, a background routine is initiated to make recurrent attempts to connect the configured license servers in 30 second intervals.
+ +Once the controller is able to establish a connection with any of the license servers, for any new configuration beyond capabilities of the Community Edition, the keng-controller will try to check-out a license from the license server with which the connection is established.
-What are the messages it generates, if the server is not found? +What is the message generated when the license server is not available? +
+When a configured license server is not reachable, the log message with error code 13 is generated by the keng-controller:

-If any of the configured license servers are not reachable, the keng-controller capability is kept to community capability. For the configuration beyond community capability will throw error as mentioned above. +"level":"warn","ctx":"impl/licensing","Not all license server could be reached":"code: 13 ...error details... "
-What are the error codes and messages it generates, when the license is needed but it cannot be checked out? +What is the error generated when a license cannot be checked out? +
+There are two possible scenarios when the license cannot checkout.
+
+Scenario 1: Any of the license servers does not have the adequate license features that are required for the test configuration. It will throw an error with the error code 13 and the following error message:
+
+Current configuration requires following additional license feature(s): {...details...} which is not available in configured license server(s): {...details...} Available license feature(s) in license-server(s) are {...details...}. +
+
+Scenario 2: Previously active license server is no longer available/reachable. It will throw an error with the error code 13 and the following error message:
+
+issue consuming license from server ...address...: rpc error: code = DeadlineExceeded desc = context deadline exceeded
-There are two possible scenarios when the license cannot checkout. - -* Scenario 1: Any of the license servers does not have the adequate license features that are required for the test configuration. It will throw an error with the `error code 13` and the following error message: - - `Current configuration requires following additional license feature(s): {map[KENG-DPLU:50 KENG-SEAT:1]} which is not available in configured license server(s): {[ip1, ip2]} Available license feature(s) in license-server(s) are {ip1 : map[KENG-DPLU:0 KENG-SEAT:0] ,ip2 : map[KENG-DPLU:0 KENG-SEAT:0] }.` - -* Scenario 2: Configured license server is not available/reachable. It will throw an error with the `error code 13` and the following error message: - - `issue consuming license from server 10.39.35.77: rpc error: code = DeadlineExceeded desc = context deadline exceeded` -
After how many retries things are considered dead and how long does it take?
-Details about the "Retry" behavior for liveness check:
-The controller keeps on probing liveliness check on the list of license servers that are supplied on boot-up time in the background routine in every 30 seconds during the controller lifetime. +The controller will keep probing the list of license servers that are supplied at the time in the background routine in every 30 seconds during the controller lifetime.
-What happens if there are more than one license servers alive at the time of the last check, but it is no longer available, when the controller actually checks the license from the first one? +What happens if the controller can't check-out the license for a specific server?
The keng-controller will attempt to check out licenses from the next available license server in the configured list.
-How long does a license remain valid, after it is granted? +How long does a license remain checked-out? +
+For the duration of the current test configuration, the license will remain checked-out. Once the new test configuration is applied that doesn't require the license, the license will be checked-in. +
+ +
+How to check-in all the licenses? +
+To check-in all the licenses, apply an empty configuration. Alternatively, gracefully stop the keng-controller container. +
+ +
+What happens of the controller can't check-in the license back?
-Once a specific count of license features or a collection of the same details of a license feature are given in the [License consumption mechanism and feature licenses](#license-consumption-mechanism-and-feature-licenses), it is granted by the license server to an instance of the keng-controller. The validity will be determined by the subsequent incoming test configurations details as mentioned above. +There is a keep-alive mechanism between the controller and the license server. If the controller crashes, is forcefully stopped, or lost the connection to the license server, the licenses will be automatically checked-in after 5 minutes of keep-alive inactivity.
From 307f52f1af0593a44c56d1c81a2f8ca92f71fe03 Mon Sep 17 00:00:00 2001 From: Alex Bortok <431965+bortok@users.noreply.github.com> Date: Fri, 8 Dec 2023 15:58:37 -0800 Subject: [PATCH 12/15] resources.md --- docs/resources.md | 18 ++++++++++++++++++ documentation-index.md | 21 --------------------- mkdocs.yml | 1 + 3 files changed, 19 insertions(+), 21 deletions(-) create mode 100644 docs/resources.md delete mode 100644 documentation-index.md diff --git a/docs/resources.md b/docs/resources.md new file mode 100644 index 00000000..51d949ea --- /dev/null +++ b/docs/resources.md @@ -0,0 +1,18 @@ +# Resources + +1. [Product page](https://www.keysight.com/us/en/products/network-test/protocol-load-test/keysight-elastic-network-generator.html) +2. [Data Sheet](https://www.keysight.com/in/en/assets/3122-1455/data-sheets/Elastic-Network-Generator.pdf) +3. [Documentation](https://ixia-c.dev) + * [Quick Start](https://ixia-c.dev/quick-start/introduction/) + * [User Guide](https://ixia-c.dev/user-guide-introduction/) + * [Developer Guide](https://ixia-c.dev/developer/snappi-constructs/) + * [Reference Guide](https://ixia-c.dev/reference/capabilities/) + * [Releases](https://ixia-c.dev/releases/) +4. [Open Traffic Generator](https://otg.dev) + * [Model Browser](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/master/artifacts/openapi.yaml&nocors) + * [Clients](https://otg.dev/clients/) + * [Examples](https://otg.dev/examples/otg-examples/) +5. [OpenConfig](https://openconfig.net/) + * [KNE IxiaTG Controller](https://github.com/openconfig/kne/blob/main/docs/create_topology.md#ixiatg-controller) + * [FeatureProfiles Test Suite](https://github.com/openconfig/featureprofiles) +6. [Containerlab Ixia-c-one](https://containerlab.dev/manual/kinds/keysight_ixia-c-one/) diff --git a/documentation-index.md b/documentation-index.md deleted file mode 100644 index 305fd298..00000000 --- a/documentation-index.md +++ /dev/null @@ -1,21 +0,0 @@ -# Documentation index - -1. [Data Sheet](https://www.keysight.com/in/en/assets/3122-1455/data-sheets/Elastic-Network-Generator.pdf) -2. [Overview](docs/index.md) -3. Quick Start - * [Introduction](docs/quick-start/introduction.md) - * [First script](docs/developer/hello-snappi.md) -4. User Guide - * [Introduction](docs/user-guide-introduction.md) - * [Prerequisites](docs/prerequisites.md) - * Deployment - * [Ixia-c](docs/deployments.md) - * [UHD400T](docs/tests-uhd400.md) - * [IxOS Hardware](docs/tests-chassis-app.md) - * [Integrations](docs/integrated-environments.md) - * [Limitations](docs/limitations.md) - * [Troubleshooting](docs/troubleshooting.md) - * [Licensing](docs/licensing.md) -5. Reference Guide - * [Capabilities](docs/reference/capabilities.md) - * [Resource requirements](docs/reference/resource-requirements.md) diff --git a/mkdocs.yml b/mkdocs.yml index f5c3f8f5..d39b52b8 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -54,6 +54,7 @@ nav: - Home: - Overview: index.md # Needs re-writing as a landing page # - FAQ: faq.md # Review if there are any valuable items left + - Resources: resources.md - EULA: eula.md # Check / update - Quick Start: - Introduction: quick-start/introduction.md # Now goes as Ixia-c Quick Start. Add a paragraph why From 6197b3df48b449e64423921e19c12451a88a60f4 Mon Sep 17 00:00:00 2001 From: Alex Bortok <431965+bortok@users.noreply.github.com> Date: Sun, 10 Dec 2023 11:28:33 -0800 Subject: [PATCH 13/15] sync licensing.md with otg-examples --- docs/licensing.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/licensing.md b/docs/licensing.md index bfa1d01a..c4d4b6ef 100644 --- a/docs/licensing.md +++ b/docs/licensing.md @@ -6,15 +6,15 @@ The following License Editions are available for Keysight Elastic Network Genera | Capability | Community | Developer | Team | System | |-------------------------------------|----------------------|----------------------|--------------------------------|-------------------------------------| - | Ixia-c Traffic Port Capacity | 4 x 1/10GE | 50GE | 400GE | 800GE | - | Test Concurrency | 1 Seat | 1 Seat | 8 Seats | 16 Seats | - | Protocol Scale | Restricted | Limited | Limited | Unlimited | + | Ixia-c Traffic Port Capacity | 4 x 1/10GE | 50GE | 400GE | 800GE | + | Test Concurrency | 1 Seat | 1 Seat | 8 Seats | 16 Seats | + | Protocol Scale | Restricted | Limited | Limited | Unlimited | | Requires a valid license | N | Y | Y | Y | | Includes Ixia-c Software Test Ports | Y | Y | Y | Y | | Works with UHD400T Hardware | N | N | Y | Y | | Works with IxOS Hardware | N | N | N | Y | - The **Ixia-c Traffic Port Capacity** is determined as a sum of the configured Ixia-c test port speeds with the possible values of: 100GE, 50GE, 40GE, 25GE, 10GE, and 1GE. The Maximum data plane performance of an Ixia-c port may be less than the configured port speed, depending on the capabilities of the underlying hardware and software drivers. + The **Ixia-c Traffic Port Capacity** is determined as a sum of the configured Ixia-c software test port speeds with the possible values of: 100GE, 50GE, 40GE, 25GE, 10GE, and 1GE. The Maximum data plane performance of an Ixia-c port may be less than the configured port speed, depending on the capabilities of the underlying hardware and software drivers. Doesn't apply to the UHD400T and IxOS hardware. The **Test seat concurrency** applies to a number of controller instances that are running with a configuration that exceeds the capabilities of the Community Edition. @@ -32,13 +32,15 @@ Keysight uses a license server to manage floating or network shared licenses for In order to use capabilities of Elastic Network Generator that require a valid license, you need to deploy a Keysight License Server. The License Server is a virtual machine and it is distributed as OVA and QCOW2 images (you only need one of them depending on your hypervisor). -* [QCOW2 image](https://storage.googleapis.com/kt-nas-images-cloud-ist/slum-4.2.0-208.2.qcow2), ~6GB +* [OVA image](https://storage.googleapis.com/kt-nas-images-cloud-ist/slum-4.2.0-208.ova), 5.8GB +* [QCOW2 image](https://storage.googleapis.com/kt-nas-images-cloud-ist/slum-4.2.0-208.2.qcow2), 6GB To make a decision where to deploy the License Server VM, take into the account the following requirements: +* For VMware ESXi, use the OVA image * For Linux-based QEMU or KVM, use the QCOW2 image * 2 vCPU cores -* 4GB of RAM +* 8GB RAM for ESXi, 4GB RAM for QEMU/KVM * 100GB storage * 1 vNIC for network connectivity. Note that DHCP is the preferred option, and this is also how the VM is configured to obtain its IP address. @@ -73,4 +75,4 @@ You can also use a command-line session, via console or SSH, to perform license ## Connecting Elastic Network Generator to the License Server -To connect the Elastic Network Generator controller instance to the License Server, use `--license-servers="server1 server2 server3 server4"` argument when launching the controller. An alternative way is to use an environment variable `LICENSE_SERVERS`. The argument accepts a space-separated list of hostnames or IP addresses of the License Servers, up to four. The controller will try to connect to the License Servers in the order they are specified in the list. If the first License Server is not available, or doesn't have enough available licenses to run the test, the controller will try to connect to the next one in the list. \ No newline at end of file +To connect the Elastic Network Generator controller instance to the License Server, use `--license-servers="server1 server2 server3 server4"` argument when launching the controller. An alternative way is to use an environment variable `LICENSE_SERVERS`. The argument accepts a space-separated list of hostnames or IP addresses of the License Servers, up to four. The controller will try to connect to the License Servers in the order they are specified in the list. If the first License Server is not available, or doesn't have enough available licenses to run the test, the controller will try to connect to the next one in the list. From 405c1790ab30d7a6c687b328984a7ccfdc73c053 Mon Sep 17 00:00:00 2001 From: Alex Bortok <431965+bortok@users.noreply.github.com> Date: Sun, 10 Dec 2023 11:35:41 -0800 Subject: [PATCH 14/15] improved readability --- docs/licensing.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/licensing.md b/docs/licensing.md index c4d4b6ef..c2104283 100644 --- a/docs/licensing.md +++ b/docs/licensing.md @@ -28,9 +28,9 @@ The following License Editions are available for Keysight Elastic Network Genera ## License Server -Keysight uses a license server to manage floating or network shared licenses for its software products. The license server enables licenses to float and not be tied to a specific Elastic Network Generator instance. The Elastic Network Generator controllers must be able to reach the License server. +In order to use capabilities of Elastic Network Generator that require a valid license, you need to deploy a Keysight License Server. Keysight uses the license server to manage floating or network shared licenses for its software products. The license server enables licenses to float and not be tied to a specific Elastic Network Generator instance. The Elastic Network Generator controllers must be able to reach the License server. -In order to use capabilities of Elastic Network Generator that require a valid license, you need to deploy a Keysight License Server. The License Server is a virtual machine and it is distributed as OVA and QCOW2 images (you only need one of them depending on your hypervisor). +The license server is a virtual machine and it is distributed as OVA and QCOW2 images (you only need one of them depending on your hypervisor). * [OVA image](https://storage.googleapis.com/kt-nas-images-cloud-ist/slum-4.2.0-208.ova), 5.8GB * [QCOW2 image](https://storage.googleapis.com/kt-nas-images-cloud-ist/slum-4.2.0-208.2.qcow2), 6GB From 468b89c00f37ecf8e4367b9816a274d6d4e29311 Mon Sep 17 00:00:00 2001 From: Alex Bortok <431965+bortok@users.noreply.github.com> Date: Sun, 10 Dec 2023 11:52:09 -0800 Subject: [PATCH 15/15] updated licensing.md --- docs/licensing.md | 34 ++++++++++++++++++++++-------- docs/res/license-server.drawio.svg | 12 +++++------ 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/docs/licensing.md b/docs/licensing.md index c2104283..3bdca8d2 100644 --- a/docs/licensing.md +++ b/docs/licensing.md @@ -30,6 +30,8 @@ The following License Editions are available for Keysight Elastic Network Genera In order to use capabilities of Elastic Network Generator that require a valid license, you need to deploy a Keysight License Server. Keysight uses the license server to manage floating or network shared licenses for its software products. The license server enables licenses to float and not be tied to a specific Elastic Network Generator instance. The Elastic Network Generator controllers must be able to reach the License server. +### Deployment + The license server is a virtual machine and it is distributed as OVA and QCOW2 images (you only need one of them depending on your hypervisor). * [OVA image](https://storage.googleapis.com/kt-nas-images-cloud-ist/slum-4.2.0-208.ova), 5.8GB @@ -47,32 +49,46 @@ To make a decision where to deploy the License Server VM, take into the account Network connectivity requirements for the License Server VM 1. Internet access from the VM over HTTPS is desirable for online license activation, but not strictly required. Offline activation method is available as well. -2. Access from a user over SSH (TCP/22) for license operations (activation, deactivation, reservation, sync) -3. Access from any `keng-controller` that needs a license during a test run over gRPC (TCP/7443) for license checkout and check-in +2. Access from a user over HTTPS (TCP/443) for license operations (activation, deactivation, reservation, sync). +3. Access from any `keng-controller` that needs a license during a test run over gRPC (TCP/7443) for license checkout and check-in. Here is an example of how different components communicate with the License Server: ![License Server Connectivity](./res/license-server.drawio.svg) -## Configuring a static IP address +### Configuration If your network doesn't provide DHCP, you can configure a static IP address for the License Server VM. Access the VM console and go through two-step login process: -* first prompt: `console` (no password) -* second promt: `admin`/`admin`. Run the following commands to configure a static IP address, where `x.x.x.x` is the IP address, `yy` is the prefix length, `z.z.z.z` is the default gateway, `a.a.a.a` and `b.b.b.b` are DNS servers: + +* First prompt: `console` (no password) +* Second promt: `admin`/`admin` +* Run the following commands to configure a static IP address, where `x.x.x.x` is the IP address, `yy` is the prefix length, `z.z.z.z` is the default gateway, `a.a.a.a` and `b.b.b.b` are DNS servers: ```Shell kcos networking ip set mgmt0 x.x.x.x/yy z.z.z.z kcos networking dns-servers add a.a.a.a b.b.b.b ``` -## License Activation +### Activation -You will now be able to activate licenses and use the License Server on your Elastic Network Generator setup. Go to `https://your-license-server-hostname` to access the application. Enter credentials: `admin`/`admin` to login. +Now you shall be able to activate licenses and use the License Server with your Elastic Network Generator environments. Go to `https://your-license-server-hostname` to access the application. Enter credentials: `admin`/`admin` to login. If you have an activation code, to perform an online activation, click "Activate Licenses", enter the code and click "Activate". For offline mode, choose "Offline Operations" instead. You can also use a command-line session, via console or SSH, to perform license operations. Run `kcos licensing --help` to see the list of available commands. -## Connecting Elastic Network Generator to the License Server +## Using Licenses + +To use the licenses with the Elastic Network Generator, provide the location of the license servers to the controller instances using + +``` +--license-servers="server1 server2 server3 server4" +``` + +argument when launching the controller. The argument accepts a space-separated list of hostnames or IP addresses of the License Servers, up to four. The controller will try to connect to the License Servers in the order they are specified in the list. If the first License Server is not available, or doesn't have enough available licenses to run the test, the controller will try to connect to the next one in the list. + +An alternative way is to use an environment variable `LICENSE_SERVERS`. + +## Additional Information -To connect the Elastic Network Generator controller instance to the License Server, use `--license-servers="server1 server2 server3 server4"` argument when launching the controller. An alternative way is to use an environment variable `LICENSE_SERVERS`. The argument accepts a space-separated list of hostnames or IP addresses of the License Servers, up to four. The controller will try to connect to the License Servers in the order they are specified in the list. If the first License Server is not available, or doesn't have enough available licenses to run the test, the controller will try to connect to the next one in the list. +Please refer to the [Reference Guide](reference/licensing.md) for more information on the license operations. \ No newline at end of file diff --git a/docs/res/license-server.drawio.svg b/docs/res/license-server.drawio.svg index eb35c7e6..8b5900b8 100644 --- a/docs/res/license-server.drawio.svg +++ b/docs/res/license-server.drawio.svg @@ -1,4 +1,4 @@ - + @@ -138,7 +138,7 @@ License Administrator
- any ssh client + Web Browser @@ -157,13 +157,13 @@
- ssh:22 + https:443
- ssh:22 + https:443 @@ -286,9 +286,7 @@ Elastic Network Generator Controller
- - keng-controller - + ixia-c-controller