diff --git a/conformance b/conformance index 032d2a26..3d7f4e41 160000 --- a/conformance +++ b/conformance @@ -1 +1 @@ -Subproject commit 032d2a262735e1eb20672b954b0ddc7b16e3cfae +Subproject commit 3d7f4e41661ea44c2fc5f11af26dec302dacb65f diff --git a/deployments/k8s/components/images/kustomization.yaml b/deployments/k8s/components/images/kustomization.yaml index d5838d16..605b348e 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-9 +# Release: https://github.com/open-traffic-generator/ixia-c/releases/tag/v1.14.0-1 images: - name: keng-controller newName: ghcr.io/open-traffic-generator/keng-controller - newTag: "1.13.0-9" + newTag: "1.14.0-1" - name: otg-gnmi-server newName: ghcr.io/open-traffic-generator/otg-gnmi-server - newTag: "1.14.14" + newTag: "1.14.15" - name: ixia-c-traffic-engine newName: ghcr.io/open-traffic-generator/ixia-c-traffic-engine - newTag: "1.8.0.90" + newTag: "1.8.0.99" diff --git a/deployments/k8s/network-emulation/go.mod b/deployments/k8s/network-emulation/go.mod index f0213781..474cd3de 100644 --- a/deployments/k8s/network-emulation/go.mod +++ b/deployments/k8s/network-emulation/go.mod @@ -2,18 +2,18 @@ module ipfwd go 1.23 -require github.com/open-traffic-generator/snappi/gosnappi v1.13.0 +require github.com/open-traffic-generator/snappi/gosnappi v1.14.0 require ( github.com/Masterminds/semver/v3 v3.3.0 // indirect github.com/ghodss/yaml v1.0.0 // indirect github.com/kr/text v0.2.0 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect - golang.org/x/net v0.26.0 // indirect - golang.org/x/sys v0.21.0 // indirect - golang.org/x/text v0.16.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 // indirect - google.golang.org/grpc v1.66.0 // indirect - google.golang.org/protobuf v1.34.2 // indirect + golang.org/x/net v0.28.0 // indirect + golang.org/x/sys v0.24.0 // indirect + golang.org/x/text v0.17.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect + google.golang.org/grpc v1.67.1 // indirect + google.golang.org/protobuf v1.35.1 // indirect gopkg.in/yaml.v2 v2.2.3 // indirect ) diff --git a/deployments/k8s/network-emulation/go.sum b/deployments/k8s/network-emulation/go.sum index ea705a9d..9ceb1d5c 100644 --- a/deployments/k8s/network-emulation/go.sum +++ b/deployments/k8s/network-emulation/go.sum @@ -13,26 +13,26 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/open-traffic-generator/snappi/gosnappi v1.13.0 h1:gO9kT+YnCrbyObJ/YbXwear3peR+vmt2gtWLbPvvYsQ= -github.com/open-traffic-generator/snappi/gosnappi v1.13.0/go.mod h1:souM/lNFnFbzxELHe3PrctPoX+8GYU18z19/q9fbG4o= +github.com/open-traffic-generator/snappi/gosnappi v1.14.0 h1:8AhZGGJ6/PIp8+O7xYYtwIGb2A+HByzU19W3cWdPbxY= +github.com/open-traffic-generator/snappi/gosnappi v1.14.0/go.mod h1:J1Cdre0Z140OBc2UTrSXUG69Hx81AA3qhnWLT3kAAX0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 h1:1GBuWVLM/KMVUv1t1En5Gs+gFZCNd360GGb4sSxtrhU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= -google.golang.org/grpc v1.66.0 h1:DibZuoBznOxbDQxRINckZcUvnCEvrW9pcWIE2yF9r1c= -google.golang.org/grpc v1.66.0/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= +golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= +golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= +google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/deployments/k8s/network-emulation/pods.yaml b/deployments/k8s/network-emulation/pods.yaml index 8ac18045..165184a6 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-9 + image: ghcr.io/open-traffic-generator/keng-controller:1.14.0-1 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.90 + image: ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.8.0.99 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.404 + image: ghcr.io/open-traffic-generator/ixia-c-protocol-engine:1.00.0.405 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.90 + image: ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.8.0.99 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.404 + image: ghcr.io/open-traffic-generator/ixia-c-protocol-engine:1.00.0.405 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 60b7e528..8001b799 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-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 + docker pull ghcr.io/open-traffic-generator/keng-controller:1.14.0-1 + docker pull ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.8.0.99 + docker pull ghcr.io/open-traffic-generator/ixia-c-protocol-engine:1.00.0.405 # 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-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 ghcr.io/open-traffic-generator/keng-controller:1.14.0-1 + kind load docker-image ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.8.0.99 + kind load docker-image ghcr.io/open-traffic-generator/ixia-c-protocol-engine:1.00.0.405 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 ddfefe5b..53bae2ba 100644 --- a/docs/deployments-kne.md +++ b/docs/deployments-kne.md @@ -58,32 +58,32 @@ Following are the recommended resources for a basic use-case. data: versions: | { - "release": "1.13.0-9", + "release": "1.14.0-1", "images": [ { "name": "controller", "path": "ghcr.io/open-traffic-generator/keng-controller", - "tag": "1.13.0-9" + "tag": "1.14.0-1" }, { "name": "gnmi-server", "path": "ghcr.io/open-traffic-generator/otg-gnmi-server", - "tag": "1.14.14" + "tag": "1.14.15" }, { "name": "traffic-engine", "path": "ghcr.io/open-traffic-generator/ixia-c-traffic-engine", - "tag": "1.8.0.90" + "tag": "1.8.0.99" }, { "name": "protocol-engine", "path": "ghcr.io/open-traffic-generator/ixia-c-protocol-engine", - "tag": "1.00.0.404" + "tag": "1.00.0.405" }, { "name": "ixhw-server", "path": "ghcr.io/open-traffic-generator/keng-layer23-hw-server", - "tag": "1.13.0-5" + "tag": "1.14.0-1" } ] } @@ -100,12 +100,12 @@ Following are the recommended resources for a basic use-case. data: versions: | { - "release": "1.13.0-9", + "release": "1.14.0-1", "images": [ { "name": "controller", "path": "ghcr.io/open-traffic-generator/keng-controller", - "tag": "1.13.0-9", + "tag": "1.14.0-1", "env": { "LICENSE_SERVERS": "ip/hostname of license server" } @@ -113,22 +113,22 @@ Following are the recommended resources for a basic use-case. { "name": "gnmi-server", "path": "ghcr.io/open-traffic-generator/otg-gnmi-server", - "tag": "1.14.14" + "tag": "1.14.15" }, { "name": "traffic-engine", "path": "ghcr.io/open-traffic-generator/ixia-c-traffic-engine", - "tag": "1.8.0.90" + "tag": "1.8.0.99" }, { "name": "protocol-engine", "path": "ghcr.io/open-traffic-generator/ixia-c-protocol-engine", - "tag": "1.00.0.404" + "tag": "1.00.0.405" }, { "name": "ixhw-server", "path": "ghcr.io/open-traffic-generator/keng-layer23-hw-server", - "tag": "1.13.0-5" + "tag": "1.14.0-1" } ] } @@ -148,7 +148,7 @@ Following are the recommended resources for a basic use-case. nodes: - name: otg vendor: KEYSIGHT - version: 1.13.0-9 + version: 1.14.0-1 services: 8443: name: https diff --git a/docs/developer/hello-snappi.md b/docs/developer/hello-snappi.md index 339c11ab..957ff9e8 100644 --- a/docs/developer/hello-snappi.md +++ b/docs/developer/hello-snappi.md @@ -24,7 +24,7 @@ After the set up is completed, install the python packages: * [dpkt](https://pypi.org/project/dpkt/) - for processing `.pcap` files. ```sh -python -m pip install --upgrade snappi==1.13.0 dpkt +python -m pip install --upgrade snappi==1.14.0 dpkt ``` ## Create the API Handle diff --git a/docs/news.md b/docs/news.md index e4348a5d..bc349903 100644 --- a/docs/news.md +++ b/docs/news.md @@ -1,5 +1,9 @@ # News +* **25th October, 2024**: Ixia-c version 1.14.0 (build 1) released. This conforms to **[v1.14.0](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v1.14.0/artifacts/openapi.yaml)** of the Open Traffic Generator Models specification. + + * This build includes new features and bug fixes. [Read more](releases.md) + * **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://raw.githubusercontent.com/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 d2ed2f50..9219d1c0 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -1,6 +1,100 @@ # Ixia-c Release Notes and Version Compatibility -## Release v1.13.0-9 (Latest) +## Release v1.14.0-1 (Latest) +> 25th October, 2024 + +#### Build Details + +| Component | Version | +|-------------------------------|---------------| +| Open Traffic Generator API | [1.14.0](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v1.14.0/artifacts/openapi.yaml) | +| snappi | [1.14.0](https://pypi.org/project/snappi/1.14.0) | +| gosnappi | [1.14.0](https://pkg.go.dev/github.com/open-traffic-generator/snappi/gosnappi@v1.14.0) | +| keng-controller | [1.14.0-1](https://github.com/orgs/open-traffic-generator/packages/container/package/keng-controller) | +| ixia-c-traffic-engine | [1.8.0.99](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.405](https://github.com/orgs/open-traffic-generator/packages/container/package/ixia-c-protocol-engine) | +| keng-layer23-hw-server | [1.14.0-1](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.15](https://github.com/orgs/open-traffic-generator/packages/container/package/otg-gnmi-server) | +| ixia-c-one | [1.14.0-1](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) + +* Ixia Chassis & Appliances(Novus, AresOne): Support added for OSPFv2. [details](https://github.com/open-traffic-generator/models/pull/384) + ```go + ospfRouter := device1.Ospfv2(). + SetName("OspfRtr"). + SetStoreLsa(true) + + intf := ospfRouter.Interfaces().Add(). + SetName("OspfIntf"). + SetIpv4Name("Ipv4Intf1") + + intf.Area().SetId(0) + intf.NetworkType().PointToPoint() + ospfRoutes := ospfRouter.V4Routes(). + Add(). + SetName("OspfRoutes") + ospfRoutes. + Addresses(). + Add(). + SetAddress("10.10.10.0"). + SetPrefix(24). + SetCount(100). + SetStep(2) + ``` + + - Learned LSAs can be fetched by the following + ```go + req := gosnappi.NewStatesRequest() + req.Ospfv2Lsas().SetRouterNames(routerNames) + res, err := client.GetStates(req) + ``` + + - OSPFv2 metrics can be fetched by the following + ```go + req := gosnappi.NewMetricsRequest() + reqIsis := req.Ospfv2() + reqIsis.SetRouterNames(routerNames) + ``` + + +* Ixia-C, Ixia Chassis & Appliances(Novus, AresOne): Support added to update `flows[i].size` and `flows[i].rate` on the fly. + ```go + + flow = get_config.Flows().Items()[0] + flow.Rate().SetPps(120) + flow.Size().SetFixed(512) + + flowUpdateCfg: = gosnappi.NewConfigUpdate().Flows() + flowUpdateCfg.Flows().Append(flow) + flowUpdateCfg.SetPropertyNames ([]gosnappi.FlowsUpdatePropertyNamesEnum{ + gosnappi.FlowsUpdatePropertyNames.SIZE, gosnappi.FlowsUpdatePropertyNames.RATE + }) + + configUpdate = gosnappi.NewConfigUpdate() + configUpdate.SetFlows(flowUpdateCfg) + res, err := client.Api().UpdateConfig(configUpdate) + ``` + +### Bug Fix(s) +* Ixia-C: Issue where flows containing `ipv4/v6` header without `src/dst` specified was returning error on `set_config` "Error flow [ flow-name ] has AUTO IPv4 src address and Tx device [ flow-end-point ] with no dhcpv4 interface" 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. If larger set of values are required for a field which are random, please use `random` instead of `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-9 > 4th October, 2024 #### Build Details diff --git a/docs/tests-chassis-app.md b/docs/tests-chassis-app.md index 55619dda..e07c6a50 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-9 + image: ghcr.io/open-traffic-generator/keng-controller:1.14.0-1 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-5 + image: ghcr.io/open-traffic-generator/keng-layer23-hw-server:1.14.0-1 restart: always command: - "dotnet" @@ -109,7 +109,7 @@ logging: max-file: "10" mode: "non-blocking" otg-gnmi-server: - image: ghcr.io/open-traffic-generator/otg-gnmi-server:1.14.14 + image: ghcr.io/open-traffic-generator/otg-gnmi-server:1.14.15 restart: always depends_on: keng-controller: diff --git a/notes.md b/notes.md index cf8a0247..081c75a6 100644 --- a/notes.md +++ b/notes.md @@ -2,62 +2,88 @@ | Component | Version | |-------------------------------|---------------| -| Open Traffic Generator API | [1.13.0](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/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) | +| Open Traffic Generator API | [1.14.0](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v1.14.0/artifacts/openapi.yaml) | +| snappi | [1.14.0](https://pypi.org/project/snappi/1.14.0) | +| gosnappi | [1.14.0](https://pkg.go.dev/github.com/open-traffic-generator/snappi/gosnappi@v1.14.0) | +| keng-controller | [1.14.0-1](https://github.com/orgs/open-traffic-generator/packages/container/package/keng-controller) | +| ixia-c-traffic-engine | [1.8.0.99](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) | +| ixia-c-protocol-engine | [1.00.0.405](https://github.com/orgs/open-traffic-generator/packages/container/package/ixia-c-protocol-engine) | +| keng-layer23-hw-server | [1.14.0-1](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/) | +| otg-gnmi-server | [1.14.15](https://github.com/orgs/open-traffic-generator/packages/container/package/otg-gnmi-server) | +| ixia-c-one | [1.14.0-1](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 Chassis & Appliances(Novus, AresOne): Support added for OSPFv2. [details](https://github.com/open-traffic-generator/models/pull/384) + ```go + ospfRouter := device1.Ospfv2(). + SetName("OspfRtr"). + SetStoreLsa(true) + + intf := ospfRouter.Interfaces().Add(). + SetName("OspfIntf"). + SetIpv4Name("Ipv4Intf1") + + intf.Area().SetId(0) + intf.NetworkType().PointToPoint() + ospfRoutes := ospfRouter.V4Routes(). + Add(). + SetName("OspfRoutes") + ospfRoutes. + Addresses(). + Add(). + SetAddress("10.10.10.0"). + SetPrefix(24). + SetCount(100). + SetStep(2) + ``` -* Ixia-C: Support added to send flows over DHCPv4 endpoints. + - Learned LSAs can be fetched by the following ```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() + req := gosnappi.NewStatesRequest() + req.Ospfv2Lsas().SetRouterNames(routerNames) + res, err := client.GetStates(req) ``` -* Ixia Chassis & Appliances(Novus, AresOne): Support added for LLDP. + - OSPFv2 metrics can be fetched by the following ```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) + req := gosnappi.NewMetricsRequest() + reqIsis := req.Ospfv2() + reqIsis.SetRouterNames(routerNames) ``` - -### 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. +* Ixia-C, Ixia Chassis & Appliances(Novus, AresOne): Support added to update `flows[i].size` and `flows[i].rate` on the fly. + ```go + + flow = get_config.Flows().Items()[0] + flow.Rate().SetPps(120) + flow.Size().SetFixed(512) + + flowUpdateCfg: = gosnappi.NewConfigUpdate().Flows() + flowUpdateCfg.Flows().Append(flow) + flowUpdateCfg.SetPropertyNames ([]gosnappi.FlowsUpdatePropertyNamesEnum{ + gosnappi.FlowsUpdatePropertyNames.SIZE, gosnappi.FlowsUpdatePropertyNames.RATE + }) + + configUpdate = gosnappi.NewConfigUpdate() + configUpdate.SetFlows(flowUpdateCfg) + res, err := client.Api().UpdateConfig(configUpdate) + ``` + +### Bug Fix(s) +* Ixia-C: Issue where flows containing `ipv4/v6` header without `src/dst` specified was returning error on `set_config` "Error flow [ flow-name ] has AUTO IPv4 src address and Tx device [ flow-end-point ] with no dhcpv4 interface" 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. +* UHD400: `values` for fields in flow packet headers can be created with maximum length of 1000 values. If larger set of values are required for a field which are random, please use `random` instead of `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. diff --git a/readme.md b/readme.md index 9075853a..e1d93480 100644 --- a/readme.md +++ b/readme.md @@ -9,9 +9,9 @@
-
-
-
+
+
+
@@ -83,7 +83,7 @@ cd conformance
#### 3. Optionally, run test using [curl](https://curl.se/)
We can also pass equivalent **JSON configuration** directly to **controller**, just by using **curl**.
-The description of each node in the configuration is detailed in self-updating [online documentation](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v1.13.0/artifacts/openapi.yaml).
+The description of each node in the configuration is detailed in self-updating [online documentation](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v1.14.0/artifacts/openapi.yaml).
```bash