3.3.6 拥塞控制
网络的能力受到通信链路性能和交换结点性能的限制。当任何链路或结点的负载接近其负载能力时,试图发送数据包的主机中就会建立队列,传输数据的中间结点因为被其他数据传输所阻塞而建立队列。如果负载继续维持在这样的高水平,那么等待发送的队列就会不断增长,直到达到可用的缓冲区空间的上限为止。
一旦结点达到这样的状态,结点只能将以后到达的数据包丢弃。前面已经提到过,在网络层偶尔出现数据包丢失是允许的,这种损失可以通过从更高层重传丢失的数据包来弥补。而当数据包丢失率和重传率达到一个很高的水平,那么会给网络的吞吐量带来灾难性的后果。道理很简单:如果数据包在中间结点被丢弃,那么已经占用的网络资源就被浪费掉了,而重传还要再消耗同样多的资源。经验表明,当网络的负载超过其能力的80%,系统的总吞吐量会因为数据包丢失而下降,除非控制高负载链路的使用。
为了避免数据包在网络中传递时经过拥塞结点而被丢弃的情况,最好将数据包保存在发生拥塞之前的结点中直到拥塞减少。这固然会增加数据包的延迟,但不会极大降低整个网络的吞吐量。用于实现该目的的技术称为拥塞控制。
通常,拥塞控制是通过通知发生拥塞的路由上的结点而实现的,因此它们的数据包传输率会有所减少。对中间结点来说,这意味着进入的数据包将会缓冲很长时间。而作为发出数据包的源主机,结果就是把要发送的数据包在主机中排队,或者阻塞产生这些数据包的应用程序,直到网络能妥善地处理数据包为止。
所有基于数据报的网络层,包括IP和以太网,都依靠端-端的流量控制。也就是说,发送结点必须基于收到的接收方的信息降低其发出数据包的速率。要为发送结点提供拥塞信息,可以通过显式地传输一个请求减少传输率的特殊消息(被称为阻塞数据包),也可以通过实现一个专门的传输控制协议(TCP的名字也由此而来,3.4.6节将解释TCP中的机制),或通过观察丢弃数据包发生的情况(假设协议要确认每一个数据包)来实现。
在一些基于虚电路的网络中,每个结点可以接收到拥塞信息,拥塞信息也可以作用于每个结点。尽管ATM使用虚电路传递,但它仍要依靠服务质量管理(见第20章)来保证每个电路都能完成所要求的流量。102
3.3.7 网际互连
不同的网络、链路和物理层协议形成了不同的网络技术。局域网络是基于以太网和ATM技术建立起来的,而广域网是基于各种数字和模拟电话网络、卫星链接和广域ATM网络建立的。单个的计算机和局域网则是通过调制解调器、无线连接和DSL连接接入互联网或企业内部网的。
为了建立一个集成的网络(互连网络),我们必须集成许多子网,而它们各自基于上述某种网络技术。为了实现集成,需要实现以下几方面:
1)统一的互连网络寻址方案,使得数据包可以找到接入任一子网的任一主机。
2)定义互连网络中的数据包格式并给出相应处理规则的协议。
3)互连组件,用于按照互连网络地址将数据包路由到目的地,可用具有多种网络技术的子网传递数据包。
对于互联网而言,IP地址可实现上面第1个要求,第2个要求是IP协议,第3个要求由称为互联网路由器的组件实现。IP协议和IP寻址将在3.4节详细描述。这里我们将讨论互联网路由器和其他用来连接各网络的组件的功能。
图3-10展示了一个英国大学的企业内部网的一小部分,更多细节将在后面的小节中加以解释。这里我们要注意的是,图中包含通过路由器互连的多个子网的部分。该部分有5个子网,其中3个子网共享IP网络138.37.95(使用了无等级的域间路由方案,见3.4.3节)。图上的数字是IP地址,它们的结构将在3.4.1节中解释。图上的路由器是多个子网的成员,它们在每个子网中都有一个IP地址(地址就写在连接的链路上)。
路由器(主机名:hammer和sickle)实际上是一个通用的计算机,也能完成其他任务,其中一个任务是作为防火墙使用。防火墙的作用和路由功能是紧密相关的,我们将在下面讨论这一点。138.37.95.232/29子网在IP层并没有和网络中的其他部分相连。只有文件服务器custard可以访问它,该服务器在与其相连的打印机上通过一个服务器进程(监控和控制打印机的使用)提供打印服务。
图3-10中所有的链路都是以太网。大部分链路的带宽是100Mbps,但有一个链路的带宽是1000Mbps,因为它支持着大量学生使用的计算机与承载所有文件的文件服务器custard间的巨大数据流量。
在图示的这部分网络中,有两个以太网交换机和几个以太网集线器。两者对IP数据包来说都是透明的。以太网集线器只是一种将以太网电缆的多个段连接在一起的手段,在网络协议层,这些段形成一个以太网。主机收到的所有以太网数据包将转播到所有的段。以太网交换机连接了几个以太网,用于将进入的数据包路由到目的主机所在的以太网中。
路由器 我们已经提到,除了像以太网和无线网络(这些网络中的主机由一种传输介质连接),其他所有网络都需要路由。图3-7显示了一个由6条链路连接5个路由器组成的网络。在一个互连网络中,可由直接连接将路由器链接起来(见图3-7),也可以通过子网将路由器互连,如图3-10中的custard。在这两种情况下,路由器都负责将从任一连接来的互连网络数据包准确地发送到下一条连接。路由器也因为这个目的而维护路由表。
网桥 网桥链接不同种类的网络。一些网桥链接几个网络,它们也被称为网桥/路由器,因为它们也表现出了路由的功能。例如,更大的校园网包括一个光纤分布式数据接口(Fibre Distributed Data Interface,FDDI)主干(没有在图3-10中显示),它就是由网桥/路由器连接到图3-10中的以太网子网中的。
集线器 集线器是将主机、以太网和其他广播型局域网技术的扩展网段连接起来的一种方便的手段。它有多个插槽(通常有4~64个),每一个插槽都可以连接一台计算机。它们也用于克服单个网段带来的距离上的限制,提供添加额外主机的途径。
交换机 交换机的功能与路由器相似,但路由器只用于局域网(一般是以太网)。也就是说,它们将多个分离的以太网互连,将到达的数据包路由到适当的外出网络中。它们在以太网的网络协议层上完成这一任务。起初它们对互连网络有多大范围一无所知,通过观察数据流量以及在缺少信息时采取广播请求的方式建立其路由表。
与集线器相比,交换机的好处是它分离了到达的流量,仅在相关的外出网络上传输数据包,减少了所连接网络的拥塞。
隧道 网桥和路由器通过网络层协议和一个互连网络协议的转换,实现在各种底层网络上传输互连网络数据包,不过在一种情形下,底层网络协议可以被隐藏起来不被其上的层看到,不需要使用互连网络协议。当一对连接到同一类型的两个网络中的结点需要通过另一种类型的网络进行通信时,它们之间通过构造协议“隧道”来达到这一目标。协议隧道其实就是在相异网络环境中传输数据包的软件层。
下面类比解释了选择“隧道”这一术语的原因,同时也提供了另一种方式来思考隧道的含义。穿山隧道使得车辆通过成为可能,如果没有隧道这是不可能实现的。公路是连续的,隧道对于应用(车辆)来说是透明的。公路是传输机制,而隧道使得它能在相异的环境中工作。
图3-11 IPv6迁移使用的隧道105图3-11显示的是隧道的一种建议使用方法,它支持从互联网迁移到IPv6协议。IPv6将会取代现在使用的IP协议版本IPv4,但它们不兼容(IPv4和IPv6的描述见3.4节)。在向IPv6过渡的过程中,IPv4的“海洋”中会不断出现IPv6“岛屿”。在图3-11中,A和B就是这样的岛屿。在岛屿的边界处,IPv6数据包被封装成IPv4的格式,并以该种方式在IPv4网络中传输。
看另一个例子,移动IP协议(其描述见3.4.5节)通过建立从本地基站到任一网络位置的隧道,来将IP数据包传输到互联网上的任何移动主机。中间的网络结点不需要为处理移动IP协议而加以修改。IP组播协议在处理方式上也与此相似,依靠一些支持IP组播路由的路由器来决定路由,但通过使用标准IP地址的路由器来传输IP数据包,另一个例子是在串行链路上传输IP数据包的PPP协议。