CN112262553A - 在软件定义网络交换机的分组处理流水线中跟踪分组的装置和方法 - Google Patents
在软件定义网络交换机的分组处理流水线中跟踪分组的装置和方法 Download PDFInfo
- Publication number
- CN112262553A CN112262553A CN201880094536.0A CN201880094536A CN112262553A CN 112262553 A CN112262553 A CN 112262553A CN 201880094536 A CN201880094536 A CN 201880094536A CN 112262553 A CN112262553 A CN 112262553A
- Authority
- CN
- China
- Prior art keywords
- packet
- trace
- indicator
- network
- flow table
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 91
- 238000000034 method Methods 0.000 title claims abstract description 63
- 230000009471 action Effects 0.000 claims description 24
- 230000004044 response Effects 0.000 claims description 23
- 238000003860 storage Methods 0.000 claims description 12
- 230000006870 function Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 17
- 230000006855 networking Effects 0.000 description 16
- 238000004891 communication Methods 0.000 description 14
- 238000013459 approach Methods 0.000 description 13
- 230000015654 memory Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 10
- 230000005641 tunneling Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000001276 controlling effect Effects 0.000 description 4
- 230000000875 corresponding effect Effects 0.000 description 4
- 238000013024 troubleshooting Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000945 filler Substances 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- CCUGKUREKNKRFL-UHFFFAOYSA-N 1,3-dibromo-2-(3-bromophenyl)benzene Chemical compound BrC1=CC=CC(C=2C(=CC=CC=2Br)Br)=C1 CCUGKUREKNKRFL-UHFFFAOYSA-N 0.000 description 1
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000003750 conditioning effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/56—Routing software
- H04L45/566—Routing instructions carried by the data packet, e.g. active networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/38—Flow based routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/42—Centralised routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3063—Pipelined operation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种由软件定义网络SDN网络中的交换机实现的在所述交换机的分组处理流水线中跟踪分组的方法。所述方法包括:创建所接收分组的要用作跟踪分组的副本。所述方法还包括:在所述跟踪分组经过的一个或多个后续的流表的每个流表处,将该流表的标识符附加到所记录的所述跟踪分组的路由,以及将所述跟踪分组重新提交到该流表以被处理而没有分组跟踪。所述方法还包括:在出口表处,将所述跟踪分组连同所记录的所述跟踪分组的路由发送到控制器。
Description
技术领域
本发明的实施例涉及软件定义网络(SDN)领域,并且更具体地,涉及在SDN交换机的分组处理流水线中跟踪分组。
背景技术
软件定义网络(SDN)是一种计算机联网的方法,该方法采用其中转发(数据)平面与控制平面解耦的分离架构网络。使用分离架构网络通过将网络的智能转移到监督交换机的一个或多个SND控制器中而简化了实现转发平面的网络设备(例如交换机)。SDN通过提供可编程的网络基础设施而促进了网络层处的快速和开放式创新。SDN网络通常包括彼此互连的多个交换机以及控制交换机的转发行为的一个或多个SDN控制器。
OpenFlow是一种南向通信协议,其使SDN网络中的SDN控制器和交换机能够彼此传送控制平面信息。OpenFlow交换机包括分组处理流水线,该流水线包括一个或多个流表。每个流表包括一个或多个流条目,其中每个流条目指定分组匹配标准和一组指令,当传入分组与分组匹配标准匹配时执行该组指令。该组指令可以指示交换机对分组执行各种操作,包括但不限于将分组转发到给定端口、修改分组报头中的特定位、封装分组、丢弃分组、以及将分组定向到另一个流表。
OpenFlow交换机的分组处理流水线能够变得极其复杂。例如,SDN控制器可以对交换机的分组处理流水线进行编程以包括多个流表和这些流表内的多个流条目。流条目可以包括将分组定向到分组处理流水线中的其他流表的指令。对于如此复杂的分组处理流水线,当分组未经过它的预期分组处理路径时,故障排除可能变得极其困难。
分组跟踪技术能够被用于帮助对未经过预期分组处理路径的分组进行故障排除。现有的分组跟踪技术通常需要交换机在分组处理流水线中分组经过的每个流表处将正在被跟踪的分组发送到控制器。这消耗了宝贵的控制信道带宽并且还需要控制器核对它接收的分组,以确定哪些分组是同一流的一部分并跟踪所经过的路径。对于控制器而言,这会变得很复杂,尤其是在正在被跟踪的分组通过分组处理流水线被修改的情况下。
发明内容
一种由软件定义网络SDN网络中的交换机实现的在所述交换机的分组处理流水线中跟踪分组的方法。所述方法包括:接收分组;响应于在所述分组处理流水线中的跟踪表处确定所述分组与跟踪标准相匹配,创建所述分组的要用作跟踪分组的副本,设置所述跟踪分组的第一跟踪指示符,设置所述跟踪分组的第二跟踪指示符,以及将所述跟踪分组定向到后续的流表;在所述分组处理流水线中所述跟踪分组经过的一个或多个后续的流表中的每个流表处,响应于确定所述跟踪分组的所述第一跟踪指示符被设置,将该流表的标识符附加到所记录的所述跟踪分组的路由,清除所述跟踪分组的所述第一跟踪指示符,将所述跟踪分组重新提交到该流表,以及在将所述跟踪分组定向到后续的流表之前,将所述跟踪分组的所述第一跟踪指示符设置为所述跟踪分组的所述第二跟踪指示符的值;以及响应于在所述分组处理流水线中的出口流表处确定所述跟踪分组的所述第一跟踪指示符被设置,将所述跟踪分组连同所述所记录的所述跟踪分组的路由发送到控制器。
一种网络设备,被配置为用作在软件定义网络SDN网络中的交换机以在所述交换机的分组处理流水线中跟踪分组。所述网络设备包括一组一个或多个处理器以及其中有存储跟踪组件的非暂时性机器可读存储介质。所述跟踪组件在由所述一组一个或多个处理器执行时使得所述交换机:接收分组;响应于在所述分组处理流水线中的跟踪表处确定所述分组与跟踪标准相匹配,创建所述分组的要用作跟踪分组的副本,设置所述跟踪分组的第一跟踪指示符,设置所述跟踪分组的第二跟踪指示符,以及将所述跟踪分组定向到后续的流表;在所述分组处理流水线中所述跟踪分组经过的一个或多个后续的流表中的每个流表处,响应于确定所述跟踪分组的所述第一跟踪指示符被设置,将该流表的标识符附加到所记录的所述跟踪分组的路由,清除所述跟踪分组的所述第一跟踪指示符,将所述跟踪分组重新提交到该流表,以及在将所述跟踪分组定向到后续的流表之前,将所述跟踪分组的所述第一跟踪指示符设置为所述跟踪分组的所述第二跟踪指示符的值;以及响应于在所述分组处理流水线中的出口流表处确定所述跟踪分组的所述第一跟踪指示符被设置,将所述跟踪分组连同所述所记录的所述跟踪分组的路由发送到控制器。
一种非暂时性机器可读介质,其中存储有计算机代码,所述计算机代码在由在软件定义网络SDN网络中用作交换机的网络设备的一组一个或多个处理器执行时,使得所述交换机执行用于在所述交换机的分组处理流水线中跟踪分组的操作。所述操作包括:接收分组;响应于在所述分组处理流水线中的跟踪表处确定所述分组与跟踪标准相匹配,创建所述分组的要用作跟踪分组的副本,设置所述跟踪分组的第一跟踪指示符,设置所述跟踪分组的第二跟踪指示符,以及将所述跟踪分组定向到后续的流表;在所述分组处理流水线中所述跟踪分组经过的一个或多个后续的流表中的每个流表处,响应于确定所述跟踪分组的所述第一跟踪指示符被设置,将该流表的标识符附加到所记录的所述跟踪分组的路由,清除所述跟踪分组的所述第一跟踪指示符,将所述跟踪分组重新提交到该流表,以及在将所述跟踪分组定向到后续的流表之前,将所述跟踪分组的所述第一跟踪指示符设置为所述跟踪分组的所述第二跟踪指示符的值;以及响应于在所述分组处理流水线中的出口流表处确定所述跟踪分组的所述第一跟踪指示符被设置,将所述跟踪分组连同所述所记录的所述跟踪分组的路由发送到控制器。
附图说明
通过参考以下说明书和用于例示本发明实施例的附图,可以最好地理解本发明。在附图中:
图1是示出根据一些实施例的用于在SDN交换机的分组处理流水线中跟踪分组的操作的图;
图2是示出根据一些实施例的跟踪分组经过的示例性路由和得到的所记录的路由的图;
图3A是示出根据一些实施例的跟踪分组经过的示例性路由和使用第一组记录方法得到的所记录的路由的图;
图3B是示出根据一些实施例的跟踪分组经过的示例性路由和使用第二组记录方法得到的所记录的路由的图;
图4是示出根据一些实施例的用于在SDN交换机的分组处理流水线中跟踪被丢弃分组的操作的图;
图5是根据一些实施例的用于在SDN交换机的分组处理流水线中跟踪分组的过程的流程图;
图6A示出了根据一些实施例的示例性网络内的网络设备(ND)之间的连接性以及ND的三个示例性实现;
图6B示出了根据一些实施例的实现专用网络设备的示例性方式;
图6C示出了根据一些实施例的在其中可以耦接虚拟网元(VNE)的各种示例性方式;
图6D示出了根据一些实施例的在每个ND上具有单个网元(NE)的网络,并且在该直接方法内,将传统的分布式方法(通常由传统路由器使用)与用于维护可达性和转发信息(也称为网络控制)的集中式方法进行了对比;
图6E示出了根据一些实施例的其中每个ND都实现单个NE但是集中式控制平面已经将不同ND中的多个NE抽象成(表示)虚拟网络之一中的单个NE的简单情况;
图6F示出了根据一些实施例的其中多个VNE在不同ND上被实现并相互耦接并且其中集中式控制平面已将这些多个VNE抽象化以使得它们在虚拟网络之一中表现为单个VNE的情况;
图7示出了根据一些实施例的具有集中式控制平面(CCP)软件750的通用控制平面设备。
具体实施方式
以下说明描述了用于在软件定义网络(SDN)交换机的分组处理流水线中跟踪分组的方法和装置。在下面的说明书中,阐述了许多特定的细节(例如逻辑实现、操作码、指定操作数的手段、资源分区/共享/复制实现、系统组件的类型和相互关系以及逻辑分区/集成选择)以提供对本发明的更透彻理解。然而,本领域的技术人员将理解,可以在没有这种具体细节的情况下实践本发明。在其他情况下,未详细示出控制结构、门级电路和完整的软件指令序列以免模糊本发明。本领域普通技术人员借助所包括的说明书将能够实现适当的功能而无需过度的实验。
在说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指示所描述的实施例可以包括特定的特征、结构或特性,但是不是每个实施例都一定包括该特定的特征、结构或特性。而且,这样的短语不一定指代同一实施例。此外,当结合实施例描述特定的特征、结构或特性时,可以认为结合其他实施例(无论是否明确描述)实现这样的特征、结构或特性是本领域技术人员公知的。
本文可以使用带有虚线边框(例如大虚线、小虚线、点划线和点)的方括号内的文本和块来示出向实施例添加附加特征的可选操作。然而,这种标示不应被认为意味着这些是唯一的选项或可选的操作,和/或在特定实施例中,带有实线边框的块不是可选的。
在下面的说明书和权利要求书中,可以使用术语“耦接”和“连接”及其派生词。应该理解的是,这些术语并不旨在彼此等同。“耦接”用于指示两个或多个元件可以相互协作或交互,这两个或多个元件可以或可以不直接物理或电气接触。“连接”用于指示在彼此耦接的两个或多个元件之间建立通信。
电子设备使用诸如机器可读存储介质(例如磁盘、光盘、固态驱动器、只读存储器(ROM)、闪存设备、相变存储器)和机器可读传输介质(也称为载波)(例如电、光、无线电、声音或其他形式的传播信号,例如载波、红外信号)的机器可读介质(也称为计算机可读介质)存储和传输(在内部和/或通过网络与其他电子设备)代码(其由软件指令组成并且有时称为计算机程序代码或计算机程序)和/或数据。因此,电子设备(例如计算机)包括硬件和软件,例如耦接到一个或多个机器可读存储介质以存储代码和/或存储数据的一组一个或多个处理器(例如,其中,处理器是微处理器、控制器、微控制器、中央处理单元、数字信号处理器、专用集成电路、现场可编程门阵列、其他电子电路、一个或多个以上的组合),所述代码用于在该组处理器上执行。例如,电子设备可以包括包含代码的非易失性存储器,因为即使当电子设备被关闭(当电源被切断)时,该非易失性存储器也可以保持代码/数据,并且当电子设备被开启时,该电子设备的处理器要执行的那部分代码通常从较慢的非易失性存储器复制到该电子设备的易失性存储器(例如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))中。典型的电子设备还包括一组一个或多个物理网络接口(NI)以建立与其他电子设备的网络连接(以使用传播信号来发送和/或接收代码和/或数据)。例如,该组物理NI(或该组物理NI与执行代码的该组处理器相结合)可以执行任何格式化、编码或转换,以允许电子设备在有线和/或无线连接上发送和接收数据。在一些实施例中,物理NI可以包括能够在无线连接上从其他电子设备接收数据和/或经由无线连接向其他设备发送数据的无线电电路。该无线电电路可以包括适合于射频通信的发射机、接收机和/或收发机。无线电电路可以将数字数据转换为具有适当参数(例如频率、定时、信道、带宽等)的无线电信号。然后可以经由天线将无线电信号发送到适当的接收者。在一些实施例中,该组物理NI可以包括网络接口控制器(NIC)(也称为网络接口卡)、网络适配器或局域网(LAN)适配器。NIC可以有助于将电子设备连接到其他电子设备,从而允许它们通过将电缆插入连接到NIC的物理端口来经由电线进行通信。可以使用软件、固件和/或硬件的不同组合来实现实施例的一个或多个部分。
网络设备(ND)是通信地互连网络上的其他电子设备(例如其他网络设备、最终用户设备)的电子设备。一些网络设备是提供对多种联网功能(例如路由、桥接、交换、第2层聚合、会话边界控制、服务质量和/或订户管理)的支持和/或提供对多个应用服务(例如数据、语音和视频)的支持的“多种服务网络设备”。
如上所述,SDN交换机中的分组处理流水线正在变得越来越复杂。因此,当分组未经过它的预期分组处理路径时,故障排除可能变得极其困难。分组跟踪技术能够被用于帮助对未经过预期分组处理路径的分组进行故障排除。现有的分组跟踪技术通常需要交换机在分组处理流水线中分组经过的每个流表处将正在被跟踪的分组发送到控制器。这消耗了宝贵的控制信道带宽并且还需要控制器核对它接收的分组,以确定哪些分组是同一流的一部分并跟踪所经过的路径。对于控制器而言,这会变得很复杂,尤其是在正在被跟踪的分组通过分组处理流水线被修改的情况下。
本文公开的实施例通过以下方式对现有的分组跟踪技术进行改进:仅向每个交换机的控制器发送单个分组连同该分组在分组处理流水线中经过的完整路由的指示(例如,该分组经过的流表和组),而不是如现有的分组跟踪技术中所做的那样,在分组在分组处理流水线中经过的每个流表处将分组发送到控制器。这节省控制信道带宽并提供更有效/优化的分组跟踪。在下文中进一步描述和要求保护各种实施例。
图1是示出根据一些实施例的用于在SDN交换机的分组处理流水线中跟踪分组的操作的图。该图示出了SDN网络140,SDN网络140包括SDN控制器100(被简称为控制器100)和SDN交换机110(被简称为交换机110)。控制器100以通信方式耦接到交换机110并且负责管理交换机110。例如,控制器100可以使用南向协议(例如OpenFlow)对交换机110的分组处理流水线120进行编程以控制交换机110的转发行为,以及实现本文描述的分组跟踪功能。
交换机110的分组处理流水线120可以包括一个或多个流表。每个流表可以包括一个或多个流条目,其中每个流条目包括分组匹配标准和一组指令。当传入分组与流条目的分组匹配标准相匹配时,该流条目的对应一组指令被执行。如果分组与流条目的分组匹配标准相匹配,则该分组被称为与该流条目相匹配。流条目的一组指令可以包括使交换机对匹配分组执行各种操作的指令,这些操作包括但不限于将分组转发到给定端口、修改分组报头中的某些位、封装分组、丢弃分组以及将分组定向到另一个流表。
出于示例目的,SDN网络140被示为包括单个控制器100和单个交换机110。但是,应该理解,SDN网络140可以包括多于一个的控制器100,以及通常将包括多于一个的交换机110。此外,出于示例目的,将主要在SDN控制器100和交换机110实现OpenFlow的上下文中描述实施例。这仅是示例而并非旨在限制。应该理解,还可以使用其他SDN实施方式来实现本文描述的分组跟踪技术和概念。
在该示例中,交换机110的分组处理流水线120包括跟踪表、正常流表(表0至表N)以及出口表。跟踪表是用于针对需要被跟踪的分组启用分组跟踪的流表。在一个实施例中,跟踪表是分组处理流水线120中的第一(最前)流表(它是传入分组被与之匹配的第一流表)。如图所示,在一个实施例中,跟踪表被编程以使得分组以以下方式被处理:如果分组与跟踪标准相匹配,则创建分组的要用作跟踪分组的副本,设置跟踪分组(该副本)的第一跟踪指示符和第二跟踪指示符,以及将原始分组和跟踪分组定向到入口表。
正常流表(表0至表N)是被用于正常(非跟踪)分组处理的流表。在一个实施例中,这些流表中的一个或多个被编程以支持分组跟踪功能(除了支持正常分组处理功能之外)。如图所示,在一个实施例中,这些流表中的一个或多个被编程以使得分组以以下方式被处理:如果分组的第一跟踪指示符被设置(从而指示该分组是跟踪分组),则将当前流表的标识符附加到所记录的分组的路由,清除分组的第一跟踪指示符,以及将分组重新提交到当前流表;否则(如果分组的第一跟踪指示符未被设置),则在将分组定向到另一个流表之前,执行正常分组处理操作并且将第一跟踪指示符的值设置为第二跟踪指示符的值。
出口表是在分组离开交换机110的物理端口之前分组被定向到的流表。出口表能够被用于将跟踪分组发送到控制器100。在一些实施例中,现有的出口流表被编程以支持该功能,而在其他实施例中,新的出口表被添加到分组处理流水线120以支持该功能。如图所示,在一个实施例中,出口表被编程以使得分组以以下方式被处理:如果分组的第一跟踪指示符被设置,则将分组以及所记录的分组的路由发送到控制器;否则(如果分组的第一跟踪指示符未被设置),则执行正常出口操作。
现在将参考该图来描述示例性分组跟踪操作。在操作1处,交换机110接收分组。针对分组的分组处理在分组处理流水线120的跟踪表处开始。在该示例中,假设分组与跟踪标准相匹配。因此,交换机110创建分组的要用作跟踪分组的副本,设置跟踪分组(该副本)的第一跟踪指示符和第二指示符(以指示分组跟踪被启用),以及在操作2处,将跟踪分组定向到入口表(即,其中开始正常(非跟踪)分组处理的第一流表),在该示例中为表0。跟踪分组是将通过分组处理流水线120被跟踪的原始分组的副本。从下文进一步提供的描述中可以明显看出,设置跟踪分组的第一跟踪指示符和跟踪分组的第二跟踪指示符使跟踪分组能够通过分组处理流水线120被跟踪。在一个实施例中,第一跟踪指示符是与跟踪分组相关联的元数据字段(例如OpenFlow元数据字段)中的位,第二跟踪指示符是与跟踪分组相关联的分组寄存器中的位(例如,其中值1指示分组跟踪被启用,而值0指示分组跟踪被禁用)。原始分组也被定向到入口表(表0),并且要通过分组处理流水线120被正常地处理(没有分组跟踪功能,如在图中由虚线箭头所示)。因此,原始分组不受分组跟踪功能的影响。
继续该示例,跟踪分组在其第一跟踪指示符被设置的情况下到达表0(因为第一跟踪指示符先前在跟踪表处被设置)。因此,交换机110将表0的标识符附加到所记录的跟踪分组的路由,清除跟踪分组的第一跟踪指示符(以指示分组跟踪被禁用),以及在操作3处,将跟踪分组重新提交到表0。所记录的跟踪分组的路由可以被存储在与跟踪分组相关联的任何字段或数据结构中,并且在跟踪分组通过分组处理流水线120被处理时与跟踪分组一起被保留。当跟踪分组被重新提交到表0时,因为跟踪分组的第一跟踪指示符未被设置(因为在跟踪分组被重新提交之前,第一跟踪指示符被清除),所以在操作4处,在将跟踪分组定向到表N之前,交换机110执行正常分组处理操作并将跟踪分组的第一跟踪指示符的值设置为跟踪分组的第二跟踪指示符的值。跟踪分组的第二跟踪指示符先前在跟踪表处被设置。因此,将第一跟踪指示符的值设置为第二跟踪指示符的值使得第一跟踪指示符被设置。这允许跟踪分组在下一个流表(表N)处被跟踪。
应该注意,一般而言,在跟踪分组通过分组处理流水线120被处理时,跟踪分组的第二跟踪指示符保持被设置,以及用于在跟踪分组被定向到另一个流表之前设置跟踪分组的第一跟踪指示符(以在下一个流表处启用分组跟踪)。此外,跟踪分组的第一跟踪指示符在被重新提交到流表之前被清除,以允许跟踪分组在该流表处将被正常处理(没有分组跟踪)。
继续该示例,跟踪分组在其第一跟踪指示符被设置的情况下到达表N(因为在跟踪分组被定向到表N之前,第一指示符先前在表0处被设置)。因此,交换机110将表N的标识符附加到所记录的跟踪分组的路由,清除跟踪分组的第一跟踪指示符,以及在操作5处,将跟踪分组重新提交到表N。当跟踪分组被重新提交到表N时,因为跟踪分组的第一跟踪指示符未被设置(因为在跟踪分组被重新提交之前,第一跟踪指示符被清除),所以在操作6处,在将跟踪分组定向到出口表之前,交换机110执行正常操作并将跟踪分组的第一跟踪指示符的值设置为跟踪分组的第二跟踪指示符的值。在该示例中,跟踪分组的第二跟踪指示符先前在跟踪表处被设置(并且在跟踪分组通过分组处理流水线120被处理时保持被设置)。因此,将第一跟踪指示符的值设置为第二跟踪指示符的值使得第一跟踪指示符将被设置。这允许跟踪分组在下一个流表(出口表)处被跟踪。
继续该示例,跟踪分组在其第一跟踪指示符被设置的情况下到达出口表(因为在跟踪分组被定向到出口表之前,第一跟踪指示符先前在表N处被设置)。因此,在操作7处,交换机110将跟踪分组连同所记录的路由发送到控制器100。在该示例中,所记录的路由指示跟踪分组经过了表0和表N。在一个实施例中,使用OpenFlow Packet-In消息或类似的控制平面消息将跟踪分组发送到控制器。
以这种方式,实施例向控制器100发送单个分组连同跟踪分组通过分组处理流水线120经过的完整路由。这是对在分组经过的每个流表处将分组发送到控制器的现有分组跟踪技术的改进。例如,对于经过表0和表N的分组(类似于上面的示例),现有的分组跟踪技术将在分组到达表0时向控制器发送分组一次,以及在分组到达表N时再次向控制器发送分组。然后,控制器100将必须核对这些分组以确定它们实际上是相同的分组,以及基于这些分组被从其发送的流表来重构分组经过的路径。相比之下,本文公开的实施例使用单个分组向控制器100提供了分组通过分组处理流水线120经过的完整路由(所记录的路由),这减少了控制器100必须核对分组和必须重构分组经过的路径的麻烦。
在一个实施例中,控制器100可以使用从一个或多个交换机收集的所记录的路由来计算各种统计信息,例如已通过每种服务的分组的数量(服务通常与特定的流表相关联)、特定分组经过的服务的数量、通过特定虚拟专用网络(VPN)的分组的数量(例如通过检查经过的路径和元数据中的VPN ID)、以及通过特定的仿真局域网(ELAN)的分组的数量。
如上所述,跟踪表用于针对需要被跟踪的分组启用分组跟踪。表I示出了可以被包括在跟踪表中以提供该功能的示例性流条目。
表I
如表I所示,流条目与符合跟踪标准的分组相匹配。在一个实施例中,跟踪标准可以由管理员配置(以选择性地跟踪特定的流或分组)。流条目具有用于以下操作的指令:创建分组的副本(以用作跟踪分组),设置跟踪分组的第一跟踪指示符,设置跟踪分组的第二跟踪指示符,将原始分组定向到入口表,以及将跟踪分组定向到入口表。
如上所述,正常流表(例如表0至表N)可以被编程以支持分组跟踪功能。表II示出了在流表被编程以支持分组跟踪功能之前的流表中的示例性流条目,表III示出了在流表已被编程以支持分组跟踪功能之后的流表中的示例性流条目。
分组匹配标准 | 指令 |
标准X | 将分组定向到表X |
标准Y | 将分组定向到表Y |
标准Z | 将分组定向到表Z |
表II
如表II所示,每个流条目与具有特定分组匹配标准(分别为标准X、标准Y和标准Z)的分组相匹配,并且具有用于将匹配分组定向到特定流表(分别为表X、表Y和表Z)的指令。
表III
如表III所示,新的流条目被添加到流表,该新的流条目与它们的第一跟踪指示符被设置(这指示该分组是跟踪分组)的分组相匹配。该新的流条目具有用于以下操作的指令:将当前流表的标识符附加到所记录的分组的路由(记录-路由(表ID)),清除第一跟踪指示符,以及将分组重新提交到当前流表。此外,如表III所示,现有的流条目(表II所示的流条目)被修改以包括用于以下操作的指令:在将分组定向到另一个流表之前,将第一跟踪指示符的值设置为第二跟踪指示符的值。应该注意,跟踪分组将始终使它们的第二跟踪指示符被设置。因此,将第一跟踪指示符的值设置为第二跟踪指示符的值使得第一跟踪指示符将被设置。这允许跟踪分组在下一个流表处被跟踪。
如上所述,出口表被用于将跟踪分组发送到控制器100。表IV示出了可以被包括在出口表中以提供该功能的示例性流条目。
分组匹配标准 | 指令 |
第一跟踪指示符被设置 | 将分组输出到控制器 |
表IV
如表IV所示,流条目与它们的第一跟踪指示符被设置的分组相匹配,并且具有使交换机将匹配分组输出到控制器100的指令。出口表可以包括用于执行出口操作(例如针对非跟踪分组)的其他流条目(未示出)。在一个实施例中,表IV所示的流条目是出口表中的最高优先级流条目。这确保跟踪分组将被发送到控制器100并且不会被转发到交换机110之外。
图2是示出根据一些实施例的跟踪分组经过的示例性路由和得到的所记录的路由的图。在该示例中,跟踪分组在到达出口表之前经过表0、表17和表20。当跟踪分组到达流表时,该流表的标识符被附加到所记录的跟踪分组的路由。因此,在跟踪分组到达出口表时,所记录的跟踪分组的路由为“0->17->20”。该记录的路由从出口表被发送到控制器100。
实施例还支持记录分组在分组处理流水线120中经过的组(group)。在OpenFlow中,组包括一个或多个存储桶(bucket),其中每个存储桶指定要针对分组执行的一个或多个动作(指令)。在OpenFlow中存在各种组类型(例如,所有(all)、选择(select)、间接(indirect)、以及快速故障转移(fast failover))。OpenFlow中的“所有”组类型指示组中的所有存储桶要被执行。这可以被用于多播或广播转发。针对每个存储桶有效地克隆分组,并且应用该存储桶的动作。用于组的分组跟踪必须以与流表不同的方式来处理,因为组不允许检查条件(例如,检查第一跟踪指示符是否被设置)。在一个实施例中,组被编程以支持分组跟踪功能,方式是修改组中的每个存储桶以包括用于将组的标识符附加到所记录的存储桶的路由的指令(该方法被称为第一组记录方法)。表V示出了在组已被编程以支持分组跟踪功能之前在组中的示例性存储桶,表VI示出了在使用第一组记录方法已对组进行编程以支持分组跟踪功能之后在组中的示例性存储桶。
表V
如表V所示,组包括两个存储桶(存储桶1和存储桶2)。存储桶1包含指令X(其可以是任何指令)和用于将分组定向到表X的指令,存储桶2包含指令Y(其可以是任何指令)和用于将分组定向到表Y的指令。
表VI
如表VI所示,现有的存储桶(表V所示的存储桶)被修改以包括用于将组的标识符附加到所记录的分组的路由的指令(记录路由(组ID)。
图3A是示出根据一些实施例的跟踪分组经过的示例性路由和使用第一组记录方法得到的所记录的路由的图。在该示例中,跟踪分组在到达组X之前经过表0和表17。在该阶段,所记录的跟踪分组的路由为“0->17”。组X包括两个存储桶,并且被编程为以与上面参考表V和表VI描述的方式类似的方式来支持分组跟踪功能。即,每个存储桶包括用于将组的标识符附加到所记录的分组的路由的指令。第一存储桶包括用于将分组定向到表40的指令,第二存储桶包括用于将分组定向到表50的指令。因此,跟踪分组的一个副本被定向到表40,而跟踪分组的另一个副本被定向到表50。然后,每个副本被定向到出口表。因此,第一副本的所记录的路由为“0->17->X->40”,而第二副本的所记录的路由为“0->17->X->50”。这些所记录的路由从出口表被发送到控制器100。
该方法的缺点是在每个存储桶处应用记录路由动作,因此添加了额外开销(即使对于正常(非跟踪)业务也是如此)。避免该缺点的另一种方法是将存储桶添加到组,该存储桶具有用于将组的标识符附加到所记录的分组的路由(记录路由(组ID)))的指令以及将分组定向到出口表(无需修改现有的存储桶)的指令(被称为第二组记录方法)。表VII示出了在使用该方法对组进行编程以支持分组跟踪功能之后在组中的示例性存储桶。
表VII
如表VII所示,新的存储桶(存储桶3)被添加到组,该存储桶具有用于将组的标识符附加到所记录的分组的路由的指令以及将分组定向到出口表的指令。使用该方法,避免了在每个存储桶处应用记录路由动作的开销(如在第一组记录方法中所执行的那样)。但是,使用该方法,存储桶3可能使得正常(非跟踪)分组被定向到出口表,并且使得这些分组可能离开交换机,这可能不是预期行为。为了避免这种情况,存储桶3还可以包括用于针对分组设置丢弃指示符的指令,并且出口表可以被编程以丢弃它们的丢弃指示符被设置的任何分组。例如,出口表可以在优先级顺序方面具有以下规则:1)如果第一跟踪指示符被设置,则将分组输出(平移(punt))到控制器;2)如果丢弃指示符被设置,则丢弃分组;以及3)正常出口处理。
图3B是示出根据一些实施例的跟踪分组经过的示例性路由和使用第二组记录方法得到的所记录的路由的图。在该示例中,跟踪分组在到达组X之前经过表0和表17。在该阶段,所记录的跟踪分组的路由为“0->17”。组X包括三个存储桶。第一存储桶和第二存储桶是原始存储桶。第一存储桶包括用于将分组定向到表40的指令,第二存储桶包括用于将分组定向到表50的指令。第三存储桶是针对分组跟踪目的而添加的存储桶,并且具有用于将组的标识符附加到所记录的分组的路由的指令和用于将分组定向到出口表的指令。因此,跟踪分组的第一副本被定向到表40,跟踪分组的第二副本被定向到表50,以及跟踪分组的第三副本被定向到出口表。随后,第一副本和第二副本被定向到出口表,结果,第一副本的所记录的路由为“0->17->40”,第二副本的所记录的路由为“0->17->50”,以及第三副本的所记录的路由为“0->17->X”。这些所记录的路由从出口表被发送到控制器100。
在一个实施例中,可以通过检查所记录的分组的路由的长度是否已超过最大允许长度来防止该长度变得太大。例如,当分组陷入循环时,所记录的路由的长度可能变得太大。表VIII示出了能够被添加到流表(除了现有的分组跟踪逻辑之外)以检查所记录的路由的长度的示例性流条目。
表VIII
如表VIII所示,附加的流条目可以被添加到流表,该附加的流条目与它们的第一跟踪指示符被设置的分组相匹配,并且其中所记录的路由的长度(例如,该长度表示分组到目前为止经过的流表和组的数量)大于预定义的可配置阈值长度(max_length)。该流条目具有用于将分组发送到控制器100的指令。该流条目可以被添加到分组跟踪针对其被启用的所有流表(或其子集)。在一个实施例中,控制器100可以基于接收到所记录的路由的长度已到达预定义的可配置阈值长度的分组,确定分组陷入循环。在一个实施例中,如果可配置阈值长度(max_length)被设置为零(或其他预定义值),则对所记录的路线的长度没有限制。
在一个实施例中,OpenFlow被扩展以提供用于将标识符附加到所记录的分组的路由的动作(被称为记录路由动作)。如下所示,记录路由动作类型(OFPAT_RECORD_ROUTE)能够被添加到动作类型列表。此外,如下所示,能够提供记录路由动作结构(ofp_action_record_route)。记录路由动作结构包括用于指定流表或组的要附加到所记录的路由的标识符的字段(“id”字段)。
动作类型:
enum ofp_action_type{
OFPAT_OUTPUT=0,/*输出到交换机端口。*/
OFPAT_COPY_TTL_OUT=11,/*“向外”复制TTL–从次外层到最外层*/
OFPAT_COPY_TTL_IN=12,/*“向内”复制TTL–从最外层到次外层*/
OFPAT_SET_MPLS_TTL=15,/*MPLS TTL*/
OFPAT_DEC_MPLS_TTL=16,/*递减MPLS TTL*/
OFPAT_RECORD_ROUTE=13,/*推送新的表id/组id*/
OFPAT_PUSH_VLAN=17,/*推送新的VLAN标签*/
OFPAT_POP_VLAN=18,/*弹出外部VLAN标签*/
OFPAT_PUSH_MPLS=19,/*推送新的MPLS标签*/
OFPAT_POP_MPLS=20,/*弹出外部MPLS标签*/
OFPAT_SET_QUEUE=21,/*当输出到端口时设置队列id*/
OFPAT_GROUP=22,/*应用组。*/
OFPAT_SET_NW_TTL=23,/*IP TTL。*/
OFPAT_DEC_NW_TTL=24,/*递减IP TTL。*/
OFPAT_SET_FIELD=25,/*使用OXM TLV格式设置报头字段。*/
OFPAT_PUSH_PBB=26,/*推送新的PBB服务标签(I-TAG)*/
OFPAT_POP_PBB=27,/*弹出外部PBB服务标签(I-TAG)*/
OFPAT_EXPERIMENTER=0xffff
};
记录路由动作使用以下结构:
/*用于OFPAT_RECORD_ROUTE的动作结构。*/
struct ofp_action_record_route{
uint16_t type;/*OFPAT_RECORD_ROUTE。*/
uint16_t len;/*长度为8。*/
uint32_t id;/*TABLE-ID/GROUP-ID*/
uint8_t pad[3];
};
图4是示出根据一些实施例的用于在SDN交换机的分组处理流水线中跟踪被丢弃的分组的操作的图。如图所示,交换机110包括丢弃表。在一个实施例中,流表中的所有丢弃指令(例如OpenFlow丢弃动作)和/或默认指令被替换为用于将分组定向到丢弃表的指令。如图所示,在一个实施例中,丢弃表被编程以使得采用以下方式处理分组:如果分组的第一跟踪指示符被设置,则将分组发送到控制器;否则,设置分组的跟踪指示符(第一跟踪指示符和第二跟踪指示符)并且将分组定向到入口表。
现在将参考该图来描述用于跟踪被丢弃的分组的示例性操作。在操作1处,交换机110接收分组。针对分组的分组处理在分组处理流水线120的跟踪表处开始。在该示例中,假设分组与跟踪标准不匹配。在操作2处,跟踪分组被定向到入口表(表0),以及在操作3处,分组被定向到表17。当分组在表17处时,确定分组应被丢弃。因此,在操作4处,分组被定向到丢弃表。当分组在丢弃表处时,因为分组的第一跟踪指示符未被设置,所以交换机110设置分组的跟踪指示符(第一跟踪指示符和第二跟踪指示符)并且将分组定向回入口表(表0)。这允许分组再次通过分组处理流水线120,但是这次启用了分组跟踪。当分组在表0处时,因为针对分组启用了跟踪,所以交换机110将表0的标识符附加到所记录的分组的路由,以及在操作6处,将分组定向到表17(其中第一跟踪指示符被设置)。当分组在表17处时,交换机110将表17的标识符附加到所记录的分组的路由。在操作7处,分组被定向到丢弃表(其中第一跟踪指示符被设置)。因为分组的第一跟踪指示符被设置,所以交换机110将分组连同所记录的路由(其在该示例中为“0->17”)发送到控制器100。以这种方式,即使被丢弃的分组与跟踪标准不匹配,交换机110也能够针对被丢弃的分组启用分组跟踪。在一个实施例中,丢弃表被编程以仅针对特定分组执行分组跟踪(例如,通过仅将这些分组定向到入口表)。
图5是根据一些实施例的用于在SDN交换机的分组处理流水线中跟踪分组的过程的流程图。将参考其他图的示例性实施例来描述该流程图中的操作。但是,应该理解,可以由参考其他图讨论的实施例之外的实施例来执行该流程图的操作,并且参考这些其他图讨论的实施例可以执行与参考该流程图讨论的这些实施例不同的操作。在一个实施例中,由SDN网络中的交换机(例如SDN网络140中的交换机110)来实现该过程。
在方框510处,交换机110接收分组。
在方框520处,响应于在跟踪表处确定分组与跟踪标准相匹配,交换机110创建分组的要用作跟踪分组的副本,设置跟踪分组的第一跟踪指示符,设置跟踪分组的第二跟踪指示符,以及将跟踪分组定向到后续的流表(例如,入口流表)。如本文所使用的,作为根据特定流表或组在分组处理流水线120中处理分组的一部分而执行的操作(例如,将分组与流表的流条目相匹配,执行流表的流条目的指令,以及执行组的存储桶的指令)被认为在该流表或组“处”被执行。在一个实施例中,分组(原始分组而不是跟踪分组)要通过分组处理流水线120的其余部分来被处理而不被跟踪。在一个实施例中,跟踪分组的第一跟踪指示符是与跟踪分组相关联的元数据字段(例如OpenFlow元数据字段)中的位。在一个实施例中,跟踪分组的第二跟踪指示符是与跟踪分组相关联的分组寄存器(例如OpenFlow分组寄存器)中的位。
在方框530处,在跟踪分组经过的一个或多个后续的流表中的每个流表处,响应于确定跟踪分组的第一跟踪指示符被设置,交换机110将该流表的标识符附加到所记录的跟踪分组的路由,清除跟踪分组的第一跟踪指示符,将跟踪分组重新提交到该流表,以及在将跟踪分组定向到后续的流表之前,将跟踪分组的第一跟踪指示符设置为跟踪分组的第二跟踪指示符的值。在一个实施例中,基于应用在流条目中包括的记录路由动作,流表的标识符被附加到所记录的跟踪分组的路由。
在一个实施例中,交换机110在组处将该组的标识符附加到所记录的跟踪分组的路由,以及将跟踪分组定向到出口流表。在一个实施例中,交换机110针对组的每个存储桶,在该组处将该组的标识符附加到所记录的跟踪分组的路由。
在一个实施例中,交换机响应于确定所记录的跟踪分组的路由的长度超过预配置的阈值长度,确定跟踪分组处于循环中,以及响应于确定跟踪分组处于循环中,将跟踪分组连同所记录的跟踪分组的路由发送到控制器。
在一个实施例中,响应于确定分组要被丢弃并且分组的第一跟踪指示符未被设置,交换机设置分组的第一跟踪指示符,设置分组的第二跟踪指示符,以及将分组定向到入口流表(以被跟踪)。
在方框540处,响应于在出口流表处确定跟踪分组的第一跟踪指示符被设置,交换机110将跟踪分组连同所记录的跟踪分组的路由发送到控制器(例如,使用OpenFlowPacket-In消息)。
图6A示出了根据一些实施例的示例性网络内的网络设备(ND)之间的连接性以及ND的三个示例性实现。图6A示出了ND 600A-H及其在600A-600B、600B-600C、600C-600D、600D-600E、600E-600F、600F-600G和600A-600G之间以及在600H与600A、600C、600D和600G中的每一个之间的线路连接。这些ND是物理设备,并且这些ND之间的连接可以是无线的也可以是有线的(通常称为链路)。从ND 600A、600E和600F延伸的附加线路例示了这些ND充当网络的入口点和出口点(并且因此,这些ND有时称为边缘ND;而其他ND可以称为核心ND)。
图6A中的两个示例性ND实现是:1)使用定制的专用集成电路(ASIC)和专用操作系统(OS)的专用网络设备602;以及2)使用通用现成(COTS)处理器和标准OS的通用网络设备604。
专用网络设备602包括联网硬件610,联网硬件610包括一组一个或多个处理器612、转发资源614(其通常包括一个或多个ASIC和/或网络处理器)和物理网络接口(NI)616(通过其进行网络连接,例如ND 600A-H之间的连接所示)、以及在其中存储网络软件620的非暂时性机器可读存储介质618。在运行期间,联网软件620可以由联网硬件610执行以实例化一组一个或多个网络软件实例622。每个联网软件实例622以及联网硬件610中执行该网络软件实例的部分(是专用于该联网软件实例的硬件和/或该联网软件实例与其他联网软件实例622在时间上共享的硬件的时间片)形成单独的虚拟网元630A-R。每个虚拟网元(VNE)630A-R均包括控制通信和配置模块632A-R(有时称为本地控制模块或控制通信模块)和转发表634A-R,使得给定的虚拟网元(例如630A)包括该控制通信和配置模块(例如632A)、一组一个或多个转发表(例如634A)以及联网硬件610的执行虚拟网元(例如630A)的部分。
软件620可以包括诸如跟踪组件625之类的代码,该代码当由网络硬件610执行时,使得专用网络设备602执行上文描述为部分网络软件实例622的一个或多个实施例的操作(例如以提供分组跟踪功能)。
专用网络设备602通常在物理和/或逻辑上被认为包括:1)ND控制平面624(有时称为控制平面),其包括执行控制通信和配置模块632A-R的处理器612;以及2)ND转发平面626(有时称为转发平面、数据平面或媒体平面),其包括利用转发表634A-R和物理NI 616的转发资源614。举例来说,在ND是路由器(或正在实现路由功能)的情况下,ND控制平面624(执行控制通信和配置模块632A-R的处理器612)通常负责参与控制如何路由数据(例如分组)(例如数据的下一跳和该数据的出站(outgoing)物理NI)并将该路由信息存储在转发表634A-R中,ND转发平面626负责在物理NI 616上接收该数据并基于转发表634A-R来将该数据转发出适当的物理NI 616。
图6B示出了根据一些实施例的实现专用网络设备602的示例性方式。图6B示出了包括卡638(通常是可热插拔的)的专用网络设备。尽管在一些实施例中,卡638具有两种类型(一种或多种用作ND转发平面626(有时称为线卡),一种或多种用来实现ND控制平面624(有时称为控制卡)),但是替代实施例可以将功能组合到单个卡上和/或包括附加卡类型(例如一种附加类型的卡称为服务卡、资源卡或多应用卡)。服务卡可以提供专门的处理(例如第4层到第7层服务(例如防火墙、互联网协议安全性(IPsec)、安全套接字层(SSL)/传输层安全性(TLS)、入侵检测系统(IDS)、点对点(P2P)、IP语音(VoIP)会话边界控制器、移动无线网关(网关通用分组无线电服务(GPRS)支持节点(GGSN)、演进分组核心(EPC)网关)。通过示例,可以使用服务卡来终止IPsec隧道并执行伴随的认证和加密算法。这些卡通过一个或多个互连机制(如背板636所示)耦接在一起(例如耦接线卡的第一全网状、耦接所有卡的第二全网状)。
返回图6A,通用网络设备604包括硬件640,硬件640包括一组一个或多个处理器642(通常是COTS处理器)和物理NI 646、以及在其中存储有软件650的非暂时性机器可读存储648。在运行期间,处理器642执行软件650以实例化一组或多组一个或多个应用664A-R。尽管一个实施例不实现虚拟化,但是替代实施例可以使用不同形式的虚拟化。例如,在一个这样的替代实施例中,虚拟化层654表示操作系统的内核(或在基本操作系统上执行的填充程序(shim)),其允许创建称为软件容器的多个实例662A-R,每个实例可用于执行一组(或多组)应用664A-R;其中多个软件容器(也称为虚拟化引擎、虚拟专用服务器或jail)是用户空间(通常是虚拟内存空间),这些用户空间彼此分离并与运行操作系统的内核空间分离;并且其中,除非明确允许,否则在给定用户空间中运行的一组应用无法访问其他进程的内存。在另一个这样的替代实施例中,虚拟化层654表示系统管理程序(hypervisor)(有时称为虚拟机监视器(VMM))或在主机操作系统之上执行的系统管理程序,并且多组应用664A-R中的每一者在称为在管理程序之上运行的虚拟机(其在某些情况下可被视为软件容器的紧密隔离的形式)的实例662A-R内的来宾操作系统(guest operating system)之上运行,来宾操作系统和应用可能不知道它们正在虚拟机上运行而不是在“裸机”主机电子设备上运行,或者通过半虚拟化,操作系统和/或应用可能出于优化目的而意识到存在虚拟化。在其他替代实施例中,一个、一些或所有应用被实现为一个或多个单内核,单内核可以通过用应用仅直接编译一组有限的库(例如来自包括OS服务的驱动程序/库的库操作系统(LibOS))来生成,该组有限的库提供该应用所需的特定OS服务。由于可以将单内核实现为直接在硬件640上运行、直接在系统管理程序上运行(在这种情况下,有时将单内核描述为在LibOS虚拟机中运行)、或者在软件容器中运行,所以实施例可以完全通过在由虚拟化层654表示的系统管理程序上直接运行的单内核、通过在实例662A-R表示的软件容器内运行的单内核来实现,或实现为单内核和上述技术的组合(例如都直接在系统管理程序上运行的单内核和虚拟机,在不同软件容器中运行的单内核和多组应用)。
一组或多组一个或多个应用664A-R的实例化以及虚拟化(如果实现的话)统称为软件实例652。每组应用664A-R、对应的虚拟化构造(例如实例662A-R)(如果实现的话)、以及硬件640的执行它们的那部分(假设是专用于该执行的硬件和/或时间上共享的硬件的时间片)形成单独的虚拟网元660A–R。
虚拟网元660A-R执行与虚拟网元630A-R类似的功能,例如,类似于控制通信和配置模块632A以及转发表634A(硬件640的这种虚拟化有时被称为网络功能虚拟化(NFV)。因此,NFV可用于将许多网络设备类型整合到行业标准的大容量服务器硬件、物理交换机和物理存储设备上,大容量服务器硬件、物理交换机和物理存储设备可以位于数据中心、ND和客户驻地设备(CPE)中。尽管通过与一个VNE 660A-R对应的每个实例662A-R例示了实施例,但是替代实施例可以以更精细级别的粒度实现此对应关系(例如线卡虚拟机虚拟化线卡,控制卡虚拟机虚拟化控制卡等);应当理解,本文中参考实例662A-R到VNE的对应关系所描述的技术也适用于使用这种更精细级别的粒度和/或单内核的实施例。
在特定实施例中,虚拟化层654包括提供与物理以太网交换机类似的转发服务的虚拟交换机。具体地,该虚拟交换机在实例662A-R与物理NI 646之间以及可选地在实例662A-R之间转发流量。另外,该虚拟交换机可以在按照策略不被允许彼此通信(例如通过遵守虚拟局域网(VLAN))的VNE 660A-R之间实施网络隔离。
软件650可以包括诸如跟踪组件663之类的代码,该代码当由处理器642执行时,使得通用网络设备604执行上文描述为部分软件实例662A-R的一个或多个实施例的操作(例如以提供分组跟踪功能)。
图6A中的第三示例性ND实现是混合网络设备606,其在单个ND或ND中的单个卡中包括定制ASIC/专用OS和COTS处理器/标准OS两者。在这样的混合网络设备的特定实施例中,平台VM(即,实现专用网络设备602的功能的VM)可以为混合网络设备606中存在的联网硬件提供半虚拟化。
不管ND的上述示例性实现如何,当考虑由ND实现的多个VNE中的单个VNE(例如VNE中仅一个VNE是给定虚拟网络的一部分)时,或者仅单个VNE当前由ND实现,简称网元(NE)有时用于指代该VNE。同样在所有上述示例性实现中,每个VNE(例如VNE 630A-R、VNE 660A-R和混合网络设备606中的那些VNE)在物理NI(例如616、646)上接收数据,然后将该数据转发出适当的物理NI(例如616、646)。例如,实现IP路由器功能的VNE基于IP分组中的某些IP头信息来转发IP分组;其中IP头信息包括源IP地址、目的地IP地址、源端口、目的地端口(其中“源端口”和“目的地端口”在本文中是指协议端口,与ND的物理端口相对)、传输协议(例如用户数据报协议(UDP)、传输控制协议(TCP)和差分服务代码点(DSCP)值)。
图6C示出了根据一些实施例的在其中可以耦接VNE的各种示例性方式。图6C示出了在ND 600A中实现的VNE 670A.1-670A.P(以及可选地VNE 670A.Q-670A.R)和在ND 600H中实现的VNE 670H.1。在图6C中,VNE 670A.1-P彼此分离,因为它们可以接收来自ND 600A外部的分组并将分组转发到ND 600A外部;VNE 670A.1与VNE 670H.1耦接,并且因此它们在各自的ND之间传送分组;VNE 670A.2-670A.3可以可选地在它们自身之间转发分组,而无需将分组转发到ND 600A之外;以及VNE 670A.P可以可选地是包括VNE 670A.Q(后跟VNE670A.R)的VNE链中的第一个(这有时称为动态服务链,其中,VNE系列中的每个VNE都提供不同的服务,例如一个或多个第4-7层网络服务)。尽管图6C示出了VNE之间的各种示例性关系,但是替代实施例可以支持其他关系(例如更多/更少的VNE、更多/更少的动态服务链、具有一些公共VNE和一些不同VNE的多个不同的动态服务链)。
例如,图6A的ND可以形成互联网或专用网络的一部分;其他电子设备(未示出;例如最终用户设备,包括工作站、笔记本电脑、上网本、平板电脑、掌上电脑、手机、智能电话、平板手机、多媒体电话、互联网协议语音(VOIP)电话、终端、便携式媒体播放器、GPS单元、可穿戴设备、游戏系统、机顶盒、支持互联网的家用电器)可以耦接到网络(直接或通过诸如接入网络的其他网络)以在网络(例如,互联网或覆盖(例如通过隧道化)互联网的虚拟专用网络(VPN))上彼此通信(直接或通过服务器)和/或访问内容和/或服务。这样的内容和/或服务通常由属于服务/内容提供商的一个或多个服务器(未示出)或参与点到点(P2P)服务的一个或多个最终用户设备(未示出)提供,并且可以包括例如公共网页(例如免费内容、店面、搜索服务)、私有网页(例如提供电子邮件服务的用户名/密码访问的网页)和/或VPN上的公司网络。例如,最终用户设备可以被耦接(例如通过耦接到接入网络(有线或无线地)的客户驻地设备)到边缘ND,边缘ND被耦接(例如通过一个或多个核心ND)到其他边缘ND,其他边缘ND被耦接到充当服务器的电子设备。但是,通过计算和存储虚拟化,在图6A中作为ND运行的一个或多个电子设备也可以托管一个或多个这样的服务器(例如在通用网络设备604的情况下,一个或多个软件实例662A-R可以充当服务器;混合网络设备606也是如此;在专用网络设备602的情况下,一个或多个这样的服务器也可以在由处理器612执行的虚拟化层上运行);在这种情况下,认为服务器与该ND的VNE共址(co-located)。
虚拟网络是提供网络服务(例如L2和/或L3服务)的物理网络(例如图6A中的物理网络)的逻辑抽象。虚拟网络可以被实现为覆盖网络(有时称为网络虚拟化覆盖),该覆盖网络在底层网络(例如L3网络,诸如使用隧道(例如通用路由封装(GRE)、第2层隧道协议(L2TP)、IPSec)创建覆盖网络的互联网协议(IP)网络)上提供网络服务(例如第2层(L2,数据链路层)和/或第3层(L3,网络层)服务)。
网络虚拟化边缘(NVE)位于底层网络的边缘,并参与实现网络虚拟化;NVE的面向网络侧使用底层网络在其他NVE之间来回隧道传输帧;NVE的朝外的一侧与网络外部的系统之间来回收发数据。虚拟网络实例(VNI)是NVE上虚拟网络的特定实例(例如ND上的NE/VNE、ND上NE/VNE的一部分,其中,NE/VNE通过仿真被分为多个VNE);可以在NVE上实例化一个或多个VNI(例如作为ND上的不同VNE)。虚拟接入点(VAP)是NVE上用于将外部系统连接到虚拟网络的逻辑连接点;VAP可以是通过逻辑接口标识符(例如VLAN ID)标识的物理或虚拟端口。
网络服务的示例包括:1)以太网LAN仿真服务(类似于互联网工程任务组(IETF)多协议标签交换(MPLS)或以太网VPN(EVPN)服务的基于以太网的多点服务),其中,外部系统通过LAN环境在底层网络上跨网络互连(例如NVE为不同的此类虚拟网络提供单独的L2 VNI(虚拟交换实例),并跨底层网络提供L3(例如IP/MPLS)隧道封装);以及2)虚拟化IP转发服务(从服务定义的角度来看类似于IETF IP VPN(例如边界网关协议(BGP)/MPLS IPVPN)),其中,外部系统在底层网络上通过L3环境跨网络互连(例如NVE为不同的此类虚拟网络提供单独的L3 VNI(转发和路由实例),并跨底层网络提供L3(例如IP/MPLS)隧道封装)。网络服务还可以包括服务质量功能(例如流量分类标记、流量调节和调度)、安全功能(例如用于保护客户驻地免受网络发起的攻击以避免格式错误的路由公告的过滤器)以及管理功能(例如完整的检测和处理)。
图6D示出了根据一些实施例在图6A的每个ND上具有单个网元的网络,并且在该直接转发方法内,将传统的分布式方法(通常由传统路由器使用)与用于维护可达性和转发信息(也称为网络控制)的集中式方法进行了对比。具体地,图6D示出了具有与图6A的ND600A-H相同的连接性的网元(NE)670A-H。
图6D示出了分布式方法672跨NE 670A-H分布用于生成可达性和转发信息的责任;换句话说,邻居发现和拓扑发现的过程是分布式的。
例如,如果使用专用网络设备602,ND控制平面624的控制通信和配置模块632A-R通常包括可达性和转发信息模块以实现与其他NE通信以交换路由的一个或多个路由协议(例如外部网关协议(诸如边界网关协议(BGP))、内部网关协议(IGP)(例如开放式最短路径优先(OSPF)、中间系统到中间系统(IS-IS)、路由信息协议(RIP)、标签分发协议(LDP)、资源保留协议(RSVP)(包括RSVP流量工程(TE):用于LSP隧道的RSVP扩展和通用多协议标签交换(GMPLS)信令RSVP-TE)),然后基于一个或多个路由度量选择这些路由。因此,NE 670A-H(例如执行控制通信和配置模块632A-R的处理器612)通过分布式地确定网络内的可达性并计算其各自的转发信息来完成它们参与控制如何路由数据(例如分组)(例如数据的下一跳和该数据的传出物理NI)的责任。路由和邻接被存储在ND控制平面624上的一个或多个路由结构(例如路由信息库(RIB)、标签信息库(LIB)、一个或多个邻接结构)中。ND控制平面624基于路由结构来使用信息(例如邻接和路由信息)对ND转发平面626进行编程。例如,ND控制平面624将邻接和路由信息编程到ND转发平面626上的一个或多个转发表634A-R(例如转发信息库(FIB)、标签转发信息库(LFIB)和一个或多个邻接结构)中。对于第2层转发,ND可以存储一个或多个桥接表,桥接表用于基于数据中的第2层信息来转发该数据。尽管上面的示例使用了专用网络设备602,但是可以在通用网络设备604和混合网络设备606上实现相同的分布式方法672。
图6D示出了一种使系统解偶的集中式方法674(也称为软件定义网络(SDN)),该系统对从将流量转发到所选目的地的底层系统发送流量的位置进行决策。所示的集中式方法674负责在集中式控制平面676(有时称为SDN控制模块、控制器、网络控制器、OpenFlow控制器、SDN控制器、控制平面节点、网络虚拟化机构或管理控制实体)中生成可达性和转发信息,并且因此邻居发现和拓扑发现的过程是集中式的。集中式控制平面676具有与包括NE670A-H(有时称为交换机、转发元件、数据平面元件或节点)的数据平面680(有时称为基础设施层、网络转发平面或转发平面(其不应与ND转发平面混淆))的南向接口682。集中式控制平面676包括网络控制器678,网络控制器678包括集中式可达性和转发信息模块679,集中式可达性和转发信息模块679确定网络内的可达性并将转发信息在南向接口682(其可以使用OpenFlow协议)上分发给数据平面680的NE 670A-H。因此,网络智能被集中在通常与ND分离的电子设备上执行的集中式控制平面676中。
在一个实施例中,网络控制器678可以包括跟踪组件681,跟踪组件681在由网络控制器678执行时,使得网络控制器678执行上文描述的一个或多个实施例的操作(例如,用于在交换机中建立分组跟踪基础设施的操作,这可能涉及对交换机中的跟踪表、一个或多个正常表、以及出口表进行编程)。
例如,在数据平面680中使用专用网络设备602的情况下,ND控制平面624的每个控制通信和配置模块632A-R通常包括提供南向接口682的VNE侧的控制代理。在这种情况下,ND控制平面624(执行控制通信和配置模块632A-R的处理器612)通过与集中式控制平面676通信以从集中式可达性和转发信息模块679接收转发信息(以及在某些情况下,可达性信息)的控制代理来执行其参与控制如何路由数据(例如分组)(例如数据的下一跳和该数据的出站物理NI)的责任(应当理解,在一些实施例中,除了与集中式控制平面676通信之外,控制通信和配置模块632A-R还可以在确定可达性和/或计算转发信息方面起某些作用,尽管比分布式方法的情况下的作用要少;这样的实施例通常被认为属于集中式方法674,但是也可以被认为是混合方法)。
尽管以上示例使用专用网络设备602,但是可以用通用网络设备604实现相同的集中式方法674(例如,每个VNE 660A-R通过与集中式控制平面676进行通信以从集中式可达性和转发信息模块679接收转发信息(以及在某些情况下可达性信息)来完成其控制如何路由数据(例如分组)(例如数据的下一跳和该数据的出站物理NI)的责任);应当理解,在一些实施例中,除了与集中式控制平面676通信外,VNE 660A-R还可以在确定可达性和/或计算转发信息中起一定作用,尽管比分布式方法的情况下的作用要少)和混合网络设备606。实际上,SDN技术的使用能够增强通常在通用网络设备604或混合网络设备606实现中使用的NFV技术,因为NFV能够通过提供可在其上运行SDN软件的基础设施来支持SDN,并且NFV和SDN都旨在利用商品服务器硬件和物理交换机。
图6D还示出了集中式控制平面676具有到其中驻留有应用688的应用层686的北向接口684。集中式控制平面676具有形成用于应用688的虚拟网络692(有时被称为逻辑转发平面、网络服务或覆盖网络(具有作为底层网络的数据平面680的NE 670A-H)的能力。因此,集中式控制平面676维护所有ND和所配置的NE/VNE的全局视图,并有效地将虚拟网络映射到底层ND(包括在物理网络通过硬件(ND、链路或ND组件)故障、添加或删除而变化时维护这些映射)。
尽管图6D示出了与集中式方法674分离的分布式方法672,但是在某些实施例中,网络控制的工作可以不同地分布,或将两者结合。例如:1)实施例通常可以使用集中式方法(SDN)674,但是具有委托给NE的特定功能(例如分布式方法可以用于实现故障监视、性能监视、保护切换和用于邻居和/或拓扑发现的原语(primitives)中的一者或多者);或2)实施例可以经由集中式控制平面和分布式协议二者执行邻居发现和拓扑发现,并且比较结果以在它们不一致时引发异常。这样的实施例通常被认为属于集中式方法674,但是也可以被认为是混合方法。
尽管图6D示出了每个ND 600A-H实现单个NE 670A-H的简单情况,但是应当理解,参考图6D所描述的网络控制方法也适用于其中一个或多个ND 600A-H实现多个VNE(例如VNE 630A-R、VNE 660A-R、混合网络设备606中的那些VNE)的网络。替代地或附加地,网络控制器678也可以在单个ND中仿真多个VNE的实现。具体地,代替(或除了)在单个ND中实现多个VNE之外,网络控制器678还可以将单个ND中的VNE/NE的实现呈现为虚拟网络692中的多个VNE(全部在同一虚拟网络692中、每个都在不同的虚拟网络692中、或某种组合)。例如,网络控制器678可以使ND在底层网络中实现单个VNE(NE),然后在集中式控制平面676内在逻辑上划分该NE的资源以在虚拟网络692中呈现不同的VNE(其中覆盖网络中的这些不同的VNE正在共享底层网络中的ND上的单VNE/NE实现的资源)。
另一方面,图6E和6F分别示出了网络控制器678可以作为不同虚拟网络692的一部分而呈现的NE和VNE的示例性抽象。图6E示出了根据一些实施例的其中每个ND 600A-H实现单个NE 670A-H(参见图6D)但是集中式控制平面676已将不同ND中的多个NE(NE 670A-C和G-H)抽象成(表示为)图6D的虚拟网络692之一中的单个NE 670I的简单情况。图6E示出了在该虚拟网络中,NE 670I耦接至NE 670D和670F,NE670D和670F两者仍然耦接至NE 670E。
图6F示出了根据一些实施例的其中多个VNE(VNE 670A.1和VNE 670H.1)在不同的ND(ND 600A和ND 600H)上实现并且彼此耦接并且其中集中式控制平面676已经抽象这多个VNE以使得它们在图6D的虚拟网络692之一中表现为单个VNE 670T的情况。因此,NE或VNE的抽象可以跨越多个ND。
尽管一些实施例将集中式控制平面676实现为单个实体(例如在单个电子设备上运行的软件的单个实例),但是替代实施例可以将功能分散在多个实体上以实现冗余和/或可伸缩性目的(例如在不同电子设备上运行的软件的多个实例)。
类似于网络设备实现,运行集中式控制平面676的电子设备以及因此包括集中式可达性和转发信息模块679的网络控制器678可以通过多种方式(例如专用设备、通用(例如COTS)设备或混合设备)实现。这些电子设备将类似地包括处理器、一组一个或多个物理NI以及在其上存储了集中式控制平面软件的非暂时性机器可读存储介质。例如,图7示出了包括硬件740的通用控制平面设备704,硬件740包括一组一个或多个处理器742(其通常是COTS处理器)和物理ND 746,以及在其中存储集中式控制平面(CCP)软件750和跟踪组件751的非暂时性机器可读存储介质748。
在使用计算虚拟化的实施例中,处理器742通常执行软件以实例化虚拟化层754(例如在一个实施例中,虚拟化层754表示操作系统的内核(或在基本操作系统上执行的填充程序(shim)),其允许创建多个实例762A-R,实例762A-R称为均可用于执行一组一个或多个应用的软件容器(表示单独的用户空间,也称为虚拟化引擎、虚拟专用服务器或jail);在另一个实施例中,虚拟化层754表示系统管理程序(有时称为虚拟机监视器(VMM))或在主机操作系统之上执行的系统管理程序,并且应用在称为由系统管理程序运行的虚拟机(其在某些情况下可被视为软件容器的紧密隔离的形式)的实例762A-R内的来宾操作系统之上运行;在另一个实施例中,应用被实现为单内核,单内核可以通过用应用直接编译仅一组有限的库(例如来自包括OS服务的驱动程序/库的库操作系统(LibOS))来生成,该组有限的库提供该应用所需的特定OS服务,并且该单内核可以直接在硬件740上运行、在由虚拟化层754表示的系统管理程序上直接运行(在这种情况下,有时将单内核描述为在LibOS虚拟机中运行)、或者在由实例762A-R之一表示的软件容器中运行。再次地,在使用计算虚拟化的实施例中,在操作期间,在虚拟化层754上执行(例如在实例762A内)CCP软件750的实例(图示为CCP实例776A)。在不使用计算虚拟化的实施例中,CCP实例776A在“裸机”通用控制平面设备704上作为单内核或在主机操作系统之上执行。CCP实例776A以及虚拟化层754和实例762A-R(如果已实现的话)的实例化统称为软件实例752。
在一些实施例中,CCP实例776A包括网络控制器实例778。网络控制器实例778包括集中式可达性和转发信息模块实例779(其是向操作系统提供网络控制器678的上下文并与各种NE进行通信的中间件层),以及中间件层(提供各种网络操作所需的智能,例如协议、网络态势感知和用户界面)之上的CCP应用层780(有时称为应用层)。在更抽象的级别,集中式控制平面676内的CCP应用层780与虚拟网络视图(网络的逻辑视图)一起工作,并且中间件层提供从虚拟网络到物理视图的转换。
硬件740可以执行跟踪组件751以执行上文描述为软件实例752的一部分的一个或多个实施例的操作(例如用于在交换机中建立分组跟踪基础设施的操作,这可能涉及对交换机中的跟踪表、一个或多个正常表、以及出口表进行编程)。
集中式控制平面676基于CCP应用层780计算和针对每个流的中间件层映射,将相关消息发送到数据平面680。流可以被定义为其报头与给定的位模式相匹配的一组分组;从这个意义上讲,传统的IP转发也是基于流的转发,其中,流由例如目的地IP地址来定义;然而,在其他实现中,用于流定义的给定位模式可以在分组报头中包括更多字段(例如10个或更多)。数据平面680的不同ND/NE/VNE可以接收不同的消息以及因此不同的转发信息。数据平面680处理这些消息并在适当NE/VNE的转发表(有时称为流表)中编程适当的流信息和对应的动作,然后NE/VNE将入站分组映射到在转发表中表示的流,并基于转发表中的匹配来转发分组。
诸如OpenFlow之类的标准定义了用于消息的协议以及用于处理分组的模型。用于处理分组的模型包括报头解析、分组分类和做出转发决策。报头解析描述了如何基于一组众所周知的协议来解释分组。一些协议字段用于构建将在分组分类中使用的匹配结构(或键)(例如第一键字段可以是源媒体访问控制(MAC)地址,第二键字段可以是目的地MAC地址)。
分组分类涉及通过基于转发表条目的匹配结构或键来确定转发表中的哪个条目(也称为转发表条目或流条目)与分组最匹配,从而在存储器中执行查找以对分组进行分类。转发表条目中表示的许多流可能与一个分组相对应/匹配;在这种情况下,系统通常被配置为根据定义的方案(例如选择匹配的第一转发表条目)从多个转发表条目中确定一个转发表条目。转发表条目包括一组特定匹配标准(一组值或通配符、或应该将分组的哪些部分与特定值/多个值/通配符进行比较的指示,如由匹配功能所定义的,针对分组报头中的特定字段,或用于某些其他分组内容)以及供数据平面在接收到匹配的分组时采取的一组一个或多个动作。例如,对于使用特定端口的分组,动作可以是将报头推送到该分组上、对该分组进行洪泛或简单地丢弃该分组。因此,用于具有特定传输控制协议(TCP)目的地端口的IPv4/IPv6分组的转发表条目可以包含指定应丢弃这些分组的动作。
基于分组分类期间标识的转发表条目,通过执行在分组上的匹配的转发表条目中标识的一组动作,来做出转发决策并执行动作。
然而,当未知分组(例如在OpenFlow用语中使用的“未命中分组”或“匹配未命中”)到达数据平面680时,该分组(或分组报头和内容的子集)通常被转发到集中式控制平面676。集中式控制平面676然后将转发表条目编程到数据平面680中,以容纳属于未知分组的流的分组。一旦特定的转发表条目已经由集中式控制平面676编程到数据平面680中,则具有匹配证书的下一个分组将匹配该转发表条目并采取与该匹配条目相关联的一组动作。
网络接口(NI)可以是物理的或虚拟的;在IP的上下文中,接口地址是分配给NI(无论是物理NI还是虚拟NI)的IP地址。虚拟NI可以与物理NI相关联,与另一个虚拟接口相关联,或者可以独立存在(例如环回接口、点对点协议接口)。NI(物理或虚拟)可以被编号(带有IP地址的NI)或不编号(没有IP地址的NI)。环回接口(及其环回地址)是经常用于管理目的的NE/VNE(物理或虚拟)的特定类型的虚拟NI(和IP地址);其中这样的IP地址称为节点环回地址。分配给ND的NI的IP地址称为该ND的IP地址;在更细粒度的级别上,分配给NI(其被分配给在ND上实现的NE/VNE)的IP地址可以称为该NE/VNE的IP地址。
已经根据计算机存储器内的数据位上的事务的算法和符号表示来呈现了前述详细描述的某些部分。这些算法描述和表示是数据处理领域技术人员用来最有效地向本领域其他技术人员传达其工作实质的方式。在此,算法通常被认为是导致期望结果的事务的自洽序列。这些事务是需要对物理量进行物理操纵的事务。通常,尽管不是必须的,这些量采取能够被存储、传输、组合、比较和以其他方式操纵的电或磁信号的形式。主要出于通用目的,已经证明有时将这些信号称为位、值、元素、符号、字符、术语、数字等是方便的。
然而,应当牢记,所有这些和类似术语均应与适当的物理量相关联,并且仅仅是应用于这些量的方便标签。除非从上面的讨论明显另有说明,否则应理解,在整个描述中,利用诸如“处理”或“运算”或“计算”或“确定”或“显示”等术语的讨论是指计算机系统或类似电子计算设备的动作和过程,该计算机系统或类似电子计算设备将表示为计算机系统的寄存器和内存内的物理(电子)量的数据转换为其他类似表示为计算机系统内存或寄存器或其他此类信息存储、传输或显示设备内的物理量的数据。
本文提出的算法和显示并不固有地与任何特定计算机或其他装置有关。各种通用系统可以与根据本文的教导的程序一起使用,或者可以证明构造更专用的装置以执行所需的方法事务很方便。从上面的描述中将得出各种这些系统所需的结构。另外,没有参考任何特定的编程语言来描述本发明的实施例。要理解,可以使用多种编程语言来实现如本文所述的实施例的教导。
实施例可以是一种制品,其中,非暂时性机器可读介质(例如微电子存储器)在其上存储了对一个或多个数据处理组件(这里通常称为“处理器”)进行编程来执行上述操作的指令。在其他实施例中,这些操作中的一些可以由包含硬连线逻辑的特定硬件组件(例如专用数字滤波器块和状态机)执行。这些操作可以替代地通过编程的数据处理组件和固定的硬连线电路组件的任意组合来执行。
在整个说明书中,已经通过流程图示出了本发明的实施例。将理解的是,在这些流程图中描述的事务和事务的顺序仅旨在用于说明的目的,而并非旨在限制本发明。本领域普通技术人员将认识到,可以在不脱离如所附权利要求书所阐述的本发明的更广泛精神和范围的情况下对流程图进行改变。
在前述说明书中,已经参考本发明的特定示例性实施例描述了实施例。显而易见的是,在不脱离所附权利要求书所阐述的本发明的更广泛精神和范围的情况下,可以对其进行各种修改。因此,说明书和附图应被认为是说明性而不是限制性的。
Claims (20)
1.一种由软件定义网络SDN网络中的交换机在所述交换机的分组处理流水线中跟踪分组的方法,包括:
接收(510)分组;
响应于在所述分组处理流水线中的跟踪表处确定所述分组与跟踪标准相匹配,创建(520)所述分组的要用作跟踪分组的副本,设置所述跟踪分组的第一跟踪指示符,设置所述跟踪分组的第二跟踪指示符,以及将所述跟踪分组定向到后续的流表;
在所述分组处理流水线中所述跟踪分组经过的一个或多个后续的流表中的每个流表处,响应于确定所述跟踪分组的所述第一跟踪指示符被设置,将该流表的标识符附加(530)到所记录的所述跟踪分组的路由,清除所述跟踪分组的所述第一跟踪指示符,将所述跟踪分组重新提交到该流表,以及在将所述跟踪分组定向到后续的流表之前,将所述跟踪分组的所述第一跟踪指示符设置为所述跟踪分组的所述第二跟踪指示符的值;以及
响应于在所述分组处理流水线中的出口流表处确定所述跟踪分组的所述第一跟踪指示符被设置,将所述跟踪分组连同所述所记录的所述跟踪分组的路由发送(540)到控制器。
2.根据权利要求1所述的方法,其中,所述分组要通过所述分组处理流水线的其余部分来被处理而不被跟踪。
3.根据权利要求1所述的方法,其中,所述跟踪分组的所述第一跟踪指示符是与所述跟踪分组相关联的元数据字段中的位。
4.根据权利要求1所述的方法,其中,基于应用在流条目中包括的记录-路由动作,流表的标识符被附加到所述所记录的所述跟踪分组的路由。
5.根据权利要求1所述的方法,其中,所述跟踪分组的所述第二跟踪指示符是与所述跟踪分组相关联的分组寄存器中的位。
6.根据权利要求1所述的方法,还包括:
在组处将所述组的标识符附加到所记录的所述跟踪分组的路由,以及
将所述跟踪分组定向到所述出口流表。
7.根据权利要求1所述的方法,还包括:
针对组的每个存储桶,在所述组处将所述组的标识符附加到所记录的所述跟踪分组的路由。
8.根据权利要求1所述的方法,还包括:
响应于确定所述所记录的所述跟踪分组的路由的长度超过预配置的阈值长度,确定所述跟踪分组处于循环中;以及
响应于确定所述跟踪分组处于循环中,将所述跟踪分组连同所述所记录的所述跟踪分组的路由发送到所述控制器。
9.根据权利要求1所述的方法,响应于确定所述分组要被丢弃并且所述分组的第一跟踪指示符被清除,设置所述分组的第一跟踪指示符,设置所述分组的第二跟踪指示符,以及将所述分组定向到入口流表。
10.一种网络设备(604),用作软件定义网络SDN网络中的交换机以在所述交换机的分组处理流水线中跟踪分组,所述网络设备包括:
一组一个或多个处理器(642);以及
非暂时性机器可读存储介质(648),其中存储有跟踪组件(663),所述跟踪组件当由所述一组一个或多个处理器执行时使得所述交换机:接收分组;响应于在所述分组处理流水线中的跟踪表处确定所述分组与跟踪标准相匹配,创建所述分组的要用作跟踪分组的副本,设置所述跟踪分组的第一跟踪指示符,设置所述跟踪分组的第二跟踪指示符,以及将所述跟踪分组定向到后续的流表;在所述分组处理流水线中所述跟踪分组经过的一个或多个后续的流表中的每个流表处,响应于确定所述跟踪分组的所述第一跟踪指示符被设置,将该流表的标识符附加到所记录的所述跟踪分组的路由,清除所述跟踪分组的所述第一跟踪指示符,将所述跟踪分组重新提交到该流表,以及在将所述跟踪分组定向到后续的流表之前,将所述跟踪分组的所述第一跟踪指示符设置为所述跟踪分组的所述第二跟踪指示符的值;以及响应于在所述分组处理流水线中的出口流表处确定所述跟踪分组的所述第一跟踪指示符被设置,将所述跟踪分组连同所述所记录的所述跟踪分组的路由发送到控制器。
11.根据权利要求10所述的网络设备,其中,所述分组要通过所述分组处理流水线的其余部分来被处理而不被跟踪。
12.根据权利要求10所述的网络设备,其中,所述跟踪分组的所述第一跟踪指示符是与所述跟踪分组相关联的元数据字段中的位。
13.根据权利要求10所述的网络设备,其中,基于应用在流条目中指定的记录路由动作,流表的标识符被附加到所述所记录的所述跟踪分组的路由。
14.根据权利要求10所述的网络设备,其中,所述跟踪分组的所述第二跟踪指示符是与所述跟踪分组相关联的分组寄存器中的位。
15.根据权利要求10所述的网络设备,其中,所述跟踪组件在由所述一组一个或多个处理器执行时还使得所述交换机:在组处将所述组的标识符附加到所记录的所述跟踪分组的路由,以及将所述分组的所述副本定向到所述出口流表。
16.一种非暂时性机器可读介质,其中存储有计算机代码,所述计算机代码在由在软件定义网络SDN网络中用作交换机的网络设备的一组一个或多个处理器执行时,使得所述交换机执行用于在所述交换机的分组处理流水线中跟踪分组的操作,所述操作包括:
接收(510)分组;
响应于在所述分组处理流水线中的跟踪表处确定所述分组与跟踪标准相匹配,创建(520)所述分组的要用作跟踪分组的副本,设置所述跟踪分组的第一跟踪指示符,设置所述跟踪分组的第二跟踪指示符,以及将所述跟踪分组定向到后续的流表;
在所述分组处理流水线中所述跟踪分组经过的一个或多个后续的流表中的每个流表处,响应于确定所述跟踪分组的所述第一跟踪指示符被设置,将该流表的标识符附加(530)到所记录的所述跟踪分组的路由,清除所述跟踪分组的所述第一跟踪指示符,将所述跟踪分组重新提交到该流表,以及在将所述跟踪分组定向到后续的流表之前,将所述跟踪分组的所述第一跟踪指示符设置为所述跟踪分组的所述第二跟踪指示符的值;以及
响应于在所述分组处理流水线中的出口流表处确定所述跟踪分组的所述第一跟踪指示符被设置,将所述跟踪分组连同所述所记录的所述跟踪分组的路由发送(540)到控制器。
17.根据权利要求16所述的非暂时性机器可读介质,其中,所述分组要通过所述分组处理流水线的其余部分来被处理而不被跟踪。
18.根据权利要求16所述的非暂时性机器可读介质,其中,所述跟踪分组的所述第一跟踪指示符是与所述跟踪分组相关联的元数据字段中的位。
19.根据权利要求16所述的非暂时性机器可读介质,其中,基于应用在流条目中指定的记录路由动作,流表的标识符被附加到所述所记录的所述跟踪分组的路由。
20.根据权利要求16所述的非暂时性机器可读介质,其中,所述跟踪分组的所述第二跟踪指示符是与所述跟踪分组相关联的分组寄存器中的位。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/IB2018/054346 WO2019239190A1 (en) | 2018-06-13 | 2018-06-13 | Apparatus and method to trace packets in a packet processing pipeline of a software defined networking switch |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112262553A true CN112262553A (zh) | 2021-01-22 |
CN112262553B CN112262553B (zh) | 2022-09-16 |
Family
ID=62976094
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880094536.0A Expired - Fee Related CN112262553B (zh) | 2018-06-13 | 2018-06-13 | 在软件定义网络交换机的分组处理流水线中跟踪分组的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11438254B2 (zh) |
EP (1) | EP3808040B1 (zh) |
CN (1) | CN112262553B (zh) |
WO (1) | WO2019239190A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114710434A (zh) * | 2022-03-11 | 2022-07-05 | 深圳市风云实业有限公司 | 一种基于OpenFlow交换机的多级流表构建方法 |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10454714B2 (en) | 2013-07-10 | 2019-10-22 | Nicira, Inc. | Method and system of overlay flow control |
US10425382B2 (en) | 2015-04-13 | 2019-09-24 | Nicira, Inc. | Method and system of a cloud-based multipath routing protocol |
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 |
US10498652B2 (en) | 2015-04-13 | 2019-12-03 | Nicira, Inc. | Method and system of application-aware routing with crowdsourcing |
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 |
US11706127B2 (en) | 2017-01-31 | 2023-07-18 | Vmware, Inc. | High performance software-defined core network |
US10778528B2 (en) | 2017-02-11 | 2020-09-15 | Nicira, Inc. | Method and system of connecting to a multipath hub in a cluster |
EP3619895A1 (en) | 2017-05-04 | 2020-03-11 | Telefonaktiebolaget LM Ericsson (publ) | Efficient troubleshooting in openflow switches |
US10523539B2 (en) | 2017-06-22 | 2019-12-31 | Nicira, Inc. | Method and system of resiliency in cloud-delivered SD-WAN |
US11522797B2 (en) | 2017-08-30 | 2022-12-06 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and system for tracing packets in software defined networks |
US11005684B2 (en) | 2017-10-02 | 2021-05-11 | Vmware, Inc. | Creating virtual networks spanning 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 |
US11115480B2 (en) | 2017-10-02 | 2021-09-07 | Vmware, Inc. | Layer four optimization for a virtual network defined over public cloud |
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 |
US11171885B2 (en) | 2019-08-27 | 2021-11-09 | Vmware, Inc. | Providing recommendations for implementing virtual networks |
US11044190B2 (en) | 2019-10-28 | 2021-06-22 | Vmware, Inc. | Managing forwarding elements at edge nodes connected to a virtual network |
US11394640B2 (en) | 2019-12-12 | 2022-07-19 | Vmware, Inc. | Collecting and analyzing data regarding flows associated with DPI parameters |
US11489783B2 (en) | 2019-12-12 | 2022-11-01 | Vmware, Inc. | Performing deep packet inspection in a software defined wide area network |
US12041479B2 (en) | 2020-01-24 | 2024-07-16 | VMware LLC | Accurate traffic steering between links through sub-path path quality metrics |
US11438239B2 (en) * | 2020-06-22 | 2022-09-06 | New Relic, Inc. | Tail-based span data sampling |
US11245641B2 (en) | 2020-07-02 | 2022-02-08 | Vmware, Inc. | Methods and apparatus for application aware hub clustering techniques for a hyper scale SD-WAN |
US11709710B2 (en) | 2020-07-30 | 2023-07-25 | Vmware, Inc. | Memory allocator for I/O operations |
US11477116B2 (en) | 2020-08-20 | 2022-10-18 | Nokia Solutions And Networks Oy | Loop detection in ethernet packets |
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 |
US11601356B2 (en) | 2020-12-29 | 2023-03-07 | Vmware, Inc. | Emulating packet flows to assess network links for SD-WAN |
US11792127B2 (en) | 2021-01-18 | 2023-10-17 | Vmware, Inc. | Network-aware load balancing |
US11979325B2 (en) | 2021-01-28 | 2024-05-07 | VMware LLC | Dynamic SD-WAN hub cluster scaling with machine learning |
US12009987B2 (en) | 2021-05-03 | 2024-06-11 | VMware LLC | Methods to support dynamic transit paths through hub clustering across branches in SD-WAN |
US11637768B2 (en) | 2021-05-03 | 2023-04-25 | Vmware, Inc. | On demand routing mesh for routing packets through SD-WAN edge forwarding nodes in 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 |
US12015536B2 (en) | 2021-06-18 | 2024-06-18 | VMware LLC | Method and apparatus for deploying tenant deployable elements across public clouds based on harvested performance metrics of types of resource elements in the public clouds |
US11489720B1 (en) | 2021-06-18 | 2022-11-01 | Vmware, Inc. | Method and apparatus to evaluate resource elements and public clouds for deploying tenant deployable elements based on harvested performance metrics |
US12047282B2 (en) | 2021-07-22 | 2024-07-23 | VMware LLC | Methods for smart bandwidth aggregation based dynamic overlay selection among preferred exits in SD-WAN |
US11375005B1 (en) | 2021-07-24 | 2022-06-28 | Vmware, Inc. | High availability solutions for a secure access service edge application |
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 |
US12034587B1 (en) | 2023-03-27 | 2024-07-09 | VMware LLC | Identifying and remediating anomalies in a self-healing network |
US12057993B1 (en) | 2023-03-27 | 2024-08-06 | VMware LLC | Identifying and remediating anomalies in a self-healing network |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102656844A (zh) * | 2009-12-21 | 2012-09-05 | 瑞典爱立信有限公司 | 路由器中的跟踪支持 |
CN104767720A (zh) * | 2014-01-08 | 2015-07-08 | 中兴通讯股份有限公司 | 一种软件定义网络中OpenFlow消息跟踪和过滤的方法 |
US20150256397A1 (en) * | 2014-03-04 | 2015-09-10 | International Business Machines Corporation | Route Tracing in Software Defined Networks |
US20160218973A1 (en) * | 2015-01-23 | 2016-07-28 | Telefonaktiebolaget L M Ericsson (Publ) | Symmetric flow processing in a software-defined networking (sdn) system |
CN107210976A (zh) * | 2015-01-30 | 2017-09-26 | 华为技术有限公司 | 用于在网络中转发数据分组的方法及其可编程入口和出口节点 |
WO2018046988A1 (en) * | 2016-09-12 | 2018-03-15 | Telefonaktiebolaget Lm Ericsson (Publ) | Efficient troubleshooting in sdn network |
Family Cites Families (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7447907B2 (en) | 2000-04-04 | 2008-11-04 | Ecd Systems, Inc. | Method and system for data delivery and reproduction |
US7711844B2 (en) | 2002-08-15 | 2010-05-04 | Washington University Of St. Louis | TCP-splitter: reliable packet monitoring methods and apparatus for high speed networks |
FI113900B (fi) | 2003-01-27 | 2004-06-30 | Tracker Oy | Henkilöiden kulunvalvontajärjestelmä |
US7610517B2 (en) | 2006-09-14 | 2009-10-27 | Innovasic, Inc. | Microprocessor with trace functionality |
US8561025B1 (en) | 2008-03-31 | 2013-10-15 | Apigee Corporation | Flow and module level detecting and debugging with inclusion of generated log statements |
US8271612B2 (en) | 2008-04-04 | 2012-09-18 | International Business Machines Corporation | On-demand virtual storage capacity |
US9529820B2 (en) | 2008-05-23 | 2016-12-27 | International Business Machines Corporation | Automated content tracking and conversion |
US8335776B2 (en) | 2008-07-02 | 2012-12-18 | Commvault Systems, Inc. | Distributed indexing system for data storage |
US8271645B2 (en) | 2009-11-25 | 2012-09-18 | Citrix Systems, Inc. | Systems and methods for trace filters by association of client to vserver to services |
KR101472695B1 (ko) | 2010-10-15 | 2014-12-12 | 닛본 덴끼 가부시끼가이샤 | 스위치 시스템, 모니터링 집중 관리 방법 |
JP5717057B2 (ja) | 2011-01-17 | 2015-05-13 | 日本電気株式会社 | ネットワークシステム、コントローラ、スイッチ、及びトラフィック監視方法 |
CN103166866B (zh) | 2011-12-12 | 2016-08-03 | 华为技术有限公司 | 生成表项的方法、接收报文的方法及相应装置和系统 |
US9524162B2 (en) | 2012-04-25 | 2016-12-20 | Freescale Semiconductor, Inc. | Apparatus and method for memory copy at a processor |
US10649961B2 (en) | 2012-12-31 | 2020-05-12 | Sandisk Technologies Llc | System and method for selectively routing cached objects |
US8964752B2 (en) | 2013-02-25 | 2015-02-24 | Telefonaktiebolaget L M Ericsson (Publ) | Method and system for flow table lookup parallelization in a software defined networking (SDN) system |
US9369368B2 (en) | 2013-04-06 | 2016-06-14 | Citrix Systems, Inc. | Systems and methods for capturing and consolidating packet tracing in a cluster system |
WO2014179533A1 (en) | 2013-05-01 | 2014-11-06 | Adc Telecommunications, Inc. | Enhanced route tracing |
US9282019B2 (en) | 2013-07-12 | 2016-03-08 | Nicira, Inc. | Tracing logical network packets through physical network |
US9197529B2 (en) | 2013-07-12 | 2015-11-24 | Nicira, Inc. | Tracing network packets through logical and physical networks |
CN104516724B (zh) | 2013-09-26 | 2019-05-31 | Sap欧洲公司 | 对于复制的数据表的表属性管理 |
EP3061210A4 (en) | 2013-10-21 | 2017-09-06 | Nyansa, Inc. | A system and method for observing and controlling a programmable network using a remote network manager |
US9847951B2 (en) | 2013-11-04 | 2017-12-19 | Ciena Corporation | Dynamic bandwidth allocation systems and methods using content identification in a software-defined networking controlled multi-layer network |
EP3072263B1 (en) | 2013-11-18 | 2017-10-25 | Telefonaktiebolaget LM Ericsson (publ) | Multi-tenant isolation in a cloud environment using software defined networking |
US9363178B2 (en) | 2013-12-18 | 2016-06-07 | Telefonaktiebolaget L M Ericsson (Publ) | Method, apparatus, and system for supporting flexible lookup keys in software-defined networks |
US9419874B2 (en) * | 2014-03-27 | 2016-08-16 | Nicira, Inc. | Packet tracing in a software-defined networking environment |
WO2015173759A1 (en) | 2014-05-13 | 2015-11-19 | Telefonaktiebolaget L M Ericsson (Publ) | Virtual flow network in a cloud environment |
US9479409B2 (en) | 2014-08-18 | 2016-10-25 | Telefonaktiebolaget L M Ericsson (Publ) | Passive reachability measurement for inline service chaining |
GB2530513B (en) | 2014-09-24 | 2016-08-24 | Ibm | Assembling response packets |
US9686199B2 (en) * | 2014-10-21 | 2017-06-20 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and system for implementing ethernet OAM in a software-defined networking (SDN) system |
US9917769B2 (en) | 2014-11-17 | 2018-03-13 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and system for virtualizing flow tables in a software-defined networking (SDN) system |
WO2016114750A1 (en) | 2015-01-12 | 2016-07-21 | Hewlett Packard Enterprise Development Lp | Data link layer information |
US9674887B2 (en) | 2015-01-31 | 2017-06-06 | Seeonic, Inc. | Submissive mobile network connection regime of field device in machine-to-machine network |
US20160226578A1 (en) | 2015-02-04 | 2016-08-04 | Catherine H. Yuan | Management of frame alignment events in optical transport networks |
US9667440B2 (en) | 2015-02-10 | 2017-05-30 | Alcatel Lucent | Method and system for identifying an incoming interface using openflow protocol |
WO2016148676A1 (en) | 2015-03-13 | 2016-09-22 | Hewlett Packard Enterprise Development Lp | Determine anomalous behavior based on dynamic device configuration address range |
US10198322B2 (en) | 2015-03-19 | 2019-02-05 | Tata Consultancy Services Limited | Method and system for efficient selective backup strategy in an enterprise |
US9596173B2 (en) | 2015-04-09 | 2017-03-14 | Telefonaktiebolaget L M Ericsson (Publ) | Method and system for traffic pattern generation in a software-defined networking (SDN) system |
KR102321878B1 (ko) | 2015-07-17 | 2021-11-04 | 삼성전자주식회사 | 근거리 무선 통신을 위한 복조기 및 이를 포함하는 근거리 무선 통신 장치 |
WO2017058188A1 (en) | 2015-09-30 | 2017-04-06 | Hewlett Packard Enterprise Development Lp | Identification of an sdn action path based on a measured flow rate |
US20170155574A1 (en) | 2015-12-01 | 2017-06-01 | Transition Networks, Inc. | Connection qualified link pass through |
WO2017118875A1 (en) | 2016-01-05 | 2017-07-13 | Telefonaktiebolaget Lm Ericsson (Publ) | Mechanism to detect control plane loops in a software defined networking (sdn) network |
CN105791129A (zh) | 2016-03-08 | 2016-07-20 | 浪潮集团有限公司 | 一种OpenFlow流表处理无效数据包的方法 |
US10911317B2 (en) | 2016-10-21 | 2021-02-02 | Forward Networks, Inc. | Systems and methods for scalable network modeling |
US10129127B2 (en) | 2017-02-08 | 2018-11-13 | Nanning Fugui Precision Industrial Co., Ltd. | Software defined network controller, service function chaining system and trace tracking method |
EP3619895A1 (en) | 2017-05-04 | 2020-03-11 | Telefonaktiebolaget LM Ericsson (publ) | Efficient troubleshooting in openflow switches |
US11522797B2 (en) | 2017-08-30 | 2022-12-06 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and system for tracing packets in software defined networks |
EP3701687A4 (en) * | 2017-10-27 | 2021-02-17 | Telefonaktiebolaget LM Ericsson (publ) | OPTIMIZED DATA PATH ERROR RECOVERY WITH FOLLOW-UP ENGINE |
-
2018
- 2018-06-13 WO PCT/IB2018/054346 patent/WO2019239190A1/en unknown
- 2018-06-13 EP EP18743079.8A patent/EP3808040B1/en active Active
- 2018-06-13 CN CN201880094536.0A patent/CN112262553B/zh not_active Expired - Fee Related
- 2018-06-13 US US17/041,234 patent/US11438254B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102656844A (zh) * | 2009-12-21 | 2012-09-05 | 瑞典爱立信有限公司 | 路由器中的跟踪支持 |
CN104767720A (zh) * | 2014-01-08 | 2015-07-08 | 中兴通讯股份有限公司 | 一种软件定义网络中OpenFlow消息跟踪和过滤的方法 |
US20150256397A1 (en) * | 2014-03-04 | 2015-09-10 | International Business Machines Corporation | Route Tracing in Software Defined Networks |
US20160218973A1 (en) * | 2015-01-23 | 2016-07-28 | Telefonaktiebolaget L M Ericsson (Publ) | Symmetric flow processing in a software-defined networking (sdn) system |
CN107210976A (zh) * | 2015-01-30 | 2017-09-26 | 华为技术有限公司 | 用于在网络中转发数据分组的方法及其可编程入口和出口节点 |
WO2018046988A1 (en) * | 2016-09-12 | 2018-03-15 | Telefonaktiebolaget Lm Ericsson (Publ) | Efficient troubleshooting in sdn network |
Non-Patent Citations (3)
Title |
---|
SAKIKO KAWAI: "Per-Flow Entry Verification for Legacy SDN", 《THE 22ND ASIA-PACIFIC CONFERENCE ON COMMUNICATIONS (APCC2016)》 * |
YI WANG;DONGZHE TAI;TING ZHANG;BOYANG XU;LINXIAO JIN;HUICHEN DAI: "Flowshadow: a fast path for uninterrupted packet processing in SDN switches", 《2015 ACM/IEEE SYMPOSIUM ON ARCHITECTURES FOR NETWORKING AND COMMUNICATIONS SYSTEMS (ANCS)》 * |
刘俊等: "一种新的SDN架构下端到端网络主动测量机制", 《计算技术与自动化》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114710434A (zh) * | 2022-03-11 | 2022-07-05 | 深圳市风云实业有限公司 | 一种基于OpenFlow交换机的多级流表构建方法 |
CN114710434B (zh) * | 2022-03-11 | 2023-08-25 | 深圳市风云实业有限公司 | 一种基于OpenFlow交换机的多级流表构建方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3808040B1 (en) | 2023-08-02 |
US20210105199A1 (en) | 2021-04-08 |
CN112262553B (zh) | 2022-09-16 |
WO2019239190A1 (en) | 2019-12-19 |
US11438254B2 (en) | 2022-09-06 |
EP3808040A1 (en) | 2021-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112262553B (zh) | 在软件定义网络交换机的分组处理流水线中跟踪分组的装置和方法 | |
US11444864B2 (en) | Optimized datapath troubleshooting with trace policy engine | |
US11665089B2 (en) | Mechanism for hitless resynchronization during SDN controller upgrades between incompatible versions | |
CN109863725B (zh) | 基于最大分段标识符深度的分段路由方法及电子设备 | |
CN108702326B (zh) | 检测sdn控制平面循环的方法、设备和非暂时性机器可读介质 | |
US11115328B2 (en) | Efficient troubleshooting in openflow switches | |
US11362925B2 (en) | Optimizing service node monitoring in SDN | |
EP3510730B1 (en) | Efficient troubleshooting in sdn network | |
CN112262549A (zh) | 用于sdn控制器集群的稳健的节点故障检测机制 | |
KR102066978B1 (ko) | 차별화된 서비스 코드 포인트(dscp) 및 명시적 혼잡 통지(ecn)를 모니터링하기 위한 데이터 플레인을 위한 방법 및 장치 | |
US10721157B2 (en) | Mechanism to detect data plane loops in an openflow network | |
US20220247679A1 (en) | Method and apparatus for layer 2 route calculation in a route reflector network device | |
WO2018042230A1 (en) | Configurable selective packet-in mechanism for openflow switches | |
JP7488922B2 (ja) | イーサネット仮想プライベートネットワークエグレス高速リルートにおける過渡ループ防止 | |
US11218406B2 (en) | Optimized datapath troubleshooting |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20220916 |