DPDK 美国峰会技术分享之系列一

 

NFV 用例Cristian Dumitrescu在本次展示中,Cristian讨论了EdgeRouter的...





干货来啦!!!

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开源社区


    关注 DPDK开源社区


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册