• 微博
  • 微信微信二维码

广东省人民政府首页  >  要闻动态  >  广东要闻

www.uy000.com_

来源: 南方日报网络版     时间:2019-11-17 10:08:48

www.uy000.com

网络报文的分发以及保序一直以来是让人头痛的问题, 终极大杀器的前世今生从这里展开

网络报文的分发以及保序一直以来是让人头痛的问题

为了完整地解释Event Dev的背景,我们从头讲起

报文分发:针对网络通信报文的某种特征(例如 5 tuples)对网络报文进行分类,以及对这个分类进行对应的特定处理

这种分类通常称为是flow

例如 src ip, src port, dest ip, dest por…… 一致的报文被认为是一个flow

还可以更进一步提取特征

例如协议类型, tunnel id 等等

保序:在报文处理过程中不打乱原有的顺序, 大多数情况下可以弱化为在同一flow内的报文顺序不变. 这里和协议倒不是非常相关

首先,最常见的报文分发技术是 基于NIC 多队列的 Receive Side Scaling, NIC 首先根据算法对报文进行分类,然后尽可能平均地把不同flow放置到不同的接受队列中

RSS虽然解决了报文分发到多个cpu core的问题, 但是RSS并不了解哪个flow应该到哪个cpu core, 也无法通过配置解决

同时,RSS只能分发,没有其它选择

为了解决这个问题, Intel 引入了 更进一步的方案: Flow Director

通过Flow Director, NIC 不但可以分发报文,还可以指定特定的flow到特定的cpu core

同时,除了分发,也可以选择drop 报文

要更加精准和灵活,更多细节请参考 Flow Director 网址

当然,以上这些功能也不是没有代价:会增加PCI-Express traffic的TLP overhead

RSS 标准介绍 链接https://docs.microsoft.com/en-us/windows-hardware/drivers/network/rss-with-hardware-queuingFlowdirector 标准介绍 链接https://www.intel.com/content/www/us/en/ethernet-products/converged-network-adapters/ethernet-flow-director.html无论RSS/Flow Director ,都可以分发/同一flow保序

但是在更复杂的应用场景下就然并卵了.在PIPELINE 处理模型中, 除了接受端分发以外, 每个节点处理后还会第二次,第三次,第N次分发报文

这下该怎么办 ?如下图所示, 同一flow 4个报文开始分发, 1,3 进入一个路径, 2,4 进入另一个路径

因为没有任何锁来控制同步(性能考量) ,所以在处理结束的时候,报文的顺序已经打乱

原因:在两个完全并行的路径上,顺序是无法保证的

最直接的解决办法是引入一个reordering的功能节点, 当然,代价是昂贵的

同时,在cpu core之间做报文的分发也是代价昂贵的操作

欲知后事,请看event dev




相关文章

版权所有:57fak 粤ICP备05070829 网站标识码4400000131
主办:南方新闻网 协办:广东省经济和信息化委员会 承办:南方新闻网
建议使用1024×768分辨率 IE7.0以上版本浏览器