Skip to content

Commit

Permalink
Merge pull request #179 from open-traffic-generator/dev-21st-dec
Browse files Browse the repository at this point in the history
Release v0.1.0-158
  • Loading branch information
arkajyoti-cloud authored Dec 21, 2023
2 parents 6205f78 + 0e5860c commit 934732b
Show file tree
Hide file tree
Showing 13 changed files with 183 additions and 68 deletions.
2 changes: 1 addition & 1 deletion conformance
Submodule conformance updated 40 files
+43 −10 .github/workflows/cicd.yml
+15 −15 deployments/ixia-c-config.yaml
+6 −6 deployments/k8s/manifests/ixia-c-b2b-eth0.yaml
+62 −49 do.sh
+92 −0 examples/quickstart_config.json
+9 −0 examples/quickstart_control.json
+6 −0 examples/quickstart_metrics.json
+13 −19 examples/quickstart_test.go
+21 −27 examples/test_quickstart.py
+3 −3 feature/b2b/bgp/ebgp_route_prefix_test.go
+1 −1 feature/b2b/bgp/ibgp_route_prefix_test.go
+1 −1 feature/b2b/interfaces/ip_neighbors_test.go
+1 −1 feature/b2b/isis/isis_lsp_p2p_l12_test.go
+1 −1 feature/b2b/lag/lag_lacp_partner_test.go
+1 −1 feature/b2b/lldp/lldp_neighbors_test.go
+1 −1 feature/b2b/packet/tcp/tcp_port_incr_decr_test.go
+1 −1 feature/b2b/packet/tcp/tcp_port_value_test.go
+1 −1 feature/b2b/packet/tcp/tcp_port_values_test.go
+1 −1 feature/b2b/packet/udp/ipv6_udp_port_values_test.go
+1 −1 feature/b2b/packet/udp/udp_port_incr_decr_test.go
+1 −1 feature/b2b/packet/udp/udp_port_value_eth0_test.go
+1 −1 feature/b2b/packet/udp/udp_port_value_test.go
+1 −1 feature/b2b/packet/udp/udp_port_values_test.go
+1 −1 feature/b2b/packet/vxlan/vxlan_inner_ipv4_test.go
+1 −1 feature/b2b/packet/vxlan/vxlan_inner_ipv6_test.go
+1 −1 feature/b2blag/3p3p/udp_static_lag_test.go
+1 −1 feature/pdp/interfaces/ip_neighbors_test.go
+1 −1 feature/pdpoc/interfaces/ip_neighbors_oc_test.go
+8 −8 go.mod
+325 −13 go.sum
+17 −17 helpers/otg/api.go
+2 −1 helpers/otg/capture.go
+6 −6 helpers/otg/metrics.go
+5 −5 helpers/otg/states.go
+1 −1 performance/b2b/ebgp_route_prefix_perf_test.go
+1 −1 performance/b2b/udp_mesh_flows_perf_test.go
+1 −1 performance/b2b/udp_tput_perf_test.go
+4 −4 performance/client/config_serdes_perf_test.go
+1 −1 requirements.txt
+10 −10 versions.yaml
8 changes: 4 additions & 4 deletions deployments/k8s/components/images/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
apiVersion: kustomize.config.k8s.io/v1alpha1
kind: Component

# Release: https://github.com/open-traffic-generator/ixia-c/releases/tag/v0.1.0-84
# Release: https://github.com/open-traffic-generator/ixia-c/releases/tag/v0.1.0-158
images:
- name: keng-controller
newName: ghcr.io/open-traffic-generator/keng-controller
newTag: "0.1.0-84"
newTag: "0.1.0-158"
- name: otg-gnmi-server
newName: ghcr.io/open-traffic-generator/otg-gnmi-server
newTag: "1.13.2"
newTag: "1.13.4"
- name: ixia-c-traffic-engine
newName: ghcr.io/open-traffic-generator/ixia-c-traffic-engine
newTag: "1.6.0.100"
newTag: "1.6.0.109"
12 changes: 6 additions & 6 deletions deployments/k8s/network-emulation/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@ module ipfwd

go 1.20

require github.com/open-traffic-generator/snappi/gosnappi v0.13.2
require github.com/open-traffic-generator/snappi/gosnappi v0.13.4

require (
github.com/Masterminds/semver/v3 v3.2.1 // indirect
github.com/ghodss/yaml v1.0.0 // indirect
github.com/golang/protobuf v1.5.3 // indirect
golang.org/x/net v0.14.0 // indirect
golang.org/x/sys v0.11.0 // indirect
golang.org/x/text v0.12.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect
google.golang.org/grpc v1.59.0 // indirect
golang.org/x/net v0.16.0 // indirect
golang.org/x/sys v0.13.0 // indirect
golang.org/x/text v0.13.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97 // indirect
google.golang.org/grpc v1.60.1 // indirect
google.golang.org/protobuf v1.31.0 // indirect
gopkg.in/yaml.v2 v2.2.3 // indirect
)
83 changes: 66 additions & 17 deletions deployments/k8s/network-emulation/go.sum

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions deployments/k8s/network-emulation/ipfwd.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ func main() {
}

log.Println("Starting flow transmission ...")
cs := api.NewControlState()
cs := gosnappi.NewControlState()
cs.Traffic().FlowTransmit().SetState(gosnappi.StateTrafficFlowTransmitState.START)
if wrn, err := api.SetControlState(cs); err != nil {
log.Fatal(err)
Expand All @@ -75,7 +75,7 @@ func main() {
}

func otgConfig(api gosnappi.GosnappiApi, tc map[string]interface{}) gosnappi.Config {
c := api.NewConfig()
c := gosnappi.NewConfig()

ptx := c.Ports().Add().SetName("ptx").SetLocation(tc["txPortLocation"].(string))
prx := c.Ports().Add().SetName("prx").SetLocation(tc["rxPortLocation"].(string))
Expand Down Expand Up @@ -146,7 +146,7 @@ func ipNeighborsOk(api gosnappi.GosnappiApi, tc map[string]interface{}) bool {
count := 0

log.Println("Getting IPv4 neighbors ...")
req := api.NewStatesRequest()
req := gosnappi.NewStatesRequest()
// query to fetch states for all configured IPv4 interfaces
req.Ipv4Neighbors()
states, err := api.GetStates(req)
Expand All @@ -172,7 +172,7 @@ func flowMetricsOk(api gosnappi.GosnappiApi, tc map[string]interface{}) bool {
pktCount := uint64(tc["pktCount"].(uint32))

log.Println("Getting flow metrics ...")
req := api.NewMetricsRequest()
req := gosnappi.NewMetricsRequest()
// query to fetch metrics for all configured flows
req.Flow()
metrics, err := api.GetMetrics(req)
Expand Down
10 changes: 5 additions & 5 deletions deployments/k8s/network-emulation/pods.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ spec:
- args:
- --accept-eula
- --debug
image: ghcr.io/open-traffic-generator/keng-controller:0.1.0-84
image: ghcr.io/open-traffic-generator/keng-controller:0.1.0-158
imagePullPolicy: IfNotPresent
name: keng-controller
volumeMounts:
Expand Down Expand Up @@ -63,15 +63,15 @@ spec:
value: "5555"
- name: ARG_CORE_LIST
value: 1 1 1
image: ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.6.0.100
image: ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.6.0.109
imagePullPolicy: IfNotPresent
name: ixia-c-port1-traffic-engine
securityContext:
privileged: true
- env:
- name: INTF_LIST
value: eth1
image: ghcr.io/open-traffic-generator/ixia-c-protocol-engine:1.00.0.340
image: ghcr.io/open-traffic-generator/ixia-c-protocol-engine:1.00.0.348
imagePullPolicy: IfNotPresent
name: ixia-c-port1-protocol-engine
securityContext:
Expand Down Expand Up @@ -99,15 +99,15 @@ spec:
value: "5555"
- name: ARG_CORE_LIST
value: 1 1 1
image: ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.6.0.100
image: ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.6.0.109
imagePullPolicy: IfNotPresent
name: ixia-c-port2-traffic-engine
securityContext:
privileged: true
- env:
- name: INTF_LIST
value: eth2
image: ghcr.io/open-traffic-generator/ixia-c-protocol-engine:1.00.0.340
image: ghcr.io/open-traffic-generator/ixia-c-protocol-engine:1.00.0.348
imagePullPolicy: IfNotPresent
name: ixia-c-port2-protocol-engine
securityContext:
Expand Down
12 changes: 6 additions & 6 deletions deployments/k8s/network-emulation/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:0.1.0-84
docker pull ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.6.0.100
docker pull ghcr.io/open-traffic-generator/ixia-c-protocol-engine:1.00.0.340
docker pull ghcr.io/open-traffic-generator/keng-controller:0.1.0-158
docker pull ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.6.0.109
docker pull ghcr.io/open-traffic-generator/ixia-c-protocol-engine:1.00.0.348
# download DUT image
docker pull ubuntu:22.04
Expand All @@ -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:0.1.0-84
kind load docker-image ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.6.0.100
kind load docker-image ghcr.io/open-traffic-generator/ixia-c-protocol-engine:1.00.0.340
kind load docker-image ghcr.io/open-traffic-generator/keng-controller:0.1.0-158
kind load docker-image ghcr.io/open-traffic-generator/ixia-c-traffic-engine:1.6.0.109
kind load docker-image ghcr.io/open-traffic-generator/ixia-c-protocol-engine:1.00.0.348
kind load docker-image ubuntu:22.04
kind load docker-image networkop/meshnet:latest
kind load docker-image networkop/init-wait:latest
Expand Down
26 changes: 13 additions & 13 deletions docs/deployments-kne.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,32 +58,32 @@ Following are the recommended resources for a basic use-case.
data:
versions: |
{
"release": "0.1.0-84",
"release": "0.1.0-158",
"images": [
{
"name": "controller",
"path": "ghcr.io/open-traffic-generator/keng-controller",
"tag": "0.1.0-84"
"tag": "0.1.0-158"
},
{
"name": "gnmi-server",
"path": "ghcr.io/open-traffic-generator/otg-gnmi-server",
"tag": "1.13.2"
"tag": "1.13.4"
},
{
"name": "traffic-engine",
"path": "ghcr.io/open-traffic-generator/ixia-c-traffic-engine",
"tag": "1.6.0.100"
"tag": "1.6.0.109"
},
{
"name": "protocol-engine",
"path": "ghcr.io/open-traffic-generator/ixia-c-protocol-engine",
"tag": "1.00.0.340"
"tag": "1.00.0.348"
},
{
"name": "ixhw-server",
"path": "ghcr.io/open-traffic-generator/keng-layer23-hw-server",
"tag": "0.13.2-2"
"tag": "0.13.4-1"
}
]
}
Expand All @@ -100,35 +100,35 @@ Following are the recommended resources for a basic use-case.
data:
versions: |
{
"release": "0.1.0-84",
"release": "0.1.0-158",
"images": [
{
"name": "controller",
"path": "ghcr.io/open-traffic-generator/keng-controller",
"tag": "0.1.0-84",
"tag": "0.1.0-158",
"env": {
"LICENSE_SERVERS": "ip/hostname of license server"
}
},
{
"name": "gnmi-server",
"path": "ghcr.io/open-traffic-generator/otg-gnmi-server",
"tag": "1.13.2"
"tag": "1.13.4"
},
{
"name": "traffic-engine",
"path": "ghcr.io/open-traffic-generator/ixia-c-traffic-engine",
"tag": "1.6.0.100"
"tag": "1.6.0.109"
},
{
"name": "protocol-engine",
"path": "ghcr.io/open-traffic-generator/ixia-c-protocol-engine",
"tag": "1.00.0.340"
"tag": "1.00.0.348"
},
{
"name": "ixhw-server",
"path": "ghcr.io/open-traffic-generator/keng-layer23-hw-server",
"tag": "0.13.2-2"
"tag": "0.13.4-1"
}
]
}
Expand All @@ -148,7 +148,7 @@ Following are the recommended resources for a basic use-case.
nodes:
- name: otg
vendor: KEYSIGHT
version: 0.1.0-84
version: 0.1.0-158
services:
8443:
name: https
Expand Down
6 changes: 3 additions & 3 deletions docs/developer/snappi-install.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func TestQuickstart(t *testing.T) {
api.NewHttpTransport().SetLocation("https://localhost:8443")

// Create a new traffic configuration that will be set on OTG
config := api.NewConfig()
config := gosnappi.NewConfig()

// Add a test port to the configuration
ptx := config.Ports().Add().SetName("ptx").SetLocation("veth-a")
Expand Down Expand Up @@ -84,14 +84,14 @@ func TestQuickstart(t *testing.T) {
}

// Start transmitting the packets from configured flow
ts := api.NewTransmitState()
ts := gosnappi.NewTransmitState()
ts.SetState(gosnappi.TransmitStateState.START)
if _, err := api.SetTransmitState(ts); err != nil {
t.Fatal(err)
}

// Fetch metrics for configured flow
req := api.NewMetricsRequest()
req := gosnappi.NewMetricsRequest()
req.Flow().SetFlowNames([]string{flow.Name()})
// and keep polling until either expectation is met or deadline exceeds
deadline := time.Now().Add(10 * time.Second)
Expand Down
4 changes: 4 additions & 0 deletions docs/news.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# News

* **21st December, 2023**: Ixia-c version 0.1.0 (build 158) released. This conforms to **[v0.13.4](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v0.13.4/artifacts/openapi.yaml)** of the Open Traffic Generator Models specification.

* This build includes new features and bug fixes. [Read more](releases.md)

* **7th December, 2023**: Ixia-c version 0.1.0 (build 84) released. This conforms to **[v0.13.2](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v0.13.2/artifacts/openapi.yaml)** of the Open Traffic Generator Models specification.

* This build includes new features. [Read more](releases.md)
Expand Down
66 changes: 64 additions & 2 deletions docs/releases.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,68 @@
# Ixia-c Release Notes and Version Compatibility

## Release v0.1.0-84 (Latest)
## Release v0.1.0-158 (Latest)
> 21st December, 2023
#### About

This build includes new features and bug fixes.

#### Build Details

| Component | Version |
|-------------------------------|---------------|
| Open Traffic Generator API | [0.13.4](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v0.13.4/artifacts/openapi.yaml) |
| snappi | [0.13.4](https://pypi.org/project/snappi/0.13.4) |
| gosnappi | [0.13.4](https://pkg.go.dev/github.com/open-traffic-generator/snappi/[email protected]) |
| keng-controller | [0.1.0-158](https://github.com/orgs/open-traffic-generator/packages/container/package/keng-controller) |
| ixia-c-traffic-engine | [1.6.0.109](https://github.com/orgs/open-traffic-generator/packages/container/package/ixia-c-traffic-engine) |
| keng-app-usage-reporter | [0.0.1-37](https://github.com/orgs/open-traffic-generator/packages/container/package/keng-app-usage-reporter) |
| ixia-c-protocol-engine | [1.00.0.348](https://github.com/orgs/open-traffic-generator/packages/container/package/ixia-c-protocol-engine) |
| keng-layer23-hw-server | [0.13.4-1](https://github.com/orgs/open-traffic-generator/packages/container/package/keng-layer23-hw-server) |
| keng-operator | [0.3.14](https://github.com/orgs/open-traffic-generator/packages/container/package/keng-operator) |
| otg-gnmi-server | [1.13.4](https://github.com/orgs/open-traffic-generator/packages/container/package/otg-gnmi-server) |
| ixia-c-one | [0.1.0-158](https://github.com/orgs/open-traffic-generator/packages/container/package/ixia-c-one/) |
| UHD400 | [1.0.28](https://downloads.ixiacom.com/support/downloads_and_updates/public/UHD400/1.0/1.0.28/artifacts.tar) |

# Release Features(s)
* <b><i>Ixia-C, UHD400, Ixia Chassis & Appliances(Novus, AresOne)</i></b>: Support added for BGP/BGP+ peers to use `custom` ports instead of default `179` tcp port.
- Listen Port - TCP port number on which to accept BGP/BGP+ connections from the remote peer.
- Neighbor Port - Destination TCP port number to be used by the BGP/BGP+ peer when initiating a session to the remote peer.
```go
bgpPeer.Advanced().SetListenPort(55555)
bgpPeer.Advanced().SetNeighborPort(55555)
```
* <b><i>Ixia-C</i></b>: Support added to enable/disable BGP/BGP+ peers on the fly.
```go
s := gosnappi.NewControlState(). ​
SetChoice(gosnappi.ControlStateChoice.PROTOCOL)​
bgpPeers := s.Protocol().Bgp().Peers() ​
bgpPeers.SetPeerNames(peerNames).​
SetState(gosnappi.StateProtocolBgpPeersState.UP/DOWN)​
_ , err := client.Api().SetControlState(s)​
```
* Public API in `gosnappi` SDK has been cleaned up and refactored. [PR with the details](https://github.com/open-traffic-generator/snappi/pull/214)
- `GosnappiApi` interface is now renamed to `Api` interface.
- All public methods for creation of structs are now removed from `GosnappiApi` interface.
- There were helper methods defined on each struct which have been reorganized or hidden.
- Choice setter `SetChoice()` has been made private and is now implicitly set based on the `choice` property set by the user.
- Impact on backward compatibility:
- Updating of gosnappi to `0.13.4` or higher will need change of test programs/implementations utilizing `gosnappi` SDK.
- If gosnappi is not updated on the client current tests will continue to work with new `keng-controller:0.1.0-158`.

# Bug Fix(s)
* <b><i>Ixia Chassis & Appliances(Novus, AresOne)</i></b>: If a port was in link down state, the state was not being cleared on fresh `SetConfig` for `AresOne` ports and `Novus100G` mode, affecting future tests. This issue is fixed.



#### Known Issues
* <b><i>Ixia Chassis & Appliances(Novus, AresOne)</i></b>: 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.
* <b><i>Ixia-C</i></b>: 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.
* <b><i>Ixia-C</i></b>: Supported value for `flows[i].metrics.latency.mode` is `cut_through`.
* <b><i>Ixia-C</i></b>: The metric `loss` in flow metrics is currently not supported.
* <b><i>Ixia-C</i></b>: When flow transmit is started, transmission will be restarted on any existing flows already transmitting packets.

## Release v0.1.0-84
> 7th December, 2023
#### About
Expand Down Expand Up @@ -124,7 +186,7 @@ This build includes new features and bug fixes.
Link().
SetPortNames([]string{"port1"}).
SetState(gosnappi.StatePortLinkState.DOWN)
gosnappi.NewApi().setControlState(portStateAction)
gosnappi.setControlState(portStateAction)
```
* Support added for 0x8100(Vlan) and 0x6007(Google Discovery Protocol) ether types in data plane traffic in <b><i>UHD400</i></b>.

Expand Down
6 changes: 3 additions & 3 deletions docs/tests-chassis-app.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:0.1.0-84
image: ghcr.io/open-traffic-generator/keng-controller:0.1.0-158
restart: always
depends_on:
keng-layer23-hw-server:
Expand All @@ -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:0.13.2-2
image: ghcr.io/open-traffic-generator/keng-layer23-hw-server:0.13.4-1
restart: always
command:
- "dotnet"
Expand All @@ -109,7 +109,7 @@ logging:
max-file: "10"
mode: "non-blocking"
otg-gnmi-server:
image: ghcr.io/open-traffic-generator/otg-gnmi-server:1.13.2
image: ghcr.io/open-traffic-generator/otg-gnmi-server:1.13.4
restart: always
depends_on:
keng-controller:
Expand Down
Loading

0 comments on commit 934732b

Please sign in to comment.