CN1647054A - 网络设备驱动体系结构 - Google Patents

网络设备驱动体系结构 Download PDF

Info

Publication number
CN1647054A
CN1647054A CNA028291557A CN02829155A CN1647054A CN 1647054 A CN1647054 A CN 1647054A CN A028291557 A CNA028291557 A CN A028291557A CN 02829155 A CN02829155 A CN 02829155A CN 1647054 A CN1647054 A CN 1647054A
Authority
CN
China
Prior art keywords
space
user
nic
device driver
kernel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA028291557A
Other languages
English (en)
Other versions
CN1647054B (zh
Inventor
M·安德耶利克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Publication of CN1647054A publication Critical patent/CN1647054A/zh
Application granted granted Critical
Publication of CN1647054B publication Critical patent/CN1647054B/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9036Common buffer combined with individual queues

Abstract

本发明提出一种网络设备驱动体系结构,具有的功能分布于内核空间和用户空间之间。整个网络设备驱动包括内核空间设备驱动(10)和用户空间设备驱动功能(20)。内核空间设备驱动(10)适用于通过内核空间—用户空间接口(15)对用户空间设备驱动功能(20)进行访问。用户空间设备驱动功能(20)适用于通过用户空间—NIC接口(25)在用户空间和NIC(30)之间进行直接访问,并且还适用于互连内核空间—用户空间接口(15)和用户空间-NIC接口(25)以提供对NIC(30)进行组合的内核空间访问和用户空间访问。用户空间设备驱动功能(20)提供对NIC进行直接,零拷贝的用户空间访问,而将要在内核空间和NIC之间传送的信息将通过组合使用内核空间设备驱动(10),用户空间设备驱动功能(20)以及两个相应的接口(15,25)而“通过”用户空间。

Description

网络设备驱动体系结构
技术领域
本发明涉及一种用于高效灵活地访问网络接口控制器(NIC)的网络设备驱动体系结构。
背景技术
计算机软件通常能够分为操作系统软件和应用软件两种类型。操作系统(OS)能够被视为一种资源管理器,使诸如处理器,存储器,输入/输出(I/O)设备和通信设备之类的计算机资源对用户是可用的。同时也提供基本的功能,基于所述功能应用软件能够被写入并执行。操作系统的重要功能包括用户之间共享硬件,防止用户之间相互干扰,资源调度,组织数据以安全迅速地访问,以及支持I/O功能和网络通信。
OS的中心部分通常指的是内核。内核通常只是被认为只是代码的一部分,这些代码共同的组成整个OS,但它是其中最集中使用的一部分代码。内核定义所谓的用户空间是指,在其中应用软件运行,并向用户设备提供服务,包括存储器管理,分配处理资源,并响应来自用户设备或处理的系统调用。内核的其它重要功能包括中断处理,进程管理和同步,以及包括网络通信的I/O管理。
由于许多不同的硬件设备都能够连接于计算机系统,因此一些I/O功能通常实现为与设备无关的普通功能。接着在所谓的设备驱动之内分配与设备相关的功能。这意味着需要访问诸如网络通信设备的特定硬件设备的用户设备向OS提出系统调用,OS依次调用与硬件设备相关的设备驱动。
网络接口控制器(NIC)是一种通常连接于计算机系统以提供诸如以太网或ATM通信的网络通信能力的硬件设备。NIC控制器通常执行较低级别的协议,例如层1(PHY)和层2(MAC,LLC)协议,而较高级别的协议(例如TCP/IP协议组)传统上分配于OS中,以内核模式运行。而且,例如,群集器通常具有运行于以太网之上的所有权协议,因为在系统区域网络(SANs)中,TCP/IP(传输通信协议/网间协议)不是很适合群集器处理。这些所有权协议通常也以内核模式运行。
然而,集中式内核模式(in-kemel)协议处理使用户设备不能实现由下层高速网络所提供的潜在的原始性能。该性能问题主要是由于用户空间和内核空间,被污染的高速缓存(polluted cache),中断和非优化代码之间的信息拷贝所导致的。集中的信息拷贝产生了巨大的开销,尤其是对缺乏的(short)信息,并且是具有标准操作系统的网络子系统的高处理器负载和低吞吐量的主要原因。
随着诸如吉比特以太网,ATM和Infiniband之类的高性能网络通信技术的出现,这个问题已经变得更为显著。将这种高性能通信技术投入使用的主要挑战主要在于建立系统,该系统能够高效地连接这些网络媒介并在两个网络通信设备之间从始至终维持高带宽。
这一点已导致计算机工业开发了支持从用户空间直接访问NIC,并避免在用户空间和内核空间之间的存在信息拷贝的网络设备驱动。用户空间网络访问体系结构类型的最公知的范例是由因特尔公司,微软公司和康柏计算机公司开发的虚拟接口体系结构(VIA)。虚拟接口体系结构(VIA)是用于系统区域网络(SystemArea Networks)的工业标准,支持对NIC进行直接,零拷贝的用户空间访问。VIA体系结构设计用于消除在过去已使传统网络设备成为性能瓶颈的信息拷贝,每个信息的中断和其他内核开销。正如所述,例如在1998年9月9日的因特尔虚拟接口(VI)体系结构开发者指南(Intel Virtual Interface(VI)Architecture Developer’sGuide)和在国际专利申请WO00/41358的说明中,VIA体系结构避免了中间数据拷贝并旁路操作系统内核以获取低等待时间,高带宽的通信。VIA模式包括VI用户和VI提供者。VI用户通常包括用户设备和操作系统通信设备以及VI用户代理。VI提供者通常包括VINIC和VI内核代理的组合。虚拟接口(VI)是VINIC和用户设备或处理之间的直接接口。VI允许NIC直接访问用户设备的存储器以在设备和网络之间进行数据传送操作。VI通常包括发送队列和接收队列,其中每一个都能够直接映射到用户地址空间,从而向网络级别提供直接的用户空间访问并旁路操作系统内核。
技术报告DART-A Low Overhead ATM Network Interface Chip,TR-96-18,1996年8月公开了一种为了通过提供向/从网络进行直接、受保护的设备访问从而得到高带宽、低开销通信而设计的ATM NIC。
VIA体系结构(以及类似体系结构)的主要缺点在于其需要特定的VIA启动的NIC控制器,而且不能在诸如普通以太网NIC控制器之类的现有(off-the-shelf)NIC控制器上运行。由于网络通信的许多功能都依赖于诸如TCP/IP之类的内核级别协议,所以VIA体系结构同时需要VIA启动的NIC和普通以太网(TCP/IP)NIC。因此,VIA体系结构并不优选实施到现有系统中,但通常需要现有系统硬件的重新设计,将另外的NIC和/或NIC端口加入到系统中。重新设计电路板,包括设计,测试,产品加工(handling),保存,备件等。会很容易导致大约(in theorder of)数百万美元的额外花销。
发明内容
本发明克服了现有技术设备的这些和其他缺点。
本发明的一般目的在于对网络接口控制器(NIC)提供高效灵活的访问,消除CPU在通信链路中的瓶颈。
本发明还有一个目的在于提供一个改良的、花销最优化的网络设备驱动体系结构。特别地,如果网络设备驱动体系结构适合实施并集成到现有系统中则是有益的。
本发明的另一个目的在于提供一个稳固灵活的网络设备驱动,该设备驱动不是NIC相关的,并且与任何的现有NIC硬件一起运行。
由所附的权利要求定义的本发明达到了这些以及其他目的。
本发明的总体思想是通过对NIC,优选地对相同NIC端口进行组合的内核空间访问和用户空间访问来提供一种高效灵活并且效能成本合算的网络设备驱动体系结构。与用户空间网络访问体系结构类似,通过对NIC进行直接的用户空间访问,并且最重要的是在内核空间和NIC之间进行用户空间隧道访问(tunneledaccess)才能实现这一点。
从体系结构的角度来说,新颖的网络设备驱动体系结构通常包括内核空间设备驱动以及用户空间设备驱动功能。内核空间设备驱动适用于通过内核空间—用户空间接口在内核空间和用户空间之间进行访问。用户空间设备驱动功能适用于通过用户空间—NIC接口在用户空间和所述NIC之间进行直接访问。该用户空间设备驱动功能也适用于互连内核空间—用户空间接口和用户空间—NIC接口以对NIC进行组合的内核空间访问和用户空间访问。这样就获得了对NIC的高效用户空间访问,而与此同时也使内核级别的协议可以在相同的NIC上运行。
优选地,内核空间设备驱动具有两个不同的操作模式。在第一模式中,运行内核空间设备驱动以通过内核空间—NIC接口直接访问NIC。在第二模式中,也指的是用户空间隧道访问模式,运行内核空间设备驱动以通过用户空间设备驱动功能访问NIC。
有利地是,用户空间设备驱动功能配置为在用户设备的情况下执行,例如实施为用户库功能。为了稳固和安全,当激活用户空间隧道访问模式时,如果用户设备系统崩溃,则操作系统命令内核空间设备驱动转换回第一操作模式。作为第二防御线或作为可选项,内核空间设备驱动可以任选地装备一个定时监视器,如果在预定的时间段没有来自用户空间设备驱动功能的调用,则转换回第一操作模式。
在一个优选实施例中,内核空间设备驱动具有网络设备驱动核心和内核空间代理两个基本的构件。优选地,网络设备驱动核心基于例如从商业卖主所获得的标准网络设备驱动,具有其他的功能使设备驱动在默认模式以及本发明的用户空间隧道访问模式中运行。在默认模式中,网络设备驱动核心运行为一个普通的网络设备驱动,直接访问NIC。在用户空间隧道访问模式中,驱动核心将输出数据传送到内核代理并从内核代理接收输入数据。内核代理管理内核空间—用户空间接口,并支持向/从用户空间设备驱动功能传输信息。内核代理通常包括为不同类型的NIC控制器所共有的功能,因此使特定NIC的标准网络设备驱动容易适合于支持内核空间和NIC之间的用户空间隧道访问的新颖网络设备驱动体系结构。
总之,本发明允许对相同NIC端口上的网络层同时进行用户空间和内核空间访问,从而减少了所需NIC端口的数目并消除了硬件重新设计的需要。通过在相同的NIC之上运行,能够获取更小的开销(footprint)/花销和更好的网络利用。新颖的网络设备驱动体系结构非常适合需要高性能网络通信的设备以及依赖内核级别协议的功能。这种设备的例子能够在嵌入式环境,通信系统等中找到。
应该理解的是,表述“NIC访问”和“对NIC进行访问”既包括向网络级别发送信息也包括从网络级别接收信息。
新颖的网络设备驱动体系结构的其他优势包括:
-减少硬件空间和能量损耗,其对于嵌入类型的系统是尤为重要的;
-更少的布线;
-减少相关通信开关所需的端口数目;从而允许使用更小和更便宜的开关;和
-在网络中高效使用带宽。
在阅读以下对本发明实施例的描述中将认识到本发明所提供的其他优势。
附图说明
参照以下说明和附图将会更好地理解本发明以及本发明的其他目的和优势,其中:
图1是根据本发明优选实施例的网络设备驱动体系结构的概略框图;
图2示例了对根据本发明的网络设备驱动内的零拷贝信息传送所支持的NIC进行组合的用户空间访问和内核空间访问。
图3是示例根据本发明的网络设备驱动体系结构的优选实施的示意框图;
图4是根据本发明优选实施例的网络访问方法的示意流程图;
图5-10是示例图3的分布式网络设备驱动体系结构中的不同通信量情况的简化视图;以及
图11示例了整个系统设备的具体范例。
具体实施方式
贯穿附图,相同的附图标记将用于相应的或相同的元件。
图1是根据本发明优选实施例的网络设备驱动体系结构的概略框图。网络设备驱动体系结构在其系统环境中被示出,包括用户空间,内核空间以及网络空间。
本发明提出了一种网络设备驱动体系结构,在其中一小部分标准设备驱动功能分给了提供直接NIC通信的用户空间,而通过用户空间,内核空间设备驱动具有NIC访问的其他功能。由此,网络设备驱动功能分给了内核空间和用户空间,并且整个网络设备驱动包括内核空间设备驱动10和用户空间设备驱动功能20。内核空间设备驱动10适于通过内核空间—用户空间接口15对用户空间设备驱动功能20进行访问。用户空间设备驱动功能20适于通过用户空间—NIC接口25在用户空间和NIC30之间进行直接访问,并还适用于互连内核空间—用户空间接口15和用户空间—NIC接口25以提供对NIC30进行组合的内核空间访问和用户空间访问。用户空间设备驱动功能20提供对NIC进行直接,零拷贝的用户空间访问,而将要在内核空间和NIC之间传送的信息将通过组合使用内核空间设备驱动10,用户空间设备驱动功能20以及两个相应的接口15,25而“通过”用户空间。这样,获得了对NIC30的高效用户空间访问,而与此同时也允许内核级别协议45在相同的NIC上运行。本发明的网络设备驱动体系结构支持对到/来自用户设备40的用户空间通信使用专用NIC端口,但也支持对内核级别的协议和用户级别的协议高效共享相同的端口。通常共享相同NIC端口的可能性解决了花销最优化的问题。共享相同NIC端口的另一个重要好处是可以将新颖的设备驱动体系结构集成到现有系统中而无需硬件的改变。从而可以避免系统的重新设计,节约了大约几百万美元的花销。
优选地,内核空间设备驱动10具有两个不同的操作模式。在第一模式中,内核空间设备驱动10作为标准网络设备驱动运行通过内核空间—NIC接口35直接访问NIC30。在第二模式中,也指的是用户空间隧道访问模式,运行内核空间设备驱动10以利用上述的用户空间隧道机制访问NIC25。
有利的是,用户空间设备驱动功能20配置为在用户设备40的情况下执行,例如实施为用户库功能。重要的是内核级别协议45在用户设备崩溃或死锁情况下不会停滞。在用户空间隧道访问模式中,如果用户设备系统崩溃,则操作系统命令内核空间设备驱动10转换回第一操作模式。在用户设备系统崩溃之前,现在内核空间设备驱动10访问与用户设备访问的端口相同的NIC端口。作为第二防御线或作为可选项,内核空间设备驱动10可以装备一个任选的软件定时监视器12,如果在预定的时间段没有来自用户空间设备驱动功能20的调用,则转换回第一操作模式。可选地,也可以将一种基于计数器的硬件定时监视器连接到网络设备驱动体系结构。
在本发明的优选实施例中,新颖的网络设备驱动体系结构之内的所有通信接口15,25和35都支持零拷贝的信息传送。为了更好地理解本发明,现将参照图2说明对网络设备驱动之内的零拷贝信息传送所支持的NIC进行组合的用户空间访问和内核空间访问的例子。优选地,每个接口15,25和35是基于一个共享的存储器结构,例如以缓冲器队列的形式。每个接口通常与一个发送队列(KTX;TX;NTX)和一个接收队列(KRX;RX;NRX)相关联。缓冲器队列通常适于保存指针信息,并通过写尾标并从头读取而被访问。指针信息指向真正的数据,例如存储在公共存储器中的信息。
现在将描述对于用户级别的协议和对于内核级别协议,由用户设备向NIC方向的信息传送。显然该信息传送与在相反方向的信息传送是类似的。
在用户空间终端协议的情况下,将要从用户设备40发送到NIC30的信息MSG-1存储在公共系统存储器50中或能够被相关系统组件访问的任何其他存储器中。系统存储器50中指向(虚线)相应存储地址的指针P-1连同NIC访问请求一起被传送到用户空间设备驱动功能20。用户空间设备驱动功能20将指针放入用户空间—NIC接口25的TX队列中(位于用户地址空间中)。随后,NIC30通过从TX队列读取指针并在系统存储器50中相应位置执行直接存储器存取(DMA)以获取信息而使用信息。
在用户设备40需要内核级别协议的情况下,用户设备产生一个相应的系统调用,及将要传送到NIC30的信息拷贝到内核空间并由相关的内核空间协议45进行处理。一旦信息MSG-2在内核空间中,则通常将不会再有信息拷贝。相反,内核级别协议45将系统存储器50中指向(虚线)信息存储位置的指针P-2传送到内核空间设备驱动10,而内核空间设备驱动10将指针插入到内核空间—用户空间接口15的KTX队列中。用户空间设备驱动功能20轮询KTX队列并将指针移动到用户空间—NIC接口25的TX队列中。一旦指针已移动到队列的头(head),则NIC30将读取该指针并将相应的信息通过DMA访问取到系统存储器50。
优选地,所有的缓冲器队列由内核空间设备驱动分配于内核地址空间中。队列映射到用户空间设备驱动功能的地址空间。为了使队列对于NIC来说是可看到的,首先将它们映射到NIC总线地址空间,然后将所获得的地址被写入特定的NIC寄存器。
通过利用信息指针而不是完全的信息,将不会有目前的信息拷贝。
图3是示例根据本发明的网络设备驱动体系结构的优选实施的示意框图。优选地,内核空间设备驱动10具有网络设备驱动核心(NDD核心)14和内核空间代理16两个基本的构件。NDD核心14和内核代理16与用户空间设备驱动功能20一起定义了整个网络设备驱动体系结构。
用户空间信息在用户空间和NIC之间相互交换而无需内核参与,而且由于用户空间设备驱动功能通常以轮询模式运行,因此将不会存在每个信息中断。从内核级别用户产生的信息经由内核代理16,用户空间设备驱动功能20以及相应的接口15,25在NDD核心14和NIC30之间穿过。
诸如Tru64,Linux,Windows和OSE的大多数操作系统都支持某些形式的设备驱动结构,这些设备驱动结构包括一系列规则,接口和关于如何开发设备驱动的指导。这些结构被很好地保存(documented),并且OS卖主通常提供生成设备驱动模板的工具,从而节省开发新设备驱动的宝贵的设计时间和精力。网络设备驱动核心14以及内核代理16通常都相应于适合的设备驱动结构而执行。
优选地,网络设备驱动核心14是基于标准网络设备驱动的(例如从商业卖主获得的),具有其他的功能使设备驱动既可以在默认模式也可以在本发明的用户空间隧道访问模式中运行。设计基础网络设备驱动的资源代码通常能够从设备驱动卖主那获得,或者通过使用免费的可利用资源代码(例如Linux,NetBSD和FreeBSD)。允许用户空间穿过的设计基础改进通常能够通过将大约50行代码(设计基础代码的~1%)添加到设计基础设备驱动中来实现。也可以通过使用用于生成设备驱动的任何可利用工具来设计内部的NDD核心14。
在默认模式中,NDD核心14运行为普通的网络设备驱动,直接访问NIC。
在用户空间隧道访问模式中,NDD核心14将输出数据传送到内核代理16并从内核代理接收输入数据。由于用户空间设备驱动功能20通常以轮询模式运行,因此优选地,NDD核心或用户空间设备驱动功能也屏蔽与信息处理相关的中断。
便利地,内核代理16执行一些初始步骤,分配邻近存储器,实现内核空间用户空间接口15以及入/出NDD核心14的接口,并将邻近存储器和映射了配置(configuration)静态(state)寄存器(CSR)的存储器映射到用户空间设备驱动功能20的地址空间。内核代理16支持通过内核空间—用户空间接口15在NDD核心14和用户空间设备驱动功能20之间进行的信息传送。由于内核空间—用户空间接口的FIFO队列KTX,KRX被分配于内核地址空间并映射到用户地址空间,因此在内核代理16和用户空间设备驱动功能20之间不需要信息拷贝。内核代理模块通常不依赖于系统所使用的特定NIC,并能够显著地并同步地支持不同类型的NIC控制器,包括快速以太网,吉比特以太网和ATM NIC控制器。
内核代理16也可适于使用用户空间设备驱动功能20监视任何处理的状态。这使得内核代理在用户处理失败的情况下命令NDD核心14转换回默认模式成为可能。
在通常情况下,内核代理16可以通过大约200行新代码与大约300行标准设备驱动结构代码一起实现。
正如以上所述,用户空间设备驱动功能20是整个设备驱动功能的一小部分,并优选实施为在用户空间中执行的用户库功能。它通常以轮询模式运行并支持用户空间和NIC之间的直接信息交换。通常,用户空间设备驱动功能可以由大约200行代码实现。
在一边是诸如TCP/IP和DLI(数据链接接口)之类的内核级别协议45和另一边是NDD核心14之间的接口是由OS提供的现有网络设备驱动API(应用编程接口)。
在NDD核心14和内核代理16之间的接口通常是支持通过特定NIC发送/接收信息的API。
在内核代理14和用户空间设备驱动功能20之间的接口15优选实现为标准文档接口,该接口支持向内核代理建立连接的用户空间设备驱动功能请求,将邻近的缓冲存储器和从内核代理映射CSR的存储器映射到设备情况(context)中。如果需要的话,它也可以支持在内核代理中执行的定时监视器功能并支持从内核代理16到用户空间设备驱动功能20的NIC状态通知。在内核代理14和用户空间设备驱动功能20之间的信息传送是通过如前所述的共享存储器结构而实现的。
在用户设备40和用户空间设备驱动功能20之间的接口通常是API,API连同以用户空间设备驱动功能20和NIC30之间的接口25为基础的FIFO队列,支持直接在用户地址空间和NIC30之间发送/接收信息。该接口可以实现为标准VI接口。
图4是根据本发明优选实施例的网络访问方法的流程图。在步骤S1,通过用户空间NIC接口提供用户空间和NIC之间的直接访问。在步骤S2,与默认操作模式相关,可以通过内核空间—NIC接口提供内核空间和NIC之间的直接访问。在用户空间隧道访问模式,以两个步骤提供内核空间和NIC之间的访问,通过在步骤S3提供内核空间—用户空间接口和通过在步骤S4互连内核空间—用户空间接口和直接用户空间—NIC接口。如果设备系统崩溃则在步骤S5转换回默认模式,这样保持了稳固性和可靠性。作为第二道防线,或者作为步骤S5的可替换步骤,在步骤S6可以使用定时监视器,如果在预定时间没有来自用户空间的调用,则转换回默认模式。在下文中,将参照图5-10描述在图3的分布式网络设备驱动体系结构中许多不同通信(traffic)情况的示例,其中每个附图只示例与各个通信情况相关的那些系统元件。
计算机系统引导并装入操作系统。操作系统装载了内核空间的网络设备驱动以允许访问网络并更为具体地访问网络接口控制器(NIC)30。内核空间设备驱动将执行标准的初始步骤,作为设计基础网络设备驱动(NDD),也称为NDD核心14。
另一个功能是由需要(call for)由驱动控制的每个NIC的附加步骤注册到内核代理(未示出)。在注册步骤中,CSR指针被发送到内核代理,并且一些回复功能也注册在内核代理中(为了在模式之间转换,重启NIC,推动通过内核代理接收的返回信息,错误报告等)。
对于NDD驱动所控制的每个NIC,操作模式都被设置为默认,正如图5和6所示,这意味着信息流将从NDD核心14直接到NIC30并反之亦然。在输出方向,如图5所示,NDD核心14运行为设计基础NDD。另一个功能涉及检查用户空间隧道模式对于这个接口是否是激活的。如果用户空间隧道访问模式是关闭的,则将传给NIC的信息放入NDD核心14的NTX环中。在输入方向,如图6所示,NDD核心14运行为设计基础NDD,并将来自NIC的信息放入NRX环中。
接着,初始化并启动用户设备。在用户设备情况下执行的用户空间设备驱动功能20对内核代理16建立连接并表示其想与哪个端口进行通信。它还向内核代理16请求将DMA区域和CSR寄存器映射到其自己的地址空间,并且内核代理16将对于NIC来说可以看到的存储器映射到用户地址空间。用户空间设备驱动功能20命令内核代理16转换到用户空间隧道访问模式。内核代理将命令提交给NDD核心14,该NDD核心14首先执行一个重置接着标记用户空间隧道访问模式对于该特定NIC接口是激活的。然后NDD核心14执行NIC30的基本初始化,并且优选地,内核代理16初始化定时监视器功能。
用户空间设备驱动功能20在NIC30中设置记录表示TX,RX环位于何处。也可以设置NIC记录来提高本发明所使用的PCI(外部元件扩展接口)或任何其他总线结构的性能。随后,用户空间设备驱动功能20启动TX,RX机制(engines)。
如图7所示,在从用户空间直接到NIC的输出方向,用户设备将信息描述符(与VIA体系结构中使用的描述符类似)或简单的指针传送到用户空间设备驱动功能20,用户空间设备驱动功能20将信息描述符放入位于用户地址空间中的TX环中。通过利用信息描述符/指针,而不是完全的信息,将不会再有信息拷贝。NIC30通过利用TX环中的信息描述符找到公共存储器中的相应位置来使用信息。
如图8所示,在内核级别用户到NIC的输出方向,NDD核心14运行为设计基础NDD,具有另一个功能,就是检查用户空间隧道访问模式对于这个NIC接口是否是激活的。如果隧道访问模式是激活的,则NDD核心14将输入信息描述符传送到内核代理16,内核代理16将描述符放入用于与用户空间设备驱动功能20进行通信的KTX环中。
以可设置的间隔,例如每隔1ms,用户空间设备驱动功能20通常将轮询KTX环并将描述符移动插入到TX环中,所述TX环用于用户空间设备驱动功能20和NIC30之间的通信。最终NIC30通过利用传送来的信息描述符从公共存储器获取到信息来使用信息。
图9和10中示例了从NIC输入方向的两种不同通信情况。NIC30将与输入信息相应的描述符放入RX环中,并且用户空间设备驱动功能20轮询将要输入的信息描述符。信息描述符从RX环中被取出。对于每个信息,检查其(以太网)类型是否匹配用户设备所希望的类型。如图9所示,如果匹配,则将信息传送给用户。相应于图10,如果不匹配,则将信息描述符插入到KRX环中。以可设置的间隔,例如每隔1ms,用户空间设备驱动功能20调用内核代理16。然后内核代理16从KRX环中获取与输入信息相应的描述符并将它们传送到NDD核心14,NDD核心14执行必要的操作以将信息传送给内核级别用户。
如果用户设备系统崩溃,则操作系统通常将通知内核代理16,接着内核代理16将命令NDD核心14转换回默认模式。作为任选的第二道防线或者作为可选择项,内核代理16可以装备一个定时监视器以在操作系统由于某种原因未能通知内核代理16用户设备已经系统崩溃的时候解决问题。例如,定时监视器可以以这种方式实现:如果在预定时间,例如10ms,没有来自用户空间设备驱动功能20的调用,则其命令NDD核心14转换回默认模式。这将保证NDD基本功能不会消失多于预定的最小时间周期。
图11中示例了整个系统设备的具体例子。整个系统包括:
●两个中央处理器基线板(CPBB-A,CPBB-B)。每个CPBB线路板包括一个或多个Alpha服务器(EV68ab,667MHz)和1GB的RAM。
●两个更新总线线路板(UPBB-A,UPBB-B),一个CPBB一个。每个UPBB线路板包括一个因特而82543GC吉比特以太网NIC,以及其他UPBB元件。
●在CPU和cPCI-PCI电桥之间的32字节/66MHz cPCI总线,和cPCI-PCI桥和因特而82543GC NIC之间的64字节/33MHz PCI总线。
●在两对CPBB-UPBB之间的吉比特以太网光纤连接(SX),两对CPBB-UPBB对头拼接(back-to-back)。
●两个基本I/O单元,其中每个都连接到cPCI-PCI电桥,也连接到任选的网络集线器并串行连接到PC-控制台。
在样机测试中,一个CPBB用于执行服务器情况下的测试程序,而另一个CPBB用于执行客户情况下的测试程序。PC-控制台用于访问靠CPBB运行的设备。
测试显示在用户空间利用高效的协议终端确实可以消除CPU在通信链路中的瓶颈。在全双工测试中,PCI总线成为瓶颈,而在信息大于498个八位字节的半双工测试中,以太网成为瓶颈。由于PCI总线是共享总线,所以其成为瓶颈的事实不足为奇。当今市场上存在更好的PCI总线。这种特殊的因特尔NIC支持64字节/66MHz PCI总线,与使用上述的64字节与/33MHz PCI总线相比是基本上双倍的容量。当今市场上的PCI-X也以64字节/133MHz运行。PCI-X2.0将使总线以双倍数据率(266MHz)和四倍数据率(532MHz)运行。另外,PCI-SIG(PCI有共同特殊观点或要求的群体)将发布PCI3.0,其转换到串行连接,为软件用户提供了更快的吞吐能力,更小的开销(footprint)和向后的兼容性。显然地,存在提供系统中PCI总线吞吐量的便利途径。
测试已经显示,利用在相同以太网端口用户空间和内核空间协议共存的方法,可以获取通过具有大约28.73%的处理器负载的PCI和吉比特以太网,在两个基于Alpha的CPBB服务器之间的每秒435000信号对的稳定产量。在相同的处理器环境中使用标准网络设备驱动,处理器负载将以每秒46000信号对的速度达到100%。
以上所述的实施例只是给出示例,而且应该理解的是本发明并不局限于此。注意这一点也是很重要的:本发明不依赖通信技术(以太网,ATM,Infiniband,……),操作系统(Tru64,Linux,Solaris,Win,……)或主机CPU(Alpha,因特尔,PowerPC,……)。
而且,本发明涉及所有类型的信息和数据以及所有类型的网络,包括LAN(局域网),MAN(城域网),WAN(广域网)和SAN(系统区域网)。
保持本文所公开和要求的基本原则的其他修改,变化和改进都在本发明的范围之内。

Claims (29)

1、一种用于在操作系统内核空间和网络接口控制器(NIC)之间以及用户空间和所述NIC之间的进行访问的网络设备驱动体系结构,包括:
-内核空间设备驱动器,适于通过内核空间-用户空间接口,在内核空间和用户空间之间进行访问,以及
-用户空间设备驱动器功能,适于通过用户空间-NIC接口在用户空间和所述NIC之间进行直接访问,并适于互连所述内核空间-用户空间接口和所述用户空间-NIC接口,以对所述NIC进行组合的内核空间访问和用户空间访问。
2、根据权利要求1的网络设备驱动体系结构,其中所述内核空间设备驱动器适于建立与所述用户空间设备驱动功能相关的所述内核空间-用户空间接口。
3、根据权利要求1的网络设备驱动体系结构,其中所述用户空间设备驱动功能适于从与所述内核空间-用户空间接口和所述用户空间-NIC接口其中之一相关的存储缓冲器获取指针信息,该指针信息指向公共存储器中的数据,并将所述指针信息插入与另一个所述接口相关的存储缓冲器中,从而互连所述内核空间-用户空间接口和所述用户空间-NIC接口。
4、根据权利要求1的网络设备驱动体系结构,其中每个所述内核空间-用户空间接口和所述用户空间-NIC接口与发送缓冲器和接收缓冲器两个存储缓冲器相关。
5、根据权利要求4的网络设备驱动体系结构,其中对于输出内核级别协议通信,所述内核空间设备驱动器适于将指向公共存储器中的数据的指针信息插入到与所述内核空间-用户空间接口相关的发送缓冲器中,而所述用户空间设备驱动功能适于从那获取所述指针信息并将其插入到与所述用户空间-NIC接口相关的发送缓冲器中,而所述NIC适于从与所述用户空间-NIC接口相关的发送缓冲器中获取所述指针信息,并基于所获得的指针信息从所述公共存储器读取相应数据。
6、根据权利要求4的网络设备驱动体系结构,其中对于输入内核级别协议通信,所述NIC适于将指向公共存储器中的数据的指针信息插入到与所述用户空间-NIC接口相关的接收缓冲器内,而所述用户空间设备驱动功能适于从与所述用户空间-NIC接口相关的接收缓冲器获取所述的指针信息,并将其插入到与所述内核空间-用户空间接口相关的接收缓冲器中,而所述内核空间设备驱动适于获取所述指针信息以传送到内核级别协议,内核级别协议基于指针信息从所述公共存储器读取相应数据。
7、根据权利要求1的网络设备驱动体系结构,其中所述用户空间设备驱动功能配置为在用户应用程序青况下执行。
8、根据权利要求7的网络设备驱动体系结构,其中所述用户空间设备驱动功能实施为用户空间库功能。
9、根据权利要求1的网络设备驱动体系结构,其中在第一操作模式中,运行所述内核空间设备驱动器,以通过内核空间-NIC接口直接访问所述NIC,在第二操作模式,运行所述内核空间设备驱动,以通过所述内核空间-用户空间接口,所述用户空间设备驱动功能和所述用户空间NIC接口访问所述NIC。
10、根据权利要求9的网络设备驱动体系结构,其中所述用户空间设备驱动功能配置为在用户应用程序情况下执行,而所述内核空间设备驱动器适于响应用户驱动程序失败而转换到所述第一操作模式。
11、根据权利要求9或10的网络设备驱动体系结构,其中所述内核空间设备驱动包括定时监视器功能,如果在一段预定时间没有来自所述用户空间设备驱动功能的调用,则转换到所述第一操作模式。
12、根据权利要求9的网络设备驱动体系结构,其中所述内核空间设备驱动包括:
-内核空间代理,用于管理所述内核空间用户空间接口;
-网络设备驱动核心,运行以在所述第一操作模式直接访问所述NIC,并运行以在所述第二操作模式,将要输出的数据发送到所述内核空间代理,并从所述内核空间代理接收输入数据。
13、根据权利要求12的网络设备驱动体系结构,其中所述用户空间设备驱动功能配置为在用户驱动程序情况下执行,而所述内核空间代理适于通过命令所述网络设备驱动核心转换到所述第一操作模式来响应用户设备失败。
14、根据权利要求12或13的网络设备驱动体系结构,其中所述内核空间代理包括定时监视器功能,如果在一段预定时间没有来自所述用户空间设备驱动功能的调用,则命令所述网络设备驱动核心转换到所述第一操作模式。
15、一种系统,提供对网络接口控制器(NIC)的操作系统内核空间访问以及用户空间访问,所述系统包括用于对相同NIC进行组合的内核空间访问和用户空间访问的装置。
16、根据权利要求15的系统,其中所述用于对相同NIC进行组合的内核空间访问和用户空间访问的装置包括:
-用于直接在用户空间和NIC之间进行访问的装置;以及
-用于在内核空间和所述NIC之间进行用户空间隧道访问的装置。
17、一种用于在操作系统内核空间和网络接口控制器(NIC)之间以及用户空间和所述NIC之间进行访问的方法,所述方法包括以下步骤:
-通过内核空间-用户空间接口在内核空间和用户空间之间进行访问;
-通过用户空间-NIC接口在用户空间和所述NIC之间进行直接访问;以及
-互连所述内核空间-用户空间接口和所述用户空间NIC接口以在内核空间和所述NIC之间进行用户空间隧道访问。
18、根据权利要求17的方法,其中所述互连步骤包括以下步骤:
-从与所述内核空间-用户空间接口和所述用户空间-NIC接口其中之一相关的存储缓冲器获取指针信息,该指针信息指向公共存储器中的数据,并
-将所述指针信息插入与另一个所述接口相关的存储缓冲器中。
19、根据权利要求17的方法,其中所述NIC访问功能分布在内核空间设备驱动器和用户空间设备驱动功能之间。
20、根据权利要求19的方法,还包括以下步骤,对于输出内核级别协议通信,所述内核空间设备驱动器将指向公共存储器中的数据的指针信息插入到与所述内核空间-用户空间接口相关的发送缓冲器中的步骤,和所述用户空间设备驱动功能从那获取所述指针信息并将其插入到与所述用户空间-NIC接口相关的发送缓冲器中,以及所述NIC从与所述用户空间NIC接口相关的发送缓冲器中获取所述指针信息,并基于所获得的指针信息从所述公共存储器读取相应数据。
21、根据权利要求19的方法,还包括以下步骤,对于输入内核级别协议通信,所述NIC将指向公共存储器中的数据的指针信息插入到与所述用户空间-NIC接口相关的接收缓冲器内,和所述用户空间设备驱动功能从与所述用户空间-NIC接口相关的接收缓冲器获取所述的指针信息,并将其插入到与所述内核空间-用户空间接口相关的接收缓冲器中,以及所述内核空间设备驱动器获取所述指针信息以传送到内核级别协议,内核级别协议基于指针信息从所述公共存储器读取相应数据。
22、根据权利要求17的方法,其中所述在用户空间和所述NIC之间进行直接访问的步骤和所述互连步骤都是在用户应用程序的情况下执行的。
23、根据权利要求22的方法,其中所述在用户空间和所述NIC之间进行直接访问的步骤和所述互连步骤是通过将用户空间设备驱动功能实施为用户空间库功能而执行的。
24、根据权利要求17的方法,还包括以下步骤:
-在内核空间设备驱动的第一操作模式中,通过内核空间-NIC接口从所述内核空间设备驱动直接访问所述NIC;
-在所述内核空间设备驱动的第二操作模式中,通过互连的内核空间-用户空间接口和用户空间-NIC接口访问所述NIC。
25、根据权利要求24的方法,其中所述在用户空间和所述NIC之间进行直接访问的步骤和所述互连步骤都是在用户设备的情况下执行的,并且操作系统命令所述内核空间设备驱动转换到所述第一操作模式以响应用户设备失败。
26、根据权利要求24或25的方法,还包括以下步骤,如果在预定时间内没有用户空间调用所述内核空间设备驱动,则转换到所述第一操作模式。
27、一种方法,用于提供对网络接口控制器(NIC)的操作系统内核空间访问以及用户空间访问,所述方法包括对相同NIC提供组合的内核空间访问和用户空间访问的步骤。
28、根据权利要求27的方法,其中所述对相同NIC提供组合的内核空间访问和用户空间访问的步骤包括以下步骤:
-直接在用户空间和NIC之间进行访问;以及
-在内核空间和所述NIC之间进行用户空间隧道访问。
29、根据权利要求27的方法,其中组合的内核空间访问和用户空间访问是对相同NIC端口提供的。
CN028291557A 2002-06-19 2002-06-19 双模网络设备驱动设备、系统和方法 Expired - Fee Related CN1647054B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/SE2002/001225 WO2004001615A1 (en) 2002-06-19 2002-06-19 A network device driver architecture

Publications (2)

Publication Number Publication Date
CN1647054A true CN1647054A (zh) 2005-07-27
CN1647054B CN1647054B (zh) 2010-09-08

Family

ID=29997657

Family Applications (1)

Application Number Title Priority Date Filing Date
CN028291557A Expired - Fee Related CN1647054B (zh) 2002-06-19 2002-06-19 双模网络设备驱动设备、系统和方法

Country Status (10)

Country Link
US (2) US7451456B2 (zh)
EP (1) EP1514191B1 (zh)
CN (1) CN1647054B (zh)
AT (1) ATE443291T1 (zh)
AU (1) AU2002345467A1 (zh)
BR (1) BR0215746B1 (zh)
DE (1) DE60233760D1 (zh)
DK (1) DK1514191T3 (zh)
ES (1) ES2333519T3 (zh)
WO (1) WO2004001615A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101163074B (zh) * 2007-11-12 2010-12-08 中兴通讯股份有限公司 一种WiMAX终端设备主机驱动方法
CN101252527B (zh) * 2008-04-09 2011-01-26 腾讯科技(深圳)有限公司 一种网络中转的方法、网络中转服务器和内核管理模块
CN102158493A (zh) * 2011-04-15 2011-08-17 奇智软件(北京)有限公司 一种Cookie解析方法、装置及一种客户端
CN1996930B (zh) * 2006-01-06 2011-10-05 惠普开发有限公司 用于通信接口的队列头高速缓存
CN102209042A (zh) * 2011-07-21 2011-10-05 迈普通信技术股份有限公司 一种避免先入先出队列溢出的方法及设备
CN105512286A (zh) * 2015-11-27 2016-04-20 浪潮(北京)电子信息产业有限公司 一种读写数据免拷贝系统与方法
CN109688058A (zh) * 2018-12-19 2019-04-26 迈普通信技术股份有限公司 报文处理方法、装置及网络设备

Families Citing this family (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2002345467A1 (en) * 2002-06-19 2004-01-06 Telefonaktiebolaget L M Ericsson (Publ) A network device driver architecture
GB0221464D0 (en) * 2002-09-16 2002-10-23 Cambridge Internetworking Ltd Network interface and protocol
US7443845B2 (en) * 2002-12-06 2008-10-28 Cisco Technology, Inc. Apparatus and method for a lightweight, reliable, packet-based transport protocol
US7475142B2 (en) * 2002-12-06 2009-01-06 Cisco Technology, Inc. CIFS for scalable NAS architecture
US7411973B2 (en) * 2003-03-11 2008-08-12 Broadcom Corporation System and method for interfacing with a management system
US7581033B2 (en) * 2003-12-05 2009-08-25 Unisys Corporation Intelligent network interface card (NIC) optimizations
US7506343B2 (en) * 2004-08-19 2009-03-17 International Business Machines Corporation System and method for passing information from one device driver to another
US7694312B2 (en) * 2004-09-10 2010-04-06 Pleora Technologies Inc. Methods and apparatus for enabling bus connectivity over a data network
US8121148B2 (en) * 2005-03-24 2012-02-21 Ixia Protocol stack using shared memory
US7414975B2 (en) * 2005-03-24 2008-08-19 Ixia Protocol stack
US20060242270A1 (en) * 2005-04-21 2006-10-26 Microsoft Corporation Isolation of user-mode device drivers
CN100351788C (zh) * 2005-05-18 2007-11-28 大唐移动通信设备有限公司 嵌入式设备的驱动方法
DE602006013128D1 (de) 2005-06-15 2010-05-06 Solarflare Comm Inc Empfangen von daten gemäss eines datentransferprotokolls von daten, die ein beliebiges einer mehrzahl von empgangsgeräten gerichtet sind
US20070011358A1 (en) * 2005-06-30 2007-01-11 John Wiegert Mechanisms to implement memory management to enable protocol-aware asynchronous, zero-copy transmits
US7596644B2 (en) * 2006-01-11 2009-09-29 Solarflare Communications, Inc. Transmit rate pacing system and method
US8572729B1 (en) * 2006-01-30 2013-10-29 Mcafee, Inc. System, method and computer program product for interception of user mode code execution and redirection to kernel mode
US8116312B2 (en) * 2006-02-08 2012-02-14 Solarflare Communications, Inc. Method and apparatus for multicast packet reception
US20070204278A1 (en) * 2006-02-24 2007-08-30 Radzykewycz Tim O Driver services publication
US9686117B2 (en) * 2006-07-10 2017-06-20 Solarflare Communications, Inc. Chimney onload implementation of network protocol stack
US9948533B2 (en) 2006-07-10 2018-04-17 Solarflare Communitations, Inc. Interrupt management
US8874780B2 (en) 2006-07-17 2014-10-28 Qualcomm Incorporated Data buffering and notification system and methods thereof
EP2047379B1 (en) * 2006-07-27 2012-02-08 ConteXtream Ltd. Distributed edge network
CN100428171C (zh) * 2006-12-08 2008-10-22 杭州华三通信技术有限公司 数据平面与控制平面之间的通讯方法
GB2446172B (en) * 2007-01-30 2009-01-21 Hewlett Packard Development Co Control of data transfer
US7925795B2 (en) * 2007-04-30 2011-04-12 Broadcom Corporation Method and system for configuring a plurality of network interfaces that share a physical interface
US8205218B1 (en) * 2007-06-29 2012-06-19 Emc Corporation Data storage system having common software environment
US7950025B1 (en) * 2007-06-29 2011-05-24 Emc Corporation Common software environment
US7950022B1 (en) * 2007-06-29 2011-05-24 Emc Corporation Techniques for use with device drivers in a common software environment
EP2168052A4 (en) * 2007-07-16 2011-03-09 Bigfoot Networks Inc DATA BUFFER AND NOTIFICATION SYSTEM AND RELATED METHODS
US8225329B1 (en) * 2007-09-13 2012-07-17 Juniper Networks, Inc. Tail synchronized FIFO for fast user space packet access
US20090089475A1 (en) * 2007-09-28 2009-04-02 Nagabhushan Chitlur Low latency interface between device driver and network interface card
US8929372B2 (en) * 2007-10-30 2015-01-06 Contextream Ltd. Grid router
US8185783B2 (en) * 2007-11-22 2012-05-22 Microsoft Corporation Split user-mode/kernel-mode device driver architecture
US8239486B2 (en) * 2008-03-19 2012-08-07 Oracle International Corporation Direct network file system
US8359603B1 (en) * 2008-03-28 2013-01-22 Emc Corporation Techniques for inter-user-space communication
US8467295B2 (en) 2008-08-21 2013-06-18 Contextream Ltd. System and methods for distributed quality of service enforcement
US8271996B1 (en) * 2008-09-29 2012-09-18 Emc Corporation Event queues
US8379516B2 (en) * 2009-12-24 2013-02-19 Contextream Ltd. Grid routing apparatus and method
US8634302B2 (en) 2010-07-30 2014-01-21 Alcatel Lucent Apparatus for multi-cell support in a network
US8504744B2 (en) * 2010-10-28 2013-08-06 Alcatel Lucent Lock-less buffer management scheme for telecommunication network applications
US8737417B2 (en) * 2010-11-12 2014-05-27 Alcatel Lucent Lock-less and zero copy messaging scheme for telecommunication network applications
US8730790B2 (en) 2010-11-19 2014-05-20 Alcatel Lucent Method and system for cell recovery in telecommunication networks
US8861434B2 (en) * 2010-11-29 2014-10-14 Alcatel Lucent Method and system for improved multi-cell support on a single modem board
US10873613B2 (en) 2010-12-09 2020-12-22 Xilinx, Inc. TCP processing for devices
US9258390B2 (en) 2011-07-29 2016-02-09 Solarflare Communications, Inc. Reducing network latency
US9674318B2 (en) 2010-12-09 2017-06-06 Solarflare Communications, Inc. TCP processing for devices
US9600429B2 (en) 2010-12-09 2017-03-21 Solarflare Communications, Inc. Encapsulated accelerator
US8533812B1 (en) * 2011-03-03 2013-09-10 Symantec Corporation Systems and methods for securing access to kernel devices
US9357482B2 (en) 2011-07-13 2016-05-31 Alcatel Lucent Method and system for dynamic power control for base stations
US9081586B2 (en) * 2011-11-29 2015-07-14 Futurewei Technologies, Inc. Systems and methods for customizing optimization/transformation/ processing strategies
CN102520957A (zh) * 2011-12-19 2012-06-27 厦门雅迅网络股份有限公司 一种嵌入式系统的软件分离设计的方法
US9524197B2 (en) * 2012-09-06 2016-12-20 Accedian Networks Inc. Multicasting of event notifications using extended socket for inter-process communication
US10505747B2 (en) 2012-10-16 2019-12-10 Solarflare Communications, Inc. Feed processing
US9742877B2 (en) 2012-12-04 2017-08-22 International Business Machines Corporation Clustering support across geographical boundaries
CN103078720B (zh) * 2012-12-28 2015-11-25 华为技术有限公司 报文处理方法及装置
US9378046B1 (en) 2013-03-13 2016-06-28 Emc Corporation Manipulating hardware using a layered device driver
US9459910B1 (en) * 2013-03-13 2016-10-04 Emc Corporation Controlling a layered driver
US9436621B1 (en) * 2013-03-13 2016-09-06 Emc Corporation Layered device driver
US10454714B2 (en) 2013-07-10 2019-10-22 Nicira, Inc. Method and system of overlay flow control
US10587689B2 (en) * 2014-02-14 2020-03-10 Western Digital Technologies, Inc. Data storage device with embedded software
US9483420B2 (en) * 2014-02-28 2016-11-01 Ncr Corporation Self-service terminal (SST) device driver
US9436395B2 (en) 2014-03-14 2016-09-06 Advanced Micro Devices, Inc. Mechanisms to save user/kernel copy for cross device communications
US9584628B2 (en) 2015-03-17 2017-02-28 Freescale Semiconductor, Inc. Zero-copy data transmission system
US10135789B2 (en) 2015-04-13 2018-11-20 Nicira, Inc. Method and system of establishing a virtual private network in a cloud service for branch networking
US10838852B2 (en) * 2015-04-17 2020-11-17 Samsung Electronics Co., Ltd. System and method to extend NVME queues to user space
US11036533B2 (en) 2015-04-17 2021-06-15 Samsung Electronics Co., Ltd. Mechanism to dynamically allocate physical storage device resources in virtualized environments
US10331616B2 (en) * 2015-08-05 2019-06-25 Futurewei Technologies, Inc. Integration of network linecard (LC) to host operating system (OS)
US20170249162A1 (en) * 2016-02-25 2017-08-31 Red Hat Israel, Ltd. Safe transmit packet processing for network function virtualization applications
TWI592803B (zh) * 2016-03-11 2017-07-21 晨星半導體股份有限公司 嵌入式系統之操作方法與控制晶片
CN107204908A (zh) * 2016-03-17 2017-09-26 阿里巴巴集团控股有限公司 一种基于通信接口框架的消息发送、接收方法及装置
RU2638781C2 (ru) * 2016-09-29 2017-12-15 Общество с ограниченной ответственностью "ГРЭК" Способ организации прямого доступа в память при передаче информации между физическими объектами
US10992568B2 (en) 2017-01-31 2021-04-27 Vmware, Inc. High performance software-defined core network
US20200036624A1 (en) 2017-01-31 2020-01-30 The Mode Group High performance software-defined core network
US11706127B2 (en) 2017-01-31 2023-07-18 Vmware, Inc. High performance software-defined core network
US20180219765A1 (en) 2017-01-31 2018-08-02 Waltz Networks Method and Apparatus for Network Traffic Control Optimization
US11855805B2 (en) 2017-10-02 2023-12-26 Vmware, Inc. Deploying firewall for virtual network defined over public cloud infrastructure
US11115480B2 (en) 2017-10-02 2021-09-07 Vmware, Inc. Layer four optimization for a virtual network defined over public cloud
US10999100B2 (en) 2017-10-02 2021-05-04 Vmware, Inc. Identifying multiple nodes in a virtual network defined over a set of public clouds to connect to an external SAAS provider
US11223514B2 (en) 2017-11-09 2022-01-11 Nicira, Inc. Method and system of a dynamic high-availability mode based on current wide area network connectivity
US10684963B2 (en) * 2018-12-28 2020-06-16 Intel Corporation Fixed ethernet frame descriptor
US20190179554A1 (en) * 2019-02-21 2019-06-13 Intel Corporation Raid aware drive firmware update
CN113728596A (zh) 2019-05-23 2021-11-30 慧与发展有限责任合伙企业 在网络接口控制器(nic)中促进对幂等操作进行高效管理的系统和方法
US11212238B2 (en) 2019-08-27 2021-12-28 Vmware, Inc. Providing recommendations for implementing virtual networks
US11489783B2 (en) 2019-12-12 2022-11-01 Vmware, Inc. Performing deep packet inspection in a software defined wide area network
US11606712B2 (en) 2020-01-24 2023-03-14 Vmware, Inc. Dynamically assigning service classes for a QOS aware network link
US20200319812A1 (en) * 2020-06-03 2020-10-08 Intel Corporation Intermediary for storage command transfers
US11709710B2 (en) * 2020-07-30 2023-07-25 Vmware, Inc. Memory allocator for I/O operations
US11575591B2 (en) 2020-11-17 2023-02-07 Vmware, Inc. Autonomous distributed forwarding plane traceability based anomaly detection in application traffic for hyper-scale SD-WAN
US11601356B2 (en) 2020-12-29 2023-03-07 Vmware, Inc. Emulating packet flows to assess network links for SD-WAN
US11792127B2 (en) 2021-01-18 2023-10-17 Vmware, Inc. Network-aware load balancing
US11615042B2 (en) 2021-03-31 2023-03-28 Nutanix, Inc. Common framework for kernel-assisted device polling
US11509571B1 (en) 2021-05-03 2022-11-22 Vmware, Inc. Cost-based routing mesh for facilitating routing through an SD-WAN
US11729065B2 (en) 2021-05-06 2023-08-15 Vmware, Inc. Methods for application defined virtual network service among multiple transport in SD-WAN
US11943146B2 (en) 2021-10-01 2024-03-26 VMware LLC Traffic prioritization in SD-WAN
US11816057B2 (en) * 2021-10-19 2023-11-14 Citrix Systems, Inc. User space driver for I/O traffic distribution and packet processing
US11909815B2 (en) 2022-06-06 2024-02-20 VMware LLC Routing based on geolocation costs

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999039254A2 (en) 1998-01-30 1999-08-05 3Com Corporation Providing low level hardware device driver from user mode under multi-tasking operating systems
JPH11238030A (ja) * 1998-02-20 1999-08-31 Mitsubishi Electric Corp Pci−pciブリッジおよびそのための先入れ先出しメモリ
US6658469B1 (en) * 1998-12-18 2003-12-02 Microsoft Corporation Method and system for switching between network transport providers
US6347337B1 (en) * 1999-01-08 2002-02-12 Intel Corporation Credit based flow control scheme over virtual interface architecture for system area networks
US20020120732A1 (en) * 2001-02-27 2002-08-29 Lee Daniel Joseph Open internet protocol services platform
US7061899B2 (en) * 2001-05-01 2006-06-13 Hewlett-Packard Development Company, L.P. Method and apparatus for providing network security
US7007157B2 (en) * 2001-10-30 2006-02-28 Microsoft Corporation Network interface sharing methods and apparatuses that support kernel mode data traffic and user mode data traffic
AU2002345467A1 (en) 2002-06-19 2004-01-06 Telefonaktiebolaget L M Ericsson (Publ) A network device driver architecture

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1996930B (zh) * 2006-01-06 2011-10-05 惠普开发有限公司 用于通信接口的队列头高速缓存
CN101163074B (zh) * 2007-11-12 2010-12-08 中兴通讯股份有限公司 一种WiMAX终端设备主机驱动方法
CN101252527B (zh) * 2008-04-09 2011-01-26 腾讯科技(深圳)有限公司 一种网络中转的方法、网络中转服务器和内核管理模块
CN102158493A (zh) * 2011-04-15 2011-08-17 奇智软件(北京)有限公司 一种Cookie解析方法、装置及一种客户端
CN102209042A (zh) * 2011-07-21 2011-10-05 迈普通信技术股份有限公司 一种避免先入先出队列溢出的方法及设备
CN105512286A (zh) * 2015-11-27 2016-04-20 浪潮(北京)电子信息产业有限公司 一种读写数据免拷贝系统与方法
CN105512286B (zh) * 2015-11-27 2019-09-24 浪潮(北京)电子信息产业有限公司 一种读写数据免拷贝系统与方法
CN109688058A (zh) * 2018-12-19 2019-04-26 迈普通信技术股份有限公司 报文处理方法、装置及网络设备
CN109688058B (zh) * 2018-12-19 2021-03-02 迈普通信技术股份有限公司 报文处理方法、装置及网络设备

Also Published As

Publication number Publication date
US8332875B2 (en) 2012-12-11
EP1514191A1 (en) 2005-03-16
ES2333519T3 (es) 2010-02-23
CN1647054B (zh) 2010-09-08
WO2004001615A1 (en) 2003-12-31
US7451456B2 (en) 2008-11-11
US20050210479A1 (en) 2005-09-22
ATE443291T1 (de) 2009-10-15
BR0215746A (pt) 2005-03-22
US20090077572A1 (en) 2009-03-19
DE60233760D1 (de) 2009-10-29
BR0215746B1 (pt) 2015-02-10
DK1514191T3 (da) 2009-12-07
AU2002345467A1 (en) 2004-01-06
EP1514191B1 (en) 2009-09-16

Similar Documents

Publication Publication Date Title
CN1647054A (zh) 网络设备驱动体系结构
CN1212574C (zh) 使用本地标识符的端节点分区
CN110888827B (zh) 数据传输方法、装置、设备及存储介质
US10152441B2 (en) Host bus access by add-on devices via a network interface controller
EP1358562B1 (en) Method and apparatus for controlling flow of data between data processing systems via a memory
CN109582614B (zh) 针对远程存储器访问的nvm express控制器
US7424564B2 (en) PCI—express slot for coupling plural devices to a host system
US6912604B1 (en) Host channel adapter having partitioned link layer services for an infiniband server system
US20050132089A1 (en) Directly connected low latency network and interface
CN1617526A (zh) 在物理端口上模拟多个逻辑端口的方法和装置
EP3974998A2 (en) Cross network bridging
CN1604057A (zh) 硬件实施通道适配器资源的逻辑分区的方法和系统
US7895329B2 (en) Protocol flow control
CA2432390A1 (en) Method and apparatus for controlling flow of data between data processing systems via a memory
KR20100101677A (ko) 통합된 커넥터 아키텍처
US6816889B1 (en) Assignment of dual port memory banks for a CPU and a host channel adapter in an InfiniBand computing node
CN100343840C (zh) 总线系统、在总线系统中使用的站和总线接口
CN1324499C (zh) 处理不期望的完成分组和具有非成功完成状态的完成分组的方法
CN1815458A (zh) 提供用于i/o适配器的队列对的方法、系统和存储介质
US8799519B2 (en) Network-to-network bridge
CN1642170A (zh) 利用iSCSI协议访问逻辑设备的方法
CN1901492A (zh) 一种通过网络中的总线接口进行通信的方法和系统
US7266614B1 (en) Embedded channel adapter having link layer configured for concurrent retrieval of payload data during packet transmission
Mahabaleshwarkar et al. TCP/IP protocol accelaration
US20060078002A1 (en) Task queuing methods and systems for transmitting frame information over an I/O interface

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100908

Termination date: 20190619

CF01 Termination of patent right due to non-payment of annual fee