基于SR隧道的L3VPN数据包转发流程

首先先看一下SR-BE、SR-TE简介

SR隧道简介

控制器计算路径的几个步骤:

1、在转发器上配置IGP、SR,由IGP完成拓扑发现和标签生成
2、转发器使用BGP LS将标签信息和拓扑信息转发给控制器
3、控制器完成路径计算
4、控制器将计算完的SR-TE隧道信息通过Netconfig下发给转发器
5、转发器生成隧道配置

隧道建立完成后需要将业务流量引入隧道,我们称之为引流
SR-BE引流方式:
SR-BE没有隧道接口,所以SR-BE的引流方式和SR-TE引流方式有所不同
SR-BE支持的引流方式:
1、隧道策略:按照隧道优先级优先选择SR-BE隧道
2、静态路由:配置静态路由时指定下一跳为SR-BE隧道的目的地址,根据下一跳迭代SR-BE隧道。
3、IP隧道:BGP等公网IP路由可以根据下一跳迭代SR-BE隧道
SR-TE引流方式:
1、隧道策略:按照隧道优先级优先选择SR-TE隧道,也可以进行隧道绑定
2、静态路由:配置静态路由时,将出接口设置为SR-TE隧道的接口
3、自动路由:将SR-TE隧道看作逻辑链路参与IGP路由计算,IGP路由的出接口为SR-TE隧道的接口
4、策略路由:可以将策略路由里的APPLY语句的出接口设置为SR-TE隧道的接口
支持迭代SR隧道的业务由静态路由、L3VPN、BGP公网路由、VPLS、EVPN等

一、L3VPN路由建立

基于SR隧道的L3VPN数据包转发流程1,首先是公网隧道的建立,需要在公网上建立IGP以及IGP SR,建立SR-BE隧道或者SR-TE隧道。
2,私网路由发布,CE2向PE2发布私网路由,PE2转换为BGP VPN4路由,通过BGP协议向PE1发布。
3,PE1将路由交叉到CE1对应的VPN实例路由表中。然后向CE1发布。
4,这样CE1就有了去往CE2的路由。
在路由迭代阶段,PE1可以配置隧道策略是路由优先选择SR-TE或SR-BE隧道。

基于SR-BE隧道的L3VPN数据转发过程

1.建立隧道。
基于SR隧道的L3VPN数据包转发流程a,PE2向P2发布标签,假设标签值为36100
b,P2向P1发布标签,标签值为36200
c,P1向PE1发布标签,标签值为36300.
此时就形成了一条隧道。

2.报文转发过程

基于SR隧道的L3VPN数据包转发流程
1、CE1上面的报文到达PE1之后,PE1首先给添加上VPN标签,然后根据转发目的路由将下一跳P1发给自己的标签36300嵌套上去
2、PE1将数据包转发到P1上,然后P1打上P2发给自己的标签转发给P2,嵌套标签36200,只改变上层标签,VPN标签保持不变。
3、P2收到数据包之后嵌套标签36100转发给PE1.
4、数据包到达PE2之后,发现36100是自己的标签于是去掉外层标签。并通过VPN标签查找vpn实例路由表,然后根据VPN标签将数据包转发给对应的VPN实例

这里P2时SR-BE隧道的倒数第二跳,如果在P2上配置了PHP(倒数第二跳弹出),P2再发给PE2数据包的时候可以去除SR-BE标签,也就是36100.只携带VPN标签即可。

基于SR-TE隧道的L3VPN数据转发过程

1.首先是SR-TE隧道的建立

基于SR隧道的L3VPN数据包转发流程这样我们在PE1上就形成了一个标签栈

基于SR隧道的L3VPN数据包转发流程这个标签栈就代表了一个SR-TE隧道。
数据包转发流程
基于SR隧道的L3VPN数据包转发流程1、首先CE1上传的数据包发给PE1,PE1进行封装,添加VPN标签以及标签栈,由于10100是自己的下一跳出接口邻接标签,只添加10200、10300.
2、P1收到数据包之后,查看标签,10200为自己的标签取出后根据临界标签10200发送给P2,
3、P2收到数据包后发现10300为自己的标签,将标签取出后将数据包送10300的邻接标签出接口传出到达PE2.
4、PE2检查VPN转发示例表,将数据包根据VPN示例转发给相应的VPN示例。
此时数据包转发流程结束。

SR-TE和SR-BE数据包转发过程中的差别在于:SR-TE在源节点就将标签栈压入数据包头,而SR-BE是在转发过程中不断地更换标签值来进行路由转发。

以上纯属个人总结,如果有漏洞请各位大佬及时指点我及时修正,谢谢各位老板

上一篇:GlobalProtect 北邮vpn 导致电脑无法被远程控制


下一篇:JS解决加减乘除浮点类型丢失精度问题