ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

OVS+DPDK

2021-11-29 12:36:32  阅读:204  来源: 互联网

标签:OVS ovs 流表 内核 数据包 DPDK


1: DPDK(Data Plane Development Kit)
是一组快速处理数据包的开发平台及接口。有intel主导开发,主要基于Linux系统,用于快速数据包处理的函数库与驱动集合,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。

DPDK的作用
在数据平面应用中为快速处理数据包提供一个简单而完善的架构。在理解此工具集之后,开发人员可以以此为基础进行新的原型设计处理大并发网络数据请求。

当前数据包的处理流程是这样:
数据包到达网卡,网卡发送中断通知CPU,CPU将数据包拷贝到内核空间中,应用程序从内核空间中拷贝数据到用户态空间,数据处理。

在这个过程中数据包处理耗时的操作有:

1:网卡每次收到数据都发送中断,打断cpu的工作。切换和恢复过程都耗时
2:网络数据包经过TCP/IP协议栈,达到真正的应用处理程序时走过很多的流程
3:应用程序拿到网络数据时需要经过内核空间到用户态空间的一次copy,增加耗时

 

 

 

dpdk解决问题办法:

DPDK技术是重载网卡驱动,直接将数据传递给用户态的应用程序,避免了中间环节的经过TCP/IP协议栈,内核空间到用户空间的copy。
同时针对第一点网卡频繁的中断,应用程序可以使用轮询的方式获取网卡上的数据,避免中断造成的场景切换和恢复浪费的时间。

 

2: OVS

OVS是一个高质量的,多层虚拟交换机(网络分层的层),其目的是让大规模网络自动化可以通过编程扩展,同时仍然支持标准的管理接口和协议:NetFlow. SFlow ... 等,并且它还支持多个物理机的分布式环境。

OVS流程图如下:

 

 

具体请参看https://www.cnblogs.com/sttchengfei/p/15618803.html链接


ovs处理流表的过程是:
1.ovs的datapath接收到从ovs连接的某个网络设备发来的数据包,从数据包中提取源/目的IP、源/目的MAC、端口等信息。
2.ovs在内核状态下查看流表结构(通过Hash),观察是否有缓存的信息可用于转发这个数据包。
3.内核不知道如何处置这个数据包会将其发送给用户态的ovs-vswitchd。
4.ovs-vswitchd进程接收到upcall后,将检查数据库以查询数据包的目的端口是哪里,然后告诉内核应该将数据包转发到哪个端口,例如eth0。
5.内核执行用户此前设置的动作。即内核将数据包转发给端口eth0,进而数据被发送出去。

 

3:OVS+DPDK

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

 

 

DPDK加速的OVS数据流转发的大致流程如下:
1.OVS的ovs-vswitchd接收到从OVS连接的某个网络端口发来的数据包,从数据包中提取源/目的IP、源/目的MAC、端口等信息。
2.OVS在用户态查看精确流表和模糊流表,如果命中,则直接转发。
3.如果还不命中,在SDN控制器接入的情况下,经过OpenFlow协议,通告给控制器,由控制器处理。
4.控制器下发新的流表,该数据包重新发起选路,匹配;报文转发,结束。

总结
主要区别在于流表的处理。普通ovs流表转发在内核态,而ovs-dpdk流表转发在用户态

 

标签:OVS,ovs,流表,内核,数据包,DPDK
来源: https://www.cnblogs.com/sttchengfei/p/15618815.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有