CN101356783A - 虚拟化网络环境中具有i/o共享的协议卸载和直接i/o的方法和系统 - Google Patents

虚拟化网络环境中具有i/o共享的协议卸载和直接i/o的方法和系统 Download PDF

Info

Publication number
CN101356783A
CN101356783A CNA2007800012488A CN200780001248A CN101356783A CN 101356783 A CN101356783 A CN 101356783A CN A2007800012488 A CNA2007800012488 A CN A2007800012488A CN 200780001248 A CN200780001248 A CN 200780001248A CN 101356783 A CN101356783 A CN 101356783A
Authority
CN
China
Prior art keywords
gos
data
buffer memory
network interfaces
nic
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
CNA2007800012488A
Other languages
English (en)
Other versions
CN101356783B (zh
Inventor
埃利泽·阿朗
尤里·埃尔·朱
拉弗·沙洛姆
凯特琳·贝斯特勒
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.)
Broadcom Israel Research Ltd
Original Assignee
Broadcom Israel Research Ltd
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 Broadcom Israel Research Ltd filed Critical Broadcom Israel Research Ltd
Publication of CN101356783A publication Critical patent/CN101356783A/zh
Application granted granted Critical
Publication of CN101356783B publication Critical patent/CN101356783B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/128Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种在虚拟化网络环境中用于具有I/O共享的协议卸载和直接I/O的方法和系统。所述方法包括多个GOS共享提供网络访问的单网络接口电路或网络接口卡(NIC)。所述NIC可直接为所述多个GOS中每个GOS控制对发送给所述网络的数据和/或从所述网络接收的数据的处理,而无需TGOS为所述GOS控制对发送给所述网络的数据和/或从所述网络接收的数据的处理。所述数据可直接从单NIC中的缓存复制到多个GOS其中之一的应用缓存和/或直接从多个GOS其中之一的应用缓存复制到单NIC中的缓存。

Description

虚拟化网络环境中具有I/O共享的协议卸载和直接I/O的方法和系统
技术领域
本发明涉及网络接口,更具体地说,涉及一种在虚拟化网络环境中用于具有I/O共享的协议卸载和直接I/O的方法和系统。
背景技术
在网络系统中,单机(single machine)(例如服务器或客户端)普遍地用来同时支持多服务器操作或服务。例如,单服务器可用于提供商业应用的访问,同时又用作电子邮件服务器、数据库服务器和/或交换服务器。所述服务器一般通过使用单操作系统(OS)来支持不同的服务器操作。通过所述单OS的服务器操作使用服务器处理资源,如中心处理器(CPU)、存储器、网络接口卡(NIC)、外围声卡和/或显卡。在许多情况下,服务器资源并不能被有效地利用,因为服务器操作的需求一般基于所提供服务的类型和/或用户的需要而改变。将服务器服务合并到单物理机能提高服务器效率。然而,这种合并也降低了分开维持各操作时所能提供的保护级别。例如,将这些操作合并后,数据库服务器中的损坏或错误也会造成电子邮件服务、交换服务和/或应用服务的丢失。
另一种改善服务器效率的方法是使用同时运行的多操作系统,以便每个操作系统支持不同的服务器操作或应用或服务。多操作系统被称为客户操作系统(GOS)或子分区。该方法维持了当服务器操作不是在单操作系统下合并时所提供保护的级别,同时也优化了对服务器可用的处理资源的使用。因为每个GOS能够具有对服务器硬件资源的完全访问,多客户操作系统的使用被称为OS虚拟化。在这点上,GOS感知不到运行在服务器上的其它GOS。为了实现OS虚拟化,需要软件层来仲裁对服务器硬件资源的访问。该软件层被称为管理程序或虚拟机(VM)监控器。所述管理程序使多个GOS以分时共享的方式访问硬件资源。该软件层可由可信GOS(TGOS)协助,所述TGOS也称为母分区或虚拟机核心(VMK)。
NIC可以是由至少一个服务器操作或服务频繁使用的硬件资源。在这点上,管理程序或VM监控器可以创建GOS所使用的NIC的软件表示。NIC的这个软件表示被称为“虚拟NIC”。然而,虚拟NIC并不能提供硬件NIC的完整特征和功能给GOS。例如,虚拟NIC仅能提供基础层2(L2)网络功能给GOS。虚拟NIC局限于通过另一SW实体(如TGOS或VMK)提供GOS和网络之间的数据通信。在这点上,虚拟NIC不能直接支持用于GOS的其它高级特征,如远程直接存储器访问(RDMA)和/或互联网小型计算机系统接口(iSCSI)。由于在单服务器中多GOS使用的增加,我们需要减小虚拟NIC限制的新解决方案。
本文的后续部分将结合附图对本发明进行阐述。通过把本发明的系统与上述的常规系统比较,对本领域的技术人员来说,常规或传统系统的局限性和缺点是显而易见的。
发明内容
本发明结合附图对一种在虚拟化网络环境中用于具有I/O共享的协议卸载和直接I/O的方法和/或系统进行了实质上的描述,并且在权利要求中陈述得更加完整。
本发明的各种优点、各个方面和创新特征,以及其中所示例的实施例的细节,将在以下的说明书(描述)和附图中进行详细介绍。
附图说明
图1A是与本发明实施例相关的支持主系统中各GOS之间的级别2(L2)交换和/或更高层通信交换的典型NIC的模块图;
图1B是与本发明实施例相关的支持主系统中各GOS之间级别2(L2)交换和/或更高层通信交换的典型NIC的模块图;
图1C是与本发明实施例相关的通过NIC传输到网络的典型步骤流程图;
图2A是根据本发明实施例的具有I/O共享的NIC使用TGOS作为GOS和NIC之间的中间媒介实现的协议卸载功能的模块图;
图2B是根据本发明实施例使用具有I/O共享的协议卸载功能传输数据给网络的典型步骤流程图;
图2C是根据本发明实施例使用具有I/O共享的协议卸载功能从网络接收数据的典型步骤流程图;
图3A是根据本发明实施例的具有I/O共享的直接I/O的功能模块图;
图3B是根据本发明实施例使用具有I/O共享的直接I/O将数据传输到网络的典型步骤流程图;
图3C是根据本发明实施例使用具有I/O共享的直接I/O从网络中接收数据的典型步骤流程图;
图4A是根据本发明实施例的具有I/O共享的协议卸载功能和直接I/O功能的模块图;
图4B是根据本发明实施例使用具有I/O共享的协议卸载功能和直接I/O将数据传输到网络的典型步骤流程图;
图4C是根据本发明实施例的使用具有I/O共享的协议卸载功能和直接I/O从网络中接收数据的步骤流程图。
具体实施方式
本发明的实施例介绍了在虚拟化网络环境中用于具有I/O共享的协议卸载和直接I/O的方法和系统。所述方法包括多个GOS共享提供网络访问的单网络接口电路或网络接口卡(NIC)。该单NIC为多个GOS其中每个GOS的网络访问控制输入/输出处理。该单NIC可直接控制对传输到网络的数据和/或从网络接收的数据的处理,而无需中间媒介,例如可信GOS(trusted GOS,缩写为TGOS)、管理程序和/或管理工具,其中该中间媒介可与用于多个GOS控制传输到网络的数据和/或从网络接收的数据的处理的NIC的PCI配置空间进行交互。该单NIC可直接将数据从多个GOS其中之一的缓存复制到该单NIC中的缓存内。该单NIC也可直接将数据从该单NIC中的缓存复制到多个GOS其中之一的缓存内。GOS中的起始或目的缓存可以是核心(kernel)缓存或应用缓存。在某些情况中,数据可直接传输到GOS中的应用缓存,创建一个类似于在具有非虚拟化I/O的系统中可用的零复制(zero copy)。在其它情况中,本发明能够减少将数据移动到GOS缓存/从GOS应用缓存移出所需的开销和复制数量。
单NIC和多个GOS之间的通信可以进行交换,其中NIC可提供交换服务,类似于OSI协议层(L)2(L2)或3(L3)或更高层上提供的以太网交换服务,为每个GOS提供对物理网络的访问。TGOS和/或管理程序可协调来自多个GOS的请求的处理。TGOS命令NIC分配每个GOS的资源、标识GOS的地址和/或指派或移除每个GOS属性,如特殊缓存或网络带宽或优先级设置(例如与IEEE802.1P和802.1Q中一样)。在初始化系统的进程中,管理员和/或配置和/或管理工具将信息传送给TGOS。TGOS配置NIC 110(潜在地由PCI配置空间控制)和主驱动124。所述信息使得NIC能够确定一般的策略和服务(例如切换开/关)、以及每个GOS的资源(例如连接数量)和服务(例如L2、L4或其它协议层)。单NIC可通过由GOS传达的物理地址来访问多个GOS中至少一个GOS的至少一个缓存。单NIC的控制包括L3协议操作、L4协议操作和/或L5协议操作。单NIC的控制还包括TCP操作和/或IP操作。单NIC也可执行链路层网络协议操作。
不同的结构涉及GOS、TGOS和管理程序。其它结构也涉及子分区、母分区和管理程序,或VM、VMK和VMM。其它更多的结构还涉及DomU、Dom0和管理程序。应了解,本发明并不限定于特定的结构。
图1A是本发明实施例相关的支持主系统中GOS之间通信的级别2(L2)交换和/或更高层通信交换的典型NIC的模块图。NIC支持的交换并不只局限于L2,其可以是L2、VLAN、L3、L4、更高协议层和/或更多信息(包括从网络管理员到如何执行所述交换)的各种结合。参考图1A,图中示出了GOS 102a、102b和102c、TGOS 102d、管理程序104、主系统106、事件队列108a、112a和114a、发送(TX)队列108b、112b和114b、接收(RX)队列108c、112c和114c、和NIC110。TGOS102d包括主驱动124。主系统106包括主处理器122和主存储器120。NIC 110包括NIC处理器118、NIC存储器116、L2交换机130和物理地址验证器(validator)132。
主系统106包括匹配的逻辑、电路和/或代码,用于进行数据处理和/或网络操作。在一些实例中,主系统106还包括其它的硬件资源,如显卡和/或外围声卡。主系统106通过管理程序104来支持GOS 102a、102b和102c的操作。GOS 102a、102b和102c每个都对应一个操作系统,操作系统可以运行或执行操作或服务,如应用程序、电子邮件服务器操作、数据库服务器操作和/或交换服务器操作。主系统106通过使用管理程序104可支持的GOS的数量并不局限于任何特定的数量。例如,主系统106可支持一个或多个GOS。内部交换可以发生在GOS之间或GOS与TGOS之间。
管理程序104和/或TGOS 102d可作为软件层运行,实现主系统106中硬件资源的OS虚拟化和/或通讯连接到主系统106的硬件资源(如NIC 110)的虚拟化。管理程序104和/或TGOS 102d可以分配硬件资源,也可以实现GOS与主系统106中的硬件资源和/或通讯连接到系统106的硬件资源之间的数据通信。例如,管理程序104通过事件队列108a、112a和114a、TX队列108b、112b和114b和/或RX队列108c、112a和114a,实现主系统106所支持的GOS和NIC 110之间的通信。在这点上,第一GOS 102a和NIC 110之间的通信可以通过事件队列108a、TX队列108b和RX队列108c发生。类似地,第二GOS102a和NIC 110之间的通信可以通过事件队列112a、TX队列112b和RX队列112c发生,第三GOS 102c和NIC 110之间的通信可以通过事件队列114a、TX队列114b和RX队列114c发生。在这点上,每组队列分开操作且相互独立。在这种意义上,当相应的GOS加入到网络传输或接收时,在TGOS102d根据配置和管理信息分配了NIC上所需的队列、内部资源和管理信息以后,数据可以直接来往于NIC。
TGOS 102d包括主驱动124,其可以协调GOS和队列之间数据的传输。主驱动124可以与GOS 102a中的虚拟NIC驱动126a、GOS 102b中的虚拟NIC驱动126b和/或GOS 102c中的虚拟NIC驱动126c进行通信。每个虚拟NIC驱动对应于GOS的一部分,用于通过主驱动124实现GOS所执行的操作或服务与合适的队列之间的数据传输。例如,从第一GOS 102a的操作或服务传输来的数据包和/或数据包描述符可经由虚拟NIC驱动126a传输到TX队列108b。在另一例子中,由NIC 110记入事件队列108a来指示网络条件或报告数据传送或数据接收的数据,可传输到由虚拟NIC驱动126a登记的缓存。在另一例子中,NIC 11O从网络中接收到的数据包(该数据包包含MAC地址或其它地址或属性,对应第一GOS 102a)可以从RX队列108c传输到由虚拟NIC驱动126a登记的缓存。
主处理器122包括匹配的逻辑、电路和/或代码,用于对与主系统106关联的数据处理和/或网络操作进行控制和/或管理。主存储器120包括匹配的逻辑、电路和/或代码,用于存储主系统106使用的数据。主存储器120可分成多个存储器部分。例如,由主系统106支持的每个GOS具有主存储器120中相应的存储器部分。而且,管理程序104具有主存储器120中相应的存储器部分。在这点上,管理程序104和/或TGOS 102d可通过控制从存储器120的一部分(对应一个GOS)到存储器120的另一部分(对应另一个GOS)的数据传输来实现GOS之间的数据通信。
NIC 110包括匹配的逻辑、电路和/或代码,用于与网络的数据通信。例如,NIC 110可完成基本L2交换、基于VLAN的交换、TCP卸载、iSCSI和/或RDMA操作。NIC 110可称为OS虚拟化感知(virtualization-aware)NIC,因为与每个GOS的通信通过一组独立的队列发生。NIC 110可确定为了选择正确的目标GOS将使用的正确的地址或地址信息的结合,如VLAN地址、L3地址、L4地址、L4端口及其它。例如,NIC 110可确定接收包的MAC地址,并将接收包传输到与具有合适MAC地址的GOS对应的RX队列。类似地,通过协调和/或仲裁TX队列中记入的用于传输的数据包的传送顺序,NIC 110可实现从GOS到网络的数据包传输。在这点上,NIC 110可说成实现了直接输入/输出(I/O)或管理程序旁路(bypass)操作。
本发明的一些实施例包括NIC 110,其允许验证、纠正和/或生成MAC地址、VLAN标记、IP地址或类似TGOS位的属性。例如,NIC 110可检测到GOS请求以错误的源MAC地址发送数据包。NIC 110可验证源MAC地址,例如,通过将数据包的源MAC地址与与特定的GOS、缓存和/或包类型关联的MAC地址进行比较来进行验证。
NIC 110可将错误的源MAC地址标记为错误给TGOS和/或GOS,并可丢弃这个包。本发明的另一实施例可使NIC 110重写不正确的参数或属性,例如,以正确的源MAC地址重写来自GOS的包的源MAC地址,并继续传输这个包。类似地,本发明的另一实施例可为来自GOS的每个包生成合适的源MAC地址,而这并不需要验证源MAC地址。因此,运行在GOS上的应用程序不需要生成源MAC地址,因为NIC 110会写入源MAC地址。NIC 110也可以监视带宽的使用和/或每个GOS的优选级。NIC 110可以分配每个GOS的带宽限制或帧,和/或确保GOS、应用程序或与GOS关联的数据流没有要求不同于管理员和/或TGOS指派的优先级)。
事件队列108a、112a和114a包括匹配的逻辑、电路和/或代码,用于由NIC 110登记数据以指示事件的发生。例如,NIC 110可在事件队列中登入数据以指示链路已断开或链路已接上。例如,链路的当前状态(即是否断开或接上)可登入所有事件队列中。
TX队列108b、112b和114b包括匹配的逻辑、电路和/或代码,用于登记来自GOS 102a、102b和102c的将通过NIC 110传输的数据。RX队列108c、112c和114c包括匹配的逻辑、电路和/或代码,用于登记通过NIC 110接收的将由GOS 102a、102b和102c分别进行处理的数据。例如,TX队列108b、112b和114b和/或RX队列108c、112c和114c可集成在NIC 110中。这些队列可驻留在主存储器120中、NIC 110中或主存储器120和NIC110的组合中。
NIC处理器118包括匹配的逻辑、电路和/或代码,用于控制和/或管理NIC110中的数据处理和/或网络操作。NIC存储器116包括匹配的逻辑、电路和/或代码,用于存储NIC 110使用的数据。NIC 110可由多个GOS 102a、102b和102c共享。在本发明的一些实施例中,网络协议操作可以卸载到NIC 110,并由NIC 110控制。卸载的网络协议操作包括OSI层3、4和/或5协议操作,如TCP和/或IP操作。NIC 110也可执行链路层网络协议操作,其可以是OSI层2协议操作,例如VLAN。
因此,NIC 110可以是由多个GOS共享的资源。GOS和NIC的操作可由TGOS和管理程序来调整。GOS和NIC的操作包括在GOS和NIC之间复制数据。在GOS将其内将被访问的缓存的地址或缓存地址的索引(reference)传送给NIC时,这是由NIC来完成的。该地址可以是物理地址或虚拟地址。虚拟地址可以转换成物理地址,例如,通过地址转换表或存储器管理单元来进行转换。地址转换的方法取决于特定的设计和/或实现。
L2交换机130包括匹配的逻辑、电路和/或代码,用于使NIC 110支持GOS与网络之间和/或GOS之间的包通信。在NIC 110中放置交换功能可以减少传输或接收包时的端对端时延(end-to-end latency)。L2交换机130可支持单播(unicast)、广播(broadcast)和/或组播(multicast)操作。单播操作指的是到单个MAC地址的包传输。广播操作指的是到所有MAC地址的包传输。组播操作指的是到一组特殊MAC地址的包传输。
例如,GOS 102a发送一个数据包到通讯连接到网络的至少一个设备。在这种情况下,虚拟NIC驱动126a将这个包传输到对应GOS 102a的TX队列108b。L2交换机130从TX队列108b中接收这个包,并确定出对应网络上的一个设备或多个设备的一个或多个目的MAC地址。然后NIC 110将这个包传送到网络。
在另一例子中,GOS 102a有数据包需要传送到GOS 102b和/或GOS 102c。在这种情况下,虚拟NIC驱动126a将该数据包放置在对应GOS 102a的TX队列108b上。L2交换机130从TX队列108b上接收该数据包,并确定目的MAC地址对应于GOS 102b。NIC 110可将该数据包放置到对应GOS 102b的RX队列112c中。通过事件队列112a可将RX队列112c中的数据包通知到虚拟NIC驱动126b,然后虚拟NIC驱动126b复制该数据包为GOS 102b上的应用程序所使用。
NIC 110还包括有物理地址验证器132。物理地址验证器132包括匹配的逻辑、电路和/或代码,用于验证虚拟NIC驱动登记的用于存储接收的数据包的缓存地址。例如,在将RX队列中的数据包传送到登记的缓存(posted buffer)中之前,物理地址验证器132可验证该登记的缓存是否在对应该与接收的数据包相关的GOS的地址或存储器位置中。当地址通过验证时,接收的数据包可从RX队列传输到该登记的缓存。如果物理地址不能通过验证,NIC 110可通报TGOS和/或管理程序和/或主驱动124和/或虚拟NIC驱动126a。因此,虚拟NIC驱动126a可登记一个新缓存来接收来自RX队列的数据包,或者TGOS和/或管理程序会采取另一动作,例如停掉该虚拟驱动。传输缓存地址的类似验证可由NIC来执行。使用GOS和管理程序的本发明不同实施例可通过图2A、2B、2C、3A、3B、3C、4A、4B、4C进行描述。
图1B是与本发明实施例相关的支持主系统中VM之间通信的级别2(L2)交换和/或更高层通信交换的典型NIC的模块图。图1B在许多方面与图1A相似,例如,VM具有与GSO相似的功能。但是图1B没有TGOS 102d。图1B包括VM核心(VMK)104,其包括主驱动124和管理程序104。因此,图1B中VMK 140的功能与图1A中TGOS 102d和/或管理程序104的功能相似。
图1C是与本发明实施例相关的通过NIC传输到网络的典型步骤流程图。参考图1C,图中示出了流程图150。开始步骤152之后,在步骤154中,生成数据包以由图1A中的主系统106支持的GOS传输。虚拟NIC驱动将该数据包传输到适当的TX队列。图1A中的L2交换机130从TX队列接收该数据包,并确定目的MAC地址或地址组。在步骤156中,基于对应该数据包目的地的MAC地址或地址组,L2交换机130确定该数据包的传输是否是单播、广播或组播。当数据包传输是组播或广播时,流程图150的处理可继续到步骤158。
在步骤158中,L2交换机130将该数据包传输到网络上适当的MAC地址组,该地址组列表成组播或广播传输的一部分。在步骤160中,L2交换机130还能将该数据包传送到具有该组播或广播传输中列出的MAC地址的每个GOS的RX队列。每个所列GOS的虚拟NIC驱动被通知接收到该数据包,并将接收的数据包复制到主存储器120合适部分中被登记的缓存内。在每个所列GOS上执行的操作或服务可从登记的缓存中读取该接收的数据包。步骤160之后,流程图150的处理继续到结束步骤168。
返回步骤156,当该数据包将是单播地址的时候,流程图150的处理可继续到步骤162。在步骤162中,L2交换机130确定该MAC地址是否对应由主系统106支持的GOS或对应线上或网络上的设备。当将被传输的数据包的MAC地址对应一个GOS时,流程图150的处理可继续到步骤164。在步骤164中,L2交换机130将该数据包传送给与具有合适MAC地址的GOS相对应的RX队列。虚拟NIC驱动被通知接收到该数据包,并在主存储器120的合适部分中登记缓存。在该GOS上执行的操作或服务可从登记的缓存中读取接收的数据包。步骤160之后,流程图150的处理继续到结束步骤168。
返回步骤162,当将被传输的数据包的MAC地址对应网络上的设备时,流程图150的处理可继续到步骤166。在步骤166中,在NIC 110的协助下,L2交换机130将该数据包传输到网络上合适的MAC地址。步骤166之后,流程图150的处理可继续到结束步骤168。
这里描述的OS虚拟化感知NIC可实现OS虚拟化,OS虚拟化减少了用于GOS与网络之间和/或GOS之间的包通信的管理程序层的开销需求。OS虚拟化感知NIC可支持多个GOS。而且,OS虚拟化感知NIC可进行高级特征的虚拟化,如TCP卸载功能、RMDA和/或iSCSI接口。本发明实现工作请求(work request)时延的减少的具体实施例将结合如下的图表描述。工作请求可作为WQE放置在TX队列的一个上,工作请求可由GOS生成以将数据从应用程序缓存直接传输到NIC 110,并进而从那里传输到网络。
图2A是根据本发明实施例的典型的具有I/O共享的协议卸载的功能模块图。参考图2A,图中示出了GOS 210、TGOS 230、NIC 240、管理程序245和I/O存储器管理单元(I/O MMU)247。GOS 210包括应用层212、套接字层(socketlayer)214和虚拟NIC驱动216。用户缓存220和GOS缓存222可由GOS 210、TGOS 220和/或管理程序245进行分配,由GOS 210使用。因此,用户缓存220和GOS缓存222可以是GOS 210的逻辑部分。GOS 210与图1A中描述的GOS 102a、102b和102c类似。多个GOS可共享一个共同的资源,如NIC 240。
应用层212包括例如电子邮件服务应用程序或网络浏览程序。套接字层214包括匹配的代码,其将数据从应用层212传输到更低层(如TCP/IP层),反之亦然。虚拟NIC驱动216包括匹配的代码,其实现从GOS 210到NIC 240的数据传输,反之亦然。用户缓存220和GOS缓存222可由GOS使用,它们可以是主存储器120的一部分。
TGOS 230包括匹配的逻辑、电路和/或代码,用于支持多个GOS从网络中传输和/或接收数据。TGOS 230包括软件交换机232、物理NIC驱动234、TGOS代码230a和地址表230b。TGOS缓存236和接收缓存238可由TGOS 230和/或管理程序245来分配,由TGOS 230使用。因此,TGOS缓存236和接收缓存238可以是TGOS 210的逻辑部分。
软件交换机232与L2交换机130相似,也包括匹配的代码,实现从多个GOS中一个到NIC 240的数据路由,反之亦然。因此,NIC 240可由不同的GOS共享。物理NIC驱动234包括匹配的代码,允许数据传输到NIC 240和/或从NIC 240传输。
TGOS缓存236用于存储来自GOS 210的数据和/或来自NIC 240的数据。TGOS缓存236可以是主存储器120的部分。接收缓存238用于保存来自NIC 240的数据。接收缓存238可以是主存储器120的一部分,或者接收缓存238可以是硬件缓存。
TGOS代码230a可以实现缓存的分配以由GOS使用。地址表230b可实现偏移索引(offset index)的转换或缓存的虚拟地址到缓存的物理地址的转换。与本文同一日期提交的申请号为_____的美国专利申请(代理案号17710US02)公开了一种典型的地址转换表。地址转换表230b包括缓存池的地址组,这些缓存可以是主存储器120的一部分。在本发明的其它实施例中,地址转换表对GOS不可用,但是对TGOS 230可用,还对管理程序245和I/O MMU 247可用,或仅对管理程序和I/O MMU可用。虽然地址转换表用于地址转换已经进行过描述,但本发明并不局限于此。地址转换的特定方式取决于特定的设计和/或实现。
NIC 240包括匹配的逻辑、电路和/或代码,用于处理来自应用层的数据以传输到网络,或者接收从网络到应用层的数据。NIC 240也包括NIC缓存241、用于RDMA或iSCSI或其它会话层和/或更高层代码的L5、硬件常驻TCP/IP层模块242和链路层模块244。NIC缓存241用于存储从网络中接收到的数据,或存储传输到网络中的数据。NIC缓存241类似于TX队列108b、112b、114b和RX队列108c、112c、114c。TCP/IP层模块242包括匹配的逻辑、电路和/或代码,用于处理基于TCP/IP协议传输给网络的数据和/或从网络中接收的数据。链路层模块244包括匹配的逻辑、电路和/或代码,用于在数据被传输给网络之前和/或从网络中接收之后,处理以太链路层协议的数据。
管理程序245包括匹配的逻辑、电路和/或代码,用于协调从网络接收和传送的数据的控制以及资源的分配。本发明的一些实施例包括与TGOS配合的管理程序245。分配的资源包括用于多个GOS、TGOS和NIC 240的各种缓存。例如,当GOS 210、TGOS 230和管理程序245正在操作的时候,缓存可在上电时从主存储器120分配,和/或动态地从主存储器分配。管理程序245通过套接字层214从GOS接收缓存请求,并且将接收的请求路由到TGOS 230。然后TGOS 230分配缓存。TGOS 230将分配的缓存的地址或地址索引(reference)发送给管理程序245。然后管理程序245将分配的缓存的地址传送给套接字层214。为了将分配给一个GOS的存储器资源与分配给另一个GOS的存储器资源隔开,,通信到GOS的存储器可以是虚拟地址或称为总线地址/DMA地址/设备地址的地址,它们需要转换成物理地址。或者,TGOS 230可将偏移索引发送到缓存,而且该偏移索引可被传送给套接字层214。
I/O MMU 247包括匹配的逻辑、电路和/或代码,用于在进行特定虚拟地址范围的转换时,将虚拟地址或称为总线地址/DMA地址/设备地址的地址转换成物理地址。因此,设备,例如NIC 240,可尝试以虚拟存储器地址或称为总线地址/DMA地址/设备地址的地址来寻址存储器位置。为了简便起见,本文的后续部分称这些地址为虚拟地址,但是这些地址可以区别于GOS使用的虚拟地址。虚拟存储器地址可由I/O MMU 247截取,I/O MMU 247可将该虚拟存储器地址转换成物理存储器地址。I/O MMU247将物理存储器地址输出给与主系统存储器连接的地址总线。进而存储器为读操作生成内容或为写操作进行存储。因此,为了读操作,NIC 240然后读取该物理存储器地址位置上的数据。或者,NIC 240可请求I/O MMU 248发送转换的物理地址给NIC 240。NIC 240然后通过使用来自I/O MMU 247的物理地址来直接访问该物理地址位置。
在操作中,GOS 210中的应用层212使数据传输到网络中。该数据可以位于用户缓存220中。通过套接字层214可将该数据从用户缓存220复制到GOS缓存222。如果没有作为GOS缓存222使用的可用缓存,那么套接字层214可从其OS中请求一个缓存作为GOS缓存222使用。如果OS是资源受限和虚拟化感知的,那么OS可从TGOS请求支持。本发明的一些实施例中TGOS对缓存的映射和绑定(pinning)通过图4B进行描述。套接字层214可将GOS缓存222的地址指示给虚拟NIC驱动216。
在本发明的一个实施例中,GOS通过TGOS通信至NIC。虚拟NIC驱动216提供了接口,通过管理程序将GOS缓存222内的数据传输到TGOS 230。这包括例如GOS缓存222的地址。因此,管理程序245可将GOS缓存222中的数据复制到对应于GOS 210的TGOS缓存236中。该数据包括例如到特定网络连接的索引。然后管理程序245调用TGOS 230。软件交换机232将关于TGOS缓存236中数据的信息传送给物理NIC驱动234。该信息包括例如TGOS缓存236的地址和/或该数据对应的网络连接。当几个应用程序每个都有一个或多个开放网络连接时,网络连接信息连同GOS身份使得NIC 240能够适当地处理数据。
物理NIC驱动234将该信息传送到NIC 240。如果TGOS缓存236的地址是物理地址,NIC 240可使用该物理地址将数据从TGOS缓存236传输到NIC缓存241。数据可通过编程的I/O或DMA传输传送到NIC缓存241中。如果该缓存地址不是物理地址,NIC 240可搜索地址转换表来寻找相应的物理地址。NIC 240对GOS缓存222的访问在与本申请同一日期提交的申请号为_______的美国专利申请(代理案号17710US02)中进行了描述。
NIC 240中的TCP/IP层模块242可将来自TGOS 230的数据分割成多个包,并封装分割的数据以与适当的TCP/IP信息一起传输。来自TCP/IP层模块242的封包数据然后由链路层模块244封入适当的链路层信息。来自链路层模块244的数据包由NIC 240传输到网络上。
另外,NIC 240可从网络中接收数据包。接收的数据可以经处理并存储在NIC缓存241中。链路层模块244从接收包中解析链路层信息。如果链路层模块244确定数据包到达了正确的NIC,那么链路层信息可以被移除。否则,链路层模块244可以丢弃接收的数据包。链路层模块244解析以太网报头(Ethernet header)中的信息,以确定多个以太网包是否可以重组来形成一个IP包。链路层模块244接收并重组多个以太网包来形成一个IP包,并可将其传送给TCP/IP层模块242。
TCP/IP层模块242确定多个IP包是否可以重组来形成一个TCP包。如果可以,TCP/IP层模块242接收并重组多个IP包来形成TCP包。生成的TCP包可由TCP/IP层模块242处理以形成数据包。该处理包括移除TCP报头。NIC 240也可以确定哪个特定GOS应该是接收的数据的接收者,这是通过使用数据包中的地址信息来协助将输入帧与特殊GOS关联来实现的。当NIC 240将一个事件放置在事件队列108a、112a或114a中时,NIC 240便将接收数据通报给了该特定的GOS。
物理NIC驱动234可与NIC 240通信,控制NIC缓存241中的数据到接收缓存238的传输。例如,物理NIC驱动234可以传送接收缓存238的地址。如果接收缓存238的地址是物理地址,那么NIC 240可以使用该物理地址将数据从NIC缓存241传输到接收缓存238。否则,NIC 240可以通过I/O MMU或地址转换表230b将来自物理NIC驱动234的缓存地址转换成物理地址。NIC 240的数据传送可以通过编程的I/O或DMA传输来完成。
软件交换机242可以将接收缓存238中的数据复制到TGOS缓存236,TGOS缓存236是GOS 210对应的TGOS缓存。TGOS缓存236中的数据可以由管理程序245复制到GOS缓存222。管理程序245可以调用关联转换(context switch)到GOS 210。套接字层214然后将数据从GOS缓存222复制到用户缓存220,应用层212便可以从用户缓存220访问数据。例如,如果用户层212包括电子邮件程序,那么用户缓存222中的数据可以是从网络中接收的电子邮件。因此,NIC 240可由多个GOS共享,并且网络协议操作(如TCP/IP操作)可以卸载给共享的NIC 240。
虽然TCP/IP层的例子是用于协议栈(protocol stack),但是本发明并不局限于此。例如,本发明不同的实施例也可以用于使用其它协议栈的网络,如开放式系统互联(OSI)七层网络模型。本发明的实施例包括具有嵌入在硬件中的多个GOS和多个网络层的虚拟化。例如,OSI层5、4、3和/或2的硬件实现可位于网络接口卡/电路中。
图2B是根据本发明实施例使用具有I/O共享的协议卸载功能传输数据的典型步骤流程图。参考图2B,图中示出了步骤250到262。在步骤250中,GOS210中的应用层,例如,应用层212,可将数据传输到网络中。应用层212可将该数据放置在用户缓存220中。例如,如果应用层212包括电子邮件程序,那么用户缓存220中的数据可以是通过网络(如互联网)发送的电子邮件。
在步骤252中,套接字层214可将数据从用户缓存220复制到GOS缓存222。套接字层214也将GOS缓存222中可以传输到网络的数据指示给管理程序245。在步骤254中,虚拟NIC驱动216可提供用于将GOS缓存222中的数据传输到管理程序245的接口。在步骤256中,管理程序245将数据复制到TGOS缓存236。管理程序245也可调用关联转换到TGOS 230。
在步骤258中,TGOS缓存236中的数据可以通过软件交换机232和物理NIC驱动234传送到NIC 240。软件交换机236可将TGOS缓存236的地址指示给物理NIC驱动234。在步骤260中,NIC 240可处理数据以通过网络媒介(如以太网缆线)传输。例如,NIC 240中的TCP/IP层模块242封装接收的数据以形成TCP包。如果TCP包太大,TCP/IP层模块242可将TCP数据分割成多个IP包。类似地,如果IP包太大,NIC 240中的链路层模块244可将IP包分割成多个以太网包。在步骤262中,NIC 240将数据传输到网络媒介上。
图2C是根据本发明实施例使用具有I/O共享的协议卸载功能从网络接收数据的典型步骤流程图。参考图2C,图中示出了步骤270到284。在步骤270中,NIC 240从网络中接收数据包。在步骤272中,NIC 240处理接收的数据包,该处理包括链路层模块244确认该包应该由NIC 240接收。链路层模块244还可移除以太网信息以形成IP包。在多个接收的以太网包是由发送方网络节点将一个IP包进行分割的结果的情况下,NIC 240中的链路层模块244也可将多个接收的以太网包重组成一个IP包。
生成的IP包可由TCP/IP层模块242处理。在多个接收的以太网包是发送方网络节点对一个IP包进行分割的结果的情况下,NIC 240中的TCP/IP层模块242可以解析TCP和IP信息,将多个IP包中的数据重组成一个TCP包。NIC240也可确定接收的数据将传达到的GOS。
在步骤274中,NIC 240可将接收的数据传输到接收缓存238,并通知物理NIC驱动234数据目前正在接收缓存中。在步骤276中,物理NIC驱动234可将接收缓存238中的数据告知软件交换机232。因此,软件交换机232可将接收缓存238中的数据复制到TGOS缓存236,TGOS缓存236是对应GOS 210的TGOS缓存。
在步骤278中,TGOS缓存236中的数据可以复制到管理程序245。管理程序245也可调用关联转换到GOS 210,GOS 210便是从网络中接收到的数据的目的地。在步骤280中,虚拟NIC驱动216可将数据从管理程序245复制到GOS缓存222。在步骤282中,套接字层214可将数据从GOS缓存复制到用户缓存220。在步骤284中,应用层212可访问用户缓存220中的数据。
图3A是根据本发明实施例典型的具有I/O共享的直接I/O的功能模块图。参考图3A,图中示出了GOS 310...311、TGOS 330、NIC 340、管理程序345和I/O存储器管理单元(I/O MMU)347。每个GOS 310...311包括应用层312、套接字层314、TCP/IP层316和虚拟NIC驱动318。用户缓存320、GOS缓存322和接收缓存324可由每个GOS 310...311、TGOS330和/或管理程序345分配给GOS 310使用。因此,每个GOS 310...311逻辑上和/或物理上包括用户缓存320、GOS缓存322和接收缓存324。GOS 310...311类似于图1A描述的GOS 102a、102b或102c。多个GOS 310...311可共享一个共同的资源,如NIC 340。
应用层312包括匹配的应用程序,例如,电子邮件程序或网络浏览程序。套接字层314包括匹配的代码,其可将用户缓存320中数据复制到GOS缓存322,反之亦然。TCP/IP层316包括匹配的代码,其可实现对传输到网络的数据或从网络接收的数据的TCP层处理和/或IP层处理。虚拟NIC驱动318包括匹配的代码,其可实现NIC 340与每个GOS 310...311之间的数据传输。用户缓存320、GOS缓存322和接收缓存324可以是主存储器120的一部分。或者,接收缓存324可以是硬件缓存。
TGOS 330包括匹配的逻辑、电路和/或代码,用于支持多个GOS传输和/或接收来自网络中的数据。TGOS 330包括TGOS代码330a,其可分配GOS使用的缓存。该缓存可以是用户缓存320、GOS缓存322和/或接收缓存324。TGOS330还包括地址表330b,其可实现缓存的偏移索引或虚拟地址到缓存的物理地址的转换。与本申请同一日期提交的申请号为_____的美国专利申请(代理案号17710US02)描述了一种典型的地址转换表。地址转换表330b包括有一组缓存的地址,这些缓存可以是主存储器120的一部分。
NIC 340包括匹配的逻辑、电路和/或代码,用于将数据从应用层传输到网络中,或从网络中接收数据到应用层。NIC 340也包括有NIC缓存341和链路层模块342。NIC缓存341用于存储从网络中接收的数据和/或传输到网络中的数据。NIC缓存341类似于TX队列108b、112b、114b和RX队列108c、112c和114c。链路层模块342包括匹配的逻辑、电路和/或代码,用于在数据传输到以太网之前,处理数据以适配以太网链路层协议。从以太网接收的数据也可由链路层模块342处理。
管理程序345包括匹配的逻辑、电路和/或代码,用于协调控制从网络接收的数据或传输到网络的数据,以及资源的分配。分配的资源包括用于GOS310...311和NIC 340不同的缓存。例如,当GOS 310...311、TGOS 330和/或NIC 340正在操作的时候,缓存可在上电时从主存储器120分配,和/或动态地从主存储器分配。
I/O MMU 347包括匹配的逻辑、电路和/或代码,用于将虚拟地址转换成物理地址。因此,设备,例如NIC 340,可使用虚拟存储器地址来寻址存储器位置。虚拟存储器地址可由I/O MMU 347截取,并将虚拟存储器地址转换成物理存储器地址。I/O MMU 347将物理存储器地址输出到与主系统存储器连接的地址总线。NIC 340然后可在物理存储器地址的位置访问数据。NIC 340也可请求I/O MMU 347发送转换的物理地址给NIC 340。NIC 340然后使用来自I/OMMU 247的物理地址直接访问物理地址位置。
在操作中,GOS 310中的应用层例如应用层312使数据传输到网络中。待传输的数据可以存储在用户缓存320中。套接字层314将数据从用户缓存320复制到GOS缓存322。如果没有作为GOS缓存322使用的可用缓存,那么套接字层314可从TGOS 330中请求一个缓存作为GOS缓存322使用。TGOS对缓存的分配在与本申请同一日期提交的申请号为_____的美国专利申请(代理案号17710US02)中描述过。
套接字层314命令TCP/IP协议层316来处理GOS缓存322中的数据。GOS缓存322中的数据可由TCP/IP层316根据TCP/IP协议进行处理。例如,从用户缓存320中复制的数据可由TCP/IP层316处理以形成TCP包。TCP包然后可由TCP/IP层316处理以形成IP包。
GOS中的套接字层314或其它OS实体可将对应GOS缓存322的值传送给到虚拟NIC驱动318。这个值可转译成缓存的偏移索引、缓存的虚拟地址或缓存的物理地址。特定的缓存寻址方案取决于具体的设计。套接字层314告知管理程序345数据存储在GOS缓存322中,其中存储的数据可传输到网络中。例如,管理程序345可将资源(如NIC 340)分配给GOS 310以允许GOS缓存322中数据的传输。GOS缓存322中的数据然后通过虚拟NIC驱动318传送给NIC340。
虚拟NIC驱动318可将GOS缓存322地址的指示信息提供给NIC 340。因此,NIC 340可将GOS缓存322中的数据复制到NIC缓存341。NIC 340访问GOS缓存322在与本申请同一日期提交的申请号为_____的美国专利申请(代理案号17710US02)中描述过。NIC 340可通过编程的I/O或DMA传输从NIC缓存341中复制数据。存储在NIC缓存341中的数据可由链路层模块342封装,加入适当的以太网链路层信息。由链路层模块342输出的数据包然后可由NIC340传输到以太网网络。
另外,NIC 340可从以太网网络中接收数据包。接收的数据包可存储在NIC缓存341中。链路层模块342可从接收的数据包中解析出链路层信息。如果链路层模块342确定以太网包到达了正确的NIC,则处理该以太网包来生成IP包。IP包可从多个以太网包重组得到。
当链路层342完成以太网包的处理后,NIC 340将NIC缓存341中的IP包复制到接收缓存324。IP包可由编程I/O或DMA传输复制到接收缓存324。还可将事件状态置入合适的事件队列108a、112a或114a中,以便对应GOS可接收该IP包。NIC 340告知虚拟NIC驱动318数据已存储在接收缓存324中。虚拟NIC驱动318提醒套接字层314接收缓存324中存有数据。套接字层314可将存储在接收缓存324中的数据复制到GOS缓存322。
套接字层314然后调用TCP/IP层316。TCP/IP层316从数据(可以是IP包,存储在GOS缓存中)中解析出IP和/或TCP信息来生成TCP包。例如,TCP/IP层316从存储在GOS缓存322中的IP包中移除IP信息并生成TCP包。该TCP包然后由TCP/IP层316进一步处理。数据可从TCP包中提取出来,并且该数据可由套接字层314复制到用户缓存320。因此,多个GOS共享NIC 340,并且每个GOS可与NIC 340直接传送数据。
图3B是根据本发明实施例使用具有I/O共享的直接I/O将数据传输到网络的典型步骤流程图。参考图3B,图中示出了步骤350到360。在步骤350中,GOS 310中的应用层,例如应用层312,可将数据传输到网络。这些数据已经由应用层312放置在用户缓存320中。
在步骤352中,这些数据由套接字层314从用户缓存320复制到GOS缓存322中。套接字层314已经从TGOS 330中请求GOS缓存322。套接字层314也提供指示给管理程序345,即GOS缓存322中已存有数据待传输。套接字层314也将GOS缓存的地址提供给虚拟NIC驱动318。管理程序345可分配资源(如NIC 340)给GOS 310使用。套接字层314也可调用TCP/IP曾来处理GOS缓存322中的数据。
在步骤354中,TCP/IP层316处理GOS缓存322中的数据以生成TCP包,例如,通过添加TCP报头到GOS缓存322中的数据中。TCP/IP层316处理生成的TCP包来生成一个或多个IP包。如果TCP包太大,那么在步骤354中,TCP/IP层316可分割TCP包来生成多个IP包。TCP/IP层316可添加IP报头到TCP包或者到被分割的TCP包的每段中,以形成一个或多个IP包。
在步骤356中,虚拟NIC驱动318提供一个接口来允许NIC 340访问GOS缓存322中的IP包。虚拟NIC驱动318将GOS缓存322的地址传送到NIC 340。NIC 340将GOS缓存322中的IP包复制到NIC缓存341。在步骤358中,NIC 340处理NIC缓存341中的IP包以通过网络媒介(如以太网缆线)传输。这包括处理数据以适配以太网协议。例如,如果IP包太大,NIC 340中的链路层模块342可将IP包分割成多个以太网包。在步骤360中,NIC 340将以太网包传输到网络媒介上,所述网络媒介可以是将以太网包从一个网络节点传输到另一个的缆线。
图3C是根据本发明实施例使用具有I/O共享的直接I/O从网络中接收数据的典型步骤流程图。参考图3C,图中示出了步骤370到382。在步骤370中,NIC 340从网络中接收以太网包。接收的以太网包可存储在NIC缓存341中。在步骤372中,NIC 340中的链路层模块342处理接收的以太网包,包括确认以太网包应该由NIC 340接收。链路层模块342也可从以太网包中移除以太网信息来形成IP包。NIC 340也可确定哪个GOS应该接收这个IP包。如果发送网络节点在传输中已将IP包分割成多个以太网包,NIC 340中的链路层模块342将多个接收的以太网包重组为一个IP包。
在步骤374中,NIC 340将NIC缓存341中的IP包传输到接收缓存324。当NIC 340完成传送IP包后,可以告知虚拟NIC驱动318其已完成IP包传输。虚拟NIC驱动318可指示套接字层314,即接收缓存324有新的IP包。在步骤376中,套接字层314将IP包复制到GOS缓存322。在步骤378中,TCP/IP层316处理GOS缓存322中的IP包来移除TCP和/或IP信息,以重新获得应用层312使用的数据。
在步骤380中,套接字层314将数据从GOS缓存322复制到用户缓存320。在步骤382中,应用层212可访问用户缓存220中的数据。
图4A是根据本发明实施例典型的具有I/O共享的协议卸载功能和直接I/O功能模块图。参考图4A,图中示出了GOS 410...411、TGOS 430、NIC 440、管理程序445和I/O存储器管理单元(I/O MMU)447。每个GOS 410...411包括应用层412、套接字层414、TCP/IP层416和虚拟NIC驱动418。用户缓存420、GOS缓存422和接收缓存424可由每个GOS 410...411、TGOS 430和/或管理程序445分配给GOS 410使用。因此,每个GOS 410...411逻辑上和/或物理上包括用户缓存420、GOS缓存422和接收缓存424。GOS 410...411类似于图1A描述的GOS 102a、102b或102c。多个GOS 410...411可共享一个共同的资源,如NIC 440。
应用层412包括匹配的应用,如用户使用电子邮件程序或网络浏览程序。套接字层414包括匹配的代码,其可将用户缓存中的数据从应用层412复制到GOS缓存422,反之亦然。虚拟NIC驱动418包括匹配的代码,其可进行NIC 440与每个GOS 410...411之间数据的传输。用户缓存420、GOS缓存422和接收缓存424可以是主存储器120的一部分。或者,接收缓存424可以是硬件缓存。
TGOS 430包括匹配的逻辑、电路和/或代码,用于支持多个GOS传输和/或接收来自网络中的数据。TGOS 430包括TGOS代码430a,其可实现GOS使用的NIC资源/服务/缓存的分配。分配的缓存可以是用户缓存420、GOS缓存422和/或接收缓存424。TGOS 430也包括有地址表430b,用于将缓存的偏移索引或虚拟地址转换为缓存的物理地址。在与本申请同一日期提交的申请号为___的美国专利申请(代理案号17710US02)中阐明了一种典型的地址转换表。地址转换表430b包括缓存池的地址组,这些缓存可以是主存储器120的一部分。
NIC 440包括匹配的逻辑、电路和/或代码,用于处理从应用层传输到网络的数据,或从网络中接收的数据。NIC 440还包括有NIC缓存441、TCP/IP层模块442、链路层模块444。NIC缓存441用于存储从网络中接收的数据和/或被传输到网络中的数据。NIC缓存441类似于TX队列108b、112b、114b和RX队列108c、112c和114c。
TCP/IP层模块442包括匹配的逻辑、电路和/或代码,用于处理通过TCP/IP协议从网络中传输和/或接收的数据。链路层模块442包括匹配的逻辑、电路和/或代码,用于在数据传输到以太网网络之前,处理数据以适配以太网链路层协议。从以太网网络接收的数据也可由链路层模块442处理。
管理程序445包括匹配的逻辑、电路和/或代码,用于协调对从网络接收的数据或传输到网络的数据的控制以及对资源的分配。分配的资源包括GOS410...411和NIC 440的不同缓存。例如,当GOS 410...411、TGOS 430和/或NIC 440正在操作的时候,缓存可在上电时从主存储器120分配,和/或动态地从主存储器120分配。管理程序445从套接字层414中接收到缓存请求,并将接收的请求发送到TGOS 430。TGOS 430然后可分配缓存。分配的缓存的地址可发送到管理程序445。管理程序445然后将分配的缓存的地址传送到套接字层414。或者,将缓存的偏移索引传送给管理程序445,然后管理程序将该偏移索引传送给套接字层414。
I/O MMU 447包括匹配的逻辑、电路和/或代码,用于将虚拟地址转换成物理地址。因此,设备,例如NIC 440,可以使用虚拟存储器地址来寻址存储器位置。虚拟存储器地址可由I/O MMU 447截取,进而I/O MMU 447可将虚拟存储器地址转换成物理存储器地址。I/O MMU 447将物理存储器地址输出到与主系统存储器连接的地址总线。NIC 440然后可在物理存储器地址的位置访问数据。
在操作中,应用层,例如应用层412,将数据传输到网络中。该数据可由套接字层414从用户缓存420中复制到GOS缓存422。如果没有可用的GOS缓存422,那么套接字层414可从TGOS 430中请求一个缓存作为GOS缓存422使用。典型的TGOS对资源的分配在与本申请同一日期提交的申请号为_____的美国专利申请(代理案号17710US02)中描述过。
套接字层414将GOS缓存422的偏移索引、GOS缓存422的虚拟地址或GOS缓存422的物理地址告知给虚拟NIC驱动416。具体的寻址方案取决于特定的设计。套接字层414还告知管理程序445数据在GOS缓存422中,这些数据可传输到网络中。管理程序445可将资源(如NIC 440)分配到GOS 410以允许GOS缓存422中数据的传输。
虚拟NIC驱动416可将GOS缓存422的地址告知给NIC 440。如果地址是物理地址,那么NIC 440可将数据从GOS缓存422复制到NIC缓存441。否则,NIC 440可将该地址转换成物理地址。这种转换可通过地址转换表440b或I/OMMU447完成。与本申请同一日期提交的申请号为__的美国专利申请(代理案号17710US02)描述了NIC 440对GOS缓存422的访问。将数据复制到NIC 440可通过编程I/O或DMA传输完成。
NIC 440中的TCP/IP层模块442可从NIC缓存441中的数据生成一个或多个IP包。来自TCP/IP层模块442的封包数据然后由链路层模块444加入适当的链路层信息。来自链路层模块444的数据包可以是以太网包,它们由NIC440传输到网络上,如以太网网络。
另外,NIC 440可从以太网网络中接收包。接收的包可存储在NIC缓存441中。链路层模块442可从接收的数据包中解析出链路层信息。如果链路层模块442确定以太网包已到达正确的NIC,那么对以太网包进行处理来生成IP包。或者,IP包也可从多个以太网包中重组得到。生成的IP包可传送到TCP/IP层模块442。
TCP/IP层模块442确定IP数据报(datagram)是否是由发送网络节点从一个TCP段生成的多个IP数据报的其中之一。如果是,TCP/IP层模块442重组多个IP包来形成一个TCP包。否则,TCP/IP层模块442可从一个IP包生成一个TCP包。生成的TCP包可由TCP/IP层模块442处理以形成数据包,该数据包存储在NIC缓存441中。该处理包括从TCP段中移除TCP报头。NIC 440也可确定数据包传送到哪个GOS。NIC 440通过将事件放置在事件队列108a、112a或114a中,将数据包告知到NIC 440确定的GOS。
虚拟NIC驱动416与NIC 440进行通信来控制NIC缓存441中的数据包传输到接收缓存424。例如,虚拟NIC驱动416将接收缓存424的地址传送给NIC440。如果接收缓存424的地址是物理地址,那么NIC 440可使用该物理地址将数据从NIC缓存传输到接收缓存424中。另外,NIC 440可通过地址转换表430b或I/O MMU 447,将来自虚拟NIC驱动416的地址转换成物理地址。NIC 440传送数据通过编程I/O或DMA传输完成。
NIC 440告知虚拟NIC驱动416,从NIC缓存441传送来的数据包在接收缓存424中。虚拟NIC驱动416可提醒套接字层414接收缓存324装有来自NIC缓存441的数据包。套接字层414可将接收缓存424中的数据包复制到GOS缓存322。GOS缓存422中的数据包由套接字层414复制到用户缓存420。应用层412然后可访问用户缓存420中数据包中的数据。因此,多个GOS可共享单个NIC,这个NIC可卸载网络协议操作。该网络协议操作可以是TCP/IP操作。每个GOS也可将数据直接传送给NIC以进行处理并传输到网络,同样NIC将从网络接收并由NIC处理的数据传送给每个GOS。
虽然TCP/IP层的例子用于协议栈(protocol stack),但是本发明并不局限于此。例如,本发明不同的实施例也可以用于使用其它协议栈的网络,如开放式系统互联(OSI)七层网络模型。本发明的其它实施例包括具有嵌入在硬件中的多个GOS和多个网络层的虚拟化。例如,OSI层5、4、3和/或2的硬件实现可位于网络接口卡/电路中。
图4B是根据本发明实施例使用具有I/O共享的协议卸载功能和直接I/O将数据传输到网络的典型步骤流程图。参考图4B,图中示出了步骤450到458。在步骤450中,GOS 410中的应用层,例如应用层412,可将数据传输到网络。这些数据已经由应用层412放置在用户缓存420中。
在步骤452中,这些数据由套接字层414从用户缓存420复制到GOS缓存422中。套接字层414可进一步将GOS缓存422的地址传送给虚拟NIC驱动416。
在步骤454中,虚拟NIC驱动416将GOS缓存422的地址传送给NIC 440。如果该地址是GOS缓存422的物理地址,那么NIC 440可使用该物理地址将数据从GOS缓存422传输到NIC缓存441。如果GOS缓存422的地址不是物理地址,那么NIC 440使用地址转换表430b来确定物理地址。NIC 440然后将数据从GOS缓存传输到NIC缓存441。NI C440的数据传输可通过编程I/O或DMA传输进行。
在步骤456中,NIC 440处理NIC缓存441中的数据以便通过网络媒介(如缆线)传输。该处理包括TCP/IP层模块442的TCP/IP层处理。NIC 440中的TCP/IP层模块442处理NIC缓存441中的数据以形成TCP段。TCP/IP层模块442可进一步处理TCP段,包括将TCP段分割为多个数据报(如果TCP包大于IP数据报的数据字段(data field)的允许大小)。这多个包然后可处理成多个IP包。
该处理也包括链路层模块444的链路层处理。链路层模块442可处理每个IP包已通过以太网媒介传输。例如,如果IP包大于以太网包的数据字段的允许大小,那么NIC 440中的链路层模块444可将IP包分割成多个以太网包。在步骤457中,NIC 440将以太网包传输到网络媒介上,如以太网缆线。
图4C是根据本发明实施例典型的使用具有I/O共享的协议卸载功能和直接I/O从网络中接收数据的步骤流程图。参考图4C,图中示出了步骤470到478。在步骤470中,NIC 440通过网络媒介从互联网中接收以太网包。以太网包可存储在NIC缓存441中。在步骤472中,NIC 440可处理以太网包,包括链路层模块444确认该以太网包应该由NIC 440接收。
链路层模块444也可从接收包中移除以太网信息来形成IP包。如果发送网络节点在传输中已分割IP包,NIC 440中的链路层模块444也可重组多个以太网包以形成一个IP数据报。生成的IP包然后可由TCP/IP模块442进行处理。如果发送网络节点在传输中已分割TCP包来形成多个IP包,NIC 440中的TCP/IP层模块442可重组多个IP包来形成一个TCP包。NIC 440中的TCP/IP层模块442然后从TCP包形成数据包,并且数据包存储在NIC缓存441中。NIC 440也可确定数据包传送到哪个GOS。还可将事件状态置入合适的事件队列(例如事件队列108a、112a或114a)以提供指示给对应的GOS来接收数据包。
在步骤474中,NIC 440将NIC缓存441中的数据包传输到GOS 410中的接收缓存324。虚拟NIC驱动416已经将接收缓存424的地址传送给NIC 440。虚拟NIC驱动416可已经从套接字层414中接收到接收缓存424的地址。如果接收缓存424的地址是物理地址,那么NIC 440可使用该物理地址将数据从NIC缓存441传输到接收缓存424。否则,NIC 440可通过地址转换表430b将来自虚拟NIC驱动416的缓存地址转换为物理地址。NIC 440的数据传输可通过编程I/O或DMA传输完成。
NIC440通过登记一个事件来指示虚拟NIC驱动416数据在接收缓存424中。虚拟NIC驱动416告知套接字层数据包在接收缓存424中。在步骤476中,套接字层414将数据从接收缓存424复制到用户缓存420。在步骤478中,应用层412可访问用户缓存420中数据包内的数据。
根据本发明的实施例,典型系统的特征包括单个NIC,例如NIC 440。NIC440可由多个GOS共享以访问网络,例如GOS 410...411。例如,当NIC 440与GOS 410通信时,GOS 410可通过NIC 440访问网络。
NIC 440为多个GOS 410...411的每个GOS的网络访问直接控制输入/输出处理。在没有TGOS 430控制传输到网络的数据和/或从网络中接收的数据时,NIC 440可为多个GOS 410...411的每个GOS直接控制处理传输到网络的数据和/或从网络中接收的数据。NIC 440可将数据直接从多个GOS 410...411中一个GOS的应用缓存(例如用户缓存420)复制到单NIC中的缓存(例如NIC缓存441)。NIC 440也可将数据直接从NIC缓存441复制到用户缓存420。
因此,NIC 440是由多个GOS 410...411共享的资源。当分配资源给GOS410..411的管理程序(例如管理程序445)指示GOS可访问网络时,每个GOS410...411都可与NIC 440通信。管理程序445可结合TGOS 430进行操作。或者,TGOS 430的功能可嵌入到管理程序445中。所述功能是否在管理程序445和TGOS 430中,或仅在管理程序445中,这些都取决于特定的设计。
NIC 440可从GOS 410...411中卸载网络协议操作。例如,NIC 440可执行OSI层3、OSI层4和/或OSI层5协议操作。在本发明的其它实施例中,NIC440可执行TCP操作和/或IP操作。NIC 440也可执行链路层网络协议操作,例如OSI层2。NIC 440也可从通讯连接到NIC 440的主系统(如主系统106)中卸载网络操作。
NIC 440通过TGOS(例如TGOS 430)控制多个GOS 410...411中每个GOS的网络数据访问。还有,在没有任何TGOS 430的处理下,NIC 440可实现多个GOS 410...411中每个GOS的网络数据访问的直接输入/输出。然而,TGOS 430和/或管理程序445可参与网络数据访问的资源分配和/或来自GOS 410...411中一个GOS的命令的处理。GOS 410上的用户缓存420可通过地址来访问,所述地址由GOS 410传送给NIC 440。例如,虚拟NIC驱动416可将GOS缓存422的地址传送给NIC 440。因此,NIC 440可将数据从GOS缓存422传输到NIC缓存441。
来自GOS的缓存的地址可以是物理地址或虚拟地址。如果该地址是物理地址,那么NIC 440可直接访问GOS上的缓存。NIC可使用TGOS 430中的地址转换表430b。或者,NIC 440可使用I/O MMU。因此,NIC 440将地址输出到I/O MMU 447,然后I/O MMU 447将物理地址输出到地址总线上,从而允许对由该物理地址寻址的位置进行读/写访问。又或者,GOS可传送缓存偏移索引。例如,缓存可具有一个49的偏移索引,表示其是缓存池中的第50个缓存。偏移索引一般不通过I/O MMU 447转换。因此,偏移索引可使用地址转换表(如地址转换表430b)进行转换。
虽然TCP/IP层的例子用于协议栈,但是本发明并不局限于此。例如,本发明不同的实施例也可以用于使用其它协议栈的网络,如开放式系统互联(OSI)七层网络模型。本发明的实施例包括具有嵌入在硬件中的多个GOS和多个网络层的虚拟化。例如,OSI层5、4、3和/或2的硬件实现可位于网络接口卡/电路中。
另外,虽然本发明描述了不同的功能模块,但是本发明并不局限于此。本发明的一些实施例可使用其它架构。例如,TGOS 430和管理程序445的一些功能可结合起来或另外分布到一个或多个功能模块。另外,套接字层414和虚拟NIC驱动416的至少一些功能可结合起来或另外分布到一个或多个功能模块。
本发明的另一实施例提供了一种可机读存储器,其中存储有具有至少一个机器可执行代码部分的计算机程序,从而使机器在虚拟网络环境中执行上述的用于协议卸载的方法。
因此,本发明可以用硬件、软件或者硬件和软件的组合实现。本发明可以在至少一个计算机系统的集中模式下实现,或者在分布式模式下实现,在所述分布式模式下,不同组件分布在几个互联的计算机系统中。采用任何适用于执行本发明介绍的方法的计算机系统或者其他设备都是合适的。一种硬件、软件和固件的典型组合是具有计算机程序的通用计算机系统,当程序被加载和执行时,控制所述计算机系统以使其执行本申请描述的方法。
本发明还可以嵌入到计算机程序产品内,所述计算机程序包含能够实现本发明方法的全部特征,当其安装到计算机系统中时,通过运行,可以实现本发明的方法。本文件中的计算机程序所指的是:可以采用任何程序语言、代码或符号编写的一组指令的任何表达式,该指令组使系统具有信息处理能力,以直接实现特定功能,或在进行下述一个或两个步骤之后实现特定功能:a)转换成其它语言、编码或符号;b)以不同的格式再现。然而,本领域技术人员能够理解的计算机程序的其它含义也被本发明所包含。
本发明是通过一些实施例进行描述的,本领域技术人员知悉,在不脱离本发明的精神和范围的情况下,可以对这些特征和实施例进行各种改变或等效替换。另外,在本发明的教导下,可以对这些特征和实施例进行修改以适应具体的情况及材料而不会脱离本发明的精神和范围。因此,本发明不受此处所公开的具体实施例的限制,所有落入本申请的权利要求范围内的实施例都属于本发明的保护范围。
引用文件
本申请引用并要求申请号为60/758581、申请日为2006年1月12日的美国临时专利申请的优先权,并将其全文引入本申请中。
本申请还引用2007年1月12日提交的申请号为________的美国专利申请(代理案号17710US02)。
以上所述给出的每一件申请在此作为整体而参考引用。

Claims (45)

1、一种通过网络通信的方法,其特征在于,所述方法包括:
由多个GOS共享提供网络访问的单网络接口电路;
直接由所述单网络接口电路为所述多个GOS中的每个GOS控制对发送给所述网络的数据和从所述网络接收的数据两者中至少其一的处理,而无需中间媒介为所述多个GOS控制对发送给所述网络的数据和从所述网络接收的数据两者中至少其一的处理。
2、根据权利要求1所述的方法,其特征在于,所述方法包括直接由所述单网络接口电路控制所述多个GOS中每个GOS的所述网络访问的输入/输出处理。
3、根据权利要求1所述的方法,其特征在于,所述方法包括由所述单网络接口电路将数据从所述多个GOS其中一个的缓存直接复制到所述单网络接口电路的缓存。
4、根据权利要求3所述的方法,其特征在于,所述多个GOS其中一个的缓存是应用缓存。
5、根据权利要求1所述的方法,其特征在于,所述单网络接口电路将数据从所述单网络接口电路的缓存直接复制到所述多个GOS其中一个GOS的缓存。
6、根据权利要求1所述的方法,其特征在于,所述方法包括由所述单网络接口电路为所述多个GOS交换通信,其中当所述单网络接口电路将所述通信交换到所述网络时,每个GOS访问所述网络。
7、根据权利要求1所述的方法,其特征在于,所述方法包括由所述TGOS和所述管理程序中至少其一协调所述多个GOS中至少一个GOS的命令处理。
8、根据权利要求1所述的方法,其特征在于,所述方法包括由所述单网络接口电路通过所述多个GOS中至少一个GOS传送的物理地址访问所述多个GOS中所述至少一个GOS的至少一个缓存。
9、根据权利要求1所述的方法,其特征在于,所述单网络接口电路为GOS和TGOS其中之一或两者进行的所述控制包括以下至少一个:OSI层3协议操作、OSI层4协议操作和OSI层5协议操作。
10、根据权利要求1所述的方法,其特征在于,所述单网络接口电路为GOS和TGOS其中之一或两者进行的所述控制包括以下至少一个:TCP操作和IP操作。
11、根据权利要求1所述的方法,其特征在于,所述方法包括由所述单网络接口电路为GOS和TGOS其中之一或两者执行链路层协议操作。
12、一种通过网络通信的方法,其特征在于,所述方法包括:
由多个GOS共享提供网络访问的单网络接口电路;
由所述单网络接口电路通过TGOS为所述多个GOS的每个GOS控制对发送给所述网络的数据和从所述网络接收的数据两者中至少其一的处理,以为所述多个GOS控制对发送给所述网络的数据和从所述网络接收的数据两者中至少其一的处理。
13、根据权利要求12所述的方法,其特征在于,由所述单网络接口电路为GOS和TGOS其中之一或两者进行的所述控制包括以下至少其一:OSI层2协议操作、OSI层3协议操作、OSI层4协议操作和OSI层5协议操作。
14、根据权利要求12所述的方法,其特征在于,所述方法包括由所述单网络接口电路将数据从所述多个GOS其中之一的缓存直接复制到所述单网络接口电路中的缓存。
15、根据权利要求12所述的方法,其特征在于,所述方法包括由所述单网络接口电路通过TGOS中的中间缓存将数据从所述多个GOS其中之一的缓存复制到单网络接口电路中的缓存。
16、一种可机读存储器,其特征在于,其中存储了具有用于通过网络通信的至少一个代码部分的计算机程序,所述至少一个代码部分是机器可执行的,用于使所述机器执行以下步骤:
由多个GOS共享提供网络访问的单网络接口电路;
直接由所述单网络接口电路为所述多个GOS中的每个GOS控制对发送给所述网络的数据和从所述网络接收的数据两者中至少其一的处理,而无需中间媒介为所述多个GOS控制对发送给所述网络的数据和从所述网络接收的数据两者中至少其一的处理。
17、根据权利要求16所述的可机读存储器,其特征在于,包括用于直接由所述单网络接口电路控制所述多个GOS中每个GOS的所述网络访问的输入/输出处理的代码。
18、根据权利要求16所述的可机读存储器,其特征在于,包括用于由所述单网络接口电路将数据从所述多个GOS其中一个的缓存直接复制到所述单网络接口电路的缓存的代码。
19、根据权利要求16所述的可机读存储器,其特征在于,所述多个GOS其中一个的缓存是应用缓存。
20、根据权利要求16所述的可机读存储器,其特征在于,包括用于由所述单网络接口电路将数据从所述单网络接口电路的缓存直接复制到所述多个GOS其中一个GOS的缓存的代码。
21、根据权利要求16所述的可机读存储器,其特征在于,包括用于由所述单网络接口电路为所述多个GOS交换通信的代码,其中当所述单网络接口电路将所述通信交换到所述网络时,每个GOS访问所述网络。
22、根据权利要求16所述的可机读存储器,其特征在于,包括用于由所述TGOS和所述管理程序中至少其一协调所述多个GOS中至少一个GOS的命令处理的代码。
23、根据权利要求16所述的可机读存储器,其特征在于,包括用于由所述单网络接口电路通过所述多个GOS中至少一个GOS传送的物理地址访问所述多个GOS中所述至少一个GOS的至少一个缓存的代码。
24、根据权利要求16所述的可机读存储器,其特征在于,由所述单网络接口电路进行的所述控制包括以下至少一个:OSI层3协议操作、OSI层4协议操作和OSI层5协议操作。
25、根据权利要求16所述的可机读存储器,其特征在于,由所述单网络接口电路进行的所述控制包括以下至少其一:TCP操作和IP操作。
26、根据权利要求16所述的可机读存储器,其特征在于,包括用于由所述单网络接口电路执行链路层协议操作的代码。
27、一种可机读存储器,其特征在于,其中存储了具有用于通过网络通信的至少一个代码部分的计算机程序,所述至少一个代码部分是机器可执行的,用于使所述机器执行以下步骤:
由多个GOS共享提供网络访问的单网络接口电路;
由所述单网络接口电路通过TGOS为所述多个GOS的每个GOS控制对发送给所述网络的数据和从所述网络接收的数据两者中至少其一的处理,以为所述多个GOS控制对发送给所述网络的数据和从所述网络接收的数据两者中至少其一的处理。
28、根据权利要求27所述的机读存储,其特征在于,由所述单网络接口电路为GOS和TGOS其中之一或两者进行的所述控制包括以下至少其一:OSI层2协议操作、OSI层3协议操作、OSI层4协议操作和OSI层5协议操作。
29、根据权利要求27所述的可机读存储器,其特征在于,包括用于由所述单网络接口电路将数据从所述多个GOS其中之一的缓存直接复制到所述单网络接口电路中的缓存的代码。
30、根据权利要求27所述的可机读存储器,其特征在于,包括用于由所述单网络接口电路通过TGOS中的中间缓存将数据从所述多个GOS其中之一的缓存复制到单网络接口电路中的缓存的代码。
31、一种通过网络通信的系统,其特征在于,所述系统包括:
由多个GOS共享的单网络接口电路,其中所述单网络接口电路提供对网络的访问,并且所述单网络接口电路直接为所述多个GOS中的每个GOS控制对发送给所述网络的数据和从所述网络接收的数据两者中至少其一的处理,而无需中间媒介为所述多个GOS控制对发送给所述网络的数据和从所述网络接收的数据两者中至少其一的处理。
32、根据权利要求31所述的系统,其特征在于,所述单网络接口电路直接控制所述多个GOS中每个GOS的网络访问的输入/输出处理。
33、根据权利要求31所述的系统,其特征在于,所述单网络接口电路将数据从所述多个GOS其中一个的缓存直接复制到所述单网络接口电路的缓存。
34、根据权利要求33所述的系统,其特征在于,所述多个GOS其中一个的缓存是应用缓存。
35、根据权利要求31所述的系统,其特征在于,所述单网络接口电路将数据从所述单网络接口电路的缓存直接复制到所述多个GOS其中一个GOS的缓存。
36、根据权利要求31所述的系统,其特征在于,由所述单网络接口电路为所述多个GOS交换通信,以便当所述单网络接口电路将所述通信交换到所述网络时,每个GOS可访问所述网络。
37、根据权利要求31所述的系统,其特征在于,所述TGOS和所述管理程序中至少其一协调所述多个GOS中至少一个GOS的命令处理。
38、根据权利要求31所述的系统,其特征在于,所述单网络接口电路通过所述多个GOS中至少一个GOS传送的物理地址访问所述多个GOS中所述至少一个GOS的至少一个缓存。
39、根据权利要求31所述的系统,其特征在于,所述单网络接口电路为GOS和TGOS其中之一或两者进行的所述控制包括以下至少一个:OSI层3协议操作、OSI层4协议操作和OSI层5协议操作。
40、根据权利要求31所述的系统,其特征在于,所述单网络接口电路为GOS和TGOS其中之一或两者进行的所述控制包括以下至少一个:TCP操作和IP操作。
41、根据权利要求31所述的系统,其特征在于,所述单网络接口电路为GOS和TGOS其中之一或两者执行链路层协议操作。
42、一种通过网络通信的系统,其特征在于,所述系统包括:
由多个GOS共享的单网络接口电路,其中所述单网络接口提供对网络的访问,并且所述单网络接口电路通过TGOS为所述多个GOS的每个GOS控制对发送给所述网络的数据和从所述网络接收的数据两者中至少其一的处理,以为所述多个GOS控制对发送给所述网络的数据和从所述网络接收的数据两者中至少其一的处理。
43、根据权利要求42所述的系统,其特征在于,所述单网络接口电路为GOS和TGOS其中之一或两者进行的所述控制包括以下至少其一:OSI层2协议操作、OSI层3协议操作、OSI层4协议操作和OSI层5协议操作。
44、根据权利要求42所述的系统,其特征在于,所述单网络接口电路将数据从所述多个GOS其中之一的缓存直接复制到所述单网络接口电路中的缓存。
45、根据权利要求42所述的系统,其特征在于,所述单网络接口电路通过TGOS中的中间缓存将数据从所述多个GOS其中之一的缓存复制到所述单网络接口电路中的缓存。
CN200780001248.8A 2006-01-12 2007-01-12 虚拟化网络环境中具有i/o共享的协议卸载和直接i/o的方法和系统 Expired - Fee Related CN101356783B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US75858106P 2006-01-12 2006-01-12
US60/758,581 2006-01-12
PCT/US2007/000992 WO2007082097A2 (en) 2006-01-12 2007-01-12 Method and system for protocol offload and direct i/o with i/o sharing in a virtualized network environment

Publications (2)

Publication Number Publication Date
CN101356783A true CN101356783A (zh) 2009-01-28
CN101356783B CN101356783B (zh) 2014-06-04

Family

ID=38190746

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200780001248.8A Expired - Fee Related CN101356783B (zh) 2006-01-12 2007-01-12 虚拟化网络环境中具有i/o共享的协议卸载和直接i/o的方法和系统

Country Status (6)

Country Link
US (2) US7996569B2 (zh)
EP (1) EP1977571A2 (zh)
KR (1) KR100992050B1 (zh)
CN (1) CN101356783B (zh)
HK (1) HK1129174A1 (zh)
WO (1) WO2007082097A2 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102801610A (zh) * 2012-07-04 2012-11-28 深圳市京华科讯科技有限公司 一种外设及端口映射的网络端口合并的方法
CN106605399A (zh) * 2014-09-25 2017-04-26 英特尔公司 用于将虚拟服务端点卸载到网络接口卡的技术
CN108139982A (zh) * 2016-05-31 2018-06-08 博科通讯系统有限公司 多信道输入/输出虚拟化
US10127067B2 (en) 2013-10-29 2018-11-13 Huawei Technologies Co., Ltd. Method and computing device for selecting protocol stack for virtual machines
CN109690510A (zh) * 2016-09-08 2019-04-26 微软技术许可有限责任公司 用于将数据分发到高性能计算网络和基于云的网络中的多个接收器的多播装置和方法

Families Citing this family (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002084499A1 (en) * 2001-04-11 2002-10-24 Chelsio Communications, Inc. Multi-purpose switching network interface controller
US7660306B1 (en) 2006-01-12 2010-02-09 Chelsio Communications, Inc. Virtualizing the operation of intelligent network interface circuitry
US7724658B1 (en) 2005-08-31 2010-05-25 Chelsio Communications, Inc. Protocol offload transmit traffic management
US7660264B1 (en) 2005-12-19 2010-02-09 Chelsio Communications, Inc. Method for traffic schedulign in intelligent network interface circuitry
US7672299B2 (en) * 2006-06-30 2010-03-02 Sun Microsystems, Inc. Network interface card virtualization based on hardware resources and software rings
US8149709B2 (en) * 2006-06-30 2012-04-03 Oracle America, Inc. Serialization queue framework for transmitting packets
US8935406B1 (en) 2007-04-16 2015-01-13 Chelsio Communications, Inc. Network adaptor configured for connection establishment offload
US8060644B1 (en) 2007-05-11 2011-11-15 Chelsio Communications, Inc. Intelligent network adaptor with end-to-end flow control
US8589587B1 (en) * 2007-05-11 2013-11-19 Chelsio Communications, Inc. Protocol offload in intelligent network adaptor, including application level signalling
US7958145B2 (en) * 2007-11-20 2011-06-07 International Business Machines Corporation Creating multiple MBeans from a factory MBean
US8990799B1 (en) * 2008-01-30 2015-03-24 Emc Corporation Direct memory access through virtual switch in device driver
US8219778B2 (en) * 2008-02-27 2012-07-10 Microchip Technology Incorporated Virtual memory interface
JP4854710B2 (ja) * 2008-06-23 2012-01-18 株式会社東芝 仮想計算機システム及びネットワークデバイス共有方法
US8739179B2 (en) * 2008-06-30 2014-05-27 Oracle America Inc. Method and system for low-overhead data transfer
US20100070642A1 (en) * 2008-09-15 2010-03-18 Microsoft Corporation Offloading network protocol operations to network interface in sleep state
US9798560B1 (en) * 2008-09-23 2017-10-24 Gogrid, LLC Automated system and method for extracting and adapting system configurations
US8250267B2 (en) * 2008-10-31 2012-08-21 Netapp, Inc. Control I/O offload in a split-path storage virtualization system
US8112491B1 (en) 2009-01-16 2012-02-07 F5 Networks, Inc. Methods and systems for providing direct DMA
US9152483B2 (en) 2009-01-16 2015-10-06 F5 Networks, Inc. Network devices with multiple fully isolated and independently resettable direct memory access channels and methods thereof
US8880696B1 (en) 2009-01-16 2014-11-04 F5 Networks, Inc. Methods for sharing bandwidth across a packetized bus and systems thereof
US20100223419A1 (en) * 2009-03-02 2010-09-02 International Business Machines Corporation Copy circumvention in a virtual network environment
US8873375B2 (en) 2009-07-22 2014-10-28 Broadcom Corporation Method and system for fault tolerance and resilience for virtualized machines in a network
US8566822B2 (en) 2009-07-22 2013-10-22 Broadcom Corporation Method and system for distributing hypervisor functionality over multiple physical devices in a network and configuring sub-hypervisor to control the virtual machines
US9313047B2 (en) 2009-11-06 2016-04-12 F5 Networks, Inc. Handling high throughput and low latency network data packets in a traffic management device
US20110153715A1 (en) * 2009-12-17 2011-06-23 Microsoft Corporation Lightweight service migration
US9389895B2 (en) * 2009-12-17 2016-07-12 Microsoft Technology Licensing, Llc Virtual storage target offload techniques
US8607229B2 (en) 2010-02-05 2013-12-10 Riverbed Technology, Inc. Correcting packet timestamps in virtualized environments
US8862178B2 (en) * 2010-02-24 2014-10-14 Qualcomm Incorporated Methods and systems for managing participation in multiple wireless networks
US8086765B2 (en) * 2010-04-29 2011-12-27 Hewlett-Packard Development Company, L.P. Direct I/O device access by a virtual machine with memory managed using memory disaggregation
PL2586137T3 (pl) 2010-06-23 2017-09-29 Telefonaktiebolaget Lm Ericsson (Publ) Zarządzanie interferencjami sygnałów referencyjnych w sieciach heterogenicznych
US8392625B2 (en) 2010-06-25 2013-03-05 Intel Corporation Methods and systems to implement a physical device to differentiate amongst multiple virtual machines of a host computer system
US9213567B2 (en) * 2010-10-01 2015-12-15 Futurewei Technologies, Inc. System and method for controlling the input/output of a virtualized network
US8462632B1 (en) * 2010-12-28 2013-06-11 Amazon Technologies, Inc. Network traffic control
US10135831B2 (en) 2011-01-28 2018-11-20 F5 Networks, Inc. System and method for combining an access control system with a traffic management system
US9792136B2 (en) * 2011-04-28 2017-10-17 Microsoft Technology Licensing, Llc Hardware assisted inter hypervisor partition data transfers
US8838837B2 (en) 2011-06-23 2014-09-16 Microsoft Corporation Failover mechanism
US8843669B2 (en) 2011-09-09 2014-09-23 Microsoft Corporation Guest partition high CPU usage mitigation when performing data transfers in a guest partition
US9143467B2 (en) * 2011-10-25 2015-09-22 Mellanox Technologies Ltd. Network interface controller with circular receive buffer
WO2013095502A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Methods, systems, and computer program products for processing a packet
US8868672B2 (en) * 2012-05-14 2014-10-21 Advanced Micro Devices, Inc. Server node interconnect devices and methods
US9137173B2 (en) 2012-06-19 2015-09-15 Advanced Micro Devices, Inc. Devices and methods for interconnecting server nodes
US8930595B2 (en) 2012-06-21 2015-01-06 Advanced Micro Devices, Inc. Memory switch for interconnecting server nodes
US9253287B2 (en) 2012-08-20 2016-02-02 Advanced Micro Devices, Inc. Speculation based approach for reliable message communications
US8875256B2 (en) 2012-11-13 2014-10-28 Advanced Micro Devices, Inc. Data flow processing in a network environment
WO2014091277A1 (en) * 2012-12-12 2014-06-19 Pismo Labs Technology Limited Method and system to reduce wireless network packets for centralized layer two network
US9270602B1 (en) * 2012-12-31 2016-02-23 F5 Networks, Inc. Transmit rate pacing of large network traffic bursts to reduce jitter, buffer overrun, wasted bandwidth, and retransmissions
US10375155B1 (en) 2013-02-19 2019-08-06 F5 Networks, Inc. System and method for achieving hardware acceleration for asymmetric flow connections
US10454714B2 (en) 2013-07-10 2019-10-22 Nicira, Inc. Method and system of overlay flow control
US20150055456A1 (en) * 2013-08-26 2015-02-26 Vmware, Inc. Traffic and load aware dynamic queue management
US9864606B2 (en) 2013-09-05 2018-01-09 F5 Networks, Inc. Methods for configurable hardware logic device reloading and devices thereof
US10298416B2 (en) 2013-09-05 2019-05-21 Pismo Labs Technology Limited Method and system for converting a broadcast packet to a unicast packet at an access point
US9635024B2 (en) 2013-12-16 2017-04-25 F5 Networks, Inc. Methods for facilitating improved user authentication using persistent data and devices thereof
US10015143B1 (en) 2014-06-05 2018-07-03 F5 Networks, Inc. Methods for securing one or more license entitlement grants and devices thereof
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
WO2016171739A1 (en) * 2015-04-23 2016-10-27 Hewlett-Packard Development Company, L.P. Multi-processor computing systems
US9971550B2 (en) 2015-11-12 2018-05-15 International Business Machines Corporation Zero copy support by the virtual memory manager
KR101977726B1 (ko) 2015-11-17 2019-05-14 한국전자통신연구원 가상 데스크탑 서비스 방법 및 장치
US9875132B2 (en) 2015-11-25 2018-01-23 Red Hat Israel, Ltd. Input output memory management unit based zero copy virtual machine to virtual machine communication
CN107852349B (zh) 2016-03-31 2020-12-01 慧与发展有限责任合伙企业 用于多节点集群的事务管理的系统、方法及存储介质
US11706127B2 (en) 2017-01-31 2023-07-18 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
US10992568B2 (en) 2017-01-31 2021-04-27 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
US10516710B2 (en) 2017-02-12 2019-12-24 Mellanox Technologies, Ltd. Direct packet placement
US11979340B2 (en) 2017-02-12 2024-05-07 Mellanox Technologies, Ltd. Direct data placement
US10210125B2 (en) 2017-03-16 2019-02-19 Mellanox Technologies, Ltd. Receive queue with stride-based data scattering
US10972453B1 (en) 2017-05-03 2021-04-06 F5 Networks, Inc. Methods for token refreshment based on single sign-on (SSO) for federated identity environments and devices thereof
US11252464B2 (en) 2017-06-14 2022-02-15 Mellanox Technologies, Ltd. Regrouping of video data in host memory
US10367750B2 (en) 2017-06-15 2019-07-30 Mellanox Technologies, Ltd. Transmission and reception of raw video using scalable frame rate
US10523539B2 (en) 2017-06-22 2019-12-31 Nicira, Inc. Method and system of resiliency in cloud-delivered SD-WAN
US11115480B2 (en) 2017-10-02 2021-09-07 Vmware, Inc. Layer four optimization for a virtual network defined over public cloud
US10608844B2 (en) 2017-10-02 2020-03-31 Vmware, Inc. Graph based routing through multiple public clouds
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
US11416299B2 (en) 2017-12-20 2022-08-16 Telefonaktiebolaget Lm Ericsson (Publ) Method and resource scheduler for enabling a computing unit to map remote memory resources based on optical wavelength
US11855898B1 (en) 2018-03-14 2023-12-26 F5, Inc. Methods for traffic dependent direct memory access optimization and devices thereof
CN110554977A (zh) * 2018-05-30 2019-12-10 阿里巴巴集团控股有限公司 数据缓存方法、数据处理方法、计算机设备、存储介质
CN109547531B (zh) * 2018-10-19 2021-04-09 华为技术有限公司 数据处理的方法、装置和计算设备
US11537716B1 (en) 2018-11-13 2022-12-27 F5, Inc. Methods for detecting changes to a firmware and devices thereof
US11593168B2 (en) * 2019-06-26 2023-02-28 Red Hat, Inc. Zero copy message reception for devices via page tables used to access receiving buffers
US11310170B2 (en) 2019-08-27 2022-04-19 Vmware, Inc. Configuring edge nodes outside of public clouds to use routes defined through the public clouds
US11044190B2 (en) 2019-10-28 2021-06-22 Vmware, Inc. Managing forwarding elements at edge nodes connected to a virtual network
US11489783B2 (en) 2019-12-12 2022-11-01 Vmware, Inc. Performing deep packet inspection in a software defined wide area network
US11722925B2 (en) 2020-01-24 2023-08-08 Vmware, Inc. Performing service class aware load balancing to distribute packets of a flow among multiple network links
US11363124B2 (en) 2020-07-30 2022-06-14 Vmware, Inc. Zero copy socket splicing
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
US11575600B2 (en) 2020-11-24 2023-02-07 Vmware, Inc. Tunnel-less SD-WAN
US11929903B2 (en) 2020-12-29 2024-03-12 VMware LLC Emulating packet flows to assess network links for SD-WAN
CN116783874A (zh) 2021-01-18 2023-09-19 Vm维尔股份有限公司 网络感知的负载平衡
US11979325B2 (en) 2021-01-28 2024-05-07 VMware LLC Dynamic SD-WAN hub cluster scaling with machine learning
US11381499B1 (en) 2021-05-03 2022-07-05 Vmware, Inc. Routing meshes 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
US11909815B2 (en) 2022-06-06 2024-02-20 VMware LLC Routing based on geolocation costs

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414851A (en) * 1992-06-15 1995-05-09 International Business Machines Corporation Method and means for sharing I/O resources by a plurality of operating systems
US6523113B1 (en) * 1998-06-09 2003-02-18 Apple Computer, Inc. Method and apparatus for copy protection
US7155542B2 (en) * 2001-06-27 2006-12-26 Intel Corporation Dynamic network interface with zero-copy frames
US7424710B1 (en) * 2002-12-18 2008-09-09 Vmware, Inc. TCP/IP offloading for virtual machines
US7478173B1 (en) * 2003-12-18 2009-01-13 Wmware, Inc. Method and system for sharing a network connection in a virtual computer system
GB2411494B (en) * 2004-02-27 2006-04-12 Toshiba Res Europ Ltd Protocol stack with modification facility
CN1674538A (zh) * 2004-03-25 2005-09-28 联想(北京)有限公司 一种基于局域网的网络存储系统及其读写数据方法
US8635612B2 (en) * 2005-04-29 2014-01-21 Microsoft Corporation Systems and methods for hypervisor discovery and utilization
US7496495B2 (en) * 2005-05-12 2009-02-24 Microsoft Corporation Virtual operating system device communication relying on memory access violations
US7721299B2 (en) * 2005-08-05 2010-05-18 Red Hat, Inc. Zero-copy network I/O for virtual hosts
US20070074192A1 (en) * 2005-08-30 2007-03-29 Geisinger Nile J Computing platform having transparent access to resources of a host platform
WO2007053980A1 (en) * 2005-11-12 2007-05-18 Intel Corporation Method and apparatus to support virtualization with code patches
US7702826B2 (en) * 2005-12-28 2010-04-20 Intel Corporation Method and apparatus by utilizing platform support for direct memory access remapping by remote DMA (“RDMA”)-capable devices

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102801610A (zh) * 2012-07-04 2012-11-28 深圳市京华科讯科技有限公司 一种外设及端口映射的网络端口合并的方法
CN102801610B (zh) * 2012-07-04 2015-05-13 深圳市京华科讯科技有限公司 一种外设及端口映射的网络端口合并的方法
US10127067B2 (en) 2013-10-29 2018-11-13 Huawei Technologies Co., Ltd. Method and computing device for selecting protocol stack for virtual machines
CN106605399A (zh) * 2014-09-25 2017-04-26 英特尔公司 用于将虚拟服务端点卸载到网络接口卡的技术
CN106605399B (zh) * 2014-09-25 2019-12-10 英特尔公司 用于将虚拟服务端点卸载到网络接口卡的技术
CN108139982A (zh) * 2016-05-31 2018-06-08 博科通讯系统有限公司 多信道输入/输出虚拟化
CN109690510A (zh) * 2016-09-08 2019-04-26 微软技术许可有限责任公司 用于将数据分发到高性能计算网络和基于云的网络中的多个接收器的多播装置和方法
CN109690510B (zh) * 2016-09-08 2022-07-01 微软技术许可有限责任公司 用于将数据分发到高性能计算网络和基于云的网络中的多个接收器的多播装置和方法

Also Published As

Publication number Publication date
HK1129174A1 (zh) 2009-11-20
KR100992050B1 (ko) 2010-11-05
KR20080092908A (ko) 2008-10-16
EP1977571A2 (en) 2008-10-08
US8549098B2 (en) 2013-10-01
US20070162572A1 (en) 2007-07-12
WO2007082097A2 (en) 2007-07-19
US20070162619A1 (en) 2007-07-12
WO2007082097A3 (en) 2007-09-07
CN101356783B (zh) 2014-06-04
US7996569B2 (en) 2011-08-09

Similar Documents

Publication Publication Date Title
CN101356783B (zh) 虚拟化网络环境中具有i/o共享的协议卸载和直接i/o的方法和系统
US8255475B2 (en) Network interface device with memory management capabilities
US9813338B2 (en) Co-existence of routable and non-routable RDMA solutions on the same network interface
JP4722157B2 (ja) ネットワークトラフィックのインテリジェントロードバランシング及びフェイルオーバー
US9432304B2 (en) System and method for supporting live migration of virtual machines based on an extended host channel adaptor (HCA) model
EP2284717B1 (en) Controller integration
JP4651692B2 (ja) ネットワークトラフィックのインテリジェントロードバランシング及びフェイルオーバー
JP4633921B2 (ja) ルート・サーバ
JP4840943B2 (ja) ネットワークトラフィックのインテリジェントロードバランシング及びフェイルオーバー
US20030198214A1 (en) Method for sharing network information and a router apparatus
US20120087373A1 (en) Efficient data transfer within a virtual network
JP2008535342A (ja) オペレーティング・システム・パーティションのためのネットワーク通信
EP3771169B1 (en) Message processing method and related device
WO2004051489A2 (en) Embedded transport acceleration architecture
JP2003179626A (ja) 中継コネクション管理プログラムおよび中継コネクション管理方法
US20030182440A1 (en) Network processor with high-speed transceiver
WO2011078861A1 (en) A computer platform providing hardware support for virtual inline appliances and virtual machines
US6185218B1 (en) Communication method and apparatus for use in a computing network environment having high performance LAN connections
EP0969630B1 (en) Method for sharing network information and router apparatus
CN101262425A (zh) 基于网络地址转换的多播转发的方法
CN114726883B (zh) 一种嵌入式rdma系统
CN108063737B (zh) 一种FCoE存储区域网读请求处理方法及系统
CN116939053A (zh) 一种跨主机的容器间通信方法以及网络设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1129174

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1129174

Country of ref document: HK

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

Granted publication date: 20140604

Termination date: 20170112

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