BGP组件交互分析
- 内核中的bgp socket收到BGP更新报文,然后被上送到bgpd进程
- bgpd处理该报文,并通知zebra进程新增前缀和关联下一跳
- zebra确定该目的可达后,生成一个路由网络链接信息,并将该信息信息注入到内核中
- zebra进程通过fpm的接口将该该路由网络链接信息传递给fpmsyncd进程
- fpmsyncd将此状态推送到APPL_DB中
- orchagent订阅了(5)当中的message
- orchagent处理收到的信息,并调用sairedis APIs将新状态注入到ASIC_DB中
- syncd订阅orchagent生成的消息,并生成新的状态
- syncd调用SAI API将此状态注入到ASIC驱动的对应的状态
- 新的路由被写入硬件中,并进行转发
- bgpcfgd阅CONFIG_DB变化,通过vtysh下发配置到zebra/bgp等
DHCP_RELAY组件交互分析
- 设备起机后,dhcp_relay进程通过直接解析config_db.json里面相关的dhcp_relay的配置,然后Dhcp-relay docker里相关的配置文件/etc/supervisor/conf.d/docker-dhcp-relay.supervisord.conf
- /usr/bin/dhcp_relay.sh wait通过监听数据库里的接口状态,并动态获取接口的IP地址
- 当硬件收到一个dhcp报文(当报文是单播且单播地址非本地IP地址,则直接硬件转发,如果报文是广播或者且单播地址为本地IP,则上送到CPU),根据协议上送到CPU,CPU在根据对应的过滤规则,发送到内核空间对应的socker套接字,dhcp_relay进程从内核空间的dhcp的套件字获取到dhcp的数据包,并解析该数据包,是否转发或者丢弃
- dhcp_relay进程处理完数据包后,发到内核空间,由内核转发给硬件进行转发
host系统组件交互分析
/usr/bin/sensorspoll | 用于起机拉起sensorspoll.py |
---|---|
/usr/bin/sensorspoll.py | 周期性读取电源、风扇、子卡的mib信息,并写入STATE DB |
/usr/bin/hostcfgd | AAA配置下发 |
sshd | ssh远程登入和scp功能 |
/usr/bin/sensorspoll.py | 周期性读取电源、风扇、子卡的mib信息,并写入STATE DB |
/usr/bin/hostcfgd | AAA配置下发 |
sshd | ssh远程登入和scp功能。 |
/usr/sbin/rsyslogd | 日志记录 |
cli | 用户命令行交互, 并把对应的CLI写入到CONFIG DB |
/usr/sbin/ntpd | ntp主进程,用于和ntp server时间同步 |
/usr/local/bin/fancontrol.py | 锐捷风扇控制进程,由 device_i2c 启动 |
LLDP组件交互分析
- lldpmgrd订阅数据库中STATE_DB获取端口的实时状态,并同步给lldpd
- lldpd进程从内核空间的lldp的套件字获取到lldp的数据包,并解析此状态,lldp_syncd通过执行lldp cli命令获取到该状态
- lldp_syncd将该新状态发布到database中的APPL_DB
- SNMP使用订阅方式获取到该message的变动并进行处理
PMON组件交互分析
PMON doncker软件组件主要用于管理平台硬件,包括风扇,热传感器,SFP,收发器,pmon等,其交互流程主要如下:
- syseepromd进程从内核空间的syseepromd的套件字获取到数据包,并解析此状态,xcvrd/sysmonitor/pmon_syslog通过syseepromd提供的接口进行信息获取
- xcvrd/sysmonitor/