Skip to content

Commit e0af519

Browse files
YonatanPitzlguohan
YonatanPitz
authored andcommitted
[p4]: Updated p4 bm (#1228)
* 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 * [platform/p4]: Updated P4 docker to be up to date with vs. * Merged swss, swss-common and sai-redis with master, now supports new ConfigDB. * Changed startup script to work with supervisor for managing processes. Signed-off-by: Yonatan Piasetzky [email protected] * Updated SAI-BM submodule to sai v1.0.4 tag. now supports hostif vlan tag for port netdev * Updated SAI-P4-BM submodule.
1 parent 69d6ad5 commit e0af519

11 files changed

+358
-82
lines changed

platform/p4/docker-sonic-p4.mk

+15-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,17 @@
22

33
DOCKER_SONIC_P4 = docker-sonic-p4.gz
44
$(DOCKER_SONIC_P4)_PATH = $(PLATFORM_PATH)/docker-sonic-p4
5-
$(DOCKER_SONIC_P4)_DEPENDS += $(SWSS) $(SYNCD) $(P4_SWITCH) $(REDIS_SERVER) $(REDIS_TOOLS) $(LIBTEAMDCT) $(LIBTEAM_UTILS)
5+
$(DOCKER_SONIC_P4)_DEPENDS += $(SWSS) \
6+
$(SYNCD) \
7+
$(P4_SWITCH) \
8+
$(REDIS_SERVER) \
9+
$(REDIS_TOOLS) \
10+
$(PYTHON_SWSSCOMMON) \
11+
$(LIBTEAMDCT) \
12+
$(LIBTEAM_UTILS) \
13+
$(SONIC_DEVICE_DATA) \
14+
$(SONIC_UTILS) \
15+
$(IPROUTE2)
616

717
# ifeq ($(ROUTING_STACK), quagga)
818
$(DOCKER_SONIC_P4)_DEPENDS += $(QUAGGA)
@@ -12,5 +22,8 @@ $(DOCKER_SONIC_P4)_DEPENDS += $(QUAGGA)
1222
# $(DOCKER_SONIC_P4)_DEPENDS += $(GOBGP)
1323
# endif
1424

15-
$(DOCKER_SONIC_P4)_LOAD_DOCKERS += $(DOCKER_BASE)
25+
$(DOCKER_SONIC_P4)_FILES += $(CONFIGDB_LOAD_SCRIPT) \
26+
$(ARP_UPDATE_SCRIPT)
27+
28+
$(DOCKER_SONIC_P4)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE)
1629
SONIC_DOCKER_IMAGES += $(DOCKER_SONIC_P4)
+53-11
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,47 @@
1-
FROM docker-base
1+
FROM docker-config-engine
22

33
## Make apt-get non-interactive
44
ENV DEBIAN_FRONTEND=noninteractive
55

6+
COPY ["sonic-dev.gpg.key", "/etc/apt/"]
7+
RUN apt-key add /etc/apt/sonic-dev.gpg.key
8+
RUN echo "deb http://packages.microsoft.com/repos/sonic-dev/ jessie main" >> /etc/apt/sources.list
69
RUN apt-get update
710

8-
RUN apt-get install -y net-tools ethtool tcpdump ifupdown bridge-utils python-ply libqt5core5a libqt5network5 libboost-program-options1.55.0 libboost-system1.55.0 libboost-thread1.55.0 libgmp10 libjudydebian1 libnanomsg0 libdaemon0 libjansson4 libjemalloc1 openssh-client openssh-server libc-ares2 iproute
11+
RUN apt-get install -y net-tools \
12+
arping \
13+
ethtool \
14+
tcpdump \
15+
ifupdown \
16+
bridge-utils \
17+
python-ply \
18+
libqt5core5a \
19+
libqt5network5 \
20+
libboost-program-options1.55.0 \
21+
libboost-system1.55.0 \
22+
libboost-thread1.55.0 \
23+
libgmp10 \
24+
libjudydebian1 \
25+
libnanomsg0 \
26+
libdaemon0 \
27+
libjansson4 \
28+
libjemalloc1 \
29+
openssh-client \
30+
openssh-server \
31+
libc-ares2 \
32+
iproute \
33+
libpython2.7 \
34+
grub2-common \
35+
python-click-default-group \
36+
python-click \
37+
python-natsort \
38+
python-tabulate \
39+
bash-completion \
40+
libelf1 \
41+
libmnl0
42+
43+
RUN pip install setuptools
44+
RUN pip install py2_ipaddress
945

1046
COPY \
1147
{% for deb in docker_sonic_p4_debs.split(' ') -%}
@@ -18,20 +54,26 @@ RUN dpkg -i \
1854
debs/{{ deb }}{{' '}}
1955
{%- endfor %}
2056

21-
ADD port_config.ini /port_config.ini
22-
ADD startup.sh /scripts/startup.sh
23-
ADD run_bm.sh /scripts/run_bm.sh
24-
25-
ADD rsyslog.conf /etc/rsyslog.conf
26-
2757
## Clean up
2858
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
2959
RUN rm -rf /debs
3060

31-
RUN sed -ri 's/^daemonize yes$/daemonize no/; \
61+
RUN sed -ri 's/^(save .*$)/# \1/g; \
62+
s/^daemonize yes$/daemonize no/; \
3263
s/^logfile .*$/logfile ""/; \
3364
s/^# syslog-enabled no$/syslog-enabled no/; \
34-
s/^# unixsocket/unixsocket/ \
65+
s/^# unixsocket/unixsocket/; \
66+
s/notify-keyspace-events ""/notify-keyspace-events AKE/; \
67+
s/^client-output-buffer-limit pubsub [0-9]+mb [0-9]+mb [0-9]+/client-output-buffer-limit pubsub 0 0 0/ \
3568
' /etc/redis/redis.conf
3669

37-
ENTRYPOINT /bin/bash
70+
ADD port_config.ini /port_config.ini
71+
ADD rsyslog.conf /etc/rsyslog.conf
72+
COPY ["start.sh", "orchagent.sh", "config_bm.sh", "/usr/bin/"]
73+
COPY ["supervisord.conf", "/etc/supervisor/conf.d/"]
74+
COPY ["files/configdb-load.sh", "/usr/bin/"]
75+
COPY ["files/arp_update", "/usr/bin"]
76+
RUN echo "docker-sonic-p4" > /etc/hostname
77+
RUN touch /etc/quagga/zebra.conf
78+
79+
ENTRYPOINT ["/bin/bash"]
+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
simple_switch_CLI --pre SimplePreLAG < /usr/share/p4-sai-bm/bridge_default_config.txt
2+
simple_switch_CLI < /usr/share/p4-sai-bm/bridge_default_config_mirror.txt
3+
simple_switch_CLI --pre SimplePreLAG --thrift-port 9091 < /usr/share/p4-sai-bm/router_default_config.txt
4+
simple_switch_CLI --thrift-port 9091 < /usr/share/p4-sai-bm/router_default_config_mirror.txt
+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/usr/bin/env bash
2+
3+
MAC_ADDRESS=`ip link show eth0 | grep ether | awk '{print $2}'`
4+
5+
# Create a folder for SsWW record files
6+
mkdir -p /var/log/swss
7+
ORCHAGENT_ARGS="-d /var/log/swss "
8+
9+
# Set orchagent pop batch size to 8192
10+
ORCHAGENT_ARGS+="-b 8192 "
11+
12+
# Set mac address
13+
ORCHAGENT_ARGS+="-m $MAC_ADDRESS"
14+
15+
exec /usr/bin/orchagent ${ORCHAGENT_ARGS}

platform/p4/docker-sonic-p4/rsyslog.conf

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ $ModLoad imuxsock # provides support for local system logging
3030
#### GLOBAL DIRECTIVES ####
3131
###########################
3232
#Set remote syslog server
33-
*.* @172.17.0.1:514
33+
#*.* @172.17.0.1:514
3434
#Set local syslog
35-
#*.* /var/log/messages
35+
*.* /var/log/messages
3636

3737
#
3838
# Use traditional timestamp format.

platform/p4/docker-sonic-p4/run_bm.sh

-23
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
-----BEGIN PGP PUBLIC KEY BLOCK-----
2+
Version: GnuPG v1
3+
4+
mQENBFQ1bTIBCAC7oGfkv/ck0XsLuG8cdcSB2ISqxFAcBvH9BitEtxmpW2uhykKk
5+
xY4rVD/4Uys1s3PF1/64QfPR+hYcewueOwz0ZAcLyFXXk4McICXaPq3NrLiWYKKX
6+
UZLnrPzcrGZoW/kHDDp4OmBiDmT1PGvZlpuimwkMCusUzIr7Cbbp2dIy8MERL5tA
7+
LcgLu3KL6clJ+aTW2jgepI1D7sTepOeGd7eRSb5njKg2M7k/93v/7MipZxiVtyXH
8+
B74YiK6jSbst5JpuYsLa/Dqryvx7Xq3n53oif892pv3euTduo1fYw8Hgh/OOYdeT
9+
c9WCj03KA1jCSFURjdrug0kR8BPlfjqtRLXFABEBAAG0JE1TIE9wZW4gVGVjaCA8
10+
aW50ZXJvcEBtaWNyb3NvZnQuY29tPokBOAQTAQIAIgUCVDVtMgIbAwYLCQgHAwIG
11+
FQgCCQoLBBYCAwECHgECF4AACgkQsCxG30F6CJO1uAf/cmL68bM8YgF/61hkaY56
12+
LqrppUTJH/w4fKq47Pf6KfgSLvxfNU6soi2KHYRjIvTRx3tV4vUM5n2plaQg2s8V
13+
/Epg4FeIRTk75YwiHAzLhLnp5cdUaTvC4j4mwxoB6j9Ty+fXJwQ0MvpDhIZb9vM4
14+
GXw/fEQHCT4f3gx4nReeqE+FB2wVHleX9+Lpodu98JyJTKJRBRHYLqy6S+/lyp2W
15+
aBlsI1LOqBcx1uRK24U7duIpbYwIyrx0cafSruqR2GjVdu+imkhHyUn52VbzYhq1
16+
af0rqYiZ1VOamVOG0By8+hVyNa1MLc1K2uWGs0o5fDe9F5/swbvLHVXI+M50Vs+m
17+
J7kBDQRUNW0yAQgAu7DkTVj0ZQC4F7bFivAwrdby8gCakTXOl1kcK622hjRJ8nam
18+
aZeW+eADfLRsTmdUmXgZu1YWS5Gn2ZVngC8SGPUBT071+oRETCz4uNB7IimB9QfP
19+
++orI6o2vmnVVsq5wWCbEdNU+TCVv1zjrYev5lwckkKpjHt6o8MNoX2DFuQymSyR
20+
eZKaqhdKmcji4Ke7OIYqwgPjch3wxzE1b5gNOR/iwxWyjjOffZPLr/VhIfIJRs86
21+
dSXrwjHtEh810SKDLghHM0VAdY34nyC5ZZ61yhts5HtQDFK+9mNpH1mkc4gDBlgG
22+
266pVvknumK6lPNm/osF/cpjWmEw24ypcQIvOQARAQABiQEfBBgBAgAJBQJUNW0y
23+
AhsMAAoJELAsRt9BegiTMBUH/0sZ6gZy7mCTSAYT+NSXLFtGC2zNUVL80SWvfgYm
24+
k9XPVI22MrefZfQ6M01RylyxtWXjRM8UoN8SDKWPpXumzJf831f/7om5zwutaG7b
25+
tjDPYqRKJSbAIFZu2mN+uLrNQ2SV6XK7FoV0dtcrEX9S7RICb6i19D+70+Oh/qgU
26+
R04H1jqS29XBzqAlIzdBoA+sYAwbOIJsSL3YyNQcUv3B5+5yR/bo/L8pnUJt6iuL
27+
nWW+mi7r8gWPHDSrcdYq1TmmlOM7CwZPgWRZzkQPSeZz52Tt7IP47eyGJ09U4PIf
28+
FtMH1ElL2UgHoA/F9Q88e7LkztaTqE59uXWbIYyuSMJVvRU=
29+
=sb3d
30+
-----END PGP PUBLIC KEY BLOCK-----

platform/p4/docker-sonic-p4/start.sh

+97
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
#!/bin/bash -e
2+
3+
# generate configuration
4+
[ -d /etc/sonic ] || mkdir -p /etc/sonic
5+
6+
if ! ip link show eth0 &> /dev/null; then
7+
ip link add eth0 type dummy
8+
fi
9+
10+
SYSTEM_MAC_ADDRESS=$(ip link show eth0 | grep ether | awk '{print $2}')
11+
sonic-cfggen -a '{"DEVICE_METADATA":{"localhost": {"mac": "'$SYSTEM_MAC_ADDRESS'"}}}' --print-data > /etc/sonic/init_cfg.json
12+
13+
if [ -f /etc/sonic/config_db.json ]; then
14+
sonic-cfggen -j /etc/sonic/config_db.json -j /etc/sonic/init_cfg.json --print-data > /tmp/config_db.json
15+
mv /tmp/config_db.json /etc/sonic/config_db.json
16+
else
17+
sonic-cfggen -j /etc/sonic/init_cfg.json --print-data > /etc/sonic/config_db.json
18+
fi
19+
20+
mkdir -p /etc/swss/config.d/
21+
22+
# sonic-cfggen -m /etc/sonic/minigraph.xml -d -t /usr/share/sonic/templates/ipinip.json.j2 > /etc/swss/config.d/ipinip.json
23+
# sonic-cfggen -m /etc/sonic/minigraph.xml -d -t /usr/share/sonic/templates/mirror.json.j2 > /etc/swss/config.d/mirror.json
24+
# sonic-cfggen -m /etc/sonic/minigraph.xml -d -t /usr/share/sonic/templates/ports.json.j2 > /etc/swss/config.d/ports.json
25+
26+
# export platform=`sonic-cfggen -v platform`
27+
28+
rm -f /var/run/rsyslogd.pid
29+
30+
echo "Start rsyslogd"
31+
supervisorctl start rsyslogd
32+
33+
mkdir -p /var/run/redis
34+
35+
echo "Start redis"
36+
supervisorctl start redis-server
37+
38+
echo "Veth Setup"
39+
veth_setup.sh > /tmp/veth_setup.log
40+
41+
echo "Start BM"
42+
rm -rf bm_logs/bridge_log.*
43+
rm -rf bm_logs/router_log.*
44+
rm -rf log.txt
45+
mkdir -p bm_logs
46+
supervisorctl start bm_bridge
47+
supervisorctl start bm_router
48+
49+
sleep 10
50+
echo "BM Default config"
51+
config_bm.sh > /tmp/config_bm.log
52+
53+
/usr/bin/configdb-load.sh
54+
55+
echo "Start syncd"
56+
supervisorctl start syncd
57+
58+
echo "Start orchagent"
59+
supervisorctl start orchagent
60+
61+
echo "Start portsyncd"
62+
supervisorctl start portsyncd
63+
64+
echo "Start intfsyncd"
65+
supervisorctl start intfsyncd
66+
67+
echo "Start neighsyncd"
68+
supervisorctl start neighsyncd
69+
70+
echo "Start teamsyncd"
71+
supervisorctl start teamsyncd
72+
73+
echo "Start fpmsyncd"
74+
supervisorctl start fpmsyncd
75+
76+
echo "Start intfmgrd"
77+
supervisorctl start intfmgrd
78+
79+
echo "Start vlanmgrd"
80+
supervisorctl start vlanmgrd
81+
82+
echo "Start zebra"
83+
supervisorctl start zebra
84+
85+
echo "Start bgpd"
86+
supervisorctl start bgpd
87+
88+
if [ -f /etc/swss/config.d/default_config.json ]; then
89+
swssconfig /etc/swss/config.d/default_config.json
90+
fi
91+
92+
# Start arp_update when VLAN exists
93+
VLAN=`sonic-cfggen -d -v 'VLAN.keys() | join(" ") if VLAN'`
94+
if [ "$VLAN" != "" ]; then
95+
echo "Start arp_update"
96+
supervisorctl start arp_update
97+
fi

platform/p4/docker-sonic-p4/startup.sh

-43
This file was deleted.

0 commit comments

Comments
 (0)