CN107683593B - 通信装置和相关方法 - Google Patents
通信装置和相关方法 Download PDFInfo
- Publication number
- CN107683593B CN107683593B CN201680037075.4A CN201680037075A CN107683593B CN 107683593 B CN107683593 B CN 107683593B CN 201680037075 A CN201680037075 A CN 201680037075A CN 107683593 B CN107683593 B CN 107683593B
- Authority
- CN
- China
- Prior art keywords
- remote
- vnic
- resources
- host
- vnics
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7825—Globally asynchronous, locally synchronous, e.g. network on chip
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Abstract
一种装置,包括:多个物理IO端口,用于耦合到提供IO资源的多个远程LC;以及处理器,耦合到所述多个物理IO端口,并用于:通过向多个vNIC分配至少一些所述IO资源将所述远程LC映射到所述本地vNIC;接收包括访问所述vNIC中第一vNIC的请求的OS内核IO调用;确定与所述第一vNIC对应的所述远程LC中的第一远程LC;以及定向所述请求以访问所述第一远程LC。
Description
相关申请的交叉引用
不适用。
有关联邦资助的研究或开发的声明
不适用。
附加缩微胶片参考
不适用。
背景技术
外围部件互连标准(Peripheral Component Interconnect,PCI)总线存在于各种计算机系统中,如个人电脑(personal computer,PC)、服务器以及多机箱系统。PCI总线为计算机组件和/或外围设备提供通道用于与中央处理器(central processing unit,CPU)通信。开发了不同版本的PCI以提高不同总线架构的性能和其它功能。例如,原始PCI采用共享平行的总线架构,其中PCI主机及其所有设备共享一组共同的地址、数据以及控制线,而后来的快捷外围部件互连标准(PCI-Express,PCIe)是基于点到点拓扑,采用分离的串行链接将每个设备与PCIe主机连接。由于各个PCIe设备自身具有到PCIe主机的专用串联连接,与原始PCI相比,PCIe提供更高的吞吐量和更低的时延。
发明内容
在一个实施例中,本发明提供一种装置,包括:多个物理输入/输出(input/output,IO)端口,用于耦合到提供IO资源的多个远程线卡(linecard,LC);以及处理器,耦合到所述多个物理IO端口,并用于:通过向多个虚拟网卡(virtual network interfacecard,vNIC)分配至少一些所述IO资源将所述远程LC映射到所述本地vNIC;接收包括访问所述vNIC中第一vNIC的请求的操作系统(operating system,OS)内核IO调用;确定与所述第一vNIC对应的所述远程LC中的第一远程LC;以及定向所述请求以访问所述第一远程LC。
在另一个实施例中,本发明包括一种由OS下运行的本地服务器主机执行的方法,包括:获取耦合到所述本地服务器主机的多个远程LC的IO资源信息;根据所述远程LC的IO资源信息定义IO资源池;通过根据所述远程LC的IO资源信息分配所述资源池中的IO资源确定所述远程LC和多个vNIC之间的映射关系;接收包括访问所述vNIC中第一vNIC的请求的OS内核IO调用;确定与所述第一vNIC对应的所述远程LC中的第一远程LC;以及定向所述请求以访问所述第一远程LC。
在又一个实施例中,本发明包括一种装置,包括:多个物理IO端口,用于耦合到提供IO资源的多个远程LC,以及远程主机;以及处理器,耦合到所述多个物理IO端口,并且用于:获取所述多个远程LC的资源信息;根据所述远程LC的资源信息定义IO资源池;通过向所述vNIC分配所述IO资源池中的IO资源确定所述远程LC和多个vNIC之间的映射关系,其中所述vNIC中的至少第一vNIC与所述远程主机相关联;以及通过所述IO端口将配置消息发送至所述远程主机,其中所述配置消息包括与所述第一vNIC相关联的配置信息。
通过以下具体描述并结合附图以及权利要求书,将更清楚地理解这些特征以及其它特征。
附图说明
为了更透彻地理解本发明,现参阅结合附图和具体实施方式而描述的以下简要说明,其中的相同参考标号表示相同部分。
图1是在单主机环境下运行的计算机系统的一个实施例的示意图;
图2是在多主机环境下运行的计算机系统的一个实施例的示意图;
图3是可以用作计算机系统中的主机的网络元件(network element,NE)的一个实施例的示意图;
图4是检测和初始化网络LC的方法的一个实施例的协议图;
图5是将网络LC映射至本地vNIC的方法的一个实施例的协议图;
图6是为应用提供本地IO服务的方法的一个实施例的协议图;
图7是定义本地IO资源池的方法的一个实施例的流程图;
图8是向应用提供本地IO服务的方法的一个实施例的流程图;以及
图9是提供弹性本地IO资源池的方法的一个实施例的流程图。
具体实施方式
首先应理解,尽管下文提供一项或多项实施例的说明性实施方案,但所公开的系统和/或方法可使用任何数目的技术来实施,无论该技术是当前已知还是现有的。本发明决不应限于下文所说明的说明性实施方案、附图和技术,包括本文所说明并描述的示例性设计和实施方案,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。
OS是指管理计算机硬件和软件资源并向计算机程序和应用提供公共服务的软件。例如,OS可以提供一组可用于计算机程序和应用访问所述公共服务的内核调用或系统调用。OS执行的基本任务可以包括:分配内存;系统请求的优先排序;控制IO设备;促进联网;和/或管理文件系统。现代计算机系统采用的通用或常见的OS的一些实例可以包括Windows、Unix和Linux。
PCI和/或PCIe作为许多计算机系统的总线系统的一部分,并且PCI和/或PCIe设备作为本地IO设备与大部分通用OS集成。不同于通过网络连接与计算机系统远程连接的联网设备,本地IO设备为通过本地总线系统与计算机系统直接连接的设备。例如,在计算机系统内可通过设备-配置内存空间访问并控制PCI和/或PCIe设备。在系统启动(例如,上电)时,所述计算机系统的基本输入/输出系统(basic input/output system,BIOS)可以通过所述设备-配置内存空间检测并配置附加的PCI和/或PCIe设备。例如,所述BIOS可以为每个附加的PCI和/或PCIe设备确定内存,IO基地址和/或中断(interrupt,IRQ)线。此外,可加载对应于各个PCI设备的设备驱动程序,并且可通过所述设备驱动程序处理设备特定的配置。随后,在BIOS之上执行的通用OS可以提供对所述附加PCI设备进行IO访问的应用。例如,各个通用OS可以提供一组用于从附加PCT设备读取数据和/或将数据写入附加PCI设备的内核调用或系统调用。
随着数字资产增加以及部署了越来越多的应用,数据中心(data center,DC)也持续增长。为了满足日益增长的需求,DC通常进行服务器和/或存储虚拟化。服务器和/或存储虚拟化是指将物理资源及其使用从底层物理机分离的软件抽象技术。大部分物理资源可以抽象化并提供为虚拟实体。虚拟实体的一些实例可以包括CPU、网络IO和存储IO。例如,DC可以容纳多个服务器机架或机箱式系统。每个服务器机架包括多个设计用于固定LC(例如,计算和/或存储硬件单元)的安装槽或安装架,以及提供到所述LC的连接的背板。一个或多个宿主机或服务器主机可分布在所述服务器机架上,从而对所述LC提供管理及控制功能。由于大带宽和/或吞吐量需求,安装在服务器机架上的LC通常通过不同互连技术而非PCI和/或PCIe相互连接。同样地,当宿主机采用通用OS时,LC可以不与通用OS直接集成为本地IO或本地NIC。例如,一些DC采用交换结构技术(例如,纵横接线器)与服务器机架和/或LC相互连接,而一些其他DC采用开放式系统互连(Open System Interconnection,OSI)层2(layer2,L2)和/或层3(layer 3,L3)网络技术(例如,以太网交换机和/或IP交换机)与服务器机架和/或LC相互连接。因此,采用通用OS的服务器主机可不用与PCI设备集成采用相同的机制来将LC集成为本地IO设备和/或资源。
业界已经提出了几种将不基于PCI和/或PCIe的LC和/或IO设备和OS进行集成的方法。一种方法是,通过实现针对交换结构的专用协议开发专用OS。然而,采用专用OS缺乏灵活性,且限制了常见的第三方方案的采用或与第三方方案的集成。第二种方法是,通过OS内核网络调用(例如,插口)将LC与通用OS集成为远程网络设备。例如,华为公司的通用路由平台(Versatile Routing Platform,VRP)以及一些其他嵌入式OS可以通过使用现有网络协议,如文件802.1br中描述的电气电子工程师学会(Institute of Electrical andElectronics Engineers,IEEE)制定的桥端口扩展协议,集成LC。然而,当所述LC集成为远程网络设备时,通用OS可以不将所述LC作为本地IO设备而是作为网络连接呈现给应用。第三种方法是,板上专用集成电路(application-specific integrated circuit,ASIC)芯片与通用OS集成为本地网卡(network interface card,NIC)。例如,国际设计艺术院校联盟将Trident ASIC与Linux集成为本地NIC(例如,PCI或PCIe设备)。然而,该方法受限于本地板上组件且可能不会应用于远程网络设备。第四种方法是,扩展PCI特性以支持虚拟功能(virtual function,VF)。例如,单根IO虚拟化(single root-IO virtualization,SR-IOV)通过设计SR-IOV细节将PCI特性扩展至硬件中。因此,该方法与其他未设计成支持SR-IOV的硬件不兼容。一些其它业界方案在应用层提供远程设备的中央管理,如Juniper节点统一器(Juniper node unifier,JNU)。然而,这类方案着重于管理,并不着重于将远程设备作为IO资源呈现给应用。此外,上述的所有方法可能没有条件支持弹性IO重分配。
本说明书中公开了通过将网络LC映射到本地vNIC将网络LC与主机OS集成为通用IO设备的各种实施例,其中通用IO设备是指PCI和/或PCIe设备。例如,主机OS可内置有一组用于访问通用IO设备的OS内核IO调用或接口。例如,Linux OS包括用于与PCI和/或PCIe设备连接的内置的内核调用(例如,ioctl)。vNIC是指逻辑连接至LC的物理硬件的虚拟网络设备或虚拟IO设备。在本公开实施例中,主机OS可以将网络LC作为通用IO设备并通过OS内核IO调用向应用提供IO服务。例如,所述网络LC是通过某些网络连接与主机系统或宿主机连接的远程LC,并且向主机系统提供网络和/或IO资源(例如,内存和网络带宽)。本公开实施例中采用LC管理器(LC manager,LCM)管理并控制所述远程LC的使用。所述LCM将远程LC映射到本地vNIC。例如,LCM可以将单个网络LC的IO资源逻辑分离为多个部分并将不同部分映射至不同的本地vNIC。或者,LCM可以逻辑合并不同远程LC的IO资源并将合并后的IO资源映射至单个本地vNIC。主机OS可以将本地vNIC作为本地IO设备,并且应用可以通过OS内核IO接口访问所述本地vNIC。在一个实施例中,主机可以使用IO接口转换(IO interfaceconversion,IOIC)组件进行OS内核IO接口和设备驱动程序接口之间的转换,尤其是针对远程LC的硬件。由于本公开实施例通过本地vNIC从远程LC的物理硬件中抽象化所述远程LC的物理资源和物理资源的使用,本公开实施例可以将所述远程LC的物理资源呈现为可动态适应IO需求的弹性本地IO资源池。此外,本公开实施例可适合于多主机系统,其中单个LCM可用于管理远程LC并为多个主机提供远程LC和本地vNIC之间的映射。
图1是在单主机环境下运行的计算机系统100的一个实施例的示意图。所述系统100包括主机硬件110、多个LC 120(例如,LC1、LC2、LC3和LC4)以及交换机130。交换机130为用于通过链接131连接所述LC 120和所述主机110的物理设备。所述链接131为物理链接,可以是光链接、电链接或其组合。交换机130可以使用各种交换机制接收、处理和/或转发LC120和主机硬件110之间的数据。交换机130可以进行流量控制以管理LC 120和主机硬件110之间的数据传送。例如,交换机130可以为以太网交换机,并且链接131可以为以太网电缆。LC 120为包括计算设备和/或存储设备的任何硬件单元。例如,LC 120可以作为网络设备并进一步包括通信耦合到其他网络设备的IO端口。在一个实施例中,所述系统100可以对应于DC中的机箱系统或服务器机架。例如,主机硬件110可以对应于位于服务器机架上服务器引擎或服务器主机,LC 120可以对应于安装在所述服务器机架上的LC,并且交换机130和链接131可以形成所述服务器机架的背板。LC 120可以提供IO资源161至系统100。所述IO资源161可包括内存、网络带宽、网络连接端口和/或其他计算资源。
主机硬件110可以是适合于处理数据的任何计算设备。例如,主机硬件110可包括一个或多个CPU、一个或多个内存设备、总线系统和/或其他接口端口。主机硬件110可以执行各种软件程序和/或组件。例如,主机硬件110可以用于执行多个LC设备驱动程序152(例如,LCD1和LCD2)、一个或多个应用153、LCM 154、多个vNIC 160和主机OS 140。
LC设备驱动程序152是用于向LC 120的物理硬件提供软件接口的软件程序。因此,所述LC设备驱动程序152是硬件专用的。例如,LC设备驱动程序152的实现取决于LC 120的物理硬件和连接LC 120与主机硬件110的互连。一些常见的设备驱动程序操作可包括设备初始化、设备配置、设备读和/或设备写。设备初始化是指初始配置LC 120从而使得其他软件组件可以与所述LC 120通信。设备配置是指设备特定参数(例如,带宽、速度和操作模式)的后续配置。设备读是指从LC 120接收或读取数据。设备写是指将数据传输至LC 120。LC设备驱动程序152将硬件特定的操作抽象化为可由其他软件组件调用以运行LC 120的软件接口,其可称为设备驱动程序接口。例如,数据写入接口的软件接口可以包括待发送至LC 120的数据块和数据长度。然而,为了完成数据写入,LC设备驱动程序152可以进行多个硬件读和/或写业务和/或其他时序及流量控制。在一个实施例中,当LC 120为在以太网结构中通过交换机130与主机硬件110连接的远程网络设备时,除了进行数据传输和/或接收,对应的LC设备驱动程序152还可以根据以太网协议进行以太网包封装和/或解封装。在一些实施例中,各个LC设备驱动程序152用于与特定LC 120(例如,LC1)连接。在一些其他实施例中,LC设备驱动程序152用于与多个LC 120(例如,LC2、LC3和LC4)连接。
主机OS 140可以是用于管理和控制硬件资源(例如,主机硬件110)并且向应用153提供服务的任何通用或常见的OS(例如,Windows、Linux、或Unix)。例如,软件程序如应用153或进程可能需要某些资源如CPU处理时间、内存、文件和/或IO设备来执行特定任务。主机OS 140可以通过包括各种组件,如进程管理组件、内存管理组件、文件管理组件、IO系统管理组件和/或保护系统组件等,来管理资源并且提供服务。进程管理组件可以执行进程(例如,线程或任务)创建、删除、暂停和/或恢复。进程管理组件还可以提供用于进程同步和/或通信的机制。内存管理组件可以执行内存分配和释放和/或追踪并维护内存状态。例如,内存管理组件可以为应用153分配内存空间、加载应用153、并且执行应用153所需的内存分配和释放。文件管理组件可以执行文件和/或目录创建和/或删除。文件管理组件可以提供文件和/或目录操控的附加原语。IO系统管理组件可以与设备驱动程序如LC设备驱动程序152连接,以从IO设备传输IO数据或将IO数据传输至IO设备,如LC 120。保护系统组件可以控制软件程序和/或进程的访问。例如,可使软件程序访问存储器或硬件的某一部分,但不访问存储器或硬件的其他部分。
主机OS 140还包括IOIC组件148。所述IOIC组件148为用于与LC设备驱动程序152和IO系统管理组件连接的软件组件。例如,LC设备驱动程序152可以提供一组用于操作特定LC 120的设备驱动程序调用或设备驱动程序接口。当LC 120为联网设备时,对应的LC设备驱动程序152可以提供该组设备驱动程序调用作为网络设备驱动程序调用。然而,主机OS140可以提供一组用于与通用IO设备(例如,PCI和/或PCIe设备)连接而不与联网设备连接的OS内核IO调用(例如,Linux ioctl调用)。因此,OS内核IO调用可能与网络设备驱动程序调用不兼容。IOIC组件148作为到IO系统管理组件的中介层进行网络设备驱动程序调用和OS内核IO调用之间的转换。因此,IOIC组件148使主机OS 140将LC 120作为通用IO设备呈现给应用153并通过该组OS内核IO调用向应用153提供IO服务。应注意,虽然IOIC组件148显示为主机OS 140内的组件,但是也可将所述IOIC组件148配置为主机OS 140的外部组件。
应用153为用于执行特定应用、活动和/或任务的软件程序。在DC的一个实施例中,应用153可以包括执行核心工作的操作和处理组织的操作数据的信息技术(informationtechnology,IT)系统应用。在一些实施例中,应用153可以是虚拟机(virtual machine,VM),这是特定计算机系统的仿真或软件实现方式。在此类实施例中,主机OS 140从主机硬件110分配硬件资源和/或为所述VM分配LC 120,并且控制所有硬件接口以及LC设备驱动程序152从而使得底层主机硬件110对于所述VM是透明的。
vNIC 160是用于作为虚拟IO设备的软件组件。vNIC 160逻辑连接至LC 120。vNIC160形成LC 120和主机OS 140之间的抽象层。例如,各个vNIC 160作为单独的IO设备,并且主机OS 140将vNIC 160作为本地IO设备呈现给应用153。同样地,如同vNIC 160是与主机硬件110本地连接的物理IO设备一样,应用153可以向vNIC 160发送和/或从vNIC 160接收包。因此,如同主机硬件110绑定到N个物理IO设备(例如,vNIC 1至vNIC n),当主机硬件110可操作地连接至4个LC 120(例如,LC1、LC2、LC3和LC4)时,如系统100中所示,应用153运行。在一个实施例中,主机OS 140从存储器设备将内存分配给vNICs 160。例如,各个vNIC 160可以与发送(transmit,Tx)队列和接收(receive,Rx)队列相关联,其中所述Tx队列可以对易于通过vNIC 160传输的输出包进行排队,以及所述Rx队列可以对通过vNIC 160接收的输入包进行排队。
LCM 154是用于管理LC 120和vNIC 160的软件程序。通过将IO资源161映射和/或分配至vNIC 160,LCM 154将LC 120提供的IO资源161从LC 120的物理硬件中分离。在一个实施例中,LCM 154将单个LC 120(例如,LC1)的资源逻辑分离为多个部分,并且将不同部分映射至不同的本地vNIC 160(例如,vNIC 1和vNIC 2)。在另一个实施例中,LCM 154逻辑合并多个LC 120的IO资源,并将合并后的资源映射至单个本地vNIC 160。同样地,LCM 154可以利用LC 120和/或LC 120提供的IO资源161作为弹性IO资源池。因此,LCM 154可以在运行时通过添加其它vNIC 160、删除未使用的vNIC 160以及变更分配给特定vNIC 160的IO资源的数量动态适应IO需求的变更。在运行时,由于各种因素,IO需求可能会变更。例如,在运行时,系统100可以提供其它VM(例如,其它应用153),其中所述VM可以要求一定数量的IO资源。在一个实施例中,在用户-空间中执行LCM 154(例如,以应用153形式)。在此实施例中,LCM 154可以与主机OS 140配合创建vNIC 160并将vNIC 160映射至LC 120。应注意,系统100可如图所示配置或如本领域的普通技术人员所确定地配置以实现相同的功能。
在一个实施例中,当系统100上电时,LCM 154可以查询附加LC 120的信息并加载对应的LC设备驱动程序152。LC设备驱动程序152可以进行设备初始化以初始化所述LC120。当成功加载并初始化设备时,LCM 154可以指示主机OS 140根据从LC 120检索的信息创建和/或初始化本地vNIC 160。例如,当主机OS 140为Linux内核时,可以通过Linux TAP机制创建本地vNIC 160。Linux TAP机制使包通过程序空间(例如,虚拟内核网络设备)而不是物理介质接收和传输。在创建和初始化本地vNIC 160之后,LCM 154将LC 120映射至本地vNIC 160。随后,应用153可以开始通过OS内核IO调用向vNIC发送和/或从vNIC接收数据。应注意,当系统100上电并安装其它LC 120时,LCM 154和主机OS 140可以采用类似机制来为所添加的LC 120初始化并创建本地vNIC 160。
当应用153请求主机OS 140对本地vNIC 160进行IO写操作时,例如,通过OS内核IO写调用(例如,写字节),主机OS 140将所述请求重定向至LCM 154。当接收到所述请求时,LCM 154进行解映射以确定与应用153请求的本地vNIC 160对应的LC 120。主机OS 140通过IOIC组件148和对应于所述LC 120的LC设备驱动程序152进行IO写操作。例如,IOIC组件148将OS内核IO写调用转换为由对应的LC设备驱动程序152提供的设备驱动程序写调用。随后,LC设备驱动程序152根据LC 120采用的协议和/或格式将数据写入对应的LC 120。应注意,应用153可以对数据进行排队以在本地vNIC 160上传输。
IO读操作可以使用与IO写操作中所描述的类似机制执行。例如,应用153可以请求主机OS 140通过OS内核IO读调用(例如,读字节)从本地vNIC 160读取数据。主机OS 140将所述请求重定向至LCM 154。LCM 154进行解映射以确定与应用153所请求的本地vNIC 160对应的LC 120。主机OS 140通过IOIC组件148和对应于所述LC 120的LC设备驱动程序152进行IO读操作。IOIC组件160将所述OS内核IO读调用转换为由LC设备驱动程序152提供的设备驱动程序读调用。LC设备驱动程序152根据LC 120采用的协议和/或格式从LC 120读取所述请求的数据。IOIC组件160通过LC设备驱动程序152提供的设备驱动程序回调或传回调用接收从LC 120读取的所述数据。IOIC组件160可以通过OS内核IO传回调用将所述数据提供给应用153。应注意,所述LC设备驱动程序152可以对从本地vNIC 160的LC 120接收的数据进行排队。
图2是在多主机环境下运行的计算机系统200的一个实施例的示意图。所述系统200与系统100类似,但可以包括多个主机。例如,系统200包括第一主机硬件211和第二主机硬件212,二者类似于主机110。第一主机硬件211由第一主机OS 241控制和管理。第二主机硬件212由第二主机OS 242控制和管理。第一主机OS 241和第二主机OS 242类似于主机OS140。第一主机OS 241和第二主机OS 242均包括类似于IOIC组件148的IOIC组件248。系统200还包括类似于交换机130的多个交换机230、类似于链接131的多个链接231和类似于LC120的多个LC 220。LC 220为系统200提供IO资源263。第一主机硬件211、第二主机硬件212和LC 220通过交换机230以及链接231相互连接。类似于系统100,可在第一主机硬件211和第二主机硬件212上执行各种软件程序和/或组件。例如,可在第一主机硬件211和第二主机硬件212上执行类似于LC设备驱动程序152的多个LC设备驱动程序252和类似于应用152的多个应用253。一些应用253可同时在第一主机硬件211和第二主机硬件212上执行。但是,LC设备驱动程序252专用于特定硬件。例如,一组LC设备驱动程序252可在第一主机硬件211以及第一主机OS 241与LC 220之间的接口上执行,并且另一组LC设备驱动程序252可在第二主机硬件212以及第二主机OS 242与LC 120之间的接口上执行。
类似于系统100,LC 220由类似于LCM 154的LCM 254管理和控制。然而,LCM 254可以将LC 120提供的IO资源263分发给第一主机OS 241和第二主机OS 242。例如,LCM将IO资源263的第一部分映射至第一批本地vNIC 261(例如,vNIC 1至vNIC M),并将所述第一批本地vNIC 261提供给第一主机OS 241。类似地,LCM 254将IO资源263的第二部分映射至第二批本地vNIC 262(例如,vNIC M+1至vNIC N),并将所述第二批本地vNIC 262提供给第二主机OS 242。LCM 254可以通过使用系统100中如上文所描述的大体上类似的机制与第一主机OS 241和/或第二主机OS互动。然而,如图所示,LCM 254在第二主机硬件212上执行。因此,LCM 254可以通过链接231和交换机230与第一主机OS 241进行通信。例如,所述LCM 254可以向第一主机OS 241发送IO配置消息以请求第一主机OS 241创建本地vNIC 261。第一主机OS 241可以向LCM 254发送IO访问请求。所述LCM 254可以确定针对所述IO访问请求的本地vNIC与远程LC之间的映射关系,并且将所述映射关系发送至第一主机OS 241。应注意,LCM254可以用于管理任何合适数目的主机。此外,系统200可如图所示配置或如本领域的普通技术人员所确定地配置以实现相同功能。
图3是可充当如系统100和200的计算机系统中主机的NE 300的一个示例性实施例的示意图。例如,NE 300可以为DC中的服务器主机或计算机网络中的网络节点。NE 300可以用于实现和/或支持本文所述的LC管理、映射和IO资源分配机制。NE 300可以在单个节点中实现或NE 300的功能可以在多个节点中实现。本领域技术人员将认识到,术语“NE”涵盖较宽范围的设备,其中NE 300仅是实例。出于清楚地论述的目的,包括NE 300,但绝非意图将本发明的应用限制于特定NE实施例或NE实施例的类别。至少一些本发明中描述的特性和/或方法可在网络装置或模块如NE 300中实现。例如,可使用硬件、固件和/或安装在硬件上运行的软件实现本发明中的特性和/或方法。如图3所示,NE 300可以包括收发器(transceiver,Tx/Rx)310,其可以是发射器、接收器或其组合。Tx/Rx 310可耦合到用于传输和/或接收来自其它节点如LC 120的帧的多个下行端口320(例如,IO端口),并且另一Tx/Rx 310可耦合到用于传输和/或接收来自其它节点的帧的多个上行端口350(例如,IO端口)。处理器330可耦合到Tx/Rx 310以处理帧和/或确定将帧发送到哪些节点。处理器330可包括一个或多个多核处理器和/或存储器设备332,其可以作为数据存储器、缓冲器等。处理器330可实现为通用处理器或可以为一个或多个ASIC和/或数字信号处理器(digitalsignal processor,DSP)的一部分。处理器330可包括主机OS模块333和LCM模块334。所述两个模块可以分别执行OS操作和LC管理操作,并实现下文中更充分论述的方法400、500、600、700、800和800。同样地,通过包括主机OS模块333和LCM模块334,以及相关联的方法和系统,提高了NE 300的功能。在替代实施例中,主机OS模块333和LCM模块334可实现为存储在存储器设备332中的指令,所述指令可由处理器330执行。存储器设备332可包括用于临时存储内容的高速缓冲存储器,例如,随机存取存储器(random-access memory,RAM)。例如,存储器设备332可用于存储一个或多个包队列335。此外,存储器设备332可包括用于较长时间存储内容的长期存储器,例如,只读存储器(read-only memory,ROM)。例如,高速缓冲存储器以及长期存储器可包括动态RAM(dynamic RAM,DRAM)、固态驱动器(solid-state drive,SSD)、硬盘或其组合。
应理解,通过将可执行指令编程和/或加载到NE 300上,处理器330和/或存储器设备332中的至少一者会发生改变,从而将NE 300部分地变换为特定机器或装置,例如,具有本发明所教示的新颖功能的多核心转发架构。对于电力工程和软件工程领域来说重要的是,可以通过将可执行软件加载到计算机中而实施的功能可以通过众所周知的设计规则转换为硬件实施方案。决定在软件还是硬件中实施概念通常取决于设计的稳定性及待产生的单元的数目,而与任何从软件域转译到硬件域所涉及的问题无关。通常,仍在频繁改变的设计可以优选在软件中实施,因为重改硬件实施方案比重改软件设计更为昂贵。通常,将以较大量产生的稳定的设计可以优选在硬件中实施,例如在ASIC中实施,因为运行硬件实施方案的大型生产可能比软件实施方案便宜。通常,设计可以软件形式开发和测试,并且随后通过熟知设计规则转换为用硬线连接软件的指令的ASIC中的等效硬件实施方案。在以与由新ASIC控制的机器为特定机器或装置相同的方式中,同样地,已经编程和/或加载有可执行指令的计算机可以被看作特定机器或装置。
图4是检测和初始化网络LC如LC 120和220的方法400的一个实施例的协议图。方法400由主机如系统100和200以及NE 300执行。方法400在LCM如LCM 154和254、主机OS如主机OS 140、241和242、LC设备驱动程序如LC设备驱动程序152和252以及网络LC之间执行。当主机上电时,开始执行方法400。在步骤410,LCM在主机OS上注册以监听系统中所有网络LC的事件。在步骤420,用户将网络LC插入至,例如,主机的槽中。在步骤431,网络LC的插入触发主机OS先接收到的物理事件(例如,指示信号或中断信号)。在步骤432,主机OS将所述物理事件发出至LCM,因为在步骤410中LCM已经在主机OS上进行注册以监听LC的物理事件。在步骤440,当接收到所述物理事件时,LCM检索网络LC的信息并且选择对应的LC设备驱动程序。某些网络LC信息可以包括网络LC所支持的IO类型、带宽和/或吞吐量。在步骤450,LCM加载所述对应的LC设备驱动程序。在步骤460,当加载LC设备驱动程序时,LC设备驱动程序,例如通过发送一个或多个写命令至LC,配置和/或初始化网络LC。
图5是将网络LC映射至本地vNIC的方法500的一个实施例的协议图。方法500由主机如系统100和200以及NE 300执行。方法500在LCM如LCM 154和254以及主机OS如主机OS140、241和242之间执行。在主机,例如通过使用方法400,成功地检测和初始化已连接的网络LC之后开始执行方法500。在步骤510,LCM确定本地vNIC,如本地vNIC 160、261和262,并且根据之前在LC检测和初始化过程(例如,方法400中的步骤440)中检索到的LC信息进行本地vNIC和网络LC之间的映射。例如,LCM可以存储将网络LC映射至本地vNIC的映射关系。在一个实施例中,LCM可以将单个网络LC的IO资源逻辑分离为多个部分并将不同部分映射至不同的本地vNIC。在另一个实施例中,LCM可以逻辑合并多个网络LC的IO资源并将合并后的IO资源映射至单个本地vNIC。在又一实施例中,LCM可以将单个网络LC的所有IO资源映射至单个本地vNIC。在步骤520,LCM通过提供网络LC的信息和所分配资源指示主机OS创建和/或初始化本地vNIC。在步骤530,主机OS根据从LCM接收的指令创建和初始化所述本地vNIC。例如,当主机OS为Linux内核时,主机OS可以通过使用Linux TAP机制创建本地vNIC。
图6是为应用提供本地IO服务的方法600的一个实施例的协议图。方法600由主机如系统100和200以及NE 300执行。方法600在应用如应用153和253、LCM如LCM 154和254、主机OS如主机OS 140、241和242、LC设备驱动程序如LC设备驱动程序152和252,以及网络LC如LC 120和220之间执行。在主机,例如通过使用方法500,基于与主机连接的网络LC创建和初始化本地vNIC之后开始执行方法600。例如,主机OS已为某个应用分配本地vNIC。在步骤610,例如通过OS内核IO调用,应用发送请求至主机OS以访问本地vNIC。在步骤620,当接收到所述请求时,主机OS将所述请求或至少与所请求的本地vNIC相关联的信息转发给LCM。在步骤630,当接收到所述信息时,LCM执行解映射功能以确定与所请求的本地vNIC对应的LC设备驱动程序。例如,LCM可以在之前存储将网络LC映射至本地vNIC的映射关系。在步骤640,在确定对应的LC设备驱动程序之后,LCM指示主机OS采用所述对应的LC设备驱动程序完成IO访问。在步骤650,主机OS继续通过发送请求至LCM提供的LC设备驱动程序处理IO访问。如上文所描述,主机OS可以采用IOIC组件,如IOIC组件148和248,将OS内核IO调用转换为设备驱动程序调用。在步骤660,当接收到所述请求时,LC设备驱动程序与对应的LC连接以根据所述请求执行IO操作。应注意,在LC和LC设备驱动程序之间可能存在多个IO业务。此外,当IO请求结束时,LC设备驱动程序可以将信号发送回主机OS,以指示IO请求结束并且主机OS可以进一步通知应用。
在DC的一个实施例中,当所述IO请求是IO读请求时,从物理LC读取的数据可以从背板交换机如交换机130和230路由。交换机可以通过进行封装和/或解复用处理数据。当LC设备驱动程序接收所述数据时,LC设备驱动程序可以将所述数据排入对应的本地vNIC的包队列或Rx队列,如包队列335。可对数据执行类似操作以实现IO写,但所述操作可以相反顺序执行。例如,可将数据排入本地vNIC的包队列或Tx队列,在将数据发送至对应的网络LC之前,交换机可以对数据进行封装和解复用。
图7是定义本地IO资源池的方法700的一个实施例的流程图。方法700由LCM如LCM154和254执行。当主机系统如主机系统100和200上电时执行方法700。方法700类似于方法400和500。例如,主机系统受OS如主机OS 140、241和242控制。在步骤710,在OS上注册对监听远程LC物理事件的需求。例如,远程LC物理事件可以包括插入远程LC,如LC 120和220。在步骤720,接收指示远程LC的插入的物理事件。例如,当远程LC插入或安装时,可将中断信号发送到所述OS。OS可以将中断信号映射至物理事件并将所述物理事件发送至进行注册以监听物理事件的软件组件。在步骤730,当接收到所述物理事件时,获取远程LC的IO资源信息(例如,IO类型和资源容量)。此外,也可以获取与LC单板属性相关联的其他信息。在步骤740,加载与远程LC对应的设备驱动程序。例如,当加载设备驱动程序时,设备驱动程序可以初始化和/或配置对应的远程LC从而使得所述远程LC易于操作。在步骤750,根据IO资源信息定义IO资源池。在步骤760,通过将IO资源池的IO资源分配至本地vNIC来确定远程LC和多个本地vNIC,如本地vNIC 160、261和262,之间的映射关系。例如,LC可以将所述映射关系存储在存储器设备中,如存储器设备332。在一个实施例中,LCM可以将单个远程LC的所有IO资源分配给单个本地vNIC。在另一个实施例中,LCM可以将单个远程LC的IO资源逻辑分离给多个本地vNIC。在又一实施例中,LCM可以将不同远程LC的IO资源分配至单个本地vNIC。在步骤770,向所述OS发送创建和初始化本地vNIC的指令。例如,OS可以通过呈现作为本地IO设备的本地vNIC将IO服务提供给应用,并且可以使应用通过OS内核IO调用和/或接口访问本地vNIC。
图8是向应用提供本地IO服务的方法800的一个实施例的流程图。方法800由LCM如LCM 154和254执行。在主机系统如系统100和200将远程LC如LC 120和220映射,例如,通过使用方法700,至本地vNIC如本地vNIC 160、261和262之后,执行方法800。例如,主机系统可在主机OS如主机OS 140、241和242下运行,且主机OS可将本地vNIC分配给应用。在步骤810,例如,从所述OS,接收应用请求对本地vNIC进行IO操作的指示。在步骤820,当接收到该指示时,例如,根据之前存储(例如,在步骤760)的远程LC和本地vNIC之间的映射关系,确定与本地vNIC对应的远程LC。在步骤830,将IO操作定向至远程LC。例如,LCM可以通过与远程LC对应的LC设备驱动程序如LC设备驱动程序152和252,指示所述OS继续进行指向远程LC的IO操作。或者,LCM可以直接请求与远程LC对应的LC设备驱动程序进行所述IO操作。
图9是提供弹性本地IO资源池的方法900的一个实施例的流程图。方法900由LCM如LCM 154和254执行。当主机系统如主机系统100和200运行时(例如,在使用方法400、500、600、700和/或800之后),执行方法900。例如,根据与主机系统连接的远程LC如远程LC 120和220创建IO资源池,并且将远程LC提供的IO资源分配给本地vNIC,如本地vNIC 160、261和262。在步骤910,例如,从OS如主机OS 140、241和242,接收IO资源需求变更。例如,采用本地vNIC的应用可能需要增加或减少IO资源的数量,并且可以请求OS增加或减少IO资源的数量。或者,应用可以终止本地vNIC上的IO操作,并且因此主机OS可以请求移除本地vNIC。在步骤920,当接收到所述IO资源需求变更时,根据所述IO资源需求变更重分配IO资源。例如,当所述变更针对特定本地vNIC需要较大数量的IO资源时,LCM可以将IO资源池中更大数量的IO资源分配至本地vNIC。或者,当所述变更针对特定本地vNIC需要更少的IO资源或需要终止特定本地vNIC时,LCM可以将分配给所述特定本地vNIC的IO资源返回给IO资源池。同样地,可根据IO需求动态重分配IO资源。
虽然本发明中已提供若干实施例,但应理解,在不脱离本发明的精神或范围的情况下,本发明所公开的系统和方法可以以许多其它特定形式来体现。本发明的实例应被视为说明性而非限制性的,且本发明并不限于本文中所给出的细节。例如,各种元件或组件可以在另一系统中组合或整合,或者某些特征可以省略或不实施。
此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法进行组合或合并。展示或论述为彼此耦合或直接耦合或通信的其它项也可以采用电方式、机械方式或其它方式经由某一接口、设备或中间组件间接地耦合或通信。其他变化、替代和改变的示例可以由本领域的技术人员在不脱离本文精神和所公开的范围的情况下确定。
Claims (20)
1.一种通信装置,其特征在于,包括:
多个物理输入/输出IO端口,用于耦合到提供IO资源的多个远程线卡LC;以及
处理器,耦合到所述多个物理IO端口,并且用于:
通过向多个虚拟网卡vNIC分配至少一些所述IO资源将所述远程LC映射到本地vNIC;
接收包括访问所述vNIC中第一vNIC的请求的操作系统OS内核IO调用;
确定与所述第一vNIC对应的所述远程LC中的第一远程LC;以及
定向所述请求以访问所述第一远程LC。
2.根据权利要求1所述的通信装置,其特征在于,所述处理器还用于通过以下步骤向所述vNIC分配所述IO资源:
将所述LC中的一个的IO资源逻辑划分为至少第一部分和第二部分;
将所述第一部分分配给一个vNIC;以及
将所述第二部分分配给另一个vNIC。
3.根据权利要求1所述的通信装置,其特征在于,所述处理器还用于通过以下步骤向所述vNIC分配所述IO资源:
将与一个远程LC相关联的所述IO资源的至少第一部分分配给所述第一vNIC;以及
将与另一个远程LC相关联的所述IO资源的至少第二部分分配给所述第一vNIC。
4.根据权利要求1所述的通信装置,其特征在于,为所述第一vNIC分配第一数量的所述IO资源,其中所述处理器还用于:
接收改变所述第一数量的IO资源的请求;以及
根据所述请求为所述第一vNIC重分配第二数量的所述IO资源。
5.根据权利要求4所述的通信装置,其特征在于,所述IO资源包括内存、带宽、网络端口、计算资源或其组合,以及所述第一数量的IO资源包括所述内存的大小、所述带宽的数量、所述网络端口的数量、所述计算资源的一部分或其组合。
6.根据权利要求1所述的通信装置,其特征在于,所述物理IO端口通过互连耦合到所述远程LC,以及所述处理器还用于将所述OS内核IO调用转换为与所述第一远程LC和所述互连相关联的设备驱动程序调用。
7.根据权利要求6所述的通信装置,其特征在于,所述互连包括开放式系统互连OSI层2网络连接,OSI层3网络连接,交换结构或其组合。
8.根据权利要求1所述的通信装置,其特征在于,所述处理器还用于:
提供虚拟机VM;以及
将所述第一vNIC分配给所述VM,其中从所述VM接收所述OS内核IO调用。
9.根据权利要求1所述的通信装置,其特征在于,所述物理IO端口还用于耦合到远程主机,以及所述vNIC中的至少一个与所述远程主机相关联。
10.一种由操作系统OS下运行的本地服务器主机执行的方法,其特征在于,包括:
获取耦合到所述本地服务器主机的多个远程线卡LC的输入/输出IO资源信息;
根据所述远程LC的IO资源信息定义IO资源池;
通过根据所述远程LC的IO资源信息分配所述资源池中的IO资源确定所述远程LC和多个虚拟网卡vNIC之间的映射关系;
接收包括访问所述vNIC中第一vNIC的请求的操作系统OS内核IO调用;
确定与所述第一vNIC对应的所述远程LC中的第一远程LC;以及
定向所述请求以访问所述第一远程LC。
11.根据权利要求10所述的由操作系统OS下运行的本地服务器主机执行的方法,其特征在于,所述远程LC通过与网络协议相关联的互连与所述本地服务器主机连接,其中所述网络协议包括开放式系统互连OSI层2协议、OSI层3协议或其组合,以及所述方法还包括:在所述OS内核IO调用和与所述第一远程LC及所述互连相关联的设备驱动程序调用之间进行IO接口转换。
12.根据权利要求11所述的由操作系统OS下运行的本地服务器主机执行的方法,其特征在于,所述OS内核IO调用与外围部件互连标准PCI设备或快捷PCI设备相关联。
13.根据权利要求10所述的由操作系统OS下运行的本地服务器主机执行的方法,其特征在于,还包括:
接收IO资源需求变更;以及
动态重分配所述IO资源池中的IO资源,以响应所述IO资源需求变更;
其中,所述IO资源需求变更包括增加所述vNIC中第一vNIC的IO资源的数量、减少所述vNIC中第二vNIC的IO资源的数量、添加其他vNIC、删除现有vNIC或其组合。
14.根据权利要求13所述的由操作系统OS下运行的本地服务器主机执行的方法,其特征在于,所述IO资源池包括内存、带宽、网络端口、计算资源或其组合,以及一定数量的IO资源包括所述内存的大小、所述带宽的数量、所述网络端口的数量、所述计算资源的一部分或其组合。
15.根据权利要求11所述的由操作系统OS下运行的本地服务器主机执行的方法,其特征在于,还包括:
将IO配置发送至耦合到所述本地服务器主机的远程服务器主机,其中所述IO配置包括与所述vNIC中至少第二vNIC相关联的配置信息;
从所述远程服务器主机接收访问所述第二vNIC的IO请求;
确定与所述第二vNIC对应的所述远程LC中的第二远程LC;以及
将IO映射发送至所述远程服务器主机,以指示所述远程服务器主机访问所述第二远程LC。
16.一种通信装置,其特征在于,包括:
多个物理输入/输出IO端口,用于耦合到:
提供IO资源的多个远程线卡LC;以及
远程主机;以及
处理器,耦合到所述多个物理IO端口,并且用于:
获取所述多个远程LC的资源信息;
根据所述远程LC的资源信息定义IO资源池;
通过向vNIC分配所述IO资源池中的IO资源确定所述远程LC和多个虚拟网卡vNIC之间的映射关系,其中所述vNIC中的至少第一vNIC与所述远程主机相关联;以及
通过所述IO端口将配置消息发送至所述远程主机,其中所述配置消息包括与所述第一vNIC相关联的配置信息。
17.根据权利要求16所述的通信装置,其特征在于,所述处理器还用于:
通过所述IO端口从所述远程主机接收指示与所述第一vNIC相关联的IO访问的IO访问消息;
根据所述映射关系确定与所述第一vNIC对应的远程LC;以及
通过所述IO端口将映射关系消息发送至所述远程主机,以指示所述远程主机将所述IO访问定向至与所述第一vNIC对应的所述远程LC。
18.根据权利要求17所述的通信装置,其特征在于,所述处理器还用于:
接收添加其它vNIC的请求;
创建所述其它vNIC;以及
向所述其它vNIC分配至少一些所述IO资源。
19.根据权利要求17所述的通信装置,其特征在于,所述处理器还用于:
接收终止针对所述第一vNIC的IO操作的请求;
根据所述远程LC和所述vNIC之间的映射关系确定与所述第一vNIC对应的远程LC以及分配给所述第一vNIC的所述远程LC的部分IO资源;以及
向所述IO资源池返回所述第一vNIC采用的所述远程LC的所述部分IO资源。
20.根据权利要求16所述的通信装置,其特征在于,所述物理IO端口通过互连耦合到所述远程LCs,其中所述处理器还用于:
接收包括访问与所述通信装置相关联的所述vNIC中第二vNIC的请求的操作系统OS内核IO调用;
确定与所述第二vNIC对应的所述远程LC中的第二远程LC;以及
定向所述请求以访问所述第二远程LC。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/818,931 | 2015-08-05 | ||
US14/818,931 US10331616B2 (en) | 2015-08-05 | 2015-08-05 | Integration of network linecard (LC) to host operating system (OS) |
PCT/CN2016/092484 WO2017020799A1 (en) | 2015-08-05 | 2016-07-30 | Integration of network linecard (lc) to host operating system (os) |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107683593A CN107683593A (zh) | 2018-02-09 |
CN107683593B true CN107683593B (zh) | 2020-05-08 |
Family
ID=57942474
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680037075.4A Active CN107683593B (zh) | 2015-08-05 | 2016-07-30 | 通信装置和相关方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10331616B2 (zh) |
EP (1) | EP3295617B1 (zh) |
JP (1) | JP6760579B2 (zh) |
CN (1) | CN107683593B (zh) |
WO (1) | WO2017020799A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542581B (zh) * | 2017-09-22 | 2020-10-13 | 深圳市中兴微电子技术有限公司 | 一种设备共享方法、装置及存储介质 |
CN109992420B (zh) * | 2019-04-08 | 2021-10-22 | 苏州浪潮智能科技有限公司 | 一种并行pcie-ssd性能优化方法及系统 |
US11537548B2 (en) | 2019-04-24 | 2022-12-27 | Google Llc | Bandwidth allocation in asymmetrical switch topologies |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103309720A (zh) * | 2012-03-07 | 2013-09-18 | 上海聚耘信息科技有限公司 | 一种维护虚拟数据中心的虚拟机管理系统 |
CN103534998A (zh) * | 2011-05-14 | 2014-01-22 | 国际商业机器公司 | 分布式结构协议(dfp)交换网络架构 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7801155B2 (en) * | 2002-03-01 | 2010-09-21 | Verizon Business Global Llc | Resource allocation in virtual routers |
WO2004001615A1 (en) * | 2002-06-19 | 2003-12-31 | Telefonaktiebolaget Lm Ericsson | A network device driver architecture |
GB0420057D0 (en) * | 2004-09-09 | 2004-10-13 | Level 5 Networks Ltd | Dynamic resource allocation |
JP4671041B2 (ja) | 2006-03-27 | 2011-04-13 | 日本電気株式会社 | モジュール化物理リソース群特定方法、その装置及びプログラム |
US7788411B2 (en) | 2006-07-20 | 2010-08-31 | Oracle America, Inc. | Method and system for automatically reflecting hardware resource allocation modifications |
US9973446B2 (en) | 2009-08-20 | 2018-05-15 | Oracle International Corporation | Remote shared server peripherals over an Ethernet network for resource virtualization |
US9160668B2 (en) | 2010-05-03 | 2015-10-13 | Pluribus Networks Inc. | Servers, switches, and systems with switching module implementing a distributed network operating system |
JP5893628B2 (ja) | 2010-09-17 | 2016-03-23 | オラクル・インターナショナル・コーポレイション | ミドルウェアマシン環境における部分的なサブネット初期化の実行 |
US9331963B2 (en) | 2010-09-24 | 2016-05-03 | Oracle International Corporation | Wireless host I/O using virtualized I/O controllers |
US8874786B2 (en) | 2011-10-25 | 2014-10-28 | Dell Products L.P. | Network traffic control by association of network packets and processes |
US8806025B2 (en) | 2012-06-25 | 2014-08-12 | Advanced Micro Devices, Inc. | Systems and methods for input/output virtualization |
JP2014096675A (ja) | 2012-11-08 | 2014-05-22 | Hitachi Ltd | 通信装置、及び、設定方法 |
US20150012606A1 (en) | 2013-07-02 | 2015-01-08 | Dell Products, Lp | System and Method to Trap Virtual Functions of a Network Interface Device for Remote Direct Memory Access |
US9647894B2 (en) * | 2014-07-30 | 2017-05-09 | International Business Machines Corporation | Mapping relationships among virtual elements across a system |
-
2015
- 2015-08-05 US US14/818,931 patent/US10331616B2/en not_active Expired - Fee Related
-
2016
- 2016-07-30 CN CN201680037075.4A patent/CN107683593B/zh active Active
- 2016-07-30 EP EP16832287.3A patent/EP3295617B1/en active Active
- 2016-07-30 JP JP2017564495A patent/JP6760579B2/ja active Active
- 2016-07-30 WO PCT/CN2016/092484 patent/WO2017020799A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103534998A (zh) * | 2011-05-14 | 2014-01-22 | 国际商业机器公司 | 分布式结构协议(dfp)交换网络架构 |
CN103309720A (zh) * | 2012-03-07 | 2013-09-18 | 上海聚耘信息科技有限公司 | 一种维护虚拟数据中心的虚拟机管理系统 |
Also Published As
Publication number | Publication date |
---|---|
US20170039166A1 (en) | 2017-02-09 |
CN107683593A (zh) | 2018-02-09 |
JP2018524697A (ja) | 2018-08-30 |
WO2017020799A1 (en) | 2017-02-09 |
EP3295617A4 (en) | 2018-06-27 |
JP6760579B2 (ja) | 2020-09-23 |
US10331616B2 (en) | 2019-06-25 |
EP3295617B1 (en) | 2020-07-01 |
EP3295617A1 (en) | 2018-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10095645B2 (en) | Presenting multiple endpoints from an enhanced PCI express endpoint device | |
CN107995129B (zh) | 一种nfv报文转发方法和装置 | |
US8725926B2 (en) | Computer system and method for sharing PCI devices thereof | |
US7813366B2 (en) | Migration of a virtual endpoint from one virtual plane to another | |
US7657663B2 (en) | Migrating stateless virtual functions from one virtual plane to another | |
JP5362980B2 (ja) | データ処理システム内で第1のホスト・システムと第2のホスト・システムとの間で通信するための方法、プログラム、およびシステム(ソケット接続および共用メモリを使用するホスト・システム間の通信のためのシステムおよび方法) | |
US7860930B2 (en) | Communication between host systems using a transaction protocol and shared memories | |
US8103810B2 (en) | Native and non-native I/O virtualization in a single adapter | |
US8271604B2 (en) | Initializing shared memories for sharing endpoints across a plurality of root complexes | |
US7836129B2 (en) | Communication between host systems using a queuing system and shared memories | |
US8176204B2 (en) | System and method for multi-host sharing of a single-host device | |
US9996484B1 (en) | Hardware acceleration for software emulation of PCI express compliant devices | |
US20140195634A1 (en) | System and Method for Multiservice Input/Output | |
US20110060859A1 (en) | Host-to-host software-based virtual system | |
CN110941576B (zh) | 具有多模pcie功能的存储控制器的系统、方法和设备 | |
US10684880B2 (en) | Allocating and initializing I/O devices at virtual | |
US20080147937A1 (en) | System and method for hot-plug/remove of a new component in a running pcie fabric | |
CN108139982B (zh) | 多信道输入/输出虚拟化 | |
US8065454B1 (en) | System and method for mapping functions to and from network devices using configuration compatible with an adapter by remapping plurality of logical ports of adapter | |
US9483290B1 (en) | Method and system for virtual machine communication | |
US10452570B1 (en) | Presenting physical devices to virtual computers through bus controllers emulated on PCI express endpoints | |
CN107683593B (zh) | 通信装置和相关方法 | |
US10599600B2 (en) | Peripheral Component Interconnect Express (PCIe) switching for multi-host computing system deployments | |
CN115934624A (zh) | 多主机远程直接内存访问网络管理的方法、设备及介质 | |
EP3910471A1 (en) | Computing device with safe and secure coupling between virtual machines and peripheral component interconnect express device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |