网络核心

​ 在考察了因特网边缘后,我们现在更深入地研究网络核心,即由互联因特网端系统的分组交换和链路交换构成的网状网络。

分组交换

​ 在各种网络应用中,端系统彼此交换报文(message)。报文能够包含协议设计者需要的任何东西。报文可以执行一种控制功能,也可以包含数据,例如电子邮件数据、JPEG图像或MP3音频文件。为了从源端系统向目的端系统发送一个报文,源将长报文划分为较小的数据块,称之为分组(packet)。在源和目的之间,每个分组都通过通信链路和分组交换机(packet switch)传送。(交换机主要有两类:路由器(router) 和链路层交换机(link-layer switch)。)分组以等于该链路最大传输速率的速度传输通过通信链路。因此,如果某源端系统或分组交换机经过一条链路发送一个L比特的分组,链路的传输速率为R比特/秒,则传输该分组的时间为L/R秒。

存储转发传输

​ 多数分组交换机在链路的输入端使用存储转发储传输(store-and-forward transmission)机制。存储转发储传输是指在交换机能够开始向输出链路传输该分组的第一个比特之前,必须接收到整个分组。为了更为详细地探讨存储转发传输,考虑由两个端系统经一台路由器连接构成的简单网络。一台路由器通常有多条繁忙的链路,因为它的任务就是把一个分组交换到一条出链路。在这个简单例子中,该路由器的任务相当简单:将分组从一条链路转移到另一条唯一的连接链路。在特定的时刻,源已经传输了分组1的一部分,分组1的前沿已经到达了路由器。因为该路由器应用了存储转发机制,所以此时它还不能传输已经接收的比特,而是必须先缓存该分组的比特。仅当路由器已经接收完了该分组的所有比特后,它才能开始向出链路传输该分组。为了深刻领悟存储转发传输,我们现在计算一下从源开始发送分组到目的地收到整个分组所经过的时间。源在时刻0开始传输,在时刻L/R秒,因为该路由器刚好接收到整个分组,所以它能够朝着目的地向出链开始传输分组;在时刻2L/R,路由器已经传输了整个分组,并且整个分组已经被目的地接收。所以,总时延是2L/R。如果交换机一旦比特到达就转发比特(不必首先收到整个分组),则因为比特没有在路由器保存,总时延将是L/R。

电路交换

​ 通过网络链路和交换机移动数据有两种基本方法:电路交换(circuit switching) 和分组交换(packet switching)

​ 在电路交换网络中,在端系统间通信会话期间,预留了端系统间沿路径通信所需要的资源。在分组交换网络中,这些资源则是不预留的;会话的报文按需使用这些资源,其后果可能是不得不等待(排队)接入通信线路。

​ 传统的电话网是电路交换网络的例子。考虑当一个人通过电话网向另一个发送信息时所发生的情况。在发送方能够发送信息之前,该网络必须在发送方和接收方之间建立一条连接。这是一个名副其实的连接,因为此时沿着发送方和接收方之间路径上的交换机都将为该连接维护连接状态。用电话的术语来说,该连接被称为一条电路(circuit)。当网络创建这种电路时,它也在连接期间在该网络链路上预留了恒定的传输速率。既然已经为该发送方-接收方连接预留了带宽,则发送方能够以确保的恒定速率向接收方传送数据。

​ 与此相反,考虑一台主机要经过分组交换网络向另一台主机发送分组所发生的情况。与使用电路交换相同,该分组经过一系列通信链路传输。但与电路交换不同的是,该分组被发送进网络,而不预留任何链路资源之类的东西。如果因为此时其他分组也需要经过该链路进行传输而使链路之一出现拥塞,则该分组将不得不在传输链路发送侧的缓存中等待而产生时延。因特网尽最大努力以实时方式交付分组,但它不做任何保证。

电路交换中的复用

​ 链路中的电路是通过频分复用(Frequency-Division Multiplexing, FDM) 或时分复用(Time-Division Multiplexing, TDM)来实现的。对于FDM,链路的频谱由跨越链路创建的所有连接共享。特别是,在连接期间链路为每条连接专用一个频段。在电话网络中,这个频段的宽度通常为4kHz(即每秒4000周期)。毫无疑问,该频段的宽度称为带宽(bandwidth)。调频无线电台也使用FDM来共享8MHz~108MHz的频谱,其中每个电台被分配一个特定的频段。

​ 对于一条TDM链路,时间被划分为固定期间的帧,并且每个帧又被划分为固定数量的时隙。当网络跨越一条链路创建一条连接时,网络每个帧中为该连接指定一个时隙。这些时隙专门由该连接单独使用,一个时隙可用于传输该连接的数据。

​ 分组交换的支持者总是争辩说,电路交换因为在静默期(silent period)专用电路空间而不够经济。分组交换的支持者还津津乐道地指出,创建端到端电路和预留端到端带宽是复杂的,需要复杂的信令软件以协调沿端到端路径的交换机的操作。

​ 考虑从主机A到主机B经一个电路交换网络发送一个640000比特的文件需要多长时间。假如在该网络中所有链路使用具有24时隙的TDM,比特速率为1.536Mbps。同时假定在主机A能够开始传输文件之前,需要有500ms创建一条端到端的电路。它需要多长时间才能发送该文件?每条链路具有的传输速率是1.536Mbps/24=64kbps,因此传输该文件需要640kb/64kbps=10s。这个10s,再加上电路创建时间,这样就需要10.5s发送该文件。值得注意的是,该传输时间与链路数量无关:端到端电路不管是通过一条链路还是100条链路,传输时间都是10s。(实际上的端到端时延还包括传播时延。)

分组交换与电路交换的对比

​ 分组交换的批评者经常争辩说,分组交换不适合实时服务,因为它的端到端时延是可变和不可变预测的(主要是因为排队时延的变动和不可预测所致的)。分组交换的支持者却争辩道:①它提供了比电路交换更好的带宽共享;②它比电路交换更简单、更有效、实现成本更低。

​ 分组交换为什么更有效呢?我们看一个简单的例子。假如多个用户共享一条1Mbps链路,再假定每个用户活跃周期是变化的,某用户时而以100kbps恒定速率产生数据,时而静止——这时用户不产生数据。进一步假设该用户仅有10%的时间活跃。对于电路交换,在所有的时间内必须为每个用户预留100kps。例如,对于电话交换的TDM,如果一个1s的帧被划分为10个时隙,每个时隙为100ms,则每帧将为每个用户分配一个时隙。

​ 因此,该电路交换链路仅能支持10个并发用户。对于分组交换,一个特定的用户活跃的概率是0.1.如果有35个用户,有11或更多个并发活跃用户的概率大约是0.004。当有10个或更少并发用户时,到达的聚合数据速率小于该链路的输出速率为1Mbps。因此,当有10个或更少的活跃用户时,通过该链路的分组流基本上没有时延这与电路交换的情况一样。当同时活跃用户超过10个时,分组的聚合到达速率超过该链路的输出容量,则输出队列将开始变长。因为在本例子中同时活跃用户超过10个的概率极小,分组交换差不多总是提供了与电路交换相同的性能,并且允许在用户数量是其3倍时情况也是如此。

​ 我们现在考虑第二个简单的例子。假定有10个用户,某个用户突然产生1000个1000比特的分组,而其他用户则保持静默。在每帧具有10个时隙并且每个时隙包含1000比特的TDM电路交换情况下,活跃用户仅能使用每帧中的一个时隙来传输数据,而每个帧中剩余的9个时隙保持空闲。该活跃用户传输完成所有$10^6$比特数据需要10s的时间。在分组交换的情况下,活跃用户能够连续地以1Mbps的全部链路速率发送其分组,因为没有其他用户产生分组与该活跃用户的分组进行复用。在此情况下,该活跃用户的所有数据将在1s内发送完毕。

网络的网络

Donate comment here