一种实现双向segmentrouting隧道的方法及装置与流程

文档序号:16630486发布日期:2019-01-16 06:31阅读:559来源:国知局
一种实现双向segment routing隧道的方法及装置与流程

本发明涉及mpls/mpls-tp网络sr(segmentrouting)隧道技术,特别涉及对sr隧道建立方法的改进,使得传送网能够实现双向sr隧道。



背景技术:

基于ip/mpls或mpls-tp技术的ipran和ptn分组网络,广泛应用于无线基站回传业务的承载。通过mpls标签交换技术建立端到端的隧道,可以为业务提供面向连接的服务。但传统的隧道创建技术(ldp、rsvp-te、静态隧道)都有各自的问题。

rsvp-te隧道,中间节点需要维护每条连接的软状态,可扩展性较差。

ldp隧道和静态隧道虽然在控制面无需维护状态,但在转发面需要为每一条连接配置转发信息,转发面也存在可扩展性的问题。

创建和修改一条端到端的隧道需要为每一个节点分配标签,业务部署的效率不高。

基于源路由的segmentrouting技术可以很好的解决以上问题,通过在源节点压入一系列的标签(segment)来标识端到端的业务路径,其实现方式见图1,在报文进入头节点a后压入bcde四层标签,然后a节点根据最外层的标签b引导报文转发到b节点,在b节点弹出标签b后,再根据标签c引导报文转发到节点c,同样在c节点弹出c的标签再根据内层的标签d将报文转发到节点d,最终转发到目的地e节点。sr可带来以下优势:

中间节点不感知业务状态,只维护拓扑信息,因此没有扩展性问题;

创建和修改隧道只需操作头节点即可,其他节点无需任何操作,可以快速部署业务。

sr与普通的mpls隧道一样都是单向隧道,但在某些场景需要使用双向隧道,比如要求双向严格同路由的场景。针对这些场景,mpls可以在隧道的两端将两条单向隧道关联形成一条双向隧道。但由于sr隧道只在头节点维护连接的状态,尾节点并不携带任何连接信息,如图2所示,从a->e的隧道和从g->e的隧道在到达e点时携带的都是节点e的标签,两者无法区分。因此就无法在两端实现两条单向隧道的关联和绑定,导致了sr的应用存在限制。



技术实现要素:

本文提供一种实现双向segmentrouting隧道的方法及装置,可以解决相关技术中sr隧道无法满足所有场景需求的问题。

本文公开了一种实现双向segmentrouting隧道的方法,包括:

控制器收到创建节点a与节点z之间的双向sr隧道的命令后,计算节点a与节点z之间符合命令要求的路径,为该路径对应的第一方向a->z隧道和第二方向z->a隧道分别分配唯一的listsid,并在节点a和z分别配置第一方向a->z隧道的listsid与第二方向z->a隧道的listsid为双向隧道的绑定关系;

控制器在隧道的两个端点分别将所述listsid作为sr标签栈的一部分置于标签栈内压入用户报文并转发。

可选地,上述方法还包括:

接收到的所述用户报文的中间节点,依据sr转发规则弹出外层sr标签,且不感知内层的listsid,再次转发。

可选地,上述方法还包括:

接收到所述用户报文的尾节点,从所述用户报文中获取listsid并识别出其对应的隧道,从双向隧道的绑定关系中查找识别出的隧道绑定的反向隧道。

可选地,上述方法中,所述控制器在隧道的两个端点分别将所述listsid作为sr标签栈的一部分置于标签栈内压入用户报文包括:

所述控制器在隧道的两个端点分别将所述listsid作为sr标签栈的一部分置于标签栈的最内层或设定位置压入用户报文。

可选地,上述方法中,所述计算节点a与节点z之间符合命令要求的路径,为该路径对应的第一方向a->z隧道和第二方向z->a隧道分别分配唯一的listsid包括:

所述控制器至少根据网络拓扑、路由策略和带宽约束条件计算出节点a至节点z之间符合命令要求的路径,并根据路径经过的segment信息分别为第一方向a->z隧道和第二方向z->a隧道分配唯一的listsid。

可选地,上述方法中,所述计算节点a与节点z之间符合命令要求的路径,为该路径对应的第一方向a->z隧道和第二方向z->a隧道分别分配唯一的listsid包括:

所述控制器根据节点a至节点z之间符合命令要求的路径对应的第一方向a->z隧道的业务信息分配唯一的listsid;

根据节点a至节点z之间符合命令要求的路径对应的第二方向z->a隧道的业务信息分配唯一的listsid。

本文还公开了一种实现双向segmentrouting隧道的装置,包括:

第一单元,收到创建节点a与节点z之间的双向sr隧道的命令后,计算节点a与节点z之间符合命令要求的路径,为该路径对应的第一方向a->z隧道和第二方向z->a隧道分别分配唯一的listsid,并在节点a和z分别配置第一方向a->z隧道的listsid与第二方向z->a隧道的listsid为双向隧道的绑定关系;

第二单元,在隧道的两个端点分别将所述listsid作为sr标签栈的一部分置于标签栈内压入用户报文并转发。

可选地,上述装置中,所述第一单元,计算节点a与节点z之间符合命令要求的路径,为该路径对应的第一方向a->z隧道和第二方向z->a隧道分别分配唯一的listsid包括:

至少根据网络拓扑、路由策略和带宽约束条件计算出节点a至节点z之间符合命令要求的路径,并根据路径经过的segment信息分别为第一方向a->z隧道和第二方向z->a隧道分配唯一的listsid。

可选地,上述装置中,所述第一单元,计算节点a与节点z之间符合命令要求的路径,为该路径对应的第一方向a->z隧道和第二方向z->a隧道分别分配唯一的listsid包括:

根据节点a至节点z之间符合命令要求的路径对应的第一方向a->z隧道的业务信息分配唯一的listsid;

根据节点a至节点z之间符合命令要求的路径对应的第二方向z->a隧道的业务信息分配唯一的listsid。

可选地,上述装置中,所述第二单元,在隧道的两个端点分别将所述listsid作为sr标签栈的一部分置于标签栈内压入用户报文包括:

所述第二单元在隧道的两个端点分别将所述listsid作为sr标签栈的一部分置于标签栈的最内层或设定位置压入用户报文。

本申请技术方案,可以解决mpls/mpls-tp网络中sr只能实现单向隧道的问题,扩大了sr的应用场景,使得sr技术可以应用到所有网络中。

附图说明

图1是相关技术中基于sr的隧道模型示意图;

图2是相关技术中sr隧道在尾节点无法标识连接示意图;

图3是本发明实施例中通过listsid标识不同的sr路径的示意图;

图4是本发明实施例中通过listsid进行sr隧道双向绑定的示意图;

图5是本发明实施例中组网示意图;

图6是本发明实施例中绑定双向sr隧道实施步骤流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文将结合具体实施方式对本发明技术方案作进一步详细说明。需要说明的是,在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

本申请发明人提出设计一种可以实现sr双向隧道的方法,该方法涉及到运行了sr的转发设备以及相关的控制器,通过为每一条sr隧道分配一个唯一的标签来标识端到端路径。此方法原理如图3所示,相对于标准的sr隧道,此方法主要是引入了一个单独的listsid标签来标识一条端到端的连接,将listsid作为sr隧道标签栈的一部分,置于标签栈内,标识一个完整的单向sr隧道标签栈。这样,尾节点可以通过不同的listsid来识别不同的sr单向隧道。如图3,节点e可以通过listsid1的标签识别出这是一条a->e的隧道,通过listsid2的标签识别出这是一条从g->e的隧道,这样就解决了传统sr无法在尾节点标识端到端路径的问题。

解决了路径标识的问题后,可以基于标识实现双向的隧道绑定,如图4所示,在节点a将出标签为listsid1和入标签为listsid2的两条sr隧道进行关联和绑定可看成一条双向sr隧道,同样在节点e可以将入标签为listsid1和出标签为listsid2的两条单向sr隧道绑定为一条双向sr隧道。

基于上述思想,本实施例提供一种实现双向segmentrouting隧道的方法,主要包括:

控制器收到创建节点a与节点z之间的双向sr隧道的命令后,计算节点a与节点z之间符合命令要求的路径,为该路径对应的第一方向a->z隧道和第二方向z->a隧道分别分配唯一的listsid,并在节点a和z分别配置第一方向a->z隧道的listsid与第二方向z->a隧道的listsid为双向隧道的绑定关系;

控制器在隧道的两个端点分别将所述listsid作为sr标签栈的一部分置于标签栈内压入用户报文并转发。

其中,控制器在隧道的两个端点分别将listsid作为sr标签栈的一部分置于标签栈内压入用户报文的方式有多种。例如,为了与普通sr标签栈保持最大的兼容性,可以将listsid作为sr标签栈的一部分置于标签栈的最内层,这样从转发面而言,网络首节点在发送该sr隧道的报文时,将listsid作为sr标签栈的一部分置于标签栈的最内层,并在源节点将完整的标签栈(segmentlist以及listsid)压入到报文头中,携带srsegmentlist以及listsid的报文在mpls/mpls-tp网络中按已有规则进行转发。这样,对于接收到上述用户报文中间节点,则依据sr转发规则弹出外层sr标签(segmentlist),且不感知内层的listsid,随后再次转发。最后,尾节点就可以获取最内层的listsid来识别不同的sr单向隧道。

另外,还可以采用新定义的sr标签栈,此时,将listsid作为sr标签栈的一部分置于标签栈的设定位置压入用户报文,即保证尾节点可以获取用户报文中标签栈内的listsid即可。

而当用户报文到达在尾节点时,尾节点识别出listsid与普通sr标签的区别,及其所代表的单向sr隧道,再根据双向sr隧道绑定配置(即双向隧道的绑定关系),找出对应的sr双向隧道,并进行相应的双向隧道处理(如双向隧道oam,双向隧道保护倒换等,此时可复用其它的双向隧道技术,如mpls-tpoam、mpls-tpaps协议等)

创建双向sr隧道的命令中的参数需要包含隧道的两个端点(a节点和z节点)。可选地,包含路由策略、带宽参数等信息。

控制器计算节点a与节点z之间符合命令要求的路径时,可以根据网络拓扑、路由策略、带宽约束条件等计算出a-z之间符合要求的路径。

要说明的是,本实施例中涉及的新的标签类型listsid,其含义代表一条唯一的端到端sr路径。该标签的定义满足如下条件:

1)listsid标签格式兼容普通的sr标签,对于不识别该标签的设备直接忽略;

2)listsid的标签值用来表示唯一的端到端sr路径;

3)listsid可选定义标签识别符、优先级、是否嵌套等标记。

listsid的生成可以由控制器或者网管完成,具体可以采用如下两种方式中的任一种:

方式一、根据端到端sr路径生成的segmentlist分配listsid,该listsid在尾节点具有唯一性;

方式二、根据端到端业务信息生成listsid,该listsid在尾节点具有唯一性。

本申请还提供一种实现双向segmentrouting隧道的装置,可实现如上所述的方法,其包括如下各单元。

第一单元,收到创建节点a与节点z之间的双向sr隧道的命令后,计算节点a与节点z之间符合命令要求的路径,为该路径对应的第一方向a->z隧道和第二方向z->a隧道分别分配唯一的listsid,并在节点a和z分别配置第一方向a->z隧道的listsid与第二方向z->a隧道的listsid为双向隧道的绑定关系;

第二单元,在隧道的两个端点分别将所述listsid作为sr标签栈的一部分置于标签栈内压入用户报文并转发。

其中,第一单元,计算节点a与节点z之间符合命令要求的路径,为该路径对应的第一方向a->z隧道和第二方向z->a隧道分别分配唯一的listsid的方式可以采用如下两种中的任一种:

方式一、至少根据网络拓扑、路由策略和带宽约束条件计算出节点a至节点z之间符合命令要求的路径,并根据路径经过的segment信息分别为第一方向a->z隧道和第二方向z->a隧道分配唯一的listsid。

方式二、根据节点a至节点z之间符合命令要求的路径对应的第一方向a->z隧道的业务信息分配唯一的listsid;

根据节点a至节点z之间符合命令要求的路径对应的第二方向z->a隧道的业务信息分配唯一的listsid。

另外,第二单元在隧道的两个端点分别将listsid作为sr标签栈的一部分置于标签栈内压入用户报文的方式有多种。例如,为了与普通sr标签栈保持最大的兼容性,可以将listsid作为sr标签栈的一部分置于标签栈的最内层,这样从转发面而言,在发送该sr隧道的报文时,将listsid作为sr标签栈的一部分置于标签栈的最内层,并在源节点将完整的标签栈(segmentlist以及listsid)压入到报文头中,携带srsegmentlist以及listsid的报文在mpls/mpls-tp网络中按已有规则进行转发。这样,对于接收到上述用户报文中间节点,则依据sr转发规则弹出外层sr标签(segmentlist),且不感知内层的listsid,随后再次转发。最后,尾节点就可以获取最内层的listsid来识别不同的sr单向隧道。

另外,还可以采用新定义的sr标签栈,此时,将listsid作为sr标签栈的一部分置于标签栈的设定位置压入用户报文,即保证尾节点可以获取用户报文中标签栈内的listsid即可。

下面结合附图和具体实施实例对上述方案作进一步的详细描述。

以图5所示的组网拓扑为例,详细介绍创建双向sr隧道的实施过程,如图6所示,该过程包括如下操作步骤:

步骤s601,管理者向控制器下发命令,创建a-z之间的双向sr隧道,命令参数需要包含隧道的两个端点(a节点和z节点),可选地包含路由策略、带宽参数等信息。

步骤s602,控制器根据网络拓扑、路由策略、带宽约束条件等计算出a-z之间符合要求的路径,并根据路径经过的segment信息分别生成a->z和z->a两个方向的segmentlist。

步骤s603,控制器为两个方向的segmentlist分别分配listsid,用于作为segmentlist的唯一标识。

例如,给a->z的segmentlist(bcdz)分配listsid=100,z->a的segmentlist(dcba)分配listsid=200。

步骤s604,控制器在隧道的两个端点分别配置listsid的绑定关系。

例如,在a节点将出标签为100的listsid与入标签为200的listsid绑定为一个双向的隧道,同样在z节点将出标签为200的listsid与入标签为100的listsid绑定为一个双向的隧道。

步骤s605,控制器在隧道的两个端点分别将segmentlist及listsid作为完整标签栈压入用户报文。

步骤s606,用户报文携带完整的标签信息转发,中间节点依据sr转发规则弹出segmentlist,且不感知内层的listsid。

步骤s607,用户报文到达尾节点后,依据携带的listsid识别隧道并查找绑定的反向隧道,实现双向隧道功能。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。

以上所述,仅为本发明的较佳实例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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