OSPF
基本概念及单区域配置
-
内部网关路由协议
OSPF
内部网关路由协议:用于在单一自治系统(
Autonomous System-AS
)内决策路由
自治系统(
AS
):执行统一路由策略的一组网络设备的组合
-
区域
为了适应大型的网络,
OSPF
在
AS
内划分多个区域
每个
OSPF
路由器只维护所有区域的完整的链路状态信息
-
链路状态路由协议
OSPF
是链路状态路由协议,链路状态路由协议中的路由器了解
OSPF
网络内的链路状态信息
链路状态路由协议中,直连的路由器之间建立邻接关系,互相“交流”链路信息,来“画”出完整的网络结构
l
为了标识链路信息是由谁发出的,用
Router ID
标识路由器
l
相邻路由器之间建立邻接关系,保存在邻居列表中
l
路由器学习到的链路信息,表存在链路状态数据库中
-Router ID
Router ID
:是在
OSPF
区域内唯一标识一台路由器的
IP
地址
Router ID
选取规则:
l
首先,路由器选取它所有
loopback
接口上数值最高的
IP
地址
l
如果没有
loopback
接口,就在所有物理端口中选取一个数值最高的
IP
地址
-
链路状态路由协议中的数据库类型
邻居列表:列出每台路由器全部已经建立邻接关系的邻居路由器
链路状态数据库(
LSDB
):列出网络中其他路由器的信息,由此显示全网的网络拓扑
路由表:列出通过
SPF
算法计算出的到达每个相连网络的最佳路径
-
链路状态生成过程
建立邻接关系
-
(学习链路状态信息)
-
链路状态数据库
-
(
Djkstra
算法)
-
最短路径树
�C
路由表
-
建立邻接关系的过程
Init
:接收到对方的
HELLO
报文,转换为初始状态
2-way
:在对方发来的
HELLO
报文中看到自己的
Router ID
,转换为双向状态
ExStart
:确定数据库描述报文的序列号,转换为信息交换初始状态
- DBD
(
Seq
)
ExChange
:发送数据库描述报文,转换为信息交换状态
- DBD
ExChange
:发送链路状态信息请求报文,获取未知的链路状态信息
�C LSR
Loading
:发送链路状态信息更新报文,同步链路状态数据库
�C LSU
Full
:知道两台路由器的链路状态数据库完全一致,形成邻接关系
-OSPF
的邻接关系需满足的条件
邻居:两个路由器之间如果不能满足下列条件,则它们就不能成为邻居:
l
Area-id
:两个路由器必须在共同的网段上,它们的端口必须属于该网段上的同一个区,且属于同一个子网
l
验证(
Authentication OSPF
):同一区域路由器必须交换相同的验证密码,才能成为邻居
l
Hello Interval
和
Dead Interval
:
OSPF
协议需要两个邻居路由器的这些时间间隔相同,否则就不能成为邻居路由器
l
Stub
区域标记:两个路由器可以在
Hello
报文中通过协商
Stub
区域的标记来成为邻居
-OSPF
的网络类型
路由器接口类型不同,在建立邻接关系的时候,
OSPF
路由器执行的操作也略有不同
网络类型
|
举例
|
广播
|
以太网
|
非广播多路访问
NBMA
|
帧中继、
X.25
|
点到点
|
PPP
,
HDLC
|
点到多点
|
多个点到点链路的集合
|
-OSPF
的
DR
与
BDR
指定路由器(
DR
):一个网段上的其他路由器都和指定路由器(
DR
)构成邻接关系,而不是它们互相之间构成邻接关系
通过
Hello
报文选择
DR
和
BDR
来代表
OSPF
网段
其他的路由器(
DRothers
)只和
DR
及
BDR
路由器之间形成邻接关系
通过组播发送
Hello
报文
具有最高
OSPF
优先级的路由器会被选为
DR
如果
OSPF
优先级相同,则具有最高
Router ID
的路由器会被选为
DR
-OSPF
包类型总结
包类型
|
描述
|
Hello
|
用于邻居路由器之间建立和维护邻接关系
|
数据库描述包
DBD
|
描述每台
OSPF
路由器的链路状态数据库的内容
|
链路状态请求包
LSR
|
请求链路状态数据库的部分内容
|
链路状态更新包
LSU
|
传送链路状态数据通告
LSA
给邻居路由器
|
链路状态确认包
LSAck
|
确认邻居发过来的
LSA
已经收到
|
-OSPF
的
Hello
协议
当路由器上启动
OSPF
进程时,每台路由器都回间隔一定的时间发送
Hello
包
Hello
包通过组播地址
224.0.0.5
发送
OSPF
路由器使用
Hello
包发起建立邻接关系并监视这种关系的存在和消失
在广播网或者点对点网上,
Hello
的发送间隔是
10
秒;在
NBMA
网络上,
Hello
的发送间隔是
30
秒
-OSPF
的度量方法
COST=10
8
/BW
OSPF
协议决定最短路径是基于路由器每一个接口指定的代价(
cost
)来的
一条路由的代价:是指沿着到达目的网络的路由路径上所有出战接口的代价之和
-
何时需要
OSPF
路由协议
网络的规模:网络中路由器在
10
台以上;中等或大规模的网络
网络的拓扑结构:网络的拓扑结构为网状,并且任意两台路由器之间都有胡同的需求
其他特殊的需求:要求路由变化时快速收敛,要求路由协议自身的网络开销尽量降低
对路由器自身的要求:运行
OSPF
协议时,对路由器的
CPU
的处理能力及内存的大小都有一定的要求,性能很低的路由器不推荐使用
OSPF
协议
-OSPF
路由协议的特点
l
可适应大规模网络
l
路由变化收敛速度快
l
无路由环
l
支持变长子网掩码
VLSM
l
支持区域划分
l
支持以组播地址发送协议报
-OSPF
与
RIP
的比较
OSPF
:链路状态路由协议;没有跳数的限制;支持可变长子网掩码(
VLSM
);收敛速度快;使用组播发送链路状态更新,在链路状态变化时使用触发更新,提高了带宽的利用率
RIP
:距离矢量路由协议;
RIP
的
15
跳限制,超过
15
跳的路由被认为不可达;
V1
不支持可变长之网掩码(
VLSM
),
V2
支持;收敛速度慢;周期性广播整个路由表,在低速链路及广域网中应用将产生很大问题
-OSPF
单区域的配置命令
配置
loopback
接口地址:
�C
用于产生路由器的
Router ID
Router(config)#interface loopback looback-number
Router(config-if)#ip address ip-address mask
启动
OSPF
路由进程:
Router(config)#router ospf
进程号
-
本路由器的进程号,用于标识同一路由器上多个
OSPF
进程
指定
OSPF
协议运行的接口和所在的区域:
Router(config-router)#network
网络号
反向掩码
area
区域号
*
网络号:可以是网络地址、子网地址、接口地址
*
区域号:指明网络所述区域
修改接口的
Cost
值:
Router(config-if)#ip ospf cost number
配置
OSPF
计时器:
Router(config-if)#ip ospf hello-interval
时间(
s
)
Router(config-if)#ip ospf dead-interval
时间(
s
)
*
为了交换信息,相邻路由器必须有相同的
hello
和
dead
间隔,通常
dead
时间是
hello
时间的
4
倍
查看邻居列表:
Router#show ip ospf neighbor
查看链路状态数据库:
Router#show ip ospf database
查看路由表:
Router#show ip route
查看
OSPF
的配置:
Router#show ip ospf
查看
OSPF
接口数据结构:
Router#show ip ospf interface
接口