Measuring of Packet Loss:
- ICMP ping:
- 并不总是reliable的:有些hosts rate限制了它们发送的ICMP responses(如ConfigServerFirewall就有一个默认的规则,来rate limit ICMP to 15 responses per request host per minute, after which it blocks all ICMP),这样就会导致packet loss
- traceroute和MTR:
- traceroute默认使用UDP协议,响应是ICMP协议。发包形式是每次同一个TTL数据包连着发三次,且请求端口和目的端口一直在变化
- MTR默认请求和响应都是ICMP协议。发包形式是每次先发一个逐步增加TTL的包,再循环三次
- 同一个IP,traceroute和MTR返回的路径不同:
使用不同的协议数据包,路由器的转发会有区别。因此若业务使用HTTP协议的话,它底层使用的TCP,就应该用TCP的方式探测
- MTR(MyTraceRoute):combines the functions of ping and traceroute
- MTU path discovery: 从发送端到接收端主机之间不需要分片下的最大MTU大小。从发送主机按照MTU的大小将数据报分片后进行发送,就可以避免在中途的路由器上进行分片处理,也可以在TCP中发送更大的包
- 原理:
- 发送端主机发送IP数据报时将其首部的分片禁止标志位置1
- 通过ICMP的不可达消息将数据链路上的MTU值发送给主机
- 发送主机按照这个MTU对数据报进行分片处理,如此反复直到数据报被发送到目标主机为止没有再收到任何ICMP,就认为最后一次ICMP所通知的MTU是一个合适的MTU
- ICMP deprioritization:
- 网络设备通常忽略直接发给他们的ICMP流量,或respond with reduced priority:表现为packet loss,但实际上不是
- 看接收端主机:若没有loss,则中间hop的loss就是deprioritization;若有constantly increasing loss from hop to hop(包含接收端),则这就更像是一个legitimate loss
- 原理:
- MTU path discovery: 从发送端到接收端主机之间不需要分片下的最大MTU大小。从发送主机按照MTU的大小将数据报分片后进行发送,就可以避免在中途的路由器上进行分片处理,也可以在TCP中发送更大的包