分段最短路径优先路由
1.相关申请交叉引用
2.本技术要求于2020年5月29日提交的申请号为16/888,023、发明名称为“分段最短路径优先路由(piecewise shortest path first routing)”的美国非临时专利申请的优先权的权益,其全部内容通过引用结合在本文中。
技术领域
3.本发明涉及分组数据网络,例如光卫星网状网络,尤其涉及一种用于在这类网络中支持分组转发和路由的方法和装置。
背景技术:4.为了提供互联网路由服务等等,人们正在开发低轨(low earth orbit,leo)卫星星座。目前建议将一组卫星分布在空间中并组织成网状网络。提出将自由空间光学(即激光)链路作为在卫星之间提供高带宽网络连接的一种方式。其它类型的链路,如射频或微波链路也是可能的。使用leo卫星系统产生的延迟通常比中轨系统或地球静止轨道系统的低,但需要大量的卫星。
5.数据分组可以通过卫星网状网络沿着各种路径进行路由。由于卫星相对于地球表面快速移动,因此将分组路由到地面目的地需要考虑卫星位置以及与目的地位置的接近度。在这类场景下快速计算有效路由路径需要大量计算,而且目前的路由方法需要改进和定制卫星网状网络。
6.地理路由涉及基于地理位置信息的分组路由,而不一定依赖于网络拓扑信息。这类路由方案是无线网络已知的,但尚未广泛应用于卫星网络。此外,这些方案在计算效率、卫星网状网络的场景适用性或两方面需要改进。
7.因此,需要一种用于支持卫星网状网络和类似网络中的分组转发的方法和装置,消除或减少现有技术的一个或多个限制。
8.背景技术的目的是揭示申请人认为可能与本发明相关的信息。没有必要承认也不应解释任何前述信息构成与本发明相对的现有技术。
技术实现要素:9.本发明实施例的目的是提供一种用于(例如,在卫星网路中)进行分组转发和路由的方法和装置。
10.根据本发明的实施例,提供了一种用于在网络中路由数据分组的方法。所述数据分组指定该数据分组的目的地的物理位置。在拥有所述数据分组的所述网络的第一节点处执行所述方法。所述方法包括:维护所述网络的有限部分中的直接耦合到所述第一节点的节点的物理位置信息,维护所述网络的所述有限部分的路由信息。所述网络的所述有限部分可以包括通过至少一个中间节点间接耦合到所述第一节点的至少一个节点。所述方法包括:从所述网络的所述有限部分中的所述节点中选择目标节点,其中,所述目标节点满足与
所述数据分组的所述目的地的所述物理位置的大圆距离的预定目标。所述方法包括:根据所述路由信息,确定通过所述网络的所述有限部分到所述目标节点的路由。所述方法还包括:配置一组网络节点,使所述分组经过所述确定的路由到达所述目标节点。在一些实施例中,所述配置可以涉及对所述分组使用源路由。所述方法还包括:例如,沿着所述确定的路由,向所述目标节点转发所述分组。
11.根据本发明的实施例,提供了一种用于在网络中路由数据分组的方法,其中,所述数据分组指定所述数据分组的目的地的物理位置。所述方法包括当所述网络的一些节点拥有所述数据分组时,在这些节点上执行上述方法步骤。具体地,所述方法可以在被拥有所述数据分组的前一节点指定为目标节点的节点上执行。其它节点在接收到所述数据分组时,例如,可以根据源路由协议,向分组报头中指示的另一个节点简单地转发所述分组。
12.根据本发明的实施例,提供了一种用于在网络中路由数据分组的方法。所述数据分组指定所述数据分组的目的地的物理位置。所述方法包括上文所述的步骤:在拥有所述数据分组的所述网络的第一节点处,维护物理位置信息和路由信息;选择目标节点。所述方法还包括:根据所述路由信息,确定属于所述网络的所述有限部分且位于所述第一节点和所述目标节点之间的可用网络路径上的下一个节点。所述方法还包括:配置所述下一个节点优先向所述目标节点转发所述分组。所述方法还包括向所述下一个节点转发所述分组。所述配置所述下一个节点优先向所述目标节点转发所述分组可以包括:配置所述分组携带所述目标节点的标识符。在这种情况下,所述下一个节点用于在能够根据所述下一个节点持有的路由信息确定到所述目标节点的路由时,将所述分组路由到所述目标节点。否则,所述下一个节点可以选择新的目标节点。
13.根据本发明的实施例,提供了一种用于在网络中路由数据分组的装置。所述数据分组指定所述数据分组的目的地的物理位置。所述装置位于拥有所述数据分组的所述网络的第一节点处,且包括网络接口和处理电子器件。所述装置用于:维护所述网络的有限部分中的直接耦合到所述第一节点的节点的物理位置信息。所述装置用于:维护所述网络的所述有限部分的路由信息。所述网络的所述有限部分可以包括通过至少一个中间节点间接耦合到所述第一节点的至少一个节点。所述装置还用于:从所述网络的所述有限部分中的所述节点中选择目标节点,其中,所述目标节点满足与所述数据分组的所述目的地的所述物理位置的大圆距离的预定目标。所述装置还用于:根据所述路由信息,确定通过所述网络的所述有限部分到所述目标节点的路由。所述装置还用于:配置一组网络节点,使所述分组经过所述确定的路由到达所述目标节点。在一些实施例中,所述配置可以涉及对所述分组使用源路由。所述装置还用于:例如,沿着所述确定的路由,向所述目标节点转发所述分组。
14.根据本发明的实施例,提供了一种用于在网络中路由数据分组的系统,其中,所述数据分组指定所述数据分组的目的地的物理位置。所述系统包括多个网络节点或网络节点的关联装置,其中至少一些网络节点用于在拥有所述数据分组时如上所述操作。即,提供了一种用于在网络中路由数据分组的系统,其中,所述数据分组指定所述数据分组的目的地的物理位置,所述系统包括:所述网络的多个节点。每个节点包括网络接口和处理电子器件,且用于:当拥有所述数据分组时,维护所述网络的有限部分中的直接耦合到所述节点的相应节点的物理位置信息;维护所述网络的所述有限部分的路由信息。所述网络的所述有限部分可以包括通过至少一个中间节点间接耦合到所述第一节点的至少一个节点。每个节
点还用于:从所述网络的所述有限部分中的所述节点中选择目标节点,其中,所述目标节点满足与所述数据分组的所述目的地的所述物理位置的大圆距离的预定目标。每个节点还用于:根据所述路由信息,确定通过所述网络的所述有限部分到所述目标节点的路由;配置一组节点,使所述分组经过所述确定的路由到达所述目标节点(例如,使用源路由);向所述目标节点转发所述分组。
15.根据本发明的实施例,提供了一种用于在网络中路由数据分组的装置。如上所述,所述数据分组指定所述数据分组的目的地的物理位置,所述装置位于拥有所述数据分组的所述网络的第一节点处,且包括网络接口和处理电子器件。如上所述,所述装置用于:维护物理位置信息和路由信息,并选择目标节点。所述装置还用于:根据所述路由信息,确定属于所述网络的所述有限部分且位于所述第一节点和所述目标节点之间的可用网络路径上的下一个节点。所述装置还用于:配置所述下一个节点优先向所述目标节点转发所述分组(例如,通过配置所述分组携带所述目标节点的标识符);向所述下一个节点转发所述分组。
16.上面结合本发明的方面描述了实施例,这些实施例可以基于这些方面实现。本领域技术人员将理解,实施例可以结合描述它们的方面来实现,但也可以与该方面的其它实施例一起实现。当实施例相互排斥或彼此不兼容时,本领域技术人员将是显而易见的。一些实施例可以结合一个方面进行描述,但也可以适用于其它方面,这对本领域技术人员来说是显而易见的。
附图说明
17.进一步地,通过阅读以下结合附图所作的详细描述将容易了解本发明的特征和优势,其中:
18.图1示出了围绕球体(地球)运行的两颗卫星之间的大圆距离;
19.图2示出了本发明实施例提供的用于在网络中路由数据分组的方法;
20.图3a示出了本发明示例实施例提供的显示第一节点处的分组路由操作的网络的一部分;
21.图3b还示出了本发明示例实施例提供的显示第一节点处的其它分组路由操作的图3a的网络的一部分;
22.图3c还示出了本发明示例实施例提供的显示第二节点处的分组路由操作的图3a的网络的一部分;
23.图3d还示出了本发明示例实施例提供的显示第三节点处的分组路由操作的图3a的网络的一部分;
24.图4示出了本发明实施例提供的用于在网络中路由数据分组的方法;
25.图5示出了本发明实施例提供的用于在网络中路由数据分组的装置;
26.图6a和图6b示出了本发明可选实施例提供的分组路由操作,节点在转发分组之前共享路由信息;
27.图7示出了本发明的另一个替代实施例提供的分组路由操作,节点之间共享目标节点信息而不是路由信息;
28.图8示出了本发明实施例提供的网络的多分段部分,可以在这部分上执行流量工程;
29.图9为本发明不同实施例提供的电子设备的示意图,该电子设备可以执行本文显式或隐式描述的上述方法和特征的任何或全部操作。
30.需要说明的是,在所有附图中,相同的特征由相同的元件符号标识。
具体实施方式
31.本文所使用的术语“约”应理解为包括与标称值的变化,例如,与标称值的+/
–
10%的变化。应当理解,这种变化总是在本文提供的给定值范围内,无论它是否被具体提及。
32.卫星网络可以提供全球连接,并且还可以在第五代(fifth generation,5g)通信技术中提供新的覆盖扩展,如第三代伙伴关系计划(3
rd generation partnership project,3gpp)等所述。整个行业的兴趣是部署卫星间链路,以通过多个卫星路由用户流量。在这方面,使用低轨(low earth orbit,leo)卫星系统可能是合适的,因为与中轨(medium earth orbit,meo)和地球静止轨道(geostationary earth orbit,geo)系统相比,leo卫星系统的往返延迟低,发射成本低。然而,一个有效的全球网络需要潜在的大量leo卫星。另一方面,由于存在轨道接缝、网络大小不定以及在网络变化发生时需要及时向所有节点传达网络变化等原因,因此卫星网络星座的动态属性给现有路由协议带来了挑战。
33.本发明的实施例解决了卫星网络上下文中的网络路由挑战。具体重点是应用于非地面大质量(卫星)极地和沃克德尔塔(walker-delta)星座网络,以便提供地面(例如有线或光纤)网络可能不支持的全球通信服务。各种实施例提供了扁平化网络路由范式,其中,每个网络节点只需要具有网络条件的本地信息。这限制了通过网络传播网络条件更新(例如,通过泛洪链路状态更新消息)的要求。具体地,在各种实施例中,更新只需要在有限的网络区域内进行本地通信。由于仅使用本地信息,路由计算时间和控制平面/数据平面处理复杂性也会得到控制。考虑到存在大规模leo卫星(现有的地面路由机制无法扩展),以及leo卫星节点上可用的机载处理能力有限,这一点可能特别重要。
34.虽然geo卫星在它们所面对的地球一侧静止,但meo卫星和leo卫星是移动的,具有一定的时间周期。也就是说,meo卫星和leo卫星根据它们的高度在特定时间段后与地球的同一点相遇。geo卫星位于地球赤道上空22,236英里(35,786公里)的地方。由于geo卫星的高度高、往返延迟长,因此不适用于宽带、低延迟数据网络。然而,leo卫星在地球上提供全球覆盖且能够更有效地重复使用频率。leo卫星网络可以提供低延迟的泛连接。这些卫星网络的一个特点是,通常需要许多卫星来提供全球覆盖,主要原因是这些卫星的高度低。
35.卫星通信技术将卫星星座定义为一组在leo轨道上旋转的具有协调地面覆盖和共享控制功能的卫星。两种主要的卫星星座是“极轨星座”和“沃克德尔塔(walker delta)星座”。沃克德尔塔星座在地球上几乎任何地方都能提供更好的均匀覆盖,除了两极,那里没有覆盖。然而,极地星座在两极上提供密集覆盖,而在赤道上提供稀疏覆盖。
36.卫星网络节点可能有两类接口:地面通信接口和卫星间链路(inter-satellite link,isl)通信接口。地面通信接口可以是工作在x波段或ka波段的微波系统。isl接口可以使用通信激光器,而且可以提供卫星节点之间的高速光自由空间通信链路。isl链路包括轨道内链路,即在共用轨道上但间隔开的(通常是相邻的)卫星之间的链路,以及包括轨道间链路,即在不同(通常是相邻的)轨道上的卫星之间的链路。
37.由于卫星网络存在动态属性,因此isl特性也会动态变化。即使对于链路距离恒定的轨道内isl,链路行为也会随着卫星经过地球不同部分(例如两极)而变化。对于极轨星座和沃克德尔塔星座,轨道间isl的isl特性的动态范围明显更大。由于isl链路会动态变化,因此卫星网络中的网络拓扑属性也会动态变化。网络拓扑变化、链路故障和链路创建、链路级光损伤以及多普勒效应的影响使分组路由成为卫星数据网络中的一大挑战。网络事件频繁发生的密集leo卫星网络尤其如此。分组寻址是另一项挑战。此外,卫星机载处理能力有限,因此希望限制执行网络路由等功能所需的机载处理量。
38.卫星网络中的一个问题涉及泛洪行为和与网络地面段的集成。基于互联网协议(internet protocol,ip)的路由无法通过需要最小延迟(距离)路由的非常大的扁平化卫星网络进行很好扩展。这是由于卫星网络拓扑是动态的,而且最小距离路径随着时间的推移而变化。
39.本发明实施例提供了一种可能适用于大量大型卫星网络的路由方案。空间位置可以用作网络节点标识符的一部分。可以使用分组的地理位置路由,以及定义为通信链路长度或与通信链路长度相关的链路成本度量。因此,在一些实施例中,可以仅仅根据位置(例如经度/纬度)信息确定用于分组转发的网络路由。这有助于以最短的通信链路距离将分组从源路由到目的地。
40.大量大型卫星网络中频繁发生链路故障。在发生链路故障的单跳地理位置路由中,备用路径路由可能会使分组远离它们的目的地。这往往会导致单跳地理位置路由失败。出现这一问题的原因是,网络的整个区域可能对每个节点都不可见。由于执行网络状态更新(例如通过泛洪)很耗时,因此网络收敛相对较慢。当网络状态变化频繁时,这可能导致每个节点上的网络信息无法充分跟踪真实的网络状态。
41.当使用leo卫星网状网络将分组路由到地面目的地时,需要说明的是,卫星星座通常相对于目的地快速移动。这使得在给定时间内确定转发分组所在的路径以便高效到达目的地变得很困难。例如,可能希望确定目前哪颗目标卫星最靠近(或足够靠近)地面目的地,以便分组可以沿着路径路由到该卫星。星座几何形状可用于实现这种路由。具体地,根据本发明的实施例,卫星星座可以用于将分组路由到几何上最靠近目的地位置的目标卫星(或在相对更靠近目的地位置的卫星子集中)。为了实现这一点,可以采用地理位置路由,其中,每个分组的目的地地址包括分组的目的地的几何(地理)位置的指示。例如,这个位置可以是目的地地址的一部分。地理位置路由也可以用于其它场景。根据地理位置路由,数据分组在其报头等中指定目的地的物理位置。物理位置可以通过空间坐标给出,空间坐标可以使用经纬度、极坐标系中的坐标或笛卡尔坐标系中的坐标等表示。
42.源路由通常包括:第一节点(例如卫星)在拥有分组时标识分组要传输到的目标节点,以及当目标节点不直接链接到第一节点时,标识分组要依次转发到的节点的序列。序列中的节点直接串联链接,节点和链路限定了从第一节点到目标节点的路径。目标节点可以选择为位于拥有分组的节点的有限本地邻域内且最靠近最终分组目的地或者在距离最终分组目的地最近的节点(在本地邻域内)之中的一个节点。为了根据分组目的地信息标识合适的目标节点和对应的节点序列,可以维护路由表。分布式链路状态路由协议,如开放最短路径优先(open shortest path first,ospf)协议可用于维护路由表。链路状态信息可以使用控制平面消息传递在节点之间共用。
43.需要说明的是,由于使用源路由(或下文将描述的类似方案),分组基本上可以保证通过选定的目标节点。此属性可用作实现流量工程和质量保证等功能的基础。源路由是一种方案,通过该方案,网络节点可以配置成使分组经过特定路由到特定目标节点。特别地,随后接收到分组的每个网络节点通过处理写入分组(例如在分组报头中)的源路由信息来“配置”。源路由信息指定待由所述分组依次经过的一个或多个中间节点,所述中间节点定义到目标节点的确定的路由。
44.在包括leo卫星节点等移动节点的网络中,卫星相对于彼此、地面节点或两者的相对运动会导致时变的网络拓扑和链路可用性。因此,全局维护路由表和链路状态信息成为一项具有挑战性的任务。因此,考虑替代路由方法是有用的,这些方法可以使用有限信息实现。有限信息可以只包括位于做出路由决策的给定节点的本地邻域内的节点的节点位置和链路状态信息。例如,根据本发明的实施例,每个网络节点维护网络的该网络节点所在的有限部分的节点位置和链路状态信息。分组使用其报头中的地理坐标等指定自己的目的地位置。因此,网络节点可以确定从其本地邻域内的每个节点到最终目的地的距离。
45.图1示出了围绕球体(地球)120运转的两颗卫星110、115之间的大圆距离105。还示出了球体上两点112、117之间的大圆距离107。点112位于球体120与穿过给定点125(通常在球体120的中心处)且还穿过卫星110的位置的线条或矢量的交叉点处。点117位于球体120与穿过给定点125且还穿过卫星115的位置的线条或矢量的交叉点处。大圆距离107是位于点112和117之间的弧的长度,其中,弧是由球体120的表面与穿过点112、117和125的平面的交叉点限定的圆的一部分。(需要说明的是,该平面可以等效地定义为穿过卫星110、115的位置和点125。)类似地,大圆距离105是卫星110和115的位置之间的弧的长度,其中,弧是由与球体120同心的球体的交叉点限定且包括卫星110、115的轨道的圆的一部分。大圆距离也称为大圆弧距离。
46.本发明实施例涉及数据分组在通信网络中的路由和转发。数据分组采用地理路由,以便它们在其报头等中指定物理目的地位置。结合图2,根据这些实施例提供的方法200包括:维护210网络的有限部分中的直接耦合到第一节点的节点的物理位置信息。物理位置信息可以通过地理坐标提供,例如但不一定限于纬度/经度坐标。所述方法还包括:维护220网络的有限部分的路由信息。路由信息可以包括,例如,网络的有限部分中的节点之间的通信链路的当前可用性。
47.为了清楚起见,在各种实施例中,认为网络的有限部分可以包括通过至少一个中间节点间接耦合到第一节点的至少一个节点。也就是说,网络的有限部分不仅仅包括位于第一节点的一跳内的节点。虽然这对于可操作性来说并不是绝对必要的,但可以实现在网络的有限部分内执行有意义的路由。这还实现在需要确定新路由之前,在更长的(多跳)距离上路由数据分组,可以提高路由效率。在其它情况下,可以接受的是,网络的一些或可能所有有限部分被限制包括位于第一节点的一跳内的节点。
48.方法200还包括选择230目标节点。从网络的有限部分中的节点中选择目标节点,使得目标节点满足关于到数据分组的目的地的物理位置的大圆距离的预定目标。目标节点到目的位置的距离可以是目标节点与目的地位置的经纬度的一般相关函数。距离可以是大圆(大圆弧)距离。目标可以是,例如,目标节点是距离数据分组目的地最近的节点(在网络的有限部分中),或者目标节点在距离数据分组目的地相对较近的k个节点(在网络的有限
部分中)之中。
49.在支持选择目标节点中,所述方法可以包括:确定网络的有限部分中的至少一些节点和数据分组目的地的物理位置之间的相应(例如,大圆)距离(或近似距离)。可以根据半正矢或笛卡尔函数计算或近似计算确定大圆距离。
50.方法200还包括:根据路由信息确定240到目标节点的路由。当目标节点直接链接到第一节点时,路由可以简单地涉及到目标节点的直接链路。当目标节点间接链接到第一节点时,例如经由属于网络的有限部分并位于第一节点和目标节点之间的可用网络路径的一个或多个中间节点,路由可以包括中间节点和第一节点和中间节点之间以及中间节点和目标节点之间的通信链路。例如,可以仅根据关于网络的有限部分的信息,使用最短路径优先(shortest path first,spf)算法确定路由,或等效的中间节点。该路由属于当前执行方法200的节点所看到的网络的有限部分。
51.所述方法还包括:配置245分组以使用源路由经过确定的路由到达目标节点。源路由涉及将分组配置为包括(例如在指定的报头域中)沿确定的要依次访问的路由的节点标识符的有序列表。例如,路由可以包括第一中间节点、第二中间节点和目标节点,其中,第一节点直接链接到第一中间节点,第一中间节点直接链接到第二中间节点,第二中间节点直接链接到目标节点。在这种情况下,分组中的源路由头字段可以配置为按顺序列出第一中间节点、第二中间节点和目标节点。方法还包括:沿着确定的路由,向所述目标节点转发250分组。然后,方法200可以在目标节点上或在接收到分组的一些或所有后续节点上重复,这些节点被接收到分组的前一节点指定为目标节点。
52.如本文所使用的,术语“源路由”旨在包括分段路由。例如,2018年7月发表的文档编号为rfc 8402、标题为“分段路由架构(segment routing architecture)”的互联网工程任务组(internet engineering task force,ietf)文档中描述了分段路由。
53.更一般地,根据本发明的实施例,并如在实践中通过使用源路由或其变体实现的那样,根据直接耦合到第一节点的网络的有限部分的物理位置信息和路由信息,将分组路由到目标节点。如前所述,所述信息由第一节点(即拥有分组的节点)维护。源路由是发生这种情况的一种方式,因为第一节点决定分组路由本身,保证路由是基于第一节点的信息。然而,在本发明的其它实施例中,也可以实现不同的(可能更分布式的)路由方法以实现这种效果。为清楚起见,下面将首先描述源路由实施例,然后描述替代实施例。
54.根据上述内容,网络的每个节点在网络的预定义的有限部分内工作,该部分是整个网络的严格子集。节点维护网络的有限部分的信息。在这个有限部分中,例如,可以使用路由协议,如或类似于开放最短路径优先(open shortest path first,ospf)协议进行路由。路由可以使用分组中指定的地理地址。这使得数据分组转发到更靠近数据分组目的地的目标节点。
55.如上所述,源(或分段)路由可用于将分组从第一节点路由到目标节点,可能通过一个或多个中间节点。第一节点可以根据源路由指定接收分组并将其转发到下一个指定节点的一个或多个节点。源(或分段)路由报头(source routing header,srh)可用于此目的,如本领域技术人员容易理解的。srh可以涉及srh的连续字段中指定的目的地地址的序列。需要说明的是,目标地址可以是或包括地理(物理)位置。序列中的第一个目的地地址被视为主动目的地地址,网络架构用于向与该地址对应的节点转发分组。一旦与目的地地址对
应的节点接收到分组,此目的地地址将从分组中删除,序列中的下一个目的地地址将成为第一个主动目的地地址。然后,该过程重复。当所有目的地地址都以这种方式删除时,拥有分组的节点就是目标节点。然后,如果需要,目标节点可以执行进一步的源路由。在替代实现方式中,索引字段用于指向当前主动目的地地址,而不是删除目的地地址。一旦与目的地地址对应的节点接收到分组,索引字段就会更新,使其指向序列中的下一个目的地地址。
56.除了源路由或替代方案之外,本发明的实施例还可以包括反环路方案,该反环路方案禁止分组在同一组两个、三个或更多节点之间无限期转发。特别地,每次经过目标节点(例如执行源路由的节点)时,该节点的标识符被写入分组中。因此,分组携带它已经经过的目标(路由)节点的标识符。分组可以包括用于包含此类标识符的报头字段或报头字段序列。这被称为之前访问的目标报头(也被称为目标节点报头)。随后,当对分组执行目标选择时,目标选择操作不选择与该报头字段或报头字段序列中列出的标识符相对应的节点作为下一个目标节点。也就是说,目标选择被配置为不选择之前访问的目标报头中列出的每个节点作为下一个目标节点。因此,这些节点被排除在选择之外,以减轻或避免多跳环路的存在。这可以通过例如在执行目标选择时忽略作为目标节点的此类节点的存在来实现。需要说明的是,在各种实施例中,之前访问的目标报头中列出的节点仍然可以在源路由报头中指定为中间节点。由于使用源路由(在一些实施例中),只有有限数量的处理分组的节点是目标节点。(特别地,只有srh中的最后一个节点是当前目标节点。)这使得之前访问的目标报头的实现更可行,因为并非分组经过的每个节点都需要在分组之前访问的目标报头中列出。
57.图3a示出了具有不规则拓扑的示例性网络。示出了拥有数据分组的第一节点310和数据分组的目的地320。目的地可以使用物理位置的指示在分组中指示。还示出了网络的耦合到第一节点310的有限部分330。有限部分330也可以称为第一节点310的路由区域。根据本发明的一个实施例,第一节点确定网络的有限部分330内的目标节点332。图3b示出了目标节点332。
58.在一个实施例中,目标节点332选择为在网络的有限部分330内、与目的地320具有最短大圆距离的节点。如上所述,可以根据节点的经纬度坐标或根据相关的笛卡尔公式,使用半正矢公式计算大圆距离。可以确定多个网络节点(例如网络的有限部分330内的一些或所有节点)到目的地320的大圆距离。然后,可以从这些多个节点中选择与目的地存在最短大圆距离的节点。为此目的,第一节点310可以维护网络的有限部分330中的一些或所有节点的物理位置信息。
59.还维护网络的有限部分330的路由信息,路由信息可以包括关于网络的有限部分330中的节点之间的可用通信链路的信息。例如,可以通过在节点之间传递消息来维护位置信息和路由信息,这些消息表示并响应位置变化、路由变化或两者。路由信息可以包括路由表,路由表是根据网络的有限部分中的节点之间的通信链路的动态状态更新和网络的拓扑的动态变化中的一个或两个维护的。网络的拓扑可以指网络(例如其有限部分)中存在节点和链路。
60.仍然参考图3b,第一节点使用其路由信息(例如路由表)来确定到目标节点332的完整路由。在本示例中,完整路由包括直接耦合到第一节点的下一个节点334和目标节点332。下一个节点334沿着到目标节点332的可用(例如最短)路径。第一节点可以根据经度/
纬度信息选择目标节点。然后,第一节点可以在其(例如spf)路由表中查找位于通往选择的目标节点的路径上的一组节点(这种情况下是下一个节点334)。本领域技术人员将容易理解,各种标准可用于选择一组节点。例如,这组节点可以选择为限定使用dijkstra算法确定的spf路由。这组节点应沿着第一节点和目标节点之间并连接第一节点和目标节点的可用网络路径。选定的可用网络路径可以是通往目标节点的首选路径,该路径根据预定规则(如spf规则)确定。
61.图3b还示出了包括源(或分段)路由报头(source routing header,srh)372、之前访问的目标报头374和有效载荷376的分组370。这表示在第一节点310配置之后和在经过目标节点332期间出现的分组。srh 372包括沿着通往目标节点332(并包括目标节点332)的路径的一组节点的标识符。在本示例中,srh包括下一个节点334和目标节点332的标识符。当每个节点接收到分组时,它从srh的开头删除自己的标识符(或者更新索引字段以指向srh中的下一个标识符),并将分组转发到srh中列出的下一个节点。之前访问的目标报头374包括之前处理分组并执行(对于该分组)目标选择、源路由或源路由的替代方案的目标节点的标识符列表。在本示例中,之前访问的目标报头374包括第一节点310的标识符。
62.分组沿着确定的路由转发到目标节点(例如,使用源路由),以便它沿着路由(路径)经过所有节点。下一个节点334,因为它是沿路由的中间节点,所以简单地将分组转发到srh中列出的下一个节点。目标节点334因为它是沿着路由的最后一个节点和srh中列出的最后一个节点,所以执行分组的进一步路由和处理。
63.图3c示出了目标节点332在接收分组时重复上述过程。目标节点332看到网络的不同有限部分340(即维护有限部分的位置信息和路由信息),并且选择另一个目标节点342为在网络的不同有限部分340内、与目的地320具有最短大圆距离的节点。在选择下一个目标节点时,节点332省略了对目标节点接收的之前访问的目标报头中列出的节点的考虑。换句话说,节点310作为下一个目标节点被省略。这抑制了在路由中创建重要环路的可能性,该环路将使分组返回到之前访问的节点,例如第一节点310,该节点之前对该分组执行源路由(或替代方案)。例如,当目标节点接收到分组并将分组路由回第一节点(作为下一个目标节点)时,可能会发生这种情况。然后,第一节点310和目标节点332将可能重复它们的之前路由动作,导致分组卡在环路中。
64.在分组路由过程中,可能会发生非重要环路。特别地,当到达目标节点的最短路径穿过分组之前经过的最短路径之一(与分组之前经过的最短路径之一共享节点)时,可能会发生这种情况。这些类型的环路并不是重要的,因为分组是使用源路由(或替代方案)路由的。也就是说,尽管分组经过节点两次,但分组仍然可以保证到达其当前目标节点,该目标节点被禁止与任何之前的目标节点相同。这可能会导致一些路由效率低下(因为分组可能会经过一些之前看到的节点)。但是,出现这种可能性是因为路由是在本地执行的,而没有对网络拓扑的全局了解。通过在本地做出决策,降低了支持路由的计算复杂性和内存要求,这对于有限的板载处理节点(如卫星节点)非常重要。
65.然后,目标节点332使用其路由信息来确定到另一个目标节点342的完整路由。在本示例中,完整路由包括直接耦合到目标节点332和目标节点342的下一个节点344。然后,使用源路由(或替代方案)沿着确定的路由转发分组。换句话说,目标节点332重复与第一节点310相同的过程。
66.图3c还示出了包括源(或分段)路由报头(source routing header,srh)372、之前访问的目标报头374和有效载荷376的分组370。这表示在第一目标节点332配置之后和在经过第二目标节点342期间出现的分组。srh 372包括沿着从第一目标节点332到第二目标节点342(并包括第二目标节点342)的路径的一组节点的标识符。在本示例中,srh包括下一个节点344和第二目标节点342的标识符。在本示例中,之前访问的目标报头374包括第一节点310的标识符和第一目标节点332的标识符。
67.在图3d中,拥有分组的节点342看到网络的有限部分350,该有限部分现在包括目的地320。因此,节点342选择目的地320作为目标节点。然后,节点342使用其路由信息来确定到另一个目的地320的完整路由。在本示例中,完整路由仅包括目的地节点320,因为节点342和320通过单个通信链路直接耦合。因此,网络路径的长度只有一跳,源路由似乎与一跳路由相同(只选择了紧接着的下一个节点)。然后,使用源路由沿着确定的路由转发分组,在本例中,源路由看起来与传统的一跳路由相同。换句话说,目标节点342重复与第一节点310相同的过程。
68.虽然图3b和图3c示出了目标节点332、342分别位于主动路由节点310、332的有限网络部分330、340的边缘,但情况不一定总是这样。所有网络节点都可能是路由节点。然而,术语“主动路由节点”是指主动为特定分组做出路由决策的节点。主动路由节点通常由源节点和目标节点组成,如本文所述。例如,在图3d中,目标节点320可能不在有限网络部分350的边缘上。
69.由于之前访问的目标报头仅保留访问的目标节点的标识符,而不是所有节点的标识符,因此此报头的平均大小将减小。此外,短(例如,两字节或更少)标识符可能足以包括在此报头中。在一些实施例中,srh可以在每个主动路由节点(目标节点或源节点)填充,并随着分许源路由到下一个目标而逐渐清空。因此,srh的平均大小也得到了减小。此外,srh的大小是有限的,因为网络的有限部分的大小也是有限的。在每个主动路由节点上,srh将被新的srh替换。
70.在上面的示例中,目标节点可以选择为最靠近(在大圆距离上)分组最终目的地的单个节点。从执行选择的节点的角度来看,选择是从网络的有限部分中的所有节点中进行的。然而,在各种其它实施例中,目标节点可以选择为相对靠近最终分组目的地或满足某一预定目标的多个候选目标节点之中的一个节点。例如,可以确定最靠近(在大圆距离上)最终分组目的地的k个节点,然后可以从这k个节点之中选择目标节点。选择可以随机进行,也可以根据预定的和潜在的任意规则进行。例如,目标节点选择可以根据等价多路径路由执行。在该方案中,哈希函数可以应用于流和根据哈希函数的输出选择的目标节点。这允许流向同一目的地的流分布在一组等成本目标上。
71.如上所述,两个节点之间的大圆距离可以根据半正矢函数确定。半正矢函数用于确定球体表面上两点之间的大圆弧距离,两点的经纬度坐标是给定的。半正矢函数本身由公式给出:
[0072][0073]
这里,d是距离,r是球体(地球)的半径,(λ1)和(,λ2)分别是两点中第一点和
第二点的(纬度,经度)坐标。项2r可以从计算距离度量的公式中移除,因为它同样适用于所有距离。
[0074]
需要说明的是,大圆距离可以近似,而不一定要评估每对点的半正矢函数。例如,可以使用更简单的函数(例如多项式或分段函数)来执行查找表操作或评估操作。这种操作的输出可以与半正矢函数的输出大致相同。此外,近似半正矢函数的操作不一定是精确的近似操作。距离测量在本发明中用于比较不同的距离对。具体地,近似距离度量仅要求当点a和b之间的距离(例如,使用半正矢测量)大于点c和d之间的距离时,应用于点a和b的近似距离度量产生的值大于应用于点c和d的近似距离度量(需要说明的是,点a和c可以是同一点)。为了实现本发明的目的,该近似距离度量可以称为近似半正矢函数。近似函数使得使用近似函数进行的目标节点选择与使用半正矢函数或准确确定大圆距离的另一个函数进行的目标节点选择基本上相同。
[0075]
或者,大圆距离可以使用笛卡尔方法评估,描述如下。球体(例如,地球或在给定高度围绕地球的轨道球体)表面上的两点的位置通过两个矢量p1和p2表示。这两个矢量起始于位置o,通常是球体的中心,第一矢量终止于第一点,第二矢量终止于第二点。这两个矢量在三维笛卡尔坐标系中表示。矢量p1在该坐标系中具有由矢量值(p1x,p1y,p1z)给出的x、y和z坐标,而矢量p2具有由值(p2x,p2y,p2z)给出的坐标。在这种情况下,可以证明两点之间的大圆距离是两个矢量p1和p2的点积的函数。具体来说,大圆距离由以下公式给出:
[0076]
d=cos-1
(p1x*p2x+p1y*p2y+p1z*p2z)=cos-1
(p1
·
p2)
[0077]
也可以使用由上述函数给出的大圆距离的近似距离。例如,函数cos-1
可以使用近似函数代替,如线性或多项式近似函数。上面所示的笛卡尔函数可以通过类似于半正矢函数的各种方式近似。
[0078]
根据笛卡尔函数,两个网络位置之间的大圆距离可以通过计算第一矢量和第二矢量的内积来确定或近似,第一矢量起始于第一点(例如地球的中心)且指向网络位置中的一个位置,第二矢量起始于第一点且指向网络位置中的另一个位置。网络位置中的一个位置可以是网络的有限部分中的节点的位置,另一个位置可以是数据分组的目的地的物理位置。
[0079]
为了简单起见,在一些实施例中,当两个位置处于不同的高度(例如,一个位置是地面网络节点的位置,另一个位置是卫星节点的位置)时,为了计算大圆距离,可以认为两个节点处于相同高度。在其它实施例中,可以将额外的距离添加到计算的大圆距离中,以便反映高度差。
[0080]
网络的有限部分可以具有特定的或可配置的大小。较大的大小通常需要高端维护,例如在消息传递和计算方面,以保持路由表是最新的。然而,较大的大小也是有利的,因为通往目标节点的最短路径更靠近通往最终分组目的地的最短路径。网络的有限部分可以根据操作要求调整大小。例如,可以根据网络的链路中断特征设置大小。当预计链路中断比较频繁时,网络的有限部分可以更大,从而包括更多节点。当预计链路中断不那么频繁时,网络的有限部分可以变小。大小调整可以附加或替代地根据要包括在源路由报头中的期望平均节点数(当使用时)、要包括在之前访问的目标报头中的期望平均节点数或其组合等考虑因素来设置。例如,为了减少之前访问的目标报头中的平均节点数,可以使网络的有限部分更大。然而,这也倾向于增大srh的大小。大小调整可以附加或替代地根据可以经受流量
工程的网段的数量或长度来设置,如下面将更详细地描述的。
[0081]
网络的有限部分(对于一个或多个节点)的大小可以根据跳数、半径或空间区域等指定。例如,网络的有限部分可以指定为包括:网络的位于第一节点的预定数量(例如大于1)的跳内的所有节点,或者网络的在第一节点的预定距离内的所有节点;或位于包括或邻近第一节点的预定空间区域(例如球体或规则或不规则区域)内的所有节点。第一节点可以位于网络的有限部分的边缘或内部(例如,在有限部分的中心)。然后,可以通过调整预定跳数、距离或空间区域来控制网络的有限部分的大小。在这种情况下,第一节点是确定网络的有限部分的节点。不同的节点可以看到网络的不同有限部分。
[0082]
由于每个节点仅维护网络的有限部分(例如,位于给定节点的n跳内的所有节点)的物理位置和路由信息,每个节点只需要维护有限信息。例如,每个节点可能只需要维护有限节点(即其网络有限部分内的节点)的信息数据库。此外,节点只需要计算路径(例如,使用spf算法),考虑的是其网络的有限部分内的节点,而不是网络的所有节点。这不仅减少了每个节点中保存这样一个数据库所需的内存容量,而且还减少了spf计算时间(dijkstra运行时间)。当网络部分足够小时,spf几乎可以实时计算。但是,对于可靠路由,每个节点具有该节点看到的网络的有限部分中的所有链路的最新状态是有用的。在一些实施例中,为了实现这一点,关于任何链路或节点发生的任何事件都泛洪到至少所有网络节点,这些节点会在它们的数据库中跟踪该链路或节点的状态。也就是说,将给定网络位置中的事件传递给将给定网络位置看作网络的有限部分的一部分的节点。这种方法比在全网范围内泛洪状态更新消息简单,因为响应给定事件的状态更新消息仅限于整个网络的一小部分。例如,如果限定网络部分大小是位于给定节点的n跳内的所有节点,则可能需要将任何事件(例如链路/节点故障或创建)传递给位于事件的n跳(而不是更多跳)内的所有网络节点。需要说明的是,这降低了控制平面操作的复杂性,也降低了数据平面操作的复杂性,因为转发表很小,可以相对较快地进行查找。例如,控制平面操作可以包括泛洪和更新节点上的网络拓扑,更新spf计算以及路由和转发表。
[0083]
网络中的节点可以相对固定,或者它们可以相对于彼此移动。例如,在包括卫星网络节点或地面移动网络节点的网络中,部分或所有节点相对移动。响应于节点的运动,网络节点拥有的物理位置信息(与网络的有限部分中的其它节点有关)可以随着时间的推移而变化。这种变化可以响应内部保存的时间表,如年历或星历数据,也可以响应表示这类位置变化的外部消息。
[0084]
图4示出了本发明一个实施例提供的包括两个主要阶段的路由方法400。在第一阶段中,执行目标选择410。目标选择包括选择满足大圆距离目标的目标节点,如本文所述。目标节点可以从进行目标选择的节点所跟踪的网络的有限部分中选择。在第二阶段中,执行通过最短路径到选定目标的源路由420。在源路由中,确定到选择的目标的路径,该路径可以是直接的(零中间节点),也可以包括一个或多个中间节点。所述路径属于网络的有限部分且位于节点和目标节点之间的可用网络路径上。分组通过路由转发到目标节点。这可以包括使用源路由报头配置分组,后续节点根据源路由和转发协议处理所述报头。
[0085]
本发明的一些实施例提供了以下潜在优点。通过要求每个节点只跟踪网络的有限部分,解决了宽带卫星网络中的缩放问题。在大型扁平化网络中启用分布式链路状态协议。通过使用距离作为成本度量,性能和路由直接相关。缩小了单个网元的路由范围,但不一定
需要网关路由器。减少了通过网络泛洪信息的要求。减少了最短路径计算和相关数据结构。可以提供相对稳定的路由,特别是在高链路故障制度中。通过在节点之间定义分段并在每个分段上执行流量工程,可以支持分段流量工程。通过修改使用链路状态协议,并与地理坐标相结合来简化路由。所有节点都可能以相同的方式工作,尽管对于任何给定的分组,一些节点可以执行下一个目标节点选择,而其它节点可以根据源路由简单地充当中间转发节点。只有某些活动路由节点(例如目标节点或源节点)执行路由操作,并且仅对网络的有限分段执行路由操作。其它(中间)节点只需根据主动路由节点配置到分组中的srh内容转发分组。计算和存储要求也降低,这有利于资源有限的部署(例如在卫星和iot设备中)。
[0086]
虽然本发明的实施例主要结合卫星网状网络(例如,具有极星座或沃克德尔塔星座或其它星座配置)中的路由进行描述,但应当理解,本发明也可以应用于其它网络场景,例如应用于不一定涉及卫星的其它几何或地理路由系统中,或应用于其它非几何或非地理路由系统中,例如,其中的分组仅仅根据网络地址(例如由嵌套子网排列)和网络拓扑进行路由。本发明的实施例可以应用于拓扑稳定或具有动态或超动态网络拓扑变化的网络。
[0087]
本发明的实施例可以使用电子硬件、软件或其任何组合实现。在一些实施例中,转发平面由一个或多个计算机处理器执行存储在存储器中的程序指令来实现。在一些实施例中,转发平面部分或全部在硬件中实现,例如使用一个或多个现场可编程门阵列(field programmable gate array,fpga)或专用集成电路(application specific integrated circuit,asic)来快速执行处理操作。转发平面操作可以包括:确定与将数据分组转发到目的地设备相关联的成本或效用(例如距离或近似距离);确定成本最低或效用最高的目的地设备的子集;选择目的地设备中的一个设备;将数据分组转发到选择的目的地设备。
[0088]
图5示出了本发明实施例提供的用于在网络中路由数据分组的装置500。所述装置位于拥有数据分组的网络的节点510处,例如但不一定限于卫星节点。所述装置包括网络接口520和处理电子器件530。处理电子器件可以包括执行存储在存储器中的程序指令的计算机处理器,或数字电路等其它电子器件,包括fpga和asic等。网络接口可以包括光通信接口或无线电通信接口,例如,发送器和接收器。所述装置可以包括几个功能组件,每个功能组件使用底层网络接口520和处理电子器件530部分或全部实现。
[0089]
所述装置包括网络跟踪组件540,用于维护关于网络的直接耦合到节点510的有限部分的当前信息。所述信息可以包括:直接耦合到网络的有限部分中的节点的物理位置信息和网络的有限部分的路由信息。所述信息可以通过接收和处理表示当前网络条件的控制平面消息、通过根据内部模型预测网络条件变化或其组合来维护。所述装置包括目标节点选择组件545。目标节点选择组件用于从网络的有限部分中的节点中选择目标节点,其中,所述目标节点满足关于到数据分组的目的地的物理位置的大圆距离的给定目标。这可以包括选择目标节点为最靠近分组目的地位置的节点,或从最靠近分组目的地位置的k个节点之中选择目标位置。目标节点选择组件还可以用于从被认为是潜在的下一个目标节点的一组节点中省略之前访问的目标报头中列出的节点(因为报头是由目标节点接收的)。目标节点选择组件的这一方面可以称为环路抑制组件。
[0090]
所述装置可以包括距离计算组件547,其可以是目标节点选择组件545的一部分或耦合到其上的单独组件。距离计算组件用于确定网络节点对之间、网络节点和分组目的地位置之间或地理坐标之间的大圆距离或近似大圆距离。
[0091]
所述装置还包括:分组路由组件550,用于根据路由信息,确定通过网络的有限部分且位于节点和目标节点之间的可用网络路径上的路由。路由可以根据路由表确定,路由表根据目标节点选择路由。路由表可以由网络跟踪组件540根据当前网络信息维护。为此目的,例如,网络跟踪组件可以根据最短路径优先算法维护路由表,该算法确定通往潜在目标节点的最短路径,并将这些路径与沿着到目标节点的相应最短路径的适当节点关联。
[0092]
所述装置还包括分组配置和处理组件555,用于使用网络接口520向下一个节点转发分组。分组配置和处理组件可以实现为单独组件的集合。分组配置和处理组件可以根据接收到的分组的报头内容而以不同方式操作。例如,当分组包括表示装置500所在的节点510以外的一个或多个节点的srh时,分组配置和处理组件555可以用于从srh中删除其标识符(或者更新指向srh的下一个主动部分的索引字段),并将分组转发到srh中标识的下一个节点。在这种情况下,装置的其它组件不一定相对于这个特定的分组具体接合。
[0093]
当分组是新生成的,或者不包括表示除节点510以外的一个或多个节点的srh时,分组配置和处理组件555可以用于接合目标节点选择组件545以选择新的目标节点以将分组转发到选择的新目标节点,并且接合分组路由组件550以确定到选择的新目标节点的路由。此外,分组配置和处理组件用于将确定的路由编码到分组中,例如,作为沿该路由要访问的节点的一个或多个标识符的序列。此外,分组配置和处理组件用于将其自己的标识符附加到分组的之前访问的目标报头。分组配置和处理组件还用于使用网络接口,沿着源路由将分组转发到下一个节点。在一些实施例中,而不是实现源路由,分组路由组件550可替换地用于根据备选路由操作,如下文所述。
[0094]
现在将描述源路由实施例的替代方案。在一个实施例中,每个节点用于为特定区域中的每个其它节点维护路由表(以及可能的物理位置信息表)的副本。对于给定节点,此区域由所有可能充当第一节点的节点组成,给定节点是向目标节点传输分组的中间节点。换句话说,每当节点可以充当来自源节点的分组的中间节点时,该节点将优选地获取该源节点的路由表(或等效信息)的副本。类似地,可以向节点提供由该源节点保存的其它节点的物理位置信息表的副本。这可以通过例如每个节点标识其区域中的所有潜在目标节点,并定期向目标节点传输其路由表(以及可能的物理位置信息表)的副本,并使用指示使中间节点使用传输的内容更新其源节点路由表的本地副本来实现。随后,当在中间节点接收到分组时,该中间节点根据报头信息标识源节点,并使用其源节点路由表的副本确定要将分组转发到的下一个节点。(为此,源节点将源节点的标识符包括在分组中。)对于给定的分组,由于所有中间节点都使用相同的路由表,因此路由与源节点会选择的路由一致,例如,使用显式源路由。因此,网络节点用于使分组经过特定路由到达目标节点,其中,该路由由源节点确定。一旦到达目标节点,目标节点将成为新的源节点,并重复该过程。但是,使用这种方法,每个中间节点维护多个路由表,并根据报头信息在它们之间切换,这可能会增加复杂性和内存要求。这种复杂性的增加可能会被显式源路由所需的报头大小的减小所抵消。
[0095]
每个节点可以为其它节点维护网络拓扑图的表示,而不是维护路由表。给定节点的拓扑图指定了该给定节点所看到的本地网络拓扑,包括网络的对应有限部分中节点的存在、这些节点之间的可用通信链路,以及可能还包括这些通信链路的参数和/或这些节点的物理位置信息。可以根据拓扑图生成路由表。
[0096]
换句话说,相对于上述内容,第一节点配置一组节点以使分组经过确定的路由到
达目标节点,如下文所述。第一节点将其用于网络的有限部分330的路由信息(例如路由表)传输到一组节点中的每一个节点。从第一节点的有限角度来看,路由信息表示第一节点所看到的网络的有限部分330中的所有节点对之间的当前链路可用性。所述一组节点中的每个节点还用于通过根据第一节点提供的路由信息做出路由决策来确定分组的路由。在一些实施例中,配置一组节点包括显式通知目标节点的一组节点中的每一个节点,例如通过在分组中(例如在分组报头中)或在单独的控制消息中包括目标节点的指定(designation)。然后,每个节点确定到目标节点的路由。如果找不到这样的路由,则由当前拥有分组的节点选择新的目标节点。
[0097]
在一些实施例中,如上所述,配置一组节点包括由第一节点将物理位置信息表(如第一节点所看到的)传输到一组节点中的每个节点。因此,每个节点可以具有第一节点的物理位置信息表的副本。随后,如果每个节点接收到分组,则用于根据接收到的物理位置信息表选择目标节点。这是通过根据写入分组(例如在分组报头中)的信息标识第一节点,然后查阅与该分组相对应的物理位置信息表来执行的。每个中间节点可以持有多个源节点对应的多个物理位置信息表。由于物理位置信息相同,在初始目标节点选择后,接收分组的每个节点将选择相同的目标节点。因此,网络的一组节点用于使分组经过确定的路由到达目标节点。
[0098]
图6a和图6b示出了上述实施例的示例。在图6a中,源节点310向网络的有限部分330内的所有其它节点传输控制消息610。例如,控制消息可以通过有限的泛洪协议传输。控制消息包括表示控制消息性质的报头612、源节点310的标识符614和网络的有限部分330的路由信息616。路由信息是源节点310看到的信息,可以包括路由表、本地网络拓扑图的指示等。控制消息还可以包括网络的有限部分330中的节点的物理位置信息618。如果必要,所述物理位置信息可以用于以与源节点310将执行的目标选择一致的方式由其它节点执行(或重新执行)目标选择。每个节点都可以执行这种类型的控制消息传输。
[0099]
在图6b中,源节点310向下一个(中间)节点334传输分组620。假设源之前已经确定目标节点332适合于将分组传送到目的地320。分组620包括源节点310的标识符622和目标节点332的标识符624,以及有效载荷628。虽然没有明确示出,但分组还可以包括之前访问的目标报头,该报头如之前所述操作。
[0100]
当中间节点334接收到分组620时,它使用字段622标识源节点。然后,中间节点根据字段622中标识的源节点执行路由操作(以及可选地还执行目标节点选择)630。特别地,中间节点334保存从包括源节点310的多个节点接收的路由信息(以及可选地还包括物理位置信息)632的数据库。来自每个特定节点的信息如关于图3a所描述的那样被接收,并且是从其接收的节点的有限角度的信息。源节点310的信息从数据库提供,用于进行路由(以及可选地也进行目标选择)操作630。因此,中间节点334根据从其数据库检索到的与源节点310相对应的信息(并且可选地也是目标选择)执行分组的路由。
[0101]
在一个实施例中,节点位置信息618可以被包括在图6a中,并且目标节点的标识符624可以被省略。在这种情况下,中间节点334也以类似于源节点的方式执行目标选择,但使用与源节点对应的节点位置信息618。因此,相同的目标节点332将由中间节点334选择。中间节点以与选择路由信息的方式类似的方式选择用于目标节点选择的节点位置信息618,如上所述。
[0102]
随后,中间节点向目标节点332向前转发分组620。分组的报头信息可以保持不变,直到到达目标节点。这减少了在每个中间节点更新分组的需要。
[0103]
在另一个实施例中,不使用源路由,节点之间也不共享拓扑图或关联路由表。相反,仅共享指定的目标节点。当前指定的目标节点可以包括在分组中,例如在目标节点报头中。例如,图3b到图3d的之前访问的目标报头374可以被增强,以指定当前目标,该目标被标记为不被视为反环路方案的之前访问的目标的当前目标。在本实施例中,源路由报头372被省略。
[0104]
在这个替代实施例中,考虑到图7,第一节点310维护网络的有限部分330的物理位置信息和路由信息,并选择靠近目的地320的目标节点332,如本文其它地方所述。然后,第一节点310根据路由信息,确定属于网络的有限部分330且位于第一节点310和目标节点332之间的可用网络路径上的下一个节点334。网络路径可以由第一节点确定。第一节点配置下一个节点334优先向目标节点转发分组720。这可以通过在字段724中的分组报头中包括当前目标节点的指定来实现(因此配置和转发可以同时完成)。第一节点向下一个节点334转发分组720,下一个节点334通常通过通信链路直接耦合到第一节点。
[0105]
下一个节点334在接收到分组720后,并看到目标节点332已经在字段724中的分组中被指定,尝试根据其自己的本地维护的路由信息将分组路由到目标节点332。该路由信息可以是下一个节点334所看到的网络的有限部分的路由信息(其不一定与源节点310所看到的有限部分330的路由信息相同)。因此,由下一个节点334确定的到目标节点的路由可能与由源节点310确定的到目标的路由不同。然而,目标节点332保持不变。如果下一个节点334不能确定到目标节点332的路由,则它可以作为主动路由节点操作并选择新的目标节点。然后,下一个节点将分组转发到位于通往目标节点(或在这种情况下,直接通往目标节点332)的路径上的另外下一个节点,并且该过程继续。可选地,分组720可以包括如前所述的之前访问的目标报头374。
[0106]
需要说明的是,在上述场景中,如果节点无法将分组路由到优选或指定的目标节点(如由第一节点标识的),例如由于链路故障,该节点可以执行目标节点重选。
[0107]
本发明的实施例在将分组转发到目标节点时通过使用源路由(或替代方案)来操作。每个节点都维护自己的本地链路状态数据库(link state data base,lsdb),只有主动路由节点将通往当前目标节点的整个路径插入srh。由于路径长度受主动路由节点看到的网络的有限部分的大小的限制,因此经过网络的较大部分的分组在多个分段之后,每个分段由主动路由节点(如接收分组的目标节点)定义。因此,可以实现分段流量工程。流量工程应用于目标节点之间定义的分段的规模。这与端到端流量工程不同,端到端流量工程统一应用于分组源和目的地之间的整个路径。
[0108]
更详细地,流量工程可以指根据设计用于在应用于大量分组时控制网络条件的规则执行数分组处理操作,例如目标节点选择和配置到目标节点的路由。例如,不同的分组可以沿着不同的路径路由,以平衡不同路径之间的负载。不同的路径可以涉及不同的目标节点、到目标节点的不同路由或其组合。在一些情况下,可以标识多个相对靠近分组目的地的替代目标节点。这些替代目标节点中的一个节点可以至少部分地根据流量工程或qos标准来选择。一些路径可以与特定的服务质量(quality of service,qos)相关联,例如特定的延迟或抖动级别。这些路径可用于处理具有特定qos要求的分组。分组可以根据其qos要求、
流量工程要求、当前网络条件或其组合将其分配给路径。
[0109]
虽然在本发明的各种实施例中,端到端流量工程不一定是可能的,但分段流量工程可以作为从源到目的地近似这种端到端流量工程的一种方式来执行。通过流量工程,节点可以控制其区域中的流服务质量(quality of service,qos),并仅在其区域中提供负载平衡、延迟控制、拥塞控制等。分段流量工程通过使主动路由节点根据qos要求和网络负载平衡要求等要求选择其下一个目标节点、到下一个目标节点的路径或其组合来实现这一目标。由于采用了源路由(或替代方案),分组在被选择后基本上可以保证到达目标节点(而不是响应中间节点作出的路由决策而改变目标节点)。这允许更可靠地执行流量工程,因为到目标节点的选择的路由被一致使用。
[0110]
节点可以至少部分地根据满足一个或多个流量工程条件来选择其目标节点。这可以对应于选择在节点之间进行的流量工程分段。可以管理流量工程分段,例如尝试保留某些qos条件。
[0111]
图8示出了本发明示例实施例提供的在相应网络节点810、812、814、816、818之间定义的多个流量工程(traffic engineering,te)分段820、822、824、826。节点810可以指定节点812作为目标,节点812可以指定节点814作为目标,节点814可以指定节点816作为目标,节点816可以指定节点818作为目标。例如,在控制平面或管理平面中,te分段可以由运行在网络中的流量工程管理组件管理。
[0112]
图9为本发明不同实施例提供的电子设备900的示意图,该电子设备900可以执行本文显式或隐式描述的上述方法和特征的任何或全部操作。例如,配备网络功能的计算机可以配置为电子设备900。例如,电子设备900可用于实现图5的装置500。
[0113]
如图所示,该设备包括处理器910,例如,中央处理单元(central processing unit,cpu)或专用处理器,例如图形处理单元(graphics processing unit,gpu)或其它这样的处理器单元、存储器920、非瞬时大容量存储器930、i/o接口940、网络接口950和收发器960,所有这些都通过双向总线970通信耦合。根据某些实施例,可以使用任何或所有所描绘的元件,或者仅使用元件的子集。此外,设备900可以包括某些元件的多个实例,例如多个处理器、存储器或收发器。此外,硬件设备的元件可以直接耦合到没有双向总线的其它元件。除了处理器和存储器之外,可以使用集成电路等其它电子器件来执行所需的逻辑操作。
[0114]
存储器920可包括任何类型的非瞬时性存储器,例如静态随机存取存储器(static random access memory,sram)、动态随机存取存储器(dynamic random access memory,dram)、同步dram(synchronous dram,sdram)、只读存储器(read-only memory,rom)或其组合等。大容量存储单元930可以包括任何类型的非瞬时性存储设备,例如固态驱动器、硬盘驱动器、磁盘驱动器、光盘驱动器、usb驱动器或用于存储数据和机器可执行程序代码的任何计算机程序产品。根据某些实施例,存储器920或大容量存储器930可以在其上记录了由处理器910可执行的用于执行上述任何方法操作的语句和指令。
[0115]
应当理解,尽管为了说明的目的,本文已经描述了该技术的具体实施例,但在不脱离该技术的范围的情况下,可以进行各种修改。说明书和附图仅被视为所附权利要求书所定义的本发明的说明并且考虑落于本说明书的范围内的任何和所有修改、变体、组合或均等物。具体地,提供用于存储机器可读取的信号的计算机程序产品或程序元件,或诸如磁或光线、磁带或光盘等的程序存储或存储设备,在本技术的范围内,用于根据本技术的方法控
制计算机的操作和/或根据本技术的系统构造其部分或全部组件。
[0116]
与本文描述的方法关联的动作可以在计算机程序产品中实现为编码指令。换句话说,计算机程序产品是一种计算机可读介质,当计算机程序产品被加载到存储器中并在无线通信设备的微处理器上执行时,软件代码被记录在该介质中以执行该方法。
[0117]
此外,该方法的每个操作可以根据从c++、java等任何编程语言生成的一个或多个程序元素、模块或对象的一个或多个或一个或多个程序元素、模块或对象的一部分在任何计算设备上执行,例如个人计算机、服务器、pda等。此外,每个操作或实现每个所述操作的文件或对象等可以由专用硬件或为此目的设计的电路模块执行。
[0118]
通过上述实施例的描述,本发明可以仅通过硬件实现,也可以通过软件和必要的通用硬件平台实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现。软件产品可以存储在非易失性或非瞬时性存储介质中,非易失性或非瞬时性存储介质可以是光盘只读存储器(compact disk read-only memory,cd-rom)、usb闪存盘或移动硬盘。软件产品包括许多指令,这些指令使得计算机设备(个人计算机、服务器或网络设备)能够执行本发明实施例中提供的方法。例如,这样的执行可以对应于如本文所述的逻辑操作的模拟。根据示例性实施例,软件产品可以附加地或替代地包括多个指令,这些指令使得计算机设备能够执行配置或编程数字逻辑装置的操作。
[0119]
如将很好地理解,上述公开内容提供了一种用于在网络中路由数据分组的方法,其中,数据分组指定所述数据分组的目的地的物理位置,所述方法包括:在拥有数据分组的网络的第一节点处,维护网络的有限部分中的直接耦合到第一节点的节点的物理位置信息,维护网络的有限部分的路由信息,其中,网络的有限部分包括通过至少一个中间节点间接耦合到节点的至少一个节点;从网络的有限部分中的节点中选择目标节点,其中,目标节点满足与数据分组的目的地的物理位置的大圆距离的预定目标,目标节点不与第一节点相邻;根据路由信息,确定通过网络的有限部分到目标节点的路由;配置网络的一组节点,使分组经过确定的路由到达目标节点;向所述目标节点转发分组。在一个实施例中,配置下一个节点优先向目标节点转发分组包括:配置分组携带目标节点的标识,其中,所述下一个节点用于当下一个节点能够根据下一个节点持有的路由信息确定到目标节点的路由时,将分组路由到目标节点。
[0120]
尽管已经参考本发明的特定特征和实施例描述了本发明,但是明显在不脱离本发明的情况下可以制定本发明的各种修改和组合。说明书和附图仅被视为所附权利要求书所定义的本发明的说明并且考虑落于本说明书的范围内的任何和所有修改、变体、组合或均等物。