CN111865806B - 基于前缀的胖流 - Google Patents

基于前缀的胖流 Download PDF

Info

Publication number
CN111865806B
CN111865806B CN201910909506.7A CN201910909506A CN111865806B CN 111865806 B CN111865806 B CN 111865806B CN 201910909506 A CN201910909506 A CN 201910909506A CN 111865806 B CN111865806 B CN 111865806B
Authority
CN
China
Prior art keywords
destination
address
network
flow
source
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
CN201910909506.7A
Other languages
English (en)
Other versions
CN111865806A (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.)
Juniper Networks Inc
Original Assignee
Juniper Networks Inc
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 Juniper Networks Inc filed Critical Juniper Networks Inc
Publication of CN111865806A publication Critical patent/CN111865806A/zh
Application granted granted Critical
Publication of CN111865806B publication Critical patent/CN111865806B/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
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/748Address table lookup; Address filtering using longest matching prefix
    • 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/72Routing based on the source address
    • 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
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5007Internet protocol [IP] addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/64Routing or path finding of packets in data switching networks using an overlay routing layer

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本公开涉及基于前缀的胖流。网络装置包括一个或多个处理器,该一个或多个处理器被配置为使用胖流(fat flow)规则,该FAT流规则指定要应用于源互联网协议(IP)地址或应用于目的地IP地址的掩码和源端口或目的地端口要被忽略中的至少一个。一个或多个处理器还可以被配置为接收具有不同的源或目的地IP地址和/或不同的源或目的地端口的分组,并且然而根据胖流规则,例如通过掩蔽分组的源IP地址或目的地IP地址和/或忽略分组的源端口或目的地端口将分组分配给相同的胖流。以此方式,网络装置可以将两个或更多个不同的流聚合为单个胖流。

Description

基于前缀的胖流
相关申请的交叉引证
本申请要求于2019年4月29日提交的印度专利申请号201941016940的优先权,其全部内容通过引证结合于此。
技术领域
本公开的技术总体涉及计算机网络,并且更具体地,涉及虚拟网络。
背景技术
在一般的云数据中心环境中,存在提供计算和/或存储容量以运行各种应用程序的大量互连的服务器。例如,数据中心可以包括为订户(即,数据中心的客户)托管应用程序和服务的设施。例如,数据中心可以托管所有基础设施设备,诸如,联网和存储系统、冗余电源和环境控制。在一般数据中心中,存储系统和应用服务器的群集经由由一个或多个层级的物理网络交换机和路由器提供的高速交换结构互连。更复杂的数据中心利用位于各种物理托管设施中的订户支持设备提供遍及全世界的基础设施。
发明内容
通常,本公开描述了与形成基于前缀的胖流(fat flow)以包括多个流(例如,用于多个源和/或目的地)到单个胖流中的流量有关的技术。该胖流例如可以使用子网前缀掩码由基于流的源IP地址或目的地IP地址的流形成。此外或可替换地,胖流可以由基于忽略用于流分化的源端口或目的地端口的流形成。
在一个示例中,一种方法包括由虚拟网络控制器装置定义胖流规则以形成包括第一流和第二流的分组的胖流,第二流与第一流不同,其中,胖流规则指定以下项中的至少一个:要应用于源互联网协议(IP)地址或应用于目的地IP地址的掩码;和/或源端口或目的地端口要被忽略;并且由虚拟网络控制器装置利用胖流规则配置服务器装置的虚拟路由器。
在另一示例中,一种方法包括:由网络装置接收包括第一源互联网协议(IP)地址、第一目的地IP地址、第一源端口、第一目的地端口和第一协议的第一分组;由网络装置基于胖流规则确定用于第一分组的胖流;由网络装置转发第一分组作为胖流的一部分;由网络装置接收包括第二源互联网协议(IP)地址、第二目的地IP地址、第二源端口、第二目的地端口和第二协议的第二分组;由网络装置基于胖流规则确定用于第二分组的胖流;并且由网络装置转发第二分组作为胖流的一部分,其中,胖流规则指定以下项中的至少一个:要应用于第一源IP地址和第二源IP地址或者应用于第一目的地IP地址和第二目的地IP地址的掩码;和第一源端口和第二源端口或者第一目的地端口和第二目的地端口要被忽略,并且其中,第一源IP地址和第二源IP地址是不同的和/或第一目的地IP地址和第二目的地IP地址是不同的,或者第一源端口和第二源端口是不同的和/或第一目的地端口和第二目的地端口是不同的。
在另一示例中,网络装置包括:一个或多个网络接口,被配置为经由网络发送和接收数据;存储器,被配置为存储定义胖流规则的数据,其中,胖流规则指定以下项中的至少一个:要应用于源互联网协议(IP)地址或应用于目的地IP地址的掩码;和/或源端口或目的地端口要被忽略;以及一个或多个处理器,在电路中实现并且被配置为:接收包括第一源互联网协议(IP)地址、第一目的地IP地址、第一源端口、第一目的地端口和第一协议的第一分组;基于胖流规则确定用于第一分组的胖流;由网络装置转发第一分组作为胖流的一部分;由网络装置接收包括第二源互联网协议(IP)地址、第二目的地IP地址、第二源端口、第二目的地端口和第二协议的第二分组;由网络装置基于胖流规则确定用于第二分组的胖流;并且由网络装置转发第二分组作为同一胖流的一部分,其中,第一源IP地址和第二源IP地址是不同的和/或第一目的地IP地址和第二目的地IP地址是不同的,或者第一源端口和第二源端口是不同的和/或第一目的地端口和第二目的地端口是不同的。
在附图和以下描述中阐述了本发明的一个或多个实施方式的细节。本发明的其他特征、目标和优点从说明书和附图以及从权利要求中将是显而易见的。
附图说明
图1是示出了具有可以实现本文中描述的技术的示例的数据中心的示例网络的框图。
图2是更详细地示出了图1的数据中心的示例实现方式的框图。
图3是示出了根据本文中描述的技术的执行用于虚拟网络的示例虚拟路由器的计算装置的框图。
图4是示出了根据本公开的技术的可以使用基于前缀的胖流的示例系统的框图。
图5是示出了根据本公开的技术的用于配置胖流的示例图形用户界面(GUI)的概念图。
图6是示出了根据本公开的技术的用于虚拟网络代理的示例数据结构设计的框图。
图7是示出了根据本公开的技术的用于虚拟路由器的示例数据结构设计的框图。
图8是示出了根据本公开的技术的用于虚拟路由器的示例数据结构设计的框图。
图9是示出了根据本公开的技术的用于使用基于前缀的胖流处理接收到的分组的示例过程的流程图。
图10是示出了控制器装置和网络装置可以通过其执行本公开的技术的示例方法的流程图。
具体实施方式
图1是示出了具有可以实现本文中描述的技术的示例的数据中心10的示例网络8的框图。通常,数据中心10通过服务提供商网络7为耦接至数据中心的客户11提供用于应用程序和服务的操作环境。例如,数据中心10可以托管基础设施设备,诸如,联网和存储系统、冗余电源和环境控制。服务提供商网络7可以耦接到由其他提供商管理的一个或多个网络,并且因此可以形成大规模公共网络基础设施(例如,互联网)的一部分。
在一些示例中,数据中心10可以表示许多地理上分布的网络数据中心中的一个。如图1的示例所示,数据中心10是为客户11提供网络服务的设施。客户11可以是诸如公司和政府或个人的集体实体。例如,网络数据中心可以为几个公司和最终用户托管网络服务。其他示例性服务可包括数据存储、虚拟专用网络、流量工程、文件服务、数据挖掘、科学或超级计算等。在一些实施方式中,数据中心10可以是个人网络服务器、网络对等体,或者其他。
在这个示例中,数据中心10包括经由由一个或多个层级的物理网络交换机和路由器提供的高速交换结构14互连的一组存储系统和应用服务器12A-12X(在本文中,“服务器12”)。交换结构14由耦接至分布层的机架式交换机18A-18M(统称,“机架式交换机18”)的一组互连的架顶式(TOR)交换机16A-16BN(统称,“TOR交换机16”)提供。尽管未示出,但是数据中心10还可以包括例如一个或多个非边缘交换机、路由器、集线器、网关、安全装置(诸如防火墙、入侵检测、和/或入侵防护装置)、服务器、计算机终端、膝上型计算机、打印机、数据库、无线移动装置(诸如蜂窝电话或个人数字助理)、无线接入点、网桥、电缆调制解调器、应用加速器、或其他网络装置。各种类型的装置可以被配置为执行本公开的技术,诸如,虚拟路由器(vrouter)、防火墙、负载均衡装置等。
在这个示例中,TOR交换机16和机架式交换机18为服务器12提供与IP结构20和服务提供商网络7的冗余(多宿主)连接。机架式交换机18聚合流量流并且在交换机16之间提供高速连接。TOR交换机16可以是提供层2(例如,MAC)和/或层3(例如,IP)路由和/或交换功能的网络装置。TOR交换机16和机架式交换机18各自可以包括一个或多个处理器和存储器,并且能够执行一个或多个软件过程。机架式交换机18耦接至IP结构20,该IP结构执行层3路由以通过服务提供商网络7在数据中心10和客户11之间路由网络流量。
根据本公开的一个或多个实施方式,虚拟网络控制器22(“VNC”)在逻辑上并且在一些情况下在物理上提供集中式控制器,用于促进在数据中心10内的一个或多个虚拟网络的操作。在一些示例中,虚拟网络控制器22可以响应于从网络管理员24接收的配置输入进行操作。在2013年6月5日提交的题为PHYSICAL PATH DETERMINATION FOR VIRTUALNETWORK FLOWS的国际申请号PCT/US 2013/044378中发现了关于与数据中心10或其他软件定义网络的其他装置一起操作的虚拟网络控制器22的其他信息,其通过引证结合于此,如同在本文中完全阐述。在2017年2月14日批准的题为“TUNNELED PACKET AGGREGATION FORVIRTUAL NETWORKS”的美国专利号9,571,394中描述了关于用于虚拟网络的分组聚合的其他信息,其全部内容通过引证结合于此。
通常,例如,任何两个网络装置之间(例如,IP结构20内的网络装置(未示出)之间或者服务器12和客户11之间或服务器12之间)的流量可以使用许多不同的路径遍历物理网络。例如,两个网络装置之间可能存在几个不同的等价路径。在一些情况下,属于从一个网络装置到另一网络装置的网络流量的分组可以在每个网络交换节点处使用称为多路径路由的路由策略分布在各种可能的路径中。例如,互联网工程任务组(IETF)RFC 2992的“等价多路径算法的分析”描述了用于沿着多个等价路径路由分组的路由技术。RFC 2992的技术分析了一个特定的多路径路由策略,该策略涉及通过对分组报头字段进行散列而将流分配给储存箱(bin),这些字段通过单个确定性路径发送来自特定网络流的所有分组。
例如,可以由在分组的报头或“五元组”中使用的五个值来定义“流”,即,用于通过物理网络路由分组的协议、源IP地址、目的地IP地址、源端口和目的地端口。例如,协议指定通信协议,诸如TCP或UDP,并且源端口和目的地端口是指连接的源端口和目的地端口。与特定流条目匹配的一个或多个分组数据单元(PDU)构成的组表示流。可以使用PDU的任何参数来将流宽泛地分类,诸如,源和目的地数据链路(例如,MAC)和网络(例如,IP)地址、虚拟局域网(VLAN)标签、传输层信息、多协议标签交换(MPLS)或通用MPLS(GMPLS)标签以及接收该流的网络装置的入口端口。例如,流可以是在传输控制协议(TCP)连接中传输的所有PDU、由特定的MAC地址或IP地址获得的所有PDU、具有相同VLAN标签的所有PDU或者在相同交换端口接收的所有PDU。
由服务器12中的任一个执行的虚拟网络功能(VNF)可以应用于流作为服务链配置的一部分,其还可以连接至计算机网络,诸如,互联网。例如,VNF可包括虚拟防火墙或其他虚拟安全装置、虚拟网络地址转换功能、虚拟接入网关、虚拟策略控制和计费平台、虚拟流量分析功能等。在一些情况下,VNF可以是虚拟分组数据网关(vPGW)、虚拟服务网关(vSGW)、虚拟GPRS网关服务节点(vGGSN)、或者用于订户网络的其他虚拟网关。在此情况下,可以以高流设置率创建数百万的订户流。在此情况下,用于执行VNF的服务器12的虚拟路由器(vrouter)可以在到达VNF性能瓶颈之前达到流设置率限制。
此外,本公开识别智能网络接口卡(smartNIC)将引起每秒更多流(FPS)。即,相同计算装置上的更多流引起更多FPS。适当的尺寸标注必须考虑异常情况(例如,分布式拒绝服务(DDOS)攻击、蠕虫、故障、重新聚合等)。因此,必须考虑裕度。
常规系统可以使用基于流的转发中的微流。例如,控制器可以使用{源,目的地,协议,源端口,目的地端口,下一跳标识符(NHID)}的六元组,其中,五元组映射至用于与五元组匹配的流的合适的下一跳(NHID)。这在2017年3月23日Praveen K V在github.com/Juniper/contrail-controller/wiki/Flow-processing上的“流处理”中进行了描述,其全部内容通过引证结合于此。服务提供商可具有许多现有的和/或新的流,这可以达到vrouter限制,尤其在诸如DDOS攻击和蠕虫的不健康的网络条件下。
本公开识别在许多情况下服务提供商可能实际上不需要微流,因为对于大型服务提供商转发路径不必建立这种粒度的准确度。这是因为这种微流没有几千万流的规模,并且盈利总体不好。例如,可用于vrouter的资源(例如,处理和存储资源)可能不能处理这种大量不同的流。因此,本公开描述了用于实现更胖流的技术。即,几个微流可以使用一个或多个标准组合为一个胖流。例如,VNC 22可以根据本公开的技术被配置为将服务器12的vrouter配置为形成胖流。
在一些示例中,VNC 22可以将服务器12的vrouter配置为形成胖流以匹配协议和端口数。例如,如果该协议是TCP且端口是80,则VNC 22可以将服务器12的vrouter配置为由流F1、F2…FN形成胖流FF1,如下:
F1=1.1.1.1,2.2.2.2,6,1000,80//(SRC,DST,PROTO,SRC_PORT,DST_PORT)
F2=1.1.1.1,2.2.2.2,6,5000,80
FN=1.1.1.1,2.2.2.2,6,n,80
以产生胖流FF1:
FF1=1.1.1.1,2.2.2.2,6,0,80
在一些示例中,VNC 22还可以将服务器12的vrouter配置为形成忽略源IP地址或目的地IP地址的胖流。例如,如果该协议是TCP,端口是80并且源IP地址被忽略,则VNC 22可以将服务器12的vrouter配置为由流F1、F2…形成胖流FF2,如下:
F1=1.1.1.1,3.3.3.3,6,1000,80
F2=2.2.2.2,3.3.3.3,6,5000,80
产生胖流
FF2=0,3.3.3.3,6,0,80
在以上示例中,值0操作为通配(任何)值。本公开进一步识别常规胖流不可以被配置为聚合来自不同端口数的微流。同样地,忽略源IP地址或目的地IP地址可能破坏流的信息熵,这会扰乱负载均衡应用。因此,本公开描述了用于基于IP前缀创建胖流的技术,即,基于前缀的胖流。因此,根据本公开的技术,如以下更详细地讨论的,VNC 22可以根据本公开的技术配置为将服务器12的vrouter配置为形成基于前缀的胖流。因此,负载均衡仍然可以应用于匹配定义相应胖流的不同前缀的流。
具体地,VNC 22可以利用指定要应用于源互联网协议(IP)地址或用于目的地IP地址和/或源端口或目的地端口被忽略中的至少一个的胖流规则配置vrouter。VNC 22可以接收指定掩码的长度(例如,/16或/24位)的输入参数。因此,在各种示例中,胖流规则可以指定流基于共享共用源IP地址前缀、共用目的地IP地址前缀、忽视的源端口和/或忽视的目的地端口被聚合。
以此方式,服务器12的vrouter可以应用胖流规则以确定用于分组的下一跳,其中,该分组可以形成大量不同流中的一个的一部分。例如,服务器12的vrouter可以接收不同流的分组并且利用包括一个或多个胖流规则的各种规则执行与接收的分组的IP地址的最长前缀匹配。如以下关于例如图8更详细地说明的,服务器12的vrouter可以将胖流规则存储在M-trie中。
尽管关于虚拟机进行了一般描述,但是本公开的技术还可以应用在其他环境中,例如,kubernetes舱(容器)。
图2是更详细地示出了图1的数据中心10的示例实现方式的框图。在图2的示例中,数据中心10包括将交换结构14从物理交换机16、18延伸至软件或“虚拟”交换机30A-30X(统称,“虚拟路由器30”)的覆盖网络。虚拟路由器30动态创建和管理可用于应用实例之间的通信的一个或多个虚拟网络34。在一个示例中,虚拟路由器30执行虚拟网络作为覆盖网络,其提供将应用的虚拟地址与在其上执行应用的服务器12A-12X(“服务器12”)中的一个的物理地址(例如,IP地址)去耦的能力。每个虚拟网络可以使用其自身的寻址和安全方案并且可以被看作是与物理网络及其寻址方案的正交。各种技术可以用于通过物理网络在虚拟网络34内和在虚拟网络34上传输分组。
每个虚拟路由器30可以在管理程序、主机操作系统或每一个服务器12的其他部件内执行。每一个服务器12可以表示x86或者能够执行虚拟机36的其他通用或专用服务器。在图2的示例中,虚拟路由器30A在通常也称为虚拟机管理器(VMM)的管理程序31内执行,该VMM提供允许多个操作系统同时在一个服务器12上运行的虚拟化平台。在图2的示例中,虚拟路由器30A管理虚拟网络34,每个虚拟网络为在由管理程序31提供的虚拟化平台之上的一个或多个虚拟机(VM)36的执行提供网络环境。每个VM 36与虚拟网络VN0-VN1中的一个相关联并且可以表示运行客户应用程序的租户VM,诸如网络服务器、数据库服务器、公司应用程序、或者用于创建服务链的托管虚拟化服务。在一些情况下,服务器12和另一计算装置中的任一个或多个可以直接托管客户应用程序,即,不作为虚拟机。如本文中参考的虚拟机,例如,VM 36、110和服务器12或者托管用户应用程序的分离的计算装置可以可替换地被称为“主机”。
通常,每个VM 36可以是任何类型的软件应用程序,并且可以分配用于在对应的虚拟网络34内使用的虚拟地址,其中,每个虚拟网络可以是由虚拟路由器30A提供的不同的虚拟子网。可以给VM 36分配其自身的虚拟层3(L3)IP地址,例如,用于发送和接收通信,但是可能不知道虚拟机正在其上执行的物理服务器12A的IP地址。以此方式,“虚拟地址”是与底层的物理计算机系统(例如,图2的示例中的服务器12A)的逻辑地址不同的应用程序的地址。
在一个实现方式中,每一个服务器12包括控制虚拟网络34的覆盖并且协调服务器12内的数据分组的路由的对应的一个虚拟网络(VN)代理35A-35X(统称,“VN代理35”)。通常,每个VN代理35与虚拟网络控制器22通信,该虚拟网络控制器生成通过数据中心10控制分组的路由的命令。VN代理35可以操作为用于虚拟机36和虚拟网络控制器22之间的控制平面消息的代理。例如,VM 36可以使用它的虚拟地址经由VN代理35A请求发送消息,并且VN代理35A可以接着发送该消息并且请求发起第一消息的VM 36的虚拟地址要接收的消息的响应。在一些情况下,VM 36可以调用由VN代理35A的应用编程接口呈现的程序或功能呼叫,并且VN代理35A也可以处理该消息的封装,包括寻址。
如上所述,虚拟网络控制器22提供用于促进数据中心10内的一个或多个虚拟网络的操作的逻辑上的集中式控制器。例如,虚拟网络控制器22可以保持路由信息库,例如,存储用于物理网络以及数据中心10的一个或多个覆盖网络的路由信息的一个或多个路由表。相似地,交换机16、18和虚拟路由器30保持路由信息,诸如一个或多个路由和/或转发表。在一个示例实现方式中,管理程序31的虚拟路由器30A为每个虚拟网络34实现网络转发表(NFT)32。通常,每个NFT 32存储用于对应的虚拟网络34的转发信息并且诸如利用可包括用于不同层的虚拟网络协议栈的一个或多个报头的隧道报头识别数据分组被转发至何处且分组是否被封包在隧道协议中。
例如,虚拟机36VM1将分组、“内部分组”通过内部链路发送至虚拟路由器30A。虚拟路由器30A使用NFT1查找用于内部分组的虚拟网络目的地网络地址。NFT1指定用于虚拟路由器30A的出站接口和用于内部分组的封装。虚拟路由器30A应用该封装添加隧道报头以生成外部分组并且在出站接口上,在这种情况下朝向TOR交换机16A输出外部分组。
例如,路由信息可以将分组密钥信息(例如,目的地IP信息和来自分组报头的其他选择信息)映射至由虚拟路由器30和交换结构14提供的网络内的一个或多个特定的下一跳。在一些情况下,下一跳可以是当转发分组时指定要在每个分组上执行的一组操作的链接的下一跳,诸如,可以用于泛洪下一跳和多播复制。在一些情况下,虚拟网络控制器22以具有表示网络内的目的地的叶节点的基数树的形式保持路由信息。美国专利7,184,437提供了关于利用用于路由解析的基数树的路由器的示例实施方式的详情,美国专利7,184,437的全部内容通过引证结合于此。
如图2所示,每个虚拟网络34为用于通过交换结构14建立的覆盖网络的封包的分组通信37提供通信构架。以此方式,与任何虚拟机36相关联的网络分组可以经由覆盖网络作为封包的分组通信37传输。此外,在图2的示例中,每个虚拟路由器30包括默认的网络转发表NFT0并且提供在没有封装的情况下允许分组转发至虚拟子网VN0的默认路由,即,按照数据中心10的物理网络的路由规则的非封装的分组通信39。以此方式,子网VN0和虚拟默认网络转发表NFT0提供用于绕过覆盖网络并将非封装的分组通信39发送至交换结构14的机构。
此外,虚拟网络控制器22和虚拟路由器30可以在覆盖网络的发现和初始化期间以及在故障链路暂时停止经由覆盖网络的通信期间使用虚拟子网VN0根据默认的网络转发表NFT0 32通信。一旦与虚拟网络控制器22的连接建立,则虚拟网络控制器22更新其本地路由表以考虑关于任何故障链路的新信息并且引导虚拟路由器30更新它们的本地网络转发表32。例如,虚拟网络控制器22可以将命令输出至虚拟网络代理35以更新一个或多个NFT 32以引导虚拟路由器30改变隧道封装,以便重新路由覆盖网络内的通信,例如,以避免故障链路。
当检测到链路故障时,故障链路本地的虚拟网络代理35(例如,VN代理35A)可以立即改变网络分组的封装以重新引导覆盖网络内的流量并且通知虚拟网络控制器22路由变化。接下来,虚拟网络控制器22更新其路由信息,任何可以将消息发布至其他虚拟网络代理35以更新由网络转发表32内的虚拟网络代理存储的本地路由信息。
根据本公开的技术,如以下更详细地讨论的,VNC 22可以配置任何虚拟路由器30以使用胖流。例如,当确定是否将胖流规则应用于分组时,VNC 22可以利用指定要应用于分组的源互联网协议(IP)地址或目的地IP地址的掩码和/或分组的源端口或目的地端口要被忽略的一个或多个胖流规则配置虚拟路由器30。接下来,虚拟路由器30可以将这种胖流规则存储在M-trie数据结构中并且执行最长前缀匹配以确定哪个转发规则(其可以是胖流规则中的一个)要应用于接收的分组。
图3是示出了根据本文中描述的技术的执行用于虚拟网络的示例虚拟路由器的计算装置的框图。计算装置100可以表示图1至图2的任一个服务器12或者其他装置,诸如,任一个TOR交换机16。
在这个示例中,计算装置100包括耦接计算装置100硬件环境的硬件部件的系统总线142。系统总线142耦接存储器144、网络接口卡(NIC)106A-106B(统称,“NIC 106”)、存储磁盘107、以及具有多个处理核心108A-108J(统称,“处理核心108”)的多核计算环境102。网络接口卡106包括被配置为使用底层物理网络的链路交换分组的接口。多核计算环境102可包括任意数量的处理器以及任意数量的硬件核心,例如从四至数千个。每一个处理核心108各自包括独立的执行单元以执行符合用于该核心的指令集架构的指令。处理核心108可以分别被实现为独立的集成电路(IC)或者可以组合在分别使用单个IC(即,芯片多处理器)实现的一个或多个多核处理器(或“众核”处理器)内。
磁盘107表示计算机可读存储介质,其包括以用于诸如处理器可读指令、数据结构、程序模块或其他数据的存储信息的任何方法或技术实现的易失性和/或非易失性、可移动和/或不可移动介质。计算机可读存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、EEPROM、闪速存储器、CD-ROM、数字多功能光盘(DVD)或其他光存储装置、盒式磁带、磁带、磁盘存储装置或其他磁性存储装置、或者可以用于存储期望的信息并且可以由核心108访问的任何其他介质。
主存储器144包括一个或多个计算机可读存储介质,其可包括诸如各种形式的动态RAM(DRAM)(例如,DDR2/DDR3SDRAM)或静态RAM(SRAM)的随机存取存储器(RAM)、闪速存储器、或任何其他形式的固定或可移动存储介质,其可以用于以指令或数据结构的形式携带或存储期望的程序代码和程序数据并且可以由计算机访问。主存储器144提供由可寻址存储位置组成的物理地址空间。
在一些示例中,存储器144可以将非一致存储器访问(NUMA)架构呈现给多核计算环境102。即,核心108可能不具有与构成存储器144的各种存储介质相等的存储器访问时间。在一些情况下,核心108可以被配置为使用为核心提供最低存储器延迟的存储器144的部分,以减少总的存储器延迟。
在一些情况下,用于计算机可读存储介质的物理地址空间可以在一个或多个核心108(即,共享存储器)之间共享。例如,核心108A、108B可以经由存储器总线(未示出)连接至一个或多个DRAM封装、模块和/或呈现由核心108A、108B可访问的物理地址空间的芯片(也未示出)。尽管该物理地址空间可以将最低的存储器存取时间提供至存储器144的任一部分的核心108A、108B,但是存储器144的至少一些剩余部分可以直接访问核心108A、108B。一个或多个核心108还可以包括L1/L2/L3高速缓存或者它们的组合。用于核心108的各个高速缓存提供用于核心108的任何存储介质的最低延迟的存储器访问。
存储器144、网络接口卡(NIC)106A-106B(统称,“NIC 106”)、存储磁盘107和多核计算环境102为执行虚拟路由器120和一个或多个虚拟机110A-110K(统称,“虚拟机110”)的软件栈提供操作环境。虚拟机110可以表示图2中的任何虚拟机36的示例性情况。计算装置100将由主存储器144且在虚拟存储器的情况下由磁盘107提供的虚拟和/或物理地址空间划分为用于运行用户进程的用户空间111和由用户进程保护和通常不可访问的内核空间112。操作系统内核(在图3中未示出)可以在内核空间中执行,并且例如,可包括Linux、伯克利软件发行(BSD)、另一个Unix变形的内核、或者可以从微软公司购买的Windows服务器操作系统内核。在一些情况下,计算装置100可以执行管理程序以管理虚拟机110(在图3中也未示出)。在图2中示出的是示例管理程序31。示例管理程序包括用于Linux内核的基于内核的虚拟机(KVM)、Xen、可从VMware购买的ESXi、可从微软购买的Windows Hyper-V、以及其他开源和专有的管理程序。在一些示例中,利用诸如FIB 124的路由信息编程的专用硬件可以执行虚拟路由器120。
Eth0 114A和Eth1 114B表示根据软件装置模型的装置并且通过对应的NIC 106提供用于处理用于接收/发送分组的装置驱动器软件小程序(routine)。由NIC 106从用于虚拟网络的底层网络结构接收的分组可包括外部报头以允许物理网络结构将有效载荷或“内部分组”隧道传输至用于一个NIC 106的物理网络地址。外部报头不仅可包括物理网络地址而且可包括虚拟网络标识符,诸如识别一个虚拟网络以及对应的路由实例122的VxLAN标签或多协议标签交换(MPLS)标签。内部分组包括具有目的地网络地址的内部报头,该目的地网络地址符合由虚拟网络标识符识别的虚拟网络的虚拟网络寻址空间。例如,虚拟路由器转发平面128可以由Eth1从NIC 106接收具有外部报头的分组,该外部报头包括在虚拟路由器转发平面128与路由实例122A相关联的VxLAN。该分组可具有内部报头,该内部报头具有作为经由抽头接口146A抽头至路由实例122A的VM 110A的目的地地址的目的地网络地址。
在这个示例中,虚拟路由器120包括内核空间112模块:虚拟路由器转发平面128、以及用户空间111模块:虚拟路由器代理104。虚拟路由器转发平面128执行“转发平面”或者虚拟路由器120的分组转发功能并且虚拟路由器代理104执行虚拟路由器120的“控制平面”功能。虚拟路由器代理104可以表示图2的任何VN代理35的示例实例2323。
虚拟路由器转发平面128包括用于对应的虚拟网络的多个路由实例122A-122C(统称,“路由实例122”)。每一个路由实例122包括转发信息库(FIB)124A-124C(统称,“FIB124”)和流表126A-126C(统称,“流表126”)中对应的一个。尽管示出为分开的数据结构,但是在一些情况下,流表126可以是实现为单个表或其他关联的数据结构,其中,用于各个流表126的条目可由虚拟网络标识符(例如,VRF标识符,诸如VxLAN标签或MPLS标签))识别。FIB 124包括将目的地地址映射至目的地下一跳的查找表。目的地地址可包括层3网络前缀或层2MAC地址。
流表126能够使转发策略应用于流。每一个流表126包括各自与一个或多个流匹配的流表条目,一个或多个流可以遍历虚拟路由器转发平面128并且包括用于匹配流的应用的转发策略。例如,虚拟路由器转发平面128尝试将由路由实例122A处理的分组与流表126A的流表条目中的一个匹配。如果在给定分组中存在匹配的流表条目,则虚拟路由器转发平面128将策略中指定的流行为应用于分组。这可被称为“快速路径”分组处理。根据本公开的技术,流表126可以存储用于匹配流的一个或多个胖流规则。因此,虚拟路由器转发平面128可以执行胖流匹配作为快速路径分组处理的一部分。策略138可以存储一个或多个胖流规则。如果该分组不存在匹配流表,则该分组可以表示用于与在合适的流表126中尚未配置的胖流规则的新流的初始分组,并且虚拟路由器转发平面128可以请求虚拟路由器代理104将流表条目安装在用于新流的流表中,该流表条目指定用于新流的匹配胖流规则,其中,如本文件中其他地方描述的,匹配胖流规则与多个流匹配。流表条目可包括可用于识别与胖流规则匹配的分组的流关键字。这可被称为用于与合适的流表126中的任何现有胖流规则不匹配的流的初始分组的“慢速路径”分组处理,并且这在图3中由慢速路径140表示。
在这个示例中,虚拟路由器代理104可以是由计算装置100执行的用户空间111过程。虚拟路由器代理104包括配置数据134、虚拟路由和转发实例配置136(“VRF 136”)以及策略表138(“策略138”)。虚拟路由器代理104与一个或多个虚拟网络控制器(例如,图1至图2的VNC 22)交换控制信息。控制信息可包括虚拟网络路由、诸如用于安装至配置数据134的路由实例和转发策略的低级配置状态、VRF 136和策略138。虚拟路由器代理104还可以报告分析状态,将转发状态安装至虚拟路由器转发平面128的FIB 124,发现VM 110及其属性。如上所述,虚拟路由器代理104还应用遍历虚拟路由器转发平面128的每个新流的第一(初始)分组的慢速路径分组处理并且将对应的流条目安装至用于新流的流表126以用于虚拟路由器转发平面128对流的随后分组的快速路径处理。
图4是示出了根据本公开的技术的可以使用基于前缀的胖流的示例性系统400的框图。在这个示例中,系统400包括移动装置402、订户网络404、Vrouter托管虚拟网络功能(VNF)406和互联网408。与VNF 406相似的虚拟网络功能可以由例如图1和图2的服务器12的虚拟路由器30执行。
原始流可包括以下:
HTTP(10.1.0.1,8.8.8.8,6,32768,80)
HTTP(10.1.0.2,8.8.8.8,6,10000,80)
HTTP(10.1.0.10,8.8.8.8,6,20000,80)
VNF 406可以利用链路410上的以下胖流规则进行配置:
胖流规则(Src虚拟机接口(VMI))
Proto-TCP,port-0,
AggrSrc 10.1.0.0/16,/16
忽略Dst
VNF 406可以利用链路412上的以下胖流规则进行配置:
胖流规则(Dst VMI)
Proto-TCP,port-0,
AggrDst 10.1.0.0/16,/16
忽略Src
因此,链路410和412上合成的胖流可分别是:
(10.1.0.0,0,6,0,0*)
(0,10.1.0.0,6,0,0*)–逆向
其中,*0意指“任意”。
虚拟机接口还可以是另一类型的虚拟接口,诸如,veth对、VLAN、或者用于vrouter和VNF之间的通信的其他抽头接口。例如,VNF可以使用虚拟机或容器执行。利用这种基于前缀的胖流,根据配置,虚拟网络控制器22可以创建一个用于256个流(/24聚合掩码)的胖流或者一个用于65k个流(/16掩码)的胖流。这种1:256或者1:65k比例对流设置率产生大改善。这些技术提供了为IPv6而不是/128流创建/64流的自然方式。
图5是示出了根据本公开的技术的用于配置胖流的示例性图形用户界面(GUI)420的概念图。GUI 420包括协议字段422、端口字段424、忽略地址字段426、用于前缀聚合源的源子网字段428和源前缀字段430、以及用于前缀聚合目的地的目的地子网字段432和目的地前缀字段434。因此,GUI 420允许管理员(例如,管理员24)使用源前缀字段430和目的地前缀字段434分别与掩码一起配置源和目的地前缀并且聚合前缀长度。
在这个示例中,源前缀字段430允许诸如管理员的用户指定要应用于源IP地址的前缀掩码的长度(例如,位数)。相似字段可以设置为掩蔽目的地IP地址。当确定时可以使用前缀掩码。
图2的虚拟网络代理35可以被配置为处理用于在虚拟机和/或虚拟网络水平处添加、更新和/或删除的配置,并且相应地编程对应的一个虚拟路由器30。虚拟网络代理35还可以保持胖流规则的对应数据库(例如,基于C++集合)。虚拟网络代理35还可以处理每个流的第一分组并且根据规则匹配创建胖流。
图2的虚拟路由器30可以处理用于在虚拟机水平添加、更新和/或删除的新配置。虚拟路由器30还可以在用于胖流规则的基于快速前缀的查找和搜索的M-Trie数据结构中保持每个虚拟接口(VIF)的胖流规则的数据库。因此,M-Trie数据结构可以存储除下一跳之外的基于前缀的胖流规则。VIF还可以用于显示新的胖流规则。
图6是示出了根据本公开的技术的用于虚拟网络代理的示例性数据结构设计450的框图。数据结构设计450包括VIF接口452和胖流规则454。胖流规则454可以存储为内部的C++集合。在一些示例中,胖流规则454可包括存储在还以排序顺序保持规则的红黑树中的元素。在流创建期间,一个VN代理35可以搜索胖流规则454以看看是否存在与分组的源/目的地IP地址、源/目的地端口和协议字段的匹配。如果存在与任何胖流规则454的匹配,则一个VN代理35创建基于前缀的胖流。
图7是示出了根据本公开的技术的用于虚拟路由器的示例性数据结构设计460的框图。数据结构设计460包括VIF接口462、非前缀规则464、包括例如TCP协议466A、UDP协议466B、SCTP协议466C和ICMP协议466D的协议元素466、以及包括端口数位图468A和端口数位图468B的端口数位图468。非前缀规则464通常定义没有配置的源或目的地前缀聚合的规则。在这个示例中,端口数位图468A是用于端口0至511并且端口数位图468B是用于端口512至1023。每一个端口位图468A、468B包含每个端口两个位以指示“忽略源”或“忽略目的地”配置。
图8是示出了根据本公开的技术的用于虚拟路由器的示例性数据结构设计480的框图。数据结构设计480包括VIF接口482、VX_src/dst_prefix_MTrie 484A、胖流规则列表484B、胖流配置规则列表484C、胖流规则1 486A、胖流规则2 486B、包括TCP协议488A、UDP协议488B、SCTP协议488C和ICMP协议488D的协议488、端口X 490、规则类型的聚合掩码Dst_prefix_mtrie 492、以及Dst聚合掩码494。虚拟路由器30可以根据源或目的地前缀聚合使用用于胖流规则的数据结构设计480。
虚拟路由器30可以可替换地被配置为将胖流规则存储在阵列中并且使用散列表中的二分搜索或者首先基于协议和端口数并且然后基于存储在M-trie中的前缀的I表。
图9是示出了根据本公开的技术的用于使用基于前缀的胖流处理接收到的分组的示例性过程的流程图。最初地,虚拟路由器30中的一个,例如虚拟路由器30A接收分组(500)。虚拟路由器30A然后尝试将分组与对应的VIF接口上的胖流规则匹配(502)。如果存在规则匹配(504的“是”分支),则虚拟路由器30A使用胖流规则构造流关键字(506)。如果不存在匹配(504的“否”分支),则虚拟路由器30A使用常规的6元组构造流关键字(508)。
在两种情况下,虚拟路由器30进行至使用流关键字执行流查找(510)。虚拟路由器30然后确定该查找是否成功(512)。如果该查找成功(512的“是”分支),则虚拟路由器30根据对应于流关键字的对应流查找转发或丢弃分组(516)。如果该查找不成功(512的“否”分支),则虚拟路由器30将分组发送至用于策略处理的对应的一个VN代理35(514)。
图10是示出了控制器装置和网络装置可以通过其执行本公开的技术的示例方法的流程图。最初地,VNC 22(例如)可以确定两个或更多个流被聚合为一个胖流(550)。每一个流可具有相应的源IP地址、目的地IP地址、源端口、目的地端口和协议。VNC 22可以定义胖流规则以形成包括流的胖流(552)。例如,VNC 22可以定义胖流规则以指定要应用于源互联网协议(IP)地址和/或应用于目的地IP地址的掩码和/或源端口或目的地端口要被忽略。VNC 22然后可以利用胖流规则配置网络装置,诸如,虚拟路由器30(554)。
例如,如图8所示,虚拟路由器30可以从VNC 22接收胖流规则(556)并且将胖流规则存储在M-trie数据结构中(558)。虚拟路由器30然后可以接收分组(560)。虚拟路由器30可以执行与包括胖流规则的分组和转发规则的报头的数据的最长前缀匹配(562)。响应于确定最长前缀匹配指示胖流规则,虚拟路由器30可以使用胖流规则转发分组(564)。具体地,虚拟路由器30可以例如通过将在胖流规则中指定的掩码应用于分组的IP地址和/或通过忽视分组的源或目的地端口来确定聚合为形成流的各个流中的任一个的分组使用最长前缀匹配与胖流规则匹配。
以此方式,图10的方法表示以下方法的示例,该方法包括:由包括电路的虚拟网络控制器装置确定由第一网络元组定义的第一流、包括第一源互联网协议(IP)地址、第一目的地IP地址、第一源端口、第一目的地端口和第一协议的第一网络元组;由虚拟网络控制器装置确定由第二网络元组定义的第二流、包括第二源IP地址、第二目的地IP地址、第二源端口、第二目的地端口和第二协议的第二网络元组;由虚拟网络控制器装置定义胖流规则以形成包括第一流和第二流的分组的胖流,其中,胖流规则指定以下项中的至少一个:要应用于第一源IP地址和第二源IP地址或者应用于第一目的地IP地址和第二目的地IP地址的掩码;和第一源端口和第二源端口或者第一目的地端口和第二目的地端口要被忽略;并且由虚拟网络控制器装置利用胖流规则配置服务器装置的虚拟路由器。
同样地,图10的方法表示以下方法的示例,该方法包括:由网络装置接收包括第一源互联网协议(IP)地址、第一目的地IP地址、第一源端口、第一目的地端口和第一协议的第一分组;由网络装置基于胖流规则确定用于第一分组的胖流;由网络装置转发第一分组作为胖流的一部分;由网络装置接收包括第二源互联网协议(IP)地址、第二目的地IP地址、第二源端口、第二目的地端口和第二协议的第二分组;由网络装置基于胖流规则确定用于第二分组的胖流;并且由网络装置转发第二分组作为胖流的一部分,其中,胖流规则指定以下项中的至少一个:要应用于第一源IP地址和第二源IP地址或者应用于第一目的地IP地址和第二目的地IP地址的掩码;和第一源端口和第二源端口或者第一目的地端口和第二目的地端口要被忽略,并且其中,第一源IP地址和第二源IP地址是不同的和/或第一目的地IP地址和第二目的地IP地址是不同的,或者第一源端口和第二源端口是不同的和/或第一目的地端口和第二目的地端口是不同的。
本文中描述的包括在前述任一部分中的技术可以在硬件、软件、固件或其任何组合中实现。描述为模块、单元或部件的各种特征可以一起在集成逻辑装置中实现,或者单独地实现为离散但可互操作的逻辑装置或其他硬件装置。在一些情况下,电子电路的各种特征可以实现为一个或多个集成电路装置,诸如,集成电路芯片或芯片组。
如果在硬件中实现,则本公开可针对诸如处理器或集成电路装置(诸如,集成电路芯片或芯片组)的设备。可替换地或者此外,如果在软件或者固件中实现,该技术可至少部分地通过包括指令的计算机可读数据存储介质实现,当执行时,该指令使得处理器执行以上描述的一个或多个方法。例如,计算机可读数据存储介质可以存储这种指令以由处理器执行。
计算机可读介质可以形成可包括封装材料的计算机程序产品的一部分。计算机可读介质可包括计算机数据存储介质,诸如,随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪速存储器、磁或光数据存储介质等。在一些示例中,制造品可包括一个或多个计算机可读存储介质。
在一些示例中,计算机可读存储介质可包括非暂时性介质。术语“非暂时性”可以指示存储介质没有体现在载波或传播信号中。在某些示例中,非暂时性存储介质可存储可以随时间改变的数据(例如,在RAM或高速缓存中)。
代码或指令可以是由包括一个或多个处理器的处理电路执行的软件和/或固件,诸如,一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、或其他等效的集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”可以指任何上述结构或适用于实现本文中所描述的技术的任何其他结构。此外,在一些方面中,可以在软件模块或硬件模块内提供本公开中所描述的功能。
已经描述了各种实施方式。这些和其他实施方式在所附示例的范围内。

Claims (20)

1.一种使用基于前缀的胖流的方法,包括:
由虚拟网络控制器装置定义与服务器装置的虚拟路由器的虚拟接口相关联的胖流规则以形成包括经由所述虚拟接口传输的第一流和第二流的分组的胖流,所述第二流与所述第一流不同,所述第一流具有不同于所述虚拟网络控制器装置的第一网络目的地,并且所述第二流具有不同于所述虚拟网络控制器装置的第二网络目的地,其中,所述胖流规则指定以下项中的至少一个:
当形成所述胖流时要应用于所述第一流和所述第二流的分组的源互联网协议(IP)地址或应用于所述第一流和所述第二流的所述分组的目的地IP地址的掩码;和
当形成所述胖流时所述第一流和所述第二流的所述分组的源端口或目的地端口要被忽略;并且
由所述虚拟网络控制器装置利用所述胖流规则配置所述服务器装置的所述虚拟路由器以使所述虚拟路由器形成包括所述第一流和所述第二流的所述分组的所述胖流,并且将所述第一流和所述第二流的所述分组转发到沿着朝向所述第一网络目的地的第一路由和朝向所述第二网络目的地的第二路由的公共下一跳。
2.根据权利要求1所述的方法,还包括由所述虚拟网络控制器装置接收指定用于所述掩码的长度的输入参数,其中,定义所述胖流规则包括定义所述胖流规则以指定用于所述掩码的所述长度。
3.根据权利要求2所述的方法,其中,所述输入参数指定所述长度为16位和24位中的一个。
4.根据权利要求1至3中任一项所述的方法,其中,配置所述虚拟路由器包括将指令发送至所述虚拟路由器以使得所述虚拟路由器将所述胖流规则存储在用于所述虚拟路由器的虚拟接口的数据库中的M-trie数据结构中。
5.根据权利要求4所述的方法,其中,发送所述指令包括将指令发送至所述虚拟路由器以使得所述虚拟路由器:
存储定义用于所述胖流规则的一个或多个协议的第一节点;
存储定义用于所述胖流规则的端口的第二节点;并且
存储定义用于聚合第一源IP地址和第二源IP地址的源聚合掩码和用于聚合第一目的地IP地址和第二目的地IP地址的目的地聚合掩码中的一个的第三节点。
6.一种使用基于前缀的胖流的方法,包括:
由网络装置接收包括第一源互联网协议(IP)地址、第一目的地IP地址、第一源端口、第一目的地端口和第一协议的第一分组,所述第一目的地IP地址定义不同于网络控制器装置的第一网络目的地;
由所述网络装置基于由所述网络控制器装置定义的胖流规则确定用于所述第一分组的胖流,所述胖流与所述网络装置的虚拟接口相关联;
由所述网络装置将作为所述胖流的一部分的所述第一分组转发到沿着朝向所述第一网络目的地的第一路由的下一跳;
由所述网络装置接收包括第二源互联网协议(IP)地址、第二目的地IP地址、第二源端口、第二目的地端口和第二协议的第二分组,所述第二目的地IP地址定义不同于所述网络控制器装置的第二网络目的地;
由所述网络装置基于所述胖流规则确定用于所述第二分组的所述胖流;并且
由所述网络装置将作为所述胖流的一部分的所述第二分组转发到所述下一跳,所述下一跳也沿着朝向所述第二网络目的地的第二路由,
其中,所述胖流规则指定以下项中的至少一个:
要应用于所述第一源IP地址和所述第二源IP地址或者应用于所述第一目的地IP地址和所述第二目的地IP地址的掩码;和
所述第一源端口和所述第二源端口或者所述第一目的地端口和所述第二目的地端口要被忽略,并且
其中,所述第一源IP地址和所述第二源IP地址是不同的和/或所述第一目的地IP地址和所述第二目的地IP地址是不同的,或者所述第一源端口和所述第二源端口是不同的和/或所述第一目的地端口和所述第二目的地端口是不同的。
7.根据权利要求6所述的方法,其中,所述胖流规则指定用于所述掩码的长度。
8.根据权利要求7所述的方法,其中,所述长度是16位和24位中的一个。
9.根据权利要求6所述的方法,还包括将所述胖流规则存储在用于所述网络装置的虚拟网络接口的数据库中的M-trie数据结构中。
10.根据权利要求9所述的方法,其中,存储所述胖流规则包括:
存储定义用于所述胖流规则的一个或多个协议的第一节点;
存储定义用于所述胖流规则的端口的第二节点;并且
存储定义用于聚合第一源IP地址和第二源IP地址的源聚合掩码和用于聚合第一目的地IP地址和第二目的地IP地址的目的地聚合掩码中的一个的第三节点。
11.根据权利要求6至10中任一项所述的方法,还包括从包括所述网络控制器装置的虚拟网络控制器装置接收所述胖流规则。
12.根据权利要求6至10中任一项所述的方法,其中,确定用于所述第一分组和用于所述第二分组的所述胖流包括使用所述胖流规则确定用于所述第一分组和所述第二分组的最长前缀匹配。
13.一种网络装置,包括:
一个或多个网络接口,被配置为经由网络发送和接收数据;
存储器,被配置为存储定义与所述网络装置的虚拟接口相关联的胖流规则的数据,其中,所述胖流规则指定以下项中的至少一个:
要应用于源互联网协议(IP)地址或应用于目的地IP地址的掩码;和
源端口或目的地端口要被忽略;以及
一个或多个处理器,在电路中实现并且被配置为:
接收包括第一源互联网协议(IP)地址、第一目的地IP地址、第一源端口、第一目的地端口和第一协议的第一分组,所述第一目的地IP地址定义不同于网络控制器装置的第一网络目的地;
基于由所述网络控制器装置定义的所述胖流规则确定用于所述第一分组的胖流;
将作为所述胖流的一部分的所述第一分组转发到沿着朝向所述第一网络目的地的第一路由的下一跳;
接收包括第二源互联网协议(IP)地址、第二目的地IP地址、第二源端口、第二目的地端口和第二协议的第二分组,所述第二目的地IP地址定义不同于所述网络控制器装置的第二网络目的地;
基于所述胖流规则确定用于所述第二分组的所述胖流;并且
将作为所述胖流的一部分的所述第二分组转发到所述下一跳,所述下一跳也沿着朝向所述第二网络目的地的第二路由,
其中,所述第一源IP地址和所述第二源IP地址是不同的和/或所述第一目的地IP地址和所述第二目的地IP地址是不同的,或者所述第一源端口和所述第二源端口是不同的和/或所述第一目的地端口和所述第二目的地端口是不同的。
14.根据权利要求13所述的网络装置,其中,所述胖流规则指定用于所述掩码的长度。
15.根据权利要求14所述的网络装置,其中,所述长度是16位和24位中的一个。
16.根据权利要求13所述的网络装置,其中,所述一个或多个处理器还被配置为将所述胖流规则存储在用于所述网络装置的虚拟网络接口的数据库中的M-trie数据结构中,所述数据库被存储在所述存储器中。
17.根据权利要求16所述的网络装置,其中,为了存储所述胖流规则,所述一个或多个处理器被配置为:
存储定义用于所述胖流规则的一个或多个协议的第一节点;
存储定义用于所述胖流规则的端口的第二节点;并且
存储定义用于聚合所述第一源IP地址和所述第二源IP地址的源聚合掩码和用于聚合所述第一目的地IP地址和所述第二目的地IP地址的目的地聚合掩码中的一个的第三节点。
18.根据权利要求13至17中任一项所述的网络装置,其中,所述一个或多个处理器还被配置为从虚拟网络控制器装置接收所述胖流规则。
19.根据权利要求13至17中任一项所述的网络装置,其中,所述一个或多个处理器被配置为使用所述胖流规则确定用于所述第一分组和所述第二分组的最长前缀匹配以确定所述胖流。
20.根据权利要求13至17中任一项所述的网络装置,其中,所述网络装置包括路由器、防火墙和负载均衡装置中的至少一个。
CN201910909506.7A 2019-04-29 2019-09-25 基于前缀的胖流 Active CN111865806B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
IN201941016940 2019-04-29
IN201941016940 2019-04-29
US16/457,246 US11165703B2 (en) 2019-04-29 2019-06-28 Prefix-based fat flows
US16/457,246 2019-06-28

Publications (2)

Publication Number Publication Date
CN111865806A CN111865806A (zh) 2020-10-30
CN111865806B true CN111865806B (zh) 2022-09-20

Family

ID=72917397

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910909506.7A Active CN111865806B (zh) 2019-04-29 2019-09-25 基于前缀的胖流

Country Status (2)

Country Link
US (1) US11165703B2 (zh)
CN (1) CN111865806B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10904035B2 (en) * 2019-06-03 2021-01-26 Arista Networks, Inc. Method and system for processing encapsulated wireless traffic
US11962504B2 (en) * 2019-07-30 2024-04-16 VMware LLC Identification of route-map clauses using prefix trees
US11038793B2 (en) 2019-10-15 2021-06-15 Cisco Technology, Inc. Service assurance of ECMP using virtual network function hashing algorithm
US11444883B2 (en) * 2020-01-17 2022-09-13 Vmware, Inc. Signature based management of packets in a software defined networking environment
US11349866B2 (en) * 2020-03-31 2022-05-31 Fortinet, Inc. Hardware acceleration device for denial-of-service attack identification and mitigation

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6826147B1 (en) * 2000-07-25 2004-11-30 Nortel Networks Limited Method and apparatus for aggregate flow control in a differentiated services network
US7149216B1 (en) 2000-09-05 2006-12-12 Cisco Technology, Inc. M-trie based packet processing
US7193996B2 (en) * 2002-02-28 2007-03-20 Acme Packet, Inc. System and method for determining a source of an internet protocol packet
US7184437B1 (en) 2002-07-17 2007-02-27 Juniper Networks, Inc. Scalable route resolution
US8199651B1 (en) * 2009-03-16 2012-06-12 Audible Magic Corporation Method and system for modifying communication flows at a port level
US9064216B2 (en) 2012-06-06 2015-06-23 Juniper Networks, Inc. Identifying likely faulty components in a distributed system
US9356866B1 (en) 2014-01-10 2016-05-31 Juniper Networks, Inc. Receive packet steering for virtual networks
EP3122012B1 (en) * 2014-05-16 2019-08-14 Huawei Technologies Co., Ltd. Data processing method and apparatus for openflow network
CN105871741B (zh) * 2015-01-23 2018-12-25 阿里巴巴集团控股有限公司 一种报文分流方法及装置
US9762485B2 (en) * 2015-08-24 2017-09-12 128 Technology, Inc. Network packet flow controller with extended session management
US10135727B2 (en) * 2016-04-29 2018-11-20 Nicira, Inc. Address grouping for distributed service rules
US10237090B2 (en) * 2016-10-28 2019-03-19 Avago Technologies International Sales Pte. Limited Rule-based network identifier mapping
US10243840B2 (en) * 2017-03-01 2019-03-26 Juniper Networks, Inc. Network interface card switching for virtual networks
CN109547316A (zh) * 2018-12-29 2019-03-29 瑞斯康达科技发展股份有限公司 Vxlan报文穿越nat设备的方法、系统、存储介质

Also Published As

Publication number Publication date
US11165703B2 (en) 2021-11-02
US20200344166A1 (en) 2020-10-29
CN111865806A (zh) 2020-10-30

Similar Documents

Publication Publication Date Title
US9942148B1 (en) Tunneled packet aggregation for virtual networks
CN110838975B (zh) 虚拟网络中租户工作负载的安全转发
US11323487B1 (en) Scalable policy management for virtual networks
CN109818918B (zh) 基于软件定义网络加密策略的策略驱动的工作负载启动
CN111355666B (zh) 促进针对计算机网络中的服务链的流对称的方法和网络控制器
US10382331B1 (en) Packet segmentation offload for virtual networks
CN111865806B (zh) 基于前缀的胖流
US11418546B1 (en) Scalable port range management for security policies
US10715419B1 (en) Software defined networking between virtualized entities of a data center and external entities
CN110838992B (zh) 在不同网络堆栈中的内核模块间传送分组的系统和方法
US11528213B2 (en) Sharing routes using an in-memory data store in a distributed network system
US11336570B1 (en) Layer three multi-homing for virtual networks
EP4141666A1 (en) Dual user space-kernel space datapaths for packet processing operations
US20220021613A1 (en) Generating route distinguishers for virtual private network addresses based on physical hardware addresses
Ranjbar et al. Domain isolation in a multi-tenant software-defined network
EP3734916A1 (en) Prefix-based fat flows
US11929987B1 (en) Preserving packet flow information across bump-in-the-wire firewalls
US11533386B2 (en) Virtual tunnel endpoint (VTEP) learning based on transport protocol information
US12003429B2 (en) Dual user space-kernel space datapaths for packet processing operations
US20220385570A1 (en) Policy enforcement for bare metal servers by top of rack switches

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