正文共:1024 字 19 图,预估阅读时间:1 分钟
上个实验中(SRv6典型配置),我们已经成功配置了基于IS-IS的SRv6,
我们回顾一下VSR1上查看IS-IS SRv6的Locator路由信息。
之前也说过,SR可以使用称为SRH的新型路由报文头应用于 IPv6 数据平面,那我们今天就一起来看看这个报文头长啥样。
首先学习一下VSR自带的抓包功能。
命令也是非常简单,一共4条。
第一条packet-capture max-bytes用于配置捕获报文的最大长度,缺省情况下,捕获报文的最大长度为1600字节,已经超过了接口普通报文的1520字节,非特殊情况无需调整。
第二条packet-capture max-file-packets用于配置捕获文件存储捕获条目的最大数量,缺省为100个,感觉不够用的可以直接配置成上限1000个。
第三条packet-capture start用于启动报文捕获功能,后面还可以跟接口和ACL等限制参数。
第四条packet-capture stop用于停止报文捕获功能,默认是保存完缓存中的报文后才停止报文捕获功能,还可以指定immediately参数立刻停止报文捕获功能。
最后一条packet-capture storage用于配置捕获文件的存储路径,缺省情况下,捕获文件存储在设备缺省文件系统的pcap文件夹下,也可以调整路径或配置为远程的FTP或TFTP路径。
从流量转发路径上看,我们可以配置从VSR1的GE2/0接口、VSR3的GE3/0接口和VSR2的GE2/0接口等位置进行抓包,分析报文情况。
在VSR的接口上开启抓包的命令如下:
#
packet-capture max-file-packets 1000
packet-capture start interface GigabitEthernet 2/0
学会了如何抓包,我们还要知道如何去制造报文。
我们已经知道,SRv6通过在源节点对IPv6数据报文进行封装,使封装后的报文在开启SRv6功能的网络中进行传输。SRv6隧道就是封装后的数据报文在网络中传输的路径,是从源节点到尾节点的一个虚拟的点对点连接,其两端的设备分别对数据报文进行封装及解封装。
所以比较合适的抓包位置就是VSR3的GE2/0接口和GE3/0接口,但是又不能两个接口一起抓,那我们就优先抓取GE2/0接口的报文。
ping的命令也有所不同,使用ping ipv6-sid命令用来检测SRv6转发路径的连通性。
ping包结束后,停止抓包。
用MobaXterm的优势之一就是可以直接下载抓包文件,不用再搭建文件服务器了。
查看报文结构,发现跟SRH协议规范(SRv6之SRH:IPv6 段路由报文头)描述的差不多但又有所不同。
对比下面的标准报文头,我们可以发现,在IPv6报文头中确实有了一个新的报文头Routing Header for IPv6(Segment Routing),前面的几个字段Next Header、Length、Routing Type(值为4,表示Segment Routing)、Segments Left是一样的。
Last Entry在这里成了First Segment,规范里是没有这个字段的,而华三将此字段定义为SRH头中报文实际转发路径的第一个SID的编号,值为0,有点让人费解。
然后就是Flags标志位信息,竟然提示暂不支持解析SRH的TLV,不知道是不是跟这个有关,Segment List的信息也看不到。不知道升级WireShark能不能解决。
其实,除了ipv6-sid的报文,IS-IS的LSP报文中也带有SRv6信息。
这个报文中的子TLV对应End.X类型的Local SID转发表信息,上次我们提到,设备上默认开启了动态End.X SID延迟删除功能,当设备间邻居关系断开时,暂不删除动态分配的End.X SID,保证流量正常转发。这个报文就是我断开VSR3的链路所产生的。
变更之前提示到1::/64的可达性是UP的。
变更之后路由信息就被删除了。
对应的,报文中还携带End类型的Local SID转发表信息。
与设备上End类型的转发表信息相对应。
除此之外,还能通过命令查看SRH转发路径。
当然,这属于SRv6 OAM的内容了,我们后面再讲。
长按二维码
关注我们吧
如何在EVE-NG中导入VSR1000设备?怎么解决登录问题?
Android4也能跑Linux了,Linux Deploy了解一下!