瑞斯康达:在云平台上利用DPDK和CCK实现高速加解密

分享到:
171
下一篇 >

现状与需求

云计算技术的发展越来越快,应用也越来越广泛。NFV即网络功能虚拟化,就是在电信云的基础上,实现传统和**的网络功能。为了实现网络功能的虚拟化,在电信云里如何实现高速流量转发,以及加解密功能就十分必要。本文主要介绍了在云平台里利用DPDK和CCK如何实现高速加解密功能。

技术介绍

DPDK

DPDK是X86平台报文快速处理的库和驱动的集合,使用UIO机制使网卡驱动程序运行在用户态,并采用轮询和零拷贝方式从网卡收取报文,提高收发报文的性能,并且使用hugepage和cpu affinity机制提高应用程序处理报文的性能。

CCK

Intel Cave Creek(CCK)是Intel推出的带有加解密功能的高性能处理芯片,*高处理性能可达50Gbps。

高性能虚拟网络接口

高性能虚拟网络接口(AVP)是云平台使用DPDK技术提供的高性能数据收发接口,其具有双向20Gbps的线速收发能力。

基于dpdk的数据处理方案

数据收发

每个I/O core处理一个NIC的数据收发,I/O lcore与Worker lcore之间采用ring buffer通信,每个IO RX/TX core会与各个Worker lcore 之间创建一个无锁的单生产者单消费者ring队列,用于报文的传递。

I/O core采用轮询的方式从网卡收包,收到报文后,直接将报文的内存地址放入Worker core的RX队列中;同样采用轮询的方式从Worker core的TX队列中收取要发送的报文,再通过网卡将数据发出。数据的整个处理过程中传递的都是内存指针,减少了内存拷贝带来的性能损失。

数据分流

对于上述方案,每个网卡对应一个I/O core,但Worker core可能有多个,这就需要I/O core具备loadbalance功能,根据分流原则将收到的数据分发到不同的Worker core中。

数据收发过程

I/O RX core从网卡收包,将报文放入内存中,并对数据包进行解包,解析出源目的ip地址、源目的port等信息; I/O RX core根据分流原则将报文所在的内存地址放入对应Worker core的RX ring队列,Worker core从RX ring队列收包; Worker core对数据进行加解密处理; I/O TX core从Worker core的TX队列中取出报文,经过路由查找等操作后从相应网卡发出。

基于CCK的加解密处理

CCK加速卡使用QuickAssist技术提供高速的加解密功能。QuickAssist专为基于数据平面的加解密提供一套API,以提高加解密的性能。为提高数据的存取效率,报文和操作参数都是以物理地址的方式传送到CCK加速引擎中。

CCK的加解密过程:

i.加解密预处理,如报文头修改、重建等;

ii.建立会话instance并构建操作参数;

iii.调用CCK驱动接口,将报文和操作参数交由CCK加速引擎执行加解密操作;

iv.加解密完成后,CCK调用回调函数对报文进行加解密后处理,如计算checksum。

在云平台上基于DPDK和CCK的IPsec加解密方案

方案描述

I/O core收到包后对数据包进行解析、分流,并将报文送到相应的Worker core队列;Worker core收到报文后进行CCK参数配置,并将报文交由CCK进行加解密处理。加解密采用异步模式,Worker core将报文交给CCK后立即返回重新从网卡收包,待CCK执行完加解密操作后将加解密后的数据放入ring中,Worker core下次轮询时将ring中的报文读出,再继续进行路由等处理。

Demo测试

Demo测试是在云平台中进行的,使用4个core(频率2.5GHz,两个用于I/O ,两个处理加解密),两个10G的AVP接口,一块CCK卡(DH8950)。单向数据转发和加解密性能如下图所示。从结果分析,对于512以下的报文*多可以达到50%的线速转发和40%线速的加解密处理,但对于1400以上的大包可以做到线速转发和加解密处理。

你可能感兴趣: 企业动态 图片 云平台 网络接口 虚拟化
无觅相关文章插件,快速提升流量