Segment Routing(MPLS) - 3 隧道建立与业务应用

1. SR-BE隧道的建立

SR-BE隧道可以由IGP动态生成,这种配置比较简单,

2. SR-TE隧道的建立

SR-TE隧道有三种形式:

- 手工配置:适合网络规模比较小的网络,不需要控制器的配合,但是不支持带宽预留等。

- 头节点使用CSPF算法算路:这种形式支持带宽的预留,但是这种形式只是站在局部视角角度计算最优路径,无法做到全局最优

- 控制器算路:主要有几个步骤:

a- 在转发器上配置IGP和SR,由IGP完成拓扑发现和标签生成;

b- 转发器使用BGP LS将拓扑信息和标签信息上报给控制器;

c- 控制器完成路径计算;

d- 控制器将计算完成的SR-TE隧道信息通过Netcof下发给转发器;

e- 由转发器生成隧道信息

Segment Routing(MPLS) - 3 隧道建立与业务应用

由控制器生成的SR-TE隧道具有以下几个优势:

a- 控制器支持带宽计算和资源预留,可以站在全局的视角计算最优路径

b- 控制器可以和网络中的应用进行配合,由应用提出需求,控制器快速响应应用需求,然后计算符合应用需求的网络转发路径,真正做到由应用来驱动网络。

c- 控制器下发隧道配置使无需大量的手工配置,更适合大规模网络

Segment Routing(MPLS) - 3 隧道建立与业务应用

SR隧道建立以后,还需要将业务流量导入SR隧道,这个过程称为引流。 SR-BE由于没有隧道接口,所以它的引流方式和SR-TE有所不同。SR-BE支持三种引流方式,SR-TE支持四种引流方式。

Segment Routing(MPLS) - 3 隧道建立与业务应用

SR-BE引流方式:

a- SR-BE支持隧道策略,按照隧道优先级顺序优先选择SR-BE隧道

b- 配置静态路由时,指定静态路由下一跳为SR-BE隧道目的地址,根据下一跳迭代SR-BE隧道

c- BGP等公网路由,可以根据路由下一跳迭代SR-BE隧道

SR-TE引流方式:

a- SR-BE支持隧道策略,按照隧道优先级顺序优先选择SR-TE隧道,也可进行隧道绑定

b- 配置静态路由时,可将出接口设置为SR-TE隧道的接口

c- 自动路由,即将SR-TE隧道看作逻辑链路参与IGP路由计算,IGP路由的出接口为SR-TE隧道接口

d- 策略路由,可以将策略路由里apply语句的出接口,设置为SR-TE隧道接口

支持迭代SR隧道的业务有静态路由,L3v*n,BGP公网路由,VPLS,Ev*n等,这些业务的转发过程都非常类似,此处以L3v*n为例,讲解路由发布过程和数据转发过程。

首先是公网隧道的建立,需要在公网上配置IGP和IGP SR,建立SR-BE隧道或SR-TE隧道;然后是私网路由发布,CE2向PE2发布私网路由,PE2转换为BGP v*nv4路由通过BGP邻居向PE1发布。PE1将路由交叉到CE1对应的v*n实例路由表里,然后通过邻居关系表向CE1发布,这样CE1上就具有CE2的路由。在路由迭代阶段,可以在PE1上配置隧道策略,使路由优选SR-BE隧道或SR-TE隧道。

L3v*n基于SR-BE隧道数据转发过程:

假设现在公网上存在一条SR-BE形式的LSP,这条LSP是这样建立的,首先PE2向PE发布一个标签,假设是36100,然后P2向P1发布一个标签,假设是26100,然后P1向PE1发布一个标签,假设16100,这样就形成了一条LSP;假设现在有一个报文,要从CE1到CE2,初始时是以IP报文的形式,IP报文到PE1之后需要进行封装,首先封装的是v*n标签,该v*n标签是通过BGP分配的,然后在封装一个SR-BE标签,这里使用P1向PE1发布的标签16100,封装好的报文向P1转发;P1上进行标签交换(SWAP)操作,底层不变,外层16100标签交换为26100;P2也进行类似操作,将外层26100标签转换为36100,底层不变,然后P2将报文转发给PE2;PE2接收到报文之后,由于外层标签36100是自身发布的,PE2会去除外层SR-BE标签36100,并且通过v*n标签查找对应的v*n实例路由表,去除v*n标签,将IP报文转发给对应的v*n实例。这里P2是SR-BE隧道的倒数第二跳,如果在P2上配置了倒数第二跳弹出(PHP),P2向PE2发布报文时可以去除外层SR-BE标签36100,只带v*n标签即可。

Segment Routing(MPLS) - 3 隧道建立与业务应用

L3v*n基于SR-TE隧道的转发过程:

首先是SR-TE隧道的建立,这里假设也邻接SID构成的SR-TE隧道,假设PE1-->P1的邻接SID为1001,P1-->P2的邻接SID为1002,P2-->PE2的邻接SID为1003,这样,在PE1上就形成了一个标签栈,这个标签栈就代表一条SR-TE隧道(第一跳1001,第二跳1002,第三跳1003),之后在CE1向CE2发布报文时会进行封装;CE1发布的是普通的纯IP报文;PE1首先封装v*n标签,然后封装完整的标签栈,带三层标签,但因为1001是自身的标签,所以PE1封装完成之后再向P1发送时,就会去除标签1001,只保留1002/1003;P1收到报文后,由于外层标签1002是自己分发的本地邻接标签,从指定的出接口转发出去,会去除1002标签,此时报文为原始IP报文+v*n标签+1003 SR标签;P2收到报文之后,由于外层标签1003是自己分发的本地邻接标签,从1003标签指定的出接口转发报文,同时去除1003标签,此时报文为原始IP报文+v*n标签;PE2收到携带v*n标签的报文之后,根据v*n的标签查找对应的v*n实例路由表,将v*n报文转发给对应的v*n实例,这里就是CE2

Segment Routing(MPLS) - 3 隧道建立与业务应用