网络丢包&网络延迟排查

网络问题往往都是比较复杂的,并且通常定位问题后也无能为力,只能推动相关运营商解决;

常见网络丢包的原因:

  1. 骨干网拥塞
  2. 网络链路某个交换机坏了
  3. 服务器cpu负载高,数据包到网卡后cpu不能及时处理,但是缓冲区溢出,导致丢包
  4. 服务器网卡故障

ICMP协议

ICMP是一个网络层的协议,用来测试网络的连通性,因为ICMP非传输层,所以不需要端口号,pingtraceroutemtr都使用的是ICMP协议, 这也是ping命令不能指定端口号的原因;ICMP只能搭配IPv4使用,如果是IPv6的情况下, 需要是用ICMPv6;

ICMP协议可以用来:

  1. 成功到达目标地址后,目标主机会返回确认包,从而验证联通性;
  2. 如果没有到达目标主机,中间节点会通知发送主机IP包被丢弃的原因;

ICMP协议的实现,是内嵌在IP包里的,IP包头部有固定的20个字节,如果IP包头里面协议字段设置为ICMP,则IP包的包体里是ICMP包体;

ICMP包体可以简单理解为typecontent, 有2个字节用于标识是什么类型的ICMP包,剩下的字节存储内容;ICMP的具体使用,举例如下:

  • 测试连通性 ping 发送的ICMP类型为8 ,目标主机返回一个 ICMP类型为0的包,代表目标可达;
  • 目标不可达的原因 如果目标不可达,中间路由器可能返回网络不可到达(代码字段值为0)、主机不可达到(代码字段值为1)、协议不可到达(代码字段值为2)等等包体;
  • 网络响应时间 ICMP还可以处理时间戳请求,时间戳请求报文(类型值字段13)和时间戳应答报文(类型值字段14)用于测试两台主机之间数据报来回一次的传输时间。传输时,主机填充原始时间戳,接受方收到请求后填充接受时间戳后以类型值字段14的报文格式返回,发送方计算这个时间差。
  • 网络路由路径 ICMP差错控制报文中的TTL超时会回向源点发送一个时间超时报文。例如A 主机 traceroute B主机,A会封装一些分组,这些分组很特殊,例如第一个分组的TTL设置为1 ,第二个分组的TTL设置为2 以此类推.......当第一个分组到达第一个路由器时,发现TTL变成了0就会给源主机发送一个时间超时报文,这也就知道了这个分组所经过的一个路由器,同理可得其他路由器。 当最后一个分组到达B主机时,收集每个时间超时的报文中的IP 就获得了A主机到B主机的路径;

ping 命令

ping命令会先发送一个 ICMP Echo Request给对端,对端接收到之后, 会返回一个ICMP Echo Reply,若没有返回,就是超时了,会认为指定的网络地址不存在。

ping能验证网络的连通性,并会统计响应时间和TTL(IP包中的Time To Live,生存周期),也可以用于查看网络丢包率;

ping -c 5 -s 1024 -i 1 baidu.com
 -c 代表发送次数 
 -s 代表包体字节数 
 -i 代表超时秒数
image.png

traceroute 命令

traceroute也是基于ICMP协议实现的。可用于打印执行主机到目标主机之前经历多少路由器。

traceroute -n baidu.com
image.png

mtr 命令

mtr命令实际是集成了tracerouteping的功能;
mtr底层首先利用traceroute计算出所有的路由器节点,然后针对每个路由器节点发送ping命令,最后对数据做了汇总和展示;

# 如果不使用任何参数 mtr会动态不停的运行
sudo mtr -c 10  -r  baidu.com
-c 代表发包数量
-r 代表生成report 等效于 --report
-w 代表使用hostname 而不是ip地址

image.png

Loss% 表示在每一跳的丢包率
Snt 每个中间设备收到的发送的报的数目(上图为400个包),MTR会同时对所有中间节点发送ICMP包进行测试。
Last 最后一个数据包往返时间(ms)
Avg 数据包往返平均时间(ms)
Best 数据包往返最小时间(ms)
Wrst 数据包往返最大时间(ms)
StDev 标准偏差。如果标准偏差越高,说明数据包在这个节点上的延时越分散。

如何分析MTR报告?

  1. 节点分析
  • MTR 的输出分成三大块。根据配置,第二或第三跳一般都是本地 ISP,倒数第二或第三跳一般为目的主机的ISP。中间的节点是数据包经过的路由器。
  1. 分析丢包率时
  • ICMP 包的速率限制和丢失可能会同时发生。如果发生包的丢失情况,我们要用倒推路径上的最低百分比来衡量。
  • MTR 报告目的主机100%丢包,这可能是目的主机防火墙的原因,例如: iptables 配置丢掉 ICMP 包所致。
  • 互联网设施的维护或短暂的网络拥挤可能会带来短暂的丢包率,当出现短暂的10%丢包率时候,不必担心,应用层的程序会弥补这点损失。
  • 很多路由器可能会直接丢弃 ICMP 包,这时就会导致超时(???), 有时候运营商的路由器配置原因,导致 ICMP 包永远不能到达目的地. 如果最终到达了目标主机,可以忽略中间节点的(???)
  • 很多时候问题是在数据包返回途中发生的。数据包可以成功的到达目的主机,但是返回过程中遇到“困难”了。所以,当问题发生后,我们通常需要收集反方向的 MTR 报告。
  1. 分析网络延迟
  • ICMP 速率限制也可能会增加延迟,如果中间节点延迟高,最终目标主机延迟低,则是中间设备限制了 ICMP 传输速率的原因。所以一般要用最后一跳的实际延迟为准。

tcpdump 命令

tcpdump本身是排查tcp/ip 网络问题的大杀器;
tcpdump可以单独使用,但结合wireshark.app 等可视化软件来使用会更加直观;
tcpdump使用本身较为复杂,可以参考相关官方文档;

这里举例说明如何使用tcpdump抓取ICMP包:

# 在目标机器监听来源机器的icmp包
tcpdump -i en7 -n -vv -p icmp and src host 10.38.160.64
# 在源机器发送ping命令 注意接收端的包大小需要+8字节 也就是1032
ping -c 1 -s 1024 10.231.59.179
image.png

参考资料


ICMP协议

网络丢包分析

网络排查工具mtr使用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,997评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,603评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,359评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,309评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,346评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,258评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,122评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,970评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,403评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,596评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,769评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,464评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,075评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,705评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,848评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,831评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,678评论 2 354