经由分组中继使网络功能外部化的系统和方法与流程

文档序号:12182676阅读:172来源:国知局
经由分组中继使网络功能外部化的系统和方法与流程

通常,通信网络包括多个网络设备,诸如路由器、交换机、网络地址转换盒、防火墙、负载均衡器等。网络功能虚拟化(NFV)是指一种将网络节点功能虚拟化为可以连接或链接的构建块以创建通信服务的网络架构结构。



技术实现要素:

本公开的一方面涉及一种使网络功能外部化(externalizing)的网络系统,该网络系统包括网络交换机和分组处理器。所述网络交换机被配置成经由第一网络接口接收分组,所述分组被指向目的地节点而不是所述网络交换机。所述网络交换机还被配置成经由第二网络接口,通过在网络交换机和分组处理器之间的直接物理链路,将所接收到的分组转发至分组处理器以用于处理。所述分组与在分组处理器上执行的虚拟化网络功能的标识符一起转发,并且,所述分组的目的地MAC地址不同于分组处理器的MAC地址。所述网络交换机进一步被配置成从所述分组处理器接收经处理的分组,并且,通过第三网络接口,将所述经处理的分组转发至所述目的地节点。所述分组处理器被配置成从所述网络交换机接收所述分组。所述分组处理器还被配置成基于所述分组包括的标识符,将所接收到的分组路由至虚拟化网络功能模块以用于处理。所述分组处理器还被配置成将所述经处理的分组发送回所述网络交换机。

本公开的另一方面涉及一种网络交换机。所述网络交换机包括处理器和存储计算机可读指令的有形计算机可读介质。所述计算机可执行指令在由所述处理器执行时致使所述处理器:经由第一网络接口接收分组,所述分组被指向目的地节点而不是所述网络交换机。所述计算机可执行指令还致使处理器:对所述分组的报头内的字段进行修改,以包括在所述分组处理上执行的虚拟化网络功能的标识符,并且经由第二网络接口,通过在所述网络交换机和分组处理器之间的直接物理链路,将所接收到的具有经修改的报头的分组转发至分组处理器。所述网络交换机将与所述分组处理器的MAC地址不同的目的地MAC地址与分组一起转发至分组处理器。所述计算机可读指令还致使所述处理器:在所述分组已经被所识别到的虚拟化网络功能处理后,从所述分组处理器接收所述分组,并且,通过第三网络接口将经处理的分组转发至目的地节点。

本公开的再一方面涉及一种分组处理器。该分组处理器包括处理器和存储计算机可执行指令的有形计算机可读介质。所述计算机可执行指令在由所述处理器执行时,致使所述处理器:通过在网络交换机和所述分组处理器之间的直接物理链路,从所述网络交换机接收分组。所接收到的分组包括在分组处理器上执行的要对所述分组执行的虚拟化网络功能的标识符,并且其中,所接收到的分组的MAC地址不同于所述分组处理器的MAC地址。所述计算机可读指令还致使所述处理器:基于所述标识符,将所接收到的所述分组路由至网络功能模块,使用所述网络功能模块对所述分组进行处理,并且,通过直接物理链路,将经处理的分组发送回所述网络交换机。

附图说明

技术人员将理解,本文中所描述的附图仅出于图示目的。要理解,在一些实例中,为了方便理解本文中所描述的实现方式,可以将所描述的实现方式的各个方面按照夸大或放大的方式显示。在附图中,贯穿各个附图,类似的附图标记通常指代类似的特征、在功能上相似的元件和/或在结构上相似的元件。这些附图并未按比例绘制,而是重点放在图示本教导的原理上。附图不旨在以任何方式限制本教导的范围。通过以下图示性的描述并且参照以下附图可更好地了解该系统和方法,在附图中:

图1是网络系统的示意图。

图2是图1所示的网络交换机和分组处理器的框图。

图3是图1所图示的用于使用该系统使网络功能外部化的示例方法的流程图。

图4是用于使用图1所图示的系统使网络功能外部化的示例方法的流程图。

图5A至图5D示出了当根据图3和图4所示的方法的一种示例实现方式通过图1和图2所示的网络交换机和分组处理器来处理分组报头时分组报头的状态。

图6A至图6D示出了其中可以包括在分组处理器上执行的虚拟化网络功能的标识符的各个分组报头字段的位置。

图7是适合在所描述的各种实现方式中使用的计算系统的框图。

为了清楚起见,并未在每个附图中标注每一个组件。附图并不旨在按比例绘制。在各个附图中,类似的附图编号和标号表示类似的元件。

具体实现方式

以上所介绍并且下面将详细讨论的各种概念可以按照众多方式中的任何方式来实现,这是因为所描述的概念不限于任何具体形式的实现方式。提供特定实现方式和应用的示例主要是为了进行说明。

本文中提到的系统和方法提供了使网络功能外部化的机制。在网络交换机和分组处理器之间建立直接链路。在一些实现方式中,发送至或来自网络交换机和分组处理器的分组包括标识符,所述标识符识别要由分组处理器处理的网络功能或者已经由分组处理器处理的网络功能。

图1是网络系统100的示意图。使网络功能外部化的网络系统100包括网络交换机102和分组处理器104,该分组处理器104经由直接链路106直接连接至网络交换机102。直接链路106可以是,例如,直接的以太网或光缆。

在一些实现方式中,网络交换机102是多端口网络桥接器,该多端口网络桥接器使用硬件地址来在开放系统互连(OSI)模型的数据链路层(层2)上处理并且转发数据。例如,网络交换机102可以是具有5、8、10、24或48个端口的以太网交换机(也称为网络接口)。网络交换机102还可以是具有多于50个端口的高吞吐量交换机。在一些实现方式中,网络交换机102可以是具有网络层(层3)路由和交换能力的路由器,或是4-7层交换机。在一些实现方式中,网络交换机102可用作指向企业网络或数据中心的网关。

网络交换机102连接至其它网络设备,包括进一步连接至计算机114、116、118、120、124和126的其它网络交换机108和110。网络交换机102还连接至互联网112和分组处理器104。网络交换机102处理并且转发从网络交换机108和110、以及从例如互联网112接收到的数据。在一些其它实现方式中,网络交换机不连接至互联网112,相反,网络交换机位于在局域网与网络之间的网关上,或位于在期望实现网络功能虚拟化的网络内的任何其它位置处。为了说明目的,网络交换机102包括编号为1到52的52个端口。如图1所示,网络交换机102通过端口1连接至交换机108、通过端口2连接至交换机110、通过端口49连接至互联网112、且通过端口52连接至分组处理器104。在一些实现方式中,实现与分组处理器连接的端口是专用控制平面端口,诸如,OpenFlow或OpenFlow兼容端口。

网络交换机102还包括交换机处理器130。该交换机处理器130执行路由、转发、和网络功能外部化功能,如下面进一步所示。

当网络交换机102接收到分组时,在将该分组路由至网络路径上的下一个节点之前,交换机处理器130使网络交换机102将该分组转发至分组处理器104以进行外部化网络功能的处理。

在网络功能外部化过程的简要综述中,在从网络内的设备接收到针对网络外的目的地节点(例如,跨互联网112)的分组后,交换机(诸如,交换机108)将该分组转发至网络交换机102,该网络交换机102是网络路径上的下一跳。网络交换机102接收来自交换机108的分组。交换机处理器130对分组进行检查以确定在将分组转发至下一跳之前是否需要对该分组执行任何网络功能。如果识别到这种网络功能,则利用在分组处理器104上的对应虚拟化网络功能模块的标识符来标记该分组,并且将分组经由直接链路106转发至分组处理器104。分组处理器104基于标识符对分组进行处理,利用指示已经对该分组执行了特定网络功能的另一标识符来标记该分组,并且将经处理的分组发送回网络交换机102。网络交换机102接收经处理的分组,并且将经处理的分组传送至网络路径上的下一节点。

在一些实现方式中,分组处理器104可以是执行存储在有形计算机可读介质上的计算机可执行指令的通用处理器。例如,分组处理器104可以实现在类似于图7所示的架构中。在一些实现方式中,计算机服务器托管分组处理器104。在一些实现方式中,交换机处理器130可以是专用电路或者可以包括专用电路,诸如专用集成电路(ASIC)或现场可编程门阵列(FPGA)。

图2是图1所示的网络交换机102和分组处理器104的框图。如上所述,网络交换机102具有多个端口,通过该多个端口来传送分组。网络交换机102包括交换机处理器130,该交换机处理器130包括路由模块212、转发模块215、功能外部化模块214。在一些配置为用于软件定义网络(SDN)的实现方式中,交换机处理器130可以省略路由模块214,相反,依靠包括在中央SDN处理器中的相似模块来远程地实现路由模块214的功能。这种集中式SDN处理器然后可以,例如,通过提供类似于以下讨论的转发表来通过控制平面或数据平面连接对网络交换机进行配置。

在一些实现方式中,路由模块212生成并且维护路由规则集合。例如,路由模块生成并且维护路由信息库(RIB)。该路由信息库存储反映网络(或其部分)的拓扑的数据。路由模块212进一步配置成基于所存储的拓扑信息来确定至网络内的其它节点的路线。基于所确定的路线,路由模块212可以配置被配置成填入转发表以供转发模块215使用。转发表存储映射分组目的地IP地址、地址范围、或者至下一跳节点的流标识数据的信息、节点的MAC地址、和网络交换机102上的端口(经由该端口可以到达下一跳节点)。在一些实现方式中,转发表可以进一步存储在将与各种流相关联或者发往各个IP地址的分组转发至下一跳之前要应用于该分组的网络功能列表。在其它的实现方式中,要应用于分组的网络功能列表可以与其它分组信息相关联,包括且不限于路由信息或4层分组数据。在一些其它实现方式中,要应用的网络功能列表可以存储在与转发表不同的数据结构中。

转发模块215被配置成应用包括在由路由模块212填入的转发表中的转发指令。例如,当在网络交换机102处接收到分组后,转发模块215可以提取目的地IP地址(或者包括多个数据字段值的数据元组,诸如源IP地址和目的地IP地址以及端口号,或者用于识别流的其它数据字段),并且对转发表执行查找。如果转发表指示在转发分组之前将一个或多个网络功能应用至该分组,则转发模块将该分组传递至指示要执行的功能的功能外部化模块214。如果不需要由任何网络功能对分组进行处理,或者如果这种处理已经完成,则转发模块215更新分组报头的目的地MAC地址以匹配下一跳节点的MAC地址,并且通过在转发表中识别到的端口转发分组。

功能外部化模块214实现将分组转发至分组处理器并且管理使网络功能外部化的工作流的逻辑。例如,功能外部化模块214存储专用于与(一个或多个)分组处理器通信的一个或多个端口的(一个或多个)标识符。功能外部化模块214也维护功能表,该功能表列举了由(一个或多个)分组处理器处理的特定网络功能。在一些实现方式中,网络交换机102具有专用于分组处理器104的单个端口。例如,如图2所图示,端口52专用于分组处理器104。专用的端口可以是普通的数据平面端口,或者可以是专门的控制平面端口。通过端口52对需要网络功能处理的任何分组进行路由,以将分组转发至分组处理器204。在一些其它实现方式中,网络交换机102连接至多个网络功能处理服务器内的多于一个的分组处理器。在这种实现方式中,网络交换机102可具有多个端口,多个端口中的每个端口专用于特定的分组处理器。在其它实现方式中,可以经由网络交换机102上的单个端口到达多个网络功能处理服务器。对于多个网络功能处理服务器而言,在一些实现方式中,每个服务器专用于网络功能的子集。例如,第一服务器可以专用于加密IP分组的网络功能,而另一服务器可以专用于网络地址转换的网络功能。在其它实现方式中,每个服务器对相同的网络功能进行处理,并且,根据本领域的普通技术人员已知的众多负载均衡技术中的一种负载均衡技术,将分组转发至一个或另一个服务器。

功能外部化模块214可以进一步被配置成控制将外部化网络功能应用于分组的顺序。例如,在从具有要应用于分组的网络功能集合的转发模块215接收到分组后,功能外部化模块214被配置成每次执行一个功能,对分组报头进行修改以识别要应用至分组的下一个功能、将分组转发至分组处理器104进行处理、并且等待接收从分组处理器104返回的分组。如果完成了所有的处理,则功能外部化模块将分组返回至转发模块215。如果需要进一步处理,则功能外部化模块214再次对分组报头进行修改,并且将分组返回至分组处理器104。在一些其它实现方式中,在接收到分组后,功能外部化模块214对报头进行修改以在其返回分组之前识别要由分组处理器104执行的多个功能。例如,分组处理器104可以将MPLS标签栈添加至分组报头。每个MPLS标签识别要由分组处理器104执行的不同功能。在这种实现方式中,在完成所有识别到的处理后,分组处理器104将分组返回至网络交换机102。

在所有这种网络功能之中,为每种要执行的网络功能分配唯一标识符。同样,在所有这种网络功能输出之中,为每种网络功能的输出分配唯一标识符。同样,在对分组报头进行修改时,功能外部化模块214可以将要执行的功能的标识添加至分组报头。当完成处理时,分组处理器104可以用指示该功能已经被成功完成的标识符来替代要执行的功能的标识符。基于上述的标识符机制,直接链路106可以携带多个分组,并且分组处理器104可以处理多个网络功能。

标识符(诸如,如上所述的标识符),可以包括在已经包括在层2分组或层3分组中的各种字段中,所述字段包括MAC地址字段(例如,目的地MAC地址字段或源MAC地址字段)、VLAN标记字段、通用路由封装(GRE)报头字段、多协议标签交换(MPLS)报头字段(或在MPLS标签中)等。将关于图6A至图6D进一步详细描述使用各种字段进行的分组标记。在一些实现方式中,利用多于一个的标识符来标记分组,指示要执行多于一个的网络功能或者已经执行了多于一个的网络功能。在将专用控制平面端口(诸如,OpenFlow端口)用作在网络交换机102与分组处理器104之间的直接物理连接的实现方式中,可以将标识符置于上述的分组报头字段中的任何分组报头字段中,而将分组封装在诸如OpenFlow PacketIn或PacketOut消息的控制平面分组内。在一些实现方式中,对于转发至分组处理器104的分组而言,相反或者另外地,标识符可以连同封装一起被包括在诸如OenFlow PacketIn消息中的“cookie”字段中。

在一些实现方式中,网络功能是单向的。即,仅需要在分组从外地网络(诸如,互联网)进入网络时执行该功能,而不是在分组离开网络时执行该功能,反之亦然。这种网络功能的示例是访问控制列表(ACL)功能。ACL功能通过将分组中的信息与访问控制列表(诸如源IP地址的黑名单、或者报头元组)进行比较来过滤掉分组以实施安全策略,例如,过滤掉已知的来自诈骗IP地址的分组或具有与恶意行为相关联的分组相关联的已知签名的分组。在一些其它实现方式中,ACL功能还可以应用于离开网络的分组,例如,通过阻挡源于某些所识别的设备的IP地址的分组来防止敏感信息在未经授权的情况下泄漏。

在其它实现方式中,网络功能成对出现。例如,网络地址转换(NAT)有两种功能,即NAT和DE-NAT。NAT将源于网络内的分组中的私有源标识符信息(诸如内部源IP地址和/或端口号)转换为公共源标识符信息(诸如外部源IP地址和/或端口信息)以通过外部网络传送分组。DE-NAT的功能与此相反。DE-NAT将从网络外接收到的分组中的目的地信息转换成在网络内使用的目的地的对应私有目的地信息。为了适应网络功能的该二元性,在一些实现方式中,可以将双向网络功能与四个标识符相关联:LOCAL_To_Be_Processed标识符、REMOTE_To_Be_Processed标识符、LOCAL_Processed标识符、以及REMOTE_Processed标识符。

在一些实现方式中,每种功能仅与单个标识符相关联,并且将LOCAL vs.REMOTE以及To_Be_Processed和Processed的区别表示在被添加至所指定的数据字段中的分组报头或者附在功能标识符结尾处的相应的1比特中。同样,如果分组处理器104可以携带例如八种不同的功能,则可以仅用五比特来捕获该功能连同其对应的LOCAL vs.REMOTE以及To_Be_Processed和Processed。在一些其它实现方式中,分组的状态(To_Be_Processed或者_Processed)可从分组流动的方向推断出。例如,假设已经对从网络处理器104接收到的分组进行了处理,并且假设需要对从网络交换机102接收到的分组进行处理,则不需要第二。在这种实现方式中,在能够处理八种网络功能的分组处理器的上述例示例中,可以仅用四比特来捕获要应用至分组的功能和分组状态。如果分组处理器104执行更少的功能则可以使用更少的比特数,并且如果执行更多的功能则可以使用更多的比特数。

LOCAL标签和REMOTE标签可通过指示分组的源或目的地来识别要执行的功能的特定版本。例如,在一些实现方式中,LOCAL标签可以指示分组源于网络内。因此,相对于NAT功能而言,LOCAL标签指示要执行的NAT功能为NAT。与之相反,REMOTE标签指示分组源于网络外。因此,相对于NAT功能而言,REMOTE标签指示要执行的功能为DE-NAT。

仍然参照图2,分组处理器104包括内核交换机202和各种网络功能处理模块2041至204n(统称为“功能模块204”)。内核交换机202是在分组处理器104的操作系统的内核内执行的交换过程。在一些实现方式中,每个功能模块204被实现为单独的虚拟机器,并且,内核交换机202被实现在也在分组处理器104上运行的管理程序中。

当分组处理器104从网络交换机102接收到分组时,将该分组存储在分组处理器104的存储器中的缓冲区中。内核交换机202依次对缓冲区中的每个分组进行处理。在对分组进行处理时,内核交换机202对分组报头进行分析以识别添加至分组的标识符。在一些实现方式中,内核交换机维护查找表或者具有对查找表的访问权限,查找表将标识符与其对应的功能模块204相关联。如果分组包括To_Be_Processed标识符(或者,如果设置有To_Be_Processed),则内核交换机202将分组存储在与适当的功能模块204相关联的缓冲区中。在虚拟机器实现方式中,将分组传递至对应的虚拟机器。如果分组包括Processed标识符(或者,未设置To_Be_Processed),则内核交换机202使分组处理器104通过直接链路106将分组转发回网络交换机102。在一些实现方式中,每一个网络功能的LOCAL和REMOTE版本(在适用的情况下)由相同的功能模块204(或者虚拟机器)执行。在这种情况下,要按照网络功能的任何版本处理的所有分组都存储在相同的缓冲区中(或者传递至相同的虚拟机器)。在一些实现方式中,每一个网络功能的LOCAL和REMOTE版本(如果适用的话)都实现为具有单独的相关联的缓冲区(和存储器空间)的单独的功能模块204(或者虚拟机器)。缓冲区可以实现为在数据处理器的高速缓存或者其它系统存储器内的专用存储器位置。

网络功能处理模块204被指定为对特定网络功能进行处理。分组处理器104可以根据分组存储器的处理能力和所实现的网络功能的数目来执行每一个网络功能模块204的一个或多个实例。如果是在公共环境内执行,则相同的网络功能的实例可以共享公共的缓冲区空间。在一些其它实现方式中,网络功能的每一个实例都在其自己的虚拟机器环境中执行。要在分组处理器104上实现的合适的网络功能的示例包括但不限于IP分组加密(IPSec)、NAT、策略实施、ACL、或者其它防火墙或者网络安全功能(诸如拒绝服务攻击或者侵入检测)。功能模块204中的每一个功能模块204可以实现为存储在有形计算机可读介质上并且由包括在分组处理器104内的多个处理器执行的计算机可执行指令。

在一些实现方式中,利用与多个网络功能相对应的多个标识符来标记分组。内核交换机202对工作流进行管理以确保实现多个网络功能。多个标识符可以作为单独的标签来级联或者存储,并且内核交换机202对多个标识进行解析和分离。例如,在其中功能外部化标识符被存储在MPLS标签中的分组中,整个分组连同其所有标签都依次序转发至每个所指示的功能模块204。当功能模块对分组完成了对应的功能后,功能模块用Processed标识符来替代在对应的MPLS标签中的To_Be_Processed标识符。当所有的MPLS标签都包括Processed标识符时,内核交换机202使分组处理器104将具有修改后的标签的分组返回网络交换机102。在其它实现方式中,如上所讨论的,网络交换机104的外部化模块214协调多个网络功能的执行,并且在需要时,多次转发需要应用至分组处理器的多个网络功能的分组,每一次针对一个要执行的功能,并且每一次具有不同的标识符。当在完成最后一个功能后将分组返回网络交换机102时,外部化模块214将分组返回转发模块215以进行进一步处理。

图3是使用图1所图示的系统使网络功能外部化的示例方法300的流程图。方法300包括:接收分组(步骤302)、利用要对分组执行的网络功能来标记分组(步骤303)、将所接收的分组转发至分组处理器(步骤304)、从分组处理器接收经处理的分组(步骤306)、并且将经处理的分组转发至目的地节点(步骤308)。

方法300包括接收分组(步骤302)。如上所述,网络交换机从在其本地网络、互联网或者其它网络上的其它网络设备接收分组。例如,网络交换机102从网络交换机108和100以及从互联网112接收分组。

用要对分组执行的网络功能的标识符来标记分组(步骤303)。例如,利用网络交换机102,在分组到达转发模块215时,转发模块基于分组报头中的数据针对其转发表执行查找以识别下一跳节点和要执行的任何网络功能。如果要执行网络功能,则将分组传递至功能外部化模块214,功能外部化模块214如上所述地用一个或多个网络功能的标识符来标记分组。由于存在将网络交换机102与分组处理器104连接的直接链路106,所以可以将分组转发至分组处理器104,而不需要进一步对已经存在于分组报头中的层2信息进行路由或者修改。在各种实现方式中,功能外部化模块214可以将要对分组执行的期望功能的标识符包括在多个不同的层2数据字段中的一个层2数据字段中,而不会对接收分组或者执行指定网络功能的分组处理器104造成干扰。例如,网络功能标识符可以包括在以下中但不限于在以下中:源MAC地址字段、目的地MAC地址字段、VLAN标记字段、GRE报头字段、MPLS报头字段、或者添加的MPLS标签。将相对于图6A至6D来说明描述使用不同的字段进行标记。

网络交换机通过直接链路将接收到的分组转发至分组处理器(例如分组处理器104)(步骤304)。直接链路可以是耦合至网络交换机的专用数据平面或者控制平面端口以及分组处理器的网络接口的电缆或者光缆。在一些实现方式中,在将接收到的分组转发至分组处理器后,功能外部化模块214继续对其队列中的下一个分组进行处理。即,网络交换机102在开始处理另一个分组之前不需要等待分组处理器104的处理结果。

网络交换机从分组处理器接收经处理的分组(步骤306)。如上所述,在由在分组处理器上执行的适当的功能模块(例如功能模块204)处理之后,用识别已经执行的网络功能的标识符来标记经处理的分组,并且然后通过专用链路将经处理的分组发送回网络交换机。在一些实现方式中,网络功能处理导致分组被丢弃,例如,由于ACL或者其它防火墙网络功能的否定发现结果。在这种情况下,分组处理器可以将这种事件的指示发送至网络交换机,使得网络交换机可以停止等待分组的返回。

网络交换机然后将经处理的分组转发至目的地节点(步骤308)。在完成网络功能处理后,将分组返回转发模块215,转发模块215完成该转发过程。例如,分组的目的地MAC地址可以填有在通向分组最终目的地路径上的下一个跳节点的MAC地址。然后,可以将分组传递至连接至下一跳节点的端口的队列以用于传输。

图4是通过使用图1所示的系统使网络功能外部化的示例方法400的流程图。

方法400包括:从网络交换机接收分组(步骤402)、将所接收的分组路由至虚拟化网络功能模块以由该模块进行处理(步骤404)、利用指定的网络功能模块对分组进行处理(步骤405)、以及将经处理的分组发送回网络交换机(步骤406)。

方法400包括由分组处理器(诸如分组处理器104)接收来自网络交换机(诸如网络交换机102)的分组(步骤402)。利用网络交换机,通过直接物理链路(诸如物理链路106)来接收分组。在一些实现方式中,利用要在分组处理器上执行的网络功能的标识符来标记所接收的分组。分组的目的地MAC地址不同于分组处理器的MAC地址。出于至少两个不同的原因,目的地MAC地址可以不同。在一些实现方式中,目的地MAC地址不同于分组处理器的MAC地址的原因在于,网络交换机的功能外部化模块(诸如功能外部化模块214)将要执行的功能的标识符存储在分组的目的地MAC地址中。在一些其它实现方式中,将功能标识符存储在不同的报头字段中,但是,由于在将分组转发至分组处理器时,分组还未在网络交换机处进行层2路由,所以目的地MAC地址仍然保存着网络交换机102的MAC地址。为了允许分组处理器在分组的目的地MAC地址与其自己的MAC地址不匹配的情况下仍然能够接收分组并且对分组进行处理,在各种实现方式中,可以将分组处理器或者其网络端口编程或者以其他方式配置为:接受具有任何目的地MAC地址的分组、具有网络交换机的目的地MAC地址的分组、或者其目的地MAC地址包括与在分组处理器上执行的网络功能相关联的功能标识符中的一个或多个功能标识符的分组。

数据处理器将所接收的分组路由至网络功能模块(诸如功能模块204中的一个功能模块)(步骤404)。例如,基于分组报头中的功能标识符,分组处理器(例如,经由内核交换机202)将所接收的分组传递至执行网络功能模块的虚拟机器,该网络功能模块被指定为对标识符所识别的网络功能进行处理。

分组处理器然后利用指定的网络功能模块对分组进行处理(步骤405)。如上所述,网络功能模块可执行但不限于ACL或者其它防火墙处理、IPsec(加密或者解密)、策略实施、以及NAT(NAT或者DE-NAT)。在完成处理后,将分组报头更新为包括指示完成处理的标识符。

分组处理器将经处理的分组发送回网络交换机(步骤406)。如上所述,例如,在指定的网络功能模块对网络功能进行处理之后,用所执行的网络功能和指示已经执行了对应的网络功能的标识符来更新分组。在由内核交换机(诸如内核交换机202)进行处理后,分组处理器104将处理后的分组发送回网络交换机102。

在一些实现方式中,对于由分组处理器所接收(在步骤402中)的给定的分组集合而言,分组处理器可能不会将相同数目的分组返回网络交换机。例如,可以利用不同的目的地址以复制的形式将分组发送回网络交换机,使得将分组发送至多个目的地节点。在其它情况下,可以将所接收的分组的数据分为多个更小的分组或者组合为更少数目的分组以适应各种发送和接收设备的不同缓冲区的大小。相似地,数据加密通常会导致用于表示数据的比特数增加,从而可能导致需要将加密的数据碎片化为多个分组以适应分组大小的限制。对某些分组进行解密而产生的数据可以能够使得解密后的数据与加密时曾用于传送数据的少量分组一起转发。在一些实现方式中,在将网络功能应用于分组时,分组处理器可以为网络交换机生成全新的分组以便发送。例如,DE-NAT功能可以向连接的主机发起ARP请求来获得合适的目的地数据以插入正在进行处理的分组中。

为了图示图3和图4所示的上述方法300和方法400,图5A至图5D示出了由图1和图2所示的网交换机102和分组处理器104根据方法300和方法400的一个示例实现方式来处理分组报头时分组报头的状态。

图5A示出了分组的报头500,在该分组被网络交换机102接收时(在步骤302中),被发往与网络交换机102处于同一个管理网络中的计算机,例如计算机114。在其它报头字段之中,分组500具有源MAC地址502字段、目的地MAC地址字段504、源IP地址字段506、和目的地IP地址字段508。在网络交换机102处最初接收到目的地MAC地址字段504后,目的地MAC地址字段504保存网络交换机102的MAC地址。源MAC地址字段502保存网络路径上的前一跳(诸如在网络交换机前的跳)的MAC地址。源IP地址字段506包括发送方的源IP地址。目的地IP地址字段508保存与分组的终端接收方(诸如计算机114)相关联的公共IP地址。

图5B示出了在由功能外部化模块214处理(步骤303中)后的分组报头500的状态,该处理指示将由DE-NAT功能对分组进行处理以将包括在目的地IP地址字段508中的计算机114的公共目的地IP地址从公共IP地址转换为计算机114的私有内部IP地址。由于分组处理器104和网络交换机102通过直接链路106连接,所以网络交换机102可以直接将分组转发至分组处理器104,而不需要将分组处理器104的MAC地址包括在目的地MAC地址字段中。因此,将DE-NAT功能标识符包括在分组报头500的目的地MAC地址字段504中。更具体地,通过标签NAT_REMOTE_To_Be_Processed来指示DE-NAT功能。如上所指示的,DE-NAT功能是对远程生成的分组执行的NAT功能,而NAT是对LOCAL分组(即,在网络内生成的分组)执行的NAT功能。

在将标识符NAT_REMOTE_To_Be_Processed包括在目的地MAC地址字段504中后,网络交换机102通过直接链路106将分组转发至分组处理器104(步骤304中)。分组处理器104接收具有如图5B所示的报头500的分组(步骤402中)。

图5C示出了在将分组报头返回网络交换机时(步骤406中)已经由在分组处理器上执行的功能模块204对其进行了处理(步骤405中)之后的分组报头500。如图5C所示,作为由分组处理器104处的DE-NAT功能进行的处理的一部分,将目的地IP地址字段508更新为包括终端接收方计算机(计算机114)的内部私有IP地址。为了使网络交换机102将分组识别为已经经过处理,分组处理器 104用NAT_REMOTE_Processed标识符替代目的地MAC地址字段504中的功能标识符。

图5D示出了在由网络交换机将分组报头500转发至其目的地节点(步骤308中)时的分组报头500。如图5D所示,相对于图5C,目的地MAC地址字段504已经被更新为指示通往目的地节点(即计算机114)的路径上的下一跳节点的MAC地址。

如上所述,上述示例依靠对分组的目的地MAC地址进行修改来指示需要对分组执行或者已经对分组执行了哪个网络功能,因此,上述示例仅是方法300和方法400的一种示例实现方式。在其它实现方式中,还可以将功能标识符包括在其它报头字段中。

图6A到图6D图示出了与分组相关联的各种字段,诸如,(一个或多个)MAC地址字段、VLAN标记字段、通用路由封装报头字段、以及多协议标签转换报头字段,其中,可以包括在分组处理器上执行的虚拟化网络功能的标识符。

图6A示出了用于IPv6分组的典型分组报头。典型分组包括层2数据链路层(例如以太网)报头字段、层3网络层(例如IPv4或者IPv6)报头字段、以及4层传输层(例如TCP)报头字段。图6A突出显示了在典型IPv6分组中目的地MAC地址字段602的位置。

如上所述,在一些实现方式中,前述的网络功能标识符可以包括在VLAN标记字段604中(诸例如由IEEE 802.1Q定义)。图6B示出了在IPv6分组报头中包括在以太网类型字段的第一部分中的VLAN标记字段604的位置。

在一些其它实现方式中,网络功能标识符可以包括在通用路由封装(GRE)报头字段606中(例如由RFC2784定义)。在图6C中示出了GRE字段606的位置。GRE报头字段606插入在报头中的以太网类型字段与IP版本字段之间。

在一些其它实现方式中,网络功能标识符可包括在MPLS报头字段608中(例如由RFC3031所定义)。图6D示出了IPv6分组中的MPLS报头字段608的位置。MPLS报头字段608包括在与GRE报头字段606相似的位置中。在一些实现方式中,MPLS报头字段608包含一个或多个标签(即标签栈)。一个或者多个网络功能标识符可以包括在MPLS报头字段608内的相应MPLS标签中。

图7是适合用于网络交换机和分组处理器的示例计算系统141的框图。例如,计算机系统141适合用于实现分组处理器104。在广义概述中,计算系统141包括用于根据指令执行操作的至少一个处理器148、和用于存储指令和数据的一个或多个存储器设备144或者149。所图示的示例计算系统141包括经由总线142与存储器144通信的一个或多个处理器148、具有用于连接至网络(未示出)的网络接口端口146的至少一个网络接口控制器143、以及例如输入/输出(“I/O”)组件147的其它组件145。通常,(一个或多个)处理器148将执行从存储器接收到的指令。所图示的(一个或多个)处理器148合并高速缓存149或者直接连接至高速缓存149。在一些实例中,指令从存储器144读取至高速缓存149,并且从高速缓存149由(一个或多个)处理器148执行。

更加具体地,(一个或多个)处理器148可以是对指令进行处理的任何逻辑电路,所述指令例如是从存储器144或者高速缓存149取出的指令。在许多实施例中,(一个或多个)处理器148是微处理器单元或者专用处理器。计算设备141可以基于任何处理器或者处理器集合而能够进行本文描述的操作。(一个或多个)处理器148可以是单核处理器或者(一个或多个)多核处理器。(一个或多个)处理器148可以是多个不同的处理器。在一些实现方式中,(一个或多个)处理器148被实现为在一个或多个“芯片”上的电路。

存储器144可以是适合用于存储计算机可读数据的任何设备。存储器144可以是具有固定存储的设备或者用于读取可移动存储介质的设备。示例包括所有形式的非易失性存储器、介质和存储器设备、半导体存储器设备(例如,EPROM、EEPROM、SDRAM、以及闪速存储器设备)、磁盘、磁光盘、以及光盘(例如,CD ROM、DVD-ROM、或者盘)。计算系统141可以具有任何数目的存储器设备144。

高速缓存存储器149通常是放置为非常接近(一个或多个)处理器148以获得快速访问时间的计算机存储器的形式。在一些实现方式中,高速缓存存储器149是(一个或多个)处理器148的一部分,或者位于与(一个或多个)处理器148相同的芯片上。在一些实现方式中,存在多级高速缓存存储器149,例如,L2高速缓存层和L3高速缓存层。

网络接口控制器149经由网络接口146(有时称为网络接口端口)管理数据交换。网络接口控制器143处理用于网络通信的OSI模型的物理层和数据链路层。在一些实现方式中,网络接口控制器的一些任务由(一个或多个)处理器148中的一个或多个处理。在一些实现方式中,网络接口控制器143合并到处理器148中,例如,作为在相同芯片上的电路。在一些实现方式中,计算系统141具有由单个控制器143控制的多个网络接口146。在一些实现方式中,计算系统141具有多个网络接口控制器143。在一些实现方式中,每个网络接口146都是物理网络链路(例如cat-5以太网链路)的连接点。在一些实现方式中,网络接口控制器143支持无线连接并且接口端口146是无线(例如无线电)接收器/发射器(例如,用于IEEE 802.11协议、近场通信“NFC”、蓝牙、BLE、ANT、或者任何其它无线协议中的任一个)。在一些实现方式中,网络接口控制器143实现诸如以太网的一个或多个网络协议。通常,计算设备141通过网络接口146经由物理链路或者无线链路与其它计算设备交换数据。网络接口146可以直接链接至另一设备或者经由中间设备链接至另一设备,所述中间设备例如将计算设备141连接至诸如互联网等数据网络的网络设备,诸如集线器、桥接器、交换机或者路由器。

计算系统141可包括一个或多个输入/输出(“I/O”)组件147,或者是为一个或多个输入/输出(“I/O”)组件147提供接口。输入设备包括但不限于:键盘、麦克风、触摸屏、脚踏开关、传感器、MIDI设备、以及诸如鼠标或者轨迹球的指示设备。输出设备包括但不限于:视频显示器、扬声器、可刷新的点字终端、灯、MIDI设备、以及2D打印机或者3D打印机。

其它组件145可以包括I/O接口、外部串行设备端口、和任何附加的协同处理器。例如,计算系统141可以包括连接输入设备、输出设备、或者附加的存储器设备(例如,便携式闪速驱动器或者外部媒体驱动器)的接口(例如,通用串行总线(“USB”)接口)。在一些实现方式中,计算设备141包括诸如协同处理器的附加设备145。例如,数学协同处理器可以协助处理器148进行高精度或者复杂计算。

本主题的实现方式以及在本说明书中描述的操作可以实现在数字电子电路中,或者实现在包含在有形介质、固件或者硬件上的计算机软件中,包括在本说明书中公开的结构和结构等效物、或者实现在它们中的一个或多个的组合中。本说明书中描述的主题的实现方式可以实现为体现在有形介质(即,一个或多个计算机程序指令的模块)上的、编码在一个或多个计算机存储介质上以供数据处理装备执行或者用于控制数据处理装备的操作的一个或多个计算机程序。计算机存储介质可以是或者包括在计算机可读存储设备、计算机可读存储基板、随机或者串行存取存储器阵列或者设备、或者一个或多个上述设备的组合中。计算机存储介质也可以是或者包括在一个或多个单独的组件或者介质(例如,多个CD、盘、或者其它存储设备)中。计算机存储介质可以是有形的和非暂时性的。

可以用任何形式的编程语言(包括编译语言、解译语言、陈述性语言、和过程语言)来编写计算机程序(也称为程序、软件、软件应用、脚本、或者代码),并且可以按照任何形式(包括:作为独立的程序或者模块、组件、子例程、对象、或者适合用于计算环境的其它单元)来部署该计算机程序。计算机程序可以但并非必须与文件系统中的文件对应。可以将程序存储在保持其它程序或者数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中、存储在专用于所探讨中的程序的单个文件中、或者存储在多个协作文件(例如,存储一个或多个模块、库、子程序、或者部分代码的文件)中。可以将计算机程序部署为在一个计算机上执行或者在位于一个站点处或者分布在多个站点中并且通过通信网络互相连接的多个计算机上执行。

可以通过一个或多个可编程处理器来进行本说明书中所描述的过程和逻辑流程,该一个或多个可编程处理器执行通过操作输入数据并且生成输出来执行动作的一个或多个计算机程序。也可以通过专用逻辑电路(例如,现场可编程门阵列(“FPGA”)或者专用集成电路(“ASIC”))来执行过程和逻辑流程,并且也可以将装备实现为该专用逻辑电路或者专用集成电路。

虽然本说明书包含了许多具体实现细节,但是不应该将这些细节视为对任何发明或者可能被要求的内容的范围的限制,而是作为针对特定发明的特定实现方式的特征的描述。在本说明书中在单独实现方式的背景下描述的某些特征也可以组合地实现在单个实现方式中。相反,在单个实现方式的背景下描述的各种特征也可以单独地或者按照任何合适的子组合实现在多个实现方式中。此外,虽然上面可能将特征描述为以某些组合来起作用并且最初甚至同样地对该特征进行了要求,但是在一些情况下可以从组合中删除来自所要求的组合的一个或多个特征,并且所要求的组合可以指向子组合或者子组合的变化。

相似地,虽然在附图中按照特定顺序示出了操作,但是不应该将其理解为需要按照所示的特定顺序或者按照相继的顺序来执行这种操作,或者需要执行所有图示的操作以实现期望的结果。在某些情况下,多任务处理和并行处理可以是有利的。此外,不应该将在上述实施例中的各种系统组件的分离理解为在所有实施例中需要这种分离,并且应该理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或者封装到多个软件产品中。

对“或者”的引用可以理解为是包容性的,从而使用“或者”来描述的任何术语可以指示上述术语中的单个、多于一个、和所有中的任何一种。标签“第一”、“第二”、“第三”等并不必然意味着表示排序,并且通常仅用于区分类似的或者相似的术语或者元件。

因此,已经对本主题的特定实现方式进行了描述。其它实现方式也在以下权利要求书的范围内。在一些情况下,在权利要求书中叙述的动作可以按照不同的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定需要所示的特定顺序或者相继顺序,以实现期望的结果。在某些实现方式中,也可使用多任务处理或者并行处理。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1