路由协议
各种各样的路由协议被用来填写网络中的路由表。象BGP,OSPF,RIP和ISIS这样的协议可以传输给所有的路由器一个正确和一致的网络视图。
路由协议想要实现目标
你能够想象如果每个路由器都存储从它的节点所能到达的每个目标点所需的信息,很可能该路由器会积累一张庞大的路由表。由于物理上(cpu,内存)的限制路由器很难有时就根本不可能处理一个庞大的路由表。因此在不影响到达每个目的地的能力的情况下,我们要使路由表最小化。例如,一个路由器通过连接到另一个路由器一个DS1链路连接到Internet,那么这个路由器可以将Internet上所有节点的信息都存储,或者它也可以将所有DS1串行链路外的非本地的信息都不存储。也就是说路由器没有在它的路由表中存储任何有关数据“包”要寻找的非本地网络目的地的信息,而是将这些“包”发送到串行链路另一端的路由器,由这个路由器来提供必要的信息。我们常把像本例中我们所说的在串行DS1链路另一端的路由器称为“Gateway of Last Resort”。这种简单的小把戏可以替路由表节省30个数量级的条目。路由信息没有必要被过于频繁地在路由器之间交换。通常路由表中的搅拌器给任何路由器所能提供的贫乏的内存和CPU施加了许多不必要的压力。信息的复制不应该影响路由器的转发操作。尽管没有必要每毫秒都刷新路由表,当然也不能每隔一个星期才刷新一次路由表。路由的一重要的目标就是为主机提供能够准确反映当前网络状态的一张路由表。
路由器最重要的操作是将接收的包发送到正确的路径。未经路由的包可能会导致数据丢失。而路由表的不一致将会导致路由环路并使某个数据包在两个相邻的界面之间被循环发送。
人们十分希望所有的路由器都能有快速的收敛性。收敛性可以被非正式地定义为计量所有路由器获得一致的网络视图的速度的单位。人们希望有极小的收敛时间,因为如此网络上的每个路由器即使在网络拓扑(即网络视图)被严重改变的情况下也能准确地反映当前的网络拓扑。当网络拓扑被改变时,每个路由器必须传输数据以帮助其它路由器来收敛出正确的网络视图。但是在刷新路由表时快速收敛也存在着它的问题。如果一个链路在迅速地振动(一会儿断开,一会儿合上),它会产生大量的安装和撤销的请求。这个链路最终将会耗尽网络上每个路由器的资源,因为其它路由器被强迫快速安装或撤消这个路由。因此,即使快速收敛是路由协议的目标,它也不是所有网络难题的万能药。
使用路径矢量路由就可以解决无穷大的问题。每个距离矢量也包括他所通过的路径(如图4)。路由器如果接收到一个路径矢量中包含自己的刷新记录,路由器将不会刷新该记录(如图5)。边界网关协议(The Border Gateway Protocol)就使用了上述的方法以解决无穷大的问题。很明显如果你想使路由表包含路由器所传输的AS(Autonomous Systems on the internet)路径信息,你将必须要向路由表中添入更多的信息。因此BGP的设计者决定牺牲一点路由器能够承受的起的存储空间和处理能力。