Skip to content

Commit 4ff2f7d

Browse files
committed
[vs]: add vlan configuration support in virtual switch
1 parent d39dd39 commit 4ff2f7d

20 files changed

+173
-14
lines changed

dockers/docker-database/Dockerfile.j2

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,6 @@ RUN sed -ri 's/^(save .*$)/# \1/g;
3333
' /etc/redis/redis.conf
3434

3535
COPY ["supervisord.conf", "/etc/supervisor/conf.d/"]
36-
COPY ["configdb-load.sh", "/usr/bin/"]
36+
COPY ["files/configdb-load.sh", "/usr/bin/"]
3737

3838
ENTRYPOINT ["/usr/bin/supervisord"]

dockers/docker-orchagent/Dockerfile.j2

+2-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ debs/{{ deb }}{{' '}}
2626
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
2727
RUN rm -rf /debs
2828

29-
COPY ["arp_update", "start.sh", "orchagent.sh", "swssconfig.sh", "/usr/bin/"]
29+
COPY ["files/arp_update", "/usr/bin"]
30+
COPY ["start.sh", "orchagent.sh", "swssconfig.sh", "/usr/bin/"]
3031
COPY ["supervisord.conf", "/etc/supervisor/conf.d/"]
3132

3233
## Copy all Jinja2 template files into the templates folder
File renamed without changes.

platform/broadcom/docker-orchagent-brcm.mk

+1
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,4 @@ $(DOCKER_ORCHAGENT_BRCM)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro
1616
$(DOCKER_ORCHAGENT_BRCM)_RUN_OPT += -v /var/log/swss:/var/log/swss:rw
1717

1818
$(DOCKER_ORCHAGENT_BRCM)_BASE_IMAGE_FILES += swssloglevel:/usr/bin/swssloglevel
19+
$(DOCKER_ORCHAGENT_BRCM)_FILES += $(ARP_UPDATE_SCRIPT)

platform/cavium/docker-orchagent-cavm.mk

+1
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,4 @@ $(DOCKER_ORCHAGENT_CAVM)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro
1616
$(DOCKER_ORCHAGENT_CAVM)_RUN_OPT += -v /var/log/swss:/var/log/swss:rw
1717

1818
$(DOCKER_ORCHAGENT_CAVM)_BASE_IMAGE_FILES += swssloglevel:/usr/bin/swssloglevel
19+
$(DOCKER_ORCHAGENT_CAVM)_FILES += $(ARP_UPDATE_SCRIPT)

platform/centec/docker-orchagent-centec.mk

+1
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,4 @@ $(DOCKER_ORCHAGENT_CENTEC)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro
1616
$(DOCKER_ORCHAGENT_CENTEC)_RUN_OPT += -v /var/log/swss:/var/log/swss:rw
1717

1818
$(DOCKER_ORCHAGENT_CENTEC)_BASE_IMAGE_FILES += swssloglevel:/usr/bin/swssloglevel
19+
$(DOCKER_ORCHAGENT_CENTEC)_FILES += $(ARP_UPDATE_SCRIPT)

platform/marvell/docker-orchagent-mrvl.mk

+1
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,4 @@ $(DOCKER_ORCHAGENT_MRVL)_RUN_OPT += -v /host/machine.conf:/host/machine.conf
1515
$(DOCKER_ORCHAGENT_MRVL)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro
1616

1717
$(DOCKER_ORCHAGENT_MRVL)_BASE_IMAGE_FILES += swssloglevel:/usr/bin/swssloglevel
18+
$(DOCKER_ORCHAGENT_MRVL)_FILES += $(ARP_UPDATE_SCRIPT)

platform/mellanox/docker-orchagent-mlnx.mk

+1
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,4 @@ $(DOCKER_ORCHAGENT_MLNX)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro
1616
$(DOCKER_ORCHAGENT_MLNX)_RUN_OPT += -v /var/log/swss:/var/log/swss:rw
1717

1818
$(DOCKER_ORCHAGENT_MLNX)_BASE_IMAGE_FILES += swssloglevel:/usr/bin/swssloglevel
19+
$(DOCKER_ORCHAGENT_MLNX)_FILES += $(ARP_UPDATE_SCRIPT)

platform/vs/docker-sonic-vs.mk

+13-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,16 @@
22

33
DOCKER_SONIC_VS = docker-sonic-vs.gz
44
$(DOCKER_SONIC_VS)_PATH = $(PLATFORM_PATH)/docker-sonic-vs
5-
$(DOCKER_SONIC_VS)_DEPENDS += $(SWSS) $(SYNCD_VS) $(REDIS_SERVER) $(REDIS_TOOLS) $(PYTHON_SWSSCOMMON) $(LIBTEAMDCT) $(LIBTEAM_UTILS) $(SONIC_DEVICE_DATA)
5+
$(DOCKER_SONIC_VS)_DEPENDS += $(SWSS) \
6+
$(SYNCD_VS) \
7+
$(REDIS_SERVER) \
8+
$(REDIS_TOOLS) \
9+
$(PYTHON_SWSSCOMMON) \
10+
$(LIBTEAMDCT) \
11+
$(LIBTEAM_UTILS) \
12+
$(SONIC_DEVICE_DATA) \
13+
$(SONIC_UTILS) \
14+
$(IPROUTE2)
615

716
ifeq ($(SONIC_ROUTING_STACK), quagga)
817
$(DOCKER_SONIC_VS)_DEPENDS += $(QUAGGA)
@@ -12,5 +21,8 @@ else
1221
$(DOCKER_SONIC_VS)_DEPENDS += $(GOBGP)
1322
endif
1423

24+
$(DOCKER_SONIC_VS)_FILES += $(CONFIGDB_LOAD_SCRIPT) \
25+
$(ARP_UPDATE_SCRIPT)
26+
1527
$(DOCKER_SONIC_VS)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE)
1628
SONIC_DOCKER_IMAGES += $(DOCKER_SONIC_VS)

platform/vs/docker-sonic-vs/Dockerfile.j2

+17-1
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,13 @@ FROM docker-config-engine
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

811
RUN apt-get install -y net-tools \
12+
arping \
913
ethtool \
1014
tcpdump \
1115
ifupdown \
@@ -26,7 +30,15 @@ RUN apt-get install -y net-tools \
2630
openssh-server \
2731
libc-ares2 \
2832
iproute \
29-
libpython2.7
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
3042

3143
RUN pip install setuptools
3244
RUN pip install py2_ipaddress
@@ -51,14 +63,18 @@ RUN sed -ri 's/^(save .*$)/# \1/g;
5163
s/^logfile .*$/logfile ""/; \
5264
s/^# syslog-enabled no$/syslog-enabled no/; \
5365
s/^# unixsocket/unixsocket/; \
66+
s/notify-keyspace-events ""/notify-keyspace-events AKE/; \
5467
s/^client-output-buffer-limit pubsub [0-9]+mb [0-9]+mb [0-9]+/client-output-buffer-limit pubsub 0 0 0/ \
5568
' /etc/redis/redis.conf
5669

5770
COPY ["50-default.conf", "/etc/rsyslog.d/"]
5871
COPY ["start.sh", "orchagent.sh", "/usr/bin/"]
5972
COPY ["brcm.profile.ini", "/usr/share/sonic/device/vswitch/"]
6073
COPY ["supervisord.conf", "/etc/supervisor/conf.d/"]
74+
COPY ["files/configdb-load.sh", "/usr/bin/"]
75+
COPY ["files/arp_update", "/usr/bin"]
6176

6277
RUN echo "docker-sonic-vs" > /etc/hostname
78+
RUN touch /etc/quagga/zebra.conf
6379

6480
ENTRYPOINT ["/usr/bin/supervisord"]
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/vs/docker-sonic-vs/start.sh

+27-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,18 @@
1-
#!/usr/bin/env bash
1+
#!/usr/bin/env bash -e
2+
3+
# generate configuration
4+
5+
[ -d /etc/sonic ] || mkdir -p /etc/sonic
6+
7+
SYSTEM_MAC_ADDRESS=$(ip link show eth0 | grep ether | awk '{print $2}')
8+
sonic-cfggen -a '{"DEVICE_METADATA":{"localhost": {"mac": "'$SYSTEM_MAC_ADDRESS'"}}}' --print-data > /etc/sonic/init_cfg.json
9+
10+
if [ -f /etc/sonic/config_db.json ]; then
11+
sonic-cfggen -j /etc/sonic/config_db.json -j /etc/sonic/init_cfg.json --print-data > /tmp/config_db.json
12+
mv /tmp/config_db.json /etc/sonic/config_db.json
13+
else
14+
sonic-cfggen -j /etc/sonic/init_cfg.json --print-data > /etc/sonic/config_db.json
15+
fi
216

317
mkdir -p /etc/swss/config.d/
418

@@ -16,6 +30,8 @@ mkdir -p /var/run/redis
1630

1731
supervisorctl start redis-server
1832

33+
/usr/bin/configdb-load.sh
34+
1935
supervisorctl start syncd
2036

2137
supervisorctl start orchagent
@@ -30,8 +46,14 @@ supervisorctl start teamsyncd
3046

3147
supervisorctl start fpmsyncd
3248

49+
supervisorctl start intfmgrd
50+
51+
supervisorctl start vlanmgrd
52+
53+
supervisorctl start zebra
54+
3355
# Start arp_update when VLAN exists
34-
# VLAN=`sonic-cfggen -d -v 'VLAN.keys() | join(" ") if VLAN'`
35-
# if [ "$VLAN" != "" ]; then
36-
# supervisorctl start arp_update
37-
# fi
56+
VLAN=`sonic-cfggen -d -v 'VLAN.keys() | join(" ") if VLAN'`
57+
if [ "$VLAN" != "" ]; then
58+
supervisorctl start arp_update
59+
fi

platform/vs/docker-sonic-vs/supervisord.conf

+27-3
Original file line numberDiff line numberDiff line change
@@ -75,26 +75,50 @@ autorestart=false
7575
stdout_logfile=syslog
7676
stderr_logfile=syslog
7777

78+
[program:vlanmgrd]
79+
command=/usr/bin/vlanmgrd
80+
priority=10
81+
autostart=false
82+
autorestart=false
83+
stdout_logfile=syslog
84+
stderr_logfile=syslog
85+
86+
[program:intfmgrd]
87+
command=/usr/bin/intfmgrd
88+
priority=11
89+
autostart=false
90+
autorestart=false
91+
stdout_logfile=syslog
92+
stderr_logfile=syslog
93+
7894
[program:zebra]
7995
command=/usr/lib/quagga/zebra -A 127.0.0.1
80-
priority=10
96+
priority=12
8197
autostart=false
8298
autorestart=false
8399
stdout_logfile=syslog
84100
stderr_logfile=syslog
85101

86102
[program:bgpd]
87103
command=/usr/lib/quagga/bgpd -A 127.0.0.1 -F
88-
priority=11
104+
priority=13
89105
autostart=false
90106
autorestart=false
91107
stdout_logfile=syslog
92108
stderr_logfile=syslog
93109

94110
[program:fpmsyncd]
95111
command=/usr/bin/fpmsyncd
96-
priority=12
112+
priority=14
97113
autostart=false
98114
autorestart=false
99115
stdout_logfile=syslog
100116
stderr_logfile=syslog
117+
118+
[program:arp_update]
119+
command=bash -c "/usr/bin/arp_update; sleep 300"
120+
priority=15
121+
autostart=false
122+
autorestart=true
123+
stdout_logfile=syslog
124+
stderr_logfile=syslog

rules/docker-database.mk

+1
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ $(DOCKER_DATABASE)_RUN_OPT += --net=host --privileged -t
1212
$(DOCKER_DATABASE)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro
1313

1414
$(DOCKER_DATABASE)_BASE_IMAGE_FILES += redis-cli:/usr/bin/redis-cli
15+
$(DOCKER_DATABASE)_FILES += $(CONFIGDB_LOAD_SCRIPT)

rules/iproute2.mk

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# iproute2 package
2+
3+
IPROUTE2_VERSION = 4.9.0-1
4+
5+
IPROUTE2 = iproute2_$(IPROUTE2_VERSION)_amd64.deb
6+
$(IPROUTE2)_SRC_PATH = $(SRC_PATH)/iproute2
7+
SONIC_MAKE_DEBS += $(IPROUTE2)

rules/scripts.mk

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
2+
ARP_UPDATE_SCRIPT = arp_update
3+
$(ARP_UPDATE_SCRIPT)_PATH = files/scripts
4+
5+
CONFIGDB_LOAD_SCRIPT = configdb-load.sh
6+
$(CONFIGDB_LOAD_SCRIPT)_PATH = files/scripts
7+
8+
SONIC_COPY_FILES += $(CONFIGDB_LOAD_SCRIPT) \
9+
$(ARP_UPDATE_SCRIPT)
10+
11+

sonic-slave/Dockerfile

+11-1
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,17 @@ RUN apt-get update && apt-get install -y \
202202
libgtest-dev \
203203
cmake \
204204
# For python-based swsscommon
205-
swig3.0
205+
swig3.0 \
206+
# For iproute2
207+
cm-super-minimal \
208+
libatm1-dev \
209+
libelf-dev \
210+
libmnl-dev \
211+
libselinux1-dev \
212+
linuxdoc-tools \
213+
lynx \
214+
texlive-latex-extra \
215+
texlive-latex-recommended
206216

207217
# For linux build
208218
RUN apt-get -y build-dep linux

src/iproute2/Makefile

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
SHELL = /bin/bash
2+
.ONESHELL:
3+
.SHELLFLAGS += -e
4+
5+
IPROUTE2_VERSION = 4.9.0
6+
IPROUTE2_VERSION_FULL = $(IPROUTE2_VERSION)-1
7+
8+
MAIN_TARGET = iproute2_$(IPROUTE2_VERSION_FULL)_amd64.deb
9+
10+
$(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% :
11+
wget -O iproute2_$(IPROUTE2_VERSION).orig.tar.xz -N "https://sonicstorage.blob.core.windows.net/packages/iproute2_4.9.0.orig.tar.xz?sv=2015-04-05&sr=b&sig=9nvybd1xkXyRQbaG6Fy6wBazPA8IbZV0AO41GWXPEP8%3D&se=2154-10-23T11%3A59%3A00Z&sp=r"
12+
wget -O iproute2_$(IPROUTE2_VERSION_FULL).dsc -N "https://sonicstorage.blob.core.windows.net/packages/iproute2_4.9.0-1.dsc?sv=2015-04-05&sr=b&sig=m6FcMH9dOh8ggipBgOsONiXvDxoi6bfUO%2BxvidsMNMQ%3D&se=2154-10-23T11%3A59%3A53Z&sp=r"
13+
wget -O iproute2_$(IPROUTE2_VERSION_FULL).debian.tar.xz -N "https://sonicstorage.blob.core.windows.net/packages/iproute2_4.9.0-1.debian.tar.xz?sv=2015-04-05&sr=b&sig=U5NFuwG5C3vZXlUUNvoPMnKDtMKk66zbweA9rQYbEVY%3D&se=2154-10-23T12%3A00%3A15Z&sp=r"
14+
dpkg-source -x iproute2_$(IPROUTE2_VERSION_FULL).dsc
15+
16+
pushd iproute2-$(IPROUTE2_VERSION)
17+
dpkg-buildpackage -us -uc -b -j$(SONIC_CONFIG_MAKE_JOBS)
18+
popd
19+
20+
mv $* $(DEST)/

src/sonic-swss

0 commit comments

Comments
 (0)