选路信息协议(Routing Information Protocol)
运行在自治系统(AS,Autonomous System)内部的路由选路协议被称为内部网关协议(IGP,Interior Gateway Protocol)或域内选路协议(intradomain routing protocol)。
- RIP(Routing Information Protocol)
- OSPF(Open Shortest Path First)
外部网关协议EGP(Exterier Gateway Protocol)或域内选路协议的分隔选路协议用于不同自治系统之间的路由器。
- BGP(Border Gateway Protocol)
RIP报文格式
- 命令字段为1表示请求,2表示应答。还有两个舍弃不用的命令(3和4),两个非正式的命令:轮询(5)和轮询表项(6)。请求表示要求其他系统发送其全部或部分路由表。应答则包含发送者全部或部分路由表。
- 版本字段通常为1,而第2版RIP将此字段设置为2。
- 紧跟在后面的2 0字节指定地址系列(address family)(对于IP地址来说,其值是2)、IP地址以及相应的度量。
- 采用这种20字节格式的RIP报文可以通告多达25条路由。上限25是用来保证RIP报文的总长度为20×25+4 = 504,小于512字节。由于每个报文最多携带25个路由,因此为了发送整个路由表,经常需要多个报文。
RIP报文包含在UDP数据报中(常用UDP端口号520)
RIP正常启动流程
- 初始化:在启动一个路由守护程序时,它先判断启动了哪些接口,并在每个接口上发送一个请求报文,要求其他路由器发送完整路由表。在点对点链路中,该请求是发送给其他终点的。如果网络支持广播的话,这种请求是以广播形式发送的。这种请求报文的命令字段为1,但地址系列字段设置为0,而度量字段设置为16。这是一种要求另一端完整路由表的特殊请求报文。
- 接收到请求:如果这个请求是刚才提到的特殊请求,那么路由器就将完整的路由表发送给请求者。否则,就处理请求中的每一个表项:如果有连接到指明地址的路由,则将度量设置成我们的值,否则将度量置为16(度量为16是一种称为“无穷大”的特殊值,它意味着没有到达目的的路由),然后发回响应。
- 接收到响应:使响应生效,可能会更新路由表。可能会增加新表项,对已有的表项进行修改,或是将已有表项删除。
- 定期选路更新:每过30秒,所有或部分路由器会将其完整路由表发送给相邻路由器。发送路由表可以是广播形式的(如在以太网上),或是发送给点对点链路的其他终点的。
- 触发更新:每当一条路由的度量发生变化时,就对它进行更新。不需要发送完整路由表,而只需要发送那些发生变化的表项。
RIP路由协议中,如果某条路由180秒仍未更新,则该路由度量值将被设置为16(无穷大),并标志为删除,再经过60秒时仍未收到更新,则该路由从路由表中删除。
度量(跳计数)
RIP中每个路由器都发送其路由表给邻居,可以判断在同一个自治系统AS内到每个网络的路由。如果在该AS内从一个路由器到一个网络有多条路由,则路由器会选择跳数最小的路由。
跳数的最大值为15,度量为16表示无路由到达该IP地址。
RIPv2
RIPv2报文格式
- 选路域(routing domain)是一个选路守护程序的标识符,它指出了这个数据报的所有者。
- 选路标记(routing tag)是为了支持外部网关协议而存在的。它携带着一个EGP和BGP的自治系统号。
- 每个表项的子网掩码应用于相应的IP地址上。下一站IP地址指明发往目的IP地址的报文该发往哪里。该字段为0意味着发往目的地址的报文应该发给发送RIP报文的系统。
- RIPv2提供了一种简单的鉴别机制。可以指定RIP报文的前20字节表项地址系列为0xffff,路由标记为2。表项中的其余16字节包含一个明文口令。
- RIPv2支持多播。这可以减少不收听RIPv2报文的主机的负载。
OSPF(开放最短路径优先)
OSPF是链路状态协议,在一个链路状态协议中,路由器并不与其邻站交换距离信息。它采用的是每个路由器主动地测试与其邻站相连链路的状态,将这些信息发送给它的其他邻站,而邻站将这些信息在自治系统中传播出去。每个路由器接收这些链路状态信息,并建立起完整的路由表。
OSPF协议的优点
1) OSPF可以对每个IP服务类型计算各自的路由集。这意味着对于任何目的,可以有多个路由表表项,每个表项对应着一个IP服务类型。
2) 给每个接口指派一个无维数的费用。可以通过吞吐率、往返时间、可靠性或其他性能来进行指派。可以给每个IP服务类型指派一个单独的费用。
3) 当对同一个目的地址存在着多个相同费用的路由时,OSPF在这些路由上平均分配流量。我们称之为流量平衡。
4) OSPF支持子网:子网掩码与每个通告路由相连。这样就允许将一个任何类型的IP地址分割成多个不同大小的子网。到一个主机的路由是通过全1子网掩码进行通告的。默认路由是以IP地址为0.0.0.0、网络掩码为全0进行通告的。
5) 路由器之间的点对点链路不需要每端都有一个IP地址,我们称之为无编号网络。这样可以节省IP地址—现在非常紧缺的一种资源。
6) 采用了一种简单鉴别机制。
7) OSPF采用多播,而不是广播形式,以减少不参与OSPF的系统负载。
BGP(边界网关协议)
BGP是一种不同自治系统的路由器之间进行通信的外部网关协议。
BGP系统与其他BGP系统之间交换网络可到达信息。这些信息包括数据到达这些网络所必须经过的自治系统AS中的所有路径。这些信息足以构造一幅自治系统连接图。然后,可以根据连接图删除选路环,制订选路策略。
在Internet中使用BGP的一个目的就是减少通过流量。
自治系统分类:
1) 残桩自治系统(stub AS),它与其他自治系统只有单个连接。stub AS只有本地流量。
2) 多接口自治系统(multihomed AS),它与其他自治系统有多个连接,但拒绝传送通过流量。
3) 转送自治系统(transit AS),它与其他自治系统有多个连接,在一些策略准则之下,它可以传送本地流量和通过流量。
BGP允许使用基于策略的选路。由自治系统管理员制订策略,并通过配置文件将策略指定给BGP。
BGP与RI 和OSPF的不同之处在于BGP使用TCP作为其传输层协议。两个运行BGP的系统之间建立一条TCP连接,然后交换整个BGP路由表。从这个时候开始,在路由表发生变化时,再发送更新信号。
BGP是一个距离向量协议,但是与(通告到目的地址跳数的) RIP不同的是,BGP列举了到每个目的地址的路由(自治系统到达目的地址的序列号)。这样就排除了一些距离向量协议的问题。采用16 bit 数字表示自治系统标识。
BGP通过定期发送keepalive报文给其邻站来检测TCP连接对端的链路或主机失败。两个报文之间的时间间隔建议值为30秒。
CIDR(无类型域间选路)
无类型域间选路(CIDR)是一个防止Internet路由表膨胀的方法,也称为超网(supernetting)。
IP地址汇总的需求
1) 必须具有相同的高位地址比特。
2) 路由表和选路算法必须扩展成根据32 bit IP地址和32 bit掩码做出选路决策。
3) 必须扩展选路协议使其除了32 bit地址外,还要有32 bit掩码。
CIDR同时还使用一种技术,使最佳匹配总是最长的匹配:即在32 bit掩码中,它具有最大值。
域间选路协议(IDRP)最开始时,是一个为了使用OSI地址而不是IP地址,而进行修改的BGP版本。Intermediate System to Intermediate System 协议(IS-IS)是OSI的标准IGP。可以用它来选路CLNP(无连接网络协议),这是一种与IP类似的OSI协议。IS-IS和OSPF相似。