- 自制系统内选路协议
- 每个自治系统可以选择该自治系统中各个路由器之间的选路协议,这种协议我们称之为内部网关协议IGP(Interior Gateway Protocol)或域内选路协议(Intradomain Routing Protocol);
- 最常用的IGP是选路信息协议RIP(Routing Infromation Protocol);
- 一种新的IGP是开放最短路径优先OSPF(Open Shortest Path First)协议,它意在取代RIP;
- 另一种1986年在原来NSFNET骨干网上使用的较早的IGP协议—HELLO,现在已经不用了;
- 新的RFC [Almquist 1993]规定,实现任何动态选路协议的路由器必须同时支持OSPF和RIP;
- 每个自治系统可以选择该自治系统中各个路由器之间的选路协议,这种协议我们称之为内部网关协议IGP(Interior Gateway Protocol)或域内选路协议(Intradomain Routing Protocol);
- 自制系统间选路协议
- 外部网关协议EGP(Exterier Gateway Protocol)或域内选路协议的分隔选路协议用于不同自治系统之间的路由器;
- EGP是当前在NSFNET骨干网和一些连接到骨干网的区域性网络上使用的是边界网关协议BGP(Border Gateway Protocol)。
- 外部网关协议EGP(Exterier Gateway Protocol)或域内选路协议的分隔选路协议用于不同自治系统之间的路由器;
- RIP版本1
- RIP报文包含中在UDP数据报中,如下图:
- 使用IP地址时的RIP报文格式如下图:
- 命令字段为1表示请求,2表示应答,还有两个舍弃不用的命令(3和4),两个非正式的命令:轮询(5)和轮询表项(6);
- 请求表示要求其他系统发送其全部或部分路由表;
- 应答则包含发送者全部或部分路由表;
- 版本字段通常为1,而第2版RIP将此字段设置为2;
- 紧跟在后面的20字节指定地址系列(address family)(对于I P地址来说,其值是2)、I P地址以及相应的度量;RIP的度量是以跳计数的;
- 采用这种20字节格式的RIP报文可以通告多达25条路由;上限25是用来保证RIP报文的总长度为2 0×25 + 4 = 504,小于512字节;由于每个报文最多携带25个路由,因此为了发送整个路由表,经常需要多个报文;
- 我们来看采用RIP协议的routed程序正常运行的结果(R I P常用的U D P端口号是5 2 0):
- 初始化:在启动一个路由守护程序时,它先判断启动了哪些接口,并在每个接口上发送一个请求报文,要求其他路由器发送完整路由表;在点对点链路中,该请求是发送给其他终点的;如果网络支持广播的话,这种请求是以广播形式发送的。目的U D P端口号是5 2 0(这是其他路由器的路由守护程序端口号)。
这种请求报文的命令字段为1,但地址系列字段设置为0,而度量字段设置为1 6;这是一种要求另一端完整路由表的特殊请求报文;
- 接收到请求:如果这个请求是刚才提到的特殊请求,那么路由器就将完整的路由表发送给请求者;否则,就处理请求中的每一个表项:如果有连接到指明地址的路由,则将度量设置成我们的值,否则将度量置为16(度量为16是一种称为“无穷大”的特殊值,它意味着没有到达目的的路由),然后发回响应;
- 接收到响应:使响应生效,可能会更新路由表;可能会增加新表项,对已有的表项进行修改,或是将已有表项删除;
- 定期选路更新:每过30秒,所有或部分路由器会将其完整路由表发送给相邻路由器;发送路由表可以是广播形式的(如在以太网上),或是发送给点对点链路的其他终点的;
- 触发更新:每当一条路由的度量发生变化时,就对它进行更新;不需要发送完整路由表,而只需要发送那些发生变化的表项;
- 每条路由都有与之相关的定时器;如果运行RIP的系统发现一条路由在3分钟内未更新,就将该路由的度量设置成无穷大(16),并标注为删除;这意味着已经在6个30秒更新时间里没收到通告该路由的路由器的更新了;再过60秒,将从本地路由表中删除该路由,以保证该路由的失效已被传播开;
- 每条路由都有与之相关的定时器;如果运行RIP的系统发现一条路由在3分钟内未更新,就将该路由的度量设置成无穷大(16),并标注为删除;这意味着已经在6个30秒更新时间里没收到通告该路由的路由器的更新了;再过60秒,将从本地路由表中删除该路由,以保证该路由的失效已被传播开;
- 初始化:在启动一个路由守护程序时,它先判断启动了哪些接口,并在每个接口上发送一个请求报文,要求其他路由器发送完整路由表;在点对点链路中,该请求是发送给其他终点的;如果网络支持广播的话,这种请求是以广播形式发送的。目的U D P端口号是5 2 0(这是其他路由器的路由守护程序端口号)。
- RIP报文包含中在UDP数据报中,如下图:
- RIP版本2
- RFC 1388 [Malkin 1993a]中对RIP定义进行了扩充,通常称其结果为RIP-2;这些扩充并不改变协议本身,而是利用上图10-3中的一些标注为“必须为0”的字段来传递一些额外的信息;如果RIP忽略这些必须为0的字段,那么,RIP和RIP-2可以互操作;
- RIP-2定义的RIP报文格式如下图:
- 选路域(routing domain)是一个选路守护程序的标识符,它指出了这个数据报的所有者;在一个Unix实现中,它可以是选路守护程序的进程号;该域允许管理者在单个路由器上运行多个RIP实例,每个实例在一个选路域内运行;
- 选路标记(routing tag)是为了支持外部网关协议而存在的,它携带着一个EGP和BGP的自治系统号;
- 每个表项的子网掩码应用于相应的I P地址上;下一站IP地址指明发往目的IP地址的报文该发往哪里;该字段为0意味着发往目的地址的报文应该发给发送RIP报文的系统;
- RIP-2提供了一种简单的鉴别机制:可以指定RIP报文的前20字节表项地址系列为0xffff,路由标记为2;表项中的其余16字节包含一个明文口令;
- RIP-2除了广播外,还支持多播;这可以减少不收听RIP-2报文的主机的负载;
- RIP-2提供了一种简单的鉴别机制:可以指定RIP报文的前20字节表项地址系列为0xffff,路由标记为2;表项中的其余16字节包含一个明文口令;
- RFC 1388 [Malkin 1993a]中对RIP定义进行了扩充,通常称其结果为RIP-2;这些扩充并不改变协议本身,而是利用上图10-3中的一些标注为“必须为0”的字段来传递一些额外的信息;如果RIP忽略这些必须为0的字段,那么,RIP和RIP-2可以互操作;
- OSPF:开放最短路径优先
- OSPF是除RIP外的另一个内部网关协议,它克服了RIP的所有限制,RFC 1247 [Moy 1991]中对第2版OSPF进行了描述;
- 与采用距离向量的RIP协议不同的是,OSPF是一个链路状态协议:
- 距离向量的意思是:RIP发送的报文包含一个距离向量(跳数),每个路由器都根据它所接收到邻站的这些距离向量来更新自己的路由表;
- 在一个链路状态协议中:路由器并不与其邻站交换距离信息,它采用的是每个路由器主动地测试与其邻站相连链路的状态,将这些信息发送给它的其他邻站,而邻站将这些信息在自治系统中传播出去;每个路由器接收这些链路状态信息,并建立起完整的路由表;
- 从实际角度来看:二者的不同点是链路状态协议总是比距离向量协议收敛更快:
- 收敛的意思是在路由发生变化后,例如在路由器关闭或链路出故障后,可以稳定下来;
- 收敛的意思是在路由发生变化后,例如在路由器关闭或链路出故障后,可以稳定下来;
- 距离向量的意思是:RIP发送的报文包含一个距离向量(跳数),每个路由器都根据它所接收到邻站的这些距离向量来更新自己的路由表;
- [ Perlman 1992]的9.3节对这两种类型的选路协议的其他方面进行了比较:
- OSPF与RIP(以及其他选路协议)的不同点在于:OSPF直接使用IP,也就是说,它并不使用UDP或TCP;对于IP首部的protocol字段,OSPF有其自己的值,回顾一下IP数据报格式及首部中的各字段,如图:
- 另外,作为一种链路状态协议而不是距离向量协议,OSPF还有着一些优于RIP的特点:
- OSPF可以对每个IP服务类型计算各自的路由集,这意味着对于任何目的,可以有多个路由表表项,每个表项对应着一个I P服务类型;
- 给每个接口指派一个无维数的费用;可以通过吞吐率、往返时间、可靠性或其他性能来进行指派;可以给每个IP服务类型指派一个单独的费用;
- 当对同一个目的地址存在着多个相同费用的路由时,OSPF在这些路由上平均分配流量,我们称之为流量平衡;
- OSPF支持子网:子网掩码与每个通告路由相连,这样就允许将一个任何类型的IP地址分割成多个不同大小的子网;到一个主机的路由是通过全1子网掩码进行通告的,默认路由是以IP地址为0 . 0 . 0 . 0、网络掩码为全0进行通告的;
- 路由器之间的点对点链路不需要每端都有一个IP地址,我们称之为无编号网络,这样可以节省IP地址—现在非常紧缺的一种资源;
- 采用了一种简单鉴别机制:可以采用类似于RIP-2机制的方法指定一个明文口令;
- OSPF采用多播,而不是广播形式,以减少不参与OSPF的系统负载;
- 随着大部分厂商支持OSPF,在很多网络中OSPF将逐步取代RIP;
- 随着大部分厂商支持OSPF,在很多网络中OSPF将逐步取代RIP;
- OSPF可以对每个IP服务类型计算各自的路由集,这意味着对于任何目的,可以有多个路由表表项,每个表项对应着一个I P服务类型;
- OSPF与RIP(以及其他选路协议)的不同点在于:OSPF直接使用IP,也就是说,它并不使用UDP或TCP;对于IP首部的protocol字段,OSPF有其自己的值,回顾一下IP数据报格式及首部中的各字段,如图:
- OSPF是除RIP外的另一个内部网关协议,它克服了RIP的所有限制,RFC 1247 [Moy 1991]中对第2版OSPF进行了描述;
- BGP:边界网关协议
- BGP是一种不同自治系统的路由器之间进行通信的外部网关协议,BGP是ARPANET所使用的老EGP的取代品;RFC1267 [Lougheed and Rekhter 1991] 对第3版的BGP进行了描述;
- RFC 1268 [Rekhter and Gross 1991] 描述了如何在Internet中使用BGP;
- BGP系统与其他BGP系统之间交换网络可到达信息,这些信息包括数据到达这些网络所必须经过的自治系统AS中的所有路径,这些信息足以构造一幅自治系统连接图;然后,可以根据连接图删除选路环,制订选路策略;
- 首先,我们将一个自治系统中的IP数据报分成本地流量和通过流量;在自治系统中,本地流量是起始或终止于该自治系统的流量;也就是说,其信源IP地址或信宿IP地址所指定的主机位于该自治系统中;其他的流量则称为通过流量;在Internet中使用BGP的一个目的就是减少通过流量;
- 可以将自治系统分为以下几种类型:
- 残桩自治系统(stub AS),它与其他自治系统只有单个连接,stub AS只有本地流量;
- 多接口自治系统(multihomed AS),它与其他自治系统有多个连接,但拒绝传送通过流量;
- 转送自治系统(transit AS),它与其他自治系统有多个连接,在一些策略准则之下,它可以传送本地流量和通过流量;
- 残桩自治系统(stub AS),它与其他自治系统只有单个连接,stub AS只有本地流量;
- 这样,可以将Internet的总拓扑结构看成是由一些残桩自治系统、多接口自治系统以及转送自治系统的任意互连;残桩自治系统和多接口自治系统不需要使用BG P——它们通过运行EGP在自治系统之间交换可到达信息;
- BGP与RIP和OSPF的不同之处在于BGP使用TCP作为其传输层协议;两个运行BGP的系统之间建立一条TCP连接,然后交换整个BGP路由表,从这个时候开始,在路由表发生变化时,再发送更新信号;
- BGP通过定期发送keepalive报文给其邻站来检测TCP连接对端的链路或主机失败;两个报文之间的时间间隔建议值为30秒;
- 应用层的keepalive报文与TCP的keepalive选项是独立的;
- 应用层的keepalive报文与TCP的keepalive选项是独立的;
- BGP是一种不同自治系统的路由器之间进行通信的外部网关协议,BGP是ARPANET所使用的老EGP的取代品;RFC1267 [Lougheed and Rekhter 1991] 对第3版的BGP进行了描述;
- CIDR:无类型域间选路
- 无类型域间选路(CIDR)是一个防止Internet路由表膨胀的方法,它也称为超网(supernetting);
- RFC 1518 [Rekher and Li 1993] 和RFC 1519 [Fuller et al. 1993]中对它进行了描述,而[Ford, Rekhter, and Braun 1993 ]是它的综述;
- CIDR有一个Internet Architecture Board’s blessing [Huitema 1993];
- RFC 1467 [Topolcic 1993] 对Internet中CIDR的开发状况进行了小结;
- 这块内容大家应该还是比较熟悉的:
- 为使用这个特性,网络要有一下3个特性:
- 为进行选路要对多个IP地址进行总和时,这些IP地址必须具有相同的高位地址比特;
- 路由表和选路算法必须扩展成根据32 bit IP地址和32 bit掩码做出选路决策;
- 必须扩展选路协议使其除了32 bit地址外,还要有32 bit掩码
- OSPF和RIP-2都能够携带第4版BGP所提出的32 bit掩码;
- CIDR同时还使用一种技术,使最佳匹配总是最长的匹配;
- 为使用这个特性,网络要有一下3个特性:
- 无类型域间选路(CIDR)是一个防止Internet路由表膨胀的方法,它也称为超网(supernetting);