基于策略的路由系统中的路由表选择

文档序号:1591071 发布日期:2020-01-03 浏览:6次 >En<

阅读说明:本技术 基于策略的路由系统中的路由表选择 (Routing table selection in policy-based routing systems ) 是由 A.法兰森 T.哈马姆 于 2017-05-24 设计创作,主要内容包括:描述了一种由网络设备实现的用于在基于策略的路由(PBR)系统中选择路由表的方法。该方法可包括:从第一网络域接收分组;生成用于分组的防火墙标记,其中该防火墙标记包括网络域指示和分组分类指示;确定分组的网络域指示与规则集中的匹配规则的选择器之间的匹配;以及在确定分组的网络域指示与匹配规则的选择器之间的匹配时,将防火墙标记输入到匹配规则的函数中,以识别用于分组的路由表。(A method implemented by a network device for selecting a routing table in a policy-based routing (PBR) system is described. The method can comprise the following steps: receiving a packet from a first network domain; generating a firewall label for the packet, wherein the firewall label comprises a network domain indication and a packet classification indication; determining a match between the network domain indication of the packet and a selector of a matching rule in the rule set; and upon determining a match between the network domain indication of the packet and the selector of the matching rule, entering a firewall token into a function of the matching rule to identify a routing table for the packet.)

基于策略的路由系统中的路由表选择

技术领域

本文描述的实施例涉及选择路由表的领域;更具体地,涉及在基于策略的路由(PBR)系统中选择用于分组的路由表。

背景技术

路由是为网络中或在多个网络之间或跨多个网络的业务选择路径的过程。在一些情况下,可执行路由以划分网络资源。对于划分路由网络中的网络资源可能存在许多原因,并且在路由设备中使用多个路由表是一种有助于描述路由控制和转发行为的结构分离的技术,而无需以附加的硬件单元的形式添加额外的路由设备。例如,(1)当需要分离穿过公共设备的不同企业的业务时,(2)在通过独立网络提供特殊路径分集转发的方案中,(3)作为路由设备中针对单播业务和多播业务分离路由处理的手段,或者(4)在适应特殊转发特性的网络切片情形中,可使用多个路由表。

通常,术语“路由”意味着路由器只查看分组中的目的互联网协议(IP)地址,以确定转发分组的下一跳地址。然而,当需要考虑用于路由决策的其他信息时,或者在基于特定策略标准而必须首先建立选择哪个路由表的情况下,使用术语“基于策略的路由(PBR)”。在PBR系统中,分组处理由按优先级排序的PBR规则列表来进行管理。该有序列表可被称为路由策略数据库(RPDB)。PBR规则可包括识别分组的类别或分类的选择器、以及动作谓词。

分组分类是基于分组中的信息、与分组相关联的信息或所述信息的处理结果来将业务分组分类为类的过程或机制。然后可标记(“着色”)经分类的分组,以使得过程和/或设备可容易地识别属于一个类的分组,并基于分组标记(颜色)提供差异化的处理。这种分类技术可用于路由器和防火墙中,以针对分组的类别(颜色)提供例如差异化的服务质量(QoS)和基于策略的分组处理。标记(颜色)有时被称为防火墙标记(fwmark),并且可由整数值表示。

例如,当网络设备接收到分组时,可对该分组进行分类以产生防火墙标记。之后,防火墙标记可与RPDB中对应的PBR规则的选择器进行比较。在确定匹配时,可采取匹配PBR规则的对应的动作谓词。例如,第一防火墙标记值可对应于第一PBR规则的选择器。响应于分组的防火墙标记与第一PBR规则的选择器匹配,可采取第一PBR规则的动作谓词。在这种情况下,动作谓词可以是选择第一路由表用于确定分组的下一跳。类似地,由网络设备接收的另一分组可被分类并且与第二防火墙标记值相关联。该第二防火墙标记值将不匹配第一PBR规则的选择器,而是匹配第二PBR规则的选择器。响应于与第二PBR规则的选择器的匹配,可采取第二规则的动作谓词。在这种情况下,第二PBR规则的动作谓词可以是选择第二路由表用于确定分组的下一跳。

在复杂的现实场景中,在单个RPDB中可存在数百或数千个PBR规则。在一些情况下,数百或数千个PBR规则可集中在每个相关联的网络域上,并且RPDB可覆盖若干个网络域。此外,这些规则中的一些规则可能与路由表的选择无关(例如,执行分组丢弃的动作)或者基于除了防火墙标记之外的选择器。由于每个分组可能需要与大量PBR规则选择器进行比较,因此路由表选择速度经常变得严重降低。另外,随着每个RPDB中的PBR规则的数量增加,管理RPDB的难度和负担也同样受到影响。

发明内容

描述了一种由网络设备实现的用于在基于策略的路由(PBR)系统中选择路由表的方法。该方法可包括:从第一网络域接收分组;生成用于分组的防火墙标记,其中该防火墙标记包括网络域指示和分组分类指示;确定分组的网络域指示与规则集中的匹配规则的选择器之间的匹配;并且在确定分组的网络域指示与匹配规则的选择器之间的匹配时,将防火墙标记输入到匹配规则的函数中,以识别用于分组的路由表。

本文还描述了一种网络设备。该网络设备可包括在其中存储有分类器和路由策略引擎的非暂态机器可读存储介质;以及被耦接至非暂态机器可读存储介质的处理器。该处理器被配置为执行分类器和路由策略引擎,其中分类器被配置为从第一网络域接收分组并且生成用于分组的防火墙标记,其中该防火墙标记包含网络域指示及分组分类指示,并且其中该路由策略引擎被配置为确定分组的网络域指示与规则集中的匹配规则的选择器之间的匹配,并且在确定分组的网络域指示与匹配规则的选择器之间的匹配时,将防火墙标记输入到匹配规则的函数中,以识别用于分组的路由表。

在具有大量PBR规则并且的基于PBR的路由表选择是基于分组分类的系统中,本文描述的系统和方法极大地加速了路由表的选择。具体地,在典型的现实世界部署场景中,采用几百个PBR规则,路由表格选择已被测量比传统技术快100倍。这一改进的性能是在不降低其他基于PBR的能力的情况下实现的。

此外,所描述的系统和方法作用于使用防火墙标记作为选择器的PBR规则,并仍然与路由策略数据库(RPDB)中作用于除了防火墙标记之外的选择器的PBR规则一致/协调地工作。例如,更高优先级的PBR规则可***RPDB中以基于源互联网协议(IP)选择器来丢弃或隔离特定业务。

此外,所描述的系统和方法导致比传统系统具有更少条目(例如,PBR规则)的更紧凑的RPDB。特别地,针对单个网络域覆盖使用防火墙标记作为选择器的路由表选择的若干个PBR规则可被组合成单个PBR规则。这一减少的PBR规则的数量产生更易于管理的更紧凑的RPDB。

本文所述的系统和方法可应用于使用多个路由表的负载平衡、防火墙或路由系统。另外,本文描述的PBR可独立于特定产品,并且支持具有重叠IP地址的多个网络域。

附图说明

通过参考以下用于说明实施例的描述和附图,可最好地理解系统、设备、结构、方法和设计。在附图中:

图1示出了根据一个实施例的包括网络域集合的网络系统。

图2示出了根据一个实施例的在网络系统的网络域中工作的网络设备的示例。

图3示出了根据一个实施例的包括网络域指示和分组分类指示的防火墙标记(fwmark)。

图4示出了根据一个实施例的包括选择器和动作谓词的基于策略的路由(PBR)规则。

图5示出了根据一个实施例的具有条目集的路由表。

图6示出了根据一个实施例的在网络系统的网络域中工作的网络设备的示例。

图7示出了根据一个实施例的用于在PBR系统中选择路由表的方法。

图8A示出了根据一些实施例的在示例性网络内的网络设备(ND)之间的连接以及ND的三个示例性具体实现。

图8B示出了根据一些实施例的实现专用网络设备的示例性方式。

图8C示出了根据一些实施例的可耦接虚拟网络单元(VNE)的各种示例性方式。

图8D示出了根据一些实施例的在每个ND上具有单个网络单元(NE)的网络,并且在该直接方法内,将传统的分布式方法(通常由传统的路由器使用)与用于维持可达性和转发信息的集中式方法(也称为网络控制)相对比。

图8E示出了根据一些实施例的简单情况,其中每个ND实现单个NE,但是集中控制平面已将不同ND中的多个NE抽象成(表示)一个虚拟网络中的单个NE。

图8F示出了根据一些实施例的情况,其中多个VNE在不同ND上实现并且彼此耦接,并且集中控制平面已抽象了这些多个VNE,以使得它们在一个虚拟网络内作为单个VNE出现。

图9示出了根据一些实施例的具有集中控制平面(CCP)软件950的通用控制平面设备。

具体实施方式

以下描述描述了用于通过将网络域指示以及与分组相关联的分组分类指示包括在防火墙标记(fwmark)中来在基于策略的路由(PBR)中选择用于分组的路由表的方法和装置。在下面的描述中,阐述了许多具体细节,诸如逻辑实现、操作码、指定操作数的装置、资源划分/共享/复制实现、系统部件的类型和相互关系、以及逻辑划分/集成选择,以便提供对本发明的系统、设备、结构、方法和设计的彻底理解。然而,本领域技术人员将理解,在本文描述的实施例可在没有此类具体细节的情况下实践。在其他情况下,控制结构、门级电路和全软件指令序列没有详细示出,以免模糊本文描述的系统、设备、结构、方法和设计。本领域的普通技术人员利用所包括的描述将能够实现合适的功能,而无需过度的实验。

在说明书中提及“一个实施例”、“实施例”、“示例性实施例”等表明所描述的实施例可包括特定的特征、结构或特性,但是每个实施例并不必需包括特定的特征、结构或特性。此外,此类短语并不一定是指同一个实施例。此外,当结合实施例来描述特定的特征、结构或特性时,应当认为它是在本领域技术人员的知识范围内结合其他实施例来影响此类特征、结构或特性,而无论是否明确地描述。

加括号的文本和具有虚线边界(例如,大虚线、小虚线、点划线和点)的块可在本文中用于示出将另外的特征添加到实施例的可选操作。然而,此类记号不应该被认为意味着这些是唯一的选项或可选的操作,和/或具有实线边界的块在特定实施例中不是可选的。

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

图1示出了根据一个实施例的网络系统1100。网络系统100可由网络域集合组成,包括网络域102、104和1101-110X。每个网络域102、104和1101-110X可通过一个或多个有线连接或无线连接互连。在一些实施例中,每个网络域102、104和1101-110X可表示网络系统100内不同的专用计算机网络。在该实施例中,每个网络域102、104和1101-110X可具有分离的或重叠的地址范围/空间以用于分配给相应网络域102、104和1101-110X内的每个对应的设备。

每个网络域102、104和1101-110X可包括用于路由分组通过网络系统100的一组网络设备。在一个实施例中,如图1所示,网络设备108可跨接网络域102、104和1101-110X。在这种配置中,网络设备108可用于从网络域102和104接收分组,并将所接收的分组转发到网络域1101-110X中的一个网络域(例如,下一跳)。在一个实施例中,关于所接收的分组将被转发到网络域1101-110X中的哪个网络域的决策可基于存储在网络设备108中或者可由网络设备108访问的选定路由表。

图2示出了根据一个实施例的网络设备108的示例。如图所示,网络设备108可被连接到网络域102和网络域104。与网络域102和104的连接可经由有线介质和/或无线介质来建立。在一个实施例中,这些连接允许网络设备108接收从网络域102和104内的设备发送的一个或多个分组。例如,如图2所示,网络设备108可从在网络域102内工作的源设备接收分组202。

分组202可以是包括控制信息和用户数据的格式化数据单元。例如,控制信息可位于分组202的物理(PHY)或媒体访问控制(MAC)报头中,并且可包括发送设备的源地址、接收设备的目的地地址(例如,分组202的最终/预期目的地)、服务优先级或服务质量(QoS)信息、长度指示符、差错检测/校正信息、和/或一个或多个类似的控制信息。分组202可以是互联网协议数据报。用户数据可位于分组202的有效载荷中,并且可包括文本、视频、图像、音频、或旨在用于供接收设备使用的其他类似的数据段。例如,分组202可在有效载荷中包括视频的一部分以供接收/目的地设备的用户观看。

如图2所示,网络设备108的分类器204从网络域102接收分组202。尽管分组202的最终目的地不是网络设备108,但是网络设备108可通过将分组202转发到网络系统100中的下一跳来帮助将分组引导到最终目的地,如将在本文描述的。在一个实施例中,分类器204根据指定的分类标准对分组进行算法分类。在一些实施例中,该分类标准可按网络域指定,以使得从网络域102接收的分组根据第一组分类标准来分类,而从网络域104接收的分组根据第二组分类标准来分类。

因此,可根据针对从其接收分组202的网络域102指定的技术对分组202进行分类。由分类器204执行的该分类可产生/生成/输出分组分类指示。在一个实施例中,分组分类指示可描述分组202内的信息(例如,描述分组202的有效载荷或报头内的信息)、与分组202相关联的信息、和/或从处理前面的任一个信息中产生的信息。例如,与网络域102相关联的分类技术可以是基于源互联网协议(IP)地址、目的IP地址和/或分组202的报头中可用的其他信息的散列。在该示例中,散列可作为表示分组202的报头中的源IP地址和目的地IP地址的二进制信息的异或(XOR)来完成。然而,在其他实施例中,可使用其他散列技术。

上述的分类产生被标记或“着色”的分组,以使得在本文描述的系统和方法能够容易地识别属于特定类的分组,并基于分组标记/颜色提供差异化的处理(例如,基于标记/颜色选择不同的路由表)。该差异化的处理可针对分组的类/类别(例如,颜色)提供不同的基于QoS和策略的分组处理。在一些实施例中,术语“颜色”或“标记”可被称为防火墙标记(fwmark),并且可由整数值表示。

尽管在图2中被描述和示出为网络设备108的分类器204从多个网络域(例如,网络域102和网络域104)接收分组,但是在其他实施例中,本文描述的系统和方法可以类似的方式与单个接收网络域操作(例如,分类器204仅从网络域102接收分组)。

如上所述,分类器204对分组202的分类可产生用于分组202的防火墙标记。在一个实施例中,用于分组202的防火墙标记可由两部分数据组成:(1)网络域指示和(2)分组分类指示。图3示出了根据一个实施例的具有网络域指示302和分组分类指示304的示例性防火墙标记300。

在一个实施例中,分组分类指示304对应于上述的由分类器204执行的分类,并且网络域指示302唯一地识别从其接收分组202的网络域(例如,网络域102)。分组分类指示304和网络域指示302两者可在二进制地址空间中表示。在一个实施例中,网络域指示302可由分类器204分配,而在其他实施例中,网络域指示302可由网络系统100的另一个部件分配。例如,网络域指示302可对应于由网络系统100用于识别网络域的标识符,并且分类器204使用这些网络系统100分配的网络域标识符用于网络域指示302。

如本文将描述的,防火墙标记300可用于将分组202映射到特定路由表,该特定路由表将用于将分组202路由到网络系统100中的下一跳。特别地,与和网络域102相关联的规则对应的函数可基于分组的防火墙标记300来识别单个路由表。在整个讨论中,网络域指示302可替代地称为网络域标识符或网络域密钥。类似地,该分组分类指示304可替代地称为分类标识符、分类密钥、类别指示、类别标识符或类别密钥。

在一个实施例中,网络域指示302的长度和分组分类指示304的长度可在所有网络域上是一致/相等的。例如,与网络域102对应的网络域指示302的长度可以是16比特,而与网络域104对应的网络域指示302也可以是16比特。然而,在其他实施例中,网络域指示302和/或分组分类指示304的长度在网络域上可以是可变的。例如,从网络域102接收的分组202的网络域指示302可以是16比特,而从网络域104接收的分组的网络域指示302可以是8比特。在一些实施例中,网络域指示302和分组分类指示304的长度的可变性可以是彼此相关的。例如,防火墙标记300可以在所有网络域上具有预定义尺寸,并且网络域指示302和分组分类指示304的长度之和可不超过该预定义尺寸。在该示例性实施例中,当网络域指示302的长度扩展或收缩时,分组分类指示304的长度将相等且相反地扩展或收缩,以使得不超过防火墙标记300的预定义尺寸。在一个实施例中,网络域指示302和分组分类指示304的可变性可针对分类器204指定,并且可通过使用网络域相关掩码来实施/实现。如下面进一步详细描述的,经由防火墙标记300使用网络域指示302和分组分类指示304两者的与网络域相关联的规则可利用对应的域相关掩码以隔离网络域指示302。

在对分组202分类和生成防火墙标记300之后,分组202的防火墙标记300可被传送或者可被路由策略引擎206访问。路由策略引擎206由路由策略数据库(RPDB)208管理,如图2所示。在一个实施例中,RPDB 208由基于策略的路由(PBR)规则2101-210N集组成。在一些实施例中,PBR规则2101-210N可按照优先级/重要性的降序来排序。例如,在这些实施例中,在RPDB 208的顶部/前面的PBR规则210(例如,PBR规则2101)可具有比在RPDB 208的底部/后面的PBR规则210(例如,PBR规则201N)更高的优先级/重要性。

在一个实施例中,如图4所示,RPDB 208中的每个PBR规则210可包括选择器402和动作谓词404两者。在该实施例中,响应于值与PBR规则210的选择器402匹配来执行PBR规则210的动作谓词404。例如,PBR规则2101可使用防火墙标记300的网络域指示302作为选择器402,并且响应于网络域指示302值与PBR规则2101的选择器402匹配,PBR规则2101的动作谓词404可选择路由表212以用于将分组202路由到网络系统100中的下一跳。在一些实施例中,如下所述,由动作谓词404对路由表212的这一选择可基于整个防火墙标记300。在这些实施例中,动作谓词404利用采用整个防火墙标记300作为自变量的函数,并且该函数指示/选择路由表212。

路由表212指示/描述分组可在去往目的地的路上采用的路由或下一跳的集合。图5示出了根据一个实施例的示例性路由表2121。如图5所示,路由表格2121可包括一组信息字段502,其可包括网络目的地地址(例如,目的地子网)、网络掩码(netmask)、网关(例如,下一跳或网关是分组在去往其最终目的地的路上将要被发送到的下一个网络设备的地址)、接口、和度量(例如,与分组将要被发送的路径相关联的成本)。在一些实施例中,网络目的地字段和网络掩码字段可一起用于识别分组的目的地的网络域1101-110X(例如,下一跳)。

信息字段502中的不同值可定义路由表212中的一组条目。例如,网络目的地为157.55.27.90的分组可对应于图5的路由表212中的第二个条目504。在该实施例中,网络目的地为157.55.27.90的分组可通过网关/接口127.0.0.1被转发到目的地。

如上所述,在一些实施例中,由动作谓词404对路由表212的选择可通过动作谓词404的函数来执行。例如,如图4所示,动作谓词404可包括采用分组202的防火墙标记300值作为输入/自变量的函数。在该示例中,防火墙标记300是独立变量,并且该函数输出路由表212的标识符或者指示基于防火墙标记300值来选择路由表212。

如上所述,在某些实例中,规则210的选择器402可以是防火墙标记300或防火墙标记300的一部分,诸如网络域指示302。如前面所述和图3所示,在一些实施例中,防火墙标记300可包括网络域指示302和分组分类指示304两者。在这些实施例的一些实施例中,RPDB208中的PBR规则210可包括掩码,该掩码用于掩蔽分组202的防火墙标记300值中的分组分类指示304并揭示/隔离网络域指示302。该掩蔽可用于仅将防火墙标记300的网络域指示302部分与PBR规则210的选择器402进行比较。在分组202的网络域指示302与PBR规则210的选择器402成功匹配之后,可执行匹配的PBR规则210的动作谓词404(例如,基于整个防火墙标记300值选择用于分组202的路由表212)。在这些实施例中,尽管整个防火墙标记300被传送到PBR规则210,但是选择器402可使用掩码来仅揭示网络域指示302以用于与选择器402进行比较,而完整的防火墙标记300值可由动作谓词404的函数使用以选择用于分组202的路由表212。

由于网络域指示302用于确定与PBR规则210的选择器402的匹配,因此PBR规则2101-210N可被视为对应于特定的网络域。例如,PBR规则2101可包括匹配从网络域102接收的分组的网络域指示302的选择器402。类似地,PBR规则2102可包括匹配从网络域104接收的分组的网络域指示302的选择器402。PBR规则2101和2102中的每个PBR规则可包括具有将防火墙标记300值映射到路由表212的函数的动作谓词404。由于PBR规则2101的动作谓词404函数采用防火墙标记300并因此是分组分类指示304作为自变量,因此,规则2101可被视为将从网络域102接收的分组的类映射到与该网络域102相关联的路由表。例如,如图6所示,从网络域102接收的分组可被映射到类6021-602256,并且每个类6021-602256与不同的路由表2121-212256相关联(例如,防火墙标记300值和路由表2121-212256之间的一对一映射)。类似地,从网络域104接收的分组可被映射到类6041-60464,并且每个类6041-60464与不同的路由表212257-212320相关联(例如,防火墙标记300值和路由表212257-212320之间的一对一映射)。

在一些实施例中,RPDB 208可包含与基于防火墙标记300值选择路由表212相关的规则210(例如,图4中所示的规则210)和与基于防火墙标记300值选择路由表212无关的规则210两者。例如,在一个实施例中,RPDB 208可包括基于除了防火墙标记300值之外的值/变量来确定路由表212的规则210。在另一示例中,RPDB 208可包含导致分组被丢弃的规则210。

在一些实施例中,针对每个所接收的分组可仅执行一个动作谓词404。具体地,在确定了与PBR规则210的选择器402的匹配时,实行/执行该规则210的动作谓词404,并且不进一步查询RPDB 208。在RPDB 208按照优先级递减的顺序进行排序的实施例中,尽管分组202可与RPDB 208内的多个PBR规则210的多个选择器402匹配,但是,将执行其选择器402与分组202匹配的具有最高优先级的PBR规则210,并且将忽略其他PBR规则210。

在由路由策略引擎206选择路由表212之后,分组202可根据所选择的路由表212被路由到网络系统100中的下一跳。具体地,分组202可被映射/匹配到所选择的路由表212中的条目,并且与该条目相关联的路由/下一跳可被用于转发分组202。如图1所示,该路由可包括转发到网络域1101-110X中的一个网络域。

现在转到图7,将描述用于在基于策略的路由(PBR)系统中选择路由表的方法700。将参考其他附图的示例性实施例来描述图7的流程图中的操作。具体地,将结合图1-6的元件来描述方法700。然而,应当理解,图7中的流程图的操作可由不同于参考其他附图所讨论的实施例的实施例来执行,并且参考这些其他附图所讨论的实施例可执行不同于参考流程图所讨论的操作的操作。

在一个实施例中,方法700的操作可由网络设备108的一个或多个元件来执行。例如,如下面将更详细描述的,方法700的一个或多个操作可由分类器204和/或路由策略引擎206执行。然而,方法700的一些操作可部分或全部由网络设备108的其他元件执行。

在一个实施例中,方法700可在操作702处开始,其中从网络域102接收分组202。在一个实施例中,分组202可由网络设备108的分类器204从在网络域102中工作的设备接收。然而,在一些实施例中,分组202可不由分类器204直接从网络域102接收,而是在由分类器204接收之前由网络设备108的另一个部件接收。

如图1所示,网络设备108可用于从网络域102和网络域104两者接收分组。在其他实施例中,网络设备108可用于从更多或更少的网络域接收分组。

分组202可在分组202的一个或多个报头(例如,物理(PHY)和/或媒体访问控制(MAC)报头)和/或有效载荷部分中包括各种信息。在一个实施例中,信息可包括被存储在分组202的报头中的分组202的目的地地址。该目的地地址指示分组202的最终目标。例如,尽管分组202可由网络设备108接收,但是目的地地址可对应于网络域1101内的设备。在该示例中,网络设备108可如本文将描述地将分组202转发到网络系统100中的下一跳,以使得分组202可最终到达目的地地址。

在接收到分组202之后,在操作704处,可对分组202生成防火墙标记(fwmark)300。在一个实施例中,如图3所示,防火墙标记300可包括网络域指示302和分组分类指示304。在一个实施例中,包括网络域指示302和分组分类指示304的防火墙标记300可由分类器204生成。

网络域指示302唯一地识别从其接收分组202的网络域(例如,网络域102)。在一个实施例中,网络域指示302可由分类器204分配,而在其他实施例中,网络域指示302可由网络系统100的另一个部件分配。例如,网络域指示302可对应于由网络系统100用于识别网络域的标识符,并且分类器204使用这些网络系统100分配的网络域标识符用于网络域指示302。

在一个实施例中,分组分类指示304可描述分组202内的信息(例如,描述分组202的有效载荷或报头内的信息)、与分组202相关联的信息、和/或由处理前面的任一信息而产生的信息。例如,分类器204根据指定的分类标准对分组进行算法分类,并输出分组分类指示304。在一些实施例中,该分类标准可按网络域指定,以使得从网络域102接收的分组根据第一组分类标准进行分类,并且从网络域104接收的分组根据第二组分类标准进行分类。

例如,与网络域102相关联的分类技术可基于源互联网协议(IP)地址、目的IP地址和/或分组202的报头中可用的其他信息的散列。在该示例中,散列可作为表示分组202的报头中的源IP地址和目的地IP地址的二进制信息的异或(XOR)来完成。然而,在其他实施例中,可使用其他散列技术。

在一个实施例中,网络域指示302的长度和分组分类指示304的长度可在所有网络域上是一致/相等的。然而,在其他实施例中,网络域指示302的长度和/或分组分类指示304的长度在网络域上可以是可变的。例如,从网络域102接收的分组202的网络域指示302可具有第一长度,而从网络域104接收的分组的网络域指示302可具有第二长度,其中第一长度和第二长度是不同的。在一些实施例中,网络域指示302和分组分类指示304的长度的可变性可以是彼此相关的。例如,防火墙标记300可以在所有网络域上具有预定义尺寸,并且网络域指示302和分组分类指示304的长度之和可不超过该预定义尺寸。在该示例性实施例中,当网络域指示302的长度针对网络域扩展或收缩时,分组分类指示304的长度将相等且相反地扩展或收缩,以使得不会超过防火墙标记300的预定义尺寸。在一个实施例中,网络域指示302和分组分类指示304的可变性可针对分类器204指定,并且可通过使用网络域相关掩码来实施/实现。如下面进一步详细描述的,包括网络域指示302和分组分类指示304两者的与网络域相关联的规则可利用对应的域相关掩码以隔离网络域指示302。

在生成防火墙标记300之后,操作706可确定分组202的防火墙标记300的网络域指示302与来自路由策略数据库(RPDB)208中的PBR规则2101-210N集的基于策略的路由(PBR)规则210(例如,匹配的PBR规则210)之间的匹配。在一个实施例中,如图4所示,RPDB 208中的每个PBR规则210可包括选择器402和动作谓词404两者。在该实施例中,响应于值与PBR规则210的选择器402匹配来执行PBR规则210的动作谓词404。在一些实施例中,操作706可确定分组202的防火墙标记300的网络域指示302和匹配的PBR规则210的选择器402之间的匹配。

如上所述,在一些实施例中,网络域指示302的长度可取决于网络域。为了说明该可变性,与网络域对应的PBR规则210可使用与该网络域对应的掩码。网络域相关掩码可用于掩蔽分组202的防火墙标记300值中的分组分类指示304,并揭示/隔离网络域指示302。因此,在操作706处的定位匹配的PBR规则210的比较可包括应用网络域相关掩码,然后将掩蔽的结果(例如,网络域指示302)与PBR规则210的选择器402进行比较。在一个实施例中,操作706可由路由策略引擎206执行。

在确定分组202的网络域指示302和匹配的PBR规则210的选择器402之间的匹配时,操作708可将整个防火墙标记300输入到匹配的PBR规则210的函数中以识别用于分组202的路由表212。在一个实施例中,该函数是匹配的PBR规则210的动作谓词404的一部分。例如,如图4所示,动作谓词404可包括采用分组202的防火墙标记300值作为输入/自变量的函数。在该示例中,防火墙标记300是独立变量,并且函数基于防火墙标记300值来输出/选择路由表212。

由于网络域指示302用于确定与PBR规则210的选择器402的匹配,因此,PBR规则2101-210N可被视为对应于特定的网络域。例如,PBR规则2101可包括匹配从网络域102接收的分组的网络域指示302的选择器402。类似地,PBR规则2102可包括匹配从网络域104接收的分组的网络域指示302的选择器402。PBR规则2101和2102中的每个PBR规则可包括具有将防火墙标记300值与路由表212映射的函数的动作谓词404。由于PBR规则2101的动作谓词404函数采用防火墙标记300并因此是分组分类指示304作为自变量,因此,规则2101可被视为提供将从网络域102接收的分组的类(或防火墙标记300值)一对一映射到与该网络域102相关联的路由表。例如,如图6所示,从网络域102接收的分组可被映射到类6021-602256,并且每个类6021-602256与不同的路由表2121-212256相关联。类似地,从网络域104接收的分组可被映射到类6041-60464,并且每个类6041-60464与不同的路由表212257-212320相关联。

在一些实施例中,RPDB 208可包含与基于防火墙标记300值选择路由表212相关的PBR规则210(例如,图4中所示的PBR规则210)和与基于防火墙标记300值选择路由表212无关的PBR规则210两者。例如,在一个实施例中,RPDB 208可包括基于除了防火墙标记300值之外的值/变量来确定路由表212的PBR规则210。在另一个示例中,RPDB 208可包含导致分组202被丢弃的PBR规则210。在又一个示例中,RPDB 208可包含具有选择器402和直接响应于与选择器402的匹配而采取的离散动作谓词404的PBR规则210。

在一些实施例中,针对每个所接收的分组202可仅执行一个动作谓词404。具体地,在确定了与PBR规则210的选择器402的匹配时,实行/执行该PBR规则210的动作谓词404,并且不进一步查询RPDB 208。在RPDB 208按照优先级递减的顺序进行排序的实施例中,尽管分组202可与RPDB 208内的多个PBR规则210的多个选择器402匹配,但是,将执行其选择器402与分组202匹配的具有最高优先级的PBR规则210。

在一个实施例中,操作708可由路由策略引擎206执行。

在识别/选择了用于分组202的路由表212之后,在操作710处可根据所识别/选择的路由表212中的条目来转发分组202。例如,在操作708处选择的路由表212内的条目可对应于分组202的目的地地址。使用该匹配的条目的一个或多个附加字段(例如,网络目的地字段和网络掩码字段),可确定在所选择的网络域中的下一跳。在操作710处,分组202可被转发到该下一跳(例如,在网络域1101-110X中的一个网络域中的目的地)。

在具有大量PBR规则210并且基于PBR的路由表212的选择是基于分组分类的系统中,在本文描述的系统和方法极大地加速了路由表212的选择。具体地,在典型的现实部署场景中,采用几百个PBR规则,路由表212的选择已被测量比传统技术快100倍。这种改进的性能是在不降低其他基于PBR的能力的情况下实现的。

此外,所描述的系统和方法作用于使用防火墙标记300作为选择器402的PBR规则210,并仍然与RPDB 208中作用于除了防火墙标记300之外的选择器402的PBR规则210一致/协调地工作。例如,更高优先级的PBR规则210可***RPDB 208中以基于源IP选择器402来丢弃或隔离特定业务。

此外,所描述的系统和方法导致比传统系统具有更少条目(例如PBR规则210)的更紧凑的RPDB 208。具体地,针对单个网络域覆盖使用防火墙标记300作为选择器402的路由表212的选择的若干个PBR规则210可被组合成单个PBR规则210。这一减少的PBR规则210的数量产生更易于管理的更紧凑的RPDB 208。

本文所述的系统和方法可应用于使用多个路由表212的负载平衡、防火墙或路由系统。另外,本文描述的PBR可独立于特定产品,并且支持具有重叠IP地址的多个网络域。

如上所述,本文描述的系统和方法可由一个或多个电子设备执行。电子设备使用机器可读介质(也被称为计算机可读介质)(诸如机器可读存储介质(例如,磁盘、光盘、固态驱动器、只读存储器(ROM)、闪存设备、相变存储器)和机器可读传输介质(也被称为载波)(例如,电气、光学、无线电、声学或其他形式的传播信号-诸如载波、红外信号))存储和传输(在内部和/或通过网络与其他电子设备一起)代码(其由软件指令构成,有时被称为计算机程序代码和/或计算机程序)和/或数据。因此,电子设备(例如计算机)包括硬件和软件,诸如一组一个或多个处理器(例如,其中处理器是微处理器、控制器、微控制器、中央处理单元、数字信号处理器、专用集成电路、现场可编程门阵列、其他电子电路、前述的一者或多者的组合)耦接至存储用于在该组处理器上执行的代码和/或存储数据的一个或多个机器可读存储介质。例如,电子设备可包括包含代码的非易失性存储器,因为即使在电子设备关闭(当断电时)时非易失性存储器也可保持代码/数据,而当电子设备打开时,将要由该电子设备的处理器执行的那部分代码通常从较慢的非易失性存储器复制到电子设备的易失性存储器中(例如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))。典型的电子设备还包括一组或一个或多个物理网络接口(NI)以建立与其他电子设备的网络连接(以使用传播信号来发送和/或接收代码和/或数据)。例如,该组物理NI(或该组物理NI结合执行代码的该组处理器)可执行任何格式化、编码或转换,以允许电子设备通过有线连接和/或无线连接来发送和接收数据。在一些实施例中,物理NI可包括能够通过无线连接从其他电子设备接收数据和/或经由无线连接将数据发送到其他设备的无线电电路。该无线电电路可包括适于射频通信的一个或多个发射机、一个或多个接收机和/或一个或多个收发机。无线电电路可将数字数据转换为具有合适的参数(例如,频率、定时、信道、带宽等)的无线电信号。然后,该无线电信号可经由天线被发送到一个或多个合适的接收者。在一些实施例中,该组物理NI可包括也被称为网络接口卡、网络适配器或局域网(LAN)适配器的一个或多个网络接口控制器(NIC)。NIC可有助于将电子设备连接到其他电子设备,从而允许它们通过将电缆***到连接到NIC的物理端口经由导线来进行通信。可使用软件、固件和/或硬件的不同组合来实现实施例的一个或多个部分。

网络设备(ND)是通信地互连网络上的其他电子设备(例如,其他网络设备、终端用户设备)的电子设备。一些网络设备是提供对多个联网功能(例如,路由、桥接、交换、第二层聚合、会话边界控制、服务质量和/或用户管理)的支持和/或提供对多个应用服务(例如,数据、语音和视频)的支持的“多服务网络设备”。

图8A示出了根据一些实施例的在示例性网络内的网络设备(ND)之间的连接以及ND的三个示例性实现。图8A示出了ND 800A-H并通过800A-800B、800B-800C、800C-800D、800D-800E、800E-800F、800F-800G和800A-800G之间的线以及800H与800A、800C、800D和800G中的每一者之间的线示出了ND800A-H的连接性。这些ND是物理设备,并且这些ND之间的连接可以是无线的或有线的(通常被称为链路)。从ND 800A、800E和800F伸出的附加线示出了这些ND充当网络的入口点和出口点(因此,这些ND有时被称为边缘ND;而其他ND可被称为核心ND)。

图8A中的两个示例性ND实现是:1)使用定制专用集成电路(ASIC)和专用操作系统(OS)的专用网络设备802;和2)使用通用现成(COTS)处理器和标准OS的通用网络设备804。

专用网络设备802包括网络硬件810,该网络硬件810包括一组一个或多个处理器812、一个或多个转发资源814(其通常包括一个或多个ASIC和/或网络处理器)、物理网络接口(NI)816(通过NI进行网络连接,诸如ND 800A-H之间的连接所示的网络连接)、以及在其中存储有网络软件820的非暂态机器可读存储介质818。在操作期间,联网软件820可由网络硬件810执行,以实例化一组一个或多个网络软件实例822。每个网络软件实例822以及网络硬件810的执行该网络软件实例的部分(是专用于该网络软件实例的硬件和/或由该网络软件实例与其他网络软件实例822临时共享的硬件时间片)形成单独的虚拟网络单元830A-R。每个虚拟网络单元(VNE)830A-R包括控制通信和配置模块832A-R(有时被称为本地控制模块或控制通信模块)和一个或多个转发表834A-R,以使得给定的虚拟网络单元(例如,830A)包括控制通信和配置模块(例如,832A)、一组一个或多个转发表(例如,834A)、以及网络硬件810的执行虚拟网络单元(例如,830A)的部分。

专用网络设备802通常在物理上和/或逻辑上被认为包括:1)包括执行控制通信和配置模块832A-R的处理器812的ND控制平面824(有时被称为控制平面);以及2)包括利用转发表834A-R和物理NI816的转发资源814的ND转发平面826(有时被称为转发平面、数据平面或媒体平面)。作为示例,在ND是路由器(或实现路由功能)的情况下,ND控制平面824(执行控制通信和配置模块832A-R的处理器812)通常负责参与控制将要如何路由数据(例如,分组)(例如,数据的下一跳和该数据的输出物理NI),并将该路由信息存储在转发表834A-R中,而ND转发平面826负责在物理NI 816上接收该数据并且基于转发表834A-R来将该数据转发出合适的物理NI 816。

图8B示出了根据一些实施例的实现专用网络设备802的示例性方式。图8B示出了包括卡838(通常是可热插拔的)的专用网络设备。虽然在一些实施例中,卡838具有两种类型(作为ND转发平面826工作的一个或多个卡(有时被称为线路卡)以及用于实现ND控制平面824的一个或多个卡(有时被称为控制卡)),但是,替换的实施例可将功能组合到单个卡上和/或包括附加的卡类型(例如,一种附加类型的卡被称为服务卡、资源卡或多应用卡)。服务卡可提供专用处理(例如,第4层到第7层服务(例如,防火墙、互联网协议安全(IPsec)、安全套接字层(SSL)/传输层安全(TLS)、入侵检测系统(IDS),对等(P2P)、基于IP的语音(VoIP)会话边界控制器、移动无线网关(网关通用分组无线服务(GPRS)支持节点(GGSN)、演进分组核心(EPC)网关)。作为示例,服务卡可用于终止IPsec隧道并执行参与者认证和加密算法。这些卡通过被示为背板836的一个或多个互连机制耦接在一起(例如,耦接线路卡的第一全连接和耦接所有这些卡的第二全连接)。

回到图8A,通用网络设备804包括硬件840,该硬件840包括一组一个或多个处理器842(其通常是COTS处理器)和物理NI 846、以及在其中存储有软件850的非暂态机器可读存储介质848。在操作期间,处理器842执行软件850以实例化一组或多组一个或多个应用程序864A-R。尽管一个实施例不实施虚拟化,但替代实施例可使用不同形式的虚拟化。例如,在一个这种替代实施例中,虚拟化层854表示允许创建多个被称为软件容器的实例862A-R的操作系统的内核(或在基础操作系统上执行的shim),其中每个实例862A-R可用于执行该组应用程序864A-R中的一个(或多个)应用程序;其中多个软件容器(也被称为虚拟化引擎、虚拟专用服务器或箱体)是彼此分离且与运行操作系统的内核空间分离的用户空间(通常是虚拟内存空间);并且,除非明确允许,否则在给定用户空间中运行的那组应用程序不能访问其他进程的存储器。在另一个这种替代实施例中,虚拟化层854表示管理程序(有时被称为虚拟机监控器(VMM))或在主机操作系统之上执行的管理程序,并且该组应用程序864A-R中的每个应用程序在被称为虚拟机的实例862A-R(其在某些情况下可被认为是紧密隔离形式的软件容器)内的客户操作系统之上运行,其中实例862A-R在管理程序之上运行-客户操作系统和应用程序可能不知道它们正在虚拟机上运行,而不是在“裸金属”主机电子设备上运行,或者通过准虚拟化,操作系统和/或应用程序可知道存在虚拟化以用于优化目的。在其他替代实施例中,一个、一些或所有的应用程序被实现为单内核,其可通过用应用程序仅直接编译用于提供该应用程序所需的特定OS服务的有限库集(例如,来自包括OS服务的驱动程序/库的库操作系统(LibOS))来生成。由于可实现单内核以直接在硬件840上、直接在管理程序(在这种情况下,单内核有时被描述为在LibOS虚拟机内运行)上或者在软件容器中运行,因此,实施例可完全用直接在由虚拟化层854表示的管理程序上运行的单内核、在由实例862A-R表示的软件容器内运行的单内核实现、或者被实现为单内核与上述技术的组合(例如,单内核和虚拟机两者都直接在管理程序上运行、在不同的软件容器中运行的单内核和多组应用程序)。

一组或多组一个或多个应用程序864A-R的实例化以及虚拟化(如果实现的话)被统称为软件实例852。每一组应用程序864A-R、对应的虚拟化构造(例如,实例862A-R)(如果实现的话)以及硬件840的执行它们的那部分(是专用于该执行的硬件和/或临时共享的硬件时间片)形成单独的虚拟网络单元860A-R。

虚拟网络单元860A-R执行与虚拟网络单元830A-R类似的功能,例如,与控制通信和配置模块832A以及转发表834A类似(硬件840的这种虚拟化有时被称为网络功能虚拟化(NFV))。因此,NFV可用于将许多网络设备类型合并到可位于数据中心、ND和客户前端设备(CPE)中的工业标准的大容量服务器硬件、物理交换机和物理存储器上。虽然示出了其中每个实例862A-R对应于一个VNE 860A-R的实施例,但是替代实施例可以更精细级别的粒度来实现这种对应(例如,线路卡虚拟机虚拟化线路卡,控制卡虚拟机虚拟化控制卡等);应当理解,本文参考实例862A-R与VNE的对应关系所描述的技术也适用于其中使用此类更精细级别的粒度和/或单内核的实施例。

在特定实施例中,虚拟化层854包括提供与物理以太网交换机类似的转发服务的虚拟交换机。具体地,该虚拟交换机在实例862A-R和物理NI 846之间以及可选地在实例862A-R之间转发业务;此外,该虚拟交换机可执行根据策略不允许彼此进行通信的VNE860A-R之间的网络隔离(例如,通过履行虚拟局域网(VLAN))。

图8A中的第三个示例性ND实现是在单个ND中或在ND内的单个卡中包括定制ASIC/专用OS和COTS处理器/标准OS两者的混合网络设备806。在此类混合网络设备的特定实施例中,平台VM(即,实现专用网络设备802的功能的VM)可向混合网络设备806中存在的网络硬件提供准虚拟化。

不考虑ND的上述示例性实现,当考虑由ND实现的多个VNE中的单个VNE时(例如,只有一个VNE是给定虚拟网络的一部分),或者当仅单个VNE当前正由ND实现时,缩短术语“网络单元(NE)”有时用于指代该VNE。同样在所有上述示例性实现中,每个VNE(例如,VNE830A-R、VNE 860A-R、以及混合网络设备806中的那些VNE)接收物理NI(例如,816,846)上的数据,并将该数据转发出物理NI(例如,816,846)中的合适的一个物理NI。例如,实现IP路由器功能的VNE基于IP分组中的一些IP报头信息来转发IP分组;其中IP报头信息包括源IP地址、目的地IP地址、源端口、目的地端口(其中“源端口”和“目的地端口”在本文是指与ND的物理端口相对的协议端口)、传输协议(例如,用户数据报协议(UDP)、传输控制协议(TCP)和区分服务码点(DSCP)值)。

图8C示出了根据一些实施例的可耦接VNE的各种示例性方式。图8C示出了在ND800A中实现的VNE870A.1-870A.P(以及可选的VNE870A.Q-870A.R)和在ND 800H中实现的VNE 870H.1。在图8C中,VNE870A.1-P在可从ND 800A的外部接收分组并且将分组转发到ND800A的外部的意义上是彼此分离的;VNE870A.1与VNE870H.1耦接,并且因此它们在它们相应的ND之间传送分组;VNE870A.2-870A.3可选地在它们自己之间转发分组,而不将它们转发到ND 800A之外;并且VNE870A.P可选地是VNE链中的第一个VNE,该VNE链包括VNE870A.Q和随后的VNE870A.R(这有时被称为动态服务链,其中在VNE系列中的每个VNE提供不同的服务——例如,一个或多个第4-7层网络服务)。虽然图8C示出了VNE之间的各种示例性关系,但是替代实施例可支持其他关系(例如,更多/更少的VNE、更多/更少的动态服务链、具有一些公共VNE和一些不同VNE的多个不同的动态服务链)。

例如,图8A的ND可形成互联网或专用网络的一部分;其他电子设备(未示出;诸如包括工作站的终端用户设备、膝上型电脑、上网本、平板电脑、掌上型电脑、移动电话、智能电话、平板手机、多媒体电话、互联网协议语音(VOIP)电话、终端、便携式媒体播放器、GPS单元、可佩戴设备、游戏系统、机顶盒、支持互联网的家用电器)可以(直接地或通过其他网络诸如接入网络)被耦接至网络,以通过网络(例如,互联网或在互联网上(例如通过隧道)叠加的虚拟专用网络(VPN))彼此(直接或通过服务器)进行通信和/或访问内容和/或服务。此类内容和/或服务通常由属于服务/内容提供商的一个或多个服务器(未示出)或者参与对等(P2P)服务的一个或多个终端用户设备(未示出)来提供,并且可包括例如公共网页(例如,免费内容、商店页面、搜索服务)、私有网页(例如,提供电子邮件服务的用户名/密码访问网页)、和/或基于VPN的公司网络。例如,终端用户设备可(例如,通过被耦接至接入网络(有线地或无线地)的客户前端设备)耦接到边缘ND,该边缘ND(例如,通过一个或多个核心ND)耦接到其他边缘ND,其它边缘ND被耦接至充当服务器的电子设备。然而,通过计算和存储虚拟化,作为图8A中的ND工作的电子设备中的一个或多个电子设备也可托管一个或多个此类服务器(例如,在通用网络设备804的情况下,一个或多个软件实例862A-R可作为服务器进行操作;对于混合网络设备806也是如此;在专用网络设备802的情况下,一个或多个此类服务器也可在由一个或多个处理器812执行的虚拟化层上运行;在这种情况下,服务器被认为与该ND的VNE共处一地。

虚拟网络是提供网络服务(例如,L2服务和/或L3服务)的物理网络(例如图8A中的物理网络)的逻辑抽象。虚拟网络可被实现为在底层网络(例如,L3网络,诸如使用隧道(例如,通用路由封装(GRE)、第二层隧道协议(L2TP)、IPSec)以创建覆盖网络的互联网协议(IP)网络)上提供网络服务(例如,第二层(L2,数据链路层)和/或第三层(L3,网络层)服务)的覆盖网络(有时被称为网络虚拟化覆盖)。

网络虚拟化边缘(NVE)位于底层网络的边缘并且参与实现网络虚拟化;NVE的面向网络的一侧使用底层网络来将帧向和从其他NVE进行隧道传输;NVE的面向外的一侧向网络外部的系统发送数据并从该网络外部的系统接收数据。虚拟网络实例(VNI)是NVE上的虚拟网络的特定实例(例如,ND上的NE/VNE,ND上的NE/VNE的一部分,其中NE/VNE通过仿真被划分成多个VNE);一个或多个VNI可在NVE上实例化(例如,作为ND上的不同VNE)。虚拟接入点(VAP)是NVE上的用于将外部系统连接到虚拟网络的逻辑连接点;VAP可以是通过逻辑接口标识符(例如,VLAN ID)识别的物理端口或虚拟端口。

网络服务的示例包括:1)以太网LAN仿真服务(类似于互联网工程任务组(IETF)多协议标签交换(MPLS)或以太网VPN(EVPN)服务的基于以太网的多点服务),其中外部系统通过底层网络上的LAN环境跨网络互连(例如,NVE提供针对不同的此类虚拟网络的单独的L2VNI(虚拟交换实例)、以及跨底层网络的L3(例如,IP/MPLS)隧道封装);以及2)虚拟化的IP转发服务(从服务定义的角度来看,类似于IETF IP VPN(例如,边界网关协议(BGP)/MPLSIPVPN)),其中外部系统通过底层网络上的L3环境跨网络互连(例如,NVE提供针对不同的此类虚拟网络的单独的L3VNI(转发和路由实例)、以及跨底层网络的L3(例如,IP/MPLS)隧道封装))。网络服务还可包括服务质量能力(例如,业务分类标记、业务调节和调度)、安全能力(例如,用于保护客户前端免受网络发起的攻击以避免错误的路由公告的过滤器)和管理能力(例如,完全检测和处理)。

图8D示出了根据一些实施例的在图8A的每个ND上具有单个网络单元的网络,并且在该直接方法内,将传统的分布式方法(通常由传统的路由器使用)与用于维持可达性和转发信息的集中式方法(也被称为网络控制)相对比。具体地,图8D示出了具有与图8A的ND800A-H相同连接性的网络单元(NE)870A-H。

图8D示出了分布式方法872将用于生成可达性和转发信息的责任分布在NE 870A-H上;换句话说,邻居发现和拓扑发现的过程是分布式的。

例如,在使用专用网络设备802的情况下,ND控制平面824的控制通信和配置模块832A-R通常包括可达性和转发信息模块,该可达性和转发信息模块实现与其他NE进行通信以交换路由、然后基于一个或多个路由度量选择那些路由的一个或多个路由协议(例如,诸如边界网关协议(BGP)的外部网关协议、内部网关协议(IGP)(例如,开放最短路径优先(OSPF)、中间系统到中间系统(IS-IS)、路由信息协议(RIP)、标签分发协议(LDP)、资源保留协议(RSVP)(包括RSVP流量工程(TE):用于LSP隧道的RSVP的扩展和通用多协议标签交换(GMPLS)信令RSVP-TE))。因此,NE 870A-H(例如,执行控制通信和配置模块832A-R的处理器812)通过分布式地确定网络内的可达性并计算它们相应的转发信息来执行它们参与控制将如何路由数据(例如,分组)(例如,数据的下一跳和该数据的输出物理NI)的责任。路由和邻接被存储在ND控制平面824上的一个或多个路由结构(例如,路由信息库(RIB)、标签信息库(LIB)、一个或多个邻接结构)中。ND控制平面824基于路由结构利用信息(例如,邻接和路由信息)对ND转发平面826进行编程。例如,ND控制平面824将邻接和路由信息编程为ND转发平面826上的一个或多个转发表834A-R(例如,转发信息库(FIB)、标签转发信息库(LFIB)和一个或多个邻接结构)。对于第2层转发,ND可存储用于基于数据中的第2层信息来转发该数据的一个或多个桥接表。虽然上述示例使用专用网络设备802,但是可在通用网络设备804和混合网络设备806上实现相同的分布式方法872。

图8D示出了将作出关于业务被发送的位置的决策的系统从将业务转发到所选择的目的地的底层系统解耦的集中式方法874(也被称为软件定义网络(SDN))。所示的集中式方法874负责在集中式控制平面876(有时被称为SDN控制模块、控制器、网络控制器、OpenFlow控制器、SDN控制器、控制平面节点、网络虚拟化授权机构或管理控制实体)中生成可达性和转发信息,并且因此邻居发现和拓扑发现的过程是集中式的。集中控制平面876具有与包括NE870A-H(有时被称为交换机、转发单元、数据平面单元或节点)的数据平面880(有时被称为基础设施层、网络转发平面或转发平面(其不应与ND转发平面混淆))的南向接口882。集中式控制平面876包括网络控制器878,该网络控制器878包括确定网络内的可达性并通过南向接口882(其可使用OpenFlow协议)将转发信息分发到数据平面880的NE870A-H的集中式可达性和转发信息模块879。因此,网络智能集中在在通常与ND分开的电子设备上执行的集中式控制平面876中。

例如,在数据平面880中使用专用网络设备802的情况下,ND控制平面824的每个控制通信和配置模块832A-R通常包括提供南向接口882的VNE侧的控制代理。在这种情况下,ND控制平面824(执行控制通信和配置模块832A-R的处理器812)执行它参与控制数据(例如,分组)将要如何通过与集中式控制平面876进行通信以从集中式可达性和转发信息模块879接收转发信息(以及在一些情况下的可达性信息)的控制代理来路由(例如,数据的下一跳和该数据的输出物理NI)的责任(应当理解,在一些实施例中,除了与集中式控制平面876进行通信之外,控制通信和配置模块832A-R还可在确定可达性和/或计算转发信息方面扮演一些角色-尽管比分布式方法的情况更少;此类实施例通常被认为落入集中式方法874中,但是也可以被认为是混合方法)。

虽然上述示例使用专用网络设备802,但是相同的集中式方法874可利用通用网络设备804来实现(例如,每个VNE 860A-R通过与集中式控制平面876进行通信以从集中式可达性和转发信息模块879接收转发信息(以及在一些情况下的可达性信息)来执行它用于控制数据(例如,分组)如何路由(例如,数据的下一跳和该数据的输出物理NI)的责任);应当理解,在一些实施例中,VNE 860A-R除了与集中式控制平面876进行通信之外还可在确定可达性和/或计算转发信息方面和混合网络设备806中扮演一些角色-尽管比分布式方法的情况更少。实际上,对SDN技术的使用可增强通常在通用网络设备804或混合网络设备806实现中使用的NFV技术,因为NFV能够通过提供SDN软件可在其上运行的基础设施来支持SDN,并且NFV和SDN两者旨在使用商品服务器硬件和物理交换机。

图8D还示出了集中式控制平面876具有到在其中驻留应用程序888的应用层886的北向接口884。集中式控制平面876能够形成用于应用程序888的虚拟网络892(有时被称为逻辑转发平面、网络服务或覆盖网络(数据平面880的NE 870A-H是底层网络))。因此,集中式控制平面876保持所有ND和经配置的NE的全局视图,并且将虚拟网络有效地映射到底层ND(包括当物理网络通过硬件(ND、链路或ND部件)故障、添加或移除而改变时保持这些映射)。

尽管图8D示出了与集中式方法874分开的分布式方法872,但是在特定实施例中,网络控制的努力可以不同地分布或者两者进行组合。例如:1)实施例通常可使用集中式方法(SDN)874,但具有委托给NE的特定功能(例如,分布式方法可用于实现故障监测、性能监测、保护切换和用于邻居发现和/或拓扑发现的原语中的一者或多者);或者2)实施例可经由集中式控制平面和分布式协议两者来执行邻居发现和拓扑发现,并且比较结果以在它们不一致的情况下产生异常。此类实施例通常被认为落在集中式方法874中,但是也可被认为是混合方法。

虽然图8D示出了其中每个ND 800A-H实现单个NE 870A-H的简单情况,但是应当理解,参考图8D描述的网络控制方法也用于其中ND 800A-H中的一个或多个ND实现多个VNE(例如,VNE 830A-R、VNE 860A-R、混合网络设备806中的那些VNE)的网络。可替代地或附加地,网络控制器878还可模拟在单个ND中实现多个VNE。具体地,代替(或除了)在单个ND中实现多个VNE,网络控制器878可将单个ND中VNE/NE的实现呈现为虚拟网络892中的多个VNE(全部在同一个虚拟网络892中、每个在不同的虚拟网络892中、或某种组合)。例如,该网络控制器878可使得ND在底层网络中实现单个VNE(NE),然后逻辑地划分集中控制平面876内该NE的资源,以在虚拟网络892中呈现不同的VNE(其中在覆盖网络中的这些不同的VNE共享在底层网络中的ND上的单个VNE/NE实现的资源)。

另一方面,图8E和8F分别示出了网络控制器878可呈现的作为不同的虚拟网络892的一部分的NE和VNE的示例性抽象。图8E示出了根据一些实施例的简单情况,其中每个ND800A-H实现单个NE 870A-H(参见图8D),但集中式控制平面876已将不同ND中的多个NE(NE870A-C和G-H)抽象成(表示成)图8D的一个虚拟网络892中的单个NE 870I。图8E示出了在该虚拟网络中,NE 870I被耦接至NE 870D和870F,其中NE 870D和870F两者仍然被耦接至NE870E。

图8F示出了根据一些实施例的情况,其中多个VNE(VNE 870A.1和VNE870H.1)在不同的ND(ND 800A和ND 800H)上实现且彼此耦接,并且其中集中式控制平面876已抽象出这些多个VNE,以使得它们在图8D的一个虚拟网络892内呈现为单个VNE 870T。因此,对NE或VNE的抽象可跨越多个ND。

虽然一些实施例将集中式控制平面876实现为单个实体(例如,在单个电子设备上运行的单个软件实例),但替代实施例可出于冗余和/或可伸缩性目的而将功能扩展到多个实体上(例如,在不同电子设备上运行的多个软件实例)。

类似于网络设备实现,运行集中式控制平面876的一个或多个电子设备,并且因此包括集中式可达性和转发信息模块879的网络控制器878可以多种方式实现(例如,专用设备、通用(例如,COTS)设备、或混合设备)。这些电子设备将类似地包括一个或多个处理器、一组一个或多个物理NI、以及在其上存储有集中式控制平面软件的非暂态机器可读存储介质。例如,图9示出了包括硬件940的通用控制平面设备904,该硬件940包括一组一个或多个处理器942(其通常是COTS处理器)和物理NI 946、以及在其中存储有集中式控制平面(CCP)软件950的非暂态机器可读存储介质948。

在使用计算虚拟化的实施例中,处理器942通常执行软件以实例化虚拟化层954(例如,在一个实施例中,虚拟化层954表示允许创建被称为软件容器的多个实例962A-R(表示单独的用户空间,也被称为虚拟化引擎、虚拟专用服务器或箱体)的操作系统的内核(或在基础操作系统上执行的shim),每个实例962A-R可用于执行一组一个或多个应用程序;在另一个实施例中,虚拟化层954表示管理程序(有时被称为虚拟机监控器(VMM))或在主机操作系统之上执行的管理程序,并且应用程序在由管理程序运行的被称为虚拟机的实例962A-R(在特定情况下可被认为是紧密隔离形式的软件容器)内的客机操作系统之上运行;在另一个实施例中,应用程序被实现为单内核,该单内核可通过用应用程序仅直接编译用于提供该应用程序所需的特定OS服务的有限库集(例如,来自包括OS服务的驱动程序/库的库操作系统(LibOS))来生成,并且单内核可直接在硬件940上运行、直接在由虚拟化层954表示的管理程序上运行(在这种情况下,单内核有时被描述为运行在LibOS虚拟机内运行)、或在由实例962A-R中的一个实例表示的软件容器内运行。再次,在其中使用计算虚拟化的实施例中,在操作期间,在虚拟化层954上(例如,在实例962A内)执行CCP软件950的实例(被示出为CCP实例976A)。在不使用计算虚拟化的实施例中,CCP实例976A作为单内核或在主机操作系统之上、在“裸金属”通用控制平面设备904上执行。CCP实例976A的实例化以及虚拟化层954和实例962A-R(如果实现的话)被统称为软件实例952。

在一些实施例中,CCP实例976A包括网络控制器实例978。网络控制器实例978包括集中式可达性和转发信息模块实例979(其是向操作系统提供网络控制器878的上下文并与各种NE进行通信的中间件层)、以及中间件层上的CCP应用层980(有时被称为应用层)(提供各种网络操作所需的智能,诸如协议、网络情景意识和用户界面)。在更抽象的级别下,集中控制平面876内的该CCP应用层980与虚拟网络视图(网络的逻辑视图)一起工作,并且中间件层提供从虚拟网络到物理视图的转换。

对于每个流,集中控制平面876基于CCP应用层980计算和中间件层映射来将相关消息传输到数据平面880。流可被定义为其报头与给定比特模式匹配的分组集;在这种意义上,传统的IP转发也是基于流的转发,其中流例如由目的IP地址来定义;然而,在其他具体实施中,用于流定义的给定比特模式可在分组报头中包括更多的字段(例如,10个或更多)。数据平面880的不同ND/NE/VNE可接收不同的消息,并且因此接收不同的转发信息。数据平面880处理这些消息并对合适的NE/VNE的转发表(有时被称为流表)中的合适的流信息和对应动作进行编程,然后NE/VNE将进入分组映射到转发表中表示的流,并基于转发表中的匹配来转发分组。

诸如OpenFlow的标准定义用于消息的协议以及用于处理分组的模型。用于处理分组的模型包括报头解析、分组分类和作出转发决策。报头解析描述了如何基于熟知的协议集来解释分组。一些协议字段用于构建将在分组分类中使用的匹配结构(或密钥)(例如,第一密钥字段可以是源媒体访问控制(MAC)地址,而第二密钥字段可以是目的地MAC地址)。

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

基于在分组分类期间识别的转发表条目,通过在分组上执行在匹配的转发表条目中识别的动作集来作出转发决测和执行动作。

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

网络接口(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地址。

由路由系统针对给定目的地的下一跳地址选择可解析为一条路径(即,路由协议可在最短路径上生成一个下一跳);但是如果路由选择系统确定存在多个可行的下一跳(即,路由选择协议生成的转发解决方案在最短路径上提供多于一个的下一跳——多个相等成本的下一跳),则使用一些附加标准——例如,在无连接网络中,可使用相等成本多路径(ECMP)(也被称为相等成本多路径控制、多路径转发和IP多路径)(例如,典型的实现使用特定报头字段作为标准,以确保特定分组流的分组总是在相同的下一跳上转发,以保持分组流排序)。为了多路径转发的目的,分组流被定义为共享排序约束的分组集。作为示例,特定TCP传输序列中的分组集需要按顺序到达,否则TCP逻辑将乱序传送解释为拥塞并减慢TCP传输速率。

第三层(L3)链路聚合(LAG)链路是将两个ND与多个IP寻址的链路路径(每个链路路径被分配不同的IP地址)直接连接的链路,并且在ND转发平面执行跨这些不同链路路径的负载分配决策;在这种情况下,在链路路径之间作出负载分配决策。

一些ND包括用于认证、授权和计费(AAA)协议的功能(例如,RADIUS(远程认证拨入用户服务)、Diameter和/或TACACS+(升级版终端接入控制器接入控制系统))。AAA可通过客户机/服务器模型来提供,其中AAA客户机在ND上实现,并且AAA服务器可在ND上本地实现或者在与ND耦接的远程电子设备上实现。认证是识别和验证用户的过程。例如,用户可通过用户名和密码的组合或者通过唯一的密钥来识别。授权确定用户在被认证之后可以做什么,诸如获取对特定电子设备信息资源的访问(例如,通过使用访问控制策略)。计费是记录用户活动。作为概述示例,终端用户设备可通过被耦接至核心ND的边缘ND(支持AAA处理)耦接(例如,通过接入网络),其中核心ND被耦接至实现服务/内容提供商的服务器的电子设备。执行AAA处理以针对用户识别被存储在AAA服务器中的用于该用户的用户记录。用户记录包括在处理该用户的业务期间使用的属性集(例如,用户名称、密码、认证信息、接入控制信息、速率限制信息、策略信息)。

特定ND(例如,特定边缘ND)内部地表示使用用户电路的终端用户设备(或有时表示客户前端设备(CPE),诸如家庭网关(例如,路由器、调制解调器))。用户电路在ND内唯一地识别用户会话,并且通常在会话的生存期内存在。因此,ND通常在用户连接到该ND时分配用户电路,并且对应地,在用户断开连接时解除该用户电路的分配。每个用户会话表示使用协议在ND与终端用户设备(或有时是CPE,诸如家庭网关或调制解调器)之间传送的可区分的分组流,该协议诸如是另一协议上的点对点协议(PPPoX)(例如,X是以太网或异步传输模式(ATM))、以太网、802.1Q虚拟LAN(VLAN)、互联网协议、或ATM。用户会话可使用各种机制(例如,手动提供动态主机配置协议(DHCP)、DHCP/无客户端互联网协议服务(CLIPS)或媒体访问控制(MAC)地址跟踪)来发起。例如,点对点协议(PPP)通常用于数字用户线(DSL)服务,并且需要安装使得用户能够输入用户名和密码的PPP客户端,该用户名和密码继而可用于选择用户记录。当使用DHCP(例如,针对电缆调制解调器服务)时,通常不提供用户名;但是在此类情况下,提供了其他信息(例如,包括终端用户设备(或CPE)中的硬件的MAC地址的信息)。在ND上使用DHCP和CLIPS捕获MAC地址并使用这些地址来区分用户并访问其用户记录。

与虚拟连接和虚拟信道同义的虚拟电路(VC)是利用分组模式通信方式传送的面向连接的通信服务。虚拟电路通信类似于电路交换,因为两者都是面向连接的,这意味着在两种情况下,数据均按正确的顺序传送,并且在连接建立阶段期间需要信令开销。虚拟电路可存在于不同层。例如,在第4层,面向连接的传输层数据链路协议,诸如传输控制协议(TCP),可依赖于无连接分组交换网络层协议,诸如IP,其中不同的分组可在不同的路径上路由,并且因此被无序地传送。如果在底层不可靠且无连接的IP协议之上利用TCP建立了可靠的虚拟电路,则虚拟电路通过源和目的地网络套接字地址对(即,发送机IP地址和接收机IP地址和端口号)来识别。然而,虚拟电路是可能的,因为TCP包括在接收机侧的段编号和重新排序以防止乱序传送。在第三层(网络层)和第二层(数据链路层)处,虚拟电路也是可能的;此类虚拟电路协议基于面向连接的分组交换,这意味着数据总是沿着相同的网络路径传送,即通过相同的NE/VNE传送。在此类协议中,分组不被单独路由,并且在每个数据分组的报头中不提供完整的寻址信息;在每个分组中仅需要小的虚拟信道标识符(VCI);并且路由信息在连接建立阶段期间被转移到NE/VNE;交换仅涉及在表中查找虚拟信道标识符,而不是分析完整的地址。网络层和数据链路层虚拟电路协议的示例,其中数据总是在同一路径上传送:X.25,其中VC由虚拟信道标识符(VCI)识别;帧中继,其中VC由VCI识别;异步传输模式(ATM),其中该电路由虚拟路径标识符(VPI)和虚拟信道标识符(VCI)对来识别;通用分组无线业务(GPRS);以及多协议标签交换(MPLS),其可用于虚拟电路上的IP(每个电路由标签识别)。

特定ND(例如,特定边缘ND)使用电路的分级结构。电路的分级结构的叶节点为是户电路。用户电路在分级结构中具有通常表示多个用户电路的聚合的父电路,并且因此具有用于提供那些终端用户设备到ND的接入网络连接的网络段和网络单元。这些父电路可表示用户电路的物理聚合或逻辑聚合(例如,虚拟局域网(VLAN)、永久虚拟电路(PVC)(例如,用于异步传输模式(ATM))、电路组、信道、伪线、ND的物理NI、和链路聚合组)。电路组是允许出于配置目的(例如,聚合速率控制)而将各组电路组合在一起的虚拟构造。伪线是第二层点对点面向连接服务的仿真。链路聚合组是出于带宽聚合和冗余的目的而合并多个物理NI的虚拟构造。因此,父电路在物理上或逻辑上封装用户电路。

每个VNE(例如,虚拟路由器、虚拟网桥(其可充当虚拟专用LAN服务(VPLS)中的虚拟交换机实例)通常是可独立管理的。例如,在多个虚拟路由器的情况下,每个虚拟路由器可共享系统资源,但是在其管理域、AAA(认证、授权和计费)名称空间、IP地址和路由数据库方面与其他虚拟路由器分开。在边缘ND中可采用多个VNE来为服务提供商和/或内容提供商的用户提供直接网络接入和/或不同的服务类别。

在特定ND内,独立于物理NI的“接口”可被配置为VNE的一部分,以提供高层协议和服务信息(例如,第3层寻址)。除了其他用户配置要求之外,AAA服务器中的用户记录还识别对应的用户应当ND内绑定到哪个上下文(例如,哪一个VNE/NE)。如本文所使用的,绑定形成物理实体(例如,物理NI、信道)或逻辑实体(例如,电路,诸如用户电路或逻辑电路(一组一个或多个用户电路))与上下文的接口之间的关联,网络协议(例如,路由协议、桥接协议)通过该上下文的接口被配置用于该上下文。当一些高层协议接口被配置并与物理实体相关联时,用户数据在该物理实体上流动。

一些ND提供对实现VPN(虚拟专用网络)(例如,第2层VPN和/或第3层VPN)的支持。例如,其中提供商的网络和客户的网络耦接的ND分别被称为PE(提供商边缘)和CE(客户边缘)。在第2层VPN中,转发通常在VPN的任一端上的CE上执行,并且业务在网络上发送(例如,通过由其他ND耦接的一个或多个PE)。第2层电路被配置在CE和PE之间(例如,以太网端口、ATM永久虚拟电路(PVC)、帧中继PVC)。在第3层VPN中,通常由PE来执行路由。作为示例,支持多个VNE的边缘ND可被部署为PE;VNE可配置有VPN协议,并且因此VNE被称为VPN VNE。

一些ND提供对VPLS(虚拟专用LAN服务)的支持。例如,在VPLS网络中,终端用户设备通过耦接到CE来访问通过VPLS网络提供的内容/服务,CE通过由其他ND耦接的PE来耦接。VPLS网络可用于实现三重播放网络应用(例如,数据应用(例如,高速互联网接入))、视频应用(例如,电视服务,诸如IPTV(互联网协议电视)、VoD(视频点播)服务)和语音应用(例如,VoIP(互联网协议语音)服务)、VPN服务等。VPLS是一种可用于多点连接的第二层VPN。VPLS网络还允许在分开的地理位置处与CE耦接的终端使用设备在广域网(WAN)上彼此进行通信,就好像它们在局域网(LAN)(被称为仿真LAN)中彼此直接附接一样。

在VPLS网络中,每个CE通常可能通过接入网络(有线和/或无线)经由附接电路(例如,CE和PE之间的虚拟链路或连接)而附接到PE的桥接模块。该PE的桥接模块通过仿真LAN接口而被附接到仿真LAN。每个桥接模块通过维护将MAC地址映射到伪线和附接电路的转发表而充当“虚拟交换机实例”(VSI)。PE基于被包括在帧中的MAC目的地地址字段而将这些帧(从CE接收的)转发到目的地(例如,其他CE、其他PE)。

在一个实施例中,上面关于图1-7描述的操作和功能中的一个或多个操作和功能可由关于图8A-8F和图9的方法和单元描述的部件来实现。例如,分类器204和/或路由策略引擎206可驻留在专用设备802的控制通信和配置模块832A中,或者驻留在通用网络设备804或混合网络设备806中的等同模块中。在另一示例中,分类器204和/或路由策略引擎206可驻留在集中式控制平面876的集中式可达性和转发信息模块879中。在又一个实施例中,分类器204和/或路由策略引擎206可驻留在包括非暂态机器可读存储介质948的机器可读存储介质中,并且处理器942可被配置为执行分类器204和/或路由策略引擎206。

在一些实施例中,可利用虚拟化来提供NFV。例如,网络设备108可以是被配置为执行一个或多个虚拟机、容器和/或微服务以提供NFV的计算设备。在一些实施例中,网络设备108可以是被配置为实现SDN的控制平面的控制平面设备(例如,通用控制平面设备904)。

虽然本文中的系统、设备、结构、方法和设计已根据若干个实施例进行了描述,但所属领域的技术人员将认识到,可在所附权利要求书的实质和范围内通过修改和改变来实践系统、设备、结构、方法和设计,而不限于所描述的实施例。因此,本说明书被认为是例示性的,而不是限制性的。

此外,虽然图中的流程图示出了由特定实施例执行的操作的特定顺序,但是应当理解,此类顺序为示例性的(例如,替换实施例可以不同的顺序执行操作,组合特定操作,重叠特定操作等)。

35页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:针对陆地载波在空对地通信中的重用的基站收发台干扰消除

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!