路由选择协议(Routing protocol)作为路由之间进行交换的语言,用于实现可达性信息和网络状态的共享。
动态路由选择协议不仅仅执行路径选择决策和路由表更新功能,而且还要在最优路径不可用时决策下一跳最优路径。动态路由选择相比静态路由选择而言最大的优势在于,动态路由选择能够缓解拓扑变化带来的影响。
所有的路由选择协议都是围绕着一种算法而构建的。通常,一种算法是一个逐步解决问题的过程。一种路由算法至少应指明一下内容:
1.向其他路由器传送网络可达性信息的过程。
2.从其他路由器接受可达性信息的过程。
3.基于现有可达性信息决策最优油路的过程以及在路由表中纪录这些信息的过程。
4.响应,修正和通告网络中拓扑变化的过程。
度量
当有多条路径到达相同目标网络的时候,路由器需要一种机制来计算最优路径。度量(metric)是指派给路由的一种变量,作为一种手段,度量可以按最好到最坏,或按最好选择到最后选择的顺序对路由进行等级划分。
不同的路由选择协议使用不同的度量。
RIP 使用路由器小条数来选择最优路径
EIGRP 基于路径沿路最小带宽和总延时定义最优路径。
跳数:(Hop Count)可以简单记录路由器的跳数。
带宽:(Bandwidth)将会选择高带宽路径,而不是选择低带宽路径。
负载:(Load)反应了流量占用沿途链路带宽的数量。最优路径应该是负载最低的路径。
延时:(Delay)数据包经过一条路径所要花费的时间。使用延时做度量的路由选择协议会选择最低延时的路径作为最优路径。
可靠性:(Reliability)是用来测量链路在某种情况下面发生故障的可能性,可靠性是可以变化的或固定的。可变的可靠性度量例子就是链路发生故障的次数,或特定时间间隔内收到错误的次数。固定可靠性是基于管理员确定的一跳路径的已知量。可靠性最高的路径将会被最优先选择。
代价:{也称为开销(Cost)}由管理员设置的代价度量可以反应更优或更差路由。通过任何策略或链路特性都可以对代价进行定义,同时代价也可以反应出网络管理员对路径的随意判断,因而代价是一个描述无量纲度量的术语。
大多数路由选择协议属于以下两种:
1.距离矢量协议(Distance ventor )
IP路由选择信息协议(RIP)
Xerox网络系统的XNS RIP
Novell的IPX RIP
Cisco System的internet网关选择协议(IGRP)和增强型Internet网关路由协议(EIGRP)
注:EIGRP虽然是距离矢量协议,但是它不挺起发送更新信息,也不进行广播,而且更新信息也不是整个路由表。
DEC的DNA阶段4
AppleTalk的路由选择表维护协议(RTMP)
2.链路状态(Link state)
IP开放式最短路径优先(OSPF)
CLNS或IP ISO的中间系统到中间系统(IS-IS)
Novell的NetWare链路服务协议(NLSP)
距离矢量协议的通用属性:
1.定期更新(Periodic Updates)
2.邻居(Neighbours)
3.广播更新(Broadcast Updates)
4.全路由选择表更新
路由失效计时器可以防止路由黑洞。
何为逆向路由(Reverse route)路由的指向于数据包流动的方向相反的路由。
水平分隔(Split horizon)是一种在两台路由器之间阻止逆向路由的技术。
执行水平分隔可以防止路由环路的发生。有两种水平分隔的方法:
1.简单水平分隔法
简单水平分隔的规则是,从某接口发送的更新消息不能包含从该接口收到的更新所包含的网络。(简单来说就是从该接口收到的路由更新条目不能再从该接口发送出去)。简单水平分隔采用的是仰制信息的工作方式。
2.毒性逆转水平分隔法
毒性逆转水平分隔的规则是,当更新信息被发送出某接口的时候,信息中将制定从该接口收到的更新信息中获取的网络是不可达的。
注意:通过设置度量为无穷大可以标记网络为不可达。
触发更新(Triggerred Updata)又称为快速更新。如果一个度量变好或者变坏,那么路由器将立即发送更新信息。而不等更新计数器超时。这样重新收敛的速度将会比每台路由器必须等待更新周期的方式快,而且可以大大减少技术到无穷大所引发的问题,虽然不能完全消除。定期更新和触发更新可以会在一起发生。因而路由器可能会在收到来自触发更新的正确信息之后又收到来之未收敛路由器的错误信息。这种情况表明,当网络正在进行重新收敛的时候,还会发生混乱和路由错误。但是触发更新将有助于更快的消除这些问题。
抑制计时器:触发更新为正在重新进行收敛的网络增加了应变能力。为了降低接受错误路由选择信息的可能性,抑制计数器(Holddown Timer)引入某种程度的怀疑量。
如果到一个目标距离增加(例如,跳数由2增加到4),那么路由器将为该路由设置抑制计数器。直到计时器超时,路由器才可以接受有关此路由的更新信息。
注意:必须小心设置抑制计时器。如果挂起时间太段,不起作用;如果太长,正常路由则会受到不利的影响。
异步更新(Asynchronous Update):图给出一组连接在以太网骨干上面的路由器。路由器将不会同时广播更新,如果发生这种情况,更新数据包会发生碰撞。但是当几台路由器共享一个广播网络的时候可能会出现这种情况。因为路由器中,更新处理所带来的系统延时将导致更新计时器趋于同步。当几台路由器的计时器同步之后,碰撞随之发生。这又进一步影响到系统延时,最终共享广播网络的所有路由器都可能变得同步起来。
如果更新计时器同保护,可能发送碰撞
可以使用下面两种方法维持异步更新(Asynchronous Update)
每台路由器的更新计时器独立于路由选择进程,因而不会受到洛阳处理负载的影响。
在每个更新周期中加入一个小的随机时间或定时抖动动作为偏移。
如果路由器实现了严格的、独立于系统的计时器方法,那么还必须按照随机的方式激活共享一个广播网络的所有路由器。因为并行启动整组路由器――比如发生发面积断电--可能造成所有计时器同时发送更新信息。
如果随机变量与共享广播网络的路由器数量相比足够大,那么增加更新周期的随机性是有效的。
链路状态协议{也称为最短路劲优先协议或分布式数据库协议}链路状态路由协议像一张公路线路图。链路状态路由是不容易被欺骗而做出错误的路由决策的,因为它有一张完整的网络图。
链路状态协议使用的是著名算法---E.W.Dijkstra的最短路径算法设计的。链路状态协议有一下几种:
IP开放式最短路径优先(OSPF)
CLNS或IP ISO的中间系统到中间系统(IS-IS)
Novell的NetWare链路服务协议(NLSP)
DEC的DNA阶段5
虽然链路状态协议确实考虑的比距离矢量协议更为复杂,但是基本功能却一点也不复杂。
每台路由器与它的邻居之间建立联系,这种联系叫做邻接关系。
每台路由器向每个邻居发送被称为链路状态通告(LSA)的数据单元。对每台路由器链路都会生成一个LSA,LSA用于标识这条链路、链路状态、路由去接口道链路的代价度量值以及链路所连接的所有邻居。每个另据在收到通告之后将依次向它的邻居状态(泛洪)这些通告。
每台路由器要在数据库中保存一份它所收到的LAS的备份。如果所有工作正常,所有路由器的数据库应该相同。
完整的拓扑数据库,也叫链路状态库,Dijkstra算法使用它对网络图进行计算得出每台路由器的最短路径。接着链路状态协议对链路状态数据库进行查找到每台路由器所连接的子网,并把这些信息输入到路由表中。
Hello Protocol: Hello协议定义了一个Hello数据包的格式和交换数据包并处理数据包信息的过程。