[saip4]: New p4 platform based on SAI behavioral model software switch (#1117)

* merged new p4 platform from 1.0.3

* reverted SAI-P4-BM to SAI1.0

* changed port_config.ini from alias to name. changed tenjin makefile to https

* updated SAI-P4-BM commit
This commit is contained in:
YonatanPitz 2017-11-07 08:45:50 +02:00 committed by lguohan
parent 7540893471
commit 28eb62fcff
18 changed files with 100 additions and 57 deletions

12
.gitmodules vendored
View File

@ -10,12 +10,6 @@
[submodule "sonic-swss"] [submodule "sonic-swss"]
path = src/sonic-swss path = src/sonic-swss
url = https://github.com/Azure/sonic-swss url = https://github.com/Azure/sonic-swss
[submodule "src/p4-switch/switch"]
path = platform/p4/p4-switch/switch
url = https://github.com/krambn/switch
[submodule "src/p4-bmv2/behavioral-model"]
path = platform/p4/p4-bmv/behavioral-model
url = https://github.com/krambn/behavioral-model
[submodule "src/p4c-bm/p4c-bm"] [submodule "src/p4c-bm/p4c-bm"]
path = platform/p4/p4c-bm/p4c-bm path = platform/p4/p4c-bm/p4c-bm
url = https://github.com/krambn/p4c-bm url = https://github.com/krambn/p4c-bm
@ -68,3 +62,9 @@
[submodule "src/sonic-frr/frr"] [submodule "src/sonic-frr/frr"]
path = src/sonic-frr/frr path = src/sonic-frr/frr
url = https://github.com/FRRouting/frr.git url = https://github.com/FRRouting/frr.git
[submodule "platform/p4/p4-hlir/p4-hlir-v1.1"]
path = platform/p4/p4-hlir/p4-hlir-v1.1
url = https://github.com/p4lang/p4-hlir.git
[submodule "platform/p4/SAI-P4-BM"]
path = platform/p4/SAI-P4-BM
url = https://github.com/Mellanox/SAI-P4-BM.git

1
platform/p4/SAI-P4-BM Submodule

@ -0,0 +1 @@
Subproject commit c25b5aecabbb09270dc805459434ee396792ccb3

View File

@ -4,13 +4,13 @@ DOCKER_SONIC_P4 = docker-sonic-p4.gz
$(DOCKER_SONIC_P4)_PATH = $(PLATFORM_PATH)/docker-sonic-p4 $(DOCKER_SONIC_P4)_PATH = $(PLATFORM_PATH)/docker-sonic-p4
$(DOCKER_SONIC_P4)_DEPENDS += $(SWSS) $(SYNCD) $(P4_SWITCH) $(REDIS_SERVER) $(REDIS_TOOLS) $(LIBTEAMDCT) $(LIBTEAM_UTILS) $(DOCKER_SONIC_P4)_DEPENDS += $(SWSS) $(SYNCD) $(P4_SWITCH) $(REDIS_SERVER) $(REDIS_TOOLS) $(LIBTEAMDCT) $(LIBTEAM_UTILS)
ifeq ($(ROUTING_STACK), quagga) # ifeq ($(ROUTING_STACK), quagga)
$(DOCKER_SONIC_P4)_DEPENDS += $(QUAGGA) $(DOCKER_SONIC_P4)_DEPENDS += $(QUAGGA)
else ifeq ($(ROUTING_STACK), frr) # else ifeq ($(ROUTING_STACK), frr)
$(DOCKER_SONIC_P4)_DEPENDS += $(FRR) # $(DOCKER_SONIC_P4)_DEPENDS += $(FRR)
else # else
$(DOCKER_SONIC_P4)_DEPENDS += $(GOBGP) # $(DOCKER_SONIC_P4)_DEPENDS += $(GOBGP)
endif # endif
$(DOCKER_SONIC_P4)_LOAD_DOCKERS += $(DOCKER_BASE) $(DOCKER_SONIC_P4)_LOAD_DOCKERS += $(DOCKER_BASE)
SONIC_DOCKER_IMAGES += $(DOCKER_SONIC_P4) SONIC_DOCKER_IMAGES += $(DOCKER_SONIC_P4)

View File

@ -20,6 +20,7 @@ debs/{{ deb }}{{' '}}
ADD port_config.ini /port_config.ini ADD port_config.ini /port_config.ini
ADD startup.sh /scripts/startup.sh ADD startup.sh /scripts/startup.sh
ADD run_bm.sh /scripts/run_bm.sh
ADD rsyslog.conf /etc/rsyslog.conf ADD rsyslog.conf /etc/rsyslog.conf

View File

@ -1,5 +1,33 @@
# alias lanes # name lanes
Ethernet0 1 Ethernet0 0
Ethernet1 2 Ethernet1 1
Ethernet2 3 Ethernet2 2
Ethernet3 4 Ethernet3 3
Ethernet4 4
Ethernet5 5
Ethernet6 6
Ethernet7 7
Ethernet8 8
Ethernet9 9
Ethernet10 10
Ethernet11 11
Ethernet12 12
Ethernet13 13
Ethernet14 14
Ethernet15 15
Ethernet16 16
Ethernet17 17
Ethernet18 18
Ethernet19 19
Ethernet20 20
Ethernet21 21
Ethernet22 22
Ethernet23 23
Ethernet24 24
Ethernet25 25
Ethernet26 26
Ethernet27 27
Ethernet28 28
Ethernet29 29
Ethernet30 30
Ethernet31 31

View File

@ -31,6 +31,8 @@ $ModLoad imuxsock # provides support for local system logging
########################### ###########################
#Set remote syslog server #Set remote syslog server
*.* @172.17.0.1:514 *.* @172.17.0.1:514
#Set local syslog
#*.* /var/log/messages
# #
# Use traditional timestamp format. # Use traditional timestamp format.

View File

@ -0,0 +1,23 @@
#!/bin/sh
# handler()
# {
# kill -s INT $ROUTER_PID
# kill -s INT $BRIDGE_PID
# }
set -m
ip netns exec sw_net simple_switch -i 0@router_port1 -i 250@router_cpu_port --thrift-port 9091 --log-file /tmp/router_log --log-flush --notifications-addr ipc:///tmp/bmv2-router-notifications.ipc /usr/share/p4-sai-bm/sai_router.json &
export ROUTER_PID=$!
ip netns exec sw_net simple_switch -i 0@sw_port0 -i 1@sw_port1 -i 2@sw_port2 -i 3@sw_port3 -i 4@sw_port4 -i 5@sw_port5 -i 6@sw_port6 -i 7@sw_port7 -i 7@sw_port7 -i 8@sw_port8 -i 9@sw_port9 -i 10@sw_port10 -i 11@sw_port11 -i 12@sw_port12 -i 13@sw_port13 -i 14@sw_port14 -i 15@sw_port15 -i 16@sw_port16 -i 17@sw_port17 -i 18@sw_port18 -i 19@sw_port19 -i 20@sw_port20 -i 21@sw_port21 -i 22@sw_port22 -i 23@sw_port23 -i 24@sw_port24 -i 25@sw_port25 -i 26@sw_port26 -i 27@sw_port27 -i 28@sw_port28 -i 29@sw_port29 -i 30@sw_port30 -i 31@sw_port31 -i 250@cpu_port -i 251@router_port0 --log-file /tmp/bridge_log --log-flush /usr/share/p4-sai-bm/sai_bridge.json &
export BRIDGE_PID=$!
sleep 10
simple_switch_CLI --pre SimplePreLAG < /usr/share/p4-sai-bm/bridge_default_config.txt
simple_switch_CLI < /usr/share/p4-sai-bm/bridge_default_config_mirror.txt
simple_switch_CLI --pre SimplePreLAG --thrift-port 9091 < /usr/share/p4-sai-bm/router_default_config.txt
simple_switch_CLI --thrift-port 9091 < /usr/share/p4-sai-bm/router_default_config_mirror.txt
# echo "router and bridge are running send SIGINT to close"
# trap handler INT
# sleep inf
# sudo kill -s SIGINT 3319

View File

@ -8,16 +8,16 @@ rm -f /var/run/rsyslogd.pid
service rsyslog start service rsyslog start
echo "Start redis server" echo "Start redis server"
service redis-server start service redis-server start &
sleep 3
redis-cli flushall
echo "Veth setup" echo "Veth setup"
/usr/share/bmpd/tools/veth_setup.sh > /tmp/veth_setup.log 2>&1 veth_setup.sh > /tmp/veth_setup.log 2>&1
echo "Disable IPv6"
/usr/share/bmpd/tools/veth_disable_ipv6.sh > /tmp/veth_disable.log 2>&1
echo "Start BMV2" echo "Start BMV2"
/run_bm.sh > /tmp/run_bm.log 2>&1 & /scripts/run_bm.sh > /tmp/run_bm.log 2>&1 &
sleep 15 sleep 15
redis-cli -n 1 set LOGLEVEL DEBUG redis-cli -n 1 set LOGLEVEL DEBUG

View File

@ -1,7 +1,7 @@
# p4 bmv package # p4 bmv package
P4_BMV = p4-bmv2_1.0.0_amd64.deb P4_BMV = sai-p4-bm_1.0.0_amd64.deb
$(P4_BMV)_DEPENDS += $(LIBTHRIFT_DEV) $(PYTHON_THRIFT) $(THRIFT_COMPILER) $(P4_BMV)_DEPENDS += $(LIBTHRIFT_DEV) $(PYTHON_THRIFT) $(THRIFT_COMPILER) $(P4C_BM)
$(P4_BMV)_RDEPENDS += $(LIBTHRIFT) $(PYTHON_THRIFT) $(THRIFT_COMPILER) $(P4_BMV)_RDEPENDS += $(LIBTHRIFT) $(PYTHON_THRIFT) $(THRIFT_COMPILER)
$(P4_BMV)_SRC_PATH = $(PLATFORM_PATH)/p4-bmv/behavioral-model $(P4_BMV)_SRC_PATH = $(PLATFORM_PATH)/SAI-P4-BM/p4-switch
SONIC_DPKG_DEBS += $(P4_BMV) SONIC_DPKG_DEBS += $(P4_BMV)

@ -1 +0,0 @@
Subproject commit a6ccf267bc9c5c31fd40fe5841893e38e03abeb4

View File

@ -1,5 +1,9 @@
# p4 bmv package # p4 bmv package
P4_HLIR_V1_1 = python-p4-hlir-v1-1_1.1.7-1_all.deb
$(P4_HLIR_V1_1)_SRC_PATH = $(PLATFORM_PATH)/p4-hlir/p4-hlir-v1.1
SONIC_PYTHON_STDEB_DEBS += $(P4_HLIR_V1_1)
P4_HLIR = python-p4-hlir_0.9.36-1_all.deb P4_HLIR = python-p4-hlir_0.9.36-1_all.deb
$(P4_HLIR)_SRC_PATH = $(PLATFORM_PATH)/p4-hlir/p4-hlir $(P4_HLIR)_SRC_PATH = $(PLATFORM_PATH)/p4-hlir/p4-hlir
SONIC_PYTHON_STDEB_DEBS += $(P4_HLIR) SONIC_PYTHON_STDEB_DEBS += $(P4_HLIR)

@ -0,0 +1 @@
Subproject commit fdee55e2567fe65463f328d70558b5079894b420

View File

@ -1,7 +1,7 @@
# p4 switch package # p4 sai adapter package
P4_SWITCH = p4-switch_1.0.0_amd64.deb P4_SWITCH = p4-sai-adapter_0.1-0_amd64.deb
$(P4_SWITCH)_DEPENDS += $(P4C_BM) $(P4_BMV) $(P4_SWITCH)_DEPENDS += $(LIBTHRIFT_DEV) $(PYTHON_THRIFT) $(THRIFT_COMPILER) $(P4_BMV)
$(P4_SWITCH)_RDEPENDS += $(P4C_BM) $(P4_BMV) $(P4_SWITCH)_RDEPENDS += $(LIBTHRIFT) $(PYTHON_THRIFT) $(THRIFT_COMPILER) $(P4_BMV)
$(P4_SWITCH)_SRC_PATH = $(PLATFORM_PATH)/p4-switch $(P4_SWITCH)_SRC_PATH = $(PLATFORM_PATH)/SAI-P4-BM/sai_adapter
SONIC_MAKE_DEBS += $(P4_SWITCH) SONIC_DPKG_DEBS += $(P4_SWITCH)

View File

@ -1,17 +0,0 @@
SHELL = /bin/bash
.ONESHELL:
MAIN_TARGET = p4-switch_1.0.0_amd64.deb
$(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% :
pushd switch
mkdir -p p4-build/bmv2/switch
mkdir -p p4-build/bmv2/pd_thrift_gen
./autogen.sh
dpkg-buildpackage -us -uc -b -j4
popd
mv $* $(DEST)/

@ -1 +0,0 @@
Subproject commit e934752f356d3ad48cbec99067f47c83795ddcec

View File

@ -2,6 +2,6 @@
P4C_BM = python-p4c-bm_1.0.0-5415c416-1_all.deb P4C_BM = python-p4c-bm_1.0.0-5415c416-1_all.deb
$(P4C_BM)_SRC_PATH = $(PLATFORM_PATH)/p4c-bm/p4c-bm $(P4C_BM)_SRC_PATH = $(PLATFORM_PATH)/p4c-bm/p4c-bm
$(P4C_BM)_DEPENDS += $(TENJIN) $(P4_HLIR) $(P4C_BM)_DEPENDS += $(TENJIN) $(P4_HLIR) $(P4_HLIR_V1_1)
$(P4C_BM)_RDEPENDS += $(TENJIN) $(P4_HLIR) $(P4C_BM)_RDEPENDS += $(TENJIN) $(P4_HLIR) $(P4_HLIR_V1_1)
SONIC_PYTHON_STDEB_DEBS += $(P4C_BM) SONIC_PYTHON_STDEB_DEBS += $(P4C_BM)

View File

@ -1,8 +1,10 @@
include $(PLATFORM_PATH)/p4-switch.mk # include $(PLATFORM_PATH)/p4-softswitch.mk
include $(PLATFORM_PATH)/p4-bmv.mk include $(PLATFORM_PATH)/tenjin.mk
include $(PLATFORM_PATH)/p4-hlir.mk include $(PLATFORM_PATH)/p4-hlir.mk
include $(PLATFORM_PATH)/p4c-bm.mk include $(PLATFORM_PATH)/p4c-bm.mk
include $(PLATFORM_PATH)/tenjin.mk # include $(PLATFORM_PATH)/p4-sai-bm.mk
include $(PLATFORM_PATH)/p4-bmv.mk
include $(PLATFORM_PATH)/p4-switch.mk
include $(PLATFORM_PATH)/docker-sonic-p4.mk include $(PLATFORM_PATH)/docker-sonic-p4.mk
SONIC_ALL += $(DOCKER_SONIC_P4) SONIC_ALL += $(DOCKER_SONIC_P4)

View File

@ -9,7 +9,7 @@ MAIN_TARGET = python-tenjin_$(TENJIN_VERSION_FULL)_all.deb
$(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% :
rm -rf Tenjin-$(TENJIN_VERSION) rm -rf Tenjin-$(TENJIN_VERSION)
wget -nc http://pypi.python.org/packages/source/T/Tenjin/Tenjin-$(TENJIN_VERSION).tar.gz wget -nc https://pypi.python.org/packages/source/T/Tenjin/Tenjin-$(TENJIN_VERSION).tar.gz
tar xzf Tenjin-$(TENJIN_VERSION).tar.gz tar xzf Tenjin-$(TENJIN_VERSION).tar.gz
pushd Tenjin-$(TENJIN_VERSION) pushd Tenjin-$(TENJIN_VERSION)