[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"]
path = src/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"]
path = platform/p4/p4c-bm/p4c-bm
url = https://github.com/krambn/p4c-bm
@ -68,3 +62,9 @@
[submodule "src/sonic-frr/frr"]
path = src/sonic-frr/frr
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)_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)
else ifeq ($(ROUTING_STACK), frr)
$(DOCKER_SONIC_P4)_DEPENDS += $(FRR)
else
$(DOCKER_SONIC_P4)_DEPENDS += $(GOBGP)
endif
# else ifeq ($(ROUTING_STACK), frr)
# $(DOCKER_SONIC_P4)_DEPENDS += $(FRR)
# else
# $(DOCKER_SONIC_P4)_DEPENDS += $(GOBGP)
# endif
$(DOCKER_SONIC_P4)_LOAD_DOCKERS += $(DOCKER_BASE)
SONIC_DOCKER_IMAGES += $(DOCKER_SONIC_P4)

View File

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

View File

@ -1,5 +1,33 @@
# alias lanes
Ethernet0 1
Ethernet1 2
Ethernet2 3
Ethernet3 4
# name lanes
Ethernet0 0
Ethernet1 1
Ethernet2 2
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
*.* @172.17.0.1:514
#Set local syslog
#*.* /var/log/messages
#
# 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
echo "Start redis server"
service redis-server start
service redis-server start &
sleep 3
redis-cli flushall
echo "Veth setup"
/usr/share/bmpd/tools/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
veth_setup.sh > /tmp/veth_setup.log 2>&1
echo "Start BMV2"
/run_bm.sh > /tmp/run_bm.log 2>&1 &
/scripts/run_bm.sh > /tmp/run_bm.log 2>&1 &
sleep 15
redis-cli -n 1 set LOGLEVEL DEBUG

View File

@ -1,7 +1,7 @@
# p4 bmv package
P4_BMV = p4-bmv2_1.0.0_amd64.deb
$(P4_BMV)_DEPENDS += $(LIBTHRIFT_DEV) $(PYTHON_THRIFT) $(THRIFT_COMPILER)
P4_BMV = sai-p4-bm_1.0.0_amd64.deb
$(P4_BMV)_DEPENDS += $(LIBTHRIFT_DEV) $(PYTHON_THRIFT) $(THRIFT_COMPILER) $(P4C_BM)
$(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)

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

View File

@ -1,5 +1,9 @@
# 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)_SRC_PATH = $(PLATFORM_PATH)/p4-hlir/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)_DEPENDS += $(P4C_BM) $(P4_BMV)
$(P4_SWITCH)_RDEPENDS += $(P4C_BM) $(P4_BMV)
$(P4_SWITCH)_SRC_PATH = $(PLATFORM_PATH)/p4-switch
SONIC_MAKE_DEBS += $(P4_SWITCH)
P4_SWITCH = p4-sai-adapter_0.1-0_amd64.deb
$(P4_SWITCH)_DEPENDS += $(LIBTHRIFT_DEV) $(PYTHON_THRIFT) $(THRIFT_COMPILER) $(P4_BMV)
$(P4_SWITCH)_RDEPENDS += $(LIBTHRIFT) $(PYTHON_THRIFT) $(THRIFT_COMPILER) $(P4_BMV)
$(P4_SWITCH)_SRC_PATH = $(PLATFORM_PATH)/SAI-P4-BM/sai_adapter
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)_SRC_PATH = $(PLATFORM_PATH)/p4c-bm/p4c-bm
$(P4C_BM)_DEPENDS += $(TENJIN) $(P4_HLIR)
$(P4C_BM)_RDEPENDS += $(TENJIN) $(P4_HLIR)
$(P4C_BM)_DEPENDS += $(TENJIN) $(P4_HLIR) $(P4_HLIR_V1_1)
$(P4C_BM)_RDEPENDS += $(TENJIN) $(P4_HLIR) $(P4_HLIR_V1_1)
SONIC_PYTHON_STDEB_DEBS += $(P4C_BM)

View File

@ -1,8 +1,10 @@
include $(PLATFORM_PATH)/p4-switch.mk
include $(PLATFORM_PATH)/p4-bmv.mk
# include $(PLATFORM_PATH)/p4-softswitch.mk
include $(PLATFORM_PATH)/tenjin.mk
include $(PLATFORM_PATH)/p4-hlir.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
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)/% :
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
pushd Tenjin-$(TENJIN_VERSION)