CN110945843B - 虚拟交换设备和方法 - Google Patents

虚拟交换设备和方法 Download PDF

Info

Publication number
CN110945843B
CN110945843B CN201880047815.1A CN201880047815A CN110945843B CN 110945843 B CN110945843 B CN 110945843B CN 201880047815 A CN201880047815 A CN 201880047815A CN 110945843 B CN110945843 B CN 110945843B
Authority
CN
China
Prior art keywords
packet
packets
flow table
processor unit
flow entry
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
Application number
CN201880047815.1A
Other languages
English (en)
Other versions
CN110945843A (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of CN110945843A publication Critical patent/CN110945843A/zh
Application granted granted Critical
Publication of CN110945843B publication Critical patent/CN110945843B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/38Flow based routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/354Switches specially adapted for specific applications for supporting virtual local area networks [VLAN]

Abstract

本公开的实施例提供了一种用于分发分组的虚拟交换设备和方法。扩展卡可以包括扩展接口,被配置为与具有控制器的主机系统进行通信,以从主机系统接收一个或多个分组;处理器单元,被配置为根据控制器提供的配置信息处理分组;分组处理引擎,被配置为根据通过处理器单元建立的流表来路由分组;以及网络接口,被配置为分发路由分组。

Description

虚拟交换设备和方法
技术领域
本公开涉及计算机体系结构领域,尤其涉及一种用于分发分组的虚拟交换设备和方法。
背景技术
在云计算服务中,虚拟交换机(Vswitch)是一个软件层,可模拟在节点之间路由分组的物理网络交换机。按照惯例,V交换机部署在运行云计算服务的主机系统中。
在主机系统的中央处理单元(CPU)上为Vswitch运行软件代码本质上效率低下。此外,Vswitch通常需要专用于它的CPU才能实现其最佳性能。但是,在基础设施即服务(IaaS)云(例如,阿里巴巴提供的阿里云)中,CPU是宝贵的资源,它们作为商品出售给云客户。因此,应将专用于Vswitch的CPU从可出售给云客户的资源池中排除。因此,在为交换提供最佳性能的同时最小化主机系统的CPU上的负载是优选的。
发明内容
本公开的实施例提供了一种用于分发分组的扩展卡,该扩展卡包括:扩展接口,其被配置为与具有控制器的主机系统通信,从主机系统接收一个或多个分组;处理器单元,其被配置为根据控制器提供的配置信息处理分组;分组处理引擎,其被配置为根据经由处理器单元建立的流表来路由分组;以及网络接口,其被配置为分发路由分组。
本公开的实施例还提供了一种用于分发分组的方法,该方法包括:通过虚拟交换机从具有控制器的主机系统接收一个或多个分组;通过虚拟交换机根据控制器提供的配置信息处理分组;通过虚拟交换机根据流表路由分组;并且通过虚拟交换机分配路由分组。
本发明实施例还提供了一种通信系统,包括主机系统和扩展卡,其中,主机系统包括控制器;扩展卡包括:扩展接口,其被配置为与具有控制器的主机系统通信,以从主机系统接收一个或多个分组;处理器单元,其被配置为根据控制器提供的配置信息处理分组;分组处理引擎,其被配置为根据通过处理器单元建立的流表来路由分组;以及网络接口,其被配置为分发路由分组。
本公开的实施例还提供一种非暂时性计算机可读介质,该非暂时性计算机可读介质存储可由设备的至少一个处理器执行以使该设备执行用于分配分组的方法的一组指令,该方法包括:接收一个或多个来自具有控制器的主机系统的分组;根据控制器提供的配置信息处理分组;根据流表对分组进行路由;并且分发路由分组。
所公开的实施例的其他目的和优点将在下面的描述中部分地进行阐述,并且部分地将从描述中显而易见,或者可以通过实施例的实施而获知。所公开的实施例的目的和优点可以通过权利要求中阐述的要素和组合来实现和获得。
应当理解,如权利要求所述,前面的一般描述和下面的详细描述都只是示例性和说明性的,并不限制本发明。
附图说明
图1示出了用于路由分组的虚拟交换机的结构图。
图2示出了与本公开的实施例一致的示例性扩展卡的结构图。
图3示出了与本公开的实施例一致的示例性主机系统的框图。
图4示出了与本公开的实施例一致的示例性的处理器单元与控制器之间的通信的初始化过程。
图5示出了与本公开的实施例一致的用于扩展卡处理分组的示例性数据流。
图6是与本公开的实施例一致的用于分发分组的示例性方法的流程图。
具体实施方式
现在将详细参考示例性实施例,其示例在附图中示出。以下描述参考附图,其中除非另外表示,否则不同附图中的相同数字表示相同或相似的元件。在以下对示例性实施例的描述中阐述的实施方式并不代表与本发明一致的所有实施方式。相反,它们仅是与如所附权利要求中所述的与本发明有关的方面一致的装置和方法的示例。
图1示出了用于路由分组的虚拟交换机100的结构图。
虚拟交换机100可以包括控制平面102和数据平面104。控制平面102可以确定应当将分组发送到哪里,以便生成和更新流表。流表包括用于分组的路由信息,并且可以向下传递到数据平面104。因此,数据平面104可以将分组转发到沿着根据流表确定的路径的下一跳。
例如,当将入口分组发送到虚拟交换机100时,可以首先由数据平面处理该入口分组。如果流表中有入口分组的匹配路由,可以根据匹配路由将入口分组直接转发到下一跳。可以在非常短的时间内执行上述过程,因此,数据平面104也可以称为快速路径。如果在流表中找不到匹配的路由,则可以将入口分组视为新路由的第一分组,并将其发送到控制平面102进行进一步处理。也就是说,仅当入口分组在数据平面104中未命中时,才可以调用控制平面102。如上所述,控制平面102然后可以确定应该将第一分组发送到何处,并相应地更新流表。因此,该流路径中的后续分组可以由数据平面104直接处理。控制平面102的上述过程比数据平面104花费更长的时间,因此控制平面102也可以被称为慢速路径。
常规地,虚拟交换机100的控制平面102和数据平面104都被部署在主机系统中。主机系统可以进一步包括用户空间和内核空间。用户空间运行对主机系统提供的资源具有有限访问权限的进程。例如,可以在用户空间中建立进程(例如,虚拟机),从而向云服务的客户提供计算。用户空间可以进一步包括控制器110,其起到控制平面102的管理的作用。在常规系统的一个实施例中,控制平面102也可以被部署在主机系统的用户空间中,而数据平面104可以被部署在内核空间中。在常规系统的另一实施例中,控制平面102可以与数据平面104一起被部署在主机系统的内核空间中。内核空间可以以“内核模式”运行代码。这些代码也可以称为“内核”。内核是主机系统操作系统的核心,基本上可以控制主机系统中的所有内容。无论将控制平面102部署在用户空间还是内核空间中,运行包括控制平面102和数据平面104的虚拟交换机100都是主机系统的负担。
本公开的实施例提供了一种虚拟交换设备和方法,用于分配分组以减轻从主机系统进行交换的功能。虚拟交换机设备可以与主机系统通信地耦合,该主机系统能够运行发送和接收要分发的分组的多个虚拟机。虚拟交换设备可以包括分组处理引擎和处理器单元,用于分别执行常规虚拟交换机的快速路径和慢速路径的功能。因此,主机系统仅负责初始化虚拟交换设备,从而使主机系统的CPU上的负载最小化,并提供最佳的交换性能。
图2示出了与本公开的实施例一致的示例性扩展卡200的结构图。
扩展卡200可以包括扩展接口202,处理器单元204,分组处理引擎206和网络接口208。上述组件可以是独立的硬件设备或集成到芯片中。在一些实施例中,扩展接口202,处理器单元204,分组处理引擎206和网络接口208被集成为片上系统,其可以被进一步部署到扩展卡200。
扩展接口202可以被配置为与具有控制器和内核(未示出)的主机系统通信,从主机系统或外部源接收一个或多个分组。即,本公开的扩展卡200不仅可以处理来自/去往主机系统的分组,而且可以处理来自/去往外部源的分组。在一些实施例中,扩展接口202可以基于并行接口(例如,扩展组件互连(PCI)),串行接口(例如,扩展组件互连高速(PCIE))等。作为说明性示例,扩展接口202可以是扩展组件互连高速(PCIE)内核,根据PCIE规范提供与主机系统的连接。PCIE规范可以进一步为“单根I/O虚拟化”(SR-IOV)提供支持。SR-IOV允许设备(例如,扩展卡200)在各种功能之间分离对其资源的访问。功能可以包括物理功能(PF)和虚拟功能(VF)。每个VF与PF关联。VF与扩展卡200上的PF和其他VF共享扩展卡200的一个或多个物理资源,例如内存和网络端口。虚拟机可以通过VF直接访问扩展卡200的虚拟交换功能。因此,在一些实施例中,扩展卡200是插入主机系统中的PCIE卡。
处理器单元204可以被配置为根据由主机系统的控制器提供的配置信息来处理分组。配置信息可以包括用于初始化处理器单元204的配置。配置可以包括例如转发信息数据库(FIB),地址解析协议(ARP)表,访问控制列表(ACL)规则。在一些实施例中,处理器单元204可以包括多个处理器内核。例如,处理器内核可以基于ARMTM CortexTM-A72内核来实现。利用由多个处理器内核提供的计算,处理器单元204可以运行包括控制平面的功能(慢速路径)的成熟操作系统。慢速路径功能可以通过运行操作系统上部署的慢速路径代码来执行。当通过配置信息初始化处理器单元204时,可以由处理器单元204建立包括流条目的流表以用于路由分组。并且处理器单元204还可以被配置为:如果第一分组未能在数据平面中找到匹配的流条目,则用与新路由的第一分组相对应的新的流条目来更新流表。
分组处理引擎206是数据平面(或快速路径)的硬件实现,并且可以被配置为根据经由处理器单元204建立的流表来路由分组。在处理器单元204建立流表之后,流表可以被相应地写入或更新到分组处理引擎206中。
当接收到入口分组时,分组处理引擎206可以确定入口分组在流表中是否具有匹配的流条目。在分组处理引擎206确定入口分组具有匹配的流条目之后,分组处理引擎206根据匹配的流条目为入口分组生成路由。在分组处理引擎206确定该分组没有匹配的流条目之后,分组处理引擎206向处理器单元204生成中断。
然后,处理器单元204可以接收由分组处理引擎206生成的中断,通过操作系统的慢速路径代码处理入口分组,以确定与入口分组相对应的流条目,并且将流条目更新到流表中。然后,分组处理引擎206可以根据更新的流表来确定入口分组的路由。然后,可以由包处理引擎206直接路由与所确定的流条目相对应的后续分组。
网络接口208可以被配置为分发路由的分组。在一些实施例中,网络接口208可以是实现网络堆栈的L0和L1的网络接口卡(NIC)。网络接口208可以进一步被配置为从外部源(或外部节点)接收一个或多个分组,并且将接收到的分组转发到其他组件(例如,处理器单元204或分组处理引擎206)以进行进一步处理。即,处理器单元204或分组处理引擎206可以例如处理来自主机系统的虚拟机和/或外部源的分组。
如图2所示,扩展卡200可以进一步包括其他组件,诸如片上网络(NoC)210,存储器设备212等。
NoC 210为扩展卡200的所有主要组件提供了高速的片上互连。例如,可以通过NoC210在扩展卡200的组件之间传递数据,消息,中断等。可以预期,NoC 210可以用其他类型的内部总线代替。
存储器设备212可以被实现为任何类型的易失性或非易失性存储器设备或其组合,诸如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程读取存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,闪存或磁盘或光盘。在一些实施例中,存储器设备212可以包括由存储控制器控制的多个高速缓存设备。高速缓存设备可以被配置为存储一个或多个指令,配置信息,流表等。在一些实施例中,存储器设备212可以执行两级高速缓存。例如,存储器设备212可以使用远程通信访问方法(TCAM)或扩展卡200上的SRAM在扩展卡200上高速缓存数据(例如,流表,VPORT功能,ARP表等)以进行快速访问。存储器设备212还将更大部分的数据缓存在扩展卡200上的双倍数据速率(DDR)存储器设备中。
如上所述,扩展卡200可以连接到主机系统。图3示出了与本公开的实施例一致的示例性主机系统300的框图。
如图3所示,主机系统300可以包括用户空间中的至少一个虚拟机(VM)302和控制器304,以及内核空间中的第一消息代理306和驱动器308。在扩展卡200的一侧,可以通过由扩展卡200的处理器单元204运行的操作系统来生成第二消息代理310。
每个VM 302可以向单个客户提供云服务,并因此生成要由扩展卡200的虚拟交换功能路由的分组。如上所述,至少一个VM 302与扩展卡200之间的通信可以通过扩展接口202的PF和VF来实现,因为VM 302可以通过相应的VF直接访问扩展卡200的虚拟交换机功能。在一些实施例中,VM 302可以在其客户操作系统中安装VF驱动器以与VF合作。VM 302中包含的客户操作系统可以是,例如,MicrosoftTMWindowsTM,UbuntuTM,Red HatTMEnterpriseLinuxTM(RHEL)等。
控制器304作为扩展卡200的虚拟交换功能的管理员,可以配置为初始化扩展卡200。与图1所示的虚拟交换机100相比,控制器304是根据本公开实施例的虚拟交换机的唯一组件,其仍然保留在主机系统300中。
为了在控制器304和扩展卡200之间交换数据,提供了第一消息代理306和第二消息代理310。第一消息代理306可以从扩展卡200接收消息,处理消息以及向扩展卡200发送消息。类似地,扩展卡200的第二消息代理310可以从控制器304接收消息,处理消息以及向控制器304发送消息。
驱动器308可以通过扩展接口202将数据(例如,由控制器304生成的配置信息)写入扩展卡200。一旦写入,驱动器308进入循环以旋转以从扩展卡200进行响应。例如,控制器304可以通过驱动器308将处理器单元204的配置信息写入扩展卡200。
图4示出了与本公开的实施例一致的在处理器单元204和控制器304之间的示例性初始化过程。
控制器304可以生成配置信息并将其发送到内核空间中的第一消息代理306。然后,第一消息代理306处理配置信息的分组。在一些实施例中,第一消息代理306可以用控制头来封装配置信息的分组。控制头可以指示配置信息的类型。
封装的分组可进一步传递到驱动器308,驱动器308将封装的分组进一步写入扩展卡200的扩展接口202。在一些实施例中,封装的分组可被写入扩展接口202的基地址寄存器(BAR)空间。
接收到的分组可以通过作为桥接器的NoC 210进一步中继到处理器单元204。在一些实施例中,扩展接口202可以将接收到的分组通知给(例如,引发中断)处理器单元204。
响应于该通知,处理器单元204的第二消息代理310可以解封装所接收的分组以提取配置信息,并且发送将由慢速路径代码执行的配置信息以进行处理。在一些实施例中,处理器单元204可以处理配置信息以生成包括流条目的流表。
在配置信息已经被处理之后,处理器单元204可以将响应发送到控制器304。该响应可以被发送到第二消息代理310以被封装,并且由控制器304通过扩展接口202接收。封装的响应可以写入扩展接口202的BAR空间中的预定义响应区域。
利用基于配置信息生成的流表,扩展卡200可以执行虚拟交换功能,而不会占用主机系统300的太多资源。图5示出了与本公开的实施例一致的用于扩展卡200处理分组的示例性数据流。
如图5所示,网络接口208接收(501)分组。如上所述,该分组可以是来自外部源的分组。可以将分组转发(503)到分组处理引擎206。可以设想,如果分组自主机系统的虚拟机,则可以将分组直接发送到分组处理引擎206。分组处理引擎206可以确定分组是否具有匹配的流条目。
例如,分组处理引擎206可以请求检索(505)包含来自存储器设备212的流条目的流表。在将该流表返回(507)到分组处理引擎206之后,分组处理引擎206可以处理该分组以确定(509)分组是否具有匹配的流条目。
如果没有找到匹配的流条目,则分组处理引擎206可以将分组发送(511)到处理器单元204以进行进一步处理。例如,处理器单元204可以分析分组的报头,并相应地确定(513)与分组相对应的流条目。然后,处理器单元204可以将确定的流条目更新(515)到存储在存储器设备212中的流表中,并且进一步将分组发送回(517)到分组处理引擎206。如图5所示,分组处理引擎206然后可以重新执行检索并确定匹配的流条目。
如果找到匹配的流条目,则分组处理引擎206可以将具有路由信息的分组返回(519)到网络接口208,使得网络接口208可以基于路由信息相应地分发(521)该分组。可以设想,当分组是由处理器单元204返回的分组时,在流表被更新的情况下,分组处理引擎206可以找到匹配的流条目。在这种情况下,该分组被称为第一分组。
图6是与本公开的实施例一致的用于分发分组的示例性方法600的流程图。例如,方法600可以由扩展卡200的虚拟交换机来实现,并且可以包括步骤601-611。在一些实施例中,虚拟交换机可以由分别用作慢速路径和快速路径的处理器单元204和分组处理引擎206来实现。
在步骤601中,可以由具有控制器和内核的主机系统300来初始化虚拟交换机。例如,可以通过由主机系统300生成的配置信息来初始化虚拟交换机以建立流表。例如,初始化过程可以对应于以上在图4中讨论的初始化过程,并且为了清楚起见在此将省略其描述。
在步骤603中,虚拟交换机可以接收分组。可以从主机系统300或外部源生成要由虚拟交换机处理的分组。例如,主机系统300可以包括多个虚拟机(VM)以生成分组。可以由扩展卡200接收分组。例如,扩展卡200可以创建多个虚拟功能(VF),并且可以由各个VF接收分组并将其发送到虚拟交换机。
在步骤605中,虚拟交换机可以确定分组在流表中是否具有匹配的流条目。在扩展卡200中建立流表,以包括对应于各个分组的多个流条目。如果分组在流表中具有匹配的流条目,则该分组将由分组处理引擎206根据匹配的流条目来路由(即,快速路径)。然而,如果该分组在流表中没有匹配的流条目,则该分组将被传递到处理器单元204以进行进一步处理。
因此,在步骤607中,在确定分组没有现有流条目之后,分组处理引擎206可以向处理器单元204引发中断以调用虚拟交换机的慢速路径。响应于该中断,处理器单元204可以在下一步中处理该分组。
在步骤609,虚拟交换机(例如,处理器204)的慢速路径可以接收由分组处理引擎206发送的分组,并通过慢速路径代码处理该分组以确定与该分组相对应的流条目。
在步骤611中,慢速路径可以更新流表中的流条目。在一些实施例中,可以通过向NoC 210上的分组处理引擎206的地址空间发出写操作来将确定的流条目写入分组处理引擎206。同时,慢速路径可以将分组发送回分组处理引擎206。该分组可以被称为第一分组,因为它是与所确定的流条目相对应的第一分组。对应于确定的流条目的任何其他分组可以被命名为后续分组。
然后,在步骤613中,分组处理引擎206可以根据匹配的流条目来路由分组。可以设想,当在步骤605中确定该分组具有匹配的流条目时,该分组可以由快速路径直接路由而不在慢速路径中被处理。
大多数分组可以在分组处理引擎206的流表中找到匹配的条目。在这种情况下,分组将简单地流过分组处理引擎206(即,快速路径)并采取相应的动作。不需要在处理器单元204中涉及慢速路径。
因此,如上所述,除了用于初始化的步骤601之外,用于执行虚拟交换机功能的整个过程完全不涉及主机系统300。可以在分组处理引擎206中无缝地处理大多数分组。如果在分组处理引擎206中错过了分组,则可以调用在处理器单元204中运行的慢速路径代码来照顾它们。在这两种情况下,主机系统300的资源均不涉及,因此可以分配给云服务客户的VM以获得更多收入。因为分组处理引擎206是网络交换机的硬件实现,所以与软件实现相比,它提供了更高的吞吐量和可伸缩性。并且处理器单元204运行成熟的操作系统以确保扩展卡200的灵活性。
本发明的另一个方面涉及集成电路。集成电路可以以片上系统(SoC)的形式实现。SoC可以包括如上所述的类似功能组件。例如,SoC可以包含类似于扩展接口202、处理器单元204、分组处理引擎206、网络接口208、片上网络(NoC)210、内存设备212之类的组件。为了清楚起见,这里将省略这些组件的详细描述。
本公开的另一方面针对一种存储指令的非暂时性计算机可读介质,该指令在被执行时使一个或多个处理器执行来自如上所述的该方法的至少一些步骤该计算机可读介质可以包括易失性或非易失性,磁性,半导体,磁带,光学,可移动,不可移动或其他类型的计算机可读介质或计算机可读存储设备。例如,计算机可读介质可以是其上存储有如所公开的计算机指令的存储设备或存储模块。执行指令的一个或多个处理器可以包括如上所述的扩展卡200的类似组件202-212。为了清楚,这里将省略这些组件的详细描述。
对于本领域技术人员将显而易见的是,可以对所公开的虚拟交换设备和方法进行各种修改和变型。通过考虑所公开的系统和相关方法的说明书和实践,其他实施例对于本领域技术人员将是显而易见的。尽管将实施例描述为单独的设备作为示例,但是所描述的虚拟交换设备可以应用于主机系统的集成组件。
说明书和示例旨在仅被认为是示例性的,真正的范围由所附权利要求及其等同物指示。

Claims (15)

1.一种用于分发一个或多个分组的扩展卡,包括:
扩展接口,被配置为与具有控制器的主机系统通信并接收一个或多个分组;
处理器单元,被配置为根据控制器提供的配置信息处理一个或多个分组,其中,所述配置信息初始化处理器单元以建立流表;
分组处理引擎,被配置为根据通过处理器单元建立的流表来路由一个或多个分组,其中,若所述分组在所述流表中不具有匹配的流条目,所述处理器单元确定与所述分组对应的流条目并将流条目更新到流表中以路由所述分组;以及
网络接口,被配置为分发路由的一个或多个分组。
2.根据权利要求1所述的扩展卡,其中,所述一个或多个分组是由主机系统所包含的虚拟机生成的。
3.根据权利要求1所述的扩展卡,其中,所述分组处理引擎被配置为进一步确定分组在所述流表中是否具有匹配的流条目。
4.根据权利要求3所述的扩展卡,其中,在所述分组处理引擎确定所述分组在所述流表中没有匹配的流条目之后,所述分组处理引擎还被配置为向处理器单元引发中断。
5.根据权利要求4所述的扩展卡,其中,所述处理器单元还被配置为:
接收分组处理引擎发送的分组;
通过慢速路径代码对该分组进行处理,确定该分组对应的流条目;以及
将流条目更新到流表中。
6.根据权利要求1-5中任一项所述的扩展卡,其中,所述配置信息包括转发信息数据库(FIB),地址解析协议(ARP)表和访问控制列表(ACL)规则中的至少一个。
7.一种用于分发由设置在与具有控制器的主机系统通信的扩展卡上的虚拟交换机执行的一个或多个分组的方法,该方法包括:
接收一个或多个分组;
根据控制器提供的配置信息处理一个或多个分组;
根据流表路由一个或多个分组,其中,若所述分组在所述流表中不具有匹配的流条目,所述虚拟交换机中的处理器单元确定与所述分组对应的流条目并将流条目更新到流表中以路由所述分组;并且
分发路由的分组;
其中,所述方法还包括:通过所述配置信息来初始化虚拟交换机,以建立流表。
8.根据权利要求7所述的方法,其中,根据流表路由一个或多个分组还包括:
确定接收到的分组在流表中是否具有匹配的流条目。
9.根据权利要求8所述的方法,还包括:在确定所接收的分组在所述流表中没有现有流条目之后,向所述处理器单元引发中断。
10.根据权利要求9所述的方法,还包括:
所述处理器单元通过慢速路径代码对该分组进行处理,以确定该分组对应的流条目;并且
更新流条目到流表中。
11.一种通信系统,包括主机系统和扩展卡,其中,所述主机系统包括控制器;
所述扩展卡包括:
扩展接口,被配置为与主机系统通信并接收一个或多个分组;
处理器单元,被配置为根据控制器提供的配置信息处理分组,其中,所述配置信息初始化处理器单元以建立流表;
分组处理引擎,被配置为根据经由处理器单元建立的流表来路由分组,其中,若所述分组在所述流表中不具有匹配的流条目,所述处理器单元确定与所述分组对应的流条目并将流条目更新到流表中以路由所述分组;以及
网络接口,被配置为分发路由分组。
12.一种非暂时性计算机可读介质,其存储指令集,该指令集可由设备的至少一个处理器执行以使所述设备执行用于分发分组的方法,所述方法包括:
从具有控制器的主机系统接收一个或多个分组;
根据控制器提供的配置信息处理分组;
根据流表对分组进行路由,其中,若所述分组在所述流表中不具有匹配的流条目,所述设备中的处理器单元确定与所述分组对应的流条目并将流条目更新到流表中以路由所述分组;并且
分发路由的分组;
其中,所述指令集可由所述设备的至少一个处理器执行以使所述设备进一步执行:通过配置信息初始化虚拟交换机,以建立流表。
13.根据权利要求12所述的非暂时性计算机可读介质,其中,所述指令集可由所述设备的至少一个处理器执行以使所述设备进一步执行:
确定分组在流表中是否具有匹配的流条目。
14.根据权利要求13所述的非暂时性计算机可读介质,其中,所述指令集可由所述设备的至少一个处理器执行以使所述设备进一步执行:
在确定分组在流表中没有现有流条目之后,向所述处理器单元引发中断。
15.根据权利要求14所述的非暂时性计算机可读介质,其中,所述指令集可由所述设备的至少一个处理器执行以使所述设备进一步执行:
通过慢速路径代码对该分组进行处理,以确定该分组对应的流条目;并且
更新流条目到流表中。
CN201880047815.1A 2017-07-19 2018-07-18 虚拟交换设备和方法 Active CN110945843B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/654,631 US20190028409A1 (en) 2017-07-19 2017-07-19 Virtual switch device and method
US15/654,631 2017-07-19
PCT/US2018/042688 WO2019018526A1 (en) 2017-07-19 2018-07-18 VIRTUAL SWITCH DEVICE AND METHOD

Publications (2)

Publication Number Publication Date
CN110945843A CN110945843A (zh) 2020-03-31
CN110945843B true CN110945843B (zh) 2022-04-12

Family

ID=65016114

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880047815.1A Active CN110945843B (zh) 2017-07-19 2018-07-18 虚拟交换设备和方法

Country Status (3)

Country Link
US (1) US20190028409A1 (zh)
CN (1) CN110945843B (zh)
WO (1) WO2019018526A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021182689A (ja) * 2020-05-19 2021-11-25 富士通株式会社 スイッチ特定方法、及びスイッチ特定プログラム
CN115208810A (zh) * 2021-04-12 2022-10-18 益思芯科技(上海)有限公司 一种转发流表加速方法及装置、电子设备和存储介质
CN117294619A (zh) * 2022-06-17 2023-12-26 华为技术有限公司 流表审计方法、装置、系统及相关设备

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6665733B1 (en) * 1996-12-30 2003-12-16 Hewlett-Packard Development Company, L.P. Network communication device including bonded ports for increased bandwidth
CN1466340A (zh) * 2002-06-24 2004-01-07 �人��������������ι�˾ 以策略流方式转发数据的方法和数据转发设备
CN101102200A (zh) * 2007-06-15 2008-01-09 中兴通讯股份有限公司 交换机防火墙插板
CN101197851A (zh) * 2008-01-08 2008-06-11 杭州华三通信技术有限公司 一种实现控制平面集中式数据平面分布式的方法及系统
CN104168200A (zh) * 2014-07-10 2014-11-26 汉柏科技有限公司 一种基于Open vSwitch实现ACL功能的方法及系统
CN104348694A (zh) * 2013-07-25 2015-02-11 凯为公司 具有虚拟交换机和业务流策略增强的网络接口卡
CN104660506A (zh) * 2013-11-22 2015-05-27 华为技术有限公司 一种数据包转发的方法、装置及系统
CN105282135A (zh) * 2014-06-23 2016-01-27 英特尔公司 采用软件定义联网中的虚拟机和虚拟化容器的本地服务链接
WO2016095822A1 (en) * 2014-12-17 2016-06-23 Hangzhou H3C Technologies Co., Ltd. Flow transmission
CN106034077A (zh) * 2015-03-18 2016-10-19 华为技术有限公司 一种动态路由配置方法、装置及系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8498297B2 (en) * 2005-08-26 2013-07-30 Rockstar Consortium Us Lp Forwarding table minimisation in ethernet switches
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
US8612374B1 (en) * 2009-11-23 2013-12-17 F5 Networks, Inc. Methods and systems for read ahead of remote data
US8996644B2 (en) * 2010-12-09 2015-03-31 Solarflare Communications, Inc. Encapsulated accelerator
US9710762B2 (en) * 2012-06-06 2017-07-18 Juniper Networks, Inc. Dynamic logging
US9571386B2 (en) * 2013-07-08 2017-02-14 Nicira, Inc. Hybrid packet processing
US10250529B2 (en) * 2014-07-21 2019-04-02 Big Switch Networks, Inc. Systems and methods for performing logical network forwarding using a controller
US9614789B2 (en) * 2015-01-08 2017-04-04 Futurewei Technologies, Inc. Supporting multiple virtual switches on a single host
US20160337232A1 (en) * 2015-05-11 2016-11-17 Prasad Gorja Flow-indexing for datapath packet processing
US20170093677A1 (en) * 2015-09-25 2017-03-30 Intel Corporation Method and apparatus to securely measure quality of service end to end in a network

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6665733B1 (en) * 1996-12-30 2003-12-16 Hewlett-Packard Development Company, L.P. Network communication device including bonded ports for increased bandwidth
CN1466340A (zh) * 2002-06-24 2004-01-07 �人��������������ι�˾ 以策略流方式转发数据的方法和数据转发设备
CN101102200A (zh) * 2007-06-15 2008-01-09 中兴通讯股份有限公司 交换机防火墙插板
CN101197851A (zh) * 2008-01-08 2008-06-11 杭州华三通信技术有限公司 一种实现控制平面集中式数据平面分布式的方法及系统
CN104348694A (zh) * 2013-07-25 2015-02-11 凯为公司 具有虚拟交换机和业务流策略增强的网络接口卡
CN104660506A (zh) * 2013-11-22 2015-05-27 华为技术有限公司 一种数据包转发的方法、装置及系统
CN105282135A (zh) * 2014-06-23 2016-01-27 英特尔公司 采用软件定义联网中的虚拟机和虚拟化容器的本地服务链接
CN104168200A (zh) * 2014-07-10 2014-11-26 汉柏科技有限公司 一种基于Open vSwitch实现ACL功能的方法及系统
WO2016095822A1 (en) * 2014-12-17 2016-06-23 Hangzhou H3C Technologies Co., Ltd. Flow transmission
CN106034077A (zh) * 2015-03-18 2016-10-19 华为技术有限公司 一种动态路由配置方法、装置及系统

Also Published As

Publication number Publication date
US20190028409A1 (en) 2019-01-24
WO2019018526A1 (en) 2019-01-24
CN110945843A (zh) 2020-03-31

Similar Documents

Publication Publication Date Title
US11593138B2 (en) Server offload card with SoC and FPGA
CN110063051B (zh) 用于重新配置服务器的系统和方法以及服务器
US10263832B1 (en) Physical interface to virtual interface fault propagation
US10419550B2 (en) Automatic service function validation in a virtual network environment
US9742671B2 (en) Switching method
US8521941B2 (en) Multi-root sharing of single-root input/output virtualization
EP2284717B1 (en) Controller integration
CN110945843B (zh) 虚拟交换设备和方法
US7571273B2 (en) Bus/device/function translation within and routing of communications packets in a PCI switched-fabric in a multi-host environment utilizing multiple root switches
CN117544581A (zh) 用于智能网络接口卡的共享存储器
JP6993057B2 (ja) 動的ホストデバイスインスタンスモデル再構成を使用するプロバイダネットワークにおける容量管理
US8040900B2 (en) N-port network adaptor
US10911405B1 (en) Secure environment on a server
US20080137676A1 (en) Bus/device/function translation within and routing of communications packets in a pci switched-fabric in a multi-host environment environment utilizing a root switch
WO2022098444A1 (en) End-to-end data plane offloading for distributed storage using protocol hardware and pisa devices
CN108139982A (zh) 多信道输入/输出虚拟化
US10931581B2 (en) MAC learning in a multiple virtual switch environment
US20220147502A1 (en) Method to perform hash table lookup for keys wider than data path size
US20230281033A1 (en) Integrating virtualization and host networking
US9535851B2 (en) Transactional memory that performs a programmable address translation if a DAT bit in a transactional memory write command is set
US11386031B2 (en) Disaggregated switch control path with direct-attached dispatch
US11409553B1 (en) System and method for isolating work within a virtualized scheduler using tag-spaces
US20230375994A1 (en) Selection of primary and secondary management controllers in a multiple management controller system
US20240134654A1 (en) Network interface device booting one or more devices
US20240119020A1 (en) Driver to provide configurable accesses to a 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