1、层次路由
- 随着网络规模的增长,路由器的路由表也成比例地增长。不断增长的路由表不仅消耗路由器内存,而且还需要更多的CPU时间来扫描路由器表以及更多的带宽来发送有关的状态报告。当网络增长到一定规模时,路由器不太可能再为其他每一个路由器维护一个表项。所以,路由不得不分层进行,就好像电话网络中的做法那样。
- 在采用了分层路由之后,路由器被划分成区域。每个路由器知道如何将数据包路由到自己所在区域内的目标地址,但是对于其他区域的内部结构毫不知情。当不同的网络被互联在一起,很自然会将每个网络当做一个独立的区域,一个网络中的路由器不必知道其他网络的拓扑结构。
- 对于大型网络,两级的层次结构可能还不够;可能有必要将区域组织成簇,将簇组织成区,将区组织成群,等等。举一个例子,请考虑如何将一个数据包从加利福利亚的伯克利路由到肯尼亚的马林迪。伯克利的路由器知道加利福利亚的详细拓扑结构,但是可能将其他所有州际的流量发送给洛杉矶的路由器;洛杉矶的路由器能够将流量直接路由器给美国其他国家的路由器,但是它会将国际流量发送到纽约;纽约的路由器直接将所有流量发送至目标国家中负责处理国际流量的路由器,比如肯尼亚的内罗毕。最后,该数据包将沿着肯尼亚国家中的路径树往下传送,一直到达马林迪。
- 图中给出了一个两级层次的定量分析例子,其中包含了5个区域。路由器1A的完整路由表有17个表项,如图b所示。如果采用分级路由,则路由表如图c所示,所有针对本区域内的路由表项都跟原先一样;但是,所有到其他区域的路由器都将被压缩到了单个路由器中。因此,所有到区域2的流量都要经过1B-2A线路,其余的远程流量都经过1C-3B线路。层次路由使得路由器1A的路由表从17项降低为7项。随着区域数与每个区域中路由器数量之比值的增加,节省下来的表空间也随之增加。
- 不幸的是,这种空间的节省不是免费得来的,它需要付出代价,其代价形式是增加了路径长度。例如,从1A到5C的最佳路径是经过区域2,但采用了层次路由之后,所有到区域5的流量都要经过区域3,因为对于区域5中的大多数目标来说,这是更好的选择。
- 当单个网络变得非常大时,应该分多少层?例如,一个具有720个路由器的子网。如果没有分层,每个路由器需要720个表项;如果子网被分成24个区域,每个区域30个路由器,那么,每个路由器只需要30个本地表项,加上23个远程表项,总共53个表项;如果采用三级层次结构,总共8个簇,每个簇包含9个区域,每个簇包含9个区域,每个区域10个路由器,那么每个路由器需要10个表项用于本地记录,8个表项用于到同一簇内其他区域的路由,7个表项用于远程的簇,总共25个表项。Kamoun和Kleinrock发现,对于一个包含N个路由器的网络,最优层数是ln N,每个路由器所需的路由器表项是elnN个,它们还证明了由于分层路由而导致的平均路径长度的实际增长非常小,通常是可以接收的。
2、广播路由
- 在有些应用中,主机需要给其他多个或者全部主机发送消息。例如,用于发布天气预报、股市行情最新报告或者现场直播节目等服务,它们最佳的工作方式是将消息广播给所有机器,然后让那些感兴趣的机器读取数据。同时给全部目标地址发送一个数据包称为广播。
- 一种不要求网络具有任何特殊性质的广播方法是让源机器简单地给每一个目标单独发送一个数据包。这种方法不仅浪费带宽,而且还要求源机器拥有所有目标机器的完整地址列表。实际上这种做法不够理想,即使它广泛适用。一种改进方法称为多目标路由,每个数据包包含一组目标地址,或者一个位图,由该位图指定所期望到达的目标。当一个数据包到达一个路由器时,路由器检查数据包携带的所有目标,确定哪些输出线路是必要的(只要一条输出线路是到达至少一个目标的最佳路径,那么就是必要的)。路由器为每一条需要用到的输出线路生成一份该数据包新的副本,在这份副本中只包含了那些使用这条线路的目标地址。实际上,原来的目标集合被分散到这些输出线路上。在经过了足够多的跳数之后,每个数据包将只包含一个目标地址,因此可被当做普通的数据包来对待。多目标路由方法就如单个地址的数据包一样,只不过当多个数据包必须遵循同样的路径时,其中一个数据包承担了全部的费用,而其他的舒筋梢则是免费搭载。因此,网络带宽的利用率更高。然而,这种模式依然要求源端知道全部的目标地址,对于路由器来说,要确定从哪些线路转发多目标数据包的工作量太大,尤其是处理多个不同的数据包时。
- 泛洪是更好的广播路由技术。当每个源实现了序号,泛洪能有效利用链路,而且路由器要做的决策也很简单。虽然泛洪方法不适合普通的点到点通信,但它被认为值得考虑做广播,而且,事实证明,一旦计算出普通数据包的最短路径,我们可以把广播做得更好。
- 逆向路径转发思想被认为是一种非常优秀的广播技术。当一个广播数据包到达一个路由器时,路由器检查它到来的那条线路是否正是通常用来给广播源端发送数据包用的那条线路。如果是