APP下载

面向用户态Click的I/O优化框架的设计与实现*

2016-12-19卢泽新张晓哲马世聪

计算机与生活 2016年12期
关键词:轮询拷贝网卡

刘 松,卢泽新,张晓哲,马世聪

国防科学技术大学 计算机学院,长沙 410073

面向用户态Click的I/O优化框架的设计与实现*

刘 松+,卢泽新,张晓哲,马世聪

国防科学技术大学 计算机学院,长沙 410073

LIU Song,LU Zexin,ZHANG Xiaozhe,et al.Design and implementation of optimization I/O framework for Click modular router in user level.Journal of Frontiers of Computer Science and Technology,2016,10(12):1693-1700.

软件路由器在现代网络的发展中发挥着越来越重要的作用,而Click是具有良好模块化设计的软件路由器,为开发和验证新的路由协议等应用提供了很好的软件平台。由于实现机制问题,用户态Click的I/O性能严重限制报文处理能力,影响以Click软件路由器为平台的系统的整体性能。针对现有Click用户态I/O机制的不足,提出了一种面向用户态Click的I/O优化框架,通过采用轮询技术、零拷贝技术和报文预取技术提升了I/O性能。实验结果表明:优化后的用户态Click的I/O性能提升了121倍。

软件路由器;Click;I/O;轮询;零拷贝;报文预取

1 引言

随着新的网络协议以及新的网络业务的诞生,需要对现有的路由器进行升级或更换。作为网络服务提供商而言,更换路由器无疑代表成本的增加,因此希望通过升级原有的设备来满足日益增长的需求。这就要求路由器能提供灵活定制、可编程的能力。传统的硬件路由器的功能是由设备厂商定制,不允许第三方进行任何修改;而软件路由器可以提供快速开发出新的功能和需求的包处理,降低了开发周期和运营成本。

在典型的软件路由器中,Click[1]Click modular router)以其良好的可扩展性得到了广泛的应用,为新协议的开发和验证以及软件路由器的快速搭建提供了一个优秀的软件平台。Click是一个模块化的软件路由器,采用了面向对象的设计方式,把IP分组转发过程抽象为一系列组件。Click提供了一种灵活的可扩展的数据平面软件开发架构,只需要添加组件即可对软件路由器的功能进行扩展,即通过将路由器功能划分为不同的功能组件,然后通过实现新的组件或组合已有的组件就可以快速地实现新的网络功能,为软件路由器的开发提供了非常好的可扩展的数据平面的软件开发架构。Click的高度可扩展性等优良特性也使得它受到越来越广泛关注,并实现了许多优秀的应用原型,比如未来互联网架构[2]、冗余流量消除系统[3]、可扩展的中间盒平台[4]和集群式高性能软件路由器[5]等。

尽管Click的灵活设计能满足不同网络业务的设计需求,但是它的较低转发性能无法满足大多数业务的性能指标。相关研究工作指出,用户态的Click的I/O(Input/Output)框架是限制其性能的关键因素。如何结合Click的I/O框架与现有的硬件平台来进一步提升它的报文处理能力是当前研究的热点和难点。通过分析Click的实现机制,制约I/O性能的因素主要有3个:(1)采用系统中断方式接收/发送报文;(2)报文在内核态与用户态间的多次拷贝开销;(3)缓存竞争和缓存缺失。

本文提出了一种面向用户态Click的I/O优化框架,用于解决Click转发性能较低的问题。本文I/O优化框架采用了轮询技术、零拷贝技术和预取技术3类技术:轮询技术避免了原生态Click以中断方式接收/发送报文,极大地提升了它的报文处理能力;零拷贝技术和预取技术优化了报文处理路径的I/O开销,降低了报文的拷贝次数以及访存的次数。通过实验结果证明:优化I/O框架后的Click的转发性能为11 400 Kp/s,为原生用户态Click的121倍。

2 相关工作

目前,针对Click的I/O框架限制其报文处理能力的问题已普遍引起研究人员的重视,并提出了一系列的解决方案。比如,文献[6]利用批处理方式优化I/O框架,需要对报文处理业务进行重设计,并且报文的处理路径不同也影响到批处理方式带来的性能提升。RouteBriceks[5]主要采用轮询方式代替传统硬件的中断方式,以及采用批处理方式提升数据处理的并行性,但其主要解决内核态Click的I/O框架问题。PacketShader[7]通过修改内核使Linux系统更好地支持批处理方式,采用GPU(graphic processing unit)加速报文的处理能力,因此它在移植性方面存在不足。此外,一些方案[8-11]采用硬件加速的方式来解决Click的I/O问题。

近年来针对用户态的高性能报文I/O的优化框架也存在较多研究,比如Packet_mmap[12]、Netmap[13]、PF_RING[14]、DPDK(date plane development kit)[15]等,文献[16-17]对于多种框架进行了性能的测试和分析,其中PF_RING与DPDK的用户态I/O性能表现较好,但PF_RING中报文存储在内核态中,与本文的设计理念有所不同,因此最终采用DPDK实现并验证本文的设计思想。

虽然已有Click的I/O优化方案能有效地提升报文处理能力,但采用批处理方式和内核态的Click优化方式降低了系统的可移植性。本文主要研究如何在X86服务器上优化用户态Click的I/O框架。

3 关键技术的分析与解决

现有工作表明,造成Click用户态I/O性能降低的原因主要包括三方面:

(1)采用系统中断方式收发报文。在标准的Linux内核协议栈中,协议栈使用中断的方式发送或者接收报文,原生用户态Click使用libpcap从协议栈中获取报文,当报文到达速率较高时,系统中断的处理频率会远低于报文到达速率,引发丢包,影响包处理性能。

(2)内核态与用户态之间的内存拷贝开销。由于内核和用户内存空间的隔离,原生态的Click至少需要两次报文拷贝才能完成一次的报文处理流程,由此而产生的开销会大幅降低用户态Click的性能。

(3)缓存竞争和缓存缺失已经成为影响通用服务器上运行软件路由器性能的重要因素[18-19]。原生态的用户态Click并不支持缓存的预取操作,给其I/O性能的提升造成了一定的瓶颈。

针对上述问题,本文给出了用户态Click的I/O优化框架,如图1所示,主要从以下三方面改进用户态Click的I/O性能:

Fig.1 Comparison of userlevel Click I/O two framework and optimzed framwork图1 用户态Click I/O框架与优化框架对比

(1)使用轮询模式的驱动取代中断模式的网卡驱动,网卡可以在不通知进程的情况下直接通过DMA(direct memory access)将报文送到内存中,Click则使用轮询CPU队列的方式轮询收发队列中的报文,从而避免了频繁的系统中断。

(2)使用零拷贝技术,通过创建内核态与用户态之间的共享报文缓冲区,将报文直接送入共享缓冲区,避免了报文收发过程中的多次内存拷贝,实现了报文零拷贝的收发。

(3)通过报文预取技术,将需要发送的报文提前读取到Cache中,减少了内存访问造成的I/O损失。

3.1 设备轮询技术

Fig.2 Comparison of interruption and poll mode图2 中断方式和轮询方式的对比

用户态的Click采用了系统中断的方式收发报文,严重影响了系统整体的转发性能。如图2(a)所示,用户态的Click收取报文的工作流程为:首先,网络协议栈从网卡中以中断的方式获取报文;然后,Click组件再从网络协议栈中使用Pcap等方式获取原始报文。在高速报文处理过程中,频繁地收发报文特别是小报文引起的大量中断会严重影响I/O的速度,从而给整个系统带来性能瓶颈。调研发现,轮询驱动收取报文可以解决大量中断造成的转发性能低下的缺陷。工作在内核态的Click通过修改系统内核驱动可以支持轮询模式收发报文,但内核态工作的轮询驱动收发报文需要频繁的上下文切换且修改内核驱动,会给系统的部属带来不必要的时间成本开销。因此,将轮询驱动技术引入到用户层,既消除了频繁中断带来的不必要开销,也减少了内核态和用户态上下文切换造成的性能损失。

根据Click软件路由器本身的特点,设备轮询分为两层轮询结构:第一层,在底层采用Intel DPDK做驱动支持,轮询各个网卡的多队列将报文直接获取到用户态形成DPDK队列。第二层,采用轮询CPU队列的方式,从DPDK队列中轮询收发报文。如图2(b)所示,在用户态使用DPDK库,借助UIO驱动将网卡驱动放到用户态工作,通过DPDK按照一定的时间周期按次序轮询访问每个网卡接口的队列,将报文放入DPDK队列中;在Click组件中采用轮询CPU队列技术访问每个DPDK接收队列,将报文获取到用户态内存中;经过Click组件的要求处理后,再通过相反的过程将报文送到网卡队列中完成发送过程,从而消除了高速收发报文中因为中断所引起的性能瓶颈。本节所提出的设备轮询技术是基于CPU队列的轮询,查询的对象是DPDK的收发队列。DPDK库在本设计中充当了底层的驱动库,完成从网卡到用户态报文的收发工作。

3.2 零拷贝技术

由于内核和用户内存空间的隔离,原生态的Click至少需要两次报文拷贝才能完成一次的报文处理流程,由此而产生的开销会大幅降低用户态Click的性能。如图1(a)所示,在原生态的Click接收报文的过程中,报文从网卡到内存的传输需要经历两次拷贝工作,即报文从网卡队列到网络协议栈的拷贝和从网络协议栈再到内存的拷贝。报文传输过程中的两次报文拷贝工作从网卡收发报文操作是不可避免的,但可以通过减少从网卡队列中已经收取报文的情况下操作系统内部进行多余的内存拷贝工作,即从网卡直接获取报文内容到用户态内存,交给Click组件进行零拷贝的报文处理,减少Click用户态原生方案中二次拷贝所带来的I/O损失。由此,采用了如图1(b)所示的设计方案,通过DMA技术直接从网卡中获取报文到用户态的内存,然后在Click组件中使用零拷贝技术进行报文的操作处理。在实现过程中,借助于Intel DPDK进行实现,在此开发套件中使用的报文存储结构与Click中原生的报文结构有一定的差异,因此对必要的报文头部信息进行提取,转化为Click组件需要处理的报文结构,在保持必要信息量的情况下,避免了大量报文数据的拷贝,进而提高收发报文的I/O性能。

3.3 报文预取技术

缓存竞争和缓存缺失已经成为影响通用服务器上运行软件路由器性能的主要因素,原生态的Click用户态并没有相应的解决方案。如果能够在处理报文之前将其预取到Cache中,那么可以大大减少缓存竞争和缓存缺失所带来的I/O性能的损失。为此,本文使用报文预取技术解决缓存竞争和缓存缺失的问题。在报文加入接收队列时,做报文预取操作,提前将报文读取到Cache中,在后续的报文处理过程中可以直接从缓存中获取到报文的内容,从而大幅度提高Cache的命中率,进而提高Click收发报文的I/O性能。为了提高报文预取的效率,对于报文的存储方式也做了相应的改进,使用大页内存技术进行内存的存储管理:首先大页内存不受虚拟内存的管理影响,不会被替换出内存,而普通的4 KB内存页,如果内存不足可能会被虚拟内存管理模块替换;其次,对于同样的内存大小,大页内存产生的表项数目远远小于普通内存页。较少的表项一方面可以大大减少表项开销,并且可以明显减少冲突率,极大减少表项缺失导致的开销,而表项缺失会严重影响访存性能。对于共享内存的管理一般会使用锁来实现,但是使用锁不可避免地因为顺序化的数据访问和报文头开销增加而降低系统的性能。因此本设计采用无锁环进行内存的管理。

4 设计与实现

本文所提出的用户态Click软件优化框架如图3所示。该框架不依赖于诸如SR-IOV(single-root I/O virtualization)的硬件优化方案,完全采用软件方式实现,既避免了原有的系统开销,提高了系统性能,又可以充分利用用户态Click的稳定性高、易于扩展的优势,在可编程性和高性能方面取得了良好的平衡。

Fig.3 Click I/O optimized framework in user level图3 用户态Click I/O优化实现框架

轮询方式收发报文技术的实现:在用户态使用Intel DPDK数据层面开发套件中的轮询驱动,从网卡中直接获取报文到用户层并形成报文的接收队列,通过创建新的Click组件,在Click中使用轮询CPU队列的方式访问DPDK中的报文接收队列收取报文,并将报文存储在用户态的使用无锁环管理的大页内存中。待Click处理完报文之后,Click组件再以轮询CPU队列的方式将报文按照必要的信息提交给指定的发送队列,轮询模式的驱动库则会通过定时轮询发送队列的方式将报文发送到指定的网卡并释放内存空间,完成整个报文的收发操作。

零拷贝技术的实现:报文从网卡收取到用户层之后,提取一定量的必要信息,比如数据长度、报文头指针等,通过缓冲区管理库的操作,生成Click内部处理报文格式,以文件描述符的形式交给Click组件进行后续处理。完成指定的报文操作后,再通过缓冲区管理库,根据报文的文件描述符及必要的附加信息将Click报文还原成DPDK中的内部报文结构,并提交给发送队列进行发送。整个报文的操作过程只进行了文件描述符的传递,实际报文数据没有进行多余的拷贝工作。

报文预取技术的实现:Click组件进行报文处理主要通过任务队列对报文进行操作,在处理一个报文的时候提前将下一个需要处理的报文的文件描述符以及对应的数据从内存中预取到Cache中,且在内存管理中采用大页内存和无锁环,可以有效提高访存能力,提高从内存到Cache中的读取速度。

5 测试结果

5.1 实验环境

本文的测试平台采用了IBM的通用服务器进行测试,服务器配置:CPU为Intel®Xeon®CPU E5-2680V2@2.80 GHz;内存为1 333 MHz,64 GB DDR3;网卡信息为Intel82599 10GbE网卡。服务器安装并运行的操作系统为Centos6.3,系统内核版本为Linuxkernel 2.6.32-358.el6.x86_64,采用的基础代码版本为Click 2.0.1和dpdk 1.6。测试仪器中采用了IXIAXM2网络数据通信分析仪进行测试。

5.2 实验结果和分析

实验中,主要对单核、单线程、单接口的吞吐率、包转发速率等报文转发处理的I/O性能指标进行了测试。分别使用从64 Byte到1 514 Byte等不同长度的报文,通过网络数据通信分析仪测试系统对本文所设计并实现的用户态Click软件路由器的I/O优化框架进行了验证。数据分析如下:

(1)转发能力结果与分析

经过实验测试发现,如图4(a)所示,其中Native Click表示原生用户态的Click,Click PollMode表示使用轮询技术优化后的用户态Click,Click Optimization表示使用轮询、零拷贝和缓存预取3种技术优化后的用户态Click,即本文所提出的优化框架。结合表1中给出的不同报文下的包转发速率可以看出,在用户态运行Click的转发能力非常低,对64 Byte转发报文速度为94 Kp/s,在用户态采用轮询技术直接从网卡中收报文性能达到5 880 Kp/s,性能提升大约62倍;使用本文提出的面向用户态Click的I/O优化框架,同时采用报文零拷贝、轮询、缓存预取等技术的情况下,对64 Byte报文的转发性能为11 400 Kp/s,性能提升大约121倍。通过简单计算可知,使用报文零拷贝和缓存预取技术可以将包转发能力提高将近60倍。此外,在实验测试过程中,对于超过128 Byte长度大小的报文转发速度与设备发包速度相当,即可以实现完全转发。

(2)吞吐率结果与分析

与包转发速率相对应,图4(b)和表2展示了不同技术下的吞吐率,从吞吐率的表现可以得知,原生态用户态Click的吞吐率表现最差,其最大吞吐率只有981 Mb/s,相同报文长度下,使用3种优化技术最大吞吐率达到9 860 Mb/s。测试结果显示,从128 Byte长度大小的报文开始,同时使用轮询、零拷贝、报文预取等技术优化的Click用户态的吞吐率与测试仪报文发送的吞吐率相等。此外,对于优化后的Click I/O在多核、多线程时的表现也进行了简单测试,由于经过优化的Click的I/O能力单核、单线程已经超过了5 Gb/s吞吐率,使用多核、多进程吞吐率一直保持单接口满负荷状态(≈10 Gb/s)。

Fig.4 Throughput and forwarding rate in different mechanisms图4 不同技术下的吞吐率和转发性能表现

Table 1 Forwarding rate in different mechanisms表1 不同技术下的转发速率

Table 2 Throughput in different mechanisms表2 不同技术下的吞吐率

6 结论与展望

本文通过使用设备轮询、零拷贝、报文预取等关键技术对工作在用户态的Click软件路由器的收发报文的I/O框架进行了优化,改进设计了一种新的面向用户态Click的I/O优化框架,并利用Intel DPDK进行了实现和验证。实验证明,通过DMA将网卡中报文直接读取到用户态,然后使用CPU队列的轮询技术进行收发,能够将转发性能提高超过一个数量级。通过组合使用设备轮询、零拷贝技术和缓存预取技术,可以将用户态Click的收发报文的I/O性能提高超过两个数量级,达到121倍。

在测试过程中发现,相对于原生的DPDK的报文转发能力,使用DPDK优化的Click性能还有一定的性能损失,后期工作可以通过改进Click的调度机制,优化队列等方式进行进一步的改进。此外,现阶段对于Click用户态I/O性能提升的设计与实现中主要是通用服务器上单核单进程的优化,集中在收发报文的I/O处理中,对于如何充分利用多核、多线程的并发处理能力没有进行深入研究。此外,如何发挥批量处理能力,高效利用NUMA架构和网卡多队列的特性优势均没有进行深度优化,这些都将是后续工作的方向。

[1]Morris R,Kohler E,Jannotti J,et al.The Click modular router[J].ACM Symposium on Operating Systems Principles,1999,33(5):263-297.

[2]Han Dongsu,Anand A,Dogar F,et al.XIA:efficient support for evolvable internetworking[C]//Proceedings of the 9th USENIX Symposium on Networked Systems Design and Implementation,San Jose,USA,Apr 25-27,2012.Berkeley,USA:USENIXAssociation,2012:23.

[3]Aggarwal B,Akella A,Anand A,et al.EndRE:an end-system redundancy elimination service for enterprises[C]//Proceedings of the 7th USENIX Symposium on Networked Systems Design and Implementation,San Jose,USA,Apr 28-30,2010.Berkeley,USA:USENIXAssociation,2010:28.

[4]Sekar V,Egi N,Ratnasamy S,et al.Design and implementation of a consolidated middlebox architecture[C]//Proceedings of the 9th USENIX Symposium on Networked Systems Design and Implementation,San Jose,USA,Apr 25-27,2012.Berkeley,USA:USENIXAssociation,2012:24.

[5]Dobrescu M,Egi N,Argyraki K,et al.RouteBricks:exploiting parallelism to scale software routers[C]//Proceedings of the 22nd ACM SIGOPS Symposium on Operating Systems Principles,Big Sky,USA,Oct 11-14,2009.New York:ACM, 2009:15-28.

[6]Kim J,Huh S,Jang K,et al.The power of batching in the Click modular router[C]//Proceedings of the 3rd ACM SIGOPS Asia-Pacific Conference on Systems,Seoul,Jul 23-24,2012.New York:ACM,2012:14.

[7]Han S,Jang K,Park K S,et al.PacketShader:a GPU-accelerated software router[J].ACM SIGCOMM Computer Communication Review,2010,40(4):195-206.

[8]Chen Benjie,Morris R.Flexible control of parallelism in a multiprocessor PC router[C]//Proceedings of the General Track:2002 USENIX Annual Technical Conference,Monterey,USA,Jun 10-15,2002.Berkeley,USA:USENIX Association,2002:333-346.

[9]Nikander P,Nyman B,Rinta-aho T,et al.Towards softwaredefined silicon:experiences in compiling Click to NetFPGA [C]//European NetFPGADevelopers Workshop,Sep 2010.

[10]Lockwood J W,Mckeown N,Watson G,et al.NetFPGA—an open platform for Gigabit-rate network switching and routing[C]//Proceedings of the 2007 IEEE International Conference on Microelectronic Systems Education,San Diego, Jun 3-4,2007.Piscataway,USA:IEEE,2007:160-161.

[11]Schelle G,Grunwald D.CUSP:a modular framework for high speed network applications on FPGAs[C]//Proceedings of the 13th ACM/SIGDA International Symposium on Field Programmable Gate Arrays,Monterey,USA,Feb 20-22,2005.New York:ACM,2005:246-257.

[12]Linux Kernel Contributors.Packet_mmap[EB/OL].[2015-07-22].https://www.kernel.org/doc/Documentation/networking/ p-acket_mmap.txt.

[13]Rizzo L.Netmap:a novel framework for fast packet I/O [C]//Proceedings of the 2012 USENIX Annual Technical Conference,2012.

[14]PF_RINGTM[EB/OL].[2015-07-22].http://www.ntop.org/ products/pf_ring/.

[15]Intel.Data plane development kit[EB/OL].[2015-07-22].http://www.dpdk.org.

[16]Barbette T,Soldani C,Mathy L.Fast userspace packet processing[C]//Proceedings of the 2015 ACM/IEEE Symposium on Architectures for Networking and Communications Systems,Oakland,USA,May 7-8,2015.Washington: IEEE Computer Society,2015:5-16.

[17]Gallenmuller S,Emmerich P,Wohlfart F,et al.Comparison of frameworks for high-performance packet IO[C]//Proceedings of the 2015 ACM/IEEE Symposium on Architectures for Networking and Communications Systems,Oakland,USA,May 7-8,2015.Washington:IEEE Computer Society,2015:29-38.

[18]Huggahalli R,Iyer R,Tetrick S.Direct cache access for high bandwidth network I/O[C]//Proceedings of the 32nd International Symposium on Computer Architecture,Madison,USA,Jun 7-8,2005.Washington:IEEE Computer Society,2005:50-59.

[19]Bolla R,Bruschi R.PC-based software routers:high performance and application service support[C]//Proceedings of the 2008 ACM SIGCOMM Workshop on Programmable Routers for Extensible Services of Tomorrow,Seattle, USA,Aug 17-22,2008.New York:ACM,2008:27-32.

LIU Song was born 1992.He is an M.S.candidate at National University of Defense Technology.His research interests include network virtualization and computer network,etc.

刘松(1992—),男,河南长垣人,国防科技大学硕士研究生,主要研究领域为网络虚拟化,计算机网络等。参与国家重点基础研究发展计划(973计划)和信息保障重点实验室开放基金项目等。

LU Zexin was born in 1963.He is a researcher and M.S.supervisor at National University of Defense Technology. His research interests include high-performance computer and high-performance router,etc.

卢泽新(1963—),男,重庆人,国防科技大学研究员、硕士生导师,主要研究领域为高性能计算机,高性能路由器等。

ZHANG Xiaozhe was born in 1976.He is an associate researcher and M.S.supervisor at National University of Defense Technology.His research interests include high-performance router,route protocol and protocol distributed parallel processing,etc.

张晓哲(1976—),男,辽宁铁岭人,国防科技大学副研究员、硕士生导师,主要研究领域为高性能路由器,路由协议,协议分布并行处理等。

MA Shicong was born in 1986.He is a Ph.D.candidate at National University of Defense Technology.His research interests include network virtualization and computer network,etc.

马世聪(1986—),男,辽宁营口人,国防科技大学博士研究生,主要研究领域为网络虚拟化,计算机网络等。

Design and Implementation of Optimization I/O Framework for Click Modular Router in User Level*

LIU Song+,LU Zexin,ZHANG Xiaozhe,MAShicong
School of Computer,National University of Defense Technology,Changsha 410073,China
+Corresponding author:E-mail:liusong_ee@163.com

Software router has played a more and more important role in the development of modern networks,and the Click modular router has been one of the most popular software routers as it provides a good platform for new protocol development and rapid prototyping.Due to external overhead introduced by practical mechanism,I/O performance,which has become a bottleneck,strictly prevents the packet processing capability of Click in the user level. Aiming at the shortcomings of the I/O mechanism in the existing Click modular router,this paper proposes an optimized I/O framework for the Click modular router in the user level,through using the poll mode,zero copy and packet prefetching.The experimental results show that the optimized I/O framework can provide better performance (121 times)than the native.

software router;Click;I/O;poll mode;zero copy;packets prefetching

10.3778/j.issn.1673-9418.1509095

A

TP393.0

*The National Basic Research Program of China under Grant No.2012LB315900(国家重点基础研究发展计划(973计划)).

Received 2015-08,Accepted 2015-10.

CNKI网络优先出版:2015-11-11,http://www.cnki.net/kcms/detail/11.5602.TP.20151111.1648.004.html

猜你喜欢

轮询拷贝网卡
基于等概率的ASON业务授权设计∗
Server 2016网卡组合模式
唐氏综合征是因为“拷贝”走样了
文化拷贝应该如何“拷”
依托站点状态的两级轮询控制系统时延特性分析
利用时间轮询方式操作DDR3实现多模式下数据重排
挑战Killer网卡Realtek网游专用Dragon网卡
RHEL7 Network Teaming(网卡绑定)配置与测试
基于硬盘还原卡的数据传送技术在高校网络机房中的应用
数据链轮询多网优化设计方法研究*