微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 一种面向云架构的高性能网络接口实现技术

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

时间:02-02 来源:3721RD 点击:

0概述

在传统的电信IT产品中,高性能网络接口一般采用特殊的硬件模块来实现,比如网络处理器、ASIC、FPGA等等。这些特殊硬件模块一般会采用特殊的架构和指令集对网络数据收发过程进行优化以达到更好的性能。然而,这也相应使得开发和维护这些模块的成本非常的昂贵,同时还有一个无法解决的问题是基于这些特殊硬件模块实现的网络接口不能移植到云中,因为它们跟硬件的耦合度太高了。摩尔定律的出现,使得通用处理器的性能得到了极大的提升,这也为基于通用处理器实现高性能网络接口提供了可能,同时也为移植到云中提供了前提条件。



图1 网络接口实现的发展趋势

本文对基于通用X86架构处理器和Linux下的传统网络接口实现模式进行了分析,同时针对其不足提出了一种高性能网络接口实现方案-HPNI.

1传统网络接口实现分析

传统网络接口实现如图2所示,Linux下传统网络接口处理流程一般包含以下几个步骤:



图2 传统网络接口实现

(1)系统启动之后,内核中的驱动程序进行相应的资源分配以及网卡寄存器配置,比如分配数据包缓冲区,使能DMA传输通道等等;

(2)网卡初始化完成以后,当网卡从网络收到数据包的时候,会将数据包通过DMA方式传送到内核中的数据包缓冲区中,并生成相应的数据包描述符存放在环形队列里面;

(3)网卡触发硬中断通知内核,内核在中断处理程序中产生相应软中断给应用程序收包任务;

(4)应用程序收包任务通过系统调用收取数据包,数据包也将从内核空间拷贝到用户空间;

(5)收包任务通过共享队列把数据包传递给处理任务;

(6)处理任务通过共享队列把处理好的数据包传递给发包任务;

(7)发包任务通过系统调用把数据包传递给内核,通过采用一次内存拷贝实现;

(8)驱动程序根据存放在环形队列里面的数据包描述符启动相应的DMA传输任务;

(9)数据包传输完成后,网卡触发中断通知内核做相应处理。

下面先对传统网络接口的性能关键点进行分析。

1.1中断和系统调用

Linux下传统网络接口实现的一个关键因素是中断技术,网卡通过中断与内核保持同步。但中断处理会引入很大的性能损失,因为当CPU处理中断的时候,它必须储存和恢复自己的状态,进行上下文切换以及在进入和退出中断处理程序的时候可能引入缓存(cache)操作。在进行大流量数据包处理的时候,由于CPU被频繁地中断,由此带来的性能损失会非常严重。

当使用Linux系统提供的标准socket接口来实现网络通信时,会触发大量的系统调用,当应用程序通过socket系统调用进行网络通信时,需要经历从用户态到内核态的切换以及其反向过程,在切换过程当中需要进行上下文的保存,比如对相关寄存器进行堆栈压栈操作,保存当前指令指针等等。这些操作都会消耗系统资源,当处理高速的数据流量时,随着系统调用数量的急剧增加而导致系统资源的大量消耗。

1.2内存相关性能问题

1.2.1内存拷贝

在使用标准套接字进行数据包收发时,数据在应用程序和内核之间进行传递必须通过内存拷贝来完成,原因在于用户空间的内存和内核空间的内存是处在物理内存不同的位置上。内存拷贝是一个非常消耗资源的过程,当需要收发的数据包流量很大时,这种开销将会极大地影响系统的性能。

1. 2.2内存访问效率

在绝大多数情况下,应用程序并不直接通过物理内存地址来访问内存,而是采用虚拟地址,当CPU收到内存访问指令时会先把虚拟地址转换成实际的物理地址,然后进行内存的访问操作。这种方式已经被普遍接受,甚至被称作是IT时代最杰出的发明之一,但是这种非直接内存访问方式并不是没有代价的,地址的翻译需要通过页表来完成,页表通常情况下是储存在内存当中的,访问速度很慢,为了解决这个问题,大部分系统都采用了TLB(Tralaslation Lookaside Buffer)的方式,最近触发的一些地址翻译结果都会保存在TLB中,TLB实际上使用的是CPU的缓存(cache),访问速度非常快,然而cache容量小,只有最近访问的一部分页表项能保存下来,因此出现了"TLB Miss";当CPU发现当前虚拟地址无法在TLB里面找到相对应的表项时,就引入了一个TLB Miss,此时CPU需要回到内存当中的页表进行查找,性能会显著降低。因此当程序需要进行频繁的内存操作时,需要尽量减少TLBMiss的次数。当前系统定义的页面大小一般是4k字节,当应用程序使用比如2G这样的大内存时,总共需要50多万个页表项,这个数目是相当庞大的,同时因为只有一小部分的表项能够装载在TLB中,因此TLB Miss的几率也很大。另外,一般情况下

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top