考虑以下traceroute
从我在瑞典发送到美国服务器的输出:
1 192.168.1.1 (192.168.1.1) 0.127 ms 0.148 ms 0.167 ms
2 gw-n1-rny-a13.ias.bredband.telia.com (2.248.176.129) 2.404 ms 2.414 ms 2.424 ms
3 s-b6-link.telia.net (62.115.139.49) 1.391 ms 1.401 ms 1.607 ms
4 s-akix-i1-link.telia.net (213.155.134.9) 1.610 ms 1.605 ms 1.590 ms
5 as5580-ic-155269-s-akix-i1.c.telia.net (80.239.161.18) 5.091 ms 1.572 ms 1.582 ms
6 eth2-4.edge1.sto1.se.as5580.net (78.152.34.214) 10.783 ms 10.126 ms 10.085 ms
7 eth15-2.r1.fra1.de.as5580.net (78.152.34.217) 21.254 ms 20.934 ms 20.921 ms
8 eth13-1.core1.par2.fr.as5580.net (78.152.44.244) 29.821 ms 29.912 ms 29.924 ms
9 eth7-1.core1.lon2.uk.as5580.net (78.152.44.242) 34.987 ms 34.986 ms 34.971 ms
10 eth1-2.edge1.nyc4.us.as5580.net (80.94.64.134) 114.090 ms 122.484 ms 122.485 ms
11 78.152.57.87 (78.152.57.87) 123.962 ms 123.924 ms 123.934 ms
12 10ge-1-2-0.01-02.er1.buf1.colocrossing.com (23.94.31.14) 124.270 ms 124.094 ms 124.247 ms
13 core.servermania.com (172.245.211.134) 124.732 ms 124.733 ms 124.814 ms
(我稍微整理了一下以使数字排列整齐,但这并不重要。无论如何,我对原则感兴趣,而不是这个特定的数据。)
我很好奇哪些因素决定了这些跳数增加的延迟。最明显的因素是物理距离,但显然这不是主要因素,因为整个请求的 125 毫秒(几乎)足以绕地球一圈,这显然比该请求的物理传输时间长几个倍。我看不出链路的实际带宽会产生多大影响(除了数据包丢失,如果它们过载的话)。
除了物理距离之外,还有哪些因素会增加延迟?是各种路由器中的某种内部缓冲和/或处理吗?如果是,是哪种类型(查看路由表会花费几十毫秒吗?),还是底层协议层面的某种隐藏重传,还是其他什么?
由于没有处理过我怀疑在这些情况下使用的那种“大型”路由器,我很好奇哪些因素决定了它们在延迟方面的性能。
答案1
哪些因素决定了延迟?
网络延迟可能由以下原因造成:
- 序列化延迟 - 由于必须以数据包大小的块形式通过路由器/交换机传输数据而导致。
- 排队延迟 - 在路由器队列中等待传输的时间。这主要与线路争用(接口已满)有关,因为如果没有拥塞,则几乎不需要可测量的队列。
- 传播延迟 - 信号在传输介质中传输的时间。这主要是基于光速或其他电磁传播的限制。
看什么是网络延迟?它为何如此重要?了解更多信息。