MTrace
MTrace(组播Tracert)用于检测从组播源到当前路由器或目的主机的组播转发路径,并沿该路径收集各路由器的相关统计信息。
MTrace检测的网络必须使能了组播协议,如使能了PIM协议的三层组播场景、Rosen MVPN场景和NG MVPN场景等。
IGMP Tracert Query是查询设备发送的用于查询组播最后一跳的报文。
IGMP Tracert Request消息完全继承了IGMP Tracert Query消息,并在消息尾部添加了Response数据块。
IGMP Tracert Response消息完全继承了IGMP Tracert Request消息,只修改了消息类型。
MTrace检测分为四种场景,各场景下的过程如下:
检测从组播源到当前路由器的RPF(Reverse Path Forwarding)路径(当前路由器是到目的主机的最后一跳组播设备)
查询设备(即当前路由器)直接查询本节点的RPF路径上一跳节点,并向其发送IGMP Tracert Request报文。
上一跳路由器收到IGMP Tracert Request报文后,增加包含本设备接口地址信息的响应数据块,然后沿着到组播源的逆向RPF路径向上一跳路由器发送IGMP Tracert Request报文。每一跳路由器都会增加本跳的响应数据块并向组播源方向转发IGMP Tracert Request报文。
当连接组播源的第一跳路由器收到IGMP Tracert Request报文时,添加本路由器响应数据块,然后向查询设备发送IGMP Tracert Response报文。
查询设备收到IGMP Tracert Response报文后,通过解析Response报文获取从组播源到目的主机的RPF路径信息。从而清晰的反映出组播源到目的主机的RPF路径。
如果因为某种错误原因,IGMP Tracert Request报文在转发时无法到达连接组播源的第一跳路由器,则直接向查询设备返回IGMP Tracert Response报文,根据解析数据块信息,了解故障节点,从而实现故障节点监测的目的。
检测从组播源到当前路由器的组播路径(当前路由器是到目的主机的最后一跳组播设备)
查询设备(即当前路由器)直接查询本节点的组播路径上一跳节点,并向其发送IGMP Tracert Request报文。
上一跳路由器收到IGMP Tracert Request报文后,增加包含本设备接口地址信息的响应数据块,然后沿着到组播源的逆向组播路径向上一跳路由器发送IGMP Tracert Request报文。每一跳路由器都会增加本跳的响应数据块并向组播源方向转发IGMP Tracert Request报文。
当连接组播源的第一跳路由器收到IGMP Tracert Request报文时,添加本路由器响应数据块,然后向查询设备发送IGMP Tracert Response报文。
查询设备收到IGMP Tracert Response报文后,通过解析Response报文获取从组播源到目的主机的组播路径信息。从而清晰的反映出组播源到目的主机的组播路径。
如果因为某种错误原因,IGMP Tracert Request报文在转发时无法到达连接组播源的第一跳路由器,则直接向查询设备返回IGMP Tracert Response报文,根据解析数据块信息,了解故障节点,从而实现故障节点监测的目的。
检测从组播源到目的主机的RPF路径(当前路由器不是到目的主机的最后一跳组播设备)
查询设备(即当前路由器)发送IGMP Tracert Query报文,查找连接目的主机的最后一跳路由器。
最后一跳路由器收到IGMP Tracert Query报文后,沿着到组播源的逆向RPF路径,向上一跳路由器发送包含本设备信息数据块的IGMP Tracert Request报文。每一跳路由器都会增加本跳的响应数据块并向组播源方向转发IGMP Tracert Request报文。
当连接组播源的第一跳路由器收到IGMP Tracert Request报文时,添加本路由器响应数据块,然后向查询设备发送IGMP Tracert Response报文。
查询设备收到IGMP Tracert Response报文后,通过解析Response报文获取从组播源到目的主机的RPF路径信息和该路径上各路由器的有关信息。从而清晰的反映出组播源到目的主机的RPF路径,以及该路径上各路由器的有关的统计信息。
如果因为某种错误原因,IGMP Tracert Request报文在转发时无法到达连接组播源的第一跳路由器,则直接向查询设备返回IGMP Tracert Response报文,根据解析数据块信息,了解故障节点,从而实现故障节点监测的目的。
检测从组播源到目的主机的组播路径(当前路由器不是到目的主机的最后一跳组播设备)
查询设备(即当前路由器)发送IGMP Tracert Query报文,查找连接目的主机的最后一跳路由器。
最后一跳路由器收到IGMP Tracert Query报文后,沿着到组播源的逆向组播路径,向上一跳路由器发送包含本设备信息数据块的IGMP Tracert Request报文。每一跳路由器都会增加本跳的响应数据块并向组播源方向转发IGMP Tracert Request报文。
当连接组播源的第一跳路由器收到IGMP Tracert Request报文时,添加本路由器响应数据块,然后向查询设备发送IGMP Tracert Response报文。
查询设备收到IGMP Tracert Response报文后,通过解析Response报文获取从组播源到目的主机的组播路径信息和该路径上各路由器的有关信息。从而清晰的反映出组播源到目的主机的组播路径,以及该路径上各路由器的有关的统计信息。
如果因为某种错误原因,IGMP Tracert Request报文在转发时无法到达连接组播源的第一跳路由器,则直接向查询设备返回IGMP Tracert Response报文,根据解析数据块信息,了解故障节点,从而实现故障节点监测的目的。
- 最后一跳路由器单播地址已知:将指定的最后一跳路由器IP地址作为报文的目的地址,封装单播IGMP Tracert Query报文。
- 最后一跳路由器地址和目的主机地址未知,但查询设备与目的主机直连:使用224.0.0.2作为报文目的地址,并将TTL值设为1,封装IGMP Tracert Query报文,然后向同网段所有路由器发送该报文,找到最后一跳路由器。
- 最后一跳路由器地址未知,但目的主机单播地址已知:将目的主机的IP地址作为报文的目的地址,封装单播IGMP Tracert Query报文。该查询报文中必须包含Router Alert的IP选项。
- 最后一跳路由器地址未知,目的主机单播地址已知,查询设备在组播转发树中:将组播组地址作为报文目的地址,组播源地址作为源地址,封装IGMP Tracert Query报文。该报文沿组播/RPF路径下发,找到最后一跳路由器。