From 92659ce4e55a8c4fe8ed40006545f24e06629da4 Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Tue, 17 Oct 2017 05:17:04 +0000 Subject: [PATCH 01/16] virtual switch --- platform/linux/docker-sonic-linux.mk | 18 +++++ .../linux/docker-sonic-linux/Dockerfile.j2 | 36 ++++++++++ .../linux/docker-sonic-linux/port_config.ini | 5 ++ .../linux/docker-sonic-linux/rsyslog.conf | 67 +++++++++++++++++++ platform/linux/docker-sonic-linux/startup.sh | 43 ++++++++++++ platform/linux/rules.mk | 3 + rules/sairedis.mk | 20 ++++++ slave.mk | 2 +- src/sonic-sairedis | 2 +- src/sonic-swss | 2 +- 10 files changed, 195 insertions(+), 3 deletions(-) create mode 100644 platform/linux/docker-sonic-linux.mk create mode 100644 platform/linux/docker-sonic-linux/Dockerfile.j2 create mode 100644 platform/linux/docker-sonic-linux/port_config.ini create mode 100644 platform/linux/docker-sonic-linux/rsyslog.conf create mode 100755 platform/linux/docker-sonic-linux/startup.sh create mode 100644 platform/linux/rules.mk diff --git a/platform/linux/docker-sonic-linux.mk b/platform/linux/docker-sonic-linux.mk new file mode 100644 index 000000000000..05af371d2ff3 --- /dev/null +++ b/platform/linux/docker-sonic-linux.mk @@ -0,0 +1,18 @@ +# docker image for linux sonic docker image + +LIBSAIREDIS_DPKG_TARGET = binary-syncd-vs + +DOCKER_SONIC_LINUX = docker-sonic-linux.gz +$(DOCKER_SONIC_LINUX)_PATH = $(PLATFORM_PATH)/docker-sonic-linux +$(DOCKER_SONIC_LINUX)_DEPENDS += $(SWSS) $(SYNCD_VS) $(REDIS_SERVER) $(REDIS_TOOLS) $(LIBTEAMDCT) $(LIBTEAM_UTILS) + +ifeq ($(ROUTING_STACK), quagga) +$(DOCKER_SONIC_LINUX)_DEPENDS += $(QUAGGA) +else ifeq ($(ROUTING_STACK), frr) +$(DOCKER_SONIC_LINUX)_DEPENDS += $(FRR) +else +$(DOCKER_SONIC_LINUX)_DEPENDS += $(GOBGP) +endif + +$(DOCKER_SONIC_LINUX)_LOAD_DOCKERS += $(DOCKER_BASE) +SONIC_DOCKER_IMAGES += $(DOCKER_SONIC_LINUX) diff --git a/platform/linux/docker-sonic-linux/Dockerfile.j2 b/platform/linux/docker-sonic-linux/Dockerfile.j2 new file mode 100644 index 000000000000..1b8d1746b2bb --- /dev/null +++ b/platform/linux/docker-sonic-linux/Dockerfile.j2 @@ -0,0 +1,36 @@ +FROM docker-base + +## Make apt-get non-interactive +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update + +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 + +COPY \ +{% for deb in docker_sonic_p4_debs.split(' ') -%} +debs/{{ deb }}{{' '}} +{%- endfor -%} +debs/ + +RUN dpkg -i \ +{% for deb in docker_sonic_p4_debs.split(' ') -%} +debs/{{ deb }}{{' '}} +{%- endfor %} + +ADD port_config.ini /port_config.ini +ADD startup.sh /scripts/startup.sh + +ADD rsyslog.conf /etc/rsyslog.conf + +## Clean up +RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y +RUN rm -rf /debs + +RUN sed -ri 's/^daemonize yes$/daemonize no/; \ + s/^logfile .*$/logfile ""/; \ + s/^# syslog-enabled no$/syslog-enabled no/; \ + s/^# unixsocket/unixsocket/ \ + ' /etc/redis/redis.conf + +ENTRYPOINT /bin/bash diff --git a/platform/linux/docker-sonic-linux/port_config.ini b/platform/linux/docker-sonic-linux/port_config.ini new file mode 100644 index 000000000000..574f8f976ef9 --- /dev/null +++ b/platform/linux/docker-sonic-linux/port_config.ini @@ -0,0 +1,5 @@ +# alias lanes +Ethernet0 1 +Ethernet1 2 +Ethernet2 3 +Ethernet3 4 diff --git a/platform/linux/docker-sonic-linux/rsyslog.conf b/platform/linux/docker-sonic-linux/rsyslog.conf new file mode 100644 index 000000000000..3480e18f9998 --- /dev/null +++ b/platform/linux/docker-sonic-linux/rsyslog.conf @@ -0,0 +1,67 @@ +############################################################################### +# Managed by Ansible +# file: ansible/roles/acs/templates/rsyslog.conf.j2 +############################################################################### +# +# /etc/rsyslog.conf Configuration file for rsyslog. +# +# For more information see +# /usr/share/doc/rsyslog-doc/html/rsyslog_conf.html + + +################# +#### MODULES #### +################# + +$ModLoad imuxsock # provides support for local system logging +#$ModLoad imklog # provides kernel logging support +#$ModLoad immark # provides --MARK-- message capability + +# provides UDP syslog reception +#$ModLoad imudp +#$UDPServerRun 514 + +# provides TCP syslog reception +#$ModLoad imtcp +#$InputTCPServerRun 514 + + +########################### +#### GLOBAL DIRECTIVES #### +########################### +#Set remote syslog server +*.* @172.17.0.1:514 + +# +# Use traditional timestamp format. +# To enable high precision timestamps, comment out the following line. +# +#$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat + +# Define a custom template +$template SONiCFileFormat,"%TIMESTAMP%.%timestamp:::date-subseconds% %HOSTNAME% %syslogseverity-text:::uppercase% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n" +$ActionFileDefaultTemplate SONiCFileFormat + +# +# Set the default permissions for all log files. +# +$FileOwner root +$FileGroup adm +$FileCreateMode 0640 +$DirCreateMode 0755 +$Umask 0022 + +# +# Where to place spool and state files +# +$WorkDirectory /var/spool/rsyslog + +# +# Include all config files in /etc/rsyslog.d/ +# +$IncludeConfig /etc/rsyslog.d/*.conf + + +############### +#### RULES #### +############### diff --git a/platform/linux/docker-sonic-linux/startup.sh b/platform/linux/docker-sonic-linux/startup.sh new file mode 100755 index 000000000000..18cd4716580b --- /dev/null +++ b/platform/linux/docker-sonic-linux/startup.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +echo "Set onie_platform to x86_64-barefoot_p4-r0" +export onie_platform=x86_64-barefoot_p4-r0 + +echo "Start rsyslog" +rm -f /var/run/rsyslogd.pid +service rsyslog start + +echo "Start redis server" +service redis-server start + +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 + +echo "Start BMV2" +/run_bm.sh > /tmp/run_bm.log 2>&1 & +sleep 15 + +redis-cli -n 1 set LOGLEVEL DEBUG + +echo "Start Syncd" +syncd -N > /tmp/syncd.log 2>&1 & +sleep 10 + +echo "Start Orchagent" +orchagent $* > /tmp/orchagent.log 2>&1 & +sleep 10 + +echo "Start Portsyncd" +portsyncd -p /port_config.ini > /tmp/portsyncd.log 2>&1 & + +echo "Start Intfsync" +intfsyncd > /tmp/intfsyncd.log 2>&1 & + +echo "Start Neighsyncd" +neighsyncd > /tmp/neighsyncd.log 2>&1 & + +echo "Start Fpmsyncd" +fpmsyncd > /tmp/fpmsyncd.log 2>&1 & diff --git a/platform/linux/rules.mk b/platform/linux/rules.mk new file mode 100644 index 000000000000..cf304352f0ee --- /dev/null +++ b/platform/linux/rules.mk @@ -0,0 +1,3 @@ +include $(PLATFORM_PATH)/docker-sonic-linux.mk + +SONIC_ALL += $(DOCKER_SONIC_LINUX) diff --git a/rules/sairedis.mk b/rules/sairedis.mk index 4a62954f4d1c..c3042283164b 100644 --- a/rules/sairedis.mk +++ b/rules/sairedis.mk @@ -9,6 +9,12 @@ SONIC_DPKG_DEBS += $(LIBSAIREDIS) LIBSAIREDIS_DEV = libsairedis-dev_1.0.0_amd64.deb $(eval $(call add_derived_package,$(LIBSAIREDIS),$(LIBSAIREDIS_DEV))) +LIBSAIVS = libsaivs_1.0.0_amd64.deb +$(eval $(call add_derived_package,$(LIBSAIREDIS),$(LIBSAIVS))) + +LIBSAIVS_DEV = libsaivs-dev_1.0.0_amd64.deb +$(eval $(call add_derived_package,$(LIBSAIREDIS),$(LIBSAIVS_DEV))) + SYNCD = syncd_1.0.0_amd64.deb $(SYNCD)_RDEPENDS += $(LIBSAIREDIS) $(LIBSAIMETADATA) $(eval $(call add_derived_package,$(LIBSAIREDIS),$(SYNCD))) @@ -17,6 +23,10 @@ SYNCD_RPC = syncd-rpc_1.0.0_amd64.deb $(SYNCD_RPC)_RDEPENDS += $(LIBSAIREDIS) $(LIBSAIMETADATA) $(eval $(call add_derived_package,$(LIBSAIREDIS),$(SYNCD_RPC))) +SYNCD_VS = syncd-vs_1.0.0_amd64.deb +$(SYNCD_VS)_RDEPENDS += $(LIBSAIREDIS) $(LIBSAIMETADATA) $(LIBSAIVS) +$(eval $(call add_derived_package,$(LIBSAIREDIS),$(SYNCD_VS))) + LIBSAIMETADATA = libsaimetadata_1.0.0_amd64.deb $(eval $(call add_derived_package,$(LIBSAIREDIS),$(LIBSAIMETADATA))) @@ -29,6 +39,11 @@ $(LIBSAIREDIS_DBG)_DEPENDS += $(LIBSAIREDIS) $(LIBSAIREDIS_DBG)_RDEPENDS += $(LIBSAIREDIS) $(eval $(call add_derived_package,$(LIBSAIREDIS),$(LIBSAIREDIS_DBG))) +LIBSAIVS_DBG = libsaivs-dbg_1.0.0_amd64.deb +$(LIBSAIVS_DBG)_DEPENDS += $(LIBSAIVS) +$(LIBSAIVS_DBG)_RDEPENDS += $(LIBSAIVS) +$(eval $(call add_derived_package,$(LIBSAIREDIS),$(LIBSAIVS_DBG))) + SYNCD_DBG = syncd-dbg_1.0.0_amd64.deb $(SYNCD_DBG)_DEPENDS += $(SYNCD) $(SYNCD_DBG)_RDEPENDS += $(SYNCD) @@ -39,6 +54,11 @@ $(SYNCD_RPC_DBG)_DEPENDS += $(SYNCD_RPC) $(SYNCD_RPC_DBG)_RDEPENDS += $(SYNCD_RPC) $(eval $(call add_derived_package,$(LIBSAIREDIS),$(SYNCD_RPC_DBG))) +SYNCD_VS_DBG = syncd-vs-dbg_1.0.0_amd64.deb +$(SYNCD_VS_DBG)_DEPENDS += $(SYNCD_VS) +$(SYNCD_VS_DBG)_RDEPENDS += $(SYNCD_VS) +$(eval $(call add_derived_package,$(LIBSAIREDIS),$(SYNCD_VS_DBG))) + LIBSAIMETADATA_DBG = libsaimetadata-dbg_1.0.0_amd64.deb $(LIBSAIMETADATA_DBG)_DEPENDS += $(LIBSAIMETADATA) $(LIBSAIMETADATA_DBG)_RDEPENDS += $(LIBSAIMETADATA) diff --git a/slave.mk b/slave.mk index bbcdf4bc3599..46a43742a074 100644 --- a/slave.mk +++ b/slave.mk @@ -203,7 +203,7 @@ $(addprefix $(DEBS_PATH)/, $(SONIC_DPKG_DEBS)) : $(DEBS_PATH)/% : .platform $$(a # Build project pushd $($*_SRC_PATH) $(LOG) [ ! -f ./autogen.sh ] || ./autogen.sh $(LOG) - dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) $(LOG) + dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) -T$($*_DPKG_TARGET) $(LOG) popd $(LOG) # Clean up if [ -f $($*_SRC_PATH).patch/series ]; then pushd $($*_SRC_PATH) && quilt pop -a -f; popd; fi diff --git a/src/sonic-sairedis b/src/sonic-sairedis index e4d24276cb6f..4e778d233fc5 160000 --- a/src/sonic-sairedis +++ b/src/sonic-sairedis @@ -1 +1 @@ -Subproject commit e4d24276cb6fc7122f756c637f30ddea27487c70 +Subproject commit 4e778d233fc5541e568f156cc85a4ecda5ffd3de diff --git a/src/sonic-swss b/src/sonic-swss index bcdea1323e70..e07d86b100cc 160000 --- a/src/sonic-swss +++ b/src/sonic-swss @@ -1 +1 @@ -Subproject commit bcdea1323e70c73fa0a85c6df55eaed886bded81 +Subproject commit e07d86b100ccefe8b51e2c41b543cc93f33a0f13 From fde7b12b374c0ab81aa1c8588c526b34505e86e5 Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Tue, 17 Oct 2017 05:25:09 +0000 Subject: [PATCH 02/16] update sonic-sairedis --- src/sonic-sairedis | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-sairedis b/src/sonic-sairedis index 4e778d233fc5..b92de300d140 160000 --- a/src/sonic-sairedis +++ b/src/sonic-sairedis @@ -1 +1 @@ -Subproject commit 4e778d233fc5541e568f156cc85a4ecda5ffd3de +Subproject commit b92de300d14099e2cf43074593a896a6c2d095a8 From 83139215f20eafbc473dc0caabc5f9a2b69e303f Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Tue, 17 Oct 2017 05:29:26 +0000 Subject: [PATCH 03/16] bug fix: change libsairedis target --- platform/linux/docker-sonic-linux.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/linux/docker-sonic-linux.mk b/platform/linux/docker-sonic-linux.mk index 05af371d2ff3..baf487322ed4 100644 --- a/platform/linux/docker-sonic-linux.mk +++ b/platform/linux/docker-sonic-linux.mk @@ -1,6 +1,6 @@ # docker image for linux sonic docker image -LIBSAIREDIS_DPKG_TARGET = binary-syncd-vs +$(LIBSAIREDIS)_DPKG_TARGET = binary-syncd-vs DOCKER_SONIC_LINUX = docker-sonic-linux.gz $(DOCKER_SONIC_LINUX)_PATH = $(PLATFORM_PATH)/docker-sonic-linux From ff32e21dbd56aa7fd097ef912f0138c3b5850cf0 Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Tue, 17 Oct 2017 06:41:23 +0000 Subject: [PATCH 04/16] build docker-sonic-linux --- platform/linux/docker-sonic-linux.mk | 2 -- platform/linux/docker-sonic-linux/Dockerfile.j2 | 4 ++-- platform/linux/rules.mk | 1 + platform/linux/syncd-vs.mk | 13 +++++++++++++ rules/sairedis.mk | 13 ++++--------- slave.mk | 2 +- src/sonic-sairedis | 2 +- 7 files changed, 22 insertions(+), 15 deletions(-) create mode 100644 platform/linux/syncd-vs.mk diff --git a/platform/linux/docker-sonic-linux.mk b/platform/linux/docker-sonic-linux.mk index baf487322ed4..a182b9f4e22c 100644 --- a/platform/linux/docker-sonic-linux.mk +++ b/platform/linux/docker-sonic-linux.mk @@ -1,7 +1,5 @@ # docker image for linux sonic docker image -$(LIBSAIREDIS)_DPKG_TARGET = binary-syncd-vs - DOCKER_SONIC_LINUX = docker-sonic-linux.gz $(DOCKER_SONIC_LINUX)_PATH = $(PLATFORM_PATH)/docker-sonic-linux $(DOCKER_SONIC_LINUX)_DEPENDS += $(SWSS) $(SYNCD_VS) $(REDIS_SERVER) $(REDIS_TOOLS) $(LIBTEAMDCT) $(LIBTEAM_UTILS) diff --git a/platform/linux/docker-sonic-linux/Dockerfile.j2 b/platform/linux/docker-sonic-linux/Dockerfile.j2 index 1b8d1746b2bb..07f627c9dea2 100644 --- a/platform/linux/docker-sonic-linux/Dockerfile.j2 +++ b/platform/linux/docker-sonic-linux/Dockerfile.j2 @@ -8,13 +8,13 @@ RUN apt-get update 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 COPY \ -{% for deb in docker_sonic_p4_debs.split(' ') -%} +{% for deb in docker_sonic_linux_debs.split(' ') -%} debs/{{ deb }}{{' '}} {%- endfor -%} debs/ RUN dpkg -i \ -{% for deb in docker_sonic_p4_debs.split(' ') -%} +{% for deb in docker_sonic_linux_debs.split(' ') -%} debs/{{ deb }}{{' '}} {%- endfor %} diff --git a/platform/linux/rules.mk b/platform/linux/rules.mk index cf304352f0ee..8bee09f36375 100644 --- a/platform/linux/rules.mk +++ b/platform/linux/rules.mk @@ -1,3 +1,4 @@ +include $(PLATFORM_PATH)/syncd-vs.mk include $(PLATFORM_PATH)/docker-sonic-linux.mk SONIC_ALL += $(DOCKER_SONIC_LINUX) diff --git a/platform/linux/syncd-vs.mk b/platform/linux/syncd-vs.mk new file mode 100644 index 000000000000..49035aaf958b --- /dev/null +++ b/platform/linux/syncd-vs.mk @@ -0,0 +1,13 @@ +$(LIBSAIREDIS)_DPKG_TARGET = binary-syncd-vs + +# inject libsaivs and libsaivs_dev to swss build dependency +$(SWSS)_DEPENDS += $(LIBSAIVS) $(LIBSAIVS_DEV) + +SYNCD_VS = syncd-vs_1.0.0_amd64.deb +$(SYNCD_VS)_RDEPENDS += $(LIBSAIREDIS) $(LIBSAIMETADATA) $(LIBSAIVS) +$(eval $(call add_derived_package,$(LIBSAIREDIS),$(SYNCD_VS))) + +SYNCD_VS_DBG = syncd-vs-dbg_1.0.0_amd64.deb +$(SYNCD_VS_DBG)_DEPENDS += $(SYNCD_VS) +$(SYNCD_VS_DBG)_RDEPENDS += $(SYNCD_VS) +$(eval $(call add_derived_package,$(LIBSAIREDIS),$(SYNCD_VS_DBG))) diff --git a/rules/sairedis.mk b/rules/sairedis.mk index c3042283164b..5336122c04d3 100644 --- a/rules/sairedis.mk +++ b/rules/sairedis.mk @@ -15,6 +15,7 @@ $(eval $(call add_derived_package,$(LIBSAIREDIS),$(LIBSAIVS))) LIBSAIVS_DEV = libsaivs-dev_1.0.0_amd64.deb $(eval $(call add_derived_package,$(LIBSAIREDIS),$(LIBSAIVS_DEV))) +ifneq ($(CONFIGURED_PLATFORM),linux) SYNCD = syncd_1.0.0_amd64.deb $(SYNCD)_RDEPENDS += $(LIBSAIREDIS) $(LIBSAIMETADATA) $(eval $(call add_derived_package,$(LIBSAIREDIS),$(SYNCD))) @@ -22,10 +23,7 @@ $(eval $(call add_derived_package,$(LIBSAIREDIS),$(SYNCD))) SYNCD_RPC = syncd-rpc_1.0.0_amd64.deb $(SYNCD_RPC)_RDEPENDS += $(LIBSAIREDIS) $(LIBSAIMETADATA) $(eval $(call add_derived_package,$(LIBSAIREDIS),$(SYNCD_RPC))) - -SYNCD_VS = syncd-vs_1.0.0_amd64.deb -$(SYNCD_VS)_RDEPENDS += $(LIBSAIREDIS) $(LIBSAIMETADATA) $(LIBSAIVS) -$(eval $(call add_derived_package,$(LIBSAIREDIS),$(SYNCD_VS))) +endif LIBSAIMETADATA = libsaimetadata_1.0.0_amd64.deb $(eval $(call add_derived_package,$(LIBSAIREDIS),$(LIBSAIMETADATA))) @@ -44,6 +42,7 @@ $(LIBSAIVS_DBG)_DEPENDS += $(LIBSAIVS) $(LIBSAIVS_DBG)_RDEPENDS += $(LIBSAIVS) $(eval $(call add_derived_package,$(LIBSAIREDIS),$(LIBSAIVS_DBG))) +ifneq ($(CONFIGURED_PLATFORM),linux) SYNCD_DBG = syncd-dbg_1.0.0_amd64.deb $(SYNCD_DBG)_DEPENDS += $(SYNCD) $(SYNCD_DBG)_RDEPENDS += $(SYNCD) @@ -53,11 +52,7 @@ SYNCD_RPC_DBG = syncd-rpc-dbg_1.0.0_amd64.deb $(SYNCD_RPC_DBG)_DEPENDS += $(SYNCD_RPC) $(SYNCD_RPC_DBG)_RDEPENDS += $(SYNCD_RPC) $(eval $(call add_derived_package,$(LIBSAIREDIS),$(SYNCD_RPC_DBG))) - -SYNCD_VS_DBG = syncd-vs-dbg_1.0.0_amd64.deb -$(SYNCD_VS_DBG)_DEPENDS += $(SYNCD_VS) -$(SYNCD_VS_DBG)_RDEPENDS += $(SYNCD_VS) -$(eval $(call add_derived_package,$(LIBSAIREDIS),$(SYNCD_VS_DBG))) +endif LIBSAIMETADATA_DBG = libsaimetadata-dbg_1.0.0_amd64.deb $(LIBSAIMETADATA_DBG)_DEPENDS += $(LIBSAIMETADATA) diff --git a/slave.mk b/slave.mk index 46a43742a074..dd1b7186648c 100644 --- a/slave.mk +++ b/slave.mk @@ -203,7 +203,7 @@ $(addprefix $(DEBS_PATH)/, $(SONIC_DPKG_DEBS)) : $(DEBS_PATH)/% : .platform $$(a # Build project pushd $($*_SRC_PATH) $(LOG) [ ! -f ./autogen.sh ] || ./autogen.sh $(LOG) - dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) -T$($*_DPKG_TARGET) $(LOG) + dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) --as-root -T$($*_DPKG_TARGET) $(LOG) popd $(LOG) # Clean up if [ -f $($*_SRC_PATH).patch/series ]; then pushd $($*_SRC_PATH) && quilt pop -a -f; popd; fi diff --git a/src/sonic-sairedis b/src/sonic-sairedis index b92de300d140..99288bc9f477 160000 --- a/src/sonic-sairedis +++ b/src/sonic-sairedis @@ -1 +1 @@ -Subproject commit b92de300d14099e2cf43074593a896a6c2d095a8 +Subproject commit 99288bc9f4779033531610b20d8b8a639ff91013 From 18e806db670866dd0c7b07e6307e8cc1d9edf23f Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Tue, 17 Oct 2017 06:47:24 +0000 Subject: [PATCH 05/16] update gitmodules for sonic-sairedis --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 4bddfb4a60da..e647b0dfc3a3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -6,7 +6,7 @@ url = https://github.com/Azure/sonic-linux-kernel [submodule "sonic-sairedis"] path = src/sonic-sairedis - url = https://github.com/Azure/sonic-sairedis + url = https://github.com/lguohan/sonic-sairedis [submodule "sonic-swss"] path = src/sonic-swss url = https://github.com/Azure/sonic-swss From 5f0f1ad282c31af1f600eaea4f57d03f0984ed08 Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Thu, 19 Oct 2017 14:49:27 +0000 Subject: [PATCH 06/16] temp disable routing stack --- platform/linux/docker-sonic-linux.mk | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/platform/linux/docker-sonic-linux.mk b/platform/linux/docker-sonic-linux.mk index a182b9f4e22c..39a556debbd0 100644 --- a/platform/linux/docker-sonic-linux.mk +++ b/platform/linux/docker-sonic-linux.mk @@ -4,13 +4,13 @@ DOCKER_SONIC_LINUX = docker-sonic-linux.gz $(DOCKER_SONIC_LINUX)_PATH = $(PLATFORM_PATH)/docker-sonic-linux $(DOCKER_SONIC_LINUX)_DEPENDS += $(SWSS) $(SYNCD_VS) $(REDIS_SERVER) $(REDIS_TOOLS) $(LIBTEAMDCT) $(LIBTEAM_UTILS) -ifeq ($(ROUTING_STACK), quagga) -$(DOCKER_SONIC_LINUX)_DEPENDS += $(QUAGGA) -else ifeq ($(ROUTING_STACK), frr) -$(DOCKER_SONIC_LINUX)_DEPENDS += $(FRR) -else -$(DOCKER_SONIC_LINUX)_DEPENDS += $(GOBGP) -endif - +#ifeq ($(ROUTING_STACK),quagga) +#$(DOCKER_SONIC_LINUX)_DEPENDS += $(QUAGGA) +#else ifeq ($(ROUTING_STACK), frr) +#$(DOCKER_SONIC_LINUX)_DEPENDS += $(FRR) +#else +#$(DOCKER_SONIC_LINUX)_DEPENDS += $(GOBGP) +#endif +# $(DOCKER_SONIC_LINUX)_LOAD_DOCKERS += $(DOCKER_BASE) SONIC_DOCKER_IMAGES += $(DOCKER_SONIC_LINUX) From 789a32bc291665a81745bf2dfedd28687f059514 Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Fri, 20 Oct 2017 15:13:31 +0000 Subject: [PATCH 07/16] add quagga and sonic-cfggen into the sonic-docker-linux --- platform/linux/docker-sonic-linux.mk | 18 +++++++------- .../linux/docker-sonic-linux/Dockerfile.j2 | 24 +++++++++++++++++-- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/platform/linux/docker-sonic-linux.mk b/platform/linux/docker-sonic-linux.mk index 39a556debbd0..85972cb20d98 100644 --- a/platform/linux/docker-sonic-linux.mk +++ b/platform/linux/docker-sonic-linux.mk @@ -4,13 +4,13 @@ DOCKER_SONIC_LINUX = docker-sonic-linux.gz $(DOCKER_SONIC_LINUX)_PATH = $(PLATFORM_PATH)/docker-sonic-linux $(DOCKER_SONIC_LINUX)_DEPENDS += $(SWSS) $(SYNCD_VS) $(REDIS_SERVER) $(REDIS_TOOLS) $(LIBTEAMDCT) $(LIBTEAM_UTILS) -#ifeq ($(ROUTING_STACK),quagga) -#$(DOCKER_SONIC_LINUX)_DEPENDS += $(QUAGGA) -#else ifeq ($(ROUTING_STACK), frr) -#$(DOCKER_SONIC_LINUX)_DEPENDS += $(FRR) -#else -#$(DOCKER_SONIC_LINUX)_DEPENDS += $(GOBGP) -#endif -# -$(DOCKER_SONIC_LINUX)_LOAD_DOCKERS += $(DOCKER_BASE) +ifeq ($(SONIC_ROUTING_STACK), quagga) +$(DOCKER_SONIC_LINUX)_DEPENDS += $(QUAGGA) +else ifeq ($(SONIC_ROUTING_STACK), frr) +$(DOCKER_SONIC_LINUX)_DEPENDS += $(FRR) +else +$(DOCKER_SONIC_LINUX)_DEPENDS += $(GOBGP) +endif + +$(DOCKER_SONIC_LINUX)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE) SONIC_DOCKER_IMAGES += $(DOCKER_SONIC_LINUX) diff --git a/platform/linux/docker-sonic-linux/Dockerfile.j2 b/platform/linux/docker-sonic-linux/Dockerfile.j2 index 07f627c9dea2..67efa0fd9331 100644 --- a/platform/linux/docker-sonic-linux/Dockerfile.j2 +++ b/platform/linux/docker-sonic-linux/Dockerfile.j2 @@ -1,11 +1,31 @@ -FROM docker-base +FROM docker-config-engine ## Make apt-get non-interactive ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update -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 +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 COPY \ {% for deb in docker_sonic_linux_debs.split(' ') -%} From 9feb12b63ac9d3542d6cdbbd6d099874de2d03ac Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Sun, 22 Oct 2017 00:57:09 +0000 Subject: [PATCH 08/16] reset to azure sonic-sairedis --- .gitmodules | 2 +- platform/linux/docker-sonic-linux/Dockerfile.j2 | 8 +------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/.gitmodules b/.gitmodules index e647b0dfc3a3..4bddfb4a60da 100644 --- a/.gitmodules +++ b/.gitmodules @@ -6,7 +6,7 @@ url = https://github.com/Azure/sonic-linux-kernel [submodule "sonic-sairedis"] path = src/sonic-sairedis - url = https://github.com/lguohan/sonic-sairedis + url = https://github.com/Azure/sonic-sairedis [submodule "sonic-swss"] path = src/sonic-swss url = https://github.com/Azure/sonic-swss diff --git a/platform/linux/docker-sonic-linux/Dockerfile.j2 b/platform/linux/docker-sonic-linux/Dockerfile.j2 index 67efa0fd9331..31964cf5e37c 100644 --- a/platform/linux/docker-sonic-linux/Dockerfile.j2 +++ b/platform/linux/docker-sonic-linux/Dockerfile.j2 @@ -38,17 +38,11 @@ RUN dpkg -i \ debs/{{ deb }}{{' '}} {%- endfor %} -ADD port_config.ini /port_config.ini -ADD startup.sh /scripts/startup.sh - -ADD rsyslog.conf /etc/rsyslog.conf - ## Clean up RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y RUN rm -rf /debs -RUN sed -ri 's/^daemonize yes$/daemonize no/; \ - s/^logfile .*$/logfile ""/; \ +RUN sed -ri 's/^logfile .*$/logfile ""/; \ s/^# syslog-enabled no$/syslog-enabled no/; \ s/^# unixsocket/unixsocket/ \ ' /etc/redis/redis.conf From 851d31602f6e96ed25cf35cbc545326040e0a293 Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Sun, 22 Oct 2017 00:59:39 +0000 Subject: [PATCH 09/16] update sonic-swss-common --- .../linux/docker-sonic-linux/port_config.ini | 5 -- .../linux/docker-sonic-linux/rsyslog.conf | 67 ------------------- platform/linux/docker-sonic-linux/startup.sh | 43 ------------ 3 files changed, 115 deletions(-) delete mode 100644 platform/linux/docker-sonic-linux/port_config.ini delete mode 100644 platform/linux/docker-sonic-linux/rsyslog.conf delete mode 100755 platform/linux/docker-sonic-linux/startup.sh diff --git a/platform/linux/docker-sonic-linux/port_config.ini b/platform/linux/docker-sonic-linux/port_config.ini deleted file mode 100644 index 574f8f976ef9..000000000000 --- a/platform/linux/docker-sonic-linux/port_config.ini +++ /dev/null @@ -1,5 +0,0 @@ -# alias lanes -Ethernet0 1 -Ethernet1 2 -Ethernet2 3 -Ethernet3 4 diff --git a/platform/linux/docker-sonic-linux/rsyslog.conf b/platform/linux/docker-sonic-linux/rsyslog.conf deleted file mode 100644 index 3480e18f9998..000000000000 --- a/platform/linux/docker-sonic-linux/rsyslog.conf +++ /dev/null @@ -1,67 +0,0 @@ -############################################################################### -# Managed by Ansible -# file: ansible/roles/acs/templates/rsyslog.conf.j2 -############################################################################### -# -# /etc/rsyslog.conf Configuration file for rsyslog. -# -# For more information see -# /usr/share/doc/rsyslog-doc/html/rsyslog_conf.html - - -################# -#### MODULES #### -################# - -$ModLoad imuxsock # provides support for local system logging -#$ModLoad imklog # provides kernel logging support -#$ModLoad immark # provides --MARK-- message capability - -# provides UDP syslog reception -#$ModLoad imudp -#$UDPServerRun 514 - -# provides TCP syslog reception -#$ModLoad imtcp -#$InputTCPServerRun 514 - - -########################### -#### GLOBAL DIRECTIVES #### -########################### -#Set remote syslog server -*.* @172.17.0.1:514 - -# -# Use traditional timestamp format. -# To enable high precision timestamps, comment out the following line. -# -#$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat - -# Define a custom template -$template SONiCFileFormat,"%TIMESTAMP%.%timestamp:::date-subseconds% %HOSTNAME% %syslogseverity-text:::uppercase% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n" -$ActionFileDefaultTemplate SONiCFileFormat - -# -# Set the default permissions for all log files. -# -$FileOwner root -$FileGroup adm -$FileCreateMode 0640 -$DirCreateMode 0755 -$Umask 0022 - -# -# Where to place spool and state files -# -$WorkDirectory /var/spool/rsyslog - -# -# Include all config files in /etc/rsyslog.d/ -# -$IncludeConfig /etc/rsyslog.d/*.conf - - -############### -#### RULES #### -############### diff --git a/platform/linux/docker-sonic-linux/startup.sh b/platform/linux/docker-sonic-linux/startup.sh deleted file mode 100755 index 18cd4716580b..000000000000 --- a/platform/linux/docker-sonic-linux/startup.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash - -echo "Set onie_platform to x86_64-barefoot_p4-r0" -export onie_platform=x86_64-barefoot_p4-r0 - -echo "Start rsyslog" -rm -f /var/run/rsyslogd.pid -service rsyslog start - -echo "Start redis server" -service redis-server start - -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 - -echo "Start BMV2" -/run_bm.sh > /tmp/run_bm.log 2>&1 & -sleep 15 - -redis-cli -n 1 set LOGLEVEL DEBUG - -echo "Start Syncd" -syncd -N > /tmp/syncd.log 2>&1 & -sleep 10 - -echo "Start Orchagent" -orchagent $* > /tmp/orchagent.log 2>&1 & -sleep 10 - -echo "Start Portsyncd" -portsyncd -p /port_config.ini > /tmp/portsyncd.log 2>&1 & - -echo "Start Intfsync" -intfsyncd > /tmp/intfsyncd.log 2>&1 & - -echo "Start Neighsyncd" -neighsyncd > /tmp/neighsyncd.log 2>&1 & - -echo "Start Fpmsyncd" -fpmsyncd > /tmp/fpmsyncd.log 2>&1 & From 7e38b71eb82481aff201487bbb7c3127cc9f414c Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Sun, 22 Oct 2017 01:02:53 +0000 Subject: [PATCH 10/16] update sonic-sairedis --- src/sonic-sairedis | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-sairedis b/src/sonic-sairedis index 99288bc9f477..f5d9c8364f5f 160000 --- a/src/sonic-sairedis +++ b/src/sonic-sairedis @@ -1 +1 @@ -Subproject commit 99288bc9f4779033531610b20d8b8a639ff91013 +Subproject commit f5d9c8364f5fbcc487a5f1a3e3e6203ab2293a83 From 26df16216ef48bd9db2bf8b193cd2cf7b597aed9 Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Mon, 23 Oct 2017 08:29:49 +0000 Subject: [PATCH 11/16] use supervisord.conf --- platform/linux/docker-sonic-linux.mk | 2 +- .../linux/docker-sonic-linux/50-default.conf | 68 +++++++++++++++++++ .../linux/docker-sonic-linux/Dockerfile.j2 | 10 ++- .../linux/docker-sonic-linux/brcm.profile.ini | 4 ++ .../linux/docker-sonic-linux/orchagent.sh | 15 ++++ platform/linux/docker-sonic-linux/start.sh | 33 +++++++++ .../linux/docker-sonic-linux/supervisord.conf | 68 +++++++++++++++++++ 7 files changed, 197 insertions(+), 3 deletions(-) create mode 100644 platform/linux/docker-sonic-linux/50-default.conf create mode 100644 platform/linux/docker-sonic-linux/brcm.profile.ini create mode 100755 platform/linux/docker-sonic-linux/orchagent.sh create mode 100755 platform/linux/docker-sonic-linux/start.sh create mode 100644 platform/linux/docker-sonic-linux/supervisord.conf diff --git a/platform/linux/docker-sonic-linux.mk b/platform/linux/docker-sonic-linux.mk index 85972cb20d98..ee1d6e4e2606 100644 --- a/platform/linux/docker-sonic-linux.mk +++ b/platform/linux/docker-sonic-linux.mk @@ -2,7 +2,7 @@ DOCKER_SONIC_LINUX = docker-sonic-linux.gz $(DOCKER_SONIC_LINUX)_PATH = $(PLATFORM_PATH)/docker-sonic-linux -$(DOCKER_SONIC_LINUX)_DEPENDS += $(SWSS) $(SYNCD_VS) $(REDIS_SERVER) $(REDIS_TOOLS) $(LIBTEAMDCT) $(LIBTEAM_UTILS) +$(DOCKER_SONIC_LINUX)_DEPENDS += $(SWSS) $(SYNCD_VS) $(REDIS_SERVER) $(REDIS_TOOLS) $(LIBTEAMDCT) $(LIBTEAM_UTILS) $(SONIC_DEVICE_DATA) ifeq ($(SONIC_ROUTING_STACK), quagga) $(DOCKER_SONIC_LINUX)_DEPENDS += $(QUAGGA) diff --git a/platform/linux/docker-sonic-linux/50-default.conf b/platform/linux/docker-sonic-linux/50-default.conf new file mode 100644 index 000000000000..d672d83af789 --- /dev/null +++ b/platform/linux/docker-sonic-linux/50-default.conf @@ -0,0 +1,68 @@ +# Default rules for rsyslog. +# +# For more information see rsyslog.conf(5) and /etc/rsyslog.conf + +# +# First some standard log files. Log by facility. +# +auth,authpriv.* /var/log/auth.log +*.*;auth,authpriv.none -/var/log/syslog +#cron.* /var/log/cron.log +#daemon.* -/var/log/daemon.log +kern.* -/var/log/kern.log +#lpr.* -/var/log/lpr.log +mail.* -/var/log/mail.log +#user.* -/var/log/user.log + +# +# Logging for the mail system. Split it up so that +# it is easy to write scripts to parse these files. +# +#mail.info -/var/log/mail.info +#mail.warn -/var/log/mail.warn +mail.err /var/log/mail.err + +# +# Logging for INN news system. +# +news.crit /var/log/news/news.crit +news.err /var/log/news/news.err +news.notice -/var/log/news/news.notice + +# +# Some "catch-all" log files. +# +#*.=debug;\ +# auth,authpriv.none;\ +# news.none;mail.none -/var/log/debug +#*.=info;*.=notice;*.=warn;\ +# auth,authpriv.none;\ +# cron,daemon.none;\ +# mail,news.none -/var/log/messages + +# +# Emergencies are sent to everybody logged in. +# +*.emerg :omusrmsg:* + +# +# I like to have messages displayed on the console, but only on a virtual +# console I usually leave idle. +# +#daemon,mail.*;\ +# news.=crit;news.=err;news.=notice;\ +# *.=debug;*.=info;\ +# *.=notice;*.=warn /dev/tty8 + +# The named pipe /dev/xconsole is for the `xconsole' utility. To use it, +# you must invoke `xconsole' with the `-file' option: +# +# $ xconsole -file /dev/xconsole [...] +# +# NOTE: adjust the list below, or you'll go crazy if you have a reasonably +# busy site.. +# +daemon.*;mail.*;\ + news.err;\ + *.=debug;*.=info;\ + *.=notice;*.=warn |/dev/xconsole diff --git a/platform/linux/docker-sonic-linux/Dockerfile.j2 b/platform/linux/docker-sonic-linux/Dockerfile.j2 index 31964cf5e37c..9585d64e592a 100644 --- a/platform/linux/docker-sonic-linux/Dockerfile.j2 +++ b/platform/linux/docker-sonic-linux/Dockerfile.j2 @@ -42,9 +42,15 @@ debs/{{ deb }}{{' '}} RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y RUN rm -rf /debs -RUN sed -ri 's/^logfile .*$/logfile ""/; \ +RUN sed -ri 's/^daemonize yes$/daemonize no/; \ + s/^logfile .*$/logfile ""/; \ s/^# syslog-enabled no$/syslog-enabled no/; \ s/^# unixsocket/unixsocket/ \ ' /etc/redis/redis.conf -ENTRYPOINT /bin/bash +COPY ["50-default.conf", "/etc/rsyslog.d/"] +COPY ["start.sh", "orchagent.sh", "/usr/bin/"] +COPY ["brcm.profile.ini", "/usr/share/sonic/device/vswitch/"] +COPY ["supervisord.conf", "/etc/supervisor/conf.d/"] + +ENTRYPOINT ["/usr/bin/supervisord"] diff --git a/platform/linux/docker-sonic-linux/brcm.profile.ini b/platform/linux/docker-sonic-linux/brcm.profile.ini new file mode 100644 index 000000000000..23cd24c73a35 --- /dev/null +++ b/platform/linux/docker-sonic-linux/brcm.profile.ini @@ -0,0 +1,4 @@ +SAI_WARM_BOOT_READ_FILE=/var/cache/sai_warmboot.bin +SAI_WARM_BOOT_WRITE_FILE=/var/cache/sai_warmboot.bin +SAI_VS_SWITCH_TYPE=SAI_VS_SWITCH_TYPE_BCM56850 +SAI_VS_HOSTIF_USE_TAP_DEVICE=true diff --git a/platform/linux/docker-sonic-linux/orchagent.sh b/platform/linux/docker-sonic-linux/orchagent.sh new file mode 100755 index 000000000000..7e250dfa20e9 --- /dev/null +++ b/platform/linux/docker-sonic-linux/orchagent.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +MAC_ADDRESS=`ip link show eth0 | grep ether | awk '{print $2}'` + +# Create a folder for SsWW record files +mkdir -p /var/log/swss +ORCHAGENT_ARGS="-d /var/log/swss " + +# Set orchagent pop batch size to 8192 +ORCHAGENT_ARGS+="-b 8192 " + +# Set mac address +ORCHAGENT_ARGS+="-m $MAC_ADDRESS" + +exec /usr/bin/orchagent ${ORCHAGENT_ARGS} diff --git a/platform/linux/docker-sonic-linux/start.sh b/platform/linux/docker-sonic-linux/start.sh new file mode 100755 index 000000000000..26633c24a70b --- /dev/null +++ b/platform/linux/docker-sonic-linux/start.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +mkdir -p /etc/swss/config.d/ + +# sonic-cfggen -m /etc/sonic/minigraph.xml -d -t /usr/share/sonic/templates/ipinip.json.j2 > /etc/swss/config.d/ipinip.json +# sonic-cfggen -m /etc/sonic/minigraph.xml -d -t /usr/share/sonic/templates/mirror.json.j2 > /etc/swss/config.d/mirror.json +# sonic-cfggen -m /etc/sonic/minigraph.xml -d -t /usr/share/sonic/templates/ports.json.j2 > /etc/swss/config.d/ports.json + +# export platform=`sonic-cfggen -v platform` + +rm -f /var/run/rsyslogd.pid + +supervisorctl start rsyslogd + +mkdir -p /var/run/redis + +supervisorctl start redis-server + +supervisorctl start syncd + +supervisorctl start orchagent + +supervisorctl start portsyncd + +supervisorctl start intfsyncd + +supervisorctl start neighsyncd + +# Start arp_update when VLAN exists +# VLAN=`sonic-cfggen -d -v 'VLAN.keys() | join(" ") if VLAN'` +# if [ "$VLAN" != "" ]; then +# supervisorctl start arp_update +# fi diff --git a/platform/linux/docker-sonic-linux/supervisord.conf b/platform/linux/docker-sonic-linux/supervisord.conf new file mode 100644 index 000000000000..35c56420b463 --- /dev/null +++ b/platform/linux/docker-sonic-linux/supervisord.conf @@ -0,0 +1,68 @@ +[supervisord] +logfile_maxbytes=1MB +logfile_backups=2 +nodaemon=true + +[program:start.sh] +command=/usr/bin/start.sh +priority=1 +autostart=true +autorestart=false +stdout_logfile=syslog +stderr_logfile=syslog + +[program:rsyslogd] +command=/usr/sbin/rsyslogd -n +priority=2 +autostart=false +autorestart=false +stdout_logfile=syslog +stderr_logfile=syslog + +[program:redis-server] +command=/usr/bin/redis-server /etc/redis/redis.conf +priority=3 +autostart=false +autorestart=false +stdout_logfile=syslog +stderr_logfile=syslog + +[program:syncd] +command=/usr/bin/syncd -uN -p /usr/share/sonic/device/vswitch/brcm.profile.ini +priority=4 +autostart=false +autorestart=false +stdout_logfile=syslog +stderr_logfile=syslog + +[program:orchagent] +command=/usr/bin/orchagent.sh +priority=5 +autostart=false +autorestart=false +stdout_logfile=syslog +stderr_logfile=syslog + +[program:portsyncd] +command=/usr/bin/portsyncd -p /usr/share/sonic/device/x86_64-dell_s6000_s1220-r0/Force10-S6000/port_config.ini +priority=6 +autostart=false +autorestart=false +stdout_logfile=syslog +stderr_logfile=syslog + +[program:intfsyncd] +command=/usr/bin/intfsyncd +priority=7 +autostart=false +autorestart=false +stdout_logfile=syslog +stderr_logfile=syslog + +[program:neighsyncd] +command=/usr/bin/neighsyncd +priority=8 +autostart=false +autorestart=false +stdout_logfile=syslog +stderr_logfile=syslog From 8676f520389f7c32e6d8d87dc2efba4aec94e2f1 Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Mon, 23 Oct 2017 09:31:56 +0000 Subject: [PATCH 12/16] add README.md for virtual switch --- platform/linux/README.md | 17 ++++++++++++++++ platform/linux/create_vnet.sh | 37 +++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 platform/linux/README.md create mode 100755 platform/linux/create_vnet.sh diff --git a/platform/linux/README.md b/platform/linux/README.md new file mode 100644 index 000000000000..566d60e65574 --- /dev/null +++ b/platform/linux/README.md @@ -0,0 +1,17 @@ +HOWTO Use Virtual Switch + + +1. Create a docker with 32 front panel port + +``` +docker run -id --name sw debian bash +sudo ./create_vnet.sh sw +``` + +2. Create sonic virtual switch docker + +``` +docker run --privileged --network container:sw -d docker-sonic-linux +``` + +3. Run test in virtual switch docker (TBD) diff --git a/platform/linux/create_vnet.sh b/platform/linux/create_vnet.sh new file mode 100755 index 000000000000..f9fb8463327d --- /dev/null +++ b/platform/linux/create_vnet.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +SWNAME=$1 + +pid=$(docker inspect --format '{{.State.Pid}}' $SWNAME) + +echo Seting up servers + +SERVERS=31 + +for srv in `seq 0 $SERVERS`; do + + SRV="$SWNAME-srv$srv" + + NSS="ip netns exec $SRV" + + ip netns add $SRV + + $NSS ip addr add 127.0.0.1/8 dev lo + $NSS ip addr add ::1/128 dev lo + $NSS ip link set dev lo up + + # add virtual link between neighbor and the virtual switch docker + + IF="vEthernet$((srv*4))" + + ip link add ${SRV}eth0 type veth peer name $IF + ip link set ${SRV}eth0 netns $SRV + ip link set $IF netns ${pid} + + echo "Bring ${SRV}eth0 up" + $NSS ip link set dev ${SRV}eth0 up + + echo "Bring $IF up in the virtual switch docker" + nsenter -t $pid -n ip link set dev $IF up + +done From 7f18809e6d0d8279bd7501dfd4a353abe11510ee Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Mon, 23 Oct 2017 09:40:07 +0000 Subject: [PATCH 13/16] change to eth0 in the server namespace --- platform/linux/create_vnet.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/platform/linux/create_vnet.sh b/platform/linux/create_vnet.sh index f9fb8463327d..857a61b52cc5 100755 --- a/platform/linux/create_vnet.sh +++ b/platform/linux/create_vnet.sh @@ -29,7 +29,8 @@ for srv in `seq 0 $SERVERS`; do ip link set $IF netns ${pid} echo "Bring ${SRV}eth0 up" - $NSS ip link set dev ${SRV}eth0 up + $NSS ip link set dev ${SRV}eth0 name eth0 + $NSS ip link set dev eth0 up echo "Bring $IF up in the virtual switch docker" nsenter -t $pid -n ip link set dev $IF up From 20a38e7b08f549dd3982a910ff56aa093d7c8a49 Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Tue, 24 Oct 2017 03:19:44 +0000 Subject: [PATCH 14/16] only use -T in dpkg-buildpackage when _DPKG_TARGET is defined --- slave.mk | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/slave.mk b/slave.mk index dd1b7186648c..a01739f09c71 100644 --- a/slave.mk +++ b/slave.mk @@ -203,7 +203,10 @@ $(addprefix $(DEBS_PATH)/, $(SONIC_DPKG_DEBS)) : $(DEBS_PATH)/% : .platform $$(a # Build project pushd $($*_SRC_PATH) $(LOG) [ ! -f ./autogen.sh ] || ./autogen.sh $(LOG) - dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) --as-root -T$($*_DPKG_TARGET) $(LOG) + $(if $($*_DPKG_TARGET), + dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) --as-root -T$($*_DPKG_TARGET) $(LOG), + dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) $(LOG), + ) popd $(LOG) # Clean up if [ -f $($*_SRC_PATH).patch/series ]; then pushd $($*_SRC_PATH) && quilt pop -a -f; popd; fi From d5a4235b8cb1eb68d8c9e43dcd2ac11ae1445d7b Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Tue, 24 Oct 2017 03:30:18 +0000 Subject: [PATCH 15/16] change docker-sonic-linux to docker-sonic-vs --- platform/linux/docker-sonic-linux.mk | 16 ------ platform/linux/rules.mk | 4 -- platform/{linux => vs}/README.md | 2 +- platform/{linux => vs}/create_vnet.sh | 0 platform/vs/docker-sonic-vs.mk | 16 ++++++ .../docker-sonic-vs}/50-default.conf | 0 platform/vs/docker-sonic-vs/Dockerfile | 51 +++++++++++++++++++ .../docker-sonic-vs}/Dockerfile.j2 | 4 +- .../docker-sonic-vs}/brcm.profile.ini | 0 .../docker-sonic-vs}/orchagent.sh | 0 .../docker-sonic-vs}/start.sh | 0 .../docker-sonic-vs}/supervisord.conf | 0 platform/vs/rules.mk | 4 ++ platform/{linux => vs}/syncd-vs.mk | 0 rules/sairedis.mk | 4 +- 15 files changed, 76 insertions(+), 25 deletions(-) delete mode 100644 platform/linux/docker-sonic-linux.mk delete mode 100644 platform/linux/rules.mk rename platform/{linux => vs}/README.md (77%) rename platform/{linux => vs}/create_vnet.sh (100%) create mode 100644 platform/vs/docker-sonic-vs.mk rename platform/{linux/docker-sonic-linux => vs/docker-sonic-vs}/50-default.conf (100%) create mode 100644 platform/vs/docker-sonic-vs/Dockerfile rename platform/{linux/docker-sonic-linux => vs/docker-sonic-vs}/Dockerfile.j2 (94%) rename platform/{linux/docker-sonic-linux => vs/docker-sonic-vs}/brcm.profile.ini (100%) rename platform/{linux/docker-sonic-linux => vs/docker-sonic-vs}/orchagent.sh (100%) rename platform/{linux/docker-sonic-linux => vs/docker-sonic-vs}/start.sh (100%) rename platform/{linux/docker-sonic-linux => vs/docker-sonic-vs}/supervisord.conf (100%) create mode 100644 platform/vs/rules.mk rename platform/{linux => vs}/syncd-vs.mk (100%) diff --git a/platform/linux/docker-sonic-linux.mk b/platform/linux/docker-sonic-linux.mk deleted file mode 100644 index ee1d6e4e2606..000000000000 --- a/platform/linux/docker-sonic-linux.mk +++ /dev/null @@ -1,16 +0,0 @@ -# docker image for linux sonic docker image - -DOCKER_SONIC_LINUX = docker-sonic-linux.gz -$(DOCKER_SONIC_LINUX)_PATH = $(PLATFORM_PATH)/docker-sonic-linux -$(DOCKER_SONIC_LINUX)_DEPENDS += $(SWSS) $(SYNCD_VS) $(REDIS_SERVER) $(REDIS_TOOLS) $(LIBTEAMDCT) $(LIBTEAM_UTILS) $(SONIC_DEVICE_DATA) - -ifeq ($(SONIC_ROUTING_STACK), quagga) -$(DOCKER_SONIC_LINUX)_DEPENDS += $(QUAGGA) -else ifeq ($(SONIC_ROUTING_STACK), frr) -$(DOCKER_SONIC_LINUX)_DEPENDS += $(FRR) -else -$(DOCKER_SONIC_LINUX)_DEPENDS += $(GOBGP) -endif - -$(DOCKER_SONIC_LINUX)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE) -SONIC_DOCKER_IMAGES += $(DOCKER_SONIC_LINUX) diff --git a/platform/linux/rules.mk b/platform/linux/rules.mk deleted file mode 100644 index 8bee09f36375..000000000000 --- a/platform/linux/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -include $(PLATFORM_PATH)/syncd-vs.mk -include $(PLATFORM_PATH)/docker-sonic-linux.mk - -SONIC_ALL += $(DOCKER_SONIC_LINUX) diff --git a/platform/linux/README.md b/platform/vs/README.md similarity index 77% rename from platform/linux/README.md rename to platform/vs/README.md index 566d60e65574..a7ec58856124 100644 --- a/platform/linux/README.md +++ b/platform/vs/README.md @@ -11,7 +11,7 @@ sudo ./create_vnet.sh sw 2. Create sonic virtual switch docker ``` -docker run --privileged --network container:sw -d docker-sonic-linux +docker run --privileged --network container:sw -d docker-sonic-vs ``` 3. Run test in virtual switch docker (TBD) diff --git a/platform/linux/create_vnet.sh b/platform/vs/create_vnet.sh similarity index 100% rename from platform/linux/create_vnet.sh rename to platform/vs/create_vnet.sh diff --git a/platform/vs/docker-sonic-vs.mk b/platform/vs/docker-sonic-vs.mk new file mode 100644 index 000000000000..b52965787149 --- /dev/null +++ b/platform/vs/docker-sonic-vs.mk @@ -0,0 +1,16 @@ +# docker image for virtual switch based sonic docker image + +DOCKER_SONIC_VS = docker-sonic-vs.gz +$(DOCKER_SONIC_VS)_PATH = $(PLATFORM_PATH)/docker-sonic-vs +$(DOCKER_SONIC_VS)_DEPENDS += $(SWSS) $(SYNCD_VS) $(REDIS_SERVER) $(REDIS_TOOLS) $(LIBTEAMDCT) $(LIBTEAM_UTILS) $(SONIC_DEVICE_DATA) + +ifeq ($(SONIC_ROUTING_STACK), quagga) +$(DOCKER_SONIC_VS)_DEPENDS += $(QUAGGA) +else ifeq ($(SONIC_ROUTING_STACK), frr) +$(DOCKER_SONIC_VS)_DEPENDS += $(FRR) +else +$(DOCKER_SONIC_VS)_DEPENDS += $(GOBGP) +endif + +$(DOCKER_SONIC_VS)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE) +SONIC_DOCKER_IMAGES += $(DOCKER_SONIC_VS) diff --git a/platform/linux/docker-sonic-linux/50-default.conf b/platform/vs/docker-sonic-vs/50-default.conf similarity index 100% rename from platform/linux/docker-sonic-linux/50-default.conf rename to platform/vs/docker-sonic-vs/50-default.conf diff --git a/platform/vs/docker-sonic-vs/Dockerfile b/platform/vs/docker-sonic-vs/Dockerfile new file mode 100644 index 000000000000..2a75868cd99d --- /dev/null +++ b/platform/vs/docker-sonic-vs/Dockerfile @@ -0,0 +1,51 @@ +FROM docker-config-engine + +## Make apt-get non-interactive +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update + +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 + +COPY \ +debs/libnl-route-3-200_3.2.27-1_amd64.deb debs/libnl-genl-3-200_3.2.27-1_amd64.deb debs/libnl-nf-3-200_3.2.27-1_amd64.deb debs/libhiredis0.13_0.13.3-2_amd64.deb debs/libnl-3-200_3.2.27-1_amd64.deb debs/libnl-cli-3-200_3.2.27-1_amd64.deb debs/libswsscommon_1.0.0_amd64.deb debs/libsairedis_1.0.0_amd64.deb debs/libsaimetadata_1.0.0_amd64.deb debs/libteam5_1.26-1_amd64.deb debs/libsaivs_1.0.0_amd64.deb debs/swss_1.0.0_amd64.deb debs/syncd-vs_1.0.0_amd64.deb debs/redis-server_3.2.4-1~bpo8+1_amd64.deb debs/redis-tools_3.2.4-1~bpo8+1_amd64.deb debs/libteamdctl0_1.26-1_amd64.deb debs/libteam-utils_1.26-1_amd64.deb debs/sonic-device-data_1.0-1_all.deb debs/quagga_0.99.24.1-2.1_amd64.deb debs/ + +RUN dpkg -i \ +debs/libnl-route-3-200_3.2.27-1_amd64.deb debs/libnl-genl-3-200_3.2.27-1_amd64.deb debs/libnl-nf-3-200_3.2.27-1_amd64.deb debs/libhiredis0.13_0.13.3-2_amd64.deb debs/libnl-3-200_3.2.27-1_amd64.deb debs/libnl-cli-3-200_3.2.27-1_amd64.deb debs/libswsscommon_1.0.0_amd64.deb debs/libsairedis_1.0.0_amd64.deb debs/libsaimetadata_1.0.0_amd64.deb debs/libteam5_1.26-1_amd64.deb debs/libsaivs_1.0.0_amd64.deb debs/swss_1.0.0_amd64.deb debs/syncd-vs_1.0.0_amd64.deb debs/redis-server_3.2.4-1~bpo8+1_amd64.deb debs/redis-tools_3.2.4-1~bpo8+1_amd64.deb debs/libteamdctl0_1.26-1_amd64.deb debs/libteam-utils_1.26-1_amd64.deb debs/sonic-device-data_1.0-1_all.deb debs/quagga_0.99.24.1-2.1_amd64.deb + +## Clean up +RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y +RUN rm -rf /debs + +RUN sed -ri 's/^daemonize yes$/daemonize no/; \ + s/^logfile .*$/logfile ""/; \ + s/^# syslog-enabled no$/syslog-enabled no/; \ + s/^# unixsocket/unixsocket/ \ + ' /etc/redis/redis.conf + +COPY ["50-default.conf", "/etc/rsyslog.d/"] +COPY ["start.sh", "orchagent.sh", "/usr/bin/"] +COPY ["brcm.profile.ini", "/usr/share/sonic/device/vswitch/"] +COPY ["supervisord.conf", "/etc/supervisor/conf.d/"] + +ENTRYPOINT ["/usr/bin/supervisord"] \ No newline at end of file diff --git a/platform/linux/docker-sonic-linux/Dockerfile.j2 b/platform/vs/docker-sonic-vs/Dockerfile.j2 similarity index 94% rename from platform/linux/docker-sonic-linux/Dockerfile.j2 rename to platform/vs/docker-sonic-vs/Dockerfile.j2 index 9585d64e592a..f6e784017f78 100644 --- a/platform/linux/docker-sonic-linux/Dockerfile.j2 +++ b/platform/vs/docker-sonic-vs/Dockerfile.j2 @@ -28,13 +28,13 @@ RUN apt-get install -y net-tools \ iproute COPY \ -{% for deb in docker_sonic_linux_debs.split(' ') -%} +{% for deb in docker_sonic_vs_debs.split(' ') -%} debs/{{ deb }}{{' '}} {%- endfor -%} debs/ RUN dpkg -i \ -{% for deb in docker_sonic_linux_debs.split(' ') -%} +{% for deb in docker_sonic_vs_debs.split(' ') -%} debs/{{ deb }}{{' '}} {%- endfor %} diff --git a/platform/linux/docker-sonic-linux/brcm.profile.ini b/platform/vs/docker-sonic-vs/brcm.profile.ini similarity index 100% rename from platform/linux/docker-sonic-linux/brcm.profile.ini rename to platform/vs/docker-sonic-vs/brcm.profile.ini diff --git a/platform/linux/docker-sonic-linux/orchagent.sh b/platform/vs/docker-sonic-vs/orchagent.sh similarity index 100% rename from platform/linux/docker-sonic-linux/orchagent.sh rename to platform/vs/docker-sonic-vs/orchagent.sh diff --git a/platform/linux/docker-sonic-linux/start.sh b/platform/vs/docker-sonic-vs/start.sh similarity index 100% rename from platform/linux/docker-sonic-linux/start.sh rename to platform/vs/docker-sonic-vs/start.sh diff --git a/platform/linux/docker-sonic-linux/supervisord.conf b/platform/vs/docker-sonic-vs/supervisord.conf similarity index 100% rename from platform/linux/docker-sonic-linux/supervisord.conf rename to platform/vs/docker-sonic-vs/supervisord.conf diff --git a/platform/vs/rules.mk b/platform/vs/rules.mk new file mode 100644 index 000000000000..28dba54a5a4e --- /dev/null +++ b/platform/vs/rules.mk @@ -0,0 +1,4 @@ +include $(PLATFORM_PATH)/syncd-vs.mk +include $(PLATFORM_PATH)/docker-sonic-vs.mk + +SONIC_ALL += $(DOCKER_SONIC_VS) diff --git a/platform/linux/syncd-vs.mk b/platform/vs/syncd-vs.mk similarity index 100% rename from platform/linux/syncd-vs.mk rename to platform/vs/syncd-vs.mk diff --git a/rules/sairedis.mk b/rules/sairedis.mk index 5336122c04d3..760d75c5a611 100644 --- a/rules/sairedis.mk +++ b/rules/sairedis.mk @@ -15,7 +15,7 @@ $(eval $(call add_derived_package,$(LIBSAIREDIS),$(LIBSAIVS))) LIBSAIVS_DEV = libsaivs-dev_1.0.0_amd64.deb $(eval $(call add_derived_package,$(LIBSAIREDIS),$(LIBSAIVS_DEV))) -ifneq ($(CONFIGURED_PLATFORM),linux) +ifneq ($(CONFIGURED_PLATFORM),vs) SYNCD = syncd_1.0.0_amd64.deb $(SYNCD)_RDEPENDS += $(LIBSAIREDIS) $(LIBSAIMETADATA) $(eval $(call add_derived_package,$(LIBSAIREDIS),$(SYNCD))) @@ -42,7 +42,7 @@ $(LIBSAIVS_DBG)_DEPENDS += $(LIBSAIVS) $(LIBSAIVS_DBG)_RDEPENDS += $(LIBSAIVS) $(eval $(call add_derived_package,$(LIBSAIREDIS),$(LIBSAIVS_DBG))) -ifneq ($(CONFIGURED_PLATFORM),linux) +ifneq ($(CONFIGURED_PLATFORM),vs) SYNCD_DBG = syncd-dbg_1.0.0_amd64.deb $(SYNCD_DBG)_DEPENDS += $(SYNCD) $(SYNCD_DBG)_RDEPENDS += $(SYNCD) From 30cee02ec61645923fdebb2205bbb85db1bcea69 Mon Sep 17 00:00:00 2001 From: Guohan Lu Date: Tue, 24 Oct 2017 03:34:46 +0000 Subject: [PATCH 16/16] fix syntax error for if in the makefile --- slave.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slave.mk b/slave.mk index a01739f09c71..114491b2f6b8 100644 --- a/slave.mk +++ b/slave.mk @@ -205,7 +205,7 @@ $(addprefix $(DEBS_PATH)/, $(SONIC_DPKG_DEBS)) : $(DEBS_PATH)/% : .platform $$(a [ ! -f ./autogen.sh ] || ./autogen.sh $(LOG) $(if $($*_DPKG_TARGET), dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) --as-root -T$($*_DPKG_TARGET) $(LOG), - dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) $(LOG), + dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS) $(LOG) ) popd $(LOG) # Clean up