OPS漫谈之一:通过VLAN配置看OPS系统架构

作者简介:陈玉强,盛科网络软件开发经理,目前主要投入在开源网络操作系统领域。

OPS(OpenSwitch)是个开源交换机项目,其开源社区(www.openswitch.net)由惠普主导,目前得到了越来越多的关注和认可。本文旨在通过梳理配置VLAN的流程,帮助大家对OPS的系统软件架构有个更深入和具体的认识。

OPS系统架构
图1是OPS官方给出的OPS系统架构图,从图中可以看出,OPS系统架构最重要的特点是以OVSDB为核心,是新型的数据驱动操作系统。关于数据驱动的话题,我们在后续的文章再来谈。对OpenFlow熟悉的同学对OVSDB一定不陌生,OPS其实就是复用了OVS的OVSDB模块,并做了一定的改造。

图1 OPS系统架构图

订阅-发布机制 在给出配置VLAN的流程前,首先要讲下OPS的数据同步概念。简单的说,OPS的OVSDB中保存系统所有的配置数据和运行数据,系统所有的其它模块要向OVSDB订阅表。比如,ops-vland这个进程是用来处理VLAN的,那么这个进程就要订阅VLAN这张表,而OVSDB内VLAN这张表一旦发生变化,OVSDB则把变化VLAN的数据发布给ops-vland,这就是“订阅-发布”机制。

向DB配置VLAN 完成VLAN的配置,涉及到下面几个进程。Vtysh,用于实现CLI;ops-vland,VLAN处理模块;ovsdb-server,OVSDB核心;ops-switchd,完成DB向芯片SDK的适配,实现芯片的配置。

图2描述了创建VLAN的配置流程,注意在这张图里还没有真正的配置芯片:

第一步:用户在CLI 的配置模式下输入创建VLAN命令行,Vtysh则本地创建VLAN表,然后把该VLAN表同步给ovsdb-server。这里有人会有疑问,到底什么是VLAN表。其实VLAN表就是一个C语言的结构体,具体到VLAN这张表,或者说具体到VLAN这个结构体来说,它定义了id、name、description等元素(有兴趣的同学要研究下OVSDB关于表和列的源码才会有更正确的认识),这我们容易理解,它还定义了hw_vlan_config元素,这个元素是用于控制是否配置芯片。注意此时表VLAN的hw_vlan_config是没有设置的。

第二步:ovsdb-server同步好VLAN表后,向所有订阅该表的进程发布该数据。这个例子就是把VLAN数据发布给ops-vland和ops-switchd两个进程。ops-switchd收到该VLAN数据后,检查’hw_vlan_config’没有置位,所以它不会向芯片添加该VLAN。

图2 向DB配置VLAN

向芯片配置VLAN 图3描述了完成配置芯片的流程。
第三步:当用户使能了这个VLAN,并且把某个端口加入这个VLAN后,其数据同步到ops-vland,ops-vland检查出此时应该向芯片添加该VLAN,就对该VLAN表置位’hw_vlan_config’。该置位数据同样会发布给OSVDB。

第四步:OVSDB把该VLAN表的’hw_vlan_config’置位数据同步给ops-switchd,ops-switchd检查’hw_vlan_config’置位后,通过plugin模块实现向芯片的配置。至此,芯片里真正完成了该VLAN的配置。

图3 向芯片配置VLAN

多说一句:图2和图3里都有一个’XXX Plugin’模块,这里有必要说下。Plugin模块是OPS系统实现软硬解耦的关键,不同厂家的芯片使用不同的Plugin代码。目前,Broadcom芯片使用的是opennsl plugin,Cavium芯片使用他们自己的xpliant plugin,Mellanox和盛科共同使用sai plugin。不同的plugin调用不同的芯片API接口,opennsl plugin调用OPENNSL接口,xpliant plugin调用cavium SDK接口,sai plugin调用SAI接口。

结束语
OPS是一个巨大的开源项目,作为白牌交换机领域最具竞争力的开源系统软件,它有很多独到的特点和优势。本文旨在通过一个配置VLAN的例子,向同学们介绍OPS的系统架构。文中提到的一些概念,没有深入展开,这些概念就留给对数通感兴趣的同学们去研究了。
 
注:投稿文章仅出于传递更多信息之目的,系SDNLAB《原创文章奖励计划》的投稿文章,仅供参考,不代表证实其描述或赞同其观点,投资者据此操作,风险自担;技术问题请留言指正。


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/17183.html
分享到:
相关文章
条评论

登录后才可以评论

shimaxiangru 发表于16-06-22
2