Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

KENG artifacts renaming, plus introduction of the license server #61

Merged
merged 56 commits into from
Nov 2, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
12c1647
b2b keng 5308
bortok Oct 9, 2023
639df2f
cpdp-b2b artifacts only
bortok Oct 9, 2023
99de982
cpdp-frr otgen version
bortok Oct 9, 2023
bbf5fbf
ixhw-b2b w/o license
bortok Oct 10, 2023
73bdd8b
ixhw-b2b license servers
bortok Oct 10, 2023
0653322
license server
bortok Oct 11, 2023
de97a36
ixhw-b2b diagram
bortok Oct 11, 2023
1537a2c
ixhw-b2b readme and fp updates
bortok Oct 11, 2023
bf7f7c9
ixhw-b2b readme updates
bortok Oct 11, 2023
a4ac890
ixhw-b2b prereq
bortok Oct 11, 2023
4f123da
more ixhw-b2b readme updates
bortok Oct 11, 2023
e93cbee
208.2 license server qcow + static ip
bortok Oct 14, 2023
be9ee93
clarify ixia-c licensed capacity
bortok Oct 14, 2023
16a963b
licensing cli
bortok Oct 14, 2023
15b6fdc
updated KENG.md with new controller name
bortok Oct 17, 2023
95fdcb9
kne/bgp-ceos 0.0.1-5308
bortok Oct 19, 2023
db274a4
kne bgp-ceos diagram updates
bortok Oct 19, 2023
e6c0093
OVA image for the license server
bortok Oct 19, 2023
193a33e
use kind-bridge from kne repo
bortok Oct 19, 2023
950fbd8
rolledback last change plus kind-bridge updates
bortok Oct 19, 2023
269513f
no login for cpdp-frr
bortok Oct 20, 2023
ab0bd55
cpdp-frr curl fixed
bortok Oct 20, 2023
30db1d5
cpdp-frr readme updates for compose/curl
bortok Oct 20, 2023
f03c6b6
clab/ixia-c-b2b ixia-c-one:0.1.0-3
bortok Oct 20, 2023
f33b54f
clab/ixia-c-b2b use rx_names
bortok Oct 20, 2023
73269d9
kne/bgp-ceos with v0.1
bortok Oct 21, 2023
742f9db
kne/bgp-ceos ixiatg ver update in topo
bortok Oct 21, 2023
fc14cf3
kne/bgp-ceos instal go from go.dev
bortok Oct 21, 2023
aa9135e
kne/bgp-ceos manifests updated with v0.1.0-3
bortok Oct 22, 2023
a4c6bd1
otgen 0.6.2, no CI login, clab 0.46.2
bortok Oct 24, 2023
5920f27
b2b-lag and cpdp-frr use ixia-c v0.1.0-3
bortok Oct 24, 2023
e9e83d9
cpdp-frr, cpdp-b2b and ixhw-b2b to rel 0.1.0-3
bortok Oct 24, 2023
10c2264
ixia-c-te-frr rel 0.1.0-3
bortok Oct 24, 2023
cca6f78
fix ixia-c-te-frr diagram
bortok Oct 24, 2023
1cfcb9a
b2b-3pair with v0.1.0-3
bortok Oct 25, 2023
8f1e10c
rtbh with v0.1.0-3
bortok Oct 25, 2023
892d802
cpdp-b2b bgp with snappi first working draft
bortok Oct 30, 2023
4df1f8e
progress annotation in otg_bgp_b2b.py
bortok Oct 30, 2023
10d5f79
improved annotations
bortok Oct 30, 2023
c8f88de
updated hybrid/fp-b2b to 0.0.1-4555
bortok Oct 30, 2023
825854c
CI login for hybrid/fp-b2b
bortok Oct 30, 2023
b93f1d6
hybrid/fp-b2b fix fp pull
bortok Oct 30, 2023
c259eda
fp-b2b CI clear-cache
bortok Oct 31, 2023
b2aaea4
fp-b2b CI fix
bortok Oct 31, 2023
dfc4cda
fp-b2b use fp as submodule
bortok Oct 31, 2023
0ed88ef
fp-b2b cache-dependency-path
bortok Oct 31, 2023
4050db5
fp-b2b create-go-cache
bortok Oct 31, 2023
efb3a33
rtbh setup go action for caching
bortok Oct 31, 2023
44d7f02
readme updates to reflect KENG CE changes
bortok Nov 1, 2023
f83abd0
b2b diagram
bortok Nov 2, 2023
23ae5e6
b2b-3pair diagram
bortok Nov 2, 2023
20f17b2
cpdp-b2b diagram
bortok Nov 2, 2023
072a3bb
cpdp-frr diagram cleanup
bortok Nov 2, 2023
f112daa
ixia-c-te-frr diagram cleanup
bortok Nov 2, 2023
9bb905d
kne/bgp-ceos diagram cleanup
bortok Nov 2, 2023
437b7a2
snappi 0.13.0 plus cleanup
bortok Nov 2, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 9 additions & 25 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: CI

on:
push:
branches: [ "**" ]
branches: [ "main" ]
paths:
- 'docker-compose/b2b/**'
- '!docker-compose/b2b/**.md'
Expand Down Expand Up @@ -162,12 +162,6 @@ jobs:
- uses: actions/checkout@v3
with:
submodules: 'true'
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ secrets.ENV_GITHUB_USER }}
password: ${{ secrets.ENV_GITHUB_PAT }}
- name: Run all
run: make all
docker-compose-cpdp-b2b:
Expand All @@ -182,12 +176,6 @@ jobs:
- uses: actions/checkout@v3
with:
submodules: 'true'
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ secrets.ENV_GITHUB_USER }}
password: ${{ secrets.ENV_GITHUB_PAT }}
- name: Run all
run: make all
docker-compose-cpdp-frr:
Expand All @@ -202,12 +190,6 @@ jobs:
- uses: actions/checkout@v3
with:
submodules: 'true'
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ secrets.ENV_GITHUB_USER }}
password: ${{ secrets.ENV_GITHUB_PAT }}
- name: Run all
run: make all
clab-cpdp-frr:
Expand All @@ -222,12 +204,6 @@ jobs:
- uses: actions/checkout@v3
with:
submodules: 'true'
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ secrets.ENV_GITHUB_USER }}
password: ${{ secrets.ENV_GITHUB_PAT }}
- name: Run all-clab
run: make all-clab
clab-ixia-c-b2b:
Expand Down Expand Up @@ -284,6 +260,12 @@ jobs:
- uses: actions/checkout@v3
with:
submodules: 'true'
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: 1.19
cache-dependency-path: |
clab/rtbh/go.sum
- name: Run all
run: make all
hybrid-fp-b2b:
Expand All @@ -308,5 +290,7 @@ jobs:
uses: actions/setup-go@v4
with:
go-version: 1.19
cache-dependency-path: |
hybrid/fp-b2b/featureprofiles/go.sum
- name: Run all
run: make all
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -144,9 +144,10 @@ clab/srl-oper-group/opergroup-lab/
*.pcapng

# local featureprofile artifacts
hybrid/fp-b2b/featureprofiles/
hw/ixhw-b2b/otgb2b.binding*
hw/ixhw-b2b/fp-static/
kne/bgp-ceos/kne/
kne/bgp-ceos/featureprofiles/

# diagnostics
logs-*
6 changes: 6 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
[submodule "submodules/otgen"]
path = submodules/otgen
url = https://github.com/open-traffic-generator/otgen.git
[submodule "snappi/conformance"]
path = snappi/conformance
url = https://github.com/open-traffic-generator/conformance.git
[submodule "hybrid/fp-b2b/featureprofiles"]
path = hybrid/fp-b2b/featureprofiles
url = https://github.com/open-traffic-generator/featureprofiles.git
82 changes: 81 additions & 1 deletion KENG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,87 @@
# Keysight Elastic Network Generator Image Access
# Keysight Elastic Network Generator Licensing and Image Access

## License Editions

The following License Editions are available for Keysight Elastic Network Generator:

| 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 |
| 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 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.

The **Restricted** protocol scale supports the maximum of 4 BGP sessions per test.

The Capabilities of the **Limited** protocol scale depend on the protocol. For details, contact [Keysight Support](https://support.ixiacom.com/contact/support).

Keysight Elastic Network Generator can simultaneously consume multiple licenses to increase the capabilities of a test. For example, if the Ixia-c Traffic Port Capacity configured in one test is 100GE, two Developer licenses will be consumed if available.

If you require capabilities beyond those provided by the Community Edition, use [Keysight Elastic Network Generator](https://www.keysight.com/us/en/products/network-test/protocol-load-test/keysight-elastic-network-generator.html) product page to request an evaluation or a quote.


## 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. 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

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
* 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.

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

Here is an example of how different components communicate with the License Server:

![License Server Connectivity](./images/license-server.drawio.svg)

## Configuring a static IP address

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:

```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

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.

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

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.

## Access to private images on Github Container Registry

> Note: With introduction of licensing support, all the new versions of the Elastic Network Generator images are now openly published on [Open Traffic Generator Container Registry](https://github.com/orgs/open-traffic-generator/packages). The following instructions are only applicable to the older versions of the images that are still available via private access.

In order to use this method, you need a Github account. The account should be given access to private [KENG](https://www.keysight.com/us/en/products/network-test/protocol-load-test/keysight-elastic-network-generator.html) images by Keysight team. Use "Request Demo" link on [KENG](https://www.keysight.com/us/en/products/network-test/protocol-load-test/keysight-elastic-network-generator.html) page for that.

Create a new personal access token (PAT) via [https://github.com/settings/tokens/new](https://github.com/settings/tokens/new?scopes=read:packages):
Expand Down
Loading