背景
- 由于RIP是基于距离矢量算法的路由协议,存在着收敛慢、路由环路、可扩展性差等问题,所以逐渐被OSPF取代。
概述
- 开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol)。
- 目前针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version 3(RFC2740)。如无特殊说明,本文中所指的OSPF均为OSPF Version 2。
- OSPF度量值为代价(由链路带宽决定,1000Mbps代价为1);
- OSPF会进行区域划分实现网络快速收敛(同时进行区域内的路由学习,再进行区域间路由学习);
优点
- OSPF采用组播形式收发报文,这样可以减少对其它不运行OSPF路由器的影响。
- OSPF支持无类型域间选路(CIDR)。
- OSPF支持对等价路由进行负载分担。
- OSPF支持报文加密。
RIP与OSPF优缺点
- RIP:简单易维护,但网络收敛慢、扩展性差(最大15跳),更适合小型网络拓扑;
- OSPF:相对更复杂,但网络收敛较快、扩展性更好(度量值为代价,理论上无上限),适合中、大型网络拓扑;
工作原理
建立邻居关系
- 相邻路由器发送Hello报文;
- 选举DR路由器(指定路由器)和BDR路由器(备份指定路由器);
建立邻接关系
- 发送链路状态数据描述报文(DB:DataBase Description Packet),进行链路数据库同步;
学习链路状态信息
- 发送链路状态请求报文(LSR:Link State Request Packet);
- 发送链路状态更新报文(LSU:Link State Update Packet):一个LSU数据包包含一条或多条LSA(Link State Advertisement:链路状态通告),包含了要学习的路由条目信息;
- 发送链路状态确认报文(LSA:Link State Acknowledgment Packet)
形成路由条目
- 经过最短路由优先算法(
Dijkstra)计算出最短路径,形成路由条目;
区域划分
骨干区域
-
负责区域之间路由信息的传播区域。
-
区域编号固定为
0或者0.0.0.0。 -
默认情况下,所有非骨干区域都需要与骨干区域直接相连,如果两个非骨干区域未通过骨干区域直接相连,会导致无法实现其它区域路由学习的现象;
- 区域1会将汇总后的路由信息发送给区域0,区域2也会将汇总后的路由信息发送给区域0;
- 区域0收到汇总路由信息后,再次进行汇总,将汇总后的结果发送给其它非骨干区域(区域1和区域2);
- 由于区域3未与区域0直连,导致未将自己的区域汇总路由信息发送给区域0,则其它区域(区域0、1、2)都无法学习区域3的路由信息,且区域3也无法学习其它区域(区域0、1、2)路由信息;
非骨干区域
- 根据可以学习到的路由种类进行区分
命令
- 创建OSPF编号
ospf 编号 - 创建区域
area 编号 - 宣告直连网段
network IP网段 通配符子网掩码 - 将ASBR上的直连路由引入到OSPF中
ospf 编号import-route direct - 将ASBR上的静态路由引入到OSPF中
ospf 编号import-route static - 将ASBR上的默认路由引入到OSPF中
ospf 编号default-route-advertise - 将ASBR上的RIP路由引入到OSPF中
ospf 编号import-route rip 编号 - 将ASBR上的直连路由引入到RIP中
rip 编号import-route direct - 将ASBR上的默认路由引入到RIP中
rip 编号default-route originate - 将ASBR上的静态路由引入到RIP中
rip 编号import-route static - 将ASBR上的ospf路由引入到RIP中
rip 编号import-route ospf 编号 - 配置为末梢区域
ospf 编号area 编号stub - 配置为完全末梢区域
ospf 编号area 编号stub no-summary - 配置非纯末梢区域
ospf 编号area 编号nssa - 配置完全非纯末梢区域
ospf 编号area 编号nssa no-summary
通配符子网掩码
-
32位点分十进制(IPv4格式),
0表示匹配,1不匹配;-
比如:
- 子网掩码:
255.255.0.0 - 通配符子网掩码:
0.0.255.255
- 子网掩码:
-
-
通配符子网掩码=
255.255.255.255-子网掩码;
路由器角色
区域内路由器(Internal Router)
- 该设备的所有接口都属于通过一个AS区域。
区域边界路由器ABR(Area Border Router)
- 该设备可以同时属于两个以上区域,但其中一个必须为骨干区域。
自治系统边界路由器ASBR(AS Boundary Router)
- 与其它AS交换路由信息的设备。
LSA类型
Type1
- 每个设备都会产生,描述了设备的链路状态和开销,在所属的区域内传播。
Type2
- 由DR(Designated Router)产生,描述本网段的链路状态,在所属的区域内传播。
Type3
- 由ABR产生,描述区域内某个网段的路由(区域之间的路由信息),区域间传播。
Type4
- 由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。
Type5
- 由ASBR产生,描述到AS外部的路由,通告到所有的区域(除了STUB区域和NSSA区域)。
Type7
- 由ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。
非骨干区域
标准区域
- 标准区域与骨干区域直连,也可以连接其它AS区域;
- 标准区域为最通用区域,其传输区域内路由、区域间路由、区域外路由(其它AS区域);
- 会产生的LSA类型:1、2、3、4、5;
末梢区域(STUB)
- 不允许发布自治系统外部路由,只允许发布区域内路由和区域间路由;
- 会产生的LSA类型:1、2、3(其它区域路由,通往其它自治系统的默认路由)
完全末梢区域(Totally STUB)
- 不允许发布自治系统外部路由和区域间路由,只允许发布区域内路由;
- 会产生的LSA类型:1、2、3(通往其它自治系统和区域的默认路由)
非纯末梢区域(NSSA)
- 具备末梢区域特征(只允许发布区域内路由和区域间路由);
- 可以导入与当前当前区域内的ASBR直连的其它自治系统路由;
- 会产生的LSA类型:1、2、3、7(其它AS路由);
完全非纯末梢区域(Totally NSSA)
- 具备完全末梢特征(只允许发布区域内路由)
- 具备非纯末梢特征(可以导入与当前当前区域内的ASBR直连的其它自治系统路由);
- 会产生的LSA类型:1、2、3(通往其它自治系统和区域的默认路由)、7(其它AS路由);
骨干区域案例
AR1:
sysint g0/0/0ip add 192.168.10.254 24int g0/0/1ip add 172.16.1.1 30qospf 10area 0network 192.168.10.0 0.0.0.255network 172.16.1.0 0.0.0.3
AR2:
sysint g0/0/1ip add 192.168.20.254 24int g0/0/0ip add 172.16.1.2 30qospf 10area 0network 172.16.1.0 0.0.0.3network 192.168.20.0 0.0.0.255
多区域案例
AR1:
sysint g0/0/0ip add 192.168.10.254 24int g0/0/1ip add 172.16.1.1 30int g0/0/2ip add 172.16.3.1 30qospf 100area 0network 192.168.10.0 0.0.0.255network 172.16.1.0 0.0.0.3qqospf 100area 1network 172.16.3.0 0.0.0.3qqdhcp enableint g0/0/0dhcp select interface
AR2:
sysint g0/0/0ip add 172.16.1.2 30int g0/0/1ip add 192.168.20.254 24int g0/0/2ip add 172.16.2.1 30qospf 100area 0network 172.16.1.0 0.0.0.3network 192.168.20.0 0.0.0.255qqrip 10version 2network 172.16.0.0qospf 100import-route rip 10qrip 10import-route ospf 100qdhcp enableint g0/0/1dhcp select interface
AR3:
sysint g0/0/0ip add 172.16.2.2 30int g0/0/1ip add 192.168.30.254 24qrip 10version 2network 172.16.0.0network 192.168.30.0qdhcp enableint g0/0/1dhcp select interface
AR4:
sysint g0/0/0ip add 172.16.3.2 30qospf 100area 1network 172.16.3.0 0.0.0.3
末梢区域案例
AR1:
sysdhcp enableint g0/0/0ip add 192.168.10.254 24dhcp select interfaceint g0/0/1ip add 172.16.1.1 30int g0/0/2ip add 172.16.3.1 30qospf 100area 0network 192.168.10.0 0.0.0.255network 172.16.1.0 0.0.0.3qarea 1network 172.16.3.0 0.0.0.3stub
AR2:
sysdhcp enableint g0/0/0ip add 172.16.1.2 30int g0/0/1ip add 192.168.20.254 24dhcp select interfaceint g0/0/2ip add 172.16.2.1 30qospf 100area 0network 172.16.1.0 0.0.0.3network 192.168.20.0 0.0.0.255qqrip 10version 2network 172.16.0.0import-route ospf 100qospf 100import-route rip 10
AR3:
sysdhcp enableint g0/0/0ip add 172.16.2.2 30int g0/0/1ip add 192.168.30.254 24dhcp select interfaceqrip 10version 2network 172.16.0.0network 192.168.30.0
AR4:
sysint g0/0/0ip add 172.16.3.2 30int g0/0/1ip add 172.16.5.1 30int g0/0/2ip add 172.16.4.1 30qospf 100area 1network 172.16.3.0 0.0.0.3qqrip 200version 2network 172.16.0.0qip route-static 192.168.40.0 24 172.16.4.2ospf 100import-route rip 200qrip 200import-route ospf 100import-route staticospf 100import-route staticarea 1stub
AR5:
sysdhcp enableint g0/0/0ip add 172.16.4.2 30int g0/0/1ip add 192.168.40.254 24dhcp select interfaceqip route-static 0.0.0.0 0 172.16.4.1
AR6:
sysdhcp enableint g0/0/0ip add 192.168.50.254 24dhcp select interfaceint g0/0/1ip add 172.16.5.2 30qrip 200version 2network 192.168.50.0network 172.16.0.0