xp vpn连接不上
使2台仅支持IPv4的主机(主机a和主机b),通过SRv6实现VPN互通,并实现 流量工程 。拓扑如下图所示:
图1中路由器R1、R3和R4为支持SRv6的路由器,R2为仅支持IPv6的路由器,通过开源Quagga实现静态路由,路由器与路由器之间仅通过IPv6实现互通。在这个测试中,我们的目的是让主机a与主机b实现IPv4互通,并让数据包经由R3路由器, 从而实现VPN及流量工程。
详细的数据包转发流程及每一跳的报头变化如下图所示,图中报文上的数字表示数据包在网络中的转发顺序 xp vpn连接不上。请注意: 图中的Segment列表是逆序排列的,即排在 列表的 第一个Segment是路径上的最后一跳,排在列表的最末位Segment是路径的第一跳。
从主机a发出的数据包,到达支持SRv6的路由器R1,R1会根据所配置的操作对数据包进行封装, 在外层加上IPv6以及SRH的报头,并进行正常的IPv6转发。在仅支持IPv6的路由器R2,R2根据IPv6报头基于目的IPv6地址进行转发。在R3,R3路由器根据Segment执行End操作,将Segment Left减1, 并根据Segment列表 更新IPv6的目的地址,将数据包转发至下一跳R4。在支持SRv6的路由器R4,R4根据Segment执行End.DX4操作, 剥掉外层的IPv6报头 ,将内含的IPv4数据包发给主机b,完成转发流程。
同时在R1上配置针对回程数据包的End.DX4操作,让去往主机a的数据包在R1做IPv6的解封装,解出IPv4数据包后发送给主机a
最后在R4路由器上配置End.DX4操作,以让R4收到数据包之后能够做IPv6解封装,并转发给指定地址。
我们从主机a(10.0.0.1) Ping 主机b(10.0.2.1)进行测试。然后抓包检查,可以看到从主机a发来的IPv4原始数据包。
R3从不支持SRv6的路由器R2处收到了R1发来的数据包,根据定义的策略会执行End操作,即Segment Left减1,并更新 IPv6目的地址。
R4上收到R3发来的数据包,由于Segment Left已经被R3 更新为0,R4会根据策略执行End.DX4操作, 去掉IPv6外层报头,转发到指定的10.0.2.1主机,从而完成了VPNv4以及流量工程。
下图是Ping回程数据包抓包情况,可见加了IPv6报头,目的地址是fc00:1:bb,但SRH中没有Segment,这是因为Segment Left=0(此时其实不需要SRH,具体见参考文献2)。(来源:思科系统工程师:李嘉明、苏远超、钟庆,龙哥在此致谢。)