前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OPS漫谈之一:通过VLAN配置看OPS系统架构

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

作者头像
SDNLAB
发布2018-04-02 11:55:27
1.2K0
发布2018-04-02 11:55:27
举报
文章被收录于专栏:SDNLABSDNLAB

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的系统架构。文中提到的一些概念,没有深入展开,这些概念就留给对数通感兴趣的同学们去研究了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-06-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SDNLAB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档