OVS与OVS+DPDK架构分析

OVS内核态架构图

 内核态与用户态交互

OVS的架構分成快速路徑(fast path)與慢速路徑(slow path)
快速路徑是內核空間(kernel space)的openvswitch.ko
慢速路徑是用戶空間(user space)的ovs-vswitchd

OVS+DPDK架构

 

 dpif-netdev:用户态的快速通路,实现了基于netdev设备的dpif API。

ofproto-dpif:实现了基于dpif层的ofproto API。

netdev-dpdk:实现了基于DPDK的netdev API,其定义的几种网络接口如下:

dpdk物理网口:其实现是采用高性能向量化DPDK PMD的驱动。

dpdkvhostuser接口: vhost-user可以挂接到用户态的数据通道上,与虚拟机的virtio网口快速通信。为了性能,在vhost burst收发包个数上,需要和dpdk物理网口设置的burst收发包个数相同。

 DPDK加速的OVS数据流转发的大致流程如下:

1)OVS的ovs-vswitchd接收到从OVS连接的某个网络端口发来的数据包,从数据包中提取源/目的IP、源/目的MAC、端口等信息。

2)OVS在用户态查看精确流表和模糊流表,如果命中,则直接转发。

3)如果还不命中,在SDN控制器接入的情况下,经过OpenFlow协议,通告给控制器,由控制器处理。

4)控制器下发新的流表,该数据包重新发起选路,匹配;报文转发,结束。

DPDK加速的OVS与原始OVS的区别在于,从OVS连接的某个网络端口接收到的报文不需要openvswitch.ko内核态的处理,报文通过DPDK PMD驱动直接到达用户态ovs-vswitchd里。

数据流向

从物理或虚拟接口进入OvS-DPDK的数据包会根据其标头字段接收唯一的标识符或哈希,然后将其与三个主要交换表之一中的条目进行匹配:精确匹配缓存(EMC),数据路径分类器(dpcls)或ofproto分类器。数据包的标识符将按顺序遍历这三个表中的每一个,除非找到匹配项,在这种情况下,将执行表中匹配规则指示的适当操作,并在完成所有操作后将数据包转发出交换机。

  这三个表具有不同的特性和相关的吞吐量性能/延迟。EMC为有限数量的表条目提供了最快的处理速度。数据包的标识符必须与该表中所有字段(源IP和端口,目标IP和端口以及协议的5元组)的条目完全匹配,以实现最快的处理,否则它将在EMC上“遗漏”并传递给dpcls。dpcls包含更多表条目(安排在多个子表中),并启用数据包标识符的通配符匹配(例如,指定了目标IP和端口,但允许任何源)。这大约提供了EMC吞吐量性能的一半,并且可以满足大量的表条目。

       dpcls上的未命中会导致将数据包标识符发送到ofproto分类器,以便OpenFlow控制器可以决定操作。该路径性能最低,比EMC慢10倍以上。ofproto分类器中的匹配导致在更快的交换表中建立新的表条目,以便可以更快地处理相同流中的后续数据包。

EMC插入概率

默认情况下,每100个流中有1个插入到精确匹配缓存(EMC)中。可以通过设置emc-insert-inv-prob选项改变此插入概率:

       ovs-vsctl --no-wait set Open_vSwitch . other_config:emc-insert-inv-prob=N

       EMC是以PMD为边界的,每个PMD拥有自己的EMC;dpcls是以端口为边界的,每个端口拥有自己的dpcls;ofproto classifier是以桥为边界的,每个桥拥有自己的ofproto classifier


原文链接:https://blog.csdn.net/u013743253/article/details/120291014

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值