用于加速软件定义网络中的转发的方法和设备的制造方法_2

文档序号:8386214阅读:来源:国知局
务网络元件”。订户终端站(例如,服务器、工作站、膝上型计算机、上网本、掌上型计算机、移动电话、智能电话、多媒体电话、互联网语音协议(VOIP)电话、用户设备、终端机、便携式媒体播放器、GPS单元、游戏系统、机顶盒)访问通过互联网提供的内容/服务、和/或在覆盖在(例如,穿隧通过)互联网上的虚拟专用网络(VPN)上提供的内容/服务。所述内容和/或服务通常由属于服务或内容供应商的一个或多个终端站(例如,服务器终端站)或参与对等服务的终端站提供,并且可以包括例如公共网页(例如,免费内容、店面、搜索服务)、私人网页(例如,提供email服务的用户名/密码访问的网页)和/或VPN上的公司网络。通常,订户终端站耦合(例如,通过(有线或无线)耦合到接入网络的客户驻地设备)到边缘网络元件,所述边缘网络元件耦合(例如,通过一个或多个核心网络元件)到其它边缘网络元件,所述其它边缘网络元件耦合到其它终端站(例如,服务器终端站)。
[0019]传统上,网络元件通常分隔成控制平面和数据平面(有时称为转发平面或介质平面)。在网络元件是路由器(或实现路由功能性)的情况下,控制平面通常确定将如何路由数据(例如,分组)(例如,数据的下一跳和该数据的外出端口),而数据平面负责转发该数据。例如,控制平面通常包括与其它网络元件通信以便交换路由并基于一个或多个路由度量选择那些路由的一个或多个路由协议(例如,边界网关协议(BGP)、内部网关协议(IGP)(例如,开放式最短路径优先(OSPF)、路由信息协议(RIP)、中间系统到中间系统(IS-1S))、标签分发协议(LDP)、资源保存协议(RSVP))。备选地,网络元件可以只实现数据平面(转发平面)或只实现控制平面的全部或一部分。这个职责分隔在分离式体系结构网络模型中很常见。术语“分离式体系结构网络”在很大程度上与术语“软件定义网络”(SDN)同义,并且这些术语在本文中可互换使用。
[0020]通常,网络元件包括一个或多个线卡的集合、一个或多个控制卡的集合以及可选的一个或多个服务卡(有时称为资源卡)的集合。这些卡通过一个或多个机构稱合在一起(例如,耦合线卡的第一全网格,以及耦合所有卡的第二全网格)。线卡的集合构成数据平面,而控制卡的集合提供控制平面并通过线卡与外部网络元件交换分组。服务卡的集合可以提供专门处理(例如,第4层到第7层服务(例如,防火墙、IPsec, IDS、P2P)、VoIP会话边界控制器、移动无线网关(GGSN、演进型分组系统(EPS)网关))。举例来说,服务卡可用于终接IPsec隧道并执行伴随的验证和加密算法。
[0021]软件定义网络
不同于需要在整个网络的多功能网络元件的控制平面中分配复杂的网络管理功能并且还需要集成到相同多功能网络元件中的复杂的数据和控制平面的单片网络体系结构,基于流的软件定义网络允许将网络的数据平面与控制平面隔离。数据平面可以作为分布在整个网络中的简单的离散流交换机(转发元件)来实现,而提供网络的智能性的控制平面则在监督流交换的集中流控制器中实现。通过将控制功能与数据转发功能解耦合,软件定义网络减轻了修改网络控制逻辑的任务,并且提供开发人员可在其上构建各种各样新的路由和协议管理应用的编程接口。这允许数据和控制平面独立地演进和缩放,同时减少数据平面网络组件所必需的管理。
[0022]控制平面或控制器通常通过在转发元件与控制器之间的安全且可靠的传输连接上的控制平面信令协议来控制转发平面。控制器通常包括提供基本处理、I/o和联网能力的操作系统。中间件层将软件定义网络控制器的上下文提供给操作系统,并利用控制平面信令协议与各种转发平面元件通信。中间件层上的应用层提供各种网络操作所需的智能性,例如协议、网络情况感知和用户接口。在更抽象级,应用层以网络的逻辑视图工作,并且中间件层提供从逻辑视图到物理视图的转化。
[0023]在软件定义网络范例的一个实施例中,每个转发元件是一个流交换启用网络装置。流交换启用网络装置基于每个分组所属的流而不是基于分组内的目的地IP地址转发分组,后者通常在当前的常规分组交换IP网络中使用。流可定义为报头与给定位模式匹配的分组的集合。从这个意义上来说,传统IP转发也是基于流的转发,其中只通过目的地IP地址来定义流。但是,一般流定义允许考虑分组报头中的许多字段(例如,10个或更多个),而不是只考虑目的地IP地址或源IP地址。
[0024]控制平面基于每个流的应用层计算和中间件层映射将相关消息传送给转发元件。转发元件对这些消息进行处理,并在它的流表中将合适的流信息和对应的动作编程。转发元件将分组映射到流,并基于这些流表转发分组。当然,流表可以在诸如映射、列表、阵列、文件、表、关系数据库等的各种数据结构中实现。此外,这些表中的列和行的论述是任意的;尽管一个实现可以选择将条目放在行中,但是修改数据结构以便改为将条目放在列中是无足轻重的。另外,转发元件可能需要对于诸如DP1、NetFlow数据收集、OAM等的重要操作具有数据处理和数据生成能力。
[0025]流处理的标准定义了用于在控制平面和转发平面之间传送消息的协议,并且描述了用于分组的处理的模型。用于在流处理装置中处理分组的这个模型包括报头解析、分组归类和做出转发决定。
[0026]报头解析描述如何基于公知的协议集合(例如,以太网、虚拟局域网(VLAN)、多协议标签交换(MPLS)、IPv4等)来解译分组。一些报头层包含具有关于如何多路分用下一个报头的信息的字段。例如,以太网报头包括描述下一层中是什么类型的报头的字段。一些协议字段用于构建将在分组归类中使用的匹配结构(或密钥)。例如,第一密钥字段可以是源媒体接入控制(MAC)地址,而第二密钥字段可以是目的地MAC地址。
[0027]分组归类涉及在存储器中执行查找以便通过基于流条目的匹配结构或密钥确定流表中的哪个流条目与分组最佳匹配来将分组归类。可能的是,许多流可以对应于一个分组;在这个情况下,系统通常配置成根据定义的方案(例如,选择匹配的第一流条目)从这些流中确定一个流。
[0028]做出转发决定并执行动作是基于在之前的分组归类步骤中所标识的流条目通过利用分组执行动作来进行。流表中的每个流与将对每个对应分组执行的动作的集合相关联。例如,动作可以是:将报头推到分组上,利用特定端口转发分组,洪泛(flood)分组,或简单地丢掉分组。因此,具有特定传输控制协议(TCP)目的地端口的IPv4分组的流条目可以包含指定应当丢掉这些分组的动作。
[0029]但是,当未知分组(例如,如在OpenFlow用语中所使用的“未命中分组”或“匹配未命中”)到达数据平面(例如,到达转发装置)时,通常立刻将分组——或分组报头和内容的子集转发给控制平面(或控制器)。执行定义决定在数据平面中如何处理分组并将对应条目编程的过程的软件的控制器,将然后将流表条目(又称为流条目)编程到数据平面的转发装置中以便容纳属于未知分组的流的分组。在一些情况下,一旦控制器从转发装置接收“未命中”分组,控制器还将把分组转发到它确定为合适的目的地。这个基于控制器的转发有时称为缓慢路径处理,它对于网络来说是不利和/或病态的。
[0030]在其它信息片段中,编程的流表条目定义匹配准则的特定集合(值或通配符的集合、或应当将分组的哪些部分与一个或多个特定值/通配符进行比较的指示,如数据平面的匹配能力所定义一即一对于分组报头中的特定字段或对于某个其它分组内容)以及在接收匹配分组时采取的数据平面的动作或动作的集合。但是,编程的匹配准则可能只与可接收的分组的子集匹配(对于端口或系统)。在这个可能的情况下,还将把额外的“未知”分组转发给控制器。
[0031]一旦控制器将特定流表条目编程,那么当具有匹配凭证的下一个分组到达时,它与数据平面中所创建的条目匹配,并且转发装置采取与匹配的条目相关联的动作。
[0032]当例如将新的节点添加到网络中时,由于该节点的流表是空的,所以现有的SDN机制可能会造成诸如拥塞和分组丢失的网络问题。由于在与该新节点相关联的流表中没有任何条目,所以将把与该新节点相关联的所有业务转发给控制器,直到控制器在该节点的流表中创建了特定转发条目,并且根据这一个默认“匹配未命中动作”(OpenFlow通常是丢弃)或某个其它单个默认转发动作(同样最有可能是丢弃)处理所有分组类型。例如,OpenFlow允许编程人员为未知分组的默认规则编程,例如“丢掉所有”或“转发所有”。由于控制平面分组处理能力比数据平面接收分组并将分组转发给控制平面的速率慢,所以这可淹没控制器的处理能力,从而造成控制器处的拥塞以及网络中的潜在的灾难性延迟。
[0033]出于这个原因,典型的转发装置禁用匹配特征,并且不将信息转发给控制器,直到明确允许这么做(通常通过控制器本身)。因此,不转发分组,直到新安装或创建的转发器完全配置好为止。
[0034]当某个人故意发送非常大量的业务以使得所接收的所有(或几乎所有)分组都具有“新的”凭证并且因此对于数据平面而言似乎都是“未知”时,也会出现类似问题。所有这个业务到控制器的引起的转发也可淹没控制平面,并且可潜在地使网络的全部或一部分出故障。这样的事件是拒绝服务(DoS)攻击的一个常见向量。
[0035]现有SDN实现可以通过实现设计来避免淹没控制器。例如,可以严格使用独立处理器来处理入局控制业务的接收和存储。在最坏的情况下,这个方法可以允许该实现在它所接收的所有控制分组将以其它方式淹没控制器时开始丢弃这些控制分组。但是,这个方法有很多问题。首先,出于多个原因(不兼容设计、规模考量等)中的任意一个原因,实现可能不能实现该能力。因此,很有可能的是,如果转发平面(或转发装置)正在将高于正常的业务量发送到控制器,那么即使转发装置已经完全配置好,但是由于网络业务的变化,控制器实现可被淹没。利用潜在地丢弃控制分组的独立处理器的方法的第二个问题是,由于积压的较旧业务而丢弃新业务众所周知是个问题,这通常会诱导病理性网络行为。
[0036]现有SDN实现的另一个问题是,任何尚未归类的流的第一分组将经历潜在显著的处理延迟,这是因为与流中的剩余分组相比,它将接收不同处理(控制器通过分析该分组执行缓慢路径处理)。因此,利用任何这样的方法,无序分组递送事件的频率将更高。因此,由于未匹配业务的缓慢路径处理而导致的基于分组的规则创建可在流中导致无序递送和/或过度延迟变化。另外,将每个“未命中”分组传送到控制器可能会相当费成本,因为该数据会消耗网络中的转发元件和转发链路的资源。
[0037]本发明的实施例提出一种SDN配置,它可用于避免这些问题,并且由此加速网络中的转发速度。本发明的实施例不需要SDN实现是OpenFlow兼容的。但是,本发明的实施例利用与OpenFlow所提出的那些结构和概念有关的结构和概念,例如转发装置所使用的流表(又称为匹配表)和控制平面(或控制器)通过处理分组信息执行基于分组的规则创建并确定将转发装置编程以便识别“新”流并相应地转发这些分组所需的配置信息和/或提供新匹配准则的能力,新匹配准则使得当转发装置接收相同流的随后分组时转发装置可能将更合适的分组信息提供给控制器。
[0038]概沭
在本发明的实施例中,控制器首先标识假设任何转发节点在给定网络中提供的服务类型,并且基于该信息以及可选地进一步基于诸如网络拓扑的其它信息,定义数据路径的默认转发规则的集合。另外,控制器可以具有基于装置类型的配置步骤的优先列表,它将开始将优先列表编程到转发装置的可配置默认规则表(CDRT)中。因此,基于装置类型和配置步骤的优先列表,控制器然后可以在完成这样的局部配置之后启用有限转发。在本发明的实施例中,控制器利用在CDRT的条目中所定义的动作与通过转发装置执行的有限转发并行地继续这些优先配置步骤,直到诸如配置的时间(如果有的话)完成为止。
[0039]这样的配置使得有限但有用的转发能够快速进行。例如,该配置允许在网络中早启动装置类型特定的控制协议,例如生成树协议(STP)、桥接器的最短路径桥接(SPB)、或路由器的站点特定路由协议(例如,开放式最短路径优先(OSPF )、中间系统到中间系统(IS-1S)、内部边界网关协议(iBGP)等)。另外,取决于装置类型,优选的是默认不丢弃分组。例如,可以用“洪泛”的默认动作配置以太网桥接器,“洪泛”是这样的桥接器的常见操作。
[0040]另外,立即允许有限量的转发的能力在SDN应用中可以是关键的,其中可以利用其中完全配置可能需要过度时间量的一般的、完全可编程的转发装置来将装置类型实例化为一个或多个虚拟装置。
[0041]在完成局部配置(基于装置类型)并且启用某个分组转发子集之后,基于分组的规则创建开始。当转发平面接收未知分组(即,在流表中没有配置更特定动作或规则的分组)时,转发平面执行来自CDRT的CDRT条目的与该分组相关联的默认转发动作。这在该特定分组的转发中不涉及控制平面的情况下进行。
[0042]当处理该分组时,将分组的一部分(或全部)复制到转发装置本地存储器(例如,分组未命中表(PMT))。在一些实施例中,
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1