随心所欲的网络,从面向连接到面向服务
通信网络是一个拓扑十分复杂的结构(见图 2-35),像缠绕在一起无法解开的线团。网络拓扑结构的复杂性其实也正是网络性能受到限制的主要原因之一,同时也是网络建设与运营成本昂贵的主要原因之一。
图 2-35 典型的网络拓扑结构,复杂而缠绕
造成网络复杂性的原因有很多,但本质上是由于传统通信网络是一个基于连接的网络架构(ConnectionBasedArchitecture)。由于用户希望网络是四通八达、自由连接的,这就必然会导致这个由连接构成的网络日益复杂。这样一个面向连接的网络,使得每个网络节点都和其他网络节点有着直接或间接的关系,这就会使得配置和运维一个网络必然会牵一发而动全身。
我们简单地以传送一个数据包为例,为了使得用户的一个数据包能够从北京传送到广州,而不在网络中迷失方向,就必须在这个数据包所经过的沿路的所有网络设备之中配置相应的路由参数。最基本的代表性内容就是一个叫作路由表(RoutingTable)的信息内容,这个路由表的功能简单地说就是将数据包可能传送的所有目的地址与这个网络设备的端口建立一一对应关系(见图 2-36)。
图 2-36 网络路由设备的典型配置内容(路由表)
数据包在经过这些网络设备时,就要停下来看一看,应该从哪一个端口出去才能到达目的地。这就好比我们走在一个陌生城市的道路上,每经过一个路口,我们都需要停下来看一看路口的指示牌(见图 2-37),我们才知道下面应该朝哪个方向继续行进一样。数据包从北京到广州,这一路上要经过无数的路口(网络路由设备),每一个路口都有这样的方向指示牌(路由表),数据包都需要停下来查看下一段路的方向,直到数据包最终到达广州。可以想象这样的一路,需要花费多少时间在确定道路。最为头疼的是,数据包所经历的这条线路必须是沿路所有网络路由设备事先配置好的。而且一旦配置了,这条线路就是一条固定的线路(见图 2-38),要想改变它,必须要沿路所有设备一起改变配置才行。
图 2-37路口选择
这样的网络既僵化又复杂!想象一辆列车从北京开往广州的途中要经过众多的轨道扳道机,只要有一个轨道扳道机没有被正确配置,列车都会偏离预设的轨道而无法到达广州。即便是所有扳道机都正确配置了,在实际的行驶过程中,也可能会发生意料之外的事情,比如恶劣的天气或交通 事故等导致既定的路线无法继续前行。传统的网络面对这一问题,别无他法,只有一个字,等!即便是北京通往广州的道路千千万万,由于行驶线路已经被事先规定了,列车也只能等待道路的恢复。也许对于列车出行而言,这并不是常见的场景,但对于网络上的数据传输而言,这就再平常不过了。网络设备损坏,操作的错误、数据流量拥塞等各种问题都会导致本来设置好的数据传输路径突然发生问题,令数据包无法到达目的地。我们虽然可以重新改变路由,让数据包绕道而行,但如前文所述,这意味所有沿路所有设备的路由都必须协同改动,而且还要考虑正行驶在不同路段的数据包。这就是网络运维的痛苦和高成本所在。
图 2-38 网络路由表一旦配置,数据传输路径就被固定了