新闻中心

EEPW首页>嵌入式系统>设计应用> 一种面向云架构的高性能网络接口实现技术

一种面向云架构的高性能网络接口实现技术

作者: 时间:2015-03-02 来源:网络 收藏

  HPNI主要包括以下几项关键技术:

本文引用地址://m.amcfsurvey.com/article/270287.htm

  (1)通过Linux提供的UIO框架,实现了网卡用户空间驱动程序,UIO能够把网卡设备内存空间通过文件系统的方式传递给用户空间,比如dev/uioXX,因此用户空间程序能够读取到设备地址段并映射到用户空间内存中,比如通过mmap()。通过上述方式可以在用户空间程序中完成驱动程序的功能。这种方法的优点是去掉了内存拷贝,同时因为所有工作都在用户空间完成,也节省了系统调用的开销。

  (2)关掉网卡中断,驱动程序采用轮询方式,消除中断引起的开销。

  (3)用户空间的数据包缓冲区采用huge page分配的连续物理内存区,通过LinuX提供的huge page接口能够分配大于4k的页,从而减少页表的大小,降低TLB Miss发生的概率。另外连续的物理内存块也能减少地址转换引起的查表次数,进一步提高性能。

  (4)任务线程和CPU核心之间采用静态绑定,比如接收包线程绑定1核,处理包线程绑定2核,发送包线程绑定3核,从而消除核间切换产生的开销。

  另外,对于NUMA架构的CPU,每个任务都使用本地内存,进一步提高内存访问速度。

  (5)通过CAS(Compare And Swap)原子操作,多个任务可以在不加锁的情况下对共享队列进行访问,增加和删除节点。在X86架构下CAS是通过CMPXCHG指令实现的,该指令的作用就是把一个指针指向内存的值同一个给定的值进行比较,如果相等,就对对应内存赋一个新的值,否则不做任何操作。通过上述方法可以实现一种冲突检测机制,当任务发现该队列己经被访问时,主动等待直到队列空闲。无锁队列消除了加锁引起的开销,同时也能避免死锁的情况。

  (6)基于网卡RSS(Receive-side Scaling)功能可以平滑扩展成多任务模式,RSS功能可以将收到的数据包基于五元组做哈希运算,从而分发到不同的队列当中进行并行处理,每一个队列可以对应一个收包任务,从而成倍地提高处理性能。

  3对比实验及结果分析

  3. 1实验一

  实验环境描述如下:一台数据包发生器,最大可产生流量为80Mpps的64字节的数据包。一台服务器配置Intel的Sandy Bridge 8核处理器,每个核心2.0GHZ.操作系统采用RedHat Enterprise Linux 6.2.网卡采用Intel 82599 10G以太网控制器。运行的软件包含三个线程,一个收包线程,一个转发线程,一个发送线程。传统网络实现方式下采用了RAWSocket方式直接收发处理层二数据包,如图4所示。

  图4 单线程模式下性能比较图



关键词:网络接口FPGA

评论


相关推荐

技术专区

关闭