上一章讲的是静态选路:通过默认方式生成路由表项(对于直接连接的接口),并通过route命令增加表项,或者通过ICMP重定向生成表项。
本章讨论动态选路,它用于路由器间的通信。包括 RIP, OSPF, BGP 以及 CIDR。
路由器上有一个路由守护程序,它运行选路协议,并与相邻的一些路由器通信,然后根据收到的信息更新内核中的路由表——这个过程是动态的。
Internet是以一组自治系统(AS,Autonomous System)的方式组织的,每个自治系统通常由单个实体管理。常常将一个公司或大学校园定义为一个自治系统。NSFNET的Internet骨干网形成一个自治系统,这是因为骨干网中的所有路由器都在单个的管理控制之下。
每个自治系统可以选择该自治系统中各个路由器之间的选路协议。这种协议我们称之为内部网关协议IGP(Interior Gateway Protocol)或域内选路协议(intradomain routing protocol)。
常用的IGP是RIP,新的开放最短路径优先OSPF协议,则意在取代RIP。
BGP是边界网关协议,为外部网关协议。
RIP是一种分布式的基于距离矢量的路由选择协议,其最大优点就是实现简单,开销较小。
但RIP的缺点也较多。首先,其限制了网络的规模,能使用的最大距离为15(16表示不可达)。其次路由器交换的信息是路由器的完整路由表,因而随着网络规模的扩大,开销也就增加。最后,“坏消息传播得慢”,使更新过程的收敛时间过长。因此对于规模较大的网络就应当使用OSPF协议。然而目前在规模较小的网络中,使用RIP协议的仍占多数。
RIP报文包含在UDP数据报中;
每个报文最多携带25个路由;
RIP常用的UDP端口号是520;
RIP不支持子网;
同一自治系统(AS)中的路由器每30秒会与相邻的路由器交换子讯息,以动态的建立路由表。
与采用距离向量的RIP协议不同的是, OSPF是一个链路状态协议。距离向量的意思是,RIP发送的报文包含一个距离向量(跳数)。每个路由器都根据它所接收到邻站的这些距离向量来更新自己的路由表。
在一个链路状态协议中,路由器【并不与其邻站交换距离信息】。它采用的是每个路由器主动地测试与其邻站相连链路的状态,将这些信息发送给它的其他邻站,而邻站将这些信息在自治系统中传播出去。每个路由器接收这些链路状态信息,并建立起完整的路由表。
OSPF直接使用IP。
BGP是一种不同自治系统的路由器之间进行通信的外部网关协议。
BGP系统与其他BGP系统之间交换网络可到达信息。这些信息包括数据到达这些网络所必须经过的自治系统AS中的所有路径。这些信息足以构造一幅自治系统连接图。然后,可以根据连接图删除选路环,制订选路策略。
BGP使用TCP作为其传输层协议。
BGP是一个距离向量协议,但是与(通告到目的地址跳数的)RIP不同的是,BGP列举了到每个目的地址的路由(自治系统到达目的地址的序列号)。这样就排除了一些距离向量协议
的问题。采用16 bit 数字表示自治系统标识。
无类型域间选路(CIDR)是一个防止Internet路由表膨胀的方法,它也称为超网(supernetting)。
思想:适当分配多个合适的IP地址,使得这些地址能够进行聚合,减少这些地址在路由表中的表项数。
如,给某个网络分配16个C类地址,采用适当的方法分配这些地址,使得16个地址能够聚合成一个地址。
CIDR使用一种技术,使最佳匹配总是最长的匹配。
“无类型”的意思是现在的选路决策是基于整个 32 bit IP 地址的掩码操作,而不管其IP地址是A类、B类或是C类,都没有什么区别。
实例:
一个ISP被分配了一些C类网络,这个ISP准备把这些C类网络分配给各个用户群,已经分配了三个C类网段给用户。
如果没有实施CIDR技术.ISP的路由器的路由表中会有三条下连网段的路由条目,并且会把它通告给Internet上的路由器。
通过实施CIDR技术,我们可以在ISP的路由器上把这三个网段198.168.1.0,198.168.2.0,198.168.3.0汇聚成一条路由198.168.0.0/16.这样ISP路由器只向Internet通告198.168.0.0/16这一条路由,大大减少了路由表的数目.从而为网络路由器节省出了存储空间。
值得注意的是,使用CIDR技术汇聚的网络地址的比特位必须是一致的,如上例所示.如果上例所示的ISP连接了一个172.178.1.0网段,这些网段路由将无法汇聚,无法实现CIDR技术。