作者birdy590 (Birdy)
看板Network
标题Re: [问答] 关於router的capacity
时间Sat Sep 22 00:55:27 2012
※ 引述《rusynth (stw)》之铭言:
: 请问,router的capacity的意思是?
: router可以处理的资料量?还是router的buffer大小?
: 封包只要经过router就会有delay?
: 还是资料输入量大於router的capacity才会开始产生delay?
这是一个很大的问题, 而且必须对设备的架构有一定了解才行
transmission delay/propagation delay 只跟电路速率/距离有关,
这部份 delay 应该算是固定的, 应该不是原 po 要问的
会变动的部份包括 processing delay 以及 queuing delay
processing delay 是指 router 检查封包并且决定去路花费的时间
queuing delay 是指封包在 queue 里面排队等待送出花费的时间
不同类型的设备会有不同的特性, 软体处理的 router 容量会受限於
CPU 的处理能力, 检查速度不够快就会有封包排队等待的情形(通常
发生在小封包数量很多的情形下). 这类设备的 queue 通常就是主记
忆体直接切一块, 容量可能设定到很大(可能储存达数秒的封包).
往好的方面想来不及处理也不至於丢包, 但是另一方面如果 CPU 持续
满载, 结果就是会等到塞满才开始丢包(能放多少封包就会延迟多久).
用 switch fabric 的 router 交换能力增强很多, 但同样还是有背板
容量的限制. 这类设备上 queue 成本就高多了, 除了少数高阶设备会
设计专门的 packet buffer 外, fabric 一旦塞爆很快就会开始丢包.
(有些设备甚至可能完全没有 ingress queue, 来不及处理就马上丢)
处理完毕之後, 决定好去路的封包会送到 egress queue, 封包会在
里面排队等待由介面送出, 等待的时间就是 queuing delay.
例如流量从十个平均流量各 60Mbps 的 GbE 介面进来(总流量 600Mbps),
最後要由一个 GbE 介面送出.
乍看之下介面利用率才到 60% 而已, 应该是轻松愉快才对?
但是世界没有那麽美好, 流量的特性往往很不平均, 很有可能在 0.1 秒
内传了 60Mbit(实际速度 600Mbps), 另外 0.9 秒则 idle, 同一段时间
只要再有另外一个介面进来的资料稍微多一点, 就会有封包开始排队了
更极端的情况不只是 queuing delay 而已, 因为规划 queue 的时候是用
最大的封包来计算(不管封包多小一样都要占用 1500bytes 甚至更大),
所以小封包占用的空间可能是实际流量的好几倍, 一旦 queue 用完就会
出现 output queue drop. 实务上看过流量才到 300~400Mbps 就开始丢
包的... 一整个悲剧
因为设备可能还要支援 QoS(意思就是会有不只一个 queue), 再加上在
硬体里设计 queue 的位置不一, 真实情形往往会比上面讲的再复杂一些,
但是基本原理不会变.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 58.86.100.157