使用边界网关协议来向外部应用揭示最大分段标识符深度的制作方法

文档序号:14478017阅读:501来源:国知局
使用边界网关协议来向外部应用揭示最大分段标识符深度的制作方法

相关申请的交叉引用

本申请要求享有2015年7月2日提交的美国临时申请no.62/188,402的权益,其内容在此通过引用并入。

本发明的实施例涉及分组网络领域,更具体地,涉及分段路由。



背景技术:

分段路由(sr)是基于源路由的分组转发技术。在因特网工程任务组(ietf)草案“draft.filsfils-rtgwg-segment-routing-use-cases”(该文献通过引用并入本文)中描述了sr的各种用例。在ietf草案“draft.filsfils-rtgwg-segment-routing”(该文献通过引用并入本文)中描述了sr的抽象路由模型。ietf草案“drafi.filsfils-rtgwg-segment-routing”使用互联网协议版本6(ipv6)或多协议标签交换(mpls)描述了sr的实例化。



技术实现要素:

描述了一种由充当边界网关协议(bgp)发言者的网络设备实现的揭示所述网络设备的最大分段标识符深度(msd)值的方法。所述方法包括将所述msd值编码到bgp链路状态(bgp-ls)扩展消息中。所述bgp-ls扩展消息包括类型、长度和msd值。所述类型指示所述msd值的类型,所述长度指示所述msd值的长度以及所述msd值指示所述网络设备支持的用于实现分段路由的最低msd值。所述方法继续向网络控制器发送包括所述类型、所述长度和所述msd值的所述bgp-ls扩展消息,其中,所述网络控制器要使用所述msd值来计算包括所述网络设备的分段路由路径。

公开了充当边界网关协议(bgp)发言者的网络设备。所述网络设备要与网络控制器耦合。所述网络设备包括处理器和存储器,所述存储器包含所述处理器可执行的指令。所述网络设备用于将所述网络设备的最大分段标识符深度(msd)值编码到bgp链路状态(bgp-ls)扩展消息中。所述bgp-ls扩展消息包括类型、长度和msd值。所述类型指示所述msd值的类型,所述长度指示所述msd值的长度以及所述msd值指示所述网络设备支持的用于实现分段路由的最低msd值。所述网络设备还用于:向所述网络控制器发送包括所述类型、所述长度和所述msd值的所述bgp-ls扩展消息,其中,所述网络控制器要使用所述msd值来计算包括所述网络设备的分段路由路径。

公开了一种非暂时性机器可读存储介质。所述非暂时性机器可读存储介质提供指令,如果所述指令被充当边界网关协议bgp发言者并与网络控制器耦合的网络设备的处理器执行,将使得所述处理器执行操作。所述操作包括:将所述网络设备的最大分段标识符深度(msd)值编码到bgp链路状态(bgp-ls)扩展消息中。所述bgp-ls扩展消息包括类型、长度和msd值。所述类型指示所述msd值的类型,所述长度指示所述msd值的长度以及所述msd值指示所述网络设备支持的用于实现分段路由的最低msd值。所述操作还包括:向所述网络控制器发送包括所述类型、所述长度和所述msd值的所述bgp-ls扩展消息,其中,所述网络控制器要使用所述msd值来计算包括所述网络设备的分段路由路径。

公开了网络控制器中的方法。所述方法包括从充当边界网关协议(bgp)发言者的网络设备接收(302)bgp链路状态(bgp-ls)扩展消息。所述方法继续对所述bgp-ls扩展消息进行解码,以提取所述网络设备的最大分段标识符深度(msd)值。所述bgp-ls扩展消息包括类型、长度和msd值,所述类型指示所述msd值的类型,所述长度指示所述msd值的长度,所述msd值指示所述网络设备支持的用于实现分段路由的最低msd值。所述方法还包括:使用所述msd值计算包括所述网络设备的分段路由(sr)路径,其中,所述sr路径具有低于或等于所述msd值的标签堆栈深度。

公开了网络控制器。所述网络控制器包括处理器和存储器,所述存储器包含所述处理器可执行的指令。所述网络控制器用于从充当边界网关协议(bgp)发言者的网络设备接收bgp链路状态(bgp-ls)扩展消息。所述网络控制器还用于:对所述bgp-ls扩展消息进行解码,以提取所述网络设备的最大分段标识符深度(msd)值。所述bgp-ls扩展消息包括类型、长度和msd值,所述类型指示所述msd值的类型,所述长度指示所述msd值的长度,所述msd值指示所述网络设备支持的用于实现分段路由的最低msd值。所述网络控制器还用于:使用所述msd值计算包括所述网络设备的分段路由(sr)路径,其中,所述sr路径具有低于或等于所述msd值的标签堆栈深度。

公开了一种非暂时性机器可读存储介质。所述非暂时性机器可读存储介质提供指令,如果所述指令被网络控制器的处理器执行,将使得所述处理器执行操作。所述操作包括从充当边界网关协议(bgp)发言者的网络设备接收bgp链路状态(bgp-ls)扩展消息。所述操作还包括对所述bgp-ls扩展消息进行解码,以提取所述网络设备的最大分段标识符深度(msd)值。所述bgp-ls扩展消息包括类型、长度和msd值,所述类型指示所述msd值的类型,所述长度指示所述msd值的长度,所述msd值指示所述网络设备支持的用于实现分段路由的最低msd值。所述操作还包括:使用所述msd值计算包括所述网络设备的分段路由(sr)路径,其中,所述sr路径具有低于或等于所述msd值的标签堆栈深度。

附图说明

通过参考用于说明本发明的实施例的以下描述和附图,可以最好地理解本发明。附图中:

图1是根据本发明的一些实施例的示出了实现向外部应用传输最大分段标识符(sid)深度(msd)的sr网络的框图。

图2示出了根据本发明的一些实施例的在用于揭示msd值的网络设备中执行的操作的流程图。

图3示出了根据本发明的一些实施例的在网络控制器中执行的操作的流程图。

图4a示出了根据一些实施例的包括网络设备的节点msd值的示例性不透明节点属性类型-长度-值(tlv)。

图4b示出了根据一些实施例的包括网络设备的链路msd值的示例性不透明链路属性tlv。

图5a示出了根据本发明一些实施例的示例网络内的网络设备(nd)之间的连接性以及nd的三种示例实现。

图5b示出了根据本发明一些实施例的用于实现专用网络设备的示例方式。

图5c示出了根据本发明一些实施例的可以耦合虚拟网元(vne)的各种示例方式。

图5d示出了根据本发明一些实施例的在图22a的每个nd上具有单一网元的网络,且在该直观方案中,对比了(传统路由器常用的)传统分布式方案与用于维护可达性和转发信息(也被称为网络控制)的集中式方案。

图5e示出了根据本发明一些实施例的以下简单情况:nd中的每一个实现单一ne,而集中式控制平面将不同nd中的多个ne抽象为(以表示)虚拟网络之一中的单一ne。

图5f示出了根据本发明一些实施例的以下情况:在不同nd上实现多个vne并且多个vne彼此耦合,以及集中式控制平面将这些多个vne加以抽象,使得他们表现为虚拟网络之一中的单一vne。

图6示出了根据本发明的一些实施例的具有集中式控制平面(ccp)软件650的通用控制平面设备。

具体实施方式

以下描述描述了用于揭示与网络设备相关联的最大分段标识符深度(msd)值的方法和装置。在以下描述中,阐述了大量的具体细节,例如逻辑实现、操作码(opcode)、用于指定运算数的手段、资源分区/共享/复制实现、系统组件的类型和相互关系、以及逻辑分区/整合选择,以提供对本发明的更全面的理解。然而,本领域技术人员将意识到:本发明可以在没有这些具体细节的情况下实施。在其它实例中,并未详细示出控制结构、门级别电路和全软件指令序列,以不使本发明模糊。在使用所包括的描述的情况下,本领域普通技术人员将能够在不进行过度试验的情况下实现恰当的功能。

说明书中对“一个实施例”、“实施例”、“示例实施例”的引用指示了所描述的实施例可以包括特定特征、结构、或特性,但是每个实施例可以不必包括该特定特征、结构、或特性。此外,这种短语不必参考同一实施例。此外,当结合实施例来描述具体特征、结构或特性时,应认为结合其他实施例(不管是否是显式描述的)来实现这种特征、结构或特性是在本领域技术人员的知识内的。

在本文中,括号中的文本和具有虚线边界(例如,长划点虚线、短划线虚线、点虚线、以及点)的框可以用于示出向本发明实施例添加附加特征的可选操作。然而,这种标注不应当被视为意味着:在本发明的某些实施例中,他们是仅有的选项或可选操作,和/或具有实线边界的框不是可选的。

在以下描述和权利要求中,可以使用术语“耦合”和“连接”以及它们的派生词。应当理解:这些术语不意在作为彼此的同义词。“耦合”用于指示两个或更多个元素可以或可以不彼此直接物理或电学接触、彼此协作或交互。“连接”用于指示在彼此耦合的两个或更多个元素之间建立通信。

电子设备或计算设备(例如终端站、网络设备)使用机器可读介质存储和(在内部和/或通过网络与其他电子设备)发送(由软件指令组成的)代码和数据,所述机器可读介质例如是非暂时性机器可读介质(例如,诸如磁盘;光盘;只读存储器;闪存设备;相变存储器的机器可读存储介质)和暂时性机器可读传输介质(例如,电、光、声或其他形式的传播信号,如载波、红外信号)。此外,这样的电子设备包括硬件,例如耦合到一个或多个其他组件的一个或多个处理器的集合,该一个或多个其他组件例如是一个或多个非暂时性机器可读存储介质(用于存储代码和/或数据)和网络连接(以使用传播信号来传输代码和/或数据)以及在一些情况下的用户输入/输出设备(例如,键盘、触摸屏和/或显示器)。处理器的集合与其他组件的耦合通常通过电子设备内的一个或多个互连(例如,总线和可能的桥接)来实现。因此,给定电子设备的非暂时性机器可读介质通常存储用于在该电子设备的一个或多个处理器上执行的指令。本发明实施例的一个或多个部分可以使用软件、固件、和/或硬件的不同组合来实现。

如本文所使用的,网络设备(例如,路由器、交换机、桥接)是包括硬件和软件的联网设备,其可通信地与网络上的其他设备(例如,其他网络设备、终端站)互连。一些网络设备是为多个联网功能(例如,路由、桥接、交换、层2聚合、会话边界控制、服务质量和/或订户管理)提供支持和/或为多应用服务(例如,数据、语音和视频)提供支持的“多服务网络设备”。订户终端站(例如服务器、工作站、笔记本电脑、上网本、掌上电脑、移动电话、智能电话、多媒体电话、基于互联网协议的语音(voip)电话、用户设备、终端、便携式媒体播放器、gps单元、游戏系统、机顶盒)访问互联网上提供的内容/服务和/或在覆盖在互联网上(例如通过互联网隧道方式连接)的虚拟专用网络(vpn)上提供的内容/服务。该内容和/或服务通常由属于服务或内容提供商的一个或多个终端站(例如服务器终端站)或参与对等(p2p)服务的终端站来提供,且可以包括例如公开网页(例如,自由内容、商店前端页面、搜索服务)、私有网页(例如,提供电子邮件服务的用户名/密码访问网页)和/或基于vpn的公司网络。典型地,订户终端站耦合(例如,通过(无线或有线地)耦合到接入网的客户住宅设备)到边缘网络设备,边缘网络设备耦合(例如,通过一个或多个核心网设备)到其他边缘网络设备,该其他边缘网络设备耦合到其他终端站(例如,服务器终端站)。

网络设备通常被划分为控制平面和数据平面(有时称为转发平面或媒体平面)。在网络设备是路由器(或正在实现路由功能)的情况下,控制平面通常确定数据(例如,分组)如何被路由(例如数据的下一跳和数据的输出端口),且数据平面负责转发该数据。例如,控制平面通常包括一个或多个路由协议(例如,诸如边界网关协议(bgp)的外部网关协议、内部网关协议(igp)(例如,开放最短路径优先(ospf)、中间系统到中间系统(is-is)、路由信息协议(rip))、标签分发协议(ldp)、资源预留协议(rsvp)),所述一个或多个路由协议与其他网络设备进行通信,以交换路由,并基于一个或多个路由度量选择这些路由。

网络外部的控制平面或组件可以基于网络拓扑和网络内的当前连接状态(包括流量工程信息)来执行计算。例如,为了确定分段路由路径,处理组件(例如,控制平面、sdn控制器、路径计算元素(pce)等)需要收集关于sr网络的每个网络设备的拓扑和能力的信息,以便正确地对其进行配置。在分段路由(sr)中,网络节点(例如,具有sr能力的网络设备)通过利用指令的集合(在本文中称为分段)来控制分组通过网络。这些分段被包含作为sr报头的一部分,该报头已经在sr网络的入口处被预加到分组上。分段可以表示任何拓扑或服务指令。sr架构可以应用于mpls数据平面,而不改变转发平面。sr在应用于mpls数据平面时提供从入口标签交换路由器向出口lsr隧道传输服务(例如,虚拟专用网络(vpn)、虚拟专用局域网服务(vpls)、虚拟专用线服务(vpws))的能力,而不使用除is-is或ospf之外的任何协议。分段被编码为mpls标签。分段的有序列表被编码为标签堆栈。下一个要处理的分段位于堆栈的顶部。分段完成后,对应的标签将从堆栈弹出(pop)。

具体而言,控制平面需要收集关于正被配置的每个网络节点的最大分段标识符(sid)深度(msd)的信息,使得控制器不将网络节点配置为具有路径/隧道,所述路径/隧道的sid(或标签堆栈)比网络节点能够强加的sid更深。“最大sid深度”(msd)规定sr网络节点能够强加在分组上的sid(即分段或标签堆栈)的最大数量。

在一种方法中,控制平面可以使用路径计算元素通信协议(pcep)来获取sr网络节点的msd。pcep是允许路径计算客户端(pcc)(例如,控制平面配置的网络节点)向路径计算元素(pce)(例如,控制平面)请求路径计算的规则的集合。根据pcep,如在“draft-ietf-pce-segment-routing”(通过引用并入本文)中所讨论的,msd经由pcep扩展“srpcecapabilitytlv/metricobject”传递给控制平面。

在另一种方法中,可使用内部网关协议(igp)将每个网络节点的msd值传递给控制平面。在这种方法中,称为rlsdcsub-tlv的sub-tlv被定义为通告网络节点读取最大标签堆栈深度(即,网络设备的msd)的能力,如在“drafi-ietf-ospf-mpls-elc”和“drafi-ietf-isis-mpls-elc”(它们通过引用并入本文)中针对ospf和is-is所分别定义的。

将msd揭示给网络控制器的挑战

虽然pcep可被用于将网络节点的msd揭示给另一个网络设备(例如,控制平面),但是当pcep不被网络节点(特别是sr路径/隧道的头端)支持时,或者如果网络节点不参与igp路由,则控制平面没有任何方法来获知被配置的网络节点的msd。这导致控制平面关于所配置的网络节点的标签堆栈深度做出任意决定,其可能导致网络节点的错误配置,导致分组丢失。另外,pcep和igp不允许控制平面获得网络节点内的链路的msd,并且仅允许控制平面获得全局节点msd。

本文呈现的实施例克服了先前方法的限制。根据一些实施例,描述了一种由充当边界网关协议(bgp)发言者的网络设备执行的向网络控制器发送与网络设备相关联的最大分段标识符深度(msd)值的方法。在这些实施例中,网络设备的msd值被编码到bgp链路状态(bgp-ls)扩展消息中。bgp-ls扩展消息包括类型、长度和msd值,类型指示msd值的类型,长度指示msd值的长度,msd值指示网络设备的最低节点msd值。在其他实施例中,msd值是指示针对网络设备的每个链路的最低msd值的链路msd值。然后,向网络控制器发送bgp-ls扩展消息,其中,网络控制器要在计算包括网络设备的分段路由路径时使用该msd值。

在“drafi-ietf-idr-ls-distribution-11”(通过引用并入)中描述的bgp-ls描述了一种机制,通过该机制可以从网络收集链路状态和流量工程信息并使用bgp路由协议与外部组件(例如,控制平面、集中式控制器、pce等)共享。

图1是根据一些实施例的示出了实现向外部应用传输最大分段标识符(sid)深度(msd)的sr网络的框图。

图1示出了与包括网元(ne)170a-h(有时被称为路由器、交换机、转发元素、数据平面元素或节点)的数据平面180(有时被称为基础架构层、网络转发平面或转发平面(其不应当与nd转发平面相混淆)相耦合的集中式控制平面176。集中式控制平面176包括网络控制器178,网络控制器178包括确定网络内的可达性并向数据平面180的ne170a-h分发转发信息的集中式可达性和转发信息模块(未示出)。在这些实施例中,网络情报(networkintelligence)集中在通常与nd分离的电子设备上执行的集中式控制平面176中。

图1还示出了集中式控制平面176具有针对应用层186的北向接口184,在应用层186中驻留有应用188。集中式控制平面176具有针对应用188来形成虚拟网络(有时被称为逻辑转发平面、网络服务或覆盖网络(且数据平面180的ne170a-h是底层网络))的能力。从而,集中式控制平面176维护所有nd和所配置的ne/vne的全局视图,且其将虚拟网络高效地映射到底层nd(包括当物理网络通过硬件(nd、链路、或nd组件)故障、添加或移除来进行改变时维护这些映射)如下文进一步详细描述的,每个网元ne170a-h可以由一个或多个网络设备来实现。

ne170e包括msd值,msd值是对节点和/或节点的链路的能力的指示。在一些实施例中,msd值是ne170e中静态配置的范围[0,254]内的数值。在备选实施例中,msd值是从igp节点重新分配的。在一些实施例中,msd值与网络设备唯一地相关联。

msd值可以是节点msd值,其指示ne170e支持的标签的最大数量(sid)。在一些实施例中,值0意味着ne170e不用于推送任何长度的sr堆栈并且不应该用于这种功能。备选地,msd值可以是链路msd值,其指示ne170e的链路支持的标签的最大数量(sid)。在一些实施例中,值0意味着链路不用于推送任何长度的sr堆栈并且不应该用于这种功能。

ne170e和网络控制器178被配置为包括bgp并且充当网络100中的bgp发言者。在对等握手期间,在两个bgp发言者(ne170e和网络控制器178)之间交换open消息。ne170e和网络控制器178协商会话的能力。为了使两个bgp发言者(ne170e和网络控制器178)交换链路状态网络层可达性信息(nlri),它们使用bgp能力通告来确保它们都能够正确地处理这一nlri。能力的协商包括验证ne170e和网络控制器178中的每一个能够支持本文呈现的bgp-ls的用于传输bgp-ls扩展消息的新功能,其中,ne170e的msd值被编码到bgp-ls扩展消息中。

在能力的协商之后,在任务框(1)处,ne170e将msd值编码到要发送给网络控制器178的bgp链路状态(bgp-ls)扩展消息中。bgp-ls扩展消息包括类型、长度和msd值,类型指示msd值的类型,长度指示msd值的长度,msd值指示网络节点支持的用于实现分段路由路径的最低msd值。

在一些实施例中,msd值是ne170e的节点msd值。在这些实施例中的一些实施例中,节点msd值被编码到bgp-ls的不透明节点属性类型-长度-值(tlv)中。不透明节点属性tlv是承载由网元通告的节点属性tlv的包封(envelope)。在本发明的实施例中,不透明节点属性tlv用于承载ne170e的节点msd值。ne170e使用不透明节点属性tlv向其他bgp发言者(例如,网络控制器178)通告其相关联的节点msd值。图4a示出了根据一些实施例的包括网元的节点msd值的示例性不透明节点属性tlv。不透明节点属性tlv是类型tlv(类型-长度-值)的容器400。类型410包括标识在容器400内发送的值的类型的值,长度412指定在容器400内发送的值的长度,且不透明节点属性414包括与ne170e相关联的msd值。在一些实施例中,msd值是范围[0,254]中的值,并且指示ne170e所支持的标签的最大数量(sid)。

在其他实施例中,msd值是ne170e的链路msd。不透明链路属性tlv是承载由网元通告的链路属性tlv的包封。ne170e使用不透明链路属性tlv向其他bgp发言者(例如,网络控制器178)通告其相关联的链路msd。图4b示出了根据一些实施例的包括网元的链路msd值的示例性不透明链路属性tlv。不透明节点属性tlv是类型tlv(类型-长度-值)的容器402。类型416包括标识在容器402内发送的值的类型(例如,链路msd类型)的值,长度418指定在容器402内发送的值的长度,且不透明链路属性420包括与ne170e相关联的链路msd值。在一些实施例中,链路msd值是范围[0,254]中的值,并且指示ne170e的链路所支持的标签的最低的最大数量(sid)。

回到图1,在任务框(2)处,ne170e的msd值被发送给网络控制器178。在一些实施例中,在对bgp-ls扩展消息中的msd值(例如,不透明节点属性tlv或不透明链路属性tlv)进行编码之后,将消息通告给与ne170e耦合的所有bgp发言者。

在任务框(3)处,网络控制器178对bgp-ls扩展消息进行解码,以提取网络设备的最大分段标识符深度(msd)值。bgp-ls扩展消息包括类型、长度和msd值,类型指示msd值的类型,长度指示msd值的长度,msd值指示网络设备支持的用于实现分段路由的最低msd值。在一些实施例中,一旦消息被解码并且msd值被提取,则网络控制器178使用msd值来计算包括ne170e的分段路由路径,以使得所计算的路由路径的标签堆栈深度不超过网元170e所支持的msd值。在一些实施例中,msd值与网络设备唯一地相关联。

在一些实施例中,网元170e是作为sr隧道/路径的头端的网络节点。因此,发送给网络控制器178的msd值使得网络控制器能够计算允许网元170e推送等于msd值的最大深度的完整标签(sid)堆栈的sr路径。

因此,这里给出的实施例描述了使用bgp-ls扩展将网络节点的msd值揭示给外部应用(例如,pce/sdn控制器、网络控制器)的高效方式。实施例使得外部应用能够以比先前的方法更精细的粒度来接收与网元有关的msd信息。与使得网络设备能够仅揭示网络节点的节点msd值的现有方法相反,参考图1-4b描述的机制使得网络设备在能够揭示节点msd值之外还能揭示其在链路级别的相关联的msd值。

将参照其他附图的示例实施例来描述流程图中的操作。然而,应当理解:流程图中的操作可以由本发明中除了参照其他附图描述的那些实施例之外的实施例来执行,且本发明的参照这些其他附图讨论的实施例可以执行与参照流程图来讨论的那些实施例不同的操作。

图2示出根据一些实施例的在网络设备中执行的用于揭示网络设备的msd值的操作200的流程图。在框202处,ne170e将msd值编码到bgp链路状态(bgp-ls)扩展消息中。bgp-ls扩展消息包括类型、长度和msd值,类型指示msd值的类型,长度指示msd值的长度,msd值指示网络设备支持的用于实现分段路由的最低msd值。然后,流程移至框203。

在框203处,ne170e向网络控制器178发送包括msd值的bgp-ls扩展消息。网络控制器178用于使用所接收的msd值来计算包括网络设备的分段路由路径。在一些实施例中,网元170e是作为sr隧道/路径的头端的网络节点。因此,发送到控制器的msd值使得控制器能够计算允许网元推送等于msd值的最大深度的完整标签(sid)堆栈的sr路径。

图3示出了根据一些实施例的在网络控制器中执行的操作的流程图。在框302处,网络控制器178从充当边界网关协议(bgp)发言者的网络设备(例如,ne170e)接收bgp链路状态(ls)扩展消息。然后,流程移至框304。

在框304处,网络控制器178对bgp-ls扩展消息进行解码,以提取网络设备的最大分段标识符深度(msd)值。bgp-ls扩展消息包括类型、长度和msd值,类型指示msd值的类型,长度指示msd值的长度,msd值指示网络设备支持的用于实现分段路由的最低msd值。在一些实施例中,msd值与网络设备唯一地相关联。

在框304处,网络控制器使用所提取的msd值计算包括网络设备的分段路由(sr)路径,其中,sr路径具有低于或等于该msd值的标签堆栈深度。在一些实施例中,网元170e是作为sr隧道/路径的头端的网络节点。因此,发送到控制器的msd值使得控制器能够计算允许网络节点推送等于msd值的最大深度的完整标签(sid)堆栈的sr路径。

虽然以网络设备向控制平面的网络控制器发送编码到bgp-ls扩展消息中的msd值来描述本发明的实施例,但是本发明不限于此。备选实施例可以被实现为使得msd值被发送给与网络设备耦合且用于解码包括msd值的bgp-ls扩展消息的任何类型的网元。

架构

通常,网络设备包括一个或多个线路卡的集合、一个或多个控制卡的集合以及可选地包括一个或多个服务卡(有时称为资源卡)的集合。这些卡通过一个或多个互连机制耦合在一起(例如,第一全网格耦合线路卡以及第二全网格耦合所有卡)。线路卡的集合构成数据平面,而控制卡的集合提供控制平面并通过线路卡与外部网络设备交换分组。服务卡的集合可以提供特殊处理(例如,层4到层7服务(例如,防火墙、网际协议安全(ipsec)、入侵检测系统(ids)、对等(p2p)、基于ip的语音(voip)会话边界控制器、移动无线网关(网关通用分组无线电服务(gprs)支持节点(ggsn)、演进分组核心(epc)网关)))。作为示例,服务卡可以用于端接ipsec隧道,并执行伴随的认证和加密算法。

图5a示出了根据本发明一些实施例的示例网络内的网络设备(nd)之间的连接性以及nd的三种示例实现。图5a示出了nd500a-h,以及借助a-b、b-c、c-d、d-e、e-f、f-g、a-g之间以及h与a、c、d和g中每一个之间的线示出了它们的连接性。这些nd是物理设备,且这些nd之间的连接性可以是无线的或有线的(经常被称为链路)。从nd500a、e和f延伸的附加线示出了:这些nd担当网络的进入点和离开点(且从而这些nd有时被称为边缘nd;而其他nd可以被称为核心nd)。

图5a中的两个示例nd实现是:1)专用网络设备502,其使用定制的专用集成电路(asic)和专有操作系统(os);以及2)通用网络设备504,其使用常见的现货供应(cots)处理器和标准os。

专用网络设备502包括联网硬件510,联网硬件510包括计算资源512(其通常包括一个或多个处理器的集合)、转发资源514(其通常包括一个或多个asic和/或网络处理器)、以及物理网络接口(ni)516(有时被称为物理端口)、以及其中存储有联网软件520的非瞬时机器可读存储介质518。物理ni是nd中的硬件,通过该硬件进行网络连接(例如,通过无线网络接口控制器(wnic)以无线方式或者通过将电线插入连接到网络接口控制器(nic)的物理端口),例如由nd500a-h之间的连接所示出的那些连接。在操作期间,bgp-lsmsd值编码器520可以由联网硬件510来执行,以实例化一个或多个联网软件实例522的集合,所述联网软件实例522包括bgp-lsmsd值编码器实例533a-r。每个联网软件实例522以及联网硬件510的执行该联网软件实例的部分(如果其是专用于该联网软件实例的硬件和/或由该联网软件实例与其他联网软件实例522按时间共享的硬件的时间片)形成了单独的虚拟网元530a-r。在操作期间,bgp-lsmsd值编码器用于执行参照图1、2和4a-4b描述的操作。每个虚拟网元(vne)530a-r包括控制通信和配置模块532a-r(有时被称为本地控制模块或控制通信模块)和转发表534a-r,使得给定的虚拟网元(例如,530a)包括控制通信和配置模块(例如,532a)、一个或多个转发表的集合(例如,534a)、以及联网硬件510的执行虚拟网元(例如,530a)的部分。

专用网络设备502经常在物理上和/或逻辑上被视为包括:1)nd控制平面524(有时被称为控制平面),包括执行控制通信和配置模块532a-r的计算资源512;以及2)nd转发平面526(有时被称为转发平面、数据平面、或媒体平面),包括利用转发表534a-r的转发资源514和物理ni516。作为nd是路由器(或实现路由功能)的示例,nd控制平面524(执行控制通信和配置模块532a-r的计算资源512)通常负责参与控制如何路由(例如,数据的下一跳和该数据的输出物理ni)数据(例如,分组)并负责在转发表534a-r中存储该路由信息,以及nd转发平面526负责在物理ni516上接收该数据并基于转发表534a-r将该数据转发出物理ni516中的恰当物理ni。

图5b示出了根据本发明一些实施例的用于实现专用网络设备502的示例方式。图5b示出了包括卡538(通常是可热插拔的)在内的专用网络设备。尽管在一些实施例中,卡538具有两种类型(作为nd转发平面526来工作的一个或多个(有时被称为线路卡)、以及进行工作以实现nd控制平面524的一个或多个(有时被称为控制卡)),备选实施例可以将功能结合到单一卡上和/或包括附加卡类型(例如,一种附加类型的卡被称为服务卡、资源卡、或多应用卡)。服务卡可以提供特殊处理(例如,层4到层7服务(例如,防火墙、网际协议安全(ipsec)(rfc4301和4309)、安全套接字层(ssl)/传输层安全(tls)、入侵检测系统(ids)、对等(p2p)、基于ip的语音(voip)会话边界控制器、移动无线网关(网关通用分组无线电服务(gprs)支持节点(ggsn)、演进分组核心(epc)网关)))。作为示例,服务卡可以用于端接ipsec隧道,并执行伴随的认证和加密算法。这些卡通过示出为背板536的一个或多个互连机制耦合在一起(例如,第一全网格耦合线路卡以及第二全网格耦合所有卡)耦合。

返回图5a,通用网络设备504包括硬件540,硬件540包括一个或多个处理器542(其经常是cots处理器)的集合和网络接口控制器544(nic,也被称为网络接口卡)(其包括物理ni546)以及其中存储有软件550的非瞬时机器可读存储介质548。在操作期间,处理器542执行软件550以实例化一个或多个应用564a-r的一个或多个集合。尽管一个实施例没有实现虚拟化,但是备选实施例可以使用不同形式的虚拟化(由虚拟化层554和软件容器562a-r表示)。例如,一个这样的备选实施例实现了操作系统级别的虚拟化,在这种情况下,虚拟化层554代表允许创建多个软件容器562a-r的操作系统的内核(或在基本操作系统上执行的垫片(shim)),软件容器562a-r中的每一个可以用于执行应用564a-r的集合中的一个。在该实施例中,多个软件容器562a-r(也称为虚拟化引擎、虚拟私有服务器或狱(jail))均是用户空间实例(通常是虚拟存储空间);这些用户空间实例彼此分离并与操作系统所运行于的内核空间分离;除非明确允许,否则在给定用户空间中运行的应用集不能访问其他进程的存储器。另一个这样的备选实施例实现完全虚拟化,在这种情况下:1)虚拟化层554表示管理程序(有时称为虚拟机监视器(vmm))或在主机操作系统之上执行的管理程序;以及2)软件容器562a-r均表示软件容器的紧密隔离形式(称为由管理程序运行的虚拟机),并且可以包括访客操作系统。虚拟机是将程序运行的好像它们在物理的、非虚拟化的机器上执行一样的物理机器的软件实现;以及应用一般不知道它们运行在虚拟机上还是运行在“纯金属”的主机电子设备上,然而出于优化目的,一些系统提供允许操作系统或应用能够意识到存在虚拟化的准虚拟化(para-virtualization)。

一个或多个应用564a-r的一个或多个集合的实例化以及虚拟化层554和软件容器562a-r(如果实现的话)统称为软件实例552。应用564a-r、对应的软件容器562a-r(如果实现的话)以及硬件540的执行它们的部分(如果其是专用于该执行的硬件和/或由软件容器562a-r按时间共享的硬件的时间片)的每个集合形成单独的虚拟网元560a-r。

虚拟网元560a-r执行与虚拟网元530a-r相似的功能,例如与控制通信和配置模块532a以及转发表534a类似的功能(硬件540的该虚拟化有时被称为网络功能虚拟化(nfv))。从而,nfv可以用于将很多网络设备类型统一到工业标准高容量服务器硬件、物理交换机、和物理存储器,它们可以位于数据中心、nd、和客户住宅设备(cpe)中。然而,本发明的不同实施例可以用不同方式来实现软件容器562a-r中的一个或多个。例如,尽管将本发明的实施例示出为每个软件容器562a-r对应于一个vne560a-r,备选实施例可以在更精细级别粒度上实现该对应关系(例如,线路卡虚拟机虚拟化线路卡,控制卡虚拟机虚拟化控制卡等等);应当理解:本文参考软件容器562a-r与vne的对应关系来描述的技术同样适用于使用这种更精细级别粒度的实施例。

在某些实施例中,虚拟化层554包括提供与物理以太网交换机类似的转发服务的虚拟交换机。具体地,该虚拟交换机在软件容器562a-r和nic544之间转发业务,以及可选地在软件容器562a-r之间转发业务;此外,该虚拟交换机可以在不被允许彼此通信的vne560a-r之间通过策略来强制执行网络隔离(例如,通过执行虚拟局域网(vlan))。

图5a中的第三示例nd实现是混合网络设备506,其在单一nd或nd内的单一卡中包括定制asic/专有os和cots处理器/标准os。在这种混合网络设备的某些实施例中,平台vm(即,实现专用网络设备502的功能的vm)可以向混合网络设备506中存在的联网硬件提供准虚拟化。

不管nd的上述示例实现如何,当考虑由nd实现的多个vne中的单一一个vne时,或者在nv当前仅实现单一vne的情况下,缩写的术语网元(ne)有时被用于指代该vne。同样在全部上述示例实现中,每个vne(例如,vne530a-r、vne560a-r、以及混合网络设备506中的那些)在物理ni(例如,516、546)上接收数据并将该数据转发出物理ni(例如,516、546)中的恰当物理ni。例如,实现ip路由器功能的vne基于ip分组中的一些ip报头信息来转发ip分组;其中,ip报头信息包括源ip地址、目的ip地址、源端口、目的端口(其中“源端口”和“目的端口”在本文中被称为协议端口,与nd的物理端口相对)、传输协议(例如,用户数据报协议(udp)(rfc768、2460、2675、4113、以及5405)、传输控制协议(tcp)(rfc793和1180)、以及差异服务(dscp)值(rfc2474、2475、2597、2983、3086、3140、3246、3247、3260、4594、5865、3289、3290、以及3317))。

图5c示出了根据本发明一些实施例的可以耦合vne的各种示例方式。图5c示出了在nd500a中实现的vne570a.1-570a.p(以及可选的vne570a.q-570a.r)以及nd500h中的vne570h.1。在图5c中,vne570a.1-p在以下意义上是彼此分离的:它们可以从nd500a外部接收分组并向nd500a外部转发分组。vne570a.1与vne570h.1耦合,且从而它们在其各自nd之间传输分组;vne570a.2-570a.3可以可选地在它们之间转发分组,而不向nd500a外部转发分组;以及vne570a.p可以可选地是vne链中的第一个,该vne链包括vne570a.q,之后包括vne570a.r(有时这被称为动态服务链接,其中,一系列vne中的每个vne提供不同服务,例如,一个或多个层4-7网络服务)。尽管图5c示出了vne之间的各种示例关系,备选实施例可以支持其他关系(例如,更多/更少的vne、更多/更少的动态服务链、具有公共vne和一些不同vne的多个不同动态服务链)。

图5a的nd例如可以形成互联网或私有网络的一部分;以及其他电子设备(未示出,例如端用户设备,包括工作站、膝上型计算机、上网本、平板电脑、掌上型计算机、移动电话、智能电话、平板手机、多媒体电话、基于网际协议的语音(voip)电话、终端、便携式媒体播放器、gps单元、可穿戴设备、游戏系统、机顶盒、支持互联网的家用电器)可以耦合到网络(直接或通过诸如接入网之类的其他网络),以通过网络(例如,互联网或覆盖(例如,隧道传输通过)在互联网上的虚拟私有网络(vpn))彼此通信(直接或通过服务器)和/或访问内容和/或服务。这种内容和/或服务通常由属于服务/内容提供商的一个或多个服务器(未示出)或参与对等(p2p)服务的一个或多个端用户设备(未示出)来提供,且可以包括例如公开网页(例如,自由内容、商店前端页面、搜索服务)、私有网页(例如,提供电子邮件服务的用户名/密码访问网页)、和/或基于vpn的公司网络。例如,端用户设备可以耦合(例如,通过(无线或有线)耦合到接入网的客户住宅设备)到边缘nd,边缘nd耦合(例如,通过一个或多个核心nd)到其他边缘nd,该其他边缘nd耦合到担当服务器的电子设备。然而,通过计算和存储虚拟化,作为图5a中nd来工作的一个或多个电子设备还可以提供一个或多个这种服务器(例如,在通用网络设备504的情况下,软件容器562a-r中的一个或多个软件容器可以作为服务器工作;这对于混合网络设备506来说也将是正确的;在专用网络设备502的情况下,一个或多个这种服务器还可以运行在由计算资源512执行的虚拟化层上);在该情况下,服务器被称为是与该nd的vne同处一地。

虚拟网络是提供网络服务(例如,l2和/或l3服务)的物理网络(例如,图5a中的那个物理网络)的逻辑抽象。虚拟网络可以实现为在底层网络(例如,l3网络,如使用隧道(例如,通用路由封装(gre)、层2隧道传输协议(l2tp)、ipsec)来创建覆盖网络的网际协议(ip)网络)上提供网络服务(例如,层2(l2,数据链路层)和/或层3(l3,网络层)服务)的覆盖网络(有时被称为网络虚拟覆盖)。

网络虚拟边缘(nve)位于底层网络的边缘处,并参与实现网络虚拟化;nve的面向网络侧使用底层网络向其他nve隧道传输帧以及隧道传输来自其他nve的帧;nve的面向外部侧向网络外部的系统发送数据和从网络外部的系统接收数据。虚拟网络实例(vni)是nve上虚拟网络的特定实例(例如,nd上的ne/vne、nd上ne/vne的一部分,其中,通过仿真将该ne/vne分为多个vne);可以在nve上实例化一个或多个vni(例如,作为nd上的不同vne)。虚拟接入点(vap)是nve上用于将外部系统连接到虚拟网络的逻辑连接点;vap可以是通过逻辑接口标识符(例如,vlanid)来识别的物理或虚拟端口。

网络服务的示例包括:1)以太网lan仿真服务(类似于互联网工程任务组(ietf)多协议标签交换(mpls)或以太网vpn(evpn)服务的基于以太网的多点服务),其中,外部系统通过基于底层网络的lan环境跨网络互连(例如,nve针对不同的这种虚拟网络提供分离的l2vni(虚拟交换实例),以及提供跨底层网络的l3(例如,ip/mpls)隧道传输封装);以及2)虚拟化ip转发服务(从服务定义角度来说,类似于ietfipvpn(例如,边界网关协议(bgp)/mplsipvpnrfc4364)),其中,外部系统通过基于底层网络的l3环境跨网络互连(例如,nve针对不同的这种虚拟网络提供分离的l3vni(转发和路由实例),以及提供跨底层网络的l3(例如,ip/mpls)隧道传输封装)。网络服务还可以包括服务质量能力(例如,业务分类标记、业务调节(conditioning)和调度)、安全能力(例如,用于保护客户住宅免受源自网络的攻击的过滤器,以避免有缺陷的路由公告)、以及管理能力(例如,完全检测和处理)。

图5d示出了根据本发明一些实施例的在图5a的每个nd上具有单一网元的网络,且在该直观方案中,对比了(传统路由器常用的)传统分布式方案与用于维护可达性和转发信息(也被称为网络控制)的集中式方案。具体地,图5d示出了具有与图5a的nd500a-h相同连接性的网元(ne)570a-h。

图5d示出了分布式方案572将用于生成可达性和转发信息的责任分布在ne570a-h上;换言之,邻居发现和拓扑发现的过程是分布式的。

例如,在使用专用网络设备502的情况下,nd控制平面524的控制通信和配置模块532a-r通常包括用于实现一个或多个路由协议的可达性和转发信息模块(例如,诸如边界网关协议(bgp)(rfc4271)之类的外部网关协议、内部网关协议(igp)(例如,开放最短路径优先(ospf)(rfc2328和5340)、中间系统对中间系统(is-is)(rfc1142)、路由信息协议(rip)(版本1rfc1058、版本2rfc2453、以及下一代rfc2080))、标签分布协议(ldp)(rfc5036)、资源预留协议(rsvp)(rfc2205、2210、2211、2212、以及rsvp-业务工程(te):用于lsp隧道的rsvp扩展rfc3209、通用多协议标签交换(gmpls)信令rsvp-terfc3473、rfc3936、4495、以及4558)),其与其他ne通信以交换路由,然后基于一个或多个路由度量来选择那些路由。从而,ne570a-h(例如,执行控制通信和配置模块532a-r的计算资源512)通过分布式地确定网络内的可达性并计算其各自的转发信息来执行其参与控制如何路由(例如,数据的下一跳以及该数据的输出物理ni)数据(例如,分组)的责任。路由和邻接关系存储在nd控制平面524上的一个或多个路由结构中(例如,路由信息库(rib)、标签信息库(lib)、一个或多个邻接关系结构)。nd控制平面524使用基于路由结构的信息(例如,邻接关系和路由信息)对nd转发平面526编程。例如,nd控制平面524将邻接关系和路由信息编程到nd转发平面526上的一个或多个转发表534a-r(例如,转发信息库(fib)、标签转发信息库(lfib)、以及一个或多个邻接关系结构)中对于层2转发,nd可以存储一个或多个桥接表,该一个或多个桥接表用于基于该数据中的层2信息来转发数据。尽管上面的示例使用了专用网络设备502,相同的分布式方案572可以实现在通用网络设备504和混合网络设备506上。

图5d示出了集中式方案574(也被称为软件定义的联网(sdn)),其将做出与从底层系统(该底层系统向所选目的地转发业务)发送业务的位置有关的决定的系统加以去耦合。所示出的集中式方案574具有用于在集中式控制平面576(有时被称为sdn控制模块、控制器、网络控制器、开放流控制器、sdn控制器、控制平面节点、网络虚拟化机构、或管理控制实体)中生成可达性和转发信息的责任,并从而使得邻居发现和拓扑发现的过程集中式。集中式控制平面576具有针对数据平面580(有时被称为基础架构层、网络转发平面、或转发平面(其不应当与nd转发平面相混淆))的南向接口(southboundinterface)582,该数据平面580包括ne570a-h(有时被称为交换机、转发元素、数据平面元素、或节点)。集中式控制平面576包括网络控制器578,网络控制器578包括确定网络内的可达性并通过南向接口582向数据平面580的ne570a-h分发转发信息的集中式可达性和转发信息模块579(其可以使用开放流协议)。从而,在通常与nd分离的电子设备上执行的集中式控制平面576中将网络情报(networkintelligence)集中式。

例如,在数据平面580中使用专用网络设备502的情况下,nd控制平面524的每个控制通信和配置模块532a-r通常包括提供南向接口582的vne侧的控制代理。在该情况下,nd控制平面524(执行控制通信和配置模块532a-r的计算资源512)通过与集中式控制平面576通信的控制代理来执行其参与控制如何路由(例如,数据的下一跳和该数据的输出物理ni)数据(例如,分组)的责任,以从集中式可达性和转发信息模块579接收转发信息(以及在一些情况下的可达性信息)(应当理解:在本发明的一些实施例中,除了与集中式控制平面576通信之外,控制通信和配置模块532a-r还可以在确定可达性和计算转发信息时扮演某个角色,尽管不像分布式方案情况下那么多;这种实施例一般被视为落入集中式方案574中,但也可以被视为是混合方案)。

尽管上述示例使用了专用网络设备502,可以使用通用网络设备594和混合网络设备506来实现同样的集中式方案574(例如,每个vne560a-r通过与集中式控制平面576通信来执行其控制如何路由(例如,该数据的下一跳和该数据的输出物理ni)数据(例如,分组)的责任,以从集中式可达性和转发信息模块579接收转发信息(以及在一些情况下,可达性信息);应当理解:在本发明的一些实施例中,除了与集中式控制平面576通信之外,vne560a-r还可以在确定可达性和/或计算转发信息时扮演某个角色,尽管不像分布式方案情况下那么多)。事实上,对sdn技术的使用可以增强通常在通用网络设备504或混合网络设备506实现中使用的nfv技术,因为nfv能够通过提供其上可以运行sdn软件的基础架构来支持sdn,且因为nfv和sdn都打算利用商品服务器硬件和物理交换机。

图5d还示出了集中式控制平面576具有针对应用层586的北向接口584,在应用层2286中驻留有应用588。集中式控制平面586具有针对应用588来形成虚拟网络592(有时被称为逻辑转发平面、网络服务、或覆盖网络(且数据平面580的ne570a-h是底层网络))的能力。从而,集中式控制平面576维护所有nd和所配置的ne/vne的全局视图,且其将虚拟网络高效地映射到底层nd(包括当物理网络通过硬件(nd、链路、或nd组件)故障、添加或移除来进行改变时维护这些映射)

尽管图5d示出了与集中式方案574不同的分布式方案572,在本发明的某些实施例中,网络控制的工作可以用不同方式分布或者这二者可以结合。例如:1)实施例一般可以使用集中式方案(sdn)574,但是具有委托给ne的某些功能(例如,分布式方案可以用于实现故障监视、性能监视、保护切换、以及用于邻居和/或拓扑发现的基元(primitive)中的一项或多项);或者2)本发明的实施例可以经由集中式控制平面和分布式协议这二者来执行邻居发现和拓扑发现,且比较结果以在它们不一致的地方提出异常。这种实施例一般被视为落入集中式方案574中,但也可以被视为是混合方案。

尽管图5d示出了每个nd500a-h实现单一ne570a-h的简单情况,应当理解:参照图5d描述的网络控制方案同样适用于一个或多个nd500a-h实现多个vne(例如,vne530a-r、vne560a-r、在混合网络设备506中的那些)的网络。备选地或附加地,网络控制器578还可以对在单一nd中实现多个vne加以仿真。具体地,取代(或除了)在单一nd中实现多个vne(之外),网络控制器578(还)可以将单一nd中的vne/ne的实现呈现为虚拟网络592中的多个vne(在同一个虚拟网络592中的全部、不同虚拟网络592中的每一个、或某种组合)。例如,网络控制器578可以使得nd在底层网络中实现单一vne(ne),然后对集中式控制平面576内的该ne的资源进行逻辑分割,以在虚拟网络592中呈现不同的vne(其中,底层网络中的这些不同vne共享底层网络中nd上的单一vne/ne实现的资源)。

另一方面,图5e和5f分别示出了ne和vne的示例抽象,网络控制器578可以将其作为不同的虚拟网络592的一部分来呈现。图5e示出了根据本发明一些实施例的以下简单情况:nd500a-h中的每一个实现单一ne570a-h(参见图5d),而集中式控制平面576将不同nd中的多个ne(ne570a-c和g-h)抽象为(以表示)图5d的虚拟网络592之一中的单一ne570i。图5e示出了:在该虚拟网络中,ne570i耦合到ne570d和570f,他们都依然耦合到ne570e。

图5f示出了根据本发明一些实施例的以下情况:在不同nd(nd500a和nd500h)上实现多个vne(vne570a.1和vne570h.1)并且多个vne彼此耦合,以及集中式控制平面576将这些多个vne加以抽象,使得他们表现为图22d的虚拟网络592之一中的单一vne570t。从而,ne或vne的抽象可以跨多个nd。

尽管本发明的一些实施例将集中式控制平面576时限为单一实体(例如,单一电子设备运行的软件的单一实例),备选实施例可以出于冗余和/或可扩缩性的目的将功能分散在多个实体上(例如,不同电子设备上运行的软件的多个实例)。

类似于网络设备实现,可以用各种方式(例如,专用设备、通用(例如,cots)设备、或混合设备)来实现集中式控制平面576上运行的电子设备,且从而实现包括集中式可达性和转发信息模块579在内的网络控制器578。这些电子设备将类似地包括计算资源、一个或多个物理nic的集合、以及其上存储有集中式控制平面软件的非瞬时机器可读存储介质。例如,图6示出了包括硬件640的通用控制平面设备604,硬件640包括一个或多个处理器642(其通常是cots处理器)的集合和网络接口控制器644(nic;也称为网络接口卡)(其包括物理ni646)以及其中存储有集中式控制平面(ccp)软件650的非暂时性机器可读存储介质648。

在使用计算虚拟化的实施例中,处理器642通常执行软件以实例化虚拟化层654和软件容器662a-r(例如,利用操作系统级别的虚拟化,虚拟化层654表示允许创建多个软件容器662a-r(表示单独的用户空间实例,也称为虚拟化引擎、虚拟专用服务器或狱)的操作系统的内核(或在基本操作系统上执行的垫片),软件容器662a-r中的每一个可以用来执行一个或多个应用的集合;在完全虚拟化的情况下,虚拟化层654表示管理程序(有时称为虚拟机监视器(vmm))或在主机操作系统之上执行的管理程序,并且软件容器662a-r均表示软件容器的紧密隔离形式(称为由管理程序运行的虚拟机),并且可以包括访客操作系统;在准虚拟化(para-virtualization)的情况下,与虚拟机一起运行的操作系统或应用可能会意识到存在用于优化目的的虚拟化)。同样,在使用计算虚拟化的实施例中,在操作期间,在虚拟化层654上的软件容器662a内执行ccp软件650的实例(示出为ccp实例676a)。在不使用计算虚拟化的实施例中,在主机操作系统之上的ccp实例676a在“纯金属”通用控制平面设备604上执行。ccp实例676a的实例化以及虚拟化层654和软件容器662a-r(如果实现的话)统称为软件实例652。

在一些实施例中,ccp实例676a包括网络控制器实例678。网络控制器实例678包括:集中式可达性和转发信息模块实例679(其是向操作系统提供网络控制器578的上下文并与各种ne通信的中间件层)、以及中间件层上的ccp应用层680(有时被称为应用层)(提供各种网络操作所要求的情报,例如协议、网络情景察觉、以及用户接口)。在更为抽象的级别上,集中式控制平面576中的该ccp应用层680使用虚拟网络视图(网络的逻辑视图)来工作,且中间件层提供从虚拟网络到物理视图的转换。

集中式控制平面576基于针对每个流的ccp应用层680计算和中间件层映射向数据平面580发送相关消息。流可以被定义为具有匹配给定比特模式的报头的分组集合;在该意义下,传统ip转发也是基于流的转发,其中,通过例如目的ip地址来定义流;然而,在其他实现中,用于流定义的给定比特模式可以在分组报头中包括更多的字段(例如,10个或更多个)。数据平面580的不同nd/ne/vne可以接收不同消息,且从而接收不同的转发信息。数据平面580处理这些消息,并将恰当的流信息和对应动作编程到恰当ne/vne的转发表(有时被称为流表)中,然后ne/vne可以将进入的分组映射到转发表中表示的流,并基于转发表中的匹配来转发分组。

诸如开放流之类的标准定义了用于消息的协议以及用于处理分组的模型。用于处理分组的模型包括:报头解析、分组分类、以及做出转发决定。报头解析描述了如何基于已知的协议集合来解释分组。一些协议字段用于构建匹配结构(或键),该匹配结构(或键)将在分组分类中使用(例如,第一键字段可以是源媒体访问控制(mac)地址,以及第二键字段可以是目的mac地址)。

分组分类涉及在存储器中执行查找,以通过基于转发表条目的匹配结构、或键来确定转发表中的哪个条目(也被称为转发表条目或流条目)最佳匹配分组对分组进行分类。转发表条目中表示的很多流可以对应于/匹配分组是可能的;在该情况下,系统通常被配置为根据定义方案从很多转发表条目中确定一个转发表条目(例如,选择匹配的第一个转发表条目)。转发表条目包括匹配标准的特定集合(值集合或通配符、或者对分组的什么部分应当与特定值/多个特定值/通配符进行比较的指示(如匹配能力所定义的,针对分组报头中的特定字段或者对于某个其他分组内容))以及在接收到匹配分组时针对数据平面要采取的一个或多个动作的集合。例如,动作可以是:针对使用特定端口的分组,将报头推压到分组上,对分组进行泛洪(flood),或简单地丢弃该分组。从而,具有特定传输控制协议(tcp)目的端口的ipv4/ipv6分组的转发表条目可以包含指定这些分组应当被丢弃的动作。

基于在分组分类期间识别出的转发表条目,做出转发决定并执行动作通过针对分组来执行在匹配的转发表条目中识别出的动作集合来发生。

然而,当未知分组(例如,如开放流用语中使用的“错失分组”或“匹配错失”)到达数据平面580处时,通常向中心控制平面576转发该分组(或分组报头和内容的子集)。然后集中式控制平面576将转发表条目编程到数据平面580中,以适应属于该未知分组的流的分组。一旦集中式控制平面576将特定转发表条目编程到数据平面580中,则具有匹配凭证的下一个分组将匹配该转发表条目并采取与所匹配条目相关联的动作集合。

网络接口(ni)可以是物理或虚拟的;以及在ip的上下文中,接口地址是向ni指派的ip地址,不论是物理ni还是虚拟ni。虚拟ni可以与物理ni相关联、与另一虚拟接口相关联、或者是独立的(例如,环回接口、点对点协议接口)。ni(物理或虚拟)可以是有编号的(具有ip地址的ni)或无编号的(不具有ip地址的ni)。环回接口(及其环回地址)是经常用于管理用途的ne/vne(物理或虚拟)的特定类型的虚拟ni(和ip地址);其中,这种ip地址被称为节点环回地址。向nd的ni指派的ip地址被称为该nd的ip地址;在更多粒度级别上,向nd上实现的ne/vne指派的ni指派的ip地址可被称为该ne/vne的ip地址。

尽管附图中的流程图示出了本发明的某些实施例执行的特定操作顺序,但是应当理解,这种顺序是示例性的(例如,备选实施例可以以不同的顺序执行操作、组合某些操作、某些操作相同等)。

虽然在若干实施例的意义上描述了本发明,本领域技术人员将会认识到:本发明不限于所描述的实施例,而是可利用在所附权利要求的精神和范围内的修改和改变来实现。本描述因此被视为是说明性的,而非限制性的。

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