diff --git a/.github/workflows/dash-bmv2-ci.yml b/.github/workflows/dash-bmv2-ci.yml index d951ab851..4b9c6c729 100644 --- a/.github/workflows/dash-bmv2-ci.yml +++ b/.github/workflows/dash-bmv2-ci.yml @@ -40,8 +40,9 @@ jobs: name: Build and Test DASH Pipeline runs-on: ubuntu-20.04 env: - docker_fg_flags: -u root --privileged - docker_bg_flags: -d -u root --privileged + docker_fg_flags: --privileged + docker_fg_root_flags: --privileged -u root + docker_bg_flags: -d --privileged defaults: run: working-directory: ./dash-pipeline @@ -76,9 +77,9 @@ jobs: - name: Run saithrift server run: DOCKER_FLAGS=$docker_bg_flags make run-saithrift-server - name: Run PTF Tests - run: DOCKER_FLAGS=$docker_fg_flags make run-saithrift-ptftests + run: DOCKER_FLAGS=$docker_fg_root_flags make run-saithrift-ptftests - name: Deploy ixia-c Traffic Generator run: DOCKER_FLAGS=$docker_fg_flags make deploy-ixiac - name: Run Pytests - run: DOCKER_FLAGS=$docker_fg_flags make run-saithrift-pytests + run: DOCKER_FLAGS=$docker_fg_root_flags make run-saithrift-pytests diff --git a/.wordlist.txt b/.wordlist.txt index 8ba0fc2b9..68f9e3d24 100644 --- a/.wordlist.txt +++ b/.wordlist.txt @@ -5,11 +5,14 @@ Accton ACK Ack ack +acl ACL ACLs ACR adaptor adaptors +ADDR +addr agnostically amd apache @@ -40,8 +43,10 @@ backend balancer Balancer balancers +bg BGP bgp +bidir bm BMV bmv @@ -328,6 +333,7 @@ Novus NPUS NSG NSGs +num NumberOfFlowResimulated NVA NVidia @@ -383,6 +389,7 @@ Prem preprocessor preprogrammed prereq +Pritsak PrivateAddress programmability protobuf @@ -398,6 +405,7 @@ PyTest pytests Pyunit qcow +qos QoS Radv rdpty @@ -561,6 +569,8 @@ upstreaming vcpus veth VFP +vip +VIP virsh virt virtio @@ -594,6 +604,8 @@ VPorts VTEP VTEPs VXLAN +VxLAN +VxLan vxlan warmboots wflow diff --git a/dash-pipeline/Makefile b/dash-pipeline/Makefile index 73f45f806..017c4714f 100644 --- a/dash-pipeline/Makefile +++ b/dash-pipeline/Makefile @@ -1,45 +1,44 @@ SHELL = /bin/bash # "All" type targets for convenience -all:fix-perms p4 sai saithrift-server docker-saithrift-client test +all:p4 sai saithrift-server docker-saithrift-client test -run-all-tests:run-libsai-test deploy-ixiac run-saithrift-client-tests +run-all-tests:run-libsai-test run-saithrift-client-tests run-saithrift-client-tests: run-saithrift-ptftests run-saithrift-pytests run-saithrift-client-dev-tests: run-saithrift-dev-ptftests run-saithrift-dev-pytests .PHONY:clean -clean: fix-perms kill-all p4-clean sai-clean test-clean network-clean saithrift-server-clean - rm -rf bmv2/dash_pipeline.bmv2 +clean: kill-all p4-clean sai-clean test-clean network-clean saithrift-server-clean + rm -rf $(P4_OUTDIR) kill-all: kill-saithrift-server kill-switch undeploy-ixiac - -.PHONY: fix-perms -fix-perms: - @echo "### Applying Fix permissions workaround..." - sudo chmod -R o+rw SAI/ bmv2/ tests/ - PWD := $(shell pwd) +DASH_USER ?=dashuser +DASH_GROUP ?=dashusers +DASH_UID ?=4321 +DASH_GUID?=4321 +DASH_HOST?=dash # Default Docker images, override from env var # Needed Libraries only DOCKER_GRPC_IMG ?=chrissommers/dash-grpc:1.43.2 -# Slimmed-down version bmv2 backend only 632MB - works: -DOCKER_P4C_BMV2_IMG ?=chrissommers/dash-p4c-bmv2:220819 +# Slimmed-down version bmv2 backend only 632MB: +DOCKER_P4C_BMV2_IMG ?=chrissommers/dash-p4c-bmv2:220825 -# Builds sai-P4rt clients to run inside bmvs process -DOCKER_BMV2_BLDR_IMG ?=chrissommers/dash-bmv2-bldr:220630 +# Builds SAI-P4RT clients to run inside bmv2 process +DOCKER_BMV2_BLDR_IMG ?=chrissommers/dash-bmv2-bldr:220819 # Runs bmv2 process - consider slimmer if don't need sai/p4rt clients inside DOCKER_BMV2_RUN_IMG ?=$(DOCKER_BMV2_BLDR_IMG) # Compiles sai headers, libsai, saithrift server & client/server libs -DOCKER_SAITHRIFT_BLDR_IMG ?=chrissommers/dash-saithrift-bldr:220719 +DOCKER_SAITHRIFT_BLDR_IMG ?=chrissommers/dash-saithrift-bldr:220819 # Base image with test frameworks, DASH client libs not installed -DOCKER_SAITHRIFT_CLIENT_BLDR_IMG ?=chrissommers/dash-saithrift-client-bldr:220723 +DOCKER_SAITHRIFT_CLIENT_BLDR_IMG ?=chrissommers/dash-saithrift-client-bldr:220819 # Client image built locally with saithrift client libs + PTF & Pytest frameworks # TODO: consider some other tagging scheme @@ -70,24 +69,26 @@ sai-submodule: # P4 Source code compile TARGETS ###################################### -P4_ARTIFACTS=bmv2/dash_pipeline.bmv2/dash_pipeline.json bmv2/dash_pipeline.bmv2/dash_pipeline_p4rt.txt +P4_SRC=$(wildcard bmv2/*.p4) +P4_MAIN=bmv2/dash_pipeline.p4 +P4_OUTDIR=bmv2/dash_pipeline.bmv2 + +P4_ARTIFACTS=$(P4_OUTDIR)/dash_pipeline.json $(P4_OUTDIR)/dash_pipeline_p4rt.txt -p4: fix-perms bmv2/dash_pipeline.bmv2/dash_pipeline.json +p4: $(P4_OUTDIR)/dash_pipeline.json .PHONY:p4-clean p4-clean: - -rm -rf bmv2/dash_pipeline.bmv2 - -P4_SRC=$(wildcard bmv2/*.p4) -P4_MAIN=bmv2/dash_pipeline.p4 -P4_OUTDIR=bmv2/dash_pipeline.bmv2 + -rm -rf $(P4_OUTDIR) # Compile P4 into bmv2 .json fle and P4info for SAI header autogeneration $(P4_ARTIFACTS): $(P4_SRC) @echo "Compile P4 program $(P4_MAIN) ..." mkdir -p $(P4_OUTDIR) && \ + chmod o+w $(P4_OUTDIR) && \ docker run \ --rm \ --name dash-p4c-$(USER) \ + -u $(DASH_USER) \ $(DOCKER_FLAGS) \ -v $(PWD)/bmv2:/bmv2 \ -w / \ @@ -114,20 +115,18 @@ DOCKER_RUN_SAITHRIFT_BLDR =\ # TODO - create separate rules for headers, libsai.so .PHONY:sai -sai: fix-perms sai-clean sai-headers sai-meta libsai +sai: sai-clean sai-headers sai-meta libsai -sai-headers: fix-perms p4 | SAI/SAI +sai-headers: p4 | SAI/SAI @echo "Generate SAI library headers and implementation..." - mkdir -p SAI/lib + mkdir -p SAI/lib && chmod -R o+w SAI && \ $(DOCKER_RUN) \ $(DOCKER_FLAGS) \ --name build_sai-$(USER) \ -w /SAI $(DOCKER_SAITHRIFT_BLDR_IMG) \ ./generate_dash_api.sh - # Fixup perms from generate_dash_api using sudo to call python,so subsequent scripts can access - sudo chmod -R a+rw $(PWD)/SAI/SAI -sai-meta: fix-perms +sai-meta: @echo "Generate SAI metadata..." # hack - remove scripts which cause Git ownership failures in CI pipelines # We don't need them, they're to check that SAI headers didn't experience enum changes etc. @@ -140,10 +139,9 @@ sai-meta: fix-perms -v $(PWD)/..:/dash -w /dash/dash-pipeline/SAI/SAI/meta \ $(DOCKER_SAITHRIFT_BLDR_IMG) \ make - sudo chmod -R o+rw SAI/ # TODO - add SAI header dependencies -libsai: fix-perms +libsai: @echo "build libsai.so..." $(DOCKER_RUN) \ $(DOCKER_FLAGS) \ @@ -152,11 +150,11 @@ libsai: fix-perms $(DOCKER_BMV2_BLDR_IMG) \ make -libsai-clean: fix-perms - -rm -rf SAI/lib/libsai.so +libsai-clean: + -rm -rf SAI/lib/* .PHONY:sai-clean -sai-clean: fix-perms SAI/SAI libsai-clean +sai-clean: SAI/SAI libsai-clean saithrift-server-clean @echo "Restoring SAI subdirectories to baseline..." rm -rf SAI/SAI/inc SAI/SAI/experimental SAI/SAI/meta cd SAI/SAI && git checkout -- inc experimental meta @@ -176,8 +174,8 @@ run-switch: network $(DOCKER_RUN) \ --name simple_switch-$(USER) \ -u root \ - -v $(PWD)/bmv2/dash_pipeline.bmv2/dash_pipeline.json:/etc/dash/dash_pipeline.json \ - -v $(PWD)/bmv2/dash_pipeline.bmv2/dash_pipeline_p4rt.txt:/etc/dash/dash_pipeline_p4rt.txt \ + -v $(PWD)/$(P4_OUTDIR)/dash_pipeline.json:/etc/dash/dash_pipeline.json \ + -v $(PWD)/$(P4_OUTDIR)/dash_pipeline_p4rt.txt:/etc/dash/dash_pipeline_p4rt.txt \ $(DOCKER_BMV2_RUN_IMG) \ env LD_LIBRARY_PATH=/usr/local/lib \ simple_switch_grpc \ @@ -194,7 +192,7 @@ kill-switch: # SAI-THRIFT SERVER TARGETS ############################### -saithrift-server:fix-perms +saithrift-server: $(DOCKER_RUN_SAITHRIFT_BLDR) \ make $@ @@ -204,8 +202,8 @@ DOCKER_RUN_SAITHRIFT_SRVR =\ $(DOCKER_FLAGS) \ --net=host \ --name dash-saithrift-server-$(USER) \ - -v $(PWD)/bmv2/dash_pipeline.bmv2/dash_pipeline.json:/etc/dash/dash_pipeline.json \ - -v $(PWD)/bmv2/dash_pipeline.bmv2/dash_pipeline_p4rt.txt:/etc/dash/dash_pipeline_p4rt.txt \ + -v $(PWD)/$(P4_OUTDIR)/dash_pipeline.json:/etc/dash/dash_pipeline.json \ + -v $(PWD)/$(P4_OUTDIR)/dash_pipeline_p4rt.txt:/etc/dash/dash_pipeline_p4rt.txt \ -v $(PWD)/SAI:/SAI \ -v $(PWD)/SAI/SAI/meta:/meta \ -w /SAI/rpc/usr/sbin \ @@ -226,6 +224,7 @@ run-saithrift-server-bash: saithrift-server-clean: $(DOCKER_RUN_SAITHRIFT_BLDR) \ make $@ + rm -rf SAI/rpc ############################### # SAI TEST TARGETS @@ -240,6 +239,7 @@ test-clean: .PHONY:libsai-test libsai-test:SAI/SAI SAI/lib/libsai.so + chmod -R a+w tests/libsai $(DOCKER_RUN) \ --name dash-build-test-$(USER) \ -w /tests/libsai $(DOCKER_BMV2_BLDR_IMG) \ @@ -286,10 +286,11 @@ docker-bmv2-bldr: docker build \ -f dockerfiles/Dockerfile.bmv2-bldr \ -t $(DOCKER_BMV2_BLDR_IMG) \ - --build-arg user=$(USER) \ - --build-arg uid=$(shell id -u) \ - --build-arg guid=$(shell id -g) \ - --build-arg hostname=$(shell echo $$HOSTNAME) \ + --build-arg user=$(DASH_USER) \ + --build-arg group=$(DASH_GROUP) \ + --build-arg uid=$(DASH_UID) \ + --build-arg guid=$(DASH_GUID) \ + --build-arg hostname=$(DASH_HOST) \ --build-arg available_processors=$(shell nproc) \ dockerfiles @@ -303,10 +304,11 @@ docker-saithrift-bldr: docker build \ -f dockerfiles/Dockerfile.saithrift-bldr \ -t $(DOCKER_SAITHRIFT_BLDR_IMG) \ - --build-arg user=$(USER) \ - --build-arg uid=$(shell id -u) \ - --build-arg guid=$(shell id -g) \ - --build-arg hostname=$(shell echo $$HOSTNAME) \ + --build-arg user=$(DASH_USER) \ + --build-arg group=$(DASH_GROUP) \ + --build-arg uid=$(DASH_UID) \ + --build-arg guid=$(DASH_GUID) \ + --build-arg hostname=$(DASH_HOST) \ --build-arg available_processors=$(shell nproc) \ dockerfiles @@ -322,10 +324,11 @@ docker-saithrift-client-bldr: docker build \ -f dockerfiles/Dockerfile.saithrift-client-bldr \ -t $(DOCKER_SAITHRIFT_CLIENT_BLDR_IMG) \ - --build-arg user=$(USER) \ - --build-arg uid=$(shell id -u) \ - --build-arg guid=$(shell id -g) \ - --build-arg hostname=$(shell echo $$HOSTNAME) \ + --build-arg user=$(DASH_USER) \ + --build-arg group=$(DASH_GROUP) \ + --build-arg uid=$(DASH_UID) \ + --build-arg guid=$(DASH_GUID) \ + --build-arg hostname=$(DASH_HOST) \ --build-arg available_processors=$(shell nproc) \ ./tests @@ -354,14 +357,14 @@ DOCKER_RUN_SAITHRIFT_CLIENT=\ $(DOCKER_FLAGS) \ # Run "production" Pytests bundled inside docker -run-saithrift-pytests:deploy-ixiac +run-saithrift-pytests:deploy-ixiac disable-ipv6 $(DOCKER_RUN_SAITHRIFT_CLIENT) \ -w /tests/saithrift/pytest \ $(DOCKER_SAITHRIFT_CLIENT_IMG) \ ./run-saithrift-pytests.sh # Run "dev" tests mounted from host -run-saithrift-dev-pytests:deploy-ixiac +run-saithrift-dev-pytests:deploy-ixiac disable-ipv6 $(DOCKER_RUN_SAITHRIFT_CLIENT) \ -v $(PWD)/tests/:/tests-dev/ \ -w /tests-dev/saithrift/pytest \ @@ -370,7 +373,7 @@ run-saithrift-dev-pytests:deploy-ixiac # Run "production" PTF tests bundled inside docker # Note - if add ixia-c usage to PTF tests, add dependency deploy-ixiac -run-saithrift-ptftests: +run-saithrift-ptftests: disable-ipv6 $(DOCKER_RUN_SAITHRIFT_CLIENT) \ -w /tests/saithrift/ptf \ $(DOCKER_SAITHRIFT_CLIENT_IMG) \ @@ -378,7 +381,7 @@ run-saithrift-ptftests: # Run "dev" PTF tests mounted from host # Note - if add ixia-c usage to PTF tests, add dependency deploy-ixiac -run-saithrift-dev-ptftests: +run-saithrift-dev-ptftests: disable-ipv6 $(DOCKER_RUN_SAITHRIFT_CLIENT) \ -v $(PWD)/tests/:/tests-dev/ \ -w /tests-dev/saithrift/ptf \ @@ -394,14 +397,26 @@ run-saithrift-client-bash: ############################### +# docker-dash-p4c: +# docker build \ +# -f dockerfiles/Dockerfile.p4c-bmv2 \ +# -t $(DOCKER_P4C_BMV2_IMG) \ +# --build-arg user=$(USER) \ +# --build-arg uid=$(shell id -u) \ +# --build-arg guid=$(shell id -g) \ +# --build-arg hostname=$(shell echo $$HOSTNAME) \ +# --build-arg available_processors=$(shell nproc) \ +# dockerfiles + docker-dash-p4c: docker build \ -f dockerfiles/Dockerfile.p4c-bmv2 \ -t $(DOCKER_P4C_BMV2_IMG) \ - --build-arg user=$(USER) \ - --build-arg uid=$(shell id -u) \ - --build-arg guid=$(shell id -g) \ - --build-arg hostname=$(shell echo $$HOSTNAME) \ + --build-arg user=$(DASH_USER) \ + --build-arg group=$(DASH_GROUP) \ + --build-arg uid=$(DASH_UID) \ + --build-arg guid=$(DASH_GUID) \ + --build-arg hostname=$(DASH_HOST) \ --build-arg available_processors=$(shell nproc) \ dockerfiles @@ -416,10 +431,11 @@ docker-dash-grpc: docker build \ -f dockerfiles/Dockerfile.grpc1.43.2 \ -t $(DOCKER_GRPC_IMG) \ - --build-arg user=$(USER) \ - --build-arg uid=$(shell id -u) \ - --build-arg guid=$(shell id -g) \ - --build-arg hostname=$(shell echo $$HOSTNAME) \ + --build-arg user=$(DASH_USER) \ + --build-arg group=$(DASH_GROUP) \ + --build-arg uid=$(DASH_UID) \ + --build-arg guid=$(DASH_GUID) \ + --build-arg hostname=$(DASH_HOST) \ --build-arg available_processors=$(shell nproc) \ dockerfiles @@ -433,7 +449,7 @@ docker-publish-dash-grpc: # BMV2-PKTGEN NETWORKING TARGETS ############################### -network:veth0 veth2 +network:veth0 veth2 disable-ipv6 veth0: /sys/class/net/veth0 /sys/class/net/veth0: @@ -443,17 +459,6 @@ veth0: /sys/class/net/veth0 sudo ip link set dev veth1 up sudo ip link set veth0 mtu 9500 sudo ip link set veth1 mtu 9500 - sudo sysctl net.ipv6.conf.veth0.disable_ipv6=1 - #https://superuser.com/questions/33196/how-to-disable-autoconfiguration-on-ipv6-in-linux - sudo sysctl net.ipv6.conf.veth0.autoconf=0 - sudo sysctl net.ipv6.conf.veth0.accept_ra=0 - sudo sysctl net.ipv6.conf.veth0.accept_ra_pinfo=0 - sudo sysctl net.ipv6.conf.veth0.router_solicitations=0 - sudo sysctl net.ipv6.conf.veth1.disable_ipv6=1 - sudo sysctl net.ipv6.conf.veth1.autoconf=0 - sudo sysctl net.ipv6.conf.veth1.accept_ra=0 - sudo sysctl net.ipv6.conf.veth1.accept_ra_pinfo=0 - sudo sysctl net.ipv6.conf.veth1.router_solicitations=0 veth2: /sys/class/net/veth2 /sys/class/net/veth2: @@ -462,21 +467,14 @@ veth2: /sys/class/net/veth2 sudo ip link set dev veth3 up sudo ip link set veth2 mtu 9500 sudo ip link set veth3 mtu 9500 - sudo sysctl net.ipv6.conf.veth2.disable_ipv6=1 - sudo sysctl net.ipv6.conf.veth2.autoconf=0 - sudo sysctl net.ipv6.conf.veth2.accept_ra=0 - sudo sysctl net.ipv6.conf.veth2.accept_ra_pinfo=0 - sudo sysctl net.ipv6.conf.veth2.router_solicitations=0 - sudo sysctl net.ipv6.conf.veth3.disable_ipv6=1 - sudo sysctl net.ipv6.conf.veth3.autoconf=0 - sudo sysctl net.ipv6.conf.veth3.accept_ra=0 - sudo sysctl net.ipv6.conf.veth3.accept_ra_pinfo=0 - sudo sysctl net.ipv6.conf.veth3.router_solicitations=0 +disable-ipv6: + ./disable_veth_ipv6.sh + +# Delete veth's, test existence to avoid needless use of sudo network-clean: - # Note, deleting one member (e.g. veth0) deletes its peer (e.g. veth1) - -sudo ip link delete dev veth0 - -sudo ip link delete dev veth2 + @-([ -e /sys/class/net/veth0 ] && sudo ip link delete dev veth0 && echo "Deleted veth0/1") || echo "No veth0, not deleting" + @-([ -e /sys/class/net/veth2 ] && sudo ip link delete dev veth2 && echo "Deleted veth2/3") || echo "No veth2, not deleting" ############################### # IXIA-C TARGETS diff --git a/dash-pipeline/SAI/generate_dash_api.sh b/dash-pipeline/SAI/generate_dash_api.sh index 440f96153..d3c73ebe2 100755 --- a/dash-pipeline/SAI/generate_dash_api.sh +++ b/dash-pipeline/SAI/generate_dash_api.sh @@ -1,5 +1,5 @@ #!/bin/bash -sudo ./sai_api_gen.py \ +./sai_api_gen.py \ /bmv2/dash_pipeline.bmv2/dash_pipeline_p4rt.json \ --ignore-tables=appliance,eni_meter,slb_decap \ dash diff --git a/dash-pipeline/SAI/saithrift/Makefile b/dash-pipeline/SAI/saithrift/Makefile index 936d380fc..0cf0c36d6 100644 --- a/dash-pipeline/SAI/saithrift/Makefile +++ b/dash-pipeline/SAI/saithrift/Makefile @@ -27,7 +27,7 @@ SAIRPC_EXTRA_LIBS="\ -lssl \ -laddress_sorting" -# Below based on: https://github.com/opencomputeproject/SAI/blob/088627dd90c3420daf96d294c661b4a152afb01e/ptf/SAI_PTF_user-guide.md +# Below based on: https://github.com/opencomputeproject/SAI/blob/master/ptf/SAI_PTF_user-guide.md # Dependencies are assumed to be installed, e.g. in the docker container saithrift-server: # Copy headers to /usr/include/sai @@ -41,6 +41,7 @@ saithrift-server: sudo cp $(LIB)/libsai.so /usr/lib @echo "Build SAI thrift server and libraries..." + mkdir -p $(RPC_INST_DIR) && chmod a+w $(RPC_INST_DIR) cd $(SAI) && export SAITHRIFTV2=y && \ export GEN_SAIRPC_OPTS="-ve" && \ @@ -57,6 +58,7 @@ saithrift-server: # Copy thrift libs from builder image onto host cp /usr/lib/libthrift*so* /usr/lib/thrift-0.11.0.tar.gz $(RPC_INST_DIR) + chmod -R a+w $(META)/generated $(META)/html $(META)/xml $(RPC_INST_DIR) saithrift-server-clean: cd $(SAI) && export SAITHRIFTV2=y && make clean diff --git a/dash-pipeline/disable_veth_ipv6.sh b/dash-pipeline/disable_veth_ipv6.sh new file mode 100755 index 000000000..64bff490d --- /dev/null +++ b/dash-pipeline/disable_veth_ipv6.sh @@ -0,0 +1,22 @@ +#!/bin/bash +echo "Disable IPv6 to suppress Linux control plane noise" +sudo sysctl net.ipv6.conf.veth0.disable_ipv6=1 +sudo sysctl net.ipv6.conf.veth0.autoconf=0 +sudo sysctl net.ipv6.conf.veth0.accept_ra=0 +sudo sysctl net.ipv6.conf.veth0.accept_ra_pinfo=0 +sudo sysctl net.ipv6.conf.veth0.router_solicitations=0 +sudo sysctl net.ipv6.conf.veth1.disable_ipv6=1 +sudo sysctl net.ipv6.conf.veth1.autoconf=0 +sudo sysctl net.ipv6.conf.veth1.accept_ra=0 +sudo sysctl net.ipv6.conf.veth1.accept_ra_pinfo=0 +sudo sysctl net.ipv6.conf.veth1.router_solicitations=0 +sudo sysctl net.ipv6.conf.veth2.disable_ipv6=1 +sudo sysctl net.ipv6.conf.veth2.autoconf=0 +sudo sysctl net.ipv6.conf.veth2.accept_ra=0 +sudo sysctl net.ipv6.conf.veth2.accept_ra_pinfo=0 +sudo sysctl net.ipv6.conf.veth2.router_solicitations=0 +sudo sysctl net.ipv6.conf.veth3.disable_ipv6=1 +sudo sysctl net.ipv6.conf.veth3.autoconf=0 +sudo sysctl net.ipv6.conf.veth3.accept_ra=0 +sudo sysctl net.ipv6.conf.veth3.accept_ra_pinfo=0 +sudo sysctl net.ipv6.conf.veth3.router_solicitations=0 diff --git a/dash-pipeline/dockerfiles/Dockerfile.bmv2-bldr b/dash-pipeline/dockerfiles/Dockerfile.bmv2-bldr index 93c8b1c1e..7dc0e64d1 100644 --- a/dash-pipeline/dockerfiles/Dockerfile.bmv2-bldr +++ b/dash-pipeline/dockerfiles/Dockerfile.bmv2-bldr @@ -63,13 +63,14 @@ COPY --from=grpc /usr/local/lib/lib*grpc*.so* \ ARG user ARG uid +ARG group ARG guid ARG hostname ENV BUILD_HOSTNAME $hostname ENV USER $user -RUN groupadd -f -r -g $guid g$user +RUN groupadd -f -r -g $guid $group RUN useradd $user -l -u $uid -g $guid -d /var/$user -m -s /bin/bash diff --git a/dash-pipeline/dockerfiles/Dockerfile.p4c-bmv2 b/dash-pipeline/dockerfiles/Dockerfile.p4c-bmv2 index 413c1a0c3..d58281953 100644 --- a/dash-pipeline/dockerfiles/Dockerfile.p4c-bmv2 +++ b/dash-pipeline/dockerfiles/Dockerfile.p4c-bmv2 @@ -45,6 +45,19 @@ COPY --from=p4lang-p4c \ /usr/local/bin/p4c-bm2-ss \ /usr/local/bin/ + +ARG user +ARG uid +ARG group +ARG guid +ARG hostname + +ENV BUILD_HOSTNAME $hostname +ENV USER $user + +RUN groupadd -f -r -g $guid $group + +RUN useradd $user -l -u $uid -g $guid -d /var/$user -m -s /bin/bash CMD bash # # Alternate approach - selective remove backends etc. diff --git a/dash-pipeline/dockerfiles/Dockerfile.saithrift-bldr b/dash-pipeline/dockerfiles/Dockerfile.saithrift-bldr index 3bee87e89..3596f2521 100644 --- a/dash-pipeline/dockerfiles/Dockerfile.saithrift-bldr +++ b/dash-pipeline/dockerfiles/Dockerfile.saithrift-bldr @@ -1,6 +1,6 @@ FROM chrissommers/dash-grpc:1.43.2 as grpc -FROM chrissommers/dash-bmv2-bldr:220630 as bmv2 +FROM chrissommers/dash-bmv2-bldr:220819 as bmv2 # amd64/ubuntu:20.04 on 2022-07-03 FROM amd64/ubuntu@sha256:b2339eee806d44d6a8adc0a790f824fb71f03366dd754d400316ae5a7e3ece3e as builder LABEL maintainer="SONiC-DASH Community " @@ -77,13 +77,14 @@ WORKDIR / ARG user ARG uid +ARG group ARG guid ARG hostname ENV BUILD_HOSTNAME $hostname ENV USER $user -RUN groupadd -f -r -g $guid g$user +RUN groupadd -f -r -g $guid $group RUN useradd $user -l -u $uid -g $guid -d /var/$user -m -s /bin/bash diff --git a/dash-pipeline/dockerfiles/Dockerfile.saithrift-client-bldr b/dash-pipeline/dockerfiles/Dockerfile.saithrift-client-bldr index c639f9352..b192a88a1 100644 --- a/dash-pipeline/dockerfiles/Dockerfile.saithrift-client-bldr +++ b/dash-pipeline/dockerfiles/Dockerfile.saithrift-client-bldr @@ -20,13 +20,14 @@ WORKDIR / ARG user ARG uid +ARG group ARG guid ARG hostname ENV BUILD_HOSTNAME $hostname ENV USER $user -RUN groupadd -f -r -g $guid g$user +RUN groupadd -f -r -g $guid $group RUN useradd $user -l -u $uid -g $guid -d /var/$user -m -s /bin/bash diff --git a/dash-pipeline/tests/requirements.txt b/dash-pipeline/tests/requirements.txt index 649e00354..7db3f16dd 100644 --- a/dash-pipeline/tests/requirements.txt +++ b/dash-pipeline/tests/requirements.txt @@ -1,2 +1,2 @@ -snappi==0.7.38 +snappi==0.9.4 pytest==6.0.1 diff --git a/documentation/general/dash-sonic-hld.md b/documentation/general/dash-sonic-hld.md index 35337a4d5..0c56e9a96 100644 --- a/documentation/general/dash-sonic-hld.md +++ b/documentation/general/dash-sonic-hld.md @@ -262,7 +262,7 @@ key = DASH_ACL_RULE:group_id:rule_num ; unique rule num wit priority = INT32 value ; priority of the rule, lower the value, higher the priority action = allow/deny terminating = true/false ; if true, stop processing further rules -protocols = list of INT ',' separated; E.g. 6-udp, 17-tcp; if not provided, match on all protocols +protocols = list of INT ',' separated; E.g. 6-tcp, 17-udp; if not provided, match on all protocols src_addr = list of source ip prefixes ',' separated dst_addr = list of destination ip prefixes ',' separated src_port = list of range of source ports ',' separated diff --git a/documentation/general/program-scale-testing-requirements-draft.md b/documentation/general/program-scale-testing-requirements-draft.md index a54779437..bd4bc86ce 100644 --- a/documentation/general/program-scale-testing-requirements-draft.md +++ b/documentation/general/program-scale-testing-requirements-draft.md @@ -297,6 +297,31 @@ The following scale of policies and routes are at minimum required to be configured during validation and test plan needs to be executed covering both scenarios: +**NEW Values Start** ################################################### + +| | per ENI | 200G (DPU) | 400G | 800G | 1.6T (smart switch) | +|---------------|------------|--------------|-------|-------|-------| +| VNETs | | 1024 | 2048 | 4096 | 8192 | +| ENIs | | 64 | 128 | 256 | 512 | +| Routes | 100K | 6.4M | 12.8M | 25.6M | 51.2M | +| NSGs | 5in + 5out | 640 | 1280 | 2560 | 5120 | +| ACLs prefixes | 10x100K | 64M | 128M | 256M | 512M | +| ACLs Ports | 10x10K | 6.4M | 12.8M | 25.6M | 51.2M | +| Mappings (CA to PA) | 160K | 10M | 20M | 40M | 80M | +| Act Con | 1M (bidir) | 64M | 128M | 256M | 512M | +| CPS | | 3.75M | 7.5M | 15M | 30M | +| bg flows TCP | | 1M (bidir) | 2M | 4M | 8M | +| bg flows UDP | | 1M (bidir) | 2M | 4M | 8M | + +- ACL rules per NSG = 1000 +- Prefixes per ACL rule = 100 +- Prefixes mapped per ACL rule = 16 +- Prefixes routed per ACL rule = 84 +- Routes per ACL rule = 10 +- -> Change Above: NSG per ENI changed since 5 Inbound & 5 Outbound stages are required + +**NEW Values End** #################################################### + ## MSFT LAB IXIA Configuration diff --git a/documentation/high-avail/AMD-Pensando_HA_Proposal.md b/documentation/high-avail/AMD-Pensando_HA_Proposal.md index 2aa935dd5..2f7ad417f 100644 --- a/documentation/high-avail/AMD-Pensando_HA_Proposal.md +++ b/documentation/high-avail/AMD-Pensando_HA_Proposal.md @@ -54,7 +54,7 @@ Each DPU sends heartbeat messages at a configured interval to its peer. When a p ## State Synchronization -State synchronization between the 2 DPUs uses the CNIP IP. All state synchronization happens at the granularity of the DP-VIP and happens from the primary of the DP-VIP towards the secondary. State synchronization happens in 2 stages +State synchronization between the 2 DPUs uses the CNIP IP. All state synchronization happens at the granularity of the DP-VIP and happens from the primary of the DP-VIP towards the secondary. State synchronization happens in 2 parallel stages 1. Bulk Sync 1. Data path sync diff --git a/slides/SAI_Challenger_Enhancements_for_DASH_Testing_Sneak_Preview_2022-09-14.pdf b/slides/SAI_Challenger_Enhancements_for_DASH_Testing_Sneak_Preview_2022-09-14.pdf new file mode 100644 index 000000000..9f65fdb49 Binary files /dev/null and b/slides/SAI_Challenger_Enhancements_for_DASH_Testing_Sneak_Preview_2022-09-14.pdf differ diff --git a/test/requirements.txt b/test/requirements.txt index 649e00354..7db3f16dd 100644 --- a/test/requirements.txt +++ b/test/requirements.txt @@ -1,2 +1,2 @@ -snappi==0.7.38 +snappi==0.9.4 pytest==6.0.1 diff --git a/test/third-party/traffic_gen/deployment/.env b/test/third-party/traffic_gen/deployment/.env index 69e9c91e6..72ec4ae3b 100644 --- a/test/third-party/traffic_gen/deployment/.env +++ b/test/third-party/traffic_gen/deployment/.env @@ -1,8 +1,10 @@ -CONTROLLER_VERSION=0.0.1-2934 -TRAFFIC_ENGINE_VERSION=1.4.1.26 +DOCKER_REGISTRY=ghcr.io/open-traffic-generator +CONTROLLER_VERSION=0.0.1-3383 +TRAFFIC_ENGINE_VERSION=1.6.0.17 IFC1=veth1 IFC2=veth3 TCP_PORT_IFC1=5555 TCP_PORT_IFC2=5556 CPU_CORES_IFC1="0" -CPU_CORES_IFC2="1" \ No newline at end of file +CPU_CORES_IFC2="1" +OPT_ENABLE_IPv6="No" diff --git a/test/third-party/traffic_gen/deployment/ixia-c-deployment.yml b/test/third-party/traffic_gen/deployment/ixia-c-deployment.yml index df8b85689..39da05fe5 100644 --- a/test/third-party/traffic_gen/deployment/ixia-c-deployment.yml +++ b/test/third-party/traffic_gen/deployment/ixia-c-deployment.yml @@ -1,12 +1,12 @@ services: controller: - image: ixiacom/ixia-c-controller:${CONTROLLER_VERSION:-latest} + image: ${DOCKER_REGISTRY}/ixia-c-controller:${CONTROLLER_VERSION:-latest} container_name: ixia-c-controller-${USER} command: --accept-eula network_mode: "host" restart: always traffic_engine_1: - image: ixiacom/ixia-c-traffic-engine:${TRAFFIC_ENGINE_VERSION:-latest} + image: ${DOCKER_REGISTRY}/ixia-c-traffic-engine:${TRAFFIC_ENGINE_VERSION:-latest} container_name: ixia-c-traffic-engine1-${USER} network_mode: "host" restart: always @@ -16,8 +16,9 @@ services: - OPT_LISTEN_PORT=${TCP_PORT_IFC1:-5555} - ARG_IFACE_LIST=virtual@af_packet,${IFC1} - OPT_NO_HUGEPAGES=Yes + - OPT_ENABLE_IPv6=${OPT_ENABLE_IPv6} traffic_engine_2: - image: ixiacom/ixia-c-traffic-engine:${TRAFFIC_ENGINE_VERSION:-latest} + image: ${DOCKER_REGISTRY}/ixia-c-traffic-engine:${TRAFFIC_ENGINE_VERSION:-latest} container_name: ixia-c-traffic-engine2-${USER} network_mode: "host" restart: always @@ -27,3 +28,4 @@ services: - OPT_LISTEN_PORT=${TCP_PORT_IFC2:-5556} - ARG_IFACE_LIST=virtual@af_packet,${IFC2} - OPT_NO_HUGEPAGES=Yes + - OPT_ENABLE_IPv6=${OPT_ENABLE_IPv6}