Open vSwitch数据包转发

本文详细阐述了OpenvSwitch的数据包转发流程,包括从以太网接口截获数据包并匹配流表,利用NetLink协议上传数据包至用户空间进行处理,通过OpenFlow协议与控制器通信以获取流表项,以及如何将流表项存储于ovsdb并下发至内核的FlowTable。此外,还介绍了OpenvSwitch的架构组成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如图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)根据查找结果,指导数据包的转发。

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值