在本节中,我们将迭代SONiC中发生的一系列步骤,以处理从eBGP对等方接收到的新路由。我们将假设此会话已经建立,并且我们正在学习一种新的路由,该路由使用直接连接的对等方作为其下一跳。
(0)在BGP容器初始化期间,zebra通过常规TCP套接字连接到fpmsyncd。在稳定/非瞬态条件下,zebra、linux内核、APPL_DB和ASIC_DB中保存的路由表应完全一致/等效。
(1) 一个新的TCP包到达内核空间中bgp的套接字。内核的网络堆栈最终将相关的有效负载交付给bgpd进程。
(2) Bgpd解析新数据包,处理bgp更新,并通知zebra此新前缀及其关联协议下一跳的存在。
(3) zebra确定此前缀的可行性/可达性(例如,现有转发nh)后,zebra生成路由netlink消息,将此新状态注入内核。
(4) Zebra利用FPM接口将此netlink路由消息传递给fpmsyncd。
(5) Fpmsyncd处理netlink消息并将此状态推送到APPL_DB。
(6) 作为APPL_DB消费者,它将接收先前推送到APPL_DB的信息内容。
(7) 在处理接收到的信息后,orchagentd将调用sairedis API将路由信息注入ASIC_DB。
(8) 当与ASIC_DB消费者同步时,它将接收orchagentd生成的新状态。
(9) Syncd将处理该信息并调用SAI API将该状态注入相应的asic驱动程序。
(10) 新的路线最终被推到了硬件上。
nfvschool 微信公共号: nfvschool
nfvschool网址: nfvschool.cn
Was this helpful?
0 / 0