730 likes | 1.03k Views
IPUB_404_C1. OSPF 路由协议原理. V1.1. 经过本节的学习,你可以获得以下收获: 掌握OSPF路由协议计算方法 掌握OSPF路由协议的高级应用. 6. 5. 7. 1. OSPF概述. 邻接关系的建立. 2. OSPF的一些概念. 区域内路由的计算. 3. OSPF的协议报文. 区域的划分. 4. 8. DRBDR的作用. 多区域路由的维护. OSPF 概述. OSPF(Open Shortest Path First) 开放型最短路径优先协议 OSPF 是一个内部网关协议 (IGP)
E N D
IPUB_404_C1 OSPF路由协议原理 V1.1
经过本节的学习,你可以获得以下收获: • 掌握OSPF路由协议计算方法 • 掌握OSPF路由协议的高级应用
6 5 7 1 OSPF概述 邻接关系的建立 2 OSPF的一些概念 区域内路由的计算 3 OSPF的协议报文 区域的划分 4 8 DR\BDR的作用 多区域路由的维护
OSPF 概述 • OSPF(Open Shortest Path First)开放型最短路径优先协议 • OSPF是一个内部网关协议(IGP) • OSPF属于链路状态协议, 维护一个复杂的网络拓扑数据库,采用SPF算法计算最优路由。
OSPF的优点 • 无路由自环 • 可适应大规模网络 • 路由变化收敛速度快 • 支持区域划分 • 支持等值路由 • 支持验证 • 支持路由分级管理 • 支持以组播地址发送协议报文
6 2 3 5 7 4 1 OSPF概述 邻接关系的建立 OSPF的一些概念 区域内路由的计算 OSPF的协议报文 区域的划分 8 DR\BDR的作用 多区域路由的维护
OSPF 概念 • Router ID(路由器标识符): 32位二进制数,用于标识每个路由器,要求全局唯一。通常,为第一个先激活的接口IP地址,若有多个已经激活的接口,则为路由器的最小的IP地址。如果在路由器上配置了Loopback接口,那么,路由器 ID是所有Loopback接口中的最小的IP地址,不管其他物理接口的IP地址的值,激活后不变。 • Interface(接口):路由器和具有唯一IP地址和子网掩码的网络之间的连接。也称为链路(Link)。
OSPF 概念(续) • 指定路由器(DR)和备份指定路由器(BDR):在一个多路访问环境中的路由器必须选举一个DR和BDR来代表这个网络。DR和BDR的选举是为了减少在局域网上的OSPF的流量。 • Adjacency(邻接关系):邻接在广播或NBMA网络的DR和非指定路由器之间形成。 • Neighboring Routers(邻居路由器):带有到公共网络接口的路由器。
OSPF 概念(续) • 邻居表(Neighbor Database):包括所有建立联系的邻居路由器。 • 链接状态表(拓扑表)(Link State Database):包含了网络中所有路由器的链接状态。它表示着整个网络的拓扑结构。同Area内的所有路由器的链接状态表,都是相同的。 • 路由表(Routing Table):也称转发表,在链接状态表的基础之上,利用SPF算法计算而来。
OSPF 术语和概念 接口
邻居 OSPF 术语和概念(续) 接口
邻居 OSPF 术语和概念(续) 自治系统 接口 邻居列表
邻居 拓扑数据库 OSPF 术语和概念(续) 自治系统 接口 邻居列表
邻居 OSPF 术语和概念(续) 自治系统 接口 邻居列表 拓扑数据库 路由表
6 3 2 5 7 4 1 OSPF概述 邻接关系的建立 OSPF的一些概念 区域内路由的计算 OSPF的协议报文 区域的划分 8 DR\BDR的作用 多区域路由的维护
封装在 IP 包中的OSPF • OSPF 是一种链接-状态路由协议 • 依靠IP包来承载OSPF信息 • 使用的协议号: 89 协议号: 89 - OSPF 6 - TCP 17 - UDP Frame Payload C R C Frame Header OSPF Header IP Header Payload
OSPF 的报文格式 (1) • 版本号——标识所使用的OSPF版本 • 类型——将OSPF数据包类型标识为以下类型之一: • hello包:建立和维持邻居关系。 • 数据库描述包(DBD或DDP):描述拓扑结构数据库的内容。 • 链路状态请求包(LSR):向相邻路由器请求其拓扑结构数据库的部分内容。 • 链路状态更新包(LSU):对链路状态请求数据包的回应,包含具体的链路状态信息。 • 链路状态确认包(LSAck):对链路状态更新数据包的确认,这种确认使O S P F的扩散过程更可靠。
OSPF 的报文格式 (2) • 数据包长度——以字节为单位的数据包的长度,包括OSPF包头; • 路由器ID——标识数据包的发送者; • 区域ID——标识数据包所属的区域。所有OSPF数据包都与一个区域相关联; • 校验和——校验整个数据包的内容,以发现传输中可能受到的损伤; • 认证类型——包含认证类型:类型0标识不进行认证,类型1表示采用明文方式进行认证,类型2表示采用MD5算法进行认证。OSPF协议交换的所有信息都可以被认证,认证类型可按各个区域进行配置; • 认证——包含认证信息; • 数据——包含所封装的上层信息(实际的链路状态信息)
D E Hello B A C 邻居关系 Router ID Hello/dead intervals Neighbors Area-ID Router priority DR IP address BDR IP address Authentication password Stub area flag * afadjfjorqpoeru 39547439070713 * Hello * * * 带星号的项目必须要一致
6 4 2 5 7 3 1 OSPF概述 邻接关系的建立 OSPF的一些概念 区域内路由的计算 OSPF的协议报文 区域的划分 8 DR\BDR的作用 多区域路由的维护
DR and BDR DR BDR • 每个网段都会选出DR和BDR • 然后,每个Router都会和DR,BDR建立邻接关系
Hello DR and BDR的选举 P=3 P=2 DR BDR • Hello 包的交换是通过组播实现的。 • 拥有最高优先级的Router 将成为DR(BDR) • 优先级一样则Router-id最大的Router将成为DR。 P=1 P=1 P=0
6 5 2 7 4 3 1 OSPF概述 邻接关系的建立 OSPF的一些概念 区域内路由的计算 OSPF的协议报文 区域的划分 8 DR\BDR的作用 多区域路由的维护
OSPF的邻居表的建立过程 172.16.5.1/24 E0 172.16.5.2/24 E1 A B Down State 我的router ID是172.16.5.1,没有看到邻居。 Init State Router B Neighbors List 172.16.5.1/24, int E1 我的 router ID是172.16.5.2, 我的邻居有 172.16.5.1。 Router A Neighbors List 172.16.5.2/24, int E0 Two-Way State
afadjfjorqpoeru 39547439070713 DBD OSPF链接状态数据库的建立过程(1) DR E0 172.16.5.1 E0 172.16.5.3 Exstart State afadjfjorqpoeru 39547439070713 我将发起链路信息的交互,我是主发送方(MS=1) DBD 不, 我是主发送方, 因为我拥有更高的router ID. afadjfjorqpoeru 39547439070713 DBD Exchange State afadjfjorqpoeru 39547439070713 这是我的链路状态数据库的汇总信息。 DBD 这是我的链路状态数据库的汇总信息。
OSPF链接状态数据库的建立过程(2) DR E0 172.16.5.1 E0172.16.5.3 Loading State afadjfjorqpoeru 39547439070713 我需要 172.16.6.0/24完整的LSA条目. LSR afadjfjorqpoeru 39547439070713 这是172.16.6.0/24的LSA条目. LSU afadjfjorqpoeru 39547439070713 收到,谢谢! LSAck Full State
2 1 x x 3 Flooding(洪泛)过程(1) • 路由器用224.0.0.5将拓扑改变消息通告给邻居 点对点链路状态发生变化 更新路由表。 LSU B A LSU
2 1 x x 3 Flooding(洪泛)过程(2) 广播类型链路状态发生变化 DR LSU 更新路由表。 4 LSU B A LSU • 路由器A用224.0.0.6通告给DR • DR用224.0.0.5通告给其他路由器
2 1 x x 3 Flooding(洪泛)过程(3) NBMA环境下链路状态发生变化 LSU DR 更新路由表。 4 C LSU 帧中继云 LSU B A LSU • 路由器A用单播地址通告给DR(或邻居)
5 6 2 7 4 3 1 OSPF概述 邻接关系的建立 OSPF的一些概念 区域内路由的计算 OSPF的协议报文 区域的划分 8 DR\BDR的作用 多区域路由的维护
OSPF协议计算过程 RTA RTB 1 LSDB 1 A B LSA of RTA 2 5 2 5 C LSA of RTB RTC 3 LSA of RTC 3 D LSA of RTD RTD (1)网络的拓扑结构 (3)由链路状态数据库生成 带权有向图 (2)每台路由器的LSDB 1 1 1 1 A B A B A B A B 2 2 2 2 C C C C 3 3 3 3 D D D D (4)每台路由器分别以自己为根节点计算最小生成树
最小生成树计算 • 数据方向出端口COST之和 10.2.2.0/24 10.3.3.0/24 10.1.1.0/24 Cost=1 Cost=1 Cost=1 A B C Cost=5 Cost=5 Topology Table Net Cost 10.2.2.0 2 10.3.3.0 3 Topology Table Net Cost 10.1.1.0 10
Cost计算方式 • 范围:1-65535的整数 • 计算方式: 1.自动计算 参考值/接口带宽,参考值默认为100M auto-cost reference-bandwidth <ref-bw> 2.手工指定 ZXR10(interace-if)#ip ospf cost <cost>
LSA头部 • 所有LSA头部都有20个字节,它包含了足够的信息来唯一标识一条LSA
LS AGE • 用来标识LSA产生后所经历的时间,单位为秒; • LSA产生达到30分钟重新洪泛一次; • LS AGE达到60分钟撤销该LSA。
Ls Sequence Number • 4个字节大小,从0x80000001 开始到0x7fffffff结束; • 每更新一次加1。 • LS Type、Link State Id & Advertising Router三者表示唯一一条LSA • Ls Sequence Number & Ls Age 表示该LSA是否是更新信息
LSU LSA Go to A 维护路由表 (cont.) 序列号 是否一样? 该记录在 链接-状态数据库中 已经存在了吗? 忽略该 LSA Yes Yes No No A 序列号 是否更高? 增加到数据库中去 Yes 发送LSAck 给 DR No 将携带更新信息 的LSU发送给 源Router LSA洪泛 利用SPF算法 计算新的路由表 End End
afadjfjorqpoeru 39547439070713 afadjfjorqpoeru 39547439070713 OSPF 单区域网络的构成 Areas Routers LSAs Area 0 骨干区域 Internal Type 1 Type 2 DR Router lsa 是如何产生的?Network lsa是如何产生的?
5 7 2 6 4 3 1 OSPF概述 邻接关系的建立 OSPF的一些概念 区域内路由的计算 OSPF的协议报文 区域的划分 8 DR\BDR的作用 多区域路由的维护
一个大规模 OSPF 网络遇到的问题 OSPF 老是要算路由表,烦死了! 我现在只能收到 LSA了, 根本没有数据 OSPF OSPF OSPF OSPF 我的路由表太大了, 而我的内存又太小了
解决办法: 划分区域(AREA) Area 0 Area 1 Area 2 自治系统
外部AS/ 其他路由协议域 OSPF Routers 的类型 Area 1 骨干区域 Area 0 Area 2 ABR 和 骨干路由器 骨干/内部路由器 内部路由器 内部路由器 ASBR 和 骨干路由器 ABR 和骨干 路由器
重分发 • 其他方式发现的路由如何在OSPF世界传递? • ZXR10(config-router)#redistribute <protocol> • 将其他协议发现的路由用Type 5类型LSA重新封装,发布到整个OSPF世界。
重分发路由COST计算 • 重分发后TYPE 5 LSA的metric-type,取值为ext-1或ext-2,缺省为ext-2 : • EXT-1:将OSPF世界的cost值记入该条路由的花费值中进行计算; • EXT-2:缺省metric在重分配BGP路由时为1,其他路由时为20 ; • 优选EXT-1类型路由。