第 7章 IP路由
7.1 直接传递与间接传递
7.2 IP路由
7.3 路由表
7.4 静态路由
7.5 动态路由
7.1 直接传递与间接传递数据分组在向信宿传递时分为:
直接传递 是指直接传到最终信宿的传输过程。
间接传递 是指在信源和信宿位于不同物理网络时,所经过的一些中间传递过程。
数据传递由一个直接传递和零到多个间接传递所组成。
图 7 - 1 直接传递与间接传递
192,1 68,6.0
直接传递
19 2.1 68,7.0
A
19 2.1 68,8.0
B C
直接传递间接传递 间接传递
R1
R2
返回
7.2 IP路由
TCP/IP将网络结构进行 抽象,用点表示路由器,用线表示网络。 路由选择基于抽象结构进行,通过路由选择找到一条通往信宿的最佳路径。
TCP/IP采用 表驱动 的方式进行路由选择
在每台主机和路由器中都有一个 反映网络拓扑结构 的路由表
单个路由表只反映了因特网 局部 的拓扑信息,但所有路由表的集合却能反映因特网的 整体 拓扑结构
主机和路由器能够 根据路由表 所反映的拓扑信息找到去往信宿的正确路径。
与路由表相关的操作包括两部分:
–路由表的 使用,即根据路由表进行路由选择;
–路由表的 建立与刷新,这项工作通常由路由守护程序完成。路由守护程序负责交换路由信息,完成路由表的刷新。
路由表 被访问的频度比它被刷新的频度要高得多 。
主机和路由器上的 IP协议 负责根据路由表完成路由选择路由表的建立与刷新由专门的 路由协议 负责。
图 7 - 2 与路由表相关的操作
路由表
ICM P
T CP
路由选择
UDP
转发数据报处理模块,
处理 IP 选项,
环回 / 目的机和 TTL 等
IP
传输层网络接口
O S P F
重定向 队列添加 IP 数据报首部分片处理分片重组队列队列队列 队列队列
队 列静态路由设置命令动态路由程序显示命令
( ne t s t a t )
应用层
IP 层
IP层中的 IP模块利用路由表中的子网掩码获得信宿机所在的子网,并将结果和路由表中的目的地址进行匹配,如果匹配则从对应的接口发送数据。
路由表的 使用 相对来说比较简单,而路由表的 维护 却是较为复杂的工作,ICMP为主机的路由表进行重定向操作,OSPF和应用层的其它动态路由程序负责对路由表进行动态刷新。一个好的动态路由程序要保证路由表能够及时地反映网络结构的变化。
返回
7.3 路由表路由表 是存在于主机和路由器中的、反映网络结构的数据集,是数据在因特网上正确传输的关键所在。
路由表的 功能 是指明去往某信宿应该采用哪条路径。
7.3.1 路由表的构成路由表是一个 二维表,每个表项由多个字段构成。
最基本的字段:信宿地址 +去往信宿的路径。
通常路由表中的信宿地址 采用网络地址 。
在路由表中不直接采用主机 IP地址的 好处,
1)可以 大大减小路由表的规模 。网络数比主机数要少得多,而信息到达信宿网络,也就到达了信宿主机,
数据传递到信宿的相邻路由器后,相邻路由器再通过直接传递将数据传给信宿主机。所以可以用网络地址来取代网络中各主机的地址。
2) 与网络的抽象结构相对应 。网络的抽象结构中只有网络,没有主机。
3) 增强了路由表对网络变化的适应性 。由于体现了信息隐藏的原则,主机的增加和删去不会对路由表产生任何影响。
4) 减轻 了路由表维护以及路由选择的开销,同时也 简化 了路由设备的设计和实现。
虽然从信源到信宿的完整 路径 通常包括一系列的路由器,但在单个路由表中并不存放完整的路径,而只是存放去往信宿的路径中的下一跳 路由器的地址,通过下一跳地址将路由器串起来就构成了通往信宿的路径。
在路由表中只采用下一跳地址而不用完整路径的 好处,
1)减小了路由表的规模。
2)去掉了路由表中关于相同路径的冗余信息。
3)使路由表变得简单,便于维护。
从路由表的结构上看,除了包括信宿地址和下一跳路由器地址外,通常还包括子网掩码、去往下一跳的输出接口和度量。路由表的 一般结构 如图所示。
图 7 - 3 路由表的一般结构信宿地址 子网掩码 下一跳地址 输出接口 度 量

虽然路由表中的大多数表目以信宿网络地址作为信宿地址,但为了特殊的目的,也可以用主机的 IP地址作为信宿地址。
特定主机路由,用主机的 IP地址作为信宿地址的表目。 目的,给网络管理人员赋予了更大的网络控制权,用于 安全性和网络测试 。
默认路由,路由表中的另一个特殊表目。默认路由将去往多个网络的路由表目合为一个。 目的,进一步隐藏细节、缩小路由表。
在路由表中默认路由表目所对应的 信宿地址 和子网掩码 都是 0.0.0.0。
一个路由表中最多只能有一个默认路由表目,
该表目一般放在路由表的最后,当路由表前面部分的所有路径都无效时( IP地址和路由表中的子网掩码逻辑与后与信宿地址不匹配),才使用默认路由。由于默认路由的信宿地址和子网掩码都是 0.0.0.0,所以 任何 IP地址和它都是匹配的 。
主机中也存在一个路由表。因为主机所在的物理网络可能连接了多个路由器,
为了实现最短路径原则,去往不同的信宿可能采用不同的路由器作为路径上的初始路由器 。主机路由表的目的正是为了在不同的初始路由器中作出选择,把数据报交给去往信宿最近的一个路由器。
7.3.2 路由算法
主机和路由器发出数据报时,IP模块要根据数据报中的信宿 IP地址和路由表完成下面的 路由算法 。
Route_IP_Datagram(datagram,routing_table)
从数据报中取出信宿 IP 地址 I
D
对路由表中的每一个表目将子网掩码和信宿 IP 地址进行逻辑与得到 I
N
if 是特定主机路由
then 按路由表发送数据报;
else if I
N
匹配信宿网络地址
then 按路由表发送数据报;
else if 路由表中指定了默认路由
then 将数据报发往默认路由器
else 丢弃数据报产生 ICMP 出错报文特定主机路由默认路由网络路由图 7 - 5 路由算法 返回
7.4 静态路由
路由表的建立和刷新可以采用两种不同的方式:
静态路由 和 动态路由 。
一般说来,以 静态路由 方式工作的路由器只知道那些和它有物理连接的网络,而不能发现和它没有直接物理连接的那些网络。对于这种路由器,如果想让它把数据包路由到任何其他的网络,需要以 手工方式在路由表中添加条目 。
每台路由器中的静态路由表是一个本地文件,
该文件包含所有去往已知网络的路由。静态路由要求手工配置固定的路由表。 当网络结构发生变化时,网络管理人员要及时地调整路由表 。
图中路由器 R1与网络 192.168.6.0和 192.168.7.0直接相连,R1启动时的初始路由表如图 7-7所示。
图 7 - 6 配置静态路由
192,1 68,6.0 19 2.1 68,7.0 19 2.1 68,8.0
R1 R2
19 2.1 68,6.18
19 2.1 68,7.1 19 2.1 68,7.2 19 2.1 68,8.1
B
A
19 2.1 68,8.23
19 2.1 68,6.1
图 7 - 7 路由器 R1 的初始路由表信宿地址 子网掩码 下一跳地址 输出接口 度 量
192.168.6.0 255.255.255.0 192.168.6.1 192.168.6.1 1
192.168.7.0 255.255.255.0 192.168.7.1 192.168.7.1 1
1,在路由表中添加信宿网络表项信宿地址 子网掩码 下一跳地址 输出接口 度 量
192.168.6.0 255.255.255.0 192.168.6.1 192.168.6.1 1
192.168.7.0 255.255.255.0 192.168.7.1 192.168.7.1 1
192.168,8,0 255.255.255.0 192.168.7,2 192.168.7.1 2
2,在路由表中添加缺省路由表项信宿地址 子网掩码 下一跳地址 输出接口 度 量
192.168.6.0 255.255.255.0 192.168.6.1 192.168.6.1 1
192.168.7.0 255.255.255.0 192.168.7.1 192.168.7.1 1
0,0,0,0 0,0,0,0 192.168.7,2 192.168.7.1 1
图 7 - 8 路由器 R1 的路由表
当主机 A要向主机 B发送信息时,R1无法根据图 7-7中的路由表进行转发。因此需要网络管理员手工在 R1的路由表中添加 与网络 192.168.8.0相关的条项 或者在
R1的路由表中添加一个 默认路由表项 。
默认路由表项可以使路由器把数据报发送到下一个路由器,并找到了一条通往信宿网络的路由,但在 路由表中只能有一条默认路由表目 。
为了使得信息不仅出得去,而且进得来,通常采用的办法是 将本自治系统内的网络都加入到路由表中,而 去往本自治系统外的网络的数据报通过默认路由送出 。
自治系统,由独立管理机构所管理的一组网络和路由器组成。自治系统内部包含多个网络和路由器,自治系统本身由一个独立的组织管理,
其拓扑结构、地址建立与刷新机制等都由该管理机构自由选择。
以手工方式对路由表进行维护,利用 ROUTE命令,
管理员能够添加、删除、改变和清除路由表的条目。
命 令 功 能
ROUTE ADD [netid] MASK [netmask] [gateway] METRIC [metric] 添加一条路由
ROUTE –p ADD [netid] MASK [netmask] [gateway] METRIC[metric] 添加一条持久的路由
ROUTE DELETE [netid] 删除一条路由
ROUTE CHANGE [netid] [gateway] 修改一条路由
ROUTE PRINT 显示路由表
ROUTE -f 清除所有的路由静态路由所带来的问题:在大型网络上手工编辑路由表是一件非常困难的工作,不仅工作量大,
而且不能及时地反映网络拓扑结构的频繁变化,
还有可能造成难以管理的冗余路径。
返回
7.5 动态路由
动态路由,路由器使用路由协议进行路由表的动态建立和维护。
路由协议支持一个路由器与其他路由器的通信,
路由器之间可以相互通告路由表中的变化。路由器根据获得的变化信息,刷新自己的路由表。
在这种方式中,引入新的网络时不需要管理员编辑路由表。大规模的网络都采用动态路由。
路由器进行 路由选择的原则,最短路径优先。
路由协议设计基本原则,
① 最优性,选择最佳路径的能力
② 易用性,协议的设计应当尽可能的简单,
低开销
③ 稳定性,不同网络条件下保持稳定运行
④ 健壮性,出现异常或突发事件时,仍能正常运行
⑤ 快速会聚性,所有路由器在尽可能短时间内,就采用哪条最佳路径来传输数据报达成一致路由器自动获取路径信息的基本方法有 两种,
– 向量 — 距离算法 (又称为距离 — 向量算法 )
– 链路 — 状态算法。
向量 — 距离 (Vector-Distance,简称 V— D)算法的 基本思想,路由器周期性地向与它 相邻 的路由器 广播路径刷新报文,报文的主要 内容 是一组从本路由器出发 去往信宿网络的最短距离,
在报文中一般用 (V,D)序偶表示,这里的 V代表向量,标识从该路由器可以到达的信宿 (网络或主机 ),D代表距离,指出从该路由器去往信宿 V
的距离,距离 D按照去往信宿的跳数计。各个路由器根据收到的 (V,D)报文,按照最短路径优先原则对各自的路由表进行刷新。
向量 — 距离算法的 优点 是简单,易于实现。
缺点 是收敛速度慢和信息交换量较大。
收敛速度慢,当网络结构发生变化时,变化信息的传输和扩散需要一段时间,而在系统中所有的路由器获得这种变化信息之前,部分路由表不能正确地反映网络拓扑的真实情况,在收敛过程中,路由表是不一致的。向量 — 距离算法的收敛速度较慢,该算法不适合结构频繁变化的或大型的网络环境。
信息交换量较大,每次交换路由信息时,传输的几乎是 整个路由表,而且 所有的路由器 都参与信息的交换。
链路 — 状态 (Link-Status,简称 L-S)算法的 基本思想,系统中的每个路由器通过从其他路由器获得的信息,构造出当前网络的拓扑结构,
根据这一拓扑结构,并利用 Dijkstra算法形成一棵以本路由器为根的最短路径优先树,由于这棵树反映了从本节点出发去往各路由节点的最短路径,所以本节点就可以根据这棵最短路径优先树形成路由表。
用 Dijkstra算法计算的最短路径可以用路径上的 节点数 度量,也可以用 距离,队列长度 或 传输时延 等来度量。这些量可以通过给拓扑图的各条边赋予权值来实现。
链路 — 状态算法又叫 最短路径优先 (Shortest
Path First,SPF)算法。
链路 — 状态算法首先由路由器向相邻路由器 发查询报文,测试与相邻路由器之间的链路状态,如果能够收到相邻路由器发回的响应,则说明该相邻路由器与本路由器之间存在正常的链路。
在获得了本路由器与周边路由器的链路状态后,路由器还将向系统中 所有 参加最短路径优先算法的路由器 发送链路状态报文 。
各路由器收到其他路由器发来的链路状态报文后,
根据报文中的数据 刷新本路由器所保存的网络拓扑结构图,如果链路状态发生了变化,路由器将起用
Dijkstra算法 生成新的最短路径优先树,并 刷新本地路由表 。
动态路由所使用的路由协议 包括 内部网关协议
(IGP)和外部网关协议 (EGP)。
内部网关协议 用于自治系统内部的路径信息交换和路由表刷新。常用的内部网关协议:
– 路由信息协议 RIP(Routing Information Protocol)
– 开放最短路径优先 OSPF(Open Shortest Path
First)协议。
外部网关协议 用于自治系统之间的路径信息交换和路由表刷新。常用的外部网关协议有:
– 外部网关协议 EGP(Exterior Gateway Protocol)
– 边界网关协议 BGP (Border Gateway Protocol)
7.5.1 路由信息协议 (RIP)
RIP协议采用 V-D算法,RIP要求路由器每 30
秒 钟向外广播一个 V-D报文,报文中的 V-D信息来自于本地的路由表。
Example:
简单拓扑结构图:每两相邻结点间开销为 1
路由器启动时各结点路由表的情况:
各结点的初始距离表说明:,1” 代表直接到达相应结点,并且开销为 1,,∞,则代表不可到达相应结点
以 A点为例说明距离向量算法:
步骤 1,初始路由表结点 A的初始路由表步骤 2:与相邻路由器通信,共享路由信息
A,B,C,F 你们有什么消息告诉我
B,我可以到达 C,开销为 1
C,我可以到达 D,开销为 1
F,我可以到达 G,开销为 1
步骤 3:收集所有信息,取最小开销结点 A的最终路由表步骤 4:各结点到达统一,完成聚合
1,RIP协议解决的问题
RIP协议在基本的向量 — 距离算法的基础上,
增加了对 路由环路,相同距离路径,失效路径 以及 慢收敛 问题的处理。
解决 路由环路 问题,RIP规定,一条有效路径的距离 (路径上的跳数 )不能超过 15,距离度量为 16时表示路径不存在。
解决 相同距离路径 问题:若去往某一网络存在多条相同距离的路径,路由器采用 先入为主 的原则,以最先收到的路径广播报文决定下一跳,
后来收到的相同距离的路径信息不会造成对以前路由的刷新。
解决 失效路径 问题,RIP协议为每条路由设置一个 定时器 。如果系统发现某一条路由在 3分钟 (6个周期 )内没有收到与它相关的更新信息,
就将该路由的度量值设置成 16,即无穷大,
并标注为删除。标注后并不立即删除,以便该路由的失效被传播开去,需要再过一段时间,
才将该路由从路由表中删除。
图 7 - 9 慢收敛的过程
N E T 1 N E T 2 N E T 3
R1 R2
信宿地址 下一跳 度量
N E T 1 - 1

信宿地址 下一跳 度量
N E T 1 R1 2

N E T 1 N E T 2 N E T 3
R1
R2
( N E T 1,2 )
( N E T 1,R2,3 ) ( N E T 1,R1,2 )
( N E T 1,3 )
( N E T 1,R1,4 )
( N E T 1,4 )
( N E T 1,R2,5 )
( N E T 1,5 )
( N E T 1,R1,6 )
( N E T 1,14 )
( N E T 1,R2,15 )
( N E T 1,15 )
( N E T 1,R1,16 )
( N E T 1,16 )
( N E T 1,R2,16 )

解决 慢收敛 问题:慢收敛的典型情况是 计数到无穷 。
(NET1,-,16)
为了防止计数到无穷问题,可以采用以下 三种技术 。
1)水平分割法 (Split Horizon)
水平分割法的 基本思想,路由器从某个接口接收到的更新信息不允许再从这个接口发回去。在图 7-9所示的例子中,R2
向 R1发送 V-D报文时,不能包含经过 R1
去往 NET1的路径。因为这一信息本身就是 R1所产生的。
2)保持法 (Hold Down)
从图 7-9可以看出计数到无穷的发生是因为在 R1将不可达信息发出去之前先收到了来自 R2的 V-D报文,刷新操作导致不可达信息丢失。为了解决这一问题,保持法 要求路由器在得知某网络不可到达后的一段时间内,保持此信息不变,这段时间称为 保持时间,路由器在保持时间内不接受关于此网络的任何可达性信息。这样,保证能够有充足的时间将路径崩溃信息传播出去。
3)毒性逆转法 (Poison Reverse)
毒性逆转法是 水平分割法的一种变化 。
路由器收到 V-D报文后,利用报文中的信息刷新路由表,然后向所有接口发出刷新后的 V-D信息,当从某一接口发出信息时,凡是从这一接口进来的信息改变了路由表表项的,V-D报文中对应这些表目的距离值都设为无穷 (16)。也就是说,在输出的 V-D报文中将 从该接口可达的最短路径网络的距离值设为 16,以免对邻机的路由表的对应表目进行错误的刷新。
图 7 - 10 毒性逆转
N E T 2 N E T 3
R1 R2 R3
N E T 1
信宿地址 度量
N E T 1 16
N E T 2 16
N E T 3 1
信宿地址 度量
N E T 1 2
N E T 2 1
N E T 3 16
V - D 报文 V - D 报文一个采用毒性逆转法的 V-D报文的例子。
为了加强毒性逆转的效果,通常和触发刷新
(Trigged Update)技术结合使用,触发刷新是指一旦检测到路径失效,立即广播路径刷新报文 。
命 令 版 本 全,0,
地址系列 全,0,
IP 地址( V )
全,0,
全,0,
距离( D )
最多 24 个另外的 V - D 信息(结构同前)
20 字节的 V - D 信息图 7 - 11 R IP v1 报文格式
2,RIPv1报文及其传输
RIPv1报文格式如图 7-11所示。
从地址系列字段开始到距离字段结束的 20个字节构成一个 V-D信息,后面最多还可以带 24个 V-D信息,
这样可以保证 RIP报文的最大长度为 504(20× 25+4)
字节,小于 512字节,便于封装在 UDP数据报中 传输。
RIPv1请求报文
– 距离字段 为全,0”。
– IP地址字段
为全,0”,则表示请求对方发送所有的 V-D信息;
为特定的网络地址,则表示请求对方发送该地址所对应的特定 V-D信息,一个请求报文中可以包含多个特定的网络地址。
响应报文
– 针对请求的回答
对应特定网络的 V-D信息
整个路由表的 V-D信息
– 由路由器 定期 ( 30秒)发出的路由更新信息
整个路由表的 V-D信息
RIP报文被封装在 UDP数据报中传输。 RIP使用 UDP的 520端口 号。
图 7 - 12 R IP 报文的封装帧首部 帧尾部 IP 首部 UD P 首部 RI P 报文
UD P 数据报
I P 数据报
2,RIP协议的运行过程
路由器 启动 RIP协议时,在已经启动的接口上发送请求报文,要求与它相邻的路由器(邻机)发送完整的路由表。请求报文以广播形式发往路由器的 520号
UDP端口。
其他路由器收到请求后 对 IP地址字段进行判别 。
– 如果 为,0”,那么路由器就将完整的路由表发送给请求者。
– 非,0”,针对请求中的每一个特定表项,在路由表中查找对应路由。
如果 存在,就将当前的度量值放到响应中。
若 不存在,则将响应的度量置为 16,度量 16表示“无穷大”,它意味着没有到达信宿网络的路由。
请求方收到响应报文后,根据响应 对路由表进行刷新 。
路由器除了对请求进行响应外,还 周期 性地( 30秒)
将其完整路由表发送给相邻路由器。
接收 RIP 路由通告报文将报文中通告的邻机去往各网络的跳数加 1
信宿网络不在本机的路由表中?
将该网络及相关的路由信息加入到路由表中路由表中该网络表项的下一跳是发通告的邻机?
是否是否用通告中的信息替代路由表中该网络的路由信息
A
C
通告中去往该网络的跳数小于路由表中去往该网络的跳数?
是否指向报文中下一网络 是报文中的最后一个网络?
是否结 束图 7 - 13 RIP 更新算法框图
B
D
图 7 - 14 基于 RIP 的路由表刷新目标网络 跳数
N E T 2 2
N E T 5 4
N E T 6 3
N E T 9 2
目标网络 跳数
N E T 2 3
N E T 5 5
N E T 6 4
N E T 9 3
目标网络 跳数 下一跳
N E T 2 2 R2
N E T 5 3 R3
N E T 6 5 R2
N E T 8 2 R4
目标网络 跳数 下一跳
N E T 2 2 R2
N E T 5 5 R3
N E T 6 4 R3
N E T 8 2 R4
N E T 9 3 R3
来自路由器 R3
的 RIP 报文路由器 R1
的路由表更新后的路由表更新算法
A
C
D
B
一个收到邻机发来的 RIP信息后完成 路由刷新 的例子。
RIPv1简单,易于实现。但存在以下 不足,
1) RIPv1不支持子网 地址。
2) RIPv1没有鉴别机制 。对任何路由器发来的路由表都不加验证地接受。
3) RIPv1采用广播方式进行路由通告,不支持单播和组播路由通告 。
4) RIPv1只能用于小型网络 。最大路径长度限制了该协议在大型网络上的应用。
RFC 1388中对 RIPv1进行了扩充,扩充后的
RIP协议称为 RIPv2。 RIPv2利用原协议报文中一些标注为“必须为 0”的字段来传递一些额外的信息。
3,RIPv2
RIPv2克服了 RIPv1的一些不足。
RIPv2可以在路由通告信息中指定 IP地址所对应的 子网掩码 。因此可以 支持可变长子网掩码和无类别域间路由 CIDR。
RIPv2提供了一种简单的鉴别机制 。如果 RIP
数据报文中的口令与所要求的口令不匹配,该
RIP报文将被拒绝接收。
RIPv2支持组播,使用组播地址 224.0.0.9传送路由通告,组播可以减少不收听 RIPv2报文的主机的处理开销。
命 令 版 本 保留地址系列 路由标记
IP 地址( V )
子网掩码下一跳地址距离( D )
最多 24 个另外的 V - D 信息(结构同前)
20 字节的 V - D 信息图 7 - 15 R IP v2 报文格式
RIPv2与 RIPv1的格式相似,所不同的是 RIPv2
利用了 RIPv1中那些必须为,0”的字段。
7.5.2 开放最短路径优先( OSPF)
问题,无论是 RIPv1还是 RIPv2都受限于 最大路径长度 15,因此不能满足大规模网络的要求。
解决,采用开放最短路径优先 OSPF。在
OSPF中自治系统可以被进一步划分为区域,
每个 区域 由位于同一自治系统中的一组网络、
主机和路由器构成。区域内部的路由器以 泛洪方式 在区域内交换路由信息。区域的划分不仅使得广播得到了更好的管理,而且使 OSPF能够支持大规模的网络。 层次 的概念的引入,使
OSPF减少了一个路由器需要知道的 信息总量 。
在区域的边界定义一个 边界路由器 。边界路由器 汇总 该区域的信息,并送往其他区域。
在每个自治系统的区域中都有一个特殊的区域叫做 主干,其他区域都连到主干上。主干中的路由器称为 主干路由器,主干路由器可以是一个区域的边界路由器。
每个区域有一个 区域标识,区域标识采用和 IP
地址一样的 点分十进制数表示,主干区域的标识是 0.0.0.0。
OSPF是一个 链路 — 状态协议,每个路由器 测试 与其邻机相连链路的状态,并将这些信息用链路状态通告 (Link State Advertisements,
LSA)发送给它的其他邻机,而邻机再将这些信息在自治系统中以 泛洪 方式传播出去。每个路由器接收这些链路状态信息,并将这些状态信息写入到一个 链路状态数据库 (Link State
Database,LSDB)中。当一个区域的网络拓扑结构发生变化时,LSDB就会被更新。每 10
秒 钟评估一次 LSDB,如果区域的拓扑结构没有改变,LSDB也就不做任何改动。
目前 Internet广域网和 Intranet企业网采用最多、应用最广泛的路由协议之一
OSPF直接 使用 IP。在 IP首部的协议字段,
OSPF协议的值为 89。
消息类型
Hello报文数据描述报文链路状态请求报文链路状态更新报文链路状态应答报文
不同类型的报文都有相同的报文头,
OSPF具有以下这些 特点,
1)支持 服务类型路由 。 OSPF允许管理人员为同一目的地址指定多个不同服务类型的路由,
当对一个数据报进行路由时,OSPF根据目的
IP地址和该数据所要求的服务类型进行路由选择 。
2)能够 给每个接口指派费用 。费用可以根据吞吐率、传输延迟、可靠性等性能进行指派。
可以 给每个 IP服务类型指派单独的费用 。
3)能够 提供负载均衡 。当对于同一个目的地址存在多个相同费用的路由时,OSPF可以在这些路由上平均分配流量。
4) 支持扩展,易于管理 。 OSPF的层次结构将自治系统分为多个区域,区域可以对外隐藏拓扑结构。
5)支持 特定主机、特定子网、分类网络路由以及无类网络路由 。
6)支持 无编号网络,可以节省 IP地址。
7) 支持多种鉴别机制,不同的区域可以使用不同的鉴别方法。鉴别机制保证路由器只接收可信赖的路由器发来的路由信息。
8)采用 组播,减少不参与 OSPF的系统的负载。
由于 OSPF具有强大的功能和灵活的扩展性,
该协议势必逐步取代 RIP协议。
RIP和 OSPF的比较
RIP的局限性在大型网络中使用所产生的问题,
RIP的 15跳限制,超过 15跳的路由被认为不可达
RIP不能支持可变长子网掩码 (VLSM),导致 IP地址分配的低效率周期性广播整个路由表,在低速链路及广域网云中应用将产生很大问题收敛速度慢于 OSPF,在大型网络中收敛时间需要几分钟
RIP没有网络延迟和链路开销的概念,路由选路基于跳数。拥有较少跳数的路由总是被选为最佳路由即使较长的路径有低的延迟和开销
RIP没有区域的概念,不能在任意比特位进行路由汇总
一些增强的功能被引入 RIP的新版本 RIPv2
中,RIPv2支持 VLSM,认证以及组播更新。
但 RIPv2的跳数限制以及慢收敛使它仍然不适用于大型网络
相比 RIP而言,OSPF更适合用于大型网络,
没有跳数的限制支持可变长子网掩码 (VLSM)
使用组播发送链路状态更新,在链路状态变化时使用触发更新,提高了带宽的利用率收敛速度快具有认证功能
7.5.3 边界网关协议( BGP)
边界网关协议 BGP出现于 1989年,目的是取代较早的外部网关协议 EGP。 BGP是用于不同 自治系统之间 交换路由信息的外部网关协议。 BGP经历了 4个版本,1993年开发的第
4 版 BGP(见 RFC 1467,RFC 1771)可以支持 CIDR 。
BGP采用的是与向量 — 距离算法类似的 路径 — 向量算法 。
在该算法的 路由表中包括 信宿网络、下一跳路由器和去往信宿网络的路径。
路径 由一系列排序的自治系统号构成。
自治系统的边界路由器通过内部网关协议 (RIP
或 OSPF)收集自治系统内部的各个网络的信息,
不同自治系统的边界路由器通过 BGP交换各自所在的自治系统中网络的 可达信息,这些信息包括数据到达这些网络所必须经过的 自治系统
AS的列表 。
路由器 更新 路由表
– 条件:路径信息必须与管理员给出的一组策略一致
– 更新内容:在路径中添加自治系统号和修改下一跳路由器。
更新路由表时要 避免形成环路 。方法:通过判断路径中是否已经包含了该自治系统号来决定。
BGP支持 基于策略的路由,路由选择策略与政治、经济或安全等因素有关。
自治系统管理员可以制订策略,并通过配置文件将策略指定给 BGP。路由表中的路径应该是满足指定策略的路径。
BGP使用 TCP作为传输层协议。两个运行 BGP的路由器在交换 BGP路由信息时必须先建立一条 TCP连接。
网络 2
图 7 - 16 BG P 协议中的路由通告网络 5
网络 4
网络 6
网络 7
网络 1
网络 3
网络 8
网络 10
网络 9
网络 11
自治系统 1 自治系统 2
自治系统 3
R1
R2
R3
图 7-16是一个由 3个自治系统构成的一个互联网络,R1,R2和 R3分别是自治系统 AS1,AS2
和 AS3的边界路由器。
R1向 R2通告网络 1的可达信息,(网络 1; R1;
AS1),R2根据该信息刷新自己的路由表,然后在路径上增加 AS2,并将下一跳改为 R2,
接着向 R3通告网络 1的可达信息,(网络 1; R2;
AS2,AS1),R3根据该信息刷新路由表。
边界路由器 R3的路由表如图 7-17所示。
图 7 - 1 7 B G P 边界路由器 R3 的路由表信宿网络 下一跳 路径网络 1 R2 AS2,AS1
网络 2 R2 AS2,AS1
网络 7 R2 AS2

BGP报文分为 4类,打开( Open)、更新
( Update)、保持活动( Keepalive)和通告 ( Notification)。
这 4类报文具有 相同的报文首部 。
报文总长度 类 型认证标记( M a rke r )
0 8 16 24
31
图 7 - 18 B G P 报文首部报文总长度 类型 =1
认证标记( M a rke r )
0
8 16 24 31
版 本本自治系统号 保持时间
BG P 标识选项长度选 项 (变 长)
图 7 - 19 BG P 打开报文格式打开 报文格式如图所示。
报文总长度 类型 =2
认证标记( M a rke r )
0
8 16 24 31
不可用路由器长度路径属性(变长)
不可用路由器长度删除的路由器(变长)
路径属性长度网络层可达信息(变长)
图 7 - 20 BG P 更新报文格式更新 报文是 BGP的关键报文。用于删除信宿网络和通告新的信宿网络。
保持活动 报文用于通知对方本机处于活动状态。
BGP邻机定期交换该报文,发送保持活动报文的周期小于保持时间。保持活动报文的格式就是 BGP报文首部。
通告 报文是当出现错误情况或路由器要关闭与邻机的连接时发送的报文。
报文总长度 类型 =4
认证标记( M a rk e r )
0 8 16 24
31
错误代码错误数据(变长)
错误子代码
7.5.4 路由算法分类自适应 和 非自适应,能否根据拓扑结构和通信量的变化来改变路由选择静态 和 动态,是否事先确定好路由或者动态更新单路径 和 多路径,是否存在多条路径单层结构 和 分层结构,是否划分了多个逻辑级别主机智能 和 路由器智能,由谁决定路由选择,主机还是路由器域间 和 域内,算法的使用范围距离向量算法 (RIP)和 链路状态算法 (OSPF),不同的路由策略本章要点
数据传递 分为直接传递和间接传递,直接传递是指直接传到最终信宿的传输过程。间接传递是指在信源和信宿位于不同物理网络时,所经过的一些中间传递过程。
TCP/IP采用 表驱动 的方式进行路由选择。在每台主机和路由器中都有一个反映网络拓扑结构的路由表,
主机和路由器能够根据路由表所反映的拓扑信息找到去往信宿机的正确路径。
通常路由表中的 信宿地址 采用网络地址。 路径 信息采用去往信宿的路径中的下一跳路由器的地址表示。
路由表中的两个 特殊表目 是特定主机路由和默认路由表目。
路由表的建立和刷新 可以采用两种不同的方式:静态路由和动态路由。
自治系统 是由独立管理机构所管理的一组网络和路由器组成的系统。
路由器自动获取路径信息的 两种基本方法 是向量 — 距离算法和链路 — 状态算法。
动态路由所使用的 路由协议 包括用于自治系统内部的内部网关协议和用于自治系统之间的外部网关协议。
RIP协议在基本的向量 — 距离算法的基础上,增加了对路由环路、相同距离路径、失效路径以及慢收敛问题的处理。 RIP协议以路径上的跳数作为该路径的距离。 RIP规定,一条有效路径的距离不能超过 15。
RIP不适合大型网络。
RIP报文被封装在 UDP数据报中传输。 RIP使用 UDP
的 520端口号 。
OSPF将自治系统进一步划分为 区域,每个区域由位于同一自治系统中的一组网络、主机和路由器构成。
区域的划分不仅使得广播得到了更好的管理,而且使 OSPF能够支持大规模的网络。
OSPF是一个链路 — 状态协议。当网络处于收敛状态时,每个 OSPF路由器利用 Dijkstra算法为每个网络和路由器计算最短路径,形成一棵以本路由器为根的最短路径优先 (SPF)树,并根据最短路径优先树构造路由表。
OSPF直接使用 IP。在 IP首部的协议字段,OSPF协议的值为 89。
BGP是采用路径 — 向量算法的外部网关协议,BGP
支持基于策略的路由,路由选择策略与政治、经济或安全等因素有关。
BGP报文分为打开、更新、保持活动和通告 4类。
BGP报文被封装在 TCP段中传输,使用 TCP的 179号端口。