Open vSwitch数据包转发

如图3-1所示,Open vSwitch数据包转发流程如下:
(1)设置标准以太网接口模式为混杂模式[22],从标准以太网接口中截获数据包,提取出关键字段。如果能够匹配流表则转入(7),否则则转入(2).
(2)通过调用upcall函数,将数据包使用NetLink协议的封装,上传到用户空间。在Vswitchd模块中对NetLink消息解封装后,在ovsdb中进行查表匹配,如果能够匹配流表则转入(4),否则则转入(3)。
(3)通过 OpenFlow协议与控制器相通信,控制器下发流表项,Vswitchd模块通过解析流表项得到相应的动作,同时将流表项存储到ovsdb。
(4)将匹配的流表项组织成内核FlowTable表中的表项结构,并通过NetLink协议将流表项下发至内核中FlowTable中。
(6)通过调用reinject函数,将数据包使用NetLink进行封装,重新发回至内核。
(7)重新通过datapath模块进行流表项查找匹配。
(8)根据查找结果,指导数据包的转发。

Open vSwitch数据包转发_第1张图片

如图3-1所示。Open vSwitch架构分为两个大部分,用户态部件和内核态部件。在用户态Open vSwitch通过Vswitchd模块能够解析OpenFlow和sFlow协议,ovsdb能够存储流表项信息。在内核态,Open vSwitch使用datapath模块和FlowTable模块组成了一条快速数据包匹配的通路。其中datapath主要作用为解析网络数据包,FlowTable模块存储用户态Vswitchd模块通过NetLink协议下发下来的流表项。

参考文献:基于NetMagic平台的Ope_省略_vSwitch交换机的设计与实现_凌高源

 

你可能感兴趣的:(SDN)