使用mtr收集一些统计信息,如果我运行sudo mtr 10.0.1.1
ping 我的路由器,它看起来很糟糕:
My traceroute [v0.85]
Johns-MacBook-Air.local (0.0.0.0) Tue Feb 11 10:11:32 2014
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 10.0.1.1 0.0% 52 17.1 79.0 1.0 298.9 103.1
Run Code Online (Sandbox Code Playgroud)
但是如果我运行sudo mtr google.com
,并且只看第一跳,它看起来不错:
My traceroute [v0.85]
Johns-MacBook-Air.local (0.0.0.0) Tue Feb 11 10:12:55 2014
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 10.0.1.1 0.0% 40 1.4 1.7 1.4 4.1 0.5
2. mosca-lan207.gw.monkeybrains.net 0.0% 39 13.7 23.8 5.6 111.4 22.9
3. grillo.grillo-mosca-10GB.core.monke 0.0% 39 6.0 10.0 5.5 21.7 3.6
[snip]
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况?
你有一个路由器,它非常擅长路由数据包。它不是 ping 响应者,所以它不太擅长响应 ping。
路由器必须做更多的工作来响应ping而不是转发数据包,而且所有这些工作都没有优化。转发数据包通常完全在中断级别进行,使用经过高度优化的所有硬件和软件以尽快完成。响应 ping 需要接收数据包,发现它是本地的,调度一些更高级别的代码在进程级别运行,等待该代码运行(因为它与其他长时间运行的进程级别功能竞争),形成一个回复数据包,将该回复数据包排队,并调度代码以运行该队列。
基本上,路由器具有快速路径和慢速路径。快速路径处理路由。慢速路径处理其他所有事情。
归档时间: |
|
查看次数: |
594 次 |
最近记录: |