干货来啦!!!
2016DPDK美国峰会已圆满落幕,并取得了丰富的成果。
之后,我们分享关于本次峰会的技术专题,敬请期待哦。
在本期推送中,我们分享的是峰会上的两个优质演讲内容~~干货满满,不容错过!(内附视频,流量党慎点哦)
一. NFV 用例
(Cristian Dumitrescu,Intel 工程师)
在本次展示中,Cristian讨论了EdgeRouter的用例证明我们可以用DPDK所提供的部件和库做一些复杂而现实的应用,这一点早就由那些DPDK产品开发者证明。在开发过程中识别misalignment非常必要,我们发现在DPDK中有越来越多潜在问题的解决只需要我们做好对齐的工作。
接下去讨论的用例自发布以来便在DPDK中得以实现。它基于IPPipeline 应用之上,比较类似于应用产生器,有利于快速配置并掌握应用的特性。
Edge Router是非常复杂的用例,增加了不同的特性,其要求也会不同。在执行端,我们有两套处理方式,取决于包来自何处并去向何处:有upstreampipeline和downstreampipeline。Downstream指的是包来自coordinator去向customer;upstream则相反。在downstream,有functional blocks或者说functional pipeline。(请见下图)
DPDK的实现
每个pipeline都有自己的配置
FD.ioVPP的实现
二. TLDK 传输层开发套件
(Konstantin Anayev, Intel工程师)
项目网站:
https://wiki.fd.io/view/TLDK
项目内容:
执行一套IPv4和IPv6的L4协议处理库(UDP,TCP等);
用这些库创建VPP图节点、插件等来执行主机栈;
通过非vpp感知软件让主机栈简便易用的必要机制(光纤收发器代理,包装等)。
TLDK库:
目标:轻量、高性能、易用的L4(UDP,TCP等)协议处理库
在DPDK之上使用,事实上现在DPDK是唯一的外部支持
——在库中使用DPDKAPI/功能
——遵循DPDK设计思路(批量处理数据包、非阻塞API等),所以可以将之看作DPDK上层的数据包处理延伸。
当前状态:
libtle_udp – 执行UDP数据报处理
——在IPv4和IPv6数据包上运行
Dupfwd – 范例应用展示并测试libtle_udp的使用
——可以进行一些简单的收或发,或者在已建立的UDP流上进行收发
——UDP数据报在不同流之间转发(“UDP proxy”)
——对IP包进行重组或分段(基于DPDKlibrte_ip_frag)
TLDK API概览:
需要两个API ,一个在DPDK+L2/L3软件上,一个在应用层,我们把这称为后端和前端。
后端API由配置API和PKT IOAPI组成
必须创建TLDK上下文,在这个过程中可以创建数个上下文,每个TLDK上下文独立运行
API逻辑上可分为:
后端(BE)——ConfigAPI (dev add/remove)、PKT IO (RX/TX bulk);
前端(FE)——流控制和IO (open(),close(), listen(), recv(), send()等;
前端API线程不安全;
后端API线程安全;
也就是说,两个线程不能直接同时使用同一个TLDK设备。
可能的部署场景
第一个是最简单的,有一个TLDK上下文,前端和后端在同一个核上;
第二个有一个TLDK上下文,前端和后端在不同的核上;
第三个有两个TLDK上下文,每个前端和后端在同一个核上;
第四个有点像第二个和第三个的结合,有两个TLDK上下文,每个环境管理一个设备,在线程上运行,前端和后端在不同的核上。
UDPFWD 最佳性能数字柱状图 (echo mode, ipv4/udp)
这是一个非常简单的场景,所有的数据包都属于同一条流。
UDPFWD 最佳性能数字柱状图 (echo mode,ipv4/udp)
这是一个不同的场景,多流,64B PKT
更多信息,请关注DPDK开源社区