声明:本博客参考自《TCP/IP详解卷一:协议》
1.概述
上篇博客中介绍的路由表操作是静态选路的方式。在网络很小的时候,这种方法是可行的。但是网络比较复杂的时候这种方法就行不通了。这就要引入接下来要介绍的内容:动态选路协议。
2.动态选路
当相邻路由器之间进行通信,互相沟通所连网络时,就出现了动态选路。路由器之间必须采用选路协议进行通信。路由器上有一个进程-路由守护程序。它运行选路协议,并与其相邻的一些路由器进行通信。路由守护程序会从相邻路由接收信息,并更新路由表。当路由发生变化时,路由守护程序动态增加或删除路由表项。
动态选路并不会改变内核搜索路由表的方式,即先主机路由再网络路由最后默认路由。路由守护程序在发现同一目的地多条路径时,会选择将最佳路径加入到路由表中。如果有条路中断,路由守护程序也会将指定的路由从内核路由表中删除。
像Internet这样的系统中,有多种不同的选路协议。Internet是以一组自治系统的方式组织的。每个自治系统通常是由单个实体管理。通常一个公司或者学习可以被定义为一个自治系统。在一个自治系统内选路的协议称为内部网关协议IGP(Interior Gateway Protocol)或域内选路协议(Intradomain routing protocol)。在不同的自治系统间通信的协议叫做外部网关协议EGP(Exterier Gateway Protocol)。
最常用的IGP是路由信息协议RIP,现在也出现了一种新的开发最短路径优先协议-OSPF,正在逐渐取代RIP。
现在常用的外部网关协议是边界网关协议BGP(Border Gateway Protocol)。
3.选路信息协议RIP
3.1 报文格式
RIP报文包含在UDP数据报中,格式如下所示:
RIP报文的具体格式如下图:
①命令字段:1-请求,2-应答,5-轮询,6-轮询表项。3,4是舍弃不用的。
②版本字段通常为1。在第2版的RIP协议中,此字段为2。
③紧跟在后面的20个字节指定地址系列(IP协议此值为2)、IP地址及相应的度量。
采用这种20字节的RIP报文最多可以通告多达25条路由。
对于运行RIP的自治系统,没过30s,所有或部分路由器会将其完整路由表发送给相邻路由器。如果发现一条路由在3分钟内未更新,就将该路由的度量设置成无穷大(16),并标为删除。再过60s,将从本地路由表中删除该路由,以保证该路由的失效已被传播开。
3.2 度量
RIP所使用的度量是以跳(hop)计算的。所有直接连接接口的跳数为1。
路由器R1通过发送广播到N1通告它与N2之间的跳数是1。同时通过发送广播给N2通过它与N1之间的跳数为1。同样,R2通告N3,它与N2的度量为1。同时,通告N2,它与N3的度量为1。
如果相邻路由器通告它与其它网络路由的跳数为1,那么我们与那个网络的度量就是2,这是因为我们必须经过那个路由器。在上面的涂总R2到N1的度量是2,与R1到N3的度量一样。
这样的选路方式存在这下面的各个问题:
①跳数的最大值只有15,这就限制了选路的范围。
②RIP不区分子网的概念会造成信息出现差错。
③当路由器或者链路发生故障的时候,需要很长一段时间稳定下来,这个过程中可能会发生路由环路。
3.3 RIP版本2
RIP版本2通常称为RIP-2。这些扩充并不改变协议本身,只是充分利用协议中为0的字段。
说明:
①路由域是选路守护程序的标识符,它指出这个数据报的所有者。一般是选路守护程序的进程号。
②路由标记是为了支持外部网关协议而存在的。它携带着一个EGP和BGP的自治系统号。
③每个表项的子网掩码应用于相应的IP地址上。下一站IP地址指明发往目的IP地址的报文该发往哪里。该字段为0意味着发往目的地址的报文应该发给发送RIP报文的系统。
RIP-2除了支持广播外,还支持多播。着可以减少很多主机的负载。
4. 开放最短路径优先协议:OSPF
OSPF是除RIP外的另一个内部网关协议。它克服了RIP的所有缺陷。与采用距离向量的RIP协议不同的是,OSPF是一个链路状态协议。距离向量的意思是RIP发送的报文包含一个距离向量(跳数)。每个路由器根据它所接收的邻站的这些距离来更新路由表。
在链路状态协议中,每个路由器主动地测试与相邻站相连链路的状态,将这些信息发送给它的其它相邻站。每个路由器接收到这些链路状态信息,并建立起完整的路由表。链路状态比距离向量在路由器关闭或链路故障时,可以更快稳定下来。
OSPF相对与RIP的优点:
①OSPF可以对每个 I P服务类型计算各自的路由集。这意味着对于任何目的,可以有多个路由表表项,每个表项对应着一个 I P服务类型。
②给每个接口指派一个无维数的费用。可以通过吞吐率、往返时间、可靠性或其他性能来进行指派。可以给每个I P服务类型指派一个单独的费用。
③ 当对同一个目的地址存在着多个相同费用的路由时,O S P F在这些路由上平均分配流量。我们称之为流量平衡。
④OSPF支持子网:子网掩码与每个通告路由相连。这样就允许将一个任何类型的 I P地址分割成多个不同大小的子网。到一个主机的路由是通过全 1子网掩码进行通告的。
⑤路由器之间的点对点链路不需要每端都有一个 I P地址,我们称之为无编号网络。这样可以节省I P地址 — 现在非常紧缺的一种资源。
⑥采用了一种简单鉴别机制。可以采用类似于 R I P - 2机制的方法指定一个明文口令。
⑦OSPF多采用多播,以减少不参与OSPF系统的负载。
5.边界网关协议:BGP
BGP是一种不同自治系统的路由器之间进行通信的外部网关协议。B G P系统与其他B G P系统之间交换网络可到达信息。这些信息包括数据到达这些网络所必须经过的自治系统 A S中的所有路径。这些信息足以构造一幅自治系统连接图。然后,可以根据连接图删除选路环,制订选路策略。
B G P与R I P和O S P F的不同之处在于B G P使用T C P作为其传输层协议。两个运行 B G P的系统之间建立一条T C P连接,然后交换整个B G P路由表。
B G P是一个距离向量协议,但是与(通告到目的地址跳数的) R I P不同的是,B G P列举了到每个目的地址的路由(自治系统到达目的地址的序列号)。这样就排除了一些距离向量协议的问题。采用16 bit数字表示自治系统标识。
B G P通过定期发送keepalive报文给其邻站来检测TCP连接对端的链路或主机失败。两个报文之间的时间间隔建议值为30秒。
6. 总结
动态选路协议分为两个类:内部网关协议(IGP)和外部网关协议(EGP)。其中外部网关协议有:RIP,RIP-2,OSPF。而外部网关协议主要有BGP,还有一种无类型域间选路协议(CIDR),在本文中没有介绍。