[FRR] Enable SNMP support (#2981)

This is a follow-up of sonic-snmpagent PR 92
Now that licensing issues have been solved FRR is distributed with SNMP
support compiled-in. This PR adds the last bits of configuration to get
the frr-snmp debian packages added to the docker container and the
config bits to enable the snmp module in FRR

This PR brings the functionality of being able to poll bgpd for routes
and peer status.

Signed-off-by: Michel Moriniaux <m.moriniaux@criteo.com>
This commit is contained in:
Michel Moriniaux 2019-06-19 01:24:42 -07:00 committed by lguohan
parent c67c29f7ae
commit 18544530d3
10 changed files with 30 additions and 5 deletions

View File

@ -41,5 +41,6 @@ RUN rm -rf /debs ~/.cache
COPY ["bgpcfgd", "start.sh", "/usr/bin/"] COPY ["bgpcfgd", "start.sh", "/usr/bin/"]
COPY ["*.j2", "/usr/share/sonic/templates/"] COPY ["*.j2", "/usr/share/sonic/templates/"]
COPY ["supervisord.conf", "/etc/supervisor/conf.d/"] COPY ["supervisord.conf", "/etc/supervisor/conf.d/"]
COPY ["snmp.conf", "/etc/snmp/frr.conf"]
ENTRYPOINT ["/usr/bin/supervisord"] ENTRYPOINT ["/usr/bin/supervisord"]

View File

@ -11,6 +11,7 @@ hostname {{ DEVICE_METADATA['localhost']['hostname'] }}
password zebra password zebra
log syslog informational log syslog informational
log facility local4 log facility local4
agentx
! enable password {# {{ en_passwd }} TODO: param needed #} ! enable password {# {{ en_passwd }} TODO: param needed #}
{% endblock system_init %} {% endblock system_init %}
! !

View File

@ -11,6 +11,7 @@ hostname {{ DEVICE_METADATA['localhost']['hostname'] }}
password zebra password zebra
log syslog informational log syslog informational
log facility local4 log facility local4
agentx
! enable password {# {{ en_passwd }} TODO: param needed #} ! enable password {# {{ en_passwd }} TODO: param needed #}
{% endblock system_init %} {% endblock system_init %}
! !

View File

@ -0,0 +1,7 @@
# This line allows the FRR docker to speak with the snmp container
# Make sure this line matches the one in the snmp docker
# snmp:/etc/snmp/snmpd.conf
# To verify this works you need to have a valid bgp daemon running and configured
# Check that a snmpwalk to 1.3.6.1.2.1.15 gives an output
# Further verification: 1.3.6.1.2.1.15.2.0 = INTEGER: 65000 the returned value should be the confiugred ASN
agentXSocket tcp:localhost:3161

View File

@ -31,7 +31,7 @@ stdout_logfile=syslog
stderr_logfile=syslog stderr_logfile=syslog
[program:zebra] [program:zebra]
command=/usr/lib/frr/zebra -A 127.0.0.1 -s 90000000 -M fpm command=/usr/lib/frr/zebra -A 127.0.0.1 -s 90000000 -M fpm -M snmp
priority=4 priority=4
autostart=false autostart=false
autorestart=false autorestart=false
@ -49,7 +49,7 @@ stdout_logfile=syslog
stderr_logfile=syslog stderr_logfile=syslog
[program:bgpd] [program:bgpd]
command=/usr/lib/frr/bgpd -A 127.0.0.1 command=/usr/lib/frr/bgpd -A 127.0.0.1 -M snmp
priority=5 priority=5
stopsignal=KILL stopsignal=KILL
autostart=false autostart=false

View File

@ -118,6 +118,14 @@ load 12 10 5
# #
# Run as an AgentX master agent # Run as an AgentX master agent
master agentx master agentx
# internal socket to allow extension to other docker containers
# Currently the other container using this is docker-fpm-frr
# make sure this line matches bgp:/etc/snmp/frr.conf
# please see testing procedure in the same file to verify this works
# to verify the SNMP docker side look for the following string in the log file:
# INFO snmp-subagent [ax_interface] INFO: Using agentx socket type tcp with path tcp:localhost:3161
# INFO supervisord snmp-subagent INFO:ax_interface:Using agentx socket type tcp with path tcp:localhost:3161
agentxsocket tcp:localhost:3161
# #
# SysDescription pass-through # SysDescription pass-through

View File

@ -2,7 +2,7 @@
DOCKER_FPM_FRR = docker-fpm-frr.gz DOCKER_FPM_FRR = docker-fpm-frr.gz
$(DOCKER_FPM_FRR)_PATH = $(DOCKERS_PATH)/docker-fpm-frr $(DOCKER_FPM_FRR)_PATH = $(DOCKERS_PATH)/docker-fpm-frr
$(DOCKER_FPM_FRR)_DEPENDS += $(FRR) $(SWSS) $(LIBYANG) $(DOCKER_FPM_FRR)_DEPENDS += $(FRR) $(FRR_SNMP) $(SWSS) $(LIBYANG)
$(DOCKER_FPM_FRR)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE_STRETCH) $(DOCKER_FPM_FRR)_LOAD_DOCKERS += $(DOCKER_CONFIG_ENGINE_STRETCH)
SONIC_DOCKER_IMAGES += $(DOCKER_FPM_FRR) SONIC_DOCKER_IMAGES += $(DOCKER_FPM_FRR)

View File

@ -18,4 +18,10 @@ $(eval $(call add_derived_package,$(FRR),$(FRR_PYTHONTOOLS)))
FRR_DBG = frr-dbgsym_$(FRR_VERSION)-sonic-$(FRR_SUBVERSION)_amd64.deb FRR_DBG = frr-dbgsym_$(FRR_VERSION)-sonic-$(FRR_SUBVERSION)_amd64.deb
$(eval $(call add_derived_package,$(FRR),$(FRR_DBG))) $(eval $(call add_derived_package,$(FRR),$(FRR_DBG)))
export FRR FRR_PYTHONTOOLS FRR_DBG FRR_SNMP = frr-snmp_$(FRR_VERSION)-sonic-$(FRR_SUBVERSION)_amd64.deb
$(eval $(call add_derived_package,$(FRR),$(FRR_SNMP)))
FRR_SNMP_DBG = frr-snmp-dbgsym_$(FRR_VERSION)-sonic-$(FRR_SUBVERSION)_amd64.deb
$(eval $(call add_derived_package,$(FRR),$(FRR_SNMP_DBG)))
export FRR FRR_PYTHONTOOLS FRR_DBG FRR_SNMP FRR_SNMP_DBG

View File

@ -8,6 +8,7 @@ hostname switch-t0
password zebra password zebra
log syslog informational log syslog informational
log facility local4 log facility local4
agentx
! enable password ! ! enable password !
! Enable link-detect (default disabled) ! Enable link-detect (default disabled)
interface PortChannel01 interface PortChannel01

View File

@ -3,7 +3,7 @@ SHELL = /bin/bash
.SHELLFLAGS += -e .SHELLFLAGS += -e
MAIN_TARGET = $(FRR) MAIN_TARGET = $(FRR)
DERIVED_TARGET = $(FRR_PYTHONTOOLS) $(FRR_DBG) DERIVED_TARGET = $(FRR_PYTHONTOOLS) $(FRR_DBG) $(FRR_SNMP) $(FRR_SNMP_DBG)
$(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% : $(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% :
# Build the package # Build the package