CN113812122B - 基于源的路由 - Google Patents

基于源的路由 Download PDF

Info

Publication number
CN113812122B
CN113812122B CN202080035098.8A CN202080035098A CN113812122B CN 113812122 B CN113812122 B CN 113812122B CN 202080035098 A CN202080035098 A CN 202080035098A CN 113812122 B CN113812122 B CN 113812122B
Authority
CN
China
Prior art keywords
router
service
packet
routers
metadata
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.)
Active
Application number
CN202080035098.8A
Other languages
English (en)
Other versions
CN113812122A (zh
Inventor
H·S·卡普兰
A·梅农
P·蒂蒙斯
M·巴伊
R·彭菲尔德
P·梅兰派
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
128 Technology Co
Original Assignee
128 Technology Co
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 128 Technology Co filed Critical 128 Technology Co
Priority to CN202311074374.3A priority Critical patent/CN116915697A/zh
Publication of CN113812122A publication Critical patent/CN113812122A/zh
Application granted granted Critical
Publication of CN113812122B publication Critical patent/CN113812122B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/28Routing or path finding of packets in data switching networks using route fault recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • H04L45/245Link aggregation, e.g. trunking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/34Source routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/50Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/60Router architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种用于路由路由或服务的分组的路由系统,该路由系统包括多个路由器,该多个路由器包括源路由器,其中源路由器被配置为:基于路由器之间的配置关系来使用服务和拓扑结构交换协议从STEP存储库接收至少一个其他路由器的服务和拓扑结构状态信息;基于该服务和拓扑结构状态信息来确定到路由或服务的目的地的第一路径,第一路径包括用于接收与该路由或服务相关联的分组的、从第一连续路由器开始并以目的地路由器结束的连续路由器的有序列表;以及朝第一连续路由器传输具有第一元数据的分组,该第一元数据包括用于接收与该路由或服务相关联的分组的路由器的有序列表中的至少一个剩余路由器的列表。从第一连续路由器开始,每个连续路由器被配置为接收分组并且基于与所接收的分组相关联的元数据来确定路由器是否是目的地路由器,并且当路由器不是目的地路由器时,朝路由器的有序列表中的下一连续路由器转发分组。

Description

基于源的路由
相关申请的交叉引用
本专利申请与于2016年2月26日提交的、代理人案卷编号为4094/1014的、并且发明人名为MeLampy、Baj、Kumar、Penfield和Timmons的题为“NAME-BASED ROUTING SYSTEMANDMETHOD”的美国专利申请No.15/054,781(现已授权的美国专利No.9,985,883)有关,其公开内容通过引用整体并入本文中。
本专利申请还与于2015年8月24日提交的、代理人案卷编号为4094/1011的、并且发明人名为Kaplan、Kumar、Timmons和MeLampy的题为“Network Packet Flow Controllerwith Extended SessionManagement”的美国专利申请No.14/833,571(现已授权的美国专利号9,762,485)有关,其公开内容通过引用整体并入本文中。
技术领域
本发明大体上涉及通信网络中的基于源的路由。
背景技术
诸如来自马萨诸塞州伯灵顿市的128Technology的128T路由平台之类的路由平台可以被认为是面向服务的,因为服务配置是数据模型(以及配置范例)的焦点。在这样的面向服务的路由平台中,管理员可以定义服务以表示他们的网络被设计为向消费者递送的能力,并且这些服务——连同它们必需的策略和特性——决定了业务模式如何穿越网络。
128T路由平台由两个主要组件组成:会话智能路由器(SSR)和编排器(Conductor)。SSR和编排器共同形成高度分布式的单个逻辑控制平面以及真正会话感知的数据平面。SSR结合了服务中心控制平面和会话感知数据平面,除了高速分组转发、分类和安全功能之外,还提供所有的IP路由表、特征丰富的策略管理、高级数据收集、以及分析。编排器是集中管理和策略引擎,针对分布式SSR提供编排、管理、零接触供应、监测和分析,同时维护网络范围的多租户服务和策略数据模型。通过这些组件,128T路由平台支持从小型分支机构到高容量边缘路由器再到超大规模软件定义数据中心的范围广泛的部署模型。
迄今为止,服务的概念仅限于单个“路由器”(节点汇集),或者通过使用编排器,使用显式配置来导出到外部路由器。这会使得难以将服务配置扩展到大量的SSR。
发明内容
根据本发明的一个实施例,一种用于路由路由或服务的分组的路由系统包括多个路由器,该多个路由器包括源路由器。源路由器被配置为:基于路由器之间的配置关系来使用服务和拓扑结构交换协议从STEP存储库接收至少一个其他路由器的服务和拓扑结构状态信息;基于服务和拓扑结构状态信息来确定到路由或服务的目的地的第一路径,该第一路径包括用于接收该路由或服务相关联的分组、从第一连续路由器开始并以目的地路由器结束的连续路由器的有序列表;以及朝第一连续路由器传输具有第一元数据的分组,该第一元数据包括用于接收与该路由或服务相关联的分组的路由器的有序列表中的至少一个剩余路由器的列表。从第一连续路由器开始,每个连续路由器被配置为接收分组并且基于与所接收的分组相关联的元数据来确定路由器是否是目的地路由器,并且当路由器不是目的地路由器时,朝路由器的有序列表中的下一连续路由器转发分组。
在各个备选实施例中,源路由器可以被配置为将第一连续路由器包括在第一元数据中或者可以被配置为从第一元数据中排除第一连续路由器。每个连续路由器可以被配置为在向下一连续路由器转发分组之前从第一元数据中移除它自己。每个连续路由器可以被配置为通过将分组的目的地地址改变为下一连续路由器的地址来向下一连续路由器转发分组。每个连续路由器可以被配置为通过将分组的源地址进一步改变为转发路由器的地址来向下一连续路由器转发分组。目的地路由器被配置为向目的地转发没有元数据的分组。源路由器可以被配置为将第二元数据包括在在分组中,该第二元数据包括会话标识信息。目的地路由器可以被配置为:确定到路由或服务的目的地的第二路径,该第二路径包括用于接收与该路由或服务相关联的分组的连续路由器的有序列表;以及传输具有第二元数据的分组,该第二元数据包括用于接收与路由或服务相关联的分组的路由器的第二有序列表中的至少一个剩余路由器的列表。
根据另一实施例,一种用于路由路由或服务的分组的路由器包括数据存储库和控制器,该控制器包括源路由器逻辑,该源路由器逻辑被配置为:基于路由器之间的配置关系来使用服务和拓扑结构交换协议从STEP存储库接收至少一个其他路由器的服务和拓扑结构状态信息;基于服务和拓扑结构状态信息来确定到路由或服务的目的地的第一路径,该第一路径包括用于接收与路由或服务相关联的分组的、从第一连续路由器开始并以目的地路由器结束的连续路由器的有序列表;以及朝第一连续路由器传输具有第一元数据的分组,该第一元数据包括用于接收与该路由或服务相关联的分组的路由器的有序列表中的至少一个剩余路由器的列表。
在各个备选实施例中,源路由器逻辑可以被配置为将第一连续路由器包括在第一元数据中或者可以被配置为从第一元数据中排除第一连续路由器。源路由器逻辑可以被配置为将第二元数据包括在分组中,该第二元数据包括会话标识信息。控制器还可以包括连续路由器逻辑,该连续路由器逻辑被配置为接收分组并且基于与所接收的分组相关联的元数据来确定路由器是否是目的地路由器,并且当路由器不是目的地路由器时,朝有序路由器列表中的下一连续路由器转发分组。连续路由器逻辑可以被配置为在向下一连续路由器转发分组之前从第一元数据中去除转发路由器。连续路由器逻辑可以被配置为通过将分组的目的地地址改变为下一连续路由器的地址来向下一连续路由器转发分组。连续路由器逻辑可以被配置为通过将分组的源地址进一步改变为转发路由器的地址来向下一连续路由器转发分组。当路由器是目的地路由器时,连续路由器逻辑可以被配置为向目的地转发没有元数据的分组。当路由器是目的地路由器时,连续路由器逻辑可以被配置为:确定到路由或服务的目的地的第二路径,该第二路径包括用于接收与该路由或服务相关联的分组的连续路由器的第二有序列表;以及传输具有第二元数据的分组,该第二元数据包括用于接收与路由或服务相关联的分组的路由器的第二有序列表中的至少一个剩余路由器的列表。
可以公开并要求保护附加实施例。
附图说明
本领域技术人员应根据以下“具体实施方式”更充分地理解本发明的各个实施例的优点,参考下文紧接着概述的附图来讨论“具体实施方式”。
图1是示出了根据一个示例性实施例的STEP服务器100的主要组件的示意图。
图2是根据一个示例性实施例的STEP服务器控制器120在实现高级STEP服务器功能时的逻辑流程图。
图3是示出了根据一个示例性实施例的STEP客户端300的主要组件的示意图。
图4是根据一个示例性实施例的STEP客户端控制器220在实现高级STEP客户端功能时的逻辑流程图。
图5是示出了被分割为具有多个邻域的一个区的示例性拓扑结构的示意图。
图6是示出了除被分割为多个区之外与图5相同的拓扑结构的示意图。
图7是示出了包括彼此对等的两个路由器的拓扑结构的示意图。
图8是示出了将BGP重新分发到服务中的示例的示意图。
图9是示出了将BGP重新分发到STEP中的示例示意图。
图10是示出了包括没有接收器的多播配置的拓扑结构的示意图。
图11是示出了图10的但现在路由器R2已经在其接口中的两个接口上接收到IGMP加入的拓扑结构的示意图。
图12是示出了与图6相同的拓扑结构的示意图。
图13是示出了包括导致环路的区之间的业务交换的拓扑结构的示意图。
图14是示出了图13的但包括具有环路避免的区之间的服务交换的拓扑结构的示意图。
图15是示出了在相同的区内包括基于源的路由的拓扑结构的示意图。
图16是示出了包括跨多个区的基于源的路由的拓扑结构的示意图。
图17是示出了网络的热图视图的示意性线框图。
图18是根据一个示例性实施例的用于发布聚合路线或服务的逻辑流程图。
图19是根据一个示例性实施例的用于环路检测和预防的逻辑流程图。
图20是根据一个示例性实施例的基于源的路由的逻辑流程图。
图21是示出了包括点对多点SVR路由的拓扑结构的示意图。
图22是示出了包括多播代理路由的拓扑结构的示意图。
应指出的是,前述附图和其中所描绘的元件不一定按一致比例或任何比例绘制。除非上下文另有暗示,否则相似的元件由相似的附图标记指示。
具体实施方式
定义
如本说明书和所附权利要求中所使用的,除非上下文另有要求,否则以下术语应具有所指示的含义:
STEP代表服务和拓扑结构交换协议(Service and TopologyExchangeProtocol),这是用于描述在路由器之中和路由器之间分发各种类型的服务和拓扑结构状态信息以及使用这些所分发的服务和拓扑结构状态信息进行智能路由决定的各种机制。
机构(Authority)是由路由器汇集组成的单个管理域;通常类似于BGP网络中的自治系统(AS)。机构可以是单个网络、网络汇集或者是针对一组路由器的单个被管理实体。在示例性实施例中,利用文本字符串来命名机构。机构名称是唯一的,并且可以由命名机构或其他保证唯一性的技术来指派/管理。在示例性实施例中,使用私有命名机构,但在备选实施例中可以使用公共命名机构(例如,IANA或等效物)。在示例性实施例中,机构名称是符合RFC 1737的资源名称。
邻域(Neighborhood)是可达性的IP网络。被配置为位于相同的邻域内的所有路由器接口预期是相互可达的。这包括由网络边界、NAT和防火墙分隔但可以相互可达的接口。在示例性实施例中,邻域是被应用于网络接口的标签(字符串值),其描述了路由器之间的期望连接性(对等关系)。在一个机构内共享至少一个邻域标签的任何两个路由器接口被假定连接到公共L3网络,其旨在使那两个接口能够相互可达。将两个接口分配给相同的邻域会导致路由器彼此建立对等关系。在示例性实施例中,SSR上的每个网络接口都属于至少一个邻域,并且如果管理员未配置网络接口,则SSR将自动为其指派在机构内的所有接口之中唯一的邻域名称。网络接口可以是多个邻域的成员,并且可以包含用户排序的邻域列表,这些邻域全部都描述了相同的非唯一L3网络。在这种上下文中,用户排序的列表指定了邻域的排序,其中列出的第一邻域将被视为“主要”邻域,并且将是与到达该网络接口的所有入站会话相关联的邻域,以用于分析数据、冗余状态信息和其他特定于接口的度量。属于相同的邻域的两个网络接口被有效地对待为具有直接邻域关系,即使两个网络接口之间的通信路径通过一个或多个其他路由器。在示例性实施例中,为了约束哪些接口尝试彼此对等并且避免不必要的对等关系,可以为每个接口的邻域指派拓扑类型为网格、集线器或辐条,其中网格接口尝试与网格或集线器类型的所有其他邻域接口对等,集线器接口尝试与网格类型的所有其他邻域接口对等,而辐条接口尝试与网格或集线器类型的所有其他邻域接口对等。
区(District)本质上是邻域的汇集。参与区的每个路由器都会接收关于相同的区内的每个其他路由器接口的链路状态度量。该信息可以用于聚集其他区的服务状态可用性。
“租户”(Tenant)是单个子网络,该单个子网络要与所有其他子网络隔离和分开,例如,为了安全性、可管理性和分析。这类似于VLAN或VxLAN或VRF。租户为由机构或父租户指派的文本串。
“服务”(Service)为单个命名应用,并且为路由的目标。这与DNS解析或CIDR块之后的IP地址相似。服务使用通常与服务的URL相匹配的文本串命名。服务由在路由协议内使用的文本串表示。
“服务组”(Service Group)为子网(租户)的一部分,该部分要被隔离,例如,用于可管理性和分析。服务组由路由协议内使用的文本串表示。
“合格服务名称”(Qualified Service Name)或“QSN”是可寻址资源。这是租户、服务组或服务的文本性表示。在示例性实施例中,每个QSN具有一个唯一机构并且使用由RFC3986以QSN://Subtenant.Tenant.Authority/ServiceGroup/Service的形式定义的URI通用语法。服务组是可选的,并且如果不使用它们,则QSN可以被缩短为不包括该文本。QSN、租户、服务组和服务的一些示例性实施例在于2016年2月26日提交的相关美国专利申请No.15/054,781(现已授权的美国专利No.9,985,883)中进行了描述,其通过引用并入上文。
SVR代表安全矢量路由。这是128T路由平台中的两个对等SSR之间的分组转发方式。SVR实现了如相关美国专利申请No.14/833,571(现已授权的美国专利No.9,762,485)中所描述的基于会话的路由的各个方面,其通过引用并入上文。
向量(Vector)是给定路由器接口上的邻域的属性,并且可以由管理员使用来控制路由器所采用的路由决定逻辑(路径选择)。邻域描述了路由器之间的拓扑结构(对等关系),而向量描述了服务业务在该拓扑结构上的路径偏好。(接口内的)每个邻域可能包含向量的名称,该名称是标签,该标签允许管理员将一些属性归因于该邻域用于影响路由。向量还可以被认为是邻域内两个路由器之间的对等关系的名称。一旦配置了向量,管理员就可以在服务策略配置元素被向这些向量指派优先级,例如,服务(经由其策略)可以指示特定服务的优选向量类型或向量层次结构。例如,视频会议服务可能被配置为使用MPLS向量(如果可用),否则使用基本互联网路径向量。更进一步地,服务策略可以断言某些向量永远不会用于给定服务。例如,当通过LTE发送时,HD视频会议服务可能不可用或代价太高,因此在示例性实施例中,管理员可以将“从不”优先级指派给关于HD视频服务的LTE向量。附加地或备选地,向量可以与用于选择路由的各种度量(例如,基于代价或性能的度量)相关联。例如,如果网络包括其中相应代价为10、20、50、60的向量A、B、C、D并且路由可以使用向量A/C或向量B/D,则路由器通常会选择总代价为60的向量A/C,而非总代价为80的矢量B/D。可以通过针对不同服务的链路指派不同代价来计算到特定目的地的不同路由代价,例如,出于web业务的目的,特定链路的代价可能为X,而对于电子邮件业务而言,链路的代价可能为Y,使得即使两种类型的业务都到达相同的出口路由器,web业务和电子邮件业务的路由也会通过网络穿越不同路径。
除非上下文另有要求,否则术语“发布”和“通告”(及其变体)可以互换使用。
“集”包括一个或多个成员。
引言
在示例性实施例中,用于路由路由或服务的分组的路由系统包括多个路由器,该多个路由器包括源路由器,其中源路由器被配置为基于路由器之间的配置关系来使用服务和拓扑结构交换协议从STEP存储库接收至少一个其他路由器的服务和拓扑结构状态信息;基于服务和拓扑结构状态信息来确定到路由或服务的目的地的第一路径,该第一路径包括用于接收该路由或服务相关联的分组的、与从第一连续路由器开始并以目的地路由器结束的连续路由器的有序列表;以及朝第一连续路由器传输具有第一元数据的分组,该第一元数据包括用于接收与该路由或服务相关联的分组的路由器的有序列表中的至少一个剩余路由器的列表。从第一连续路由器开始,每个连续路由器被配置为接收分组并且基于与所接收的分组相关联的元数据来确定路由器是否是目的地路由器,并且当路由器不是目的地路由器时,朝有序路由器列表中的下一连续路由器转发分组。
本文中参考由马萨诸塞州伯灵顿市的128Technology出售的类型的会话智能路由器(SSR)来描述示例性实施例,尽管本领域普通技术人员应理解的是,所描述的实施例的各个方面可以应用于其他联网设备现在或将来克服本文中所描述的联网和配置问题的类型。
如上文所讨论的,大量SSR的服务配置可能是困难的。此外,由于网络在不断变化,因此需要在SSR之间交换关于服务和服务可达性的信息,因为网络和应用状态是动态的。例如,服务路由通常被配置用于具有已知目的地的服务——类似于静态路由。在一些情况下,服务采用路由以便获知下一跳。这些路由可以通过多种方式诸如经由传统路由协议(例如OSPF、BGP等)、静态路由或连接路由而被获知。每个SSR可以借助于运行不同的路由协议来获知不同的路由。路由最终需要被应用于服务、被应用于应用和/或被分发到其他SSR。如果一些路由被撤销,其中一些服务可能变得不可用,并且这种状态变化需要被传播。此外,SSR目前无法了解服务是否在最终目的地(最后一跳)可用。从网络的角度来看,可见性的这种缺乏会导致分组的不正确路由。
在示例性实施例中,网络的一部分内(例如,在如下文所讨论的机构或区内,直至包括整个网络)的路由器实现服务和拓扑结构交换协议(本文中被称为STEP)以交换服务和拓扑结构状态信息,使得参与STEP的网络的部分中的每个路由器(以下称为STEP路由器)从该网络的部分中的所有其他STEP路由器以及可选地也从网络的部分外的STEP路由器获取服务和拓扑结构状态信息。除其他外,STEP允许STEP路由器传播网络状态和网络状态改变以及管理跨越路由器的服务,例如,随着更多路由器成为机构或区的一部分。网络可以分为多个部分,并且STEP路由器可以是多个部分的成员,从而参与其作为成员的每个部分内的STEP交换。一部分中的STEP路由器可以在该部分内和该部分外通告服务和路由。当在该部分之外通告服务或路由时,服务或路由可以作为聚合服务或路由进行通告,例如,标识通过其可以访问该服务或路由的部分中的一个特定STEP路由器并且可选地包括用于聚合服务或路由的聚合度量(例如,基于与网络的部分内的服务或路由相关联的各个链路/路径的度量的聚合服务或路由的丢失、延迟、抖动和/或代价值)。其中这种分段路由(例如,对网络进行分段并且允许跨越网络分段对聚合服务和路由进行通告)可以减少分发服务和拓扑结构状态信息所需的信息流量。
网络的每个部分内的STEP路由器通常通过配置关系指定,例如,指定哪些STEP路由器属于特定机构或区。根据这些配置关系,STEP路由器可以直接或间接交换服务和拓扑结构状态信息,如下文所进一步讨论的。服务和拓扑结构状态信息可以包括传统链路状态信息(例如,从诸如OSPF或BGP之类的传统路由协议获得的链路状态信息)以及附加信息,诸如服务水平协议(SLA)信息(例如,用于特定服务的服务水平协议、以及该服务是否正在在服务水平协议内操作)、路径度量(例如,所配置的链接速度、实际计算的链接速度、链接状态开启/关闭、抖动、分组丢失率、延迟、向量信息、和/或每个路径/向量的代价值)、多播成员资格和许可信息、以及与做出智能路由决定相关的其他信息。因此,除其他外,STEP向STEP路由器提供的信息比单独从传统路由协议提供的信息多,从而允许每个STEP路由器基于服务水平协议(SLA)和路径度量来做出包括路由分组的更智能的路由决定,做出智能多播路由决定,并且支持智能源路由,仅举几个可以利用STEP的方式。
在某些示例性实施例中,STEP使用集中分发系统(本文中被称为STEP服务器或STEP存储库)实现,用于通过路由器和在路由器之间动态交换服务和拓扑结构状态信息,以使路由器可以做出更智能的路由决定。具体地,参与STEP的每个路由器(以下简称STEP路由器)向STEP存储库动态传输其自己的服务和拓扑结构状态信息,并且基于STEP路由器之间的配置关系来从STEP存储库动态接收一个或多个其他STEP路由器的服务和拓扑结构状态信息。STEP存储库由如下文所讨论的多种网络设备中的任一网络设备中的STEP服务器管理,并且每个STEP路由器都实现了关于该客户端-服务器模型的STEP客户端。下文在该集中式分发系统的上下文中对某些示例性实施例进行描述,尽管应指出的是,STEP可以使用用于分发服务和拓扑结构状态信息的其他机制来实现,下文对这些机构中的一些机构进行描述。
应指出的是,STEP路由器可以包括SSR或其他路由器,这些其他路由器使用本文中所描述的部分或全部STEP功能进行增强。
正在开发STEP以解决当前SSR网络部署中的以下挑战,尽管它通常提供一种在网络内分发信息的机制,该机构现在或将来可以用于其他目的:
●与多个路由协议的交互
需要供应在两个SSR对等体之间通过SVR配置BGP,以便在两个SSR之间交换BGP路由。这不能很好地跨越多个SSR进行缩放。还需要将来自这些传统路由协议的路由信息映射到服务和服务路由的SSR世界。STEP提供了一种实施执行这种情况的简易方式。如果需要或期望,它还提供了一种可扩展方式来与任何未来传统协议(如ISIS等)进行交互。通过STEP,网络管理员能够插入具有任何传统路由器的SSR并且将它们映射到服务,并且使它们可用于整个网络。
●多播
通过多播(例如,IGMP支持),组的所有多播接收器都通过SSR而被获知。通过STEP,接收器端点将经由STEP存储库进行通告,并且可以确定最佳复制/会合点以将多播分组发送到所有接收器,例如,分发多播分组所需的最小树。
●端点可用性
远端SSR可以将服务路由到服务不再可用的另一SSR。服务可用性不仅限于路由或路径状态。最终应用状态还可以使用健康API查询,并且不仅限于链接状态来确定服务状态。目前,SSR使用路径和接口故障转移技术来解决该局限性,这些技术并非在所有情况下都有效,尤其是在完全中断以及当其他路由器上的服务也不可用时。STEP可以在整个网络中传播服务可用性信息,以使每个路由器都可以做出智能决定并且使中断最小。
●精准定位整个网络的服务中断
STEP将服务和拓扑结构状态信息存储在STEP存储库中。因此,STEP存储库在任何给定时间通常具有网络的整个视图,并且由于从STEP路由器接收到服务和拓扑结构状态信息更新,所以STEP存储库还可以存储历史信息。该当前和历史信息可以用于多种目的中的任一目的,诸如,例如故障排除服务和拓扑结构问题,从而做出网络管理决定(例如,关闭特定路由器或经由STEP存储库控制特定路由器所通告的哪些信息),甚至恢复到先前网络状态(例如,通过“重放”网络状态改变序列),仅举几例。可以在任何给定时间轻松生成整个网络的服务中断或热图视图。这有助于故障隔离并且增强调试网络问题的能力。
●可缩放性
STEP允许网络轻松缩放并提供对整个网络的洞察。STEP还将帮助网络管理员轻松设计并缩放现有网络或新网络,并且深入了解跨越整个网络的服务可用性。在某些示例性实施例中,存在被称为“内部STEP”或“iSTEP”和“外部STEP”或“eSTEP”的两种STEP表现形式。内部STEP是用于在机构内交换服务的协议,并且是以下描述的主要重点。外部STEP是用于跨越机构交换服务的协议,并且在以下描述中进行简要讨论。
STEP存储库
现在对STEP以及与STEP一起使用的各种网络元件的示例性实施例进行描述。
如上文所讨论的,参与STEP使能网络的STEP路由器发布由STEP服务器在STEP存储库中维护的服务和拓扑结构状态信息。为了方便起见,由给定STEP路由器发布的服务和拓扑结构状态信息在本文中被称为STEP文档。在具体示例性实施例中,STEP文档是JavaScript对象符号(JSON)编码文档,尽管在各个备选实施例中可以使用其他机制(例如,HTML或二进制编码文档)。服务提供商还可以向STEP存储库发布信息,例如,以根据他们的网络/机构通告服务信息。STEP服务器从STEP路由器接收的STEP信息以及可选地从服务提供商接收的STEP信息被选择性地分发到其他STEP路由器,并且由STEP路由器用于将业务智能路由到服务并且对网络改变做出反应。
在某些示例性实施例中,STEP储存库建立在遵循发布订阅模型的本文中被称为路径树数据库的高效可缩放存储器中数据库上。在示例性实施例中,STEP存储库/服务器执行服务和拓扑结构状态信息的收集和分发,并且所有路由决定(客户端发布路由数据和客户端使用数据执行路由,例如,最短路径优先决定)在STEP路由器而非STEP服务器上完成。然而,在某些备选实施例中,STEP储存库/服务器可以被配置为做出或有助于路由决定。
路径树数据库用于存储STEP存储库中的所有数据。顾名思义,每个数据集在路径树数据库中都有自己的路径。在示例性实施例中,以下路径定义格式用于从每个STEP路由器发布STEP相关信息:
/<authority-name>/<district-name>/<router-name>/step=<routerdocument>
其中
authority-name:路由器所属的机构的名称
District-name:该路由器所属的区的名称。
router-name:路由器的名称
step:其中存储json文档的路径的叶子
以下各章节对各个区进行详细解释。目前,区可以被视为邻域的汇集和在机构内分段路由器的方式。
每个STEP路由器都会向STEP存储库发布路由器文档集。STEP路由器可以是一个或多个区的成员,并且每个STEP路由器为其作为成员的每个区发布路由器文档。每个STEP路由器通常订阅其作为成员的每个区内所有其他STEP路由器的STEP文献。这样,每个STEP路由器都获知其作为成员的每个区的服务可用性,并且可以在每个服务的基础上应用算法来确定网络中服务的可用路径。每个STEP路由器都会定期运行路由(例如,SPF)计算,并且不会从服务器接收任何结束通知。
在示例性实施例中,以下类型的信息将存储在STEP存储库中:
●每个路由器内的服务可用性
●可从每个路由器获得的对等路径
●如果分发到STEP中,则从其他路由协议中获知的外部路由对这些类型的信息中的每一类型的信息进行更详细的讨论。
STEP存储库在任何给定时间提供网络服务可用性的完整视图,还可以维护时间段内网络中发生的改变的历史。除其他外,该当前和历史信息可以用于调试或微调服务策略,例如,在一天中的不同时间对各种服务进行优先级排序,而且还可以用于在必要或期望时有效恢复到先前网络状态。其他机器学习算法还可以应用于从STEP存储库获得的数据,以帮助影响网络中的服务。
作为STEP存储库的路径树服务器
路径树数据库是轻量级的可缩放存储器中订阅数据存储库。该路径属数据库支持基于套接字的发布者订阅者模型。数据集被存储为各种路径,客户端可以在各种路径上添加钟表以通知修改。下文提供了示例。
/p1/p2/p3/key="test"
其中
/p1/p2/p3/key是路径
test是值。
STEP客户端可以创建路径,还可以订阅任何路径上的通知。例如,客户端可以在路径/p1/p2上添加钟表,并且当在/p1/p2路径下创建/改变/益处任何内容时,它就会获得通知。
路径树客户端将数据集存储为JSON(尽管可以使用任何数据编码)。对数据集的任何进一步更新都将作为JSON补丁文档(JSON差异)而被发送,如IETF RFC 6902中指定的标题为JavaScript ObjectNotation(对象标示)(JSON)补丁,并且可以在https://tools.ietf.org/html/rfc6902可获得,其全部内容通过引用并入本文。这提供了一种更新状态以及将更新通知观察者的有效方法,而不是发送整个JSON文件。这种机制应该特别适用于路由更改通知,其中只有少数路由可以基于路由更改而被通告或撤回。因此,路径树客户端只发送那些更改通知。
STEP服务器通知所有订阅者他们订阅的路径的任何改变。服务器优选地还保留对特定路径的所有JSON差异更新的历史。这些更新被视为网络路径改变或路由改变。这些差异被定期合并到一个JSON文档中(在默认情况下,这被配置为每个路径100个差异)以允许滚动(rollover)和聚合。
路径树服务器是无状态的,不是持久数据存储库。如果重新启动,则它会丢失所有状态信息,并且客户端必须使用最新状态(即,最新STEP文档)重新填充数据存储库。
为了保持路径树服务器中的状态,单独路径树客户端将侦听服务器上的所有路径并且将其存储在时间序列数据库中。该路径树客户端可以与路径树服务器共存,还可以是远程的。分析/web客户端可以使用该时间序列数据库来确定网络随时间的改变。这在下文进行更详细的讨论。
STEP存储库/服务器位置
STEP存储库和STEP服务器几乎可以托管在任何地方,尽管实际上它们将驻留在以下三个位置中的一个位置中:
●编排器
STEP服务器可以位于编排器上。所有路由器都可以访问编排器,这就是路由器初始化和自举的方式。因此,一般来说,编排器可能是STEP存储库的自然(例如,默认)位置。如果来自路由器的编排器访问位于“有损”网络上或具有高延迟,则STEP存储库应托管在靠近路由器的服务器上或路由器本身上。
●所有路由器都可以访问的公共服务器
STEP服务器可以位于独立服务器上,与编排器分开。这通常需要实现从所有路由器安全访问。
●路由器本身(例如,数据中心)
存在其中与编排器的连接性不可靠并且可能在很长时间段内不可用使得路由器无法相互讲话的几个部署。在这些情况下,路由交换和转发应仍然能够正常运转而不会中断。为了实现这一点,STEP存储库可以驻留在路由器(通常,集线器路由器)上,该域中的所有路由器都可以访问该路由器。应指出的是,托管STEP存储库的STEP路由器有效充当STEP服务器(用于管理STEP存储库)和STEP客户端(用于向STEP存储库/服务器传输服务和拓扑结构状态信息并且用于从STEP存储库/服务器接收服务和拓扑结构状态信息)。
STEP服务器和客户端设备
如上所述,STEP储存库和STEP服务器可以在各种类型的设备中的任一类型的设备(诸如,例如STEP路由器、编排器或与STEP路由器和编排器分开的服务器)中实现。图1是示出了根据一个示例性实施例的STEP服务器100的主要组件的示意图。其中STEP服务器100包括数据存储库110和STEP服务器控制器120。数据存储库110包括其中存储路由存储库的易失性存储器(本文中被称为易失性路由存储库111)和其中存储历史STEP信息(本文中被称为持久性历史信息112)的持久性存储装置。STEP服务器控制器120通常包括微控制器和具有软件的相关外围设备,该软件存储在有形的非暂态计算机可读介质中并且在微处理器上运行以实现执行本文中所描述的STEP服务器功能的一个或多个计算机进程。当STEP服务器100在STEP路由器中实现时,STEP服务器控制器120在其上实现的微控制器可以是运行诸如路由计算和分组路由之类的其他路由器功能的相同微控制器。
图2是根据一个示例性实施例的用于实现高级STEP服务器功能的STEP服务器控制器120的逻辑流程图。在框202中,STEP服务器控制器120在数据存储库中维护STEP储存库。在框204中,STEP服务器控制器120使用服务和拓扑结构交换协议从多个STEP路由器中的每个STEP路由器接收服务和拓扑结构状态信息。在框206中,STEP服务器控制器120将所接收的服务和拓扑结构状态信息存储在STEP储存库中。在框208中,STEP服务器控制器120基于路由器之间的配置关系使用服务和拓扑结构交换协议向每个路由器传输来自STEP存储库的至少一个其他路由器的服务和拓扑结构状态信息,以使得每个STEP路由器能够至少部分基于来自至少一个其他路由器的服务和拓扑结构状态信息来做出路由决定。
如上文所讨论的,STEP客户端在STEP路由器中实现。图3是示出了根据一个示例性实施例的STEP客户端300的主要组件的示意图。除其他之外,STEP客户端300包括数据存储库310和STEP客户端控制器320。STEP客户端控制器320在数据存储库310中维护用于存储从STEP服务器接收的STEP文档的本地STEP存储库311。STEP客户端控制器320通常包括微控制器和具有软件的相关外围设备,该软件存储在有形的非暂态计算机可读介质中并且在微处理器上运行以实现执行本文中所描述的STEP客户端功能的一个或多个计算机进程。在其上实现STEP客户端控制器320的微控制器可以是运行诸如路由计算和分组路由之类的其他路由器功能的相同微控制器。通过STEP,路由器通常还包括STEP增强型路由引擎340,该STEP增强型路由引擎340使用本地STEP存储库311中的STEP信息以及存储在数据存储库310中的传统路由信息313(例如,静态路由、连接路由和/或来自诸如OSPF或BGP之类的路由协议的路由来确定路由信息库314的路由,STEP增强型路由引擎340根据该路由信息库路由分组。
图4是根据一个示例性实施例的用于实现高级STEP客户端功能的STEP客户端控制器220的逻辑流程图。在框402中,STEP客户端控制器220使用服务和拓扑结构交换协议来向STEP服务器传输服务和拓扑结构状态信息。在框404中,STEP客户端控制器220基于路由器之间的配置关系来使用服务和拓扑结构交换协议从STEP服务器接收至少一个其他路由器的服务和拓扑结构状态信息。在框406中,STEP客户端控制器220在本地STEP存储库中存储至少一个其他路由器的所接收的服务和拓扑结构状态信息,以用于做出路由决定。
如上文所讨论的,STEP服务器100和STEP客户端300均可以在路由器中实现。
STEP存储库冗余
在示例性实施例中,路径树服务器是非持久性数据存储库。路径树服务器可以部署有多个实例以提高弹性。在存在多个路径树服务器的情况下,服务器中的一个服务器被选为主服务器,而其余服务器作为辅服务器。在示例性实施例中,该选择可以基于最低启动时间戳或基于最高配置优先级,尽管可以采用其他选定方案。连接到辅服务器的客户端会其请求代理到主服务器。辅服务器存储库不会在其内维护任何路径树状态。
在主服务器出现故障或重新启动的情况下,辅服务器中的一个辅服务器基于选定方案(例如,基于次低启动时间戳或基于次高配置优先级)来承担主服务器的角色。对旧主(其现在是辅)服务器的任何请求都会中继到新主服务器。如果配置了优先级,则一旦具有最高优先级的故障主服务器复原,它将再次承担领导地位。因为新主服务器不会保存任何状态,所以它需要由所有路由器重新填充。
所有STEP服务器(主服务器和辅服务器)都应能够通过L2或L3网络相互通信。STEP服务器可以配置有优先级。在示例性实施例中,最高优先级服务器为主要服务器,而其余服务器为辅服务器。可以配置考虑网络中的可达性约束来配置STEP主服务器。下一章节描述了STEP服务器可以驻留的各种位置。
STEP存储库配置
(多个)STEP存储库位置和可选的优先级设置可以由网络管理员根据网络部署的需要进行配置。下文给出了STEP存储库的数据模型改变。
可以通过配置以下两个参数来设置STEP服务器:
●IP地址/FQDN
可以使用IP地址或完全限定域名(FQDN)来标识STEP服务器。STEP服务器可以是编排器、独立服务器或路由器本身。如果该字段与路由器上接口的IP地址/主机名匹配,则在该路由器上设置STEP服务器。针对这些IP地址中的每个IP地址生成STEP服务,并且针对每个路由器生成对应服务路由,以便路由器上的STEP客户端可以到达STEP存储库。这由配置生成器在配置被推送到所有路由器之前完成。下文提供了更多细节。
●优先级
这是可选参数,该可选参数在一些网络部署中非常有用。优先级指示在存在多个服务器的情况下哪个服务器应是主服务器。默认情况下,正常运行时间最长的服务器成为主服务器。然而,配置优先级之后,优先级最高的服务器成为主服务器。如果无法成为主服务器,则具有下一最高优先级的服务器成为主服务器依此类推。如果部署了两个以上的STEP服务器并且一些STEP服务器配置了优先级而另一些STEP服务器没有配置优先级,则处于活动状态的优先级最高的服务器成为主服务器。当配置了优先级的所有服务器都不可用时,正常运行时间用作剩余服务器的鉴别器。这对于在所有网络元素均可到达的节点上指定主服务器的部署而言是有用的。这甚至可以为路由器(例如,在编排器或独立服务器具有有损连接的情况下)。
STEP文档
在示例性实施例中,STEP文档是由每个STEP路由器发布到STEP存储库的JSON文档。下文的protobuf定义说明了组成JSON的不同字段。
上文的protobuf定义为第三方路由器提供了通过发布其路由器文档作为JSON文档来与STEP路由器进行交互的方案。Protobuf具有获取/设置值的访问器,它们可以与JSON相互转换。下文是文档的示例JSON表示:
STEP文档具有以下字段,这些字段由每个网络元素填充。
1.路由器
路由器为顶部实体,该顶部实体涵盖一个或多个节点。每个STEP文档都属于路由器。路由器可以具有经由互连(背板)连接的一个或多个节点。
2.节点
每个节点都列出了服务、可从该节点到达的对等路径、服务可用性、其他协议所分发的外部路由、以及多个节点之间可用的互连。互连的存在用于确定节点之间的服务路由的可达性。如果文档中没有互连,则这表明节点之间的路径关闭而一个或多个其他节点所托管的一些服务无法通过“该”节点访问。服务可达性不会考虑经由关闭的节点的任何对等路径(文档中不存在)。
3.服务
服务部分表示每个路由器正在通告的所有服务。如果路由与所配置的服务前缀相匹配或存在所配置的服务路由,则路由器通告服务。简而言之,路由器的服务条目本质上意味着路由器可以提供该服务。
服务使用前缀和下一跳进行通告。如果前缀具有与它们相关联的下一跳,这意味着路由从路由协议中获知,而下一跳从路由中获知。如果撤销了对该前缀有贡献的路由,则服务内的前缀可以被撤销。所配置的服务前缀中较窄前缀会被通告。例如,如果服务配置有前缀10.10.10.0/24并且获得应用的路由为10.10.10.1/32,则因为10.10.10.1/32前缀较窄,所以使用它来通告服务。来自路由协议的前缀仅在服务分发到STEP时才应用于服务。下文对关于这种情况的更多细节进行描述。
服务还可以具有没有下一跳的前缀。这些前缀是直接从服务地址配置中获得的前缀,针对这些前缀,配置了服务路由。可以认为服务路由与静态路由相似,因为它们以显式方式进行配置,但是特定于服务。
服务路由部分表明所配置的本地下一跳可用。该部分只通告可达的下一跳。如果下一跳关闭,则服务路由部分为空。
4.对等路径
对等路径指示从给定路由器到对等体中的每个对等体的所有可用路径。该信息可以用于构建表示路由器之间网络拓扑结构连接的图形。
由于SSR路由是面向服务的,所以对等路径本身并不能给予服务可用性的完整图片。每个服务都具有与之相关联的服务策略,对等路径中的每个对等路径都应在可接受SLA内。每个对等路径都具有与之相关联的服务策略列表,并且指示它是否在每个策略的可接受SLA内。因此,每个服务都可以使用该服务策略信息来确定这些路径是否可用于特定服务。在示例性实施例中,SLA值的服务策略包括可配置抑制定时器,并且在被通告为STEP服务器的可接受限制之前,该路径在该定时器期间必须保持在SLA内。路由器(STEP客户端)负责遵守抑制定时器和SLA阈值以生成其STEP文档。
SLA值也按对等路径进行通告。在示例性实施例中,每个邻接都存在可配置定时器值,该邻接可以被设置为周期性地更新这些值。SLA包含路径的损耗值、延迟值和抖动值。这些值通常每隔几秒钟在路由器本身上测量一次,但不会在STEP存储库中频繁更新以避免摆动(例如,路由器交替经由一个路由然后经由另一路由通告目的地或不可用然后以快速顺序再次可用,或备选地,将接口通告为关闭然后快速连续打开)并且避免可能防止网络收敛的频繁路由更新。例如,这些值可以每5分钟更新一次(作为滚动平均值),从而可以被覆盖。如果这些值被通告,则他们被纳入路由(例如,SPF)计算中,以基于SLA来确定最佳路径。
5.外部路由
外部路由是指从其他一些路由协议分发到STEP中的路由(例如,重新分发到STEP中的BGP路由)。在这种情况下,路由协议不会被通告到任何服务中,只会被通告到STEP中,以使所有其他路由器都可以获知该路由。这些可以在另一STEP路由器处重新分发回到BGP。
邻域
邻域是应用于网络接口以指示网络连接性的标签。当两个网络接口共享相同的邻域时,就暗示它们具有网络可达性。每个路由器都可以发布邻域作为STEP文档的一部分,包括其向量、网络接口和租用信息。这可以用于确定路由器之间的对等路径连接性。下文给出了示例配置。
在示例性实施例中,来自所有路由器配置的邻域由编排器读取,并且邻接配置由配置生成代码生成。每个路由器上的邻接配置用作可用对等路径。这些对等路径作为STEP文档的一部分进行通告。这允许每个对等体在每个服务的基础上创建整个网络的拓扑结构图形。
区是邻域的逻辑分组。STEP文档一般在相同的区内的所有路由器之间共享。区没有严格划分,完全取决于网络拓扑结构的分段方式。该部分提供了相同的网络拓扑结构如何分割为一个区或多个区的示例。
单个区
图5是示出了被分割为具有多个邻域的一个区的示例性拓扑结构的示意图。在该示例中,区名称为“公共(common)”,并且存在中心型和辐条型拓扑结构。路由器DC1和DC2是集线器。路由器Br1和Br2是连接到路由器DC1的辐条。路由器Br3和Br4是连接到路由器DC2的辐条。定义了以下邻域:
1.N1
DC1、Br1和BR2的所有WAN接口都在N1邻域内。该邻域为区“公共”的一部分。
2.N2
DC2、Br3和BR4的所有WAN接口都在N2邻域内。该邻域也是区“公共”的一部分。
3.N3
DC1与DC2之间可达的WAN接口位于邻域N3中。该邻域也是区“公共”的一部分。
在该示例中,所有三个邻域都被定义为相同的区“公共”的一部分。这意味着所有六个路由器都将其STEP文档发布到STEP服务器的相同的路径中。以下示出了发布文档的示例路径:
多个区
图6是与图5相同但分割为多个区的拓扑结构的示意图。在该示例中,存在三个区,具体地,名为“东(east)”的区,该区包括路由器DC1、Br1和Br2;名为“西(west)”的区,该区包括路由器DC2、Br3和Br4;以及名为“中心(central)”的区,该区包括路由器DC1和DC2。每个STEP路由器在其相应路径中发布其STEP文档。以下示出了图6所示的区的示例路径。
可以看出,路由器DC1在东和中心两个区中发布了STEP文档,而路由器DC2也在西和中心的两个区发布了其STEP文档。路由器Br1和Br2只与东区的路由器DC1对等,因此路由器Br1和Br2只在东区中发布了他们的STEP文档,因为它们的网络拓扑和服务可用性在每个分支基础上无需暴露于其他区。同样,路由器Br3和Br4只与西区的路由器DC2对等,因此路由器Br3和Br4只在西区发布了其STEP文档,因为它们的网络拓扑结构和服务可用性在每个分支的基础上无需暴露于其他区。如果所有分支都连接为全网格,则每个分支机构路由器都需要知道服务可用性和到每个其他分支的可达性,但本文中并非如此。在该示例中,路由器DC1可以有效对路由器DC2隐藏其所有分支,反之亦然。
在示例性实施例中,作为多个区的一部分的每个路由器聚合来自一个区的服务和路由信息并且将其通告给另一区。因此,两个不同区上的相同路由器的STEP文档看起来会有所不同。下文提供了有关如何在区之间交换服务的附加细节。
区配置
根据一个示例性实施例,下文是配置区所需的数据模型改变。区为包含邻域列表的机构级别的容器。每个邻域都可以具有与其相关联的区列表。
默认区
在示例性实施例中,将邻域与区相关联是可选的。当邻域没有明确与区相关联时,它被指派区“默认区(default district)”。这样,如果拓扑结构只需要单个区,则就无需配置区。在上文参考图5所描述的拓扑结构中,如果所有邻域都配置为没有区而非配置有区“公共”,则路径树服务器可能具有以下路径。
在示例性实施例中配置邻域和区时使用以下规则:
●如果路由器R1在D1区配置有带有邻域N1的接口以及没有邻域的另一接口,则R1将只在D1区下发布路由器文档。它不会在“默认区”下发布文档。
●如果路由器R1在D1区中配置有带有邻域N1的接口以及带有不属于任何区的一部分的邻域N2的另一接口,则R1将在D1和“默认区”下发布STEP文档。
●如果路由器R1在其接口中的任一接口上都没有配置邻域,则它不会发布任何STEP文档。
使用STEP的路由计算
路由(例如,SPF)计算在路由器上使用抑制定时器按需运行,例如,如果STEP存储库存在任何更新(包括本地改变),它被调度为在预先确定的数量的时间(例如,五秒)后重新计算路径。这会生成基于服务的路由和下一跳。这些路由和下一跳向下推送到路由代理以设置转发信息库(FIB)条目。定时器的触发表明到计算路径的时间,并且没有来自服务器的结束通知。
一旦路由器读取了所有STEP文档,它在其他路由器在每个服务的基础上所通告的所有可用路径上运行其路由算法(例如,经由Dijkstra算法的SPF)。在一些情况下,如果服务前缀中的每个服务前缀都具有不同下一跳(这可能是从其他协议分发到服务的前缀的情况),则这将在每个服务前缀上运行。
每个路径的代价都发布在STEP文档中,并且可以从配置(config)中获得与每个服务相关联的服务策略。基于此,每个服务的逻辑网络拓扑结构不同。SPF计算每个服务的最佳路径和备用环路自由路径。在主路径不可用的情况下,备用路径用作备份路径。
SLA值按对等路径周期性地通告。这些更新的时间可以按邻接而被配置。所通告的每个对等路径还指示是否满足每个服务策略的SLA。服务策略具有路径抑制定时器字段,该路径抑制定时器字段可以被配置为控制这些更新。以下是路径SLA更新的示例数据模型改变:
服务交换
在示例性实施例中,以下类型的服务在路由器上可用:
a)机构范围广的服务。
b)路由器本地或N个路由器之间共享的本地服务。
c)用于由路由器托管的服务以进行本地访问的托管服务。
d)路由器本地的应用标识服务。
在这些服务类型中,在示例性实施例中,STEP仅在STEP文档中通告以下服务:
a)机构范围广的服务。
b)多于一个路由器之间共享的本地服务。如果该服务是该路由器的本地服务,则不会对其进行通告。
其他两种类型的服务仅与路由器本地相关,因此在示例性实施例中不会在STEP文档中发布。
图7是示出了包括彼此对等的两个路由器的拓扑结构的示意图。在该示例中,路由器R2具有服务S1的服务路由,路由器R1和R2之间存在两个对等路径。例如,考虑服务S1配置有前缀1.2.3.0/24并且在路由器R2上配置有服务路由。
路由器R1
●经由配置获得服务S1
●没有与服务前缀S1相匹配的路由
●具有两个对等路径
因为路由器R1没有匹配该服务的路由,也没有配置任何服务下一跳,所以它没有任何要通告服务。因此,以下是路由器R1的示例STEP文档:
根据上文STEP文档,路由器R1没有通告任何服务。然而,它确实具有到东路由器R2的对等路径。
路由器R2
●经由配置获得服务S1
●没有与服务前缀S1相匹配的路由
●经由配置或者节点N1上的本地服务路由。
●具有两个对等路径
以下是路由器R2的示例STEP文档:
对于路由器R2,服务S1作为带有服务路由的STEP文档的一部分进行通告。这只是意味着服务S1在路由器R2上可用。当路由器R1接收到路由器R2的STEP文档时,它发现服务S1在路由器R2上可用,并且由于对等路径高于SLA,它可能针对服务S1建立从路由器R1到路由器R2的服务拓扑结构。当路由器R2从路由器R1接收到STEP文档时,它发现没有正在通告任何服务。因此,服务S1的唯一下一跳将是路由器R2上配置的服务路由。上文示例指示了在相同的区内的多个路由器之中如何交换服务。
移除路由器
路由器可能由于多种原因中的任一原因而变得不可用,诸如,例如路由器故障、与路由器的通信连接性不可用或通信连接性不良、网络管理员关闭路由器或从网络配置中移除路由器(例如,通过对STEP服务器的通知)。这种不可用性可以传送到STEP存储库,并且从那里传播到订阅现在不可用路由器更新的其他路由器。例如,如果路由器出现故障或关闭或与路由器的通信中断,则路由器可能会停止与STEP服务器/存储库通信,在这种情况下,STEP服务器可能(可以在尝试预先确定的次数以重新建立与服务器的通信后)更新STEP存储库以指示路由器不可用,例如,通过从STEP存储库中移除该路由器的状态信息或通过更新该路由器的状态信息以指示不可用性。同样,如果路由器从网络配置中移除,则STEP服务器可以更新STEP存储库以指示路由器不可用,例如,通过从STEP存储库中移除该路由器的状态信息或通过更新该路由器的状态信息以指示不可用性。在任何情况下,STEP服务器都可以立即通知订阅现在不可用路由器更新的其他路由器该路由器现在不可用,在这种情况下,这些其他路由器可以重新计算一个或多个路由以避免现在不可用路由器。
将协议重新分发到STEP中
STEP路由器通常需要与其他路由协议(如BGP、OSPF等)交互,以便学习路由。STEP路由器具有将这些路由选择性地分发到STEP中的独特能力,而不是在核中运行这些协议。在一个具体示例性实施例中,以下路由协议可以分发到STEP中:
a)BGP
b)OSPF
c)静态
d)已连接
以下是将路由协议分发到STEP的示例性配置:
这可以在未来扩展以在社区、对等组等上应用过滤策略,以在更细粒度级别下过滤路由。在示例性实施例中,可以通过两种方式将这些路由重新分发到STEP中:
a)重新分发到选定服务中
b)作为外部路由重新分发
将协议重新分发到服务中
图8是示出了将BGP重新分发到服务中的示例的示意图。在该示例中,路由器R1与路由器R2对等,并且路由器R2与非STEP路由器(R3)呈BGP对等。考虑路由器R2上的以下示例配置,其中BGP经由STEP重新分发到服务S1中:
Step
name:"step1"
redistribute
protocol:bgp
service:[{"S1"}]
现在,考虑与先前示例相同的具有相同前缀1.2.3.0/24的服务S1。在这种情况下,S1没有配置业务路由。这个想法是从BGP获知路由并且将它们重新分发到服务S1中。对于该示例,假设只经由BGP获知一个路由,具体地,路由1.2.3.4/32。
路由器R1
●经由配置获得服务S1
●没有与服务前缀S1相匹配的路由
●具有两个对等路径
因为路由器R1没有与该服务相匹配的路由,也没有配置任何服务下一跳,所以它没有任何要通告服务。以下是路由器R1的示例STEP文档:
从根据上文STEP文档中,很明显路由器R1没有通告任何服务。它具有到东路由器的对等路径。
路由器R2
●经由配置获得服务S1
●具有与业务前缀S1相匹配的BGP路由。通告较窄前缀。
●具有两个对等路径
以下是路由器R2的示例STEP文档:
下一跳作为代价提供。由于传统路由协议不知道向量,所以直接使用路由的代价。当计算最佳路径以及每个路径上的矢量幅度时,使用该代价。在示例性实施例中,AS路径长度通过将路径中的AS的数目乘以常数(例如,10)而被转换化代价,并且代价在下一跳中被通告。AS路径还可以在文档中进行通告,以便在未来针对运送案例传播它。
对于路由器R2,服务S1作为具有较窄前缀和下一跳的STEP文档的一部分进行通告。这意味着服务S1在路由器R2上可用。路由器R2将服务S1作为其路由器文档的一部分发布,因为:
●BGP重新分发到路由器R2中的服务S1
●从BGP获知的路由是服务前缀的子集
对于枚举中列出的其他协议,即,静态、已连接和OSPF,也可以这样做。
重新分发协议作为外部路由
通过该选项,从BGP获知的路由作为外部路由分发到STEP中。该选项有用的一个用例是将对等路由器的连接路由通告到BGP中,其中这些路由用作下游非SSR的反向路由。然而,由于STEP没有被视为跨过网络携载传统路由的协议,所以应认为这不是正常操作模式,而应是最不优选的路由通告方式。
图9是将BGP重新分发到STEP中的示例的示意图。在该示例中,路由器R2通过与另一路由器R3对等而经由BGP获知路由。在这种情况下,路由器R2被配置为将BGP分发到STEP中。在该示例中,这些路由没有分发到服务中。这是与先前示例的重要区别,其中路由被分发到服务中。考虑路由器R2上的该配置,其中BGP重新分发到STEP中:
在这种情况下,路由显示路由器R2的STEP文档的外部路由部分。应指出的是,路由器R2不再通告服务S1,因为没有与该服务相匹配的路由。
路由器R2
●经由配置获得服务S1
●没有与服务前缀S1相匹配的路由,由于BGP没有分发到S1服务中
●具有外部路由,由于BGP分发到STEP中
●具有两个对等路径
以下是路由器R2的示例STEP文档:
外部路由部分中的协议部分指示哪个协议分发到STEP中。本文档指示来自BGP的路由1.2.3.4/32已经分发到STEP中。这并不意味着该路由被分发回到路由器R1上的另一协议。由于该路由不会应用于任何服务,所以它的存在不会影响任何服务。在某些示例性实施例中,可以使用这些路由的唯一方式是对等路由器中的一个对等路由器是否将这些外部路由分发回到BGP中。下面提供了这方面的附加细节。
将STEP重新分发到BGP中
每个路由器都可以从STEP存储库中获知服务和路由,并且将它们重新分发回到BGP中。重新分发可以在服务级别下更细化,其中可以重新分发服务集。这种重新分发的一些示例性数据模型改变如下所示,以粗体突出显示。
对现有配置的这种扩展提供了可以分发到BGP中的服务列表。
默认情况下,通过服务枚举,所有服务都重新分发到BGP中。
协议内的“step”枚举表示经由STEP获知的所有外部路由。这些路由是不与任何服务相匹配但经由其他协议(例如,BGP、已连接、静态等)分发到STEP中的路由。
“服务”枚举会将从其他路由器获知的所有服务前缀如果存在于路由器文档中则分发到BGP中,并且如果不存在则将撤消。已经对重新分发命令进行扩展以提供可以分发到BGP中的服务列表,以防不需要公开所有服务前缀。这让每个路由器可以更好地控制它所选取以通告进入BGP的服务。
多播服务
多播具有许多应用,其中源需要将分组复制到一个或多个接收器。目前,SSR支持单播业务,这些单播业务递送一个目的地。单播服务没有把如IGMP协议之类的多播协议考虑在内,这些协议用于指示哪些接收器对某个多播组感兴趣。
多播业务的接入策略要求也与单播业务的接入策略要求不同。单播服务通常仅对源具有接入策略,而多播服务可能受益于基于每个服务的源和接收器的访问策略。
具有多播IP地址的服务是多播服务。多播服务将分组复制到多个端点目的地。目的地可以是路由器本地的,还可以是对等路由器。以下是根据示例性实施例的多播服务定义的示例:
本文中,名为“mcast”的多播服务与多播地址233.252.0.2相关联。它还具有允许名为“蓝色(blue)”的租户的访问策略和允许名为“红色(red)”的租户的发送方策略。由于这些术语与单播世界不同,所以理解它们很重要。
访问策略字段指示允许哪些接收器接受来自该多播服务的分组。这与单播服务使用访问策略的方式不同。单播服务使用分组的发起者的访问策略(即,源是否能够访问该服务)。然而,对于多播服务,它是接收器的访问策略。
访问策略确保仅从该服务上允许的接收器租户接收IGMP分组。多播地址指示多播组。多播接收器可以经由IGMP协议动态获知。
在上文示例中,访问策略允许分类为租户蓝色的接收器。本文中,路由器可能接受来自其上配置了租户蓝色的接口的IGMP加入。233.252.0.2组的IGMPv2成员资格查询消息从可以访问该多播服务的所有接口发送出去。具有无法访问服务的租户的路由器上的任何接口都将丢弃针对该多播组接收的所有IGMP成员资格报告消息。因此,多播服务可以对接收器施加访问控制。
多播-发送器-策略指示允许哪些源向该多播服务发送分组。以下示出了多播-发送器-策略的一些示例性数据模型改变:
任何多播服务都需要生成多播分组的源。发送器策略对发送器施加访问策略。在上文示例中,发送器-策略允许租户红色。这意味着如果源被分类为租户红色,则允许源向该多播组发送分组。
在示例性实施例中,可以在接口上配置多播侦听器。默认情况下,接收器(也称为侦听器)机遇与接口租户相匹配的基于租户的访问策略进行设置。然而,可能存在这在每个接口的基础上需要覆盖的情况。以下是在示例性实施例中用于配置多播侦听器的示例配置定义:
多播侦听器配置可以用于覆盖当前服务访问策略。它可以用于使得接收器能够使用启用标志加入任何多播服务。它还可以用于禁用接口上的侦听器,即使多播服务经由访问策略允许它们。由于在示例性实施例中租户的机构范围很广,所以在一些路由器内存在异常值的情况下,这可能提供对接收器的更细粒度的控制。
在示例性实施例中,对于多播服务存在两个不同的部署用例,即,点对多点SVR和多播代理。
对于点对多点SVR,SVR路径是指两个路由器之间的安全矢量路由,在示例性实施例中,该安全矢量路由对于单播服务而言为点对点安全矢量路由。但是通过多播服务,路由器会将源分组复制到其上具有接收器的所有其他路由器。因此,它被称为点对多点SVR。在图21中,数据中心在SSR路由器后面具有多播服务器,该多播服务器成为多播服务的源。分支(branch1和branch2)中的每个分支具有两个多播客户端,其中每个客户端都是接收器。考虑上文示例中所定义的多播地址为233.252.0.2的相同服务“mcast”。每个多播客户端将向多播组233.252.0.2的分支路由器发送IGMP加入消息。因此,每个分支路由器将为该组注册两个接收器。源自数据中心的源分组需要发送到两个分支。
在STEP环境中,包括PIM(协议独立多播)云中的任何STEP路由器在内的所有STEP路由器都可以获得有关多播服务的信息并且确定哪个或哪些路由器和路径用于分发源分组。具体地,每个参与路由器都会通告与路由器相关联的一个或多个任何多播源和/或一个或多个多播接收器,并且路由器可以基于所通告的信息来做出路由决定(诸如选择网络中的一个或多个最佳“会合点”路由器,例如,分发多播分组所需的最小树)。例如,与一个或多个多播接收器相关联的路由器(本文中被称为多播接收器路由器)将连同关于多播接收器的信息一起通告它是多播接收器路由器。然而,本文中所描述的类型的多播服务可以例如通过在数据中心上为这些分支路由器中的每个分支路由器设置服务路由在非STEP环境中支持。以下是图22所示的网络配置的示例服务路由配置:
通过上述配置,多播服务器向多播组233.252.0.2发送的任何分组都经由SVR路径向每个分支路由器转发。重要的是要理解本文中所提及的SVR路径是单播路径而非多播路径。在示例性实施例中,来自源的多播分组将作为单播分组发送到分支中的每个分支,从而使用网络地址转换(NAT)来变换每个路径的SVRIP地址和端口并且携载原始SVRIP地址和分组中元数据字段中的端口。在分支处,元数据用于查找多播服务并且将分组发送到与其相关联的所有接收器。应指出的是,在分支路由器接收到带有元数据的单播分组后,分支路由器可以在经变化的地址/端口号与元数据中的原始地址/端口号之间建立关联,以处置与多播服务相关联的未来分组,此后,源可以停止将后续分组中的元数据发送到该分支路由器,以便减少元数据所引起的开销。还应指出的是,在上文示例中,头端(源)路由器将分组复制到所有其他路由器,并且没有用于这种分组分发的多播树,并且随着添加更多分支路由器,头端复制可能变得过于复杂低效。因此,为了更有效地扩展,示例性实施例可以使多播流加入下游的现有多播树或具有可以复制到其他端点的复制端点。
对于多播代理,路由器可以通过加入现有多播树并且在单播与多播之间“代理”分组来递送多播服务。例如,再次参考具有地址为233.252.0.2的“mcast”服务的图22,数据中心可以将多播分组发送到中间的PIM网络中,其中PIM网络知道该多播组(例如,在示例性实施例中,需要PIM网络了解正在复制的实际多播服务IP地址,并且不支持多播地址变换)。这与上文所讨论的点对多点SVR环境的不同之处在于,数据中心路由器传输多播分组而非单播分组,并且不必将单播传输的分组复制到多个分支,即,源分组只有一个副本需要向PIM网络传输。因此,该方案比点对多点SVR方案更具可缩放性。
应指出的是,SSR支持点对点SVR路径的加密,因此可以在点对多点SVR方案中轻松提供加密。因为存在多个接收器,在多播代理方案中提供加密更加复杂,尽管例如公共加密密钥集可以分发到所有接收器,以使针对所有接收器,可以对源分组进行一次加密。
分支路由器的功能与启用多播侦听器的接口的点对多点部署的功能相同。它从允许多播侦听器的接口接收IGMP报告。本文中的主要区别在于分支路由器需要向PIM网络转发这些报告。为了实现这点,接口可以被配置为充当多播报告代理(例如,应允许在多播发送器策略列表中启用PIM代理的接口的租户)。这将导致分支路由器加入多播组233.252.0.2的PIM网络,并且将开始从数据中心接收多播分组。这些分组继而向多播接收器转发。
以下是将接口设置为多播代理的示例数据模型:
本文中,当接口被配置为用于多播报告代理时,它将转发从允许多播侦听器的任何其他网络接口接收的所有多播报告。
在示例性实施例中,在路由信息库的显示中列出IGMP加入,例如,如下:
STEP中的多播支持
在示例性实施例中,除了仅当针对所配置的多播地址接收到多播(例如,IGMP)加入时,才由路由器通告多播服务之外,多播服务主要像任何其他服务一样工作。
图10是示出了包括没有接收器的多播配置的拓扑结构的示意图。在该示例中,路由器R1是源。路由器R2和路由器R3两者均为潜在接收器。最初,路由器R2和路由器R3上没有接收器,因此路由器R2和路由器R3都不会通告多播服务。结果,路由器R1找不到该服务的服务路由,因此不会转发分组。在路由器R1处丢弃源分组。
STEP有助于动态发现特定服务的多播接收器。核中没有运行PIM或传统协议。与任何其他服务一样,接收器只是作为多播服务的一部分被发现。
图11是示出了图10的拓扑结构的示意图,但现在,其中路由器R2已经在其接口中的两个接口上接收到IGMP加入。路由器R2现在使用两个服务路由通告多播地址。由于存在从者两个接口接收IGMP加入的两个接口,所以存在两个服务路由。这类似于路由正在从另一路由协议接收或正在配置新服务路由。如果路由器R2接收到离开所有接收器的IGMP,则它停止通告该服务。由于R2通告多播服务,所以以下是路由器R2的示例STEP文档:
本文中,路由器R1经由STEP发现服务S1在路由器R2上可用,因此它将所有多播业务从源发送到路由器R2,该路由器R2继而向所有接收器转发分组。
区之间的服务交换
STEP路由器发布其中路由器文档作为成员的每个区的路由器文档。在路由器属于多于一个区的一部分的情况下,从一个区获知的路由和服务被聚合并发布到具有下一跳的另一区作为其自身(即,一个区中的路由器不会向另一区发布它已经获知的所有其他对等信息)。这样,一个区中的路由器将对另一区隐藏。由于所有路由器都无需获知网络中的所有其他路由器,所以这有助于更好地分段网络。
图12是示出了与图6相同的拓扑结构的示意图。在该示例中,存在3个区,具体地,包括路由器DC1、Br1和Br2的名为“东”的区;包括路由器DC2、Br3和Br4的名为“西”的区;以及包括路由器DC1和DC2的名为“中心”的区。因此,路由器DC1和DC2是两个区的一部分。
考虑服务S1由区东的路由器Br1发布,服务S2由区西的路由器Br3发布。分支Br1和Br2不会发现服务S2,并且分支Br3和BR4不会发现服务S1。然而,由于路由器DC1和DC2共享相同的区“中心”,所以Br3和Br4可以获知来自区“东”的服务,反之亦然。
DC1在“中心”区中发布的STEP文档具有服务S1,但具有本地下一跳和代价。本文中的代价是向量到达分支Br1上的服务S1的总代价。针对服务S1,路由器DC2进行相似操作。
以下是这些路由器中每个路由器的示例性STEP文档:
路由器Br1
●经由配置获得服务S1和该S1的服务路由
●将服务S1发布到区东中
路由器Br3
●经由配置获得服务S2和该S2的服务路由●将服务S2发布到区西
路由器DC1
●经由区“中心”从DC2获知服务S2
●通过相关代价将所获知的服务S2发布到区“东”
●将服务S1发布到区“中心”
●对等拓扑结构中没有一个对等拓扑结构在区之间没有公开在区东下分布DC1文档。
在区中心下发布DC1文档。
路由器DC3
●经由区“中心”从DC2获知服务S1
●通过相关代价将所获知的服务S1发布到区“西”
●将服务S2发布到区“中心”
●对等拓扑结构中没有一个对等拓扑结构在区之间没有公开在区西下发布DC1文档。
在区中心下发布DC2文档。
由于路由器Br2和Br4的STEP文档没有通告任何服务,所以没有提供它们。
上文示例说明了如何在区之间获知并通告服务。相同服务S1可以经由DC2从区西获知。这只是意味着服务S1在区西也可用。对于区东的所有路由器,它只会显示为DC1上的另一下一跳。
图18是根据一个示例性实施例的用于发布聚合路由或服务的逻辑流程图。在框1902中,第一路由器接收至少一个其他路由器的服务和拓扑结构状态信息。在框1904中,第一路由器使用所接收的服务和拓扑结构状态信息来标识来自另一路由器的路由或服务,其中第二路由器可通过第一路由器访问该路由或服务。在框1906中,第一路由器计算通过第一路由器可用的路由或服务的聚合度量。在框1908中,第一路由器发布包括聚合度量和第一路由器的路由或服务作为所发布的路由或服务的下一跳。在某些示例性实施例中,第一路由器通过向中央储存库传输路线或服务来发布路线或服务,该中央储存库被配置为将路线或服务传递到第二路由器。如本文中所讨论的,第一路由器可以是第一区和第二区的成员,第二路由器可以是第二区的成员,第一路由器可以从第一区中的至少一个其他路由器接收服务和拓扑结构状态信息,并且第一路由器可以以对第二路由器隐藏来自第一区的与路由或服务有关的信息的方式向第二区的第二路由器发布路由或服务。
通过STEP进行环路预防
区之间的服务交换可能会导致一个区重新或者它向另一区通告的内容,因此可能导致路由环路。图13是示出了包括导致环路的区之间的业务交换的拓扑结构的示意图。在该示例中,路由器R2托管服务S1的服务路由SR1,并且将其通告给路由器R3。路由器R3继而将其通告给位于区西中的路由器R2。然后,路由器R3将其通告回到路由器R2。因此,当路由器R2从路由器R1接收到更新时,它会认为另一路径可用于经由路由器R1的服务S1,而实际上路由器R2已经接收到其自己的通告。沿从路由器R2到路由器R1的方向可能发生同样的情况。在这种情况下,路由器R2将从路由器R3接收更新。这会导致网络中出现环路。
为了预防环路,路由器源路径附加到通告到另一区中的每个路由。环路预防算法如下:
●将聚合路由和服务从一个区发布到另一区的每个路由器都将附加服务/路由聚合所在的区名称,作为下一跳的一部分。由于服务分发在整个网络中,所以区路径附加到下一跳。
●如果路由器在源路径中接收到带有区的服务前缀/路由并且路由器是该区的成员,则路由器忽略该前缀/下一跳。
这确保一个区所通告的相同服务前缀不会经由另一区返回到它自己。
图14是示出了图13的拓扑结构的但包括具有环路避免的区之间的服务交换的示意图。在该示例中,路由器R2在区“南”中具有服务S1的服务路由SR1。发生以下情况:
●R2在区中心中通告S1,附加从SR1获知的区南。源路径列表具有[南]
●R3在区西中通告S1,附加从SR1获知的区中心。源路径列表具有[南、中心]
●R1在区东中通告S1,附加从SR1获知的区西。源路径列表具有[南、中心、西]
●R2从区东获知服务S1,并且发现自己所属的区南已经处于所通告的服务路由中,因此忽略该区南。这避免了环路。
图19是根据一个示例性实施例的用于环路检测和预防的逻辑流程图。在框2002中,第一区中的给定路由器通过传输第一发布来向第二区发布第一路由或服务,该第一发布包括第一路由或服务以及该第一路由或服务的第一源路径,其中第一区名称包括在第一源路径中。在框2004中,给定路由器从另一区接收包括第二源路径的第二路由或服务的发布。在框2006中,给定路由器确定第二源是否包括第一区名称。在框2008中,当第二源路径不包括第一区名称时,给定路由器将第二路由或服务处理为在第一区中新获知的路由或服务。在框2010中,当第二源路径确实包括第一区名称时,给定路由器忽略第二路由或服务。
通过STEP进行基于源的路由
STEP支持使用基于源的路由来路由网络中的分组。在基于源的路由中,(诸如用于TCP或其他通信会话的)分组或相关分组组的源路由器基于其路由算法来确定一个或多个分组要采用的路径,该路径把经由STEP针对一个或多个其他路由器接收的服务或拓扑结构状态信息考虑在内。源路由器在分组中(或通常在会话的第一分组中)包括元数据字段,其中元数据字段指定要通过其携载一个或(多个)分组的路由器,例如,形式为路由器列表。沿着路径的每个路由器(本文中被称为“路点”路由器)检查元数据以标识路径上的下一预期路由器,并且例如通过将分组的目的地地址修改为下一预期路由器的地址来修改分组以向下一预期路由器转发分组。路点路由器通常还将分组的源地址修改为路点路由器本身的地址,并且可以修改分组的其他字段,例如,源端口、目的地端口和协议字段。会话的原始源地址和目的地地址信息也可以作为元分组携载在分组中,以使每个路点路由器可以将分组与特定会话相关联,并且沿着路径的最终路由器可以将分组中的源地址信息和目的地地址信息恢复到原始源地址信息和目的地地址信息。例如,这些操作在上文通过引用并入的相关美国专利申请No.14/833,571(现已授权的美国专利号9,762,485)中进行了描述,尽管应指出的是,通过基于源的路由,中间路点路由器无需选择下一路点路由器,而是从所接收的分组中的元数据中获得下一路点路由器。作为该过程的一部分,路点路由器可以从分组元数据中的路由器列表中移除自己,以便仅沿着预期路径的任何剩余路点路由器保留在路由器列表中,尽管这在技术上并非是必需的(并且在一些实施例中,路点路由器可以从路由器列表中排除,因为路点路由器凭借接收分组来隐含地包含在路径中)。每个路点路由器通常还建立前向(并且可选地,还有反向)关联信息以将一个或多个会话分组与指定路径相关联,以便可以沿着指定路径标识并转发与会话相关联的后续分组,这些分组通常不包括元数据字段。路径上的最后一个路点路由器向其预期目的地转发分组,通常还会从分组中移除元数据字段并且恢复分组的原始源地址和目的地地址。与会话相关联的后续分组基于前向(并且可选地,反向)关联信息来穿越路点路由器。在上文通过引用并入的相关美国专利申请No.14/833,571(现已授权的美国专利号为9,762,485)中对这种前向和反向关联信息以及基于前向和反向关联信息进行的分组转发的示例进行了描述。
分段路由非常强大以至于在各种异构网络之间进行交互。STEP在提供服务级别路由分离方面更进了一步(即,在每个服务的基础上,并非所有路由器都可以使用所有路径)。一个路由器的服务路径可用性视图可能与通告路由器的服务路径可用性视图不同。因此,在示例性实施例中,由源路由器选区的路由器列表必须被其他路由器遵守。
图15是相同的区内包括基于源的路由的拓扑结构的示意图。在该示例中,路由器R1确定服务S1要穿越的路径经由R2和R4。路由器R1将R2和R4添加到其元数据中的路由器列表中。路径从路由器R2经由路由器R3到路由器R4,但因为路由器R2检查分组中的元数据,它将遵守路由器列表并且向R4而非R3转发分组。应指出的是,因为路由器R1将分组发送到路由器R2,因此将路由器R2包含在路由器列表中可能被视为冗余,所以路由器R1所发送的路由器列表可以排除路由器R2。同样,因为路由器R2将分组发送到路由器R4,因此将路由器R4包括在路由器列表中可能被视为冗余,所以路由器R2所发送的路由器列表可以排除路由器R4。备选地,假设路由器永远不会在路由器列表中出现两次,路由器列表可以在分组从路由器传播到路由器时保持完整,其中每个路由器只需检查自己的路由器列表,然后标识下一路由器(如果有)来接收分组。
图15是演示了在示例性实施例中基于源的路由的工作方式的简单示例。在没有基于源的路由的情况下,R2做出独立路由决定,这可能会将分组发送到R3,而R3可能会将分组发送回到R1。因此,基于源的路由可以帮助防止环路预防。
在示例性实施例中,当对路线或服务的访问跨越多个区时,元数据中的路由器列表不会跨越区边界。图16是示出了包括跨多个区的基于源的路由的拓扑结构的示意图。在该示例中,路由器R1确定要在区东中针对服务S1穿越的路径经由路由器R2。因此,路由器R1向区东的路由器R2发送带有路由器列表(R2)的分组。路由器R2从元数据中弹出自己,确定经由区西内的路由器R4到路由器R3的路径,基于它所计算的到达区西中的最终目的地的路径来添加新路由器列表(R4、R3),然后向路由器R4转发带有新路由器列表的分组。路由器R4从元数据中移除自己,并且将路由器列表中的(R3)传递到路由器R3。路由器R3从路由器列表中移除自己,并且鉴于它是列表中的最后一个路由器,将分组发送到最终目的地。本文中,元数据中的路由器列表没有跨越区边界。每个路由器只会在相同的区内的路由器之中路由分组。当分组跨越区时,添加新路由器列表,以便在需要时继续基于源的路由。
应指出的是,元数据处置是向后兼容的。任何现有路由器都会忽略新元数据字段,并且将像现在一样运转。如果没有路由器列表元数据的分组出现(例如,来自未启用STEP的路由器),则在启用STEP的新路由器中接收的任何分组都会向下一可用目的地转发分组。
图20是根据一个示例性实施例的基于源的路由的逻辑流程图。在框2102中,源路由器确定路由或服务的路径,该路径包括用于接收与路由或服务相关联的分组的、从第一连续路由器开始并以目的地路由器结束的连续路由器的有序列表。在框2104中,源路由器朝第一连续路由器传输具有的分组,该元数据字段包括用于接收与该路由或服务相关联的分组路由器的有序列表中的至少一个剩余路由器的列表。在框2106中,从第一连续路由器开始,每个连续路由器确定该路由器是否是目的地路由器,并且如果路由器不是目的地路由器,则朝有序路由器列表中的下一连续路由器转发分组。源路由器可以被配置为将第一连续路由器包括在元数据字段中或者从元数据字段中排除第一连续路由器。每个连续路由器可以被配置为在向下一连续路由器转发分组之前从元数据字段中移除它自己。每个连续路由器可以被配置为通过将分组的目的地地址改变为下一连续路由器的地址并且可选地也将分组的源地址改变为路由器的地址来向下一连续分组转发分组。目的地路由器可以被配置为从分组中移除元数据字段并且向目的地转发分组。备选地,目的地路由器可以被配置为针对路由或服务确定到目的地的第二路径,该第二路径包括用于接收与路由或服务相关联的分组的连续路由器的第二有序列表;并且传输具有新元数据字段的分组,该新元数据字段包括用于接收与路由或服务相关联的分组的路由器的第二有序列表中的至少一个剩余路由器的列表。
应指出的是,基于源的路由可以在一个区而非在另一区中使用。例如,再次参考图16,路由器R1可以在区east内使用基于源的路由,但是路由器R2可以在区西内使用不同的路由方案(例如,使用传统路由,该传统路由包括STEP增强型路由;或使用诸如MPLS之类的其他路由结构),反之亦然。
通过STEP进行网络评估
STEP存储库具有来自网络中所有STEP路由器的STEP文档,从而通告其服务可用性。这意味着STEP存储库可以在任何给定时间提供整个网络的视图,而且还可以提供在一时间段内网络中发生的改变的历史。
在示例性实施例中,用户接口(例如,web客户端)将被增强以提供相对于包含在STEP储存库内的数据的服务级别和网络级别视图。由于STEP存储库是非持久性的,所以编排器上的STEP监测客户端将侦听网络中的所有STEP改变并且将它们存储在持久性时间序列数据库中。原始数据可能在所配置的时间量内进行存储和聚合。还存在接口用于查看STEP存储库的内容,例如,以调试路由问题。
以下是其中列出了所有STEP存储库以及连接到每个存储库的若干客户端的“show”命令的示例:
show STEP存储库
位置指示托管这些STEP存储库的位置。主存储库是存储所有记录的位置。所有其他存储库代理对主存储库的请求。客户端部分指示连接到每个存储库的若干个客户端。在主存储库上,若干个客户端优选地包括来自其他STEP存储库的代理请求。
以下是示出了区的数目和每个区的路由器的数目的“summary”命令的示例。
show STEP存储库总结
机构:t128
区:2
名称 路由器
区A 4
区B 2
客户端连接:6
可以独立查询每个路由器存储库以查看每个路由器所通告的当前状态。它显示了路由器其是成员的每个区以及路由器在区中的每个区中所做的通告。
Service S1
1.1.1.1/32nexthop{vector B}
先前命令从每个路由器的角度提供了网络概览。在排除网络中的问题的同时,网络中发生的最后一次改变会比整个网络视图更有用。
以下命令示出了最后一次改变。以下是示出了最后一次改变的示例。
用户接口(例如,web客户端)得到增强,以示出STEP存储库改变历史。STEP存储库具有每个区的所有网络拓扑结构改变的差异。因此,任何时间点的网络拓扑结构改变都可以在web上进行回放,以示出路由器改变、路径SLA改变、以及和网络中断。这将用作非常强大的工具来监测网络改变并且查明特定时间段内的中断。
图17是示出了网络的热图视图的示意性线框图。
聚合路由和服务
如上文所讨论的,在路由器是多于一个区的一部分的情况下,从第一区获知的路由或服务通过路由器聚合并发布到第二区,作为聚合路由或服务的下一跳(即,一个区中的路由器不会将它获知的所有其他对等信息发布到另一区)。这样,第一区的路由器对第二区隐藏,即,第二区的路由器知道该路由或服务可从通告该路由或服务的第一区的路由器获得,但不了解在第一区提供路线或服务的具体方式。这有助于更好地对网络进行分段,因为第二区中的路由器无需获知第一区中的所有路由器。
更进一步地,路由器可以发布具有聚合路径度量的聚合路由或服务,从而允许第二区中的路由器将聚合路由或服务作为实体进行评估,而无需知道第一区中的路由或服务的细节。
附加地或备选地,为了防止环路,第一路由器将第一区名称附加到所发布的路由或服务的源路径。然后,如果第一区中的路由器从另一区接收到路由或服务的发布并且第一区名称位于所发布的路由或服务的源路径中,则路由器会忽略所发布的路由或服务。
应指出的是,第二区的路由器可能会从第一区的多个路由器接收特定聚合路由或服务的发布,并且每个路由器可以具有不同的路径度量。因此,例如,如果特定路由或服务可通过特定区的两个路由器获得,则其他区的路由器可以选择对特定路由或服务具有最佳度量的路由器。
备选发布机制
上文参考发布订阅模型对示例性STEP实施例进行描述,其中STEP路由器向STEP服务器发布STEP文档并且订阅STEP服务器以从其他路由器接收服务和拓扑结构状态信息。然而,在备选实施例中,可以使用其他机制来实现STEP,以在路由器之中和之间选择性地分发服务和拓扑结构状态信息,以实现与上文所描述的功能基本相同的功能。
例如,STEP服务器可以被配置为实现“推送”机制,用于选择性地向路由器传输服务和拓扑结构状态信息。本文中,例如,不是STEP路由器订阅接收服务和拓扑结构状态信息,而是STEP路由器可以基于配置信息来分发从STEP路由器接收的服务和拓扑结构状态信息,而无需STEP路由器订阅接收服务和拓扑结构状态信息。
再例如,STEP路由器可以基于配置信息通过网格传送机制来交换服务和拓扑结构状态信息。本文中,例如,每个STEP路由器可以被配置为与一个或多个其他STEP路由器(包括多个区)交换服务和拓扑结构状态信息,然后STEP路由器可以建立对等的直接或间接通信连接来交换服务和拓扑结构状态信息。
再例如,STEP路由器可以通过对等传送机制来交换服务和拓扑结构状态信息,其中STEP路由器将服务和拓扑结构状态信息传递到其他STEP路由器,以使所有STEP路由器都获得需要来自其的服务和拓扑结构状态信息的其他STEP路由器的服务和拓扑结构状态信息。例如,如果路由器A与路由器B邻接而路由器B与路由器C邻接,则路由器C可以将自己的服务和拓扑结构状态信息以及可选的其他收集服务和拓扑结构状态信息传送到路由器B,该路由器B继而可以将自己的服务和拓扑结构状态信息以及从路由器C接收的服务和拓扑结构状态信息传送到路由器A。
因此,STEP通常涉及在STEP路由器之中和之间选择性地分发服务和拓扑结构状态信息,以使STEP路由器可以具有用于关于其做出路由决定的附加信息,并且可以使用多种分发机制来实现。
还应指出的是,上文所描述的应用中的许多应用可以通过其他发布机制在非STEP路由系统中得到支持。例如,非STEP路由器可以向相邻路由器通告聚合路由或服务,例如,作为链路状态交换的一部分。
其他
应指出的是,标题是为了方便起见而在上面使用,并不应被解释为以任何方式限制本发明。
本发明的各个实施例可以至少部分以任何传统计算机编程语言来实现。例如,一些实施例可以以过程编程语言(例如,“C”)或以面向对象的编程语言(例如,“C++”)来实现。本发明的其他实施例可以被实现为预先配置的独立硬件元件和/或预先编程的硬件元件(例如,专用集成电路、FPGA和数字信号处理器)或其他相关组件。
在一个备选实施例中,所公开的装置和方法(例如,参见上文所描述的各种流程图)可以实现为与计算机系统一起使用的计算机程序产品。这种实现可以包括固定在有形的非暂态介质上的一系列计算机指令,诸如计算机可读介质(例如,软盘、CD-ROM、ROM或固定盘)。该系列计算机指令可以体现本文中先前关于系统所描述的全部或部分功能。
本领域技术人员应领会的是,可以以若干个编程语言编写这样的计算机指令,以与许多计算机体系结构或操作系统一起使用。更进一步地,这样的指令可以存储在任何存储器设备中,诸如半导体、磁性存储器设备、光学存储器设备或其他存储器设备,并且可以使用任何通信技术(诸如光学传输技术、红外传输技术、微波传输技术或其他传输技术)传输。
在其他方式中,这种计算机程序产品可以作为带有附带印刷或电子文档(例如,收缩包装的软件)的可移除介质分发,(例如,在系统ROM或固定磁盘上)预先加载了计算机系统,或通过网络(例如,互联网或万维网)从服务器或电子公告板分发。事实上,一些实施例可以在软件即服务模型(“SAAS”)或云计算模型中实现。当然,本发明的一些实施例可以实现为软件(例如,计算机程序产品)和硬件的组合。本发明的其他实施例完全实现为硬件或完全实现为软件。
实现本文中先前所描述的全部或部分功能的计算机程序逻辑可以在单个处理器上在不同时间(例如,并发)执行或可以在多个处理器上在相同或不同时间执行并且可以在单个操作系统进程/线程或在不同操作系统下进程/线程下运行。因此,术语“计算机进程”一般是指计算机程序指令集的执行,而不管不同的计算机进程在相同或不同的处理器上执行,也不管不同的计算机进程是否在相同的操作系统进程/线程下或不同的操作系统进程/线程下运行。
重要的是,应指出的是,本发明的实施例可以采用传统组件,诸如传统计算机(例如,现成PC、大型机、微处理器)、传统可编程逻辑设备(例如,现成FPGA或PLD)、或传统硬件组件(例如,现成ASIC或分立硬件组件),该传统硬件组件当被编程或配置为执行本文中所描述的非传统方法时,产生非传统设备或系统。因此,本文中所描述的发明没有任何传统意义,因为即使当使用传统组件来实现实施例时,所得设备和系统(例如,STEP服务器控制器和STEP客户端控制器)也必然是非传统的,因为缺少特殊编程或配置,传统组件并不会固有执行所描述的非传统功能。
本文中所描述和要求保护的活动为技术领域中出现的问题提供了技术解决方案。这些解决方案作为一个整体并非得以很好的理解、并非常规或并非传统,并且在任何情况下都提供了改造并改进计算机和计算机路由系统的实际应用。
潜在权利要求
本发明的各个实施例的特征可以在于在本段落之后的段落中(并且在申请结束时提供的实际权利要求之前)列出的潜在权利要求。这些潜在权利要求构成了本申请的书面说明的一部分。因而,以下潜在权利要求的主题可以在涉及本申请或基于本申请而要求优先权的任何申请的后续程序中作为实际权利要求呈现。包括这样的潜在权利要求不应被解释为意指实际权利要求不涵盖潜在权利要求的主题。因此,在后续程序中没有呈现这些潜在权利要求的决定不应被解释为向公众捐赠标的物。
与服务和拓扑结构交换协议有关的可能所要求保护的潜在主题(以字母“P”开头,以避免与下文所提出的实际要求混淆)包括但不限于:
P1.一种用于实现服务和拓扑结构交换协议(STEP)的路由系统,该路由系统包括:
主STEP服务器,被配置为维护STEP存储库;以及
多个路由器,每个路由器包括与主STEP服务器通信的STEP客户端;其中
每个路由器的STEP客户端被配置为使用服务和拓扑结构交换协议向主STEP服务器传输STEP文档以存储在STEP存储库中,所述STEP文档包含通过路由器可用的至少一个路由或服务的服务和拓扑结构状态信息;
主STEP服务器被配置为基于路由器之间的配置关系使用服务和拓扑结构交换协议向每个路由器的STEP客户端传输来自STEP存储库的至少一个其他路由器的服务和拓扑结构状态信息;以及
每个路由器被配置为至少部分基于来自至少一个其他路由器的服务和拓扑结构状态信息来做出路由决定。
P2.根据权利要求P1所述的系统,其中STEP文档包括JSON补丁文档。
P3.根据权利要求P1所述的系统,其中STEP存储库中的信息被组织为路径树数据库,并且其中每个STEP文档包括路径定义,该路径定义标识路由器用于在路径树数据库中存储路由器的服务和拓扑结构状态信息。
P4.根据权利要求P1所述的系统,还包括至少一个辅助STEP服务器,所述至少一个辅助STEP服务器被配置为将STEP请求代理到主STEP服务器。
P5.根据权利要求P1所述的系统,其中至少一个路由器是多个区的成员,并且传输单独STEP文档,所述单独STEP文档包含其作为成员的每个区的服务和拓扑结构状态信息。
P6.根据权利要求P1所述的系统,其中至少一个路由器是多个区的成员,并且接收其作为成员的每个区中的路由器的服务和拓扑结构状态信息。
P7.根据权利要求P1所述的系统,其中由路由器传输的服务和拓扑结构状态信息还包括给定服务的服务水平协议和给定服务是否在服务水平协议内的指示。
P8.根据权利要求P1所述的系统,其中至少一个路由器是区的成员,并且传输服务和拓扑结构状态信息,该服务和拓扑结构状态信息包括从区外获知的路由或服务。
P9.根据权利要求P1所述的系统,其中至少一个路由器传输服务和拓扑结构状态信息,该服务和拓扑结构状态信息包括用于路由或服务的至少一个路径度量。
P10.根据权利要求P1所述的系统,其中主STEP服务器与路由器分开。
P11.根据权利要求P1所述的系统,其中主STEP服务器位于路由器中的一个路由器中。
P12.一种用于实现服务和拓扑结构交换协议(STEP)的服务器,该服务器包括:
数据存储库;以及
服务和拓扑结构交换协议(STEP)服务器控制器,与多个路由器通信,该STEP服务器控制器被配置为:
在数据存储库中维护STEP存储库;
使用服务和拓扑结构交换协议从多个路由器中的每个路由器接收STEP文档以存储在STEP存储库中,该STEP文档包含服务和拓扑结构状态信息;以及
基于路由器之间的配置关系使用服务和拓扑结构交换协议向每个路由器传输来自STEP存储库的至少一个其他路由器的服务和拓扑结构状态信息,所传输的服务和拓扑结构状态信息使得每个路由器能够至少部分基于来自至少一个其他路由器的服务和拓扑结构状态信息来做出路由决定。
P13.根据权利要求P12所述的服务器,其中所述STEP文档包括JSON补丁文档。
P14.根据权利要求P12所述的服务器,其中STEP存储库中的信息被组织为路径树数据库,并且其中每个STEP文档包括路径定义,该路径定义标识路由器用于在路径树数据库中存储路由器的服务和拓扑结构状态信息。
P15.根据权利要求P12所述的服务器,其中至少一个路由器是多个区的成员,并且传输单独STEP文档,所述单独STEP文档包含其作为成员的每个区的服务和拓扑结构状态信息。
P16.根据权利要求P12所述的服务器,其中至少一个路由器是多个区的成员,并且接收其作为成员的每个区中的路由器的服务和拓扑结构状态信息。
P17.根据权利要求P12所述的服务器,其中服务器与路由器分开。
P18.根据权利要求P12所述的服务器,其中服务器位于路由器中的一个路由器中。
P19.一种用于实现服务和拓扑结构交换协议(STEP)的路由器,该路由器包括:
数据存储库;
服务和拓扑结构交换协议(STEP)客户端控制器,与STEP服务器通信,该STEP客户端控制器被配置为:
使用服务和拓扑结构交换协议向STEP服务器传输通过路由器可用的至少一个路由或服务的服务和拓扑结构状态信息;
基于路由器之间的配置关系使用服务和拓扑结构交换协议来从STEP服务器接收至少一个其他路由器的服务和拓扑结构状态信息;以及
将至少一个其他路由器的所接收的服务和拓扑结构状态信息存储在数据存储库中;以及
路由引擎,被配置为至少部分基于至少一个其他路由器的服务和拓扑结构状态信息来做出路由决定。
P20.根据权利要求P19所述的路由器,其中STEP文档包括JSON补丁文档。
P21.根据权利要求P19所述的路由器,其中STEP存储库中的信息被组织为路径树数据库,并且其中每个STEP文档包括路径定义,该路径定义标识路由器用于在路径树数据库中存储路由器的服务和拓扑结构状态信息。
P22.根据权利要求P19所述的路由器,其中路由器是多个区的成员,并且传输单独STEP文档,所述单独STEP文档包含其作为成员的每个区的服务和拓扑结构状态信息。
P23.根据权利要求P19所述的路由器,其中路由器是多个区的成员,并且接收其作为成员的每个区中的路由器的服务和拓扑结构状态信息。
P24.根据权利要求P19所述的路由器,其中由路由器传输的服务和拓扑结构状态信息还包括给定服务的服务水平协议和给定服务是否在服务水平协议内的指示。
P25.根据权利要求P19所述的路由器,其中路由器是区的成员,并且传输服务和拓扑结构状态信息,该服务和拓扑结构状态信息包括从区外获知的路由或服务。
P26.根据权利要求P19所述的路由器,其中由路由器传输的服务和拓扑结构状态信息包括用于路由或服务的至少一个路径度量。
P27.根据权利要求P19所述的路由器,其中路由器还包括STEP服务器,该STEP服务器被配置为维护STEP存储库。
P28.根据权利要求P1所述的系统,其中给定STEP文档仅包括服务和拓扑结构状态信息改变。
P29.根据权利要求P1所述的系统,其中由主STEP服务器向给定路由器的STEP客户端发送的给定服务和拓扑结构状态信息仅包括服务和拓扑结构状态信息改变。
P30.根据权利要求P12所述的服务器,其中给定STEP文档仅包括服务和拓扑结构状态信息改变。
P31.根据权利要求P12所述的服务器,其中由主STEP服务器向给定路由器的STEP客户端传输的给定服务和拓扑结构状态信息仅包括服务和拓扑结构状态信息改变。
P32.根据权利要求P19所述的路由器,其中给定STEP文档仅包括服务和拓扑结构状态信息改变。
P33.根据权利要求P19所述的路由器,其中由主STEP服务器向给定路由器的STEP客户端传输的给定服务和拓扑结构状态信息仅包括服务和拓扑结构状态信息改变。
可能所要求保护的与基于细分的度量有关的潜在主题(以字母“P”开头,以避免与下文所呈现的实际要求混淆)包括但不限于:
P1.一种路由系统,包括:
第一路由器;以及
第二路由器,其中第一路由器被配置为接收至少一个其他路由器的服务和拓扑结构状态信息;使用所接收的服务和拓扑结构状态信息来标识来自另一路由器的路由或服务,第二路由器可以通过第一路由器访问该路由或服务;计算通过第一路由器可用的路由或服务的聚合度量;以及将路由或服务发布到包含聚合度量的第二路由器并且将第一路由器作为所发布的路由或服务的下一跳。
P2.根据权利要求P1所述的系统,其中第一路由器通过向中央储存库传输路线或服务来发布路线或服务,该中央储存库被配置为将路线或服务传送到第二路由器。
P3.根据权利要求P1所述的系统,其中
第一路由器是第一区和第二区的成员;
第二路由器是第二区的成员;
第一路由器从第一区中的至少一个其他路由器接收服务和拓扑结构状态信息;以及
第一路由器以对第二路由器隐藏来自第一区的与该路由或服务有关的信息的方式向第二区中的第二路由器发布该路由或服务。
P4.根据权利要求P3所述的系统,其中路线或服务位于第一区。
P5.根据权利要求P3所述的系统,其中该路线或服务位于第三区。
P6.根据权利要求P3所述的系统,其中第一区与第一区名称相关联,并且其中第一路由器被配置为向第二区中的第二路由器发布路由或服务,该第二区包括用于所发布的路由或服务的源路径,其中第一区名称包括在源路径中。
P7.根据权利要求P6所述的系统,其中第一路由器被配置为从另一区接收包括源路径的所发布的路由或服务并且将第一区名称附加到源路径。
P8.一种路由器,包括:
数据存储库;以及
服务和拓扑结构交换协议(STEP)客户端控制器,被配置为:
接收至少一个其他路由器的服务和拓扑结构状态信息并且将所接收的服务和拓扑结构状态信息存储在数据存储库中;
使用所接收的服务和拓扑结构状态信息标识来自另一路由器的路由或服务,第二路由器可以通过第一路由器访问该路由或服务;
计算通过路由器可用的路由或服务的聚合度量;以及
将路由或服务发布到包含聚合度量的第二路由器并且将路由器作为所发布的路由或服务的下一跳。
P9.根据权利要求P8所述的路由器,其中STEP客户端控制器被配置为通过向中央存储库传输路由或服务来发布所述路由或服务,该中央存储库被配置为将路由或服务传达到第二路由器。
P10.根据权利要求P8所述的路由器,其中
路由器是第一区和第二区的成员;
第二路由器是第二区的成员;
路由器从第一区中的至少一个其他路由器接收服务和拓扑结构状态信息;以及
路由器以对第二路由器隐藏来自第一区的与该路由或服务有关的信息的方式向第二区中的第二路由器发布该路由或服务。
P11.根据权利要求P10所述的路由器,其中该路由或服务位于第一区。
P12.根据权利要求P10所述的路由器,其中该路由或服务位于第三区。
P13.根据权利要求P10所述的路由器,其中第一区与第一区名称相关联,并且其中路由器被配置为向第二区中的第二路由器发布路由或服务,该第二区包括用于所发布的路由或服务的源路径,其中第一区名称包括源路径中。
P14.根据权利要求P13所述的路由器,其中路由器被配置为从另一区接收包括源路径的所发布的路由或服务并且将第一区名称附加到源路径。
P15.一种用于检测和避免组织成多个区的多个路由器之间环路的路由系统,该路由系统包括:
多个路由器,组织成多个区,该多个区包括至少第一区和第二区,每个区与不同区名称相关联,多个路由器包括作为第一区和第二区的成员的第一路由器,该第一路由器被配置为:
通过传输第一发布来将第一路线或服务从第一区发布到第二区,该第一发布包括第一路线或服务以及该第一路线或服务的第一源路径,其中第一区名称包括在第一源路径中;
从另一区接收第二路线或服务的第二发布,该第一发布包含第二源路径;
确定第二源路径是否包含第一区名称;
当第二源路径不包括第一区名称时,将第二路由或服务处理为第一区中新获知的路由或服务;以及
当第二源路径确实包括第一区名称时,忽略第二路由或服务。
P16.根据权利要求P15所述的系统,其中第一路由器所发布的第一路由或服务还将第一路由器标识为第一区中的第一路由或服务的下一跳。
P17.根据权利要求P15所述的系统,其中将第一路由或服务从第一区发布到第二区包括:
从包括第一源路径的另一区接收第一发布;以及
将第一区名称附加到第一发布中的第一源路径。
P18.根据权利要求P15所述的系统,其中第一路由器向中央存储库传输第一发布,该中央存储库被配置为将路由或服务传送到第二区中的至少一个路由器并且从中央存储库接收第二发布。
P19.一种用于检测和避免组织成多个区的多个路由器之间的环路的路由器,该多个区至少包括第一区和第二区,每个区与不同区名称相关联,路由器是第一区和第二区的成员,该路由器包括:
控制器,被配置为:
通过传输第一发布将第一路由或服务从第一区发布到第二区,该第一发布包括第一路线或服务和用于该第一路线或服务的第一源路径,其中第一区名称包括在第一源路径中;
从另一区接收第二路线或服务的第二发布,该第二发布包括第二源路径;
确定第二源路径是否包括第一区名称;
当第二源路径不包括第一区名称时,将第二路由或服务处理为第一区中新获知的路由或服务;以及
当第二源路径确实包括第一区名称时,忽略第二路由或服务。
P20.根据权利要求P19所述的路由器,其中控制器所发布的第一路由或服务还将第一路由器标识为第一区中的第一路由或服务的下一跳。
P21.根据权利要求P19所述的路由器,其中将第一路由或服务从第一区发布到第二区包括:
从另一区接收第一发布,该第一发布包括第一源路径;以及
将第一区名称附加到第一发布中的第一源路径。
P22.根据权利要求P19所述的路由器,其中第一路由器向中央存储库传输第一发布,该中央存储库被配置为将路由或服务传送到第二区中的至少一个路由器并且从中央存储库接收第二发布。
可能所要求保护的与多播信息的分发有关的潜在主题(以字母“P”开头,以避免与下文所呈现的实际要求混淆)包括但不限于:
P1.一种用于为多播服务分发多播路由信息的路由系统,该路由系统包括:
多个路由器,包括多播源路由器和多个多播接收器路由器,该多个路由器提供多播服务,其中路由器被配置为交换与多播服务相关联的多播信息,该多播信息包括多播源和多播接收器的标识。
P2.根据权利要求P1所述的系统,其中每个路由器被配置为使用服务和拓扑结构交换协议(STEP)向STEP存储库传输路由器的多播信息并且从STEP存储库接收其他路由器的多播信息。
P3.根据权利要求P2所述的系统,其中中央储存库由主STEP服务器管理。
P4.根据权利要求P3所述的系统,其中主STEP服务器位于路由器中的一个路由器中。
P5.根据权利要求P3所述的系统,其中主STEP服务器位于与路由器分离的设备中。
P6.根据权利要求P2所述的系统,其中多播信息在STEP文档中传输到STEP服务器。
P7.根据权利要求P6所述的系统,其中STEP文档是JSON文档。
P8.根据权利要求P6所述的系统,其中STEP存储库中的信息被组织为路径树数据库,并且其中每个STEP文档包括路径定义,该路径定义标识路由器,用于在路径树数据库中存储路由器的多播信息。
P9.根据权利要求P1所述的系统,其中
多播源遵守基于租户的发送器访问策略,该基于租户的发送器访问策略指定至少一个源租户,该至少一个源租户被允许向多播服务发送分组;以及
多播接收器遵守基于租户的接收器访问策略,该基于租户的接收器访问策略指定至少一个接收器租户,该至少一个接收器租户被允许从多播服务接收分组。
P10.根据权利要求P1所述的系统,其中路由器被配置为基于所交换的多播信息来确定用于分发与多播服务相关联的分组的最佳会合点路由器。
P11.一种用于为多播服务分发多播路由信息的路由器,该路由器包括:
数据存储库,存储与多播服务相关联的多播信息,该多播信息包括多播源和多播接收器的标识;以及
控制器,被配置为交换与多播服务相关联的多播信息,该多播信息包括多播源和多播接收器的标识。
P12.根据权利要求P11所述的系统,其中每个路由器被配置为使用服务和拓扑结构交换协议(STEP)向STEP存储库传输路由器的多播信息并且从STEP存储库接收其他路由器的多播信息。
P13.根据权利要求P12所述的系统,其中中央储存库由主STEP服务器管理。
P14.根据权利要求P13所述的系统,其中主STEP服务器位于路由器中的一个路由器中。
P15.根据权利要求P13所述的系统,其中主STEP服务器位于与路由器分开的设备中。
P16.根据权利要求P12所述的系统,其中多播信息在STEP文档中传输到STEP服务器。
P17.根据权利要求P16所述的系统,其中STEP文档是JSON文档。
P18.根据权利要求P16所述的系统,其中STEP存储库中的信息被组织为路径树数据库,并且其中每个STEP文档包括路径定义,该路径定义标识路由器,用于在路径树数据库中存储路由器的多播信息。
P19.根据权利要求P11所述的系统,其中
多播源遵守基于租户的发送器访问策略,该基于租户的发送器访问策略指定至少一个源租户,该至少一个源租户被允许向多播服务发送分组;以及
多播接收器遵守基于租户的接收器访问策略,该基于租户的接收器访问策略指定至少一个接收器租户,该至少一个接收器租户被允许从多播服务接收分组。
P20.根据权利要求P11所述的系统,其中路由器被配置为基于所交换的多播信息来确定用于分发与多播服务相关联的分组的最佳会合点路由器。
可能所要求保护的与多播源和接收器访问控制有关的潜在主题(以字母“P”开头,以避免与下文所呈现的实际权利要求混淆)包括但不限于:
P1.一种用于提供多播访问控制的路由系统,该路由系统包括:
多个路由器,包括多播源路由器和多个多播接收器路由器,该多个路由器提供多播服务,其中路由器被配置为实施多播服务的多播访问控制策略,这些多播访问控制策略包括接收器访问策略,该接收器访问策略控制允许哪些多播接收器从多播服务接收分组;以及发送器访问策略,该发送器访问策略控制允许哪些多播源向多播服务发送分组以分发给多播接收器。
P2.根据权利要求P1所述的系统,其中发送器访问策略包括基于租户的发送器访问策略,该基于租户的发送器访问策略指定至少一个源租户,该至少一个源租户被允许向多播服务发送分组。
P3.根据权利要求P1所述的系统,其中接收器访问策略包括基于租户的接收器访问策略,该基于租户的接收器访问策略指定至少一个接收器租户,该至少一个接收器租户被允许从多播服务接收分组。
P4.根据权利要求P3所述的系统,其中路由器仅接受来自与至少一个接收器租户相关联的接口的多播加入。
P5.根据权利要求P3所述的系统,其中路由器仅接受来自与至少一个接收器租户相关联的接口的多播加入,除非基于租户的接收器访问策略被一个或多个接口上的配置覆盖。
P6.根据权利要求P5所述的系统,其中至少一个路由器被配置为接受来自并非指定接收器租户的接口的多播加入。
P7.根据权利要求P5所述的系统,其中至少一个路由器被配置为拒绝来自作为指定接收器租户的接口的多播加入。
P8.根据权利要求P3所述的系统,其中路由器被配置为在与至少一个接收器租户相关联的接口上传输成员资格查询消息。
P9.根据权利要求P3所述的系统,其中路由器被配置为在具有不能访问多播服务的租户的任何接口上丢弃成员资格报告消息。
P10.根据权利要求P1所述的系统,其中路由器被配置为交换与多播服务相关联的多播信息,该多播信息包括多播源和多播接收器的标识。
P11.根据权利要求P10所述的系统,其中每个路由器被配置为向中央储存库传输路由器的多播信息并且从中央储存库接收其他路由器的多播信息。
P12.根据权利要求P10所述的系统,其中至少源路由器被配置为基于所交换的多播信息来确定用于分发与多播服务相关联的分组的最佳会合点路由器。
P13.根据权利要求P1所述的系统,其中多播源路由器被配置为向与至少一个多播接收器相关联的每个多播接收器路由器传输用于多播服务的单播分组。
P14.根据权利要求P1所述的系统,其中多播源路由器被配置为加入多播树并且向多个多播接收器路由器传输多播分组。
P15.一种用于提供多播访问控制的路由器,该路由器包括:
数据存储库,存储用于多播服务的多播访问控制策略,这些多播访问控制策略包括接收器访问策略,该接收器访问策略控制允许哪些多播接收器从多播服务接收分组;以及发送器访问策略,该发送器访问策略控制允许哪些多播源向多播服务发送分组以供分发到多播接收器;以及
控制器,被配置为对多播服务实施多播访问控制策略。
P16.根据权利要求P15所述的路由器,其中发送器访问策略包括基于租户的发送器访问策略,该基于租户的发送器访问策略指定至少一个源租户,该至少一个源租户被允许向多播服务发送分组。
P17.根据权利要求P15所述的路由器,其中接收器访问策略包括基于租户的接收器访问策略,该基于租户的接收器访问策略指定至少一个接收器租户,该至少一个接收器租户被允许从多播服务接收分组。
P18.根据权利要求P17所述的路由器,其中控制器被配置为仅接受来自与至少一个接收器租户相关联的接口的多播加入。
P19.根据权利要求P17所述的路由器,其中控制器被配置为仅接受来自与至少一个接收器租户相关联的接口的多播加入,除非基于租户的接收器访问策略被一个或多个接口上的配置覆盖。
P20.根据权利要求P19所述的路由器,其中控制器被配置为接受来自并非指定接收器租户的接口的多播加入。
P21.根据权利要求P19所述的路由器,其中控制器被配置为拒绝来自作为指定接收器租户的接口的多播加入。
P22.根据权利要求P17所述的路由器,其中控制器被配置为在与至少一个接收器租户相关联的接口上传输成员资格查询消息。
P23.根据权利要求P17所述的路由器,其中控制器被配置为在具有不能访问多播服务的租户的任何接口上丢弃成员资格报告消息。
P24.根据权利要求P15所述的路由器,其中控制器被配置为与其他路由器交换与多播服务相关联的多播信息,该多播信息包括与路由器相关联的任何多播源和任何多播接收器的标识。
P25.根据权利要求P24所述的路由器,其中控制器被配置为向中央储存库传输路由器的多播信息并且从中央储存库接收其他路由器的多播信息。
P26.根据权利要求P24所述的路由器,其中控制器被配置为基于所交换的多播信息来确定用于分发与多播服务相关联的分组的最佳会合点路由器。
P27.根据权利要求P15所述的路由器,其中控制器被配置为向与至少一个多播接收器相关联的每个多播接收器路由器传输用于多播服务的单播分组。
P28.根据权利要求P15所述的路由器,其中控制器被配置为加入多播树并且向多个多播接收器路由器传输多播分组。
可能所要求保护的与分发服务和拓扑结构状态信息改变的中央机构有关的潜在主题(以字母“P”开头,以避免与下文所呈现的实际权利要求混淆)可以包括但不限于:
P1.一种用于实现服务和拓扑结构交换协议(STEP)的路由系统,该路由系统包括:
主STEP服务器,被配置为维护STEP存储库;以及
多个路由器,每个路由器包括与主STEP服务器通信的STEP客户端;其中
每个路由器的STEP客户端被配置为使用服务和拓扑结构交换协议向主STEP服务器传输通过路由器可用的至少一个路由或服务的服务和拓扑结构状态信息以供存储在STEP存储库中;以及
主STEP服务器被配置为至少部分基于从路由器接收的服务和拓扑结构状态信息来为每个路由器确定STEP存储库是否包括路由器的任何服务和拓扑结构状态信息改变,并且使用服务和拓扑结构交换协议仅向其中存在服务和拓扑结构状态信息改变的每个路由器的STEP客户端传输服务和拓扑结构状态信息改变。
P2.根据权利要求P1所述的系统,其中主STEP服务器所传输的服务和拓扑结构状态信息改变包括JSON补丁文档。
P3.根据权利要求P1所述的系统,其中STEP存储库中的信息被组织为路径树数据库,并且其中从路由器接收的服务和拓扑结构状态信息包括路径定义,该路径定义标识路由器,用于在路径树数据库中存储路由器的服务和拓扑结构状态信息。
P4.根据权利要求P1所述的系统,还包括至少一个辅助STEP服务器,该至少一个辅助STEP服务器被配置为将STEP请求代理到主STEP服务器。
P5.根据权利要求P1所述的系统,其中至少一个路由器是多个区的成员,并且传输其作为成员的每个区的单独服务和拓扑结构状态信息。
P6.根据权利要求P1所述的系统,其中至少一个路由器是多个区的成员,并且从主STEP服务器接收其作为成员的每个区的服务和拓扑结构状态信息改变。
P7.根据权利要求P1所述的系统,其中由路由器传输的服务和拓扑结构状态信息还包括给定服务的服务水平协议和给定服务是否在服务水平协议内的指示。
P8.根据权利要求P1所述的系统,其中至少一个路由器是区的成员,并且传输服务和拓扑结构状态信息,该服务和拓扑结构状态信息包括从区外获知的路由或服务。
P9.根据权利要求P1所述的系统,其中至少一个路由器传输服务和拓扑结构状态信息,该服务和拓扑结构状态信息包括用于路由或服务的至少一个路径度量。
P10.根据权利要求P1所述的系统,其中主STEP服务器与路由器分开。
P11.根据权利要求P1所述的系统,其中主STEP服务器位于路由器中的一个路由器中。
P12.一种用于实现服务和拓扑结构交换协议(STEP)的服务器,该路由器包括:
数据存储库;以及
STEP服务器控制器,与多个路由器通信,每个路由器包括STEP客户端,该STEP服务器控制器被配置为:
在数据存储库中维护STEP存储库;
使用服务和拓扑结构交换协议从每个路由器的STEP客户端接收通过路由器可用的至少一个路由或服务的服务和拓扑结构状态信息;
在STEP存储库中存储所接收的服务和拓扑结构状态信息;
至少部分基于从路由器接收的服务和拓扑结构状态信息来确定每个路由器的STEP存储库是否包括该路由器的任何服务和拓扑结构状态信息改变;以及
并且使用服务和拓扑结构交换协议仅向其中存在服务和拓扑结构状态信息改变的每个路由器的STEP客户端传输服务和拓扑结构状态信息改变。
P13.根据权利要求P12所述的服务器,其中主STEP服务器所传输的服务和拓扑结构状态信息改变包括JSON补丁文档。
P14.根据权利要求P12所述的服务器,其中STEP存储库中的信息被组织为路径树数据库,并且其中从路由器接收的服务和拓扑结构状态信息包括路径定义,该路径定义标识路由器,用于在路径树数据库中存储路由器的服务和拓扑结构状态信息。
P15.根据权利要求P12所述的服务器,其中至少一个路由器是多个区的成员,并且传输其作为成员的每个区的单独服务和拓扑结构状态信息。
P16.根据权利要求P12所述的服务器,其中至少一个路由器是多个区的成员,并且从主STEP服务器接收其作为成员的每个区的服务和拓扑结构状态信息改变。
P17.根据权利要求P12所述的服务器,其中该服务器与路由器分开。
P18.根据权利要求P12所述的服务器,其中该服务器位于路由器中的一个路由器中。
可能所要求保护的与跨多个地区的基于源的路由有关的潜在主题(以字母“P”开头,以避免与下文所呈现的实际权利要求混淆)包括但不限于:
P1.一种用于路由路由或服务的分组的路由系统,该路由系统包括:
多个路由器,包括源路由器,其中
该源路由器被配置为基于路由器之间的配置关系来使用服务和拓扑结构交换协议从STEP存储库接收至少一个其他路由器的服务和拓扑结构状态信息;基于服务和拓扑结构状态信息来确定到路由或服务的目的地的第一路径,该第一路径包括用于接收与路由或服务相关联的分组的从第一连续路由器开始并以目的地路由器结束的连续路由器的有序列表;以及朝第一连续路由器传输具有第一元数据的分组,以接收与路由或服务相关联的分组,其中第一元数据包括有序路由器列表中的至少一个剩余路由器的列表;以及
从第一连续路由器开始,每个连续路由器被配置为接收分组并且基于与所接收的分组相关联的元数据来确定路由器是否是目的地路由器;以及
当路由器不是目的地路由器时,朝有序路由器列表中的下一连续路由器转发分组。
P2.根据权利要求P1所述的路由系统,其中源路由器被配置为将第一连续路由器包括在第一元数据中。
P3.根据权利要求P1所述的路由系统,其中源路由器被配置为从第一元数据中排除第一连续路由器。
P4.根据权利要求P1所述的路由系统,其中每个连续路由器被配置为在向下一连续路由器之前转发分组从第一元数据中去除其自身。
P5.根据权利要求P1所述的路由系统,其中每个连续路由器被配置为通过将分组的目的地地址改变为下一连续路由器的地址来向下一连续路由器转发分组。
P6.根据权利要求P5所述的路由系统,其中每个连续路由器被配置为通过将分组的源地址进一步改变为转发路由器的地址来向下一连续路由器转发分组。
P7.根据权利要求P1所述的路由系统,其中目的地路由器被配置为向目的地转发没有元数据的分组。
P8.根据权利要求P1所述的路由系统,其中源路由器被配置为将第二元数据包括在分组中,该第二元数据包括会话标识信息。
P9.根据权利要求P1所述的路由系统,其中目的地路由器被配置为确定到路由或服务的目的地的第二路径,该第二路径包括用于接收与路由或服务相关联的分组的连续路由器的第二有序列表;以及传输具有第二元数据的分组,该第二元数据包括用于接收与该路由或服务相关联的分组的路由器的第二有序列表中的至少一个剩余路由器的列表。
P10.一种路由路由或服务的分组的路由器,该路由器包括:
数据存储库;以及
控制器,包括源路由器逻辑,该源路由器逻辑被配置为:
基于路由器之间的配置关系来使用服务和拓扑结构交换协议从STEP存储库接收至少一个其他路由器的服务和拓扑结构状态信息;
基于服务和拓扑结构状态信息来确定到路由或服务的目的地的第一路径,该第一路径包括用于接收与路由或服务相关联的分组的、从第一连续路由器开始并以目的地路由器结束的连续路由器的有序列表;以及
朝第一连续路由器传输具有第一元数据的分组,该第一元数据包括用于接收与路由或服务相关联的分组的路由器的有序列表中的至少一个剩余路由器的列表。
P11.根据权利要求P10所述的路由器,其中源路由器逻辑被配置为将第一连续路由器包括在第一元数据中。
P12.根据权利要求P10所述的路由器,其中源路由器逻辑被配置为从第一元数据中排除第一连续路由器。
P13.根据权利要求P10所述的路由器,其中源路由器逻辑被配置为将第二元数据包括在分组中,该第二元数据包括会话标识信息。
P14.根据权利要求P10所述的路由器,其中控制器还包括连续路由器逻辑,该连续路由器逻辑被配置为:
接收分组并且基于根据与所接收的分组相关联的元数据来确定路由器是否为目的地路由器;以及
当路由器不是目的地路由器时,朝有序路由器列表中的下一连续路由器转发分组。
P15.根据权利要求P14所述的路由器,其中连续路由器逻辑被配置为在向下一连续路由器转发分组之前从第一元数据中移除其自身。
P16.根据权利要求P14所述的路由器,其中连续路由器逻辑被配置为通过将分组的目的地地址改变为下一连续路由器的地址来向下一连续路由器转发分组。
P17.根据权利要求P16所述的路由器,其中连续路由器逻辑被配置为通过将分组的源地址进一步改变为转发路由器的地址来向下一连续路由器转发分组。
P18.根据权利要求P14所述的路由系统,其中当路由器是目的地路由器时,连续路由器逻辑被配置为向目的地转发没有元数据的分组。
P19.根据权利要求P14所述的路由系统,其中当该路由器是目的地路由器时,所述连续路由器逻辑被配置为确定到路由或服务的目的地的第二路径,该第二路径包括用于接收与路由或服务相关联的分组的连续路由器的第二有序列表;以及传输具有第二元数据的分组,以,接收与该路由或服务相关联的分组,该第二元数据包括第二有序路由器列表中的至少一个剩余路由器的列表。
结论
尽管上文的讨论公开了本发明的各种示例性实施例,但显而易见的是,在没有背离本发明的真实范围的情况下,本领域技术人员可以进行各种修改以实现本发明的优点中的一些优点。对“本发明”的任何引用旨在是指本发明的示例性实施例并且不应被解释为是指本发明的所有实施例,除非上下文另有要求。所描述的实施例在所有方面上都应被视为说明性的而非限制性的。

Claims (20)

1.一种用于路由针对服务的分组的路由系统,所述路由系统包括:
多个路由器,其中所述多个路由器的源路由器被配置为:
针对所述多个路由器中的每个其他路由器,接收状态信息,所述状态信息包括指示通过所述其他路由器的服务的可用性的服务可用性信息和指示用于经由所述一个或多个其他路由器到达所述服务的网络拓扑结构的服务拓扑结构信息;
基于所述状态信息来确定针对所述服务的路径,所述路径包括用以接收与所述服务相关联的分组的所述多个路由器的一个或多个连续路由器;
确定分组与针对所述路径的所述服务相关联,其中所述分组包括通信会话的初始分组,并且其中所述初始分组包括报头,所述报头用于将所述初始分组路由到在针对所述服务的所述报头内指定的目的地地址;
生成包括所述初始分组的所述报头的修改分组,其中所述源路由器被配置为构造所述修改分组以包括被插入在所述报头之后并且在所述初始分组的末端之前的元数据,并且其中所述修改分组的所述元数据包括:
(i)指定控制所述修改分组和所述通信会话的后续分组的转发的信息的元数据的第一部分,其中所述信息指定沿着到所述服务的所述路径的所述一个或多个连续路由器的列表,以及
(ii)指定针对与所述分组关联的所述通信会话的会话标识符的元数据的第二部分;以及
朝所述一个或多个连续路由器传输所述修改分组。
2.根据权利要求1所述的路由系统,其中所述源路由器还被配置为将下一连续路由器包括在元数据的所述第一部分中的一个或多个连续路由器的所述列表中。
3.根据权利要求1所述的路由系统,其中所述源路由器还被配置为从元数据的所述第一部分中的一个或多个连续路由器的所述列表排除下一连续路由器。
4.根据权利要求1所述的路由系统,其中所述一个或多个连续路由器中的每个连续路由器被配置为:
接收所述修改分组;
基于所接收的所述修改分组中的元数据的所述第一部分和元数据的所述第二部分,确定一个或多个连续路由器的所述列表中的下一连续路由器不是针对所述路径的目的地路由器;
在向所述下一连续路由器转发所述修改分组之前从元数据的所述第一部分移除其自身;以及
朝如在元数据的所述第一部分中指定的所述下一连续路由器转发所述修改分组。
5.根据权利要求4所述的路由系统,其中所述一个或多个连续路由器中的每个连续路由器被配置为通过将所述修改分组的所述报头内的目的地地址改变为如在所述元数据内指定的所述下一连续路由器的地址来向所述下一连续路由器转发所述修改分组。
6.根据权利要求5所述的路由系统,其中所述一个或多个连续路由器中的每个连续路由器被配置为通过将所述分组的所述报头内的源地址进一步改变为所述一个或多个连续路由器的转发路由器的地址来向所述下一连续路由器转发所述修改分组。
7.根据权利要求1所述的路由系统,其中针对所述路径的目的地路由器被配置为向在所述报头内指定的所述目的地地址转发没有元数据的所述第一部分和元数据的所述第二部分的所述初始分组。
8.根据权利要求1所述的路由系统,其中所述一个或多个连续路由器中的每个连续路由器被配置为:
接收针对所述通信会话的一个或多个后续分组,其中所述后续分组中的每个分组包括具有针对所述服务的目的地地址的报头;
基于所述元数据的所述第二部分,通过将所述报头内的所述目的地地址重写为在元数据的所述第二部分内指定为沿着所述路径的下一跳的所述连续路由器的目的地地址,修改所述一个或多个后续分组;以及
向所述一个或多个连续路由器中的下一连续路由器转发修改后的所述后续分组。
9. 根据权利要求1-6中的任一项所述的路由系统,还包括针对第一区的目的地路由器,其中针对所述第一区的所述目的地路由器是针对第二区的源路由器,其中针对所述第一区的所述目的地路由器被配置为:
确定到针对所述服务的所述目的地的第二路径,所述第二路径包括用以接收与所述服务相关联的所述修改分组一个或多个第二连续路由器;以及
朝所述一个或多个第二连续路由器传输所述修改分组,其中所述修改分组还包括被插入在所述报头之后并且在所述分组的所述末端之前的元数据的第三部分,元数据的所述第三部分指定所述一个或多个第二连续路由器的列表并且元数据的所述第一部分指定针对与所述分组相关联的所述会话的所述会话标识符,所述分组与所述服务相关联。
10. 一种用于路由针对服务的分组的路由器,所述路由器包括:
数据存储库;以及
控制器,包括源路由器逻辑,所述源路由器逻辑被配置为:
针对多个路由器中的每个其他路由器,接收状态信息,所述状态信息包括指示通过所述其他路由器的服务的可用性的服务可用性信息和指示用于经由所述一个或多个其他路由器到达所述服务的网络拓扑结构的服务拓扑结构信息;
基于所述状态信息来确定到所述服务的路径,所述路径包括用以接收与所述服务相关联的分组的所述多个路由器的一个或多个连续路由器;
确定分组与针对所述路径的所述服务相关联,其中所述分组包括通信会话的初始分组,并且其中所述初始分组包括报头,所述报头用于将所述初始分组路由到在针对所述服务的所述报头内指定的目的地地址;
生成包括所述初始分组的所述报头的修改分组,其中所述源路由器逻辑被配置为构造所述修改分组以包括被插入在所述报头之后并且在所述初始分组的末端之前的元数据,并且其中所述修改分组的所述元数据包括:
(i)指定控制所述修改分组和所述通信会话的后续分组的转发的信息的元数据的第一部分,其中所述信息指定沿着到所述服务的所述路径的所述一个或多个连续路由器的列表,以及
(ii)指定针对与所述分组关联的所述通信会话的会话标识符的元数据的第二部分;以及
朝所述一个或多个连续路由器传输所述修改分组。
11.根据权利要求10所述的路由器,其中所述源路由器逻辑被配置为将下一连续路由器包括在元数据的所述第一部分中的一个或多个连续路由器的所述列表中。
12.根据权利要求10所述的路由器,其中所述源路由器逻辑被配置为从元数据的所述第一部分中的一个或多个连续路由器的所述列表排除下一连续路由器。
13.根据权利要求10所述的路由器,
其中所述路由器的接口被配置有指示针对所述服务的路径偏好的标签,
其中为了针对所述多个路由器中的每个其他路由器接收所述状态信息,所述源路由器逻辑被配置为仅针对所述多个路由器中的具有被配置有所述标签的接口的所述其他路由器接收所述状态信息,并且
其中为了确定针对所述服务的所述路径,所述源路由器逻辑被配置为基于所述状态信息和所述标签来确定针对所述服务的所述路径。
14.根据权利要求10所述的路由器,其中所述控制器还包括连续路由器逻辑,所述连续路由器逻辑被配置为:
接收第二分组,所述第二分组包括指定一个或多个连续路由器的第二列表的元数据的第一部分和指定针对与所述第二分组相关联的第二会话的第二会话标识符的元数据的第二部分;
基于所述第二分组的元数据的所述第一部分,确定针对第二服务的第二路径的目的地路由器;以及
朝一个或多个连续路由器的所述第二列表中的下一连续路由器转发所述第二分组。
15.根据权利要求14所述的路由器,其中所述连续路由器逻辑被配置为在向一个或多个连续路由器的所述第二列表中的所述下一连续路由器转发所述分组之前从元数据的所述第一部分移除其自身。
16.根据权利要求14所述的路由器,其中所述连续路由器逻辑被配置为通过将所述修改分组的所述报头内的目的地地址改变为如在所述元数据内指定的所述下一连续路由器的地址来向所述下一连续路由器转发所述修改分组。
17.根据权利要求16所述的路由器,其中所述连续路由器逻辑被配置为通过将所述修改分组的所述报头内的源地址进一步改变为所述第二列表中的所述一个或多个连续路由器的转发路由器的地址来向所述下一连续路由器转发所述修改分组。
18.根据权利要求10所述的路由器,其中所述连续路由器逻辑被配置为:
接收第二分组,所述第二分组包括指定一个或多个连续路由器的第二列表的元数据的第一部分和指定针对与所述第二分组相关联的第二会话的第二会话标识符的元数据的第二部分;
基于所述第二分组的元数据的所述第一部分,确定所述路由器是针对所述服务的第二路径的目的地路由器;以及
向所述第二分组的目的地转发没有元数据的所述第一部分和元数据的所述第二部分的所述第二分组。
19.根据权利要求10所述的路由器,其中所述路由器是针对第一区的目的地路由器和针对第二区的源路由器,并且其中所述连续路由器逻辑被配置为:
接收第二分组;
确定到针对第二服务的目的地的第二路径,所述第二路径包括用以接收与所述第二服务相关联的所述第二分组的一个或多个第二连续路由器;以及
朝所述一个或多个第二连续路由器传输所述第二分组,其中所述第二分组还包括指定所述一个或多个第二连续路由器的列表的元数据的第一部分和指定针对与所述第二分组相关联的第二会话的第二会话标识符的元数据的第二部分,所述第二分组与所述第二服务相关联。
20.一种非暂态计算机可读介质,包括指令,所述指令在被执行时被配置为使路由器的处理电路:
针对多个路由器中的每个其他路由器,接收状态信息,所述状态信息包括指示通过所述其他路由器的服务的可用性的服务可用性信息和指示用于经由所述一个或多个其他路由器到达所述服务的网络拓扑结构的服务拓扑结构信息;
基于所述状态信息来确定针对所述服务的路径,所述路径包括用以接收与所述服务相关联的分组的所述多个路由器的一个或多个连续路由器;
确定分组与针对所述路径的所述服务相关联,其中所述分组包括通信会话的初始分组,并且其中所述初始分组包括报头,所述报头用于将所述初始分组路由到在针对所述服务的所述报头内指定的目的地地址;
生成包括所述初始分组的所述报头的修改分组,其中所述修改分组包括被插入在所述报头之后并且在所述初始分组的末端之前的元数据,并且其中所述修改分组的所述元数据包括:
(i)指定控制所述修改分组和所述通信会话的后续分组的转发的信息的元数据的第一部分,其中所述信息指定沿着到所述服务的所述路径的所述一个或多个连续路由器的列表,以及
(ii)指定针对与所述分组关联的所述通信会话的会话标识符的元数据的第二部分;以及
朝所述一个或多个连续路由器传输所述修改分组。
CN202080035098.8A 2019-05-13 2020-05-12 基于源的路由 Active CN113812122B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311074374.3A CN116915697A (zh) 2019-05-13 2020-05-12 基于源的路由

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/410,131 US11329912B2 (en) 2019-05-13 2019-05-13 Source-based routing
US16/410,131 2019-05-13
PCT/US2020/032494 WO2020232003A1 (en) 2019-05-13 2020-05-12 Source-based routing

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202311074374.3A Division CN116915697A (zh) 2019-05-13 2020-05-12 基于源的路由

Publications (2)

Publication Number Publication Date
CN113812122A CN113812122A (zh) 2021-12-17
CN113812122B true CN113812122B (zh) 2023-08-22

Family

ID=73230996

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202311074374.3A Pending CN116915697A (zh) 2019-05-13 2020-05-12 基于源的路由
CN202080035098.8A Active CN113812122B (zh) 2019-05-13 2020-05-12 基于源的路由

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202311074374.3A Pending CN116915697A (zh) 2019-05-13 2020-05-12 基于源的路由

Country Status (4)

Country Link
US (2) US11329912B2 (zh)
EP (1) EP3970327A4 (zh)
CN (2) CN116915697A (zh)
WO (1) WO2020232003A1 (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10841206B2 (en) 2016-05-31 2020-11-17 128 Technology, Inc. Flow modification including shared context
US20190253341A1 (en) 2018-02-15 2019-08-15 128 Technology, Inc. Service Related Routing Method and Apparatus
US11153202B2 (en) 2019-05-13 2021-10-19 128 Technology, Inc. Service and topology exchange protocol
US10999182B2 (en) 2019-05-13 2021-05-04 128 Technology, Inc. Routing using segment-based metrics
US11329912B2 (en) 2019-05-13 2022-05-10 128 Technology, Inc. Source-based routing
US11070465B2 (en) 2019-05-13 2021-07-20 128 Technology, Inc. Distribution of multicast information in a routing system
US11451464B2 (en) 2019-05-13 2022-09-20 128 Technology, Inc. Central authority for service and topology exchange
WO2021211949A1 (en) 2020-04-16 2021-10-21 Juniper Networks, Inc. Tenant-based mapping for virtual routing and forwarding
EP4140106A1 (en) 2020-04-23 2023-03-01 Juniper Networks, Inc. Session monitoring using metrics of session establishment
US11695685B2 (en) * 2020-06-16 2023-07-04 Nokia Solutions And Networks Oy Supporting candidate path selection
US12052163B2 (en) 2020-06-24 2024-07-30 Juniper Networks, Inc. Point-to-multipoint Layer-2 network extension over Layer-3 network
US20220200915A1 (en) 2020-12-21 2022-06-23 Juniper Networks, Inc. Network policy application based on session state
US20220346160A1 (en) 2021-04-22 2022-10-27 Juniper Networks, Inc. Onboarding virtualized network devices to cloud-based network assurance system
US11838172B2 (en) 2021-08-31 2023-12-05 Juniper Networks, Inc. Identifying root cause of failures through detection of network scope failures
US20230070701A1 (en) 2021-08-31 2023-03-09 Juniper Networks, Inc. Network performance monitoring and fault management based on wide area network link health assessments
US11902146B1 (en) 2021-08-31 2024-02-13 Juniper Networks, Inc. Identifying a maximum segment size (MSS) corresponding to a network path
US20230116163A1 (en) 2021-09-29 2023-04-13 Juniper Networks, Inc. Opportunistic mesh for software-defined wide area network (sd-wan)
US11552883B1 (en) 2021-09-29 2023-01-10 Juniper Networks, Inc. Session establishment using path change
CN115914079A (zh) 2021-09-30 2023-04-04 瞻博网络公司 基于度量的多跳路径选择
WO2023060260A1 (en) 2021-10-07 2023-04-13 Juniper Networks, Inc. Peer comparison-based outlier detection for network performance monitoring
US11924734B2 (en) 2021-10-07 2024-03-05 Juniper Networks, Inc. Wireless signal strength-based detection of poor network link performance
CN118339812A (zh) 2021-10-07 2024-07-12 瞻博网络公司 用于网络性能监测的基于对等比较的异常值检测
US20230261930A1 (en) 2022-01-17 2023-08-17 Juniper Networks, Inc. Predicting network issues based on historical data
US20230318969A1 (en) * 2022-03-31 2023-10-05 Lenovo (United States) Inc. Optimizing network load in multicast communications

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105379188A (zh) * 2013-07-26 2016-03-02 华为技术有限公司 保护倒换源路由
EP3334105A1 (en) * 2016-12-07 2018-06-13 Alcatel Lucent Embedding of context information in networking packets

Family Cites Families (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5898826A (en) * 1995-11-22 1999-04-27 Intel Corporation Method and apparatus for deadlock-free routing around an unusable routing component in an N-dimensional network
US6108710A (en) * 1997-11-26 2000-08-22 International Business Machine Corp. Method and apparatus for optimizing route generation in a connection oriented network
US6563835B1 (en) 1998-02-20 2003-05-13 Lucent Technologies Inc. Call processing arrangement for ATM switches
US6507577B1 (en) 1998-11-12 2003-01-14 Nortel Networks Limited Voice over internet protocol network architecture
US6587438B1 (en) * 1999-12-22 2003-07-01 Resonate Inc. World-wide-web server that finds optimal path by sending multiple syn+ack packets to a single client
US7031266B1 (en) 2000-02-25 2006-04-18 Cisco Technology, Inc. Method and system for configuring wireless routers and networks
US6982966B2 (en) 2000-04-10 2006-01-03 Viasat, Inc. Satellite routing protocol with dynamic IP addressing
EP1185041B1 (en) 2000-08-29 2007-10-10 International Business Machines Corporation OSPF autonomous system with a backbone divided into two sub-areas
EP1376973B1 (en) 2002-06-19 2007-02-14 Motorola, Inc. Method and apparatus for route optimisation in nested mobile networks
JP3887640B2 (ja) * 2002-10-18 2007-02-28 松下電器産業株式会社 グローバル・ネットワークにおけるローミング接続方法及び装置
US7209978B2 (en) * 2002-12-13 2007-04-24 Cisco Technology, Inc. Arrangement in a router of a mobile network for optimizing use of messages carrying reverse routing headers
US7142866B2 (en) 2003-09-09 2006-11-28 Harris Corporation Load leveling in mobile ad-hoc networks to support end-to-end delay reduction, QoS and energy leveling
CN105743665B (zh) 2003-10-31 2018-04-20 瞻博网络公司 加强对多播传输访问控制的方法、设备、系统和存储介质
US7720054B2 (en) 2004-03-02 2010-05-18 Cisco Technology, Inc. Router configured for outputting update messages specifying a detected attribute change of a connected active path according to a prescribed routing protocol
CN1294728C (zh) * 2004-08-05 2007-01-10 华为技术有限公司 边缘路由器提供服务质量保证的方法及系统
US8068408B2 (en) 2004-11-01 2011-11-29 Alcatel Lucent Softrouter protocol disaggregation
US20070008949A1 (en) 2005-07-07 2007-01-11 Nokia Corporation Method for automatic route aggregation in a communication system
US7688829B2 (en) * 2005-09-14 2010-03-30 Cisco Technology, Inc. System and methods for network segmentation
US7633882B2 (en) * 2006-02-02 2009-12-15 Eaton Corporation Ad-hoc network and method employing globally optimized routes for packets
US8160056B2 (en) 2006-09-08 2012-04-17 At&T Intellectual Property Ii, Lp Systems, devices, and methods for network routing
US9660827B2 (en) 2007-01-12 2017-05-23 Symbol Technologies, Llc System and method of switching from multicast to unicast calls
US20090097418A1 (en) * 2007-10-11 2009-04-16 Alterpoint, Inc. System and method for network service path analysis
US20090116404A1 (en) * 2007-11-01 2009-05-07 Telefonaktiebolaget Lm Ericsson (Publ) Topology discovery in heterogeneous networks
CN101267433B (zh) * 2008-04-30 2011-12-14 华中科技大学 一种适应异构网络环境的中心控制源路由协议方法
US8713627B2 (en) 2008-08-14 2014-04-29 Juniper Networks, Inc. Scalable security services for multicast in a router having integrated zone-based firewall
US8837292B2 (en) 2010-09-21 2014-09-16 Telefonaktiebolaget L M Ericsson (Publ) Relayed CSPF computation for multiple areas and multiple autonomous systems
US8700801B2 (en) 2010-12-01 2014-04-15 Juniper Networks, Inc. Dynamically generating application-layer traffic optimization protocol maps
CN103609080A (zh) 2011-06-23 2014-02-26 瑞典爱立信有限公司 用于支持经由as间路径的路由的方法和节点
US8612599B2 (en) 2011-09-07 2013-12-17 Accenture Global Services Limited Cloud service monitoring system
US9736054B2 (en) 2011-10-05 2017-08-15 Cisco Technology, Inc. Multicast active source discovery and management for layer-2 interconnect solutions
US8830820B2 (en) 2011-10-14 2014-09-09 Google Inc. Semi-centralized routing
US9106555B2 (en) 2012-01-25 2015-08-11 Cisco Technology, Inc. Troubleshooting routing topology based on a reference topology
US9009302B2 (en) 2012-02-21 2015-04-14 Cisco Technology, Inc. Dynamic group creation and traffic flow registration under a group in a group key infrastructure
US9264382B2 (en) * 2012-05-11 2016-02-16 Oracle International Corporation System and method for routing traffic between distinct infiniband subnets based on fat-tree routing
US9729414B1 (en) 2012-05-21 2017-08-08 Thousandeyes, Inc. Monitoring service availability using distributed BGP routing feeds
US9264343B2 (en) 2012-07-09 2016-02-16 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatus for limiting topology and reachability information in an OSPF area
US10177967B2 (en) 2013-03-15 2019-01-08 Jesse Lakes Redirection service resource locator mechanism
IN2013CH05044A (zh) 2013-11-08 2015-05-29 Huawei Technologies India Pvt Ltd
US9967183B2 (en) * 2013-12-20 2018-05-08 Huawei Technologies Co., Ltd. Source routing with entropy-header
US10153946B2 (en) 2014-04-15 2018-12-11 Centurylink Intellectual Property Llc Topology engine state tracking
US9705815B2 (en) 2014-06-27 2017-07-11 Juniper Networks, Inc. Graph database for services planning and configuration in network services domain
US9729439B2 (en) 2014-09-26 2017-08-08 128 Technology, Inc. Network packet flow controller
GB2536607A (en) 2014-11-28 2016-09-28 Aria Networks Ltd Optimizing a network topology to satisfy predicted growth
GB2536606A (en) 2014-11-28 2016-09-28 Aria Networks Ltd Network topology optimization
US10277506B2 (en) 2014-12-08 2019-04-30 128 Technology, Inc. Stateful load balancing in a stateless network
US9729682B2 (en) 2015-05-18 2017-08-08 128 Technology, Inc. Network device and method for processing a session using a packet signature
US9882806B2 (en) 2015-06-03 2018-01-30 Cisco Technology, Inc. Network description mechanisms for anonymity between systems
US10834265B1 (en) 2015-06-15 2020-11-10 Thousandeyes, Inc. Monitoring voice-over-IP performance over the internet
US9762485B2 (en) 2015-08-24 2017-09-12 128 Technology, Inc. Network packet flow controller with extended session management
US9871748B2 (en) 2015-12-09 2018-01-16 128 Technology, Inc. Router with optimized statistical functionality
US9948606B2 (en) 2015-12-25 2018-04-17 Kn Group, Ghq Enhancing privacy and security on a SDN network using SDN flow based forwarding control
US9985883B2 (en) 2016-02-26 2018-05-29 128 Technology, Inc. Name-based routing system and method
WO2017144957A1 (en) 2016-02-26 2017-08-31 Telefonaktiebolaget Lm Ericsson (Publ) Dynamic re-route in a redundant system of a packet network
CN107231567B (zh) * 2016-03-25 2020-10-23 华为技术有限公司 一种报文传输方法、装置及系统
WO2017168203A1 (en) 2016-03-28 2017-10-05 Telefonaktiebolaget Lm Ericsson (Publ) Multipoint to multipoint trees for computed spring multicast
US10200264B2 (en) 2016-05-31 2019-02-05 128 Technology, Inc. Link status monitoring based on packet loss detection
US10264040B2 (en) 2016-08-03 2019-04-16 Big Switch Networks, Inc. Systems and methods to manage multicast traffic
US10142183B2 (en) 2016-08-30 2018-11-27 Oracle International Corporation Snapshotting and instantiating a virtual topology
US9985872B2 (en) 2016-10-03 2018-05-29 128 Technology, Inc. Router with bilateral TCP session monitoring
US20180102965A1 (en) 2016-10-07 2018-04-12 Alcatel-Lucent Usa Inc. Unicast branching based multicast
US20200036624A1 (en) 2017-01-31 2020-01-30 The Mode Group High performance software-defined core network
US11706127B2 (en) 2017-01-31 2023-07-18 Vmware, Inc. High performance software-defined core network
US11323327B1 (en) 2017-04-19 2022-05-03 Juniper Networks, Inc. Virtualization infrastructure element monitoring and policy control in a cloud environment using profiles
US10929341B2 (en) 2017-04-28 2021-02-23 Netapp, Inc. Iterative object scanning for information lifecycle management
US10382592B2 (en) * 2017-07-12 2019-08-13 Juniper Networks, Inc. Segment routing label switched path for non-segment routing enabled routers
US11165863B1 (en) 2017-08-04 2021-11-02 128 Technology, Inc. Network neighborhoods for establishing communication relationships between communication interfaces in an administrative domain
US10990891B1 (en) 2017-09-07 2021-04-27 Amazon Technologies, Inc. Predictive modeling for aggregated metrics
US11093518B1 (en) 2017-09-23 2021-08-17 Splunk Inc. Information technology networked entity monitoring with dynamic metric and threshold selection
CN111149329A (zh) 2017-09-29 2020-05-12 芬基波尔有限责任公司 通过多个备用数据路径进行分组喷射的数据中心网络的结构控制协议
US10613962B1 (en) 2017-10-26 2020-04-07 Amazon Technologies, Inc. Server failure predictive model
US10826773B2 (en) 2018-10-01 2020-11-03 Arista Networks, Inc. Method and system for sidelining of a network device
US11451464B2 (en) 2019-05-13 2022-09-20 128 Technology, Inc. Central authority for service and topology exchange
US10999182B2 (en) 2019-05-13 2021-05-04 128 Technology, Inc. Routing using segment-based metrics
US11153202B2 (en) 2019-05-13 2021-10-19 128 Technology, Inc. Service and topology exchange protocol
US20220021600A1 (en) 2019-05-13 2022-01-20 Juniper Networks, Inc. Metric-based multi-hop path selection
US11329912B2 (en) * 2019-05-13 2022-05-10 128 Technology, Inc. Source-based routing
US11075824B2 (en) 2019-06-19 2021-07-27 128 Technology, Inc. In-line performance monitoring

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105379188A (zh) * 2013-07-26 2016-03-02 华为技术有限公司 保护倒换源路由
EP3334105A1 (en) * 2016-12-07 2018-06-13 Alcatel Lucent Embedding of context information in networking packets

Also Published As

Publication number Publication date
CN113812122A (zh) 2021-12-17
CN116915697A (zh) 2023-10-20
US20200366599A1 (en) 2020-11-19
EP3970327A4 (en) 2022-12-07
US11750508B2 (en) 2023-09-05
WO2020232003A1 (en) 2020-11-19
US11329912B2 (en) 2022-05-10
US20220286387A1 (en) 2022-09-08
EP3970327A1 (en) 2022-03-23

Similar Documents

Publication Publication Date Title
CN113812122B (zh) 基于源的路由
CN114128229B (zh) 用于服务和拓扑交换协议的方法、系统和装置
CN113812123B (zh) 用于服务和拓扑交换的中央授权机构
CN114008991B (zh) 使用基于分段的度量的路由的装置、方法和介质
US10833989B2 (en) Methods, apparatus, and articles of manufacture to provide a multicast virtual private network (MVPN)
US11695687B2 (en) Distribution of multicast information in a routing system
US11005749B2 (en) Multicast source and receiver access control
CN113826356B (zh) 路由中多播信息的分发
Moghaddassian et al. Yodel: A Layer 3.5 Name-Based Multicast Network Architecture For The Future Internet

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