Linux Bridge vlan filtering

2021-03-20
阅读 5 分钟
10.3k
linux网桥支持vlan filtering过滤功能后,我们不仔再需要通过子接口的形式进行vlan划分,简化了vlan配置。1. bridge vlan说明man bridge可以了解到,linux通过如下命令进行vlan filtering的配置: {代码...} 选项说明:pvid:端口的默认vlan,所有从该端口输入的没有携带vlan的报文,会被打上该vlan标签,该选项只对输入...

sonic vxlan整体架构

2019-08-21
阅读 5 分钟
8.7k
通过上面的配置,如果运行了BGP-EVPN协议的话,内核会通知BGP,本端创建了一个VTEP,BGP将会向邻居发送type-3类型的路由。可以在bdif上配置IP和MAC作为默认网关的IP和MAC,内核会通知BGP向邻居发布type-2类型的路由。

sonic消息传递机制与架构(3)

2019-07-27
阅读 9 分钟
5.7k
本章节主要分析sonic使用redis的键空间消息机制实现的消息传递框架,该机制区别于发布-订阅机制在于发布者不需要进行pubulish通知,只要往数据库中写入指定的键,redis就会通知监听了该键空间的客户端。该机制目前只用于监听config_db,用于监听config的变化。然后将其同步到app_db。使用该机制的案例有:VlanMgr,IntfM...

sonic消息传递机制与架构(2)

2019-07-27
阅读 22 分钟
7.7k
KEY_SET消息系统:该机制通过一个set集合传递key,通过publish命令通知有新的key产生。消费者通过key组合成一个hash表的key,用于获取真实的消息,set不保证顺序。样例如下所示:

sonic消息传递机制与架构(1)

2019-07-27
阅读 7 分钟
7.9k
sonic是一个网络操作系统,采用了大量的相互独立的第三方开源组件,这些组件在依赖,编译环境,库,配置方式都有很大的不同。为了让这些组件在sonic中相互协作,互不干扰,同时尽量不修改第三方组件的代码,sonic采用容器技术为各个组件提供独立的运行环境,通过容器间共享网络命名空间进行通信。各个第三组件有各自的配...

sonic orch调度系统之----orchagent

2019-07-27
阅读 5 分钟
5.6k
​ sonic核心守护线程orchagent以orch为单位进行资源管理,一个orch包含了一组相似的资源;orchagent调度系统以Executor为调度单位,调度实体有Consumer,ExecutableTimer等,本文分析一下sonic调度细节。

sonic orch调度系统之----orch

2019-07-27
阅读 9 分钟
5.5k
​ sonic orchagent线程的调度最小单位是Consumer。Consumer是在epoll事件Selectable的基础上的进一步封装,每一次发生epoll事件会触发orchagent进行一次调度。orch是资源的集合,一个orch可以包含多个Consumer,比如acl orch会监听多个redistable。

sonic orchagent与syncd之间的请求与应答

2019-07-11
阅读 16 分钟
8.2k
​ syncd进程是介于orchagent与driver之间的进程。syncd从asic-db中读取的数据经转换后调用驱动提供的sai接口进行下硬件,同时需要将驱动的应答进行一定的处理,还需要处理驱动的事件通知(比如端口up/down,mac老化等信息)。处理的消息如下图所示:

sonic orch调度系统(1)----select

2019-07-10
阅读 9 分钟
3.4k
​ 常见的服务器模型有多进程模型,多线程,IO多路复用,协程等模型。sonic的核心守护进程orchagent采用的是IO多路复用模型,早期的sonic采用的是select实现多路复用,后面的版本采用的是epoll。使用select(跟多路复用的select名字一样)类对底层进行了封装,屏蔽了差异。

sonic容器swss启动过程

2019-07-02
阅读 12 分钟
3k
sonic容器swss启动过程sonic业务进程都是运行在容器中的,那容器启动后是如何启动它的服务呢。要分析这个问题,首先要搞清楚容器构建过程。我们以docker-orchagent容器为例进行分析。Dockerfile文件sonic中的Dockerfile由Dockerfile.j2文件生成。docker-orchagent/Dockerfile.j2 {代码...} 从上面的配置来看,容器启动后...

sonic容器swss启动过程

2019-06-27
阅读 12 分钟
6k
sonic容器swss启动过程sonic业务进程都是运行在容器中的,那容器启动后是如何启动它的服务呢。要分析这个问题,首先要搞清楚容器构建过程。我们以docker-orchagent容器为例进行分析。Dockerfile文件sonic中的Dockerfile由Dockerfile.j2文件生成。docker-orchagent/Dockerfile.j2 {代码...} 从上面的配置来看,容器启动后...

sonic容器构建

2019-06-27
阅读 7 分钟
6.5k
sonic中大量的组件运行在docker容器中,用于隔离彼此的运行环境,从而解决相互之间的互斥问题。下面我们分析一下sonic中各个容器的构建过程。

SONIC VLAN配置流程

2019-06-27
阅读 18 分钟
5.5k
sonic vlan配置通过订阅config_db的键空间事件完成vlan配置信息从config_db到内核和硬件。config_db.json格式如下:

sonic管理口信息处理流程

2019-06-27
阅读 2 分钟
3k
管理信息使用MGMT_INTERFACE 表进行配置。对象的key由管理接口名字和IP前缀使用“|”连接而成。属性 gwaddr用于执行默认路由指向管理口,其值为默认网关。属性forced_mgmt_routes 用来强制添加一些路由到default路由表中。

sonic配置team与实现机制

2019-06-25
阅读 15 分钟
4.9k
sonic实现team代码框架图:sonic修改lag模式配置步骤1.修改文件teamd.j2 {代码...} 例如将动态模式改成静态模式:源文件: {代码...} 修改后的文件: {代码...} 2.重新加载配置该步骤会重启docker-teamd {代码...} LAG内核信息同步到APP_DB实现机制分析sonic的team采用的是开源team项目,详细信息参考:[链接]该部分有一...

sonic接口管理处理流程

2019-06-25
阅读 26 分钟
6.5k
同步config_db.json中接口IP信息到内核该部分通过redis的键空间机制订阅键config_db的键事件,将其同步到内核,本进程存在swss docker中。相关文件:intfmgrd.cppintfmgrd.hintfmgr.cppIntfMgr {代码...} 实现 {代码...} 响应内核接口IP信息变化到APP_DB前面分析过sonic对netlink的相关处理,此处不再赘述。该部分的主要...

sonic处理netlink事件

2019-06-25
阅读 7 分钟
5.8k
​ sonic在处理路由,接口up/down,接口地址变化,team等事件上极大的依赖内核。sonic通过监听rtnl事件来响应linux事件。从而感知相关信息变化。