当相邻路由器之间进行通信,告知对方每个路由器当前所连接的网络,此时就会使用动态选路。
路由器之间必须采用选路协议进行通信。路由器上有一个路由守护进程,其运行选路协议,并与相邻的一些路由器进行通信。路由守护程序根据它从相邻路由器接收到的信息,更新内核中的路由表。
动态选路并不改变IP层的选路方式,内核搜索路由表、查找主机路由、网络路由以及默认路由的方式并不改变,仅仅是放置到路由表中的信息发生变化。当路由随时间变化时,路由由路由守护程序动态的增加或删除。
RIP选路信息协议:
RIP报文包含在UDP数据报中。
|<——————————— IP数据报 ————————————>|
|<—————— UDP数据报 —————>|
IP首部 (20字节) | UDP首部 (8字节) | RIP报文 |
RIP报文格式:
命令(1-6) | 版本(1) | (必须为0) |
地址系列(2) | (必须为0) | |
32位IP地址 | ||
(必须为0) | ||
(必须为0) | ||
度量(1-16) | ||
最多可有24个另外的路由 |
RIP协议运行流程:
1.初始化:在启动一个路由守护程序时,先判断启动了那些接口,并在每个接口上发送一个请求报文,要求其他路由器发送完整的路由表。
2.接收到请求:如果是特殊请求,那么路由器将完整的路由表发送给请求者,否则,将处理请求中的每一个表项。
3.接收到响应:使响应生效,可能会更新路由表。
4.定期选路更新。每过30秒,所有或部分路由器会将其完整路由表发送给相邻路由器。
5.触发更新:每当一条路由的度量发生变化时,就对它进行更新。不需要发送完整的路由表,只需要发送变化的表项。
度量:是以跳为单位,所有直接连接接口的跳数为1,跳数的最大值是15,度量为16表示无路由到达该IP地址。
RIP没有子网概念,例如:如果标准的B类地址中16bit的主机号不为0,那么RIP无法区分非零部分是一个子网号,或者是一个主机号。
RIP-2:
命令(1-6) | 版本(2) | 路由域 |
地址类(2) | 路由标记 | |
32位IP地址 | ||
32位子网掩码 | ||
32位下一跳IP地址 | ||
度量(1-16) | ||
最多超过24个路由,与前20字节具有相同的格式 |
路由域是一个选路程序的标识符,它指出了这个数据报的所有者。
路由标记是为了支持外部网关协议而存在,它携带一个EGP和BGP的自制系统号。
OSPF开放最短路径优先:
OSPF是一个链路状态协议。
距离向量的意思是:RIP发送的本文包含一个距离向量(跳数)。每个路由器都根据它所接受到邻站的这些距离向量来更新自己的路由表。
在一个链路状态协议中,路由器并不与其相邻站交换距离信息,它采用的是每个路由器主动测试与其邻站相连链路的状态,将这些信息发送给他的其他邻站,二邻站将这些信息在自治系统中传播出去。每个路由器接收这些链路状态信息,并建立起完整的路由表。
与RIP不同,OSPF直接使用IP,并不使用UDP或TCP。
OSPF优点:
1).OSPF可以对每个IP服务类型计算各自的路由集。对于任何目的,可以有多个路由表表项,每个表项对应着一个IP服务类型。
2).给每个接口指派一个无维数的费用。可以通过吞吐率、往返时间、可靠性或其他性能来指派。可以给每个IP服务类型指派一个单独的费用。
3).当对同一个目的地址存在着多个相同费用的路由时,OSPF在这些路由上平均分配流量。即流量均衡
4).OSPF支持子网:子网掩码与每个通告路由相连。这样就允许将一个任何类型的IP地址分割成多个不同大小的子网。
5).路由器之间的点对点链路不需要每端都有一个IP地址,我们称之为无编号网络。
6).采用了一种简单的鉴别机制。
7).OSPF采用多播而不是广播形式,以减少不参与OSPF的系统负载。
BGP边界网关协议:
BGP是一种不同自治系统的路由器之间进行通信的外部网关协议。
BGP系统与其他BGP系统之间交换网络可到达信息,这些信息包括数据到达这些网络所必须经过的自治系统中的所有路径。这些信息足以构造一副自治系统连接图。然后,可以根据连接图删选路环,制定选路策略、。
自治系统中的IP数据报分成本地流量和通过流量。
本地流量是起始或终止与该自治系统的流量,其他流量则成为通过流量。使用BGP的一个目的就是减少通过流量。
可以将自治系统扥为一下几种类型:
(1)、残桩自治系统:与其他自治系统只有单个连接,只有本地流量。
(2)、多接口自治系统:与其他自治系统有多个连接,但拒绝传说通过流量。
(3)、转送自治系统:与其他自治系统有多个连接,在一些策略准则下,他可以传送本地流量和通过流量。
BGP允许使用基于策略的选路。由自治系统管理员定制策略,并通过配置文件将策略制定给BGP。制定策略并不是协议的一部分,但制定策略允许BGP实现存在多个可选路径时选择路径,并控制信息的重发送。
BGP与RIP和OSPF的不同之处在于BGP使用TCP作为其传输层协议。两个运行BGP的系统之间建立一条TCP连接,然后交换整个BGP路由表。从这个时候开始,在路由表发生变化时,再发送更新信号。
BGP是一个距离向量协议,与RIP不同的是,BGP列举了到每个目的地址的路由,这样排除了一些距离向量协议的问题。采用16bit数字表示自治系统标识。
BGP通过定期发送keeplive报文给其邻站来检测TCP连接对端的链路或主机失败。