之前在网络中的分组交换中已经谈到了,分组交换会涉及到排队时延和分组丢失的问题。在传输过程中也会遇到别的问题,这个时候详细讨论一下在传输过程中涉及到的时延、丢包和吞吐量问题
一、分组交换网络中的时延
当分组从一个节点(主机/路由器)沿着路径到达后继的节点(主机/路由器),该分组在沿途的每个节点会经历几种时延,包括:
- 节点处理时延
- 排队时延
- 传输时延
- 传播时延
下面就从一个图上来看每种时延对应的发生位置
🍆 节点处理时延
当一个分组到达一个节点的时候,就需要检查分组的首部决定该这个分组送到什么地方。另外,还可能做其他工作,例如检查上游节点发送到这个节点时产生的错误,处理这些问题花费的时间就是节点处理的时延。
🍆 排队时延
这个之前说过,一个分组之前有许多其他的分组待处理,那么这个等待的时间就叫做排队时延。
🍆 传输时延
这个时延比较有趣,假如现在有一个分组正在被处理,那么它被发射出这个节点的时间就是排队时延。
这个时延的大小取决于链路的传输速度,如果上述的黄色分组大小为L,链路的传输速率为R bps,那么需要的传输时延大小为
🍆 传播时延
上面的节点弹射出来后,就需要向路由器B发送,这个时候在链路上传播所需要消耗的时间大小就是传播时延。为了便于计算,规定从该链路的起点到路由器B所需要的时间就是传播时延。
传播时延大小是与分组大小无关的,因为它传播的是比特,上述的传播时延就相当于最后一个比特到达路由器耗费的时间。是由两个节点之间的距离除以传播的速率,而传播速率只和链路的材料(光纤、电缆等)有关系
二、分组交换中的排队时延和丢包
这是第3次提到排队时延了,说明排队时延确实是一个很重要的概念。而排队时延和其他时延不同的地方在于,它是一个无法被准确计算的,是大小不断变化的一个时延。
现在,我们要去衡量这个排队时延的大小。什么时候排队时延比较大,什么时候排队时延又比较小呢?
关于这个部分书上有一个学术性的探讨,现在来看一下探讨的过程。首先是一个概念流量强度,这个流量强度与分组到来的速率有关。令α表示分组到达队列的平均速率,L代表分组的大小,那么1s内到达的比特的大小为Lα;而出队列的速率为链路的传输速率R,即1s内除队列的比特大小为R,所以流量强度就可以表示为
- 入队列的速率是不能比入队列要高的,否则必然发生排队,还会丢包。
- 而入队列的速率也不能和入队列的相等,不然也会发生排队(难道一边入一边出也会排队❓ 确实是这样的,不然看下面这个动图,只不过需要花费的时间长一点,耐心等待一下)
这里给出一个关于流量强度和平均排队时延的一个函数图线,关于它背后的数学原理可以自己百度学习一下,不过我觉得挖掘到这里已经足够用了。
三、端到端时延
🍆 理论上计算端到端时延
之前学习的是从一个节点到另一个节点的时延,现在假设从源主机A到目的主机B之间有N-1个路由器,并且此时的网络并没有拥塞,所以不会有排队时延。这个时候从主机A到主机B的时延大小为:
其中,
- 表示传播时延
- 表示传输时延
- 表示节点处理时延
🍆 实际生活中的时延:利用Traceout程序追踪
这里可以按照书上的讲解自己追踪一下分组的发送和返回,这里就不再放入过程了。
四、网络中的吞吐量
这里又出现了一个名词,吞吐量。吞吐量是什么意思呢,举个例子来说吧。
- 假如一个文件的大小为F比特,主机B接收该文件用去了T秒,那么该文件传送的平均吞吐量就是:
- 在P2P架构中,在任何时间的瞬间主机B接收到某文件的速率就是就是瞬时吞吐量
在实际的传输过程中的吞吐量又该怎么得到呢,现在深入探究一下。假设在服务器和客户端之间只有一个路由器,其中服务器和路由器之间链路的传输速率大小为R_s,而路由器和客户端之间链路的传输速率大小为。
那么它们之间的吞吐量大小就是。如果就会发生排队时延、丢包等现象;如果,那么数据就能顺利送到客户端中。
而如果是N条链路的话,吞吐量就是,同样也是最小链路速率。