TCP/IP协议详解卷一:Chapter10 笔记
Chapter 10 动态选路协议
选路信息协议 = Routing Information Protocol = RIP
开放式最短路径优先 = Open Shortest Path First = OSPF
边界网关协议 = Border Gateway Protocol = BGP
无分类域间选路 = Classless Inter-Domain Routing = CIDR
10.2节 动态选路
动态选路是指相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络。路由器上的路由守护程序(routing daemon)运行选路协议,根据从相邻路由器接收到的信息,动态地增加或删除路由表中的信息。Unix系统中常见的路由守护程序包括routed和gated。
Internet是以一组自治系统(Autonomous System)的方式组织的,每个自治系统通常由单个实体管理。每个自治系统可以选择该自治系统中各个路由器之间的选路协议。我们将其称之为内部网关协议(Interior gateway protocol, IGP)或域内选路协议(Intradomain routing protocol),其中包括选路信息协议RIP和开放最短路径优先OSPF协议。
外部网关协议(Exterior gateway protocol, EGP)或域内选路协议的分隔选路协议用于不同自治系统之间的路由器。边界网关协议BGP意在取代EGP。
10.4节 RIP:选路信息协议
RIP是最广为使用的选路协议。RIP报文包含在UDP数据报中。使用IP地址时的RIP版本1报文格式如下:
RIP报文 = 1字节命令(1-6)+ 1字节版本(=1)+ 2字节(置0)
+ 2字节地址系列(=2)+ 2字节(置0)+ 32位IP地址 + 8字节(置0)+ 4字节度量(1-16)
+ 最多24个另外的路由(与前20字节格式相同)
其中:
命令字段为1表示请求,2表示应答,3和4已舍弃不用,两个非正式命令5和6分别表示轮询和轮询表项。请求表示要求其他系统发送其全部或部分路由表,应答则包含发送者全部或部分路由表。
版本字段通常为1。第二版RIP设置为2。
紧跟在后面的20字节指定地址系列(address family)、IP地址以及相应的度量。对于IP地址而言,地址系列字段的值为2。RIP的度量是以跳计数的。
采用这种20字节格式的RIP报文可以通告多达25条路由。上限25是用来保证RIP报文的总长度为
20
×
25
+
4
=
504
20×25 + 4 = 504
20×25+4=504,小于512字节。为了发送整个路由表,通常需要多个报文。
RIP常用的UDP端口号是520。采用RIP协议的routed程序正常运行的逻辑如下:
- 初始化:判断启动了哪些接口,在每个接口上发送一个请求报文(通常以广播形式发送),要求其他路由器发送完整路由表。这种报文的命令字段为1,地址系列字段为0,度量字段为16。
- 接收到请求:根据请求将完整或部分的路由表发送给请求者。
- 接收到响应:使响应生效,可能会更新路由表。
- 定期选路更新:每过30秒,所有或部分路由器都会将其完整的路由表发送给相邻路由器。
- 触发更新:每当一条路由的度量发生变化时,发送更新那些发生变化的表项。
如果运行RIP的系统发现一条路由在3分钟内未更新,就将该路由的度量设置成无穷大(即16),并标注为删除。再过60秒,将从本地路由表中删除该路由,以保证该路由的失效已被传播开。
度量
RIP所使用的度量是以跳(hop)计算的。所有直接连接接口的跳数为1。如果在某个自治系统内从一个路由器到一个网络有多条路由,那么路由器将选择跳数最小的路由,而忽略其他路由。
跳数的最大值是15,这意味着RIP只能用在主机间最大跳数值为15的自治系统内。度量为16表示到无路由到达该IP地址。
RIP协议的缺陷
- RIP没有子网地址的概念。如果标准的B类地址中16 bit的主机号不为0,那么RIP无法区分非零部分是一个子网号还是一个主机地址。
- 在路由器或链路发生故障后,需要很长的一段时间才能稳定下来(通常需要几分钟)。在这段建立时间里,可能会发生路由环路。
- 度量最大值为15则限制了可以使用RIP的网络的大小。
一个例子
使用 ripquery -n netb 命令获取下一站路由器netb的选路信息。metric 1 表示度量为1。

运行ripquery程序的tcpdump输出结果。使用 -i s10 指定SLIP接口。rip-poll 表示一个非正式请求(轮询命令,命令字段为5)。rip-req 表示一个常规RIP请求。

10.5节 RIP版本2
RIP-2利用版本1中的置0字段传递一些额外信息,其报文格式如下:
RIP报文 = 1字节命令(1-6)+ 1字节版本(=2)+ 2字节路由域 + 2字节地址系列(=2)+ 2字节路由标记 + 32位IP地址 + 32位子网掩码 + 32位下一站IP地址 + 4字节度量(1-16)+ 最多24个另外的路由(与前20字节格式相同)
路由域(routing domain)是一个路由守护程序的标识符,指出了数据报的所有者。在一个Unix实现中,它可以是选路守护程序的进程号。该域允许管理者在单个路由器上运行多个RIP实例,每个实例在一个路由域内运行。选路标记(routing tag)是为了支持外部网关协议而存在的。它携带着一个EGP和BGP的自治系统号。
每个表项的子网掩码应用于相应的IP地址上。下一站IP地址指明发往目的IP地址的报文该发往哪里。该字段为0意味着发往目的地址的报文应该发给发送RIP报文的系统。
RIP-2除支持广播外,还支持多播。
10.6节 OSPF:开放最短路径优先
与采用距离向量(跳数)的RIP协议不同的是, OSPF是一个链路状态协议。
在一个链路状态协议中,路由器并不与其邻站交换距离信息。它采用的是每个路由器主动地测试与其邻站相连链路的状态,将这些信息发送给它的其他邻站,而邻站将这些信息在自治系统中传播出去。每个路由器接收这些链路状态信息,并建立起完整的路由表。从实际角度来看,二者的不同点是链路状态协议总是比距离向量协议收敛更快(路由发生变化后稳定下来)。
OSPF直接使用IP,并不使用UDP或TCP。对于IP首部的protocol协议字段,OSPF有其自己的值。OSPF相对于RIP协议的主要优点包括:
- OSPF可以对每个IP服务类型计算各自的路由集。
- 给每个接口指派一个无维数的费用。
- 当对同一个目的地址存在着多个相同费用的路由时,OSPF在这些路由上平均分配流量。
- OSPF支持子网:子网掩码与每个通告路由相连。
- 路由器之间的点对点链路不需要每端都有一个IP地址,因此可以节省IP地址。
- 采用了一种简单鉴别机制。
- OSPF采用多播,而不是广播形式,以减少不参与OSPF的系统负载。
10.7节 BGP:边界网关协议
BGP是一种不同自治系统的路由器之间进行通信的外部网关协议。RFC 1267和RFC 1268对BGP进行了描述。
BGP系统与其他BGP系统之间交换网络可到达信息。这些信息包括数据到达这些网络所必须经过的自治系统AS中的所有路径。这些信息足以构造一幅自治系统连接图。然后,可以根据连接图删除选路环,制订选路策略。
我们将一个自治系统中的IP数据报分成本地流量和通过流量。在自治系统中,本地流量是起始或终止于该自治系统的流量。其信源IP地址或信宿IP地址所指定的主机位于该自治系统中。其他的流量则称为通过流量。在Internet中使用BGP的一个目的就是减少通过流量。
可以将自治系统分为以下几种类型:
- 残桩自治系统(stub AS),它与其他自治系统只有单个连接。stub AS只有本地流量。
- 多接口自治系统(multihomed AS),它与其他自治系统有多个连接,但拒绝传送通过流量。
- 转送自治系统(transit AS),它与其他自治系统有多个连接,在一些策略准则之下,它可以传送本地流量和通过流量。
因此,可以将Internet的总拓扑结构看成是由一些残桩自治系统、多接口自治系统以及转送自治系统的任意互连。残桩自治系统和多接口自治系统不需要使用BGP——它们通过运行EGP在自治系统之间交换可到达信息。
BGP允许使用基于策略的选路。BGP与RIP和OSPF的不同之处在于BGP使用TCP作为其传输层协议。BGP是一个距离向量协议,但是与(通告到目的地址跳数的) RIP不同的是,BGP列举了到每个目的地址的路由(自治系统到达目的地址的序列号)。BGP通过定期发送keepalive报文给其邻站来检测TCP连接对端的链路或主机失败。两个报文之间的时间间隔建议值为30秒。
10.8节 CIDR:无类型域间选路
由于B类地址的缺乏,因此现在的多个网络站点只能采用多个C类网络号,而不采用单个B类网络号。尽管分配这些C类地址解决了一个问题( B类地址的缺乏),但它却带来了另一个问题:每个C类网络都需要一个路由表表项。无类型域间选路( CIDR)是一个防止Internet路由表膨胀的方法,它也称为超网(supernetting)。
CIDR的基本观点是采用一种分配多个IP地址的方式,使其能够将路由表中的许多表项总和(summarization)成更少的数目。例如,如果给单个站点分配16个C类地址,以一种可以用总和的方式来分配这16个地址,这样,所有这16个地址可以参照Internet上的单个路由表表项。
要使用这种总和,必须满足以下三种特性:
- 为进行选路要对多个IP地址进行总和时,这些IP地址必须具有相同的高位地址比特。
- 路由表和选路算法必须扩展成根据32 bit IP地址和32 bit掩码做出选路决策。
- 必须扩展选路协议使其除了32 bit地址外,还要有32 bit掩码。OSPF和RIP-2都能够携带第4版BGP所提出的32 bit掩码。
CIDR同时还使用一种技术,使最佳匹配总是最长的匹配:即在32 bit掩码中,它具有最大值。“无类型”的意思是现在的选路决策是基于整个32 bit IP地址的掩码操作,而不管其IP地址是A类、B类或是C类。
本文概述了TCP/IP协议中的动态选路协议,包括RIP、OSPF、BGP和CIDR。详细介绍了各协议的工作原理、特点及应用场景,如RIP的跳数度量,OSPF的链路状态,BGP的策略选路和CIDR的无类型域间选路。
893

被折叠的 条评论
为什么被折叠?



