Ospf:
开放式最短路径优先协议(基于SPF算法,协议号89) 无路自由环
协议号作用:标识上层协议
无类别链路状态
igp
协议;周期更新
(30min)+
触发更新;链路状态协议的更新量随着网络范围的扩展指数性的上升,因此ospf协议为了在中大型网络中工作,需要结构化的部署
-
区域划分、合理ip地址规划;组播更新
--- 224.0.0.5(DR与非BDR之间沟通) 224.0.0.6(DR与BDR沟通)
【
1
】ospf的
5
种数据包:
Hello
邻居的发现,关系的建立;周期(
10
s)的保活
携带
rid
Dbd
数据库描述包;本地数据库目录
Lsr
链路状态请求
Lsu
链路状态更新
Lsack
链路状态确认
Lsa
-
链路状态通告,具体一条一条路由信息或拓扑信息;但它不是一个包,是被lsu数据包来携带;
【
2
】
Ospf
的
7
个状态机:
Down
:一旦接收到的hello
包,进入下一个状态机
Init
初始化:
一旦接收到的
hello
包中,存在本地的rid,进入下一个状态
2
way
双向通讯:
邻居关系建立的标志
关注条件:
Exstart
预启动:
使用不携带目录信息的
DBD
包,进行主从关系的选举;rid大为主,优先进入下一个状态;解决了目录共享时的无序;
Exchange
准交换:使用携带目标信息的
dbd
包,共享本地数据库目录;
loading加载:查看完邻接的
dbd
信息后,对比本地,然后基于本地未知的lsa进行查询;
使用lsr
向对端查询,对端使用lsu来传输这些lsa信息,本地收到后需要
lsack来进去确认;
Full
:邻接关系建立的标志;
意味着邻接间,数据库同步(一致)
【
3
】
osp
f的工作过程
启动配置完成后,邻居间开始收发hello包;hello包中将携带本地及本地所有已知邻居的rid;之后生成
邻居表
;邻居间需要关注是否可以成为邻接的条件;若不能建立为邻接,将保持为邻居关系,仅hello包周期保活即可;
若可以建立邻接关系;将使用
DBD
进行本地数据库目录的对比;之后基于对比的结果,使用
LSR/LSU/LSack
来获取本地未知的
LSA
信息;使邻接关系间数据库(
lsdb
)完成同步(一致),生成
数据库表
;
之后本地基于lsdb,使用spf算法,生成有向图
—
>最短路径树
——
>计算本地到达所有未知网段的最短路径,将其加载到本地
路由表中
;收敛完成;
收敛完成后,邻居和邻接关系间均hello每10s保活;每30min一次邻接关系间周期数据库比??????????????
结构突变:
-
新增网段
-
断开网段
-
无法沟通 --- dead time 为hello time的4倍;在4次周期内未收到对端的hello包,将断开与其的邻居关系;删除通过该邻居计算所得路由;
lsdb:链路状态数据库
–
所有lsa的集合
【
4
】基础配置
[r1]ospf 1 router-id 1.1.1.1
启动时可以定义进程号、
RID
;默认进程
1
,
RID--
格式为
IPV4
地址,全网唯一;
手工
--
》环回接口最大数值
--
》物理接口最大数值
[r1-ospf-1]
宣告:
1
、激活
--
可以收发ospf的信息
2
、被选中接口的拓扑信息可以共享给邻接
3
、区域划分
[r1-ospf-1]area 0
[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
[r1-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255
ospf在宣告时,需要使用反掩码,来匹配宣告的地址范围
区域划分规则:
-
星型结构
---
编号
0
骨干区域(中心),大于
0
为非骨干区域(分支)
非骨干区域必须直连骨干区域;
2
、必须存在
ABR(ARER BORDER ROUTE) ---
区域边界路由器
两个区域间互联的设备
启动配置完成后,邻居间收发hello包;建立邻居关系,生成
邻居表
:
[r2]display ospf peer
查看邻居关系
[r2]display ospf peer brief
查看邻居简表
邻居关系建立后,关注条件;匹配失败,保持为邻居关系,仅hello包周期保活;匹配成功??????????????????????????????????????????????
DBD/LSR/LSU/LS
ack来获取本地未知的
LSA
信息;完整本地的
LSDB
(
数据库表
);
[r2]display ospf lsdb
当数据库同步完成后;本地基于
SPF
算法,将数据库转换为有向图,再将有向图转换为树型结构;之后基于树形结构,以本地为起到到达所有未知网段的最短路径,加载到
路由表
中;
<r1>display ip routing-table protocol ospf
查看ospf路由
优先级为
10
;度量为cost值
;
cost值
=
开销值
Ospf
cost
=
参考带宽
/
接口带宽
默认参考带宽为
100M
ospf优选cost值之和最小,为最佳路径;若两条链路cost值之和相同,
等开销负载均衡(动态路由里面是等开销负载均衡,静态只是负载均衡,但是也存在等开销)
;
若接口带宽大于参考带宽,cost为
1
;将可能导致选路不佳;建议修改默认的参考带宽:
[r1]ospf 1
[r1-ospf-1]bandwidth-reference ?
INTEGER<1-2147483648> The reference bandwidth
(Mbits/s)
[r1-ospf-1]bandwidth-reference 1000
切记:若修改参考带宽,全网需修改的一致;
【
5
】扩展配置
-
DR/BDR
选举
邻居成为邻接关系的条件;与网络类型有关;
网络类型:
点到点
--
在一个网段内只能存在两个节点
--
串线链路
MA--
多路访问
-
在一个网段内的节点数量不限制;不是当下连接了几个节点;而是该网络类型允许最终连接多个节点;
--
以太网
点到点网络邻居关系直接成为邻接关系;在
MA
网络中,将进行
DR/BDR
选举;在一个网段中仅
DR/BDR
与其他路由器为邻接关系;非
DR/BDR
之间为邻居关系;
选举规则:
-
先比较该网段所有参选设备接口的优先级,越大越优;
默认优先级为
1
;取值范围
0-255
,
0
标识不参选
-
若所有参选者优先级相同,比较参选设备的
RID
,数值大优;
干涉选举:
-
DR
优先级最大,
BDR
次大
--
切记ospf的选举是非抢占性的;故在修改完优先级后,需要所有路由器重启
OSPF
进程;
注意:
注意:当接口启用OSPF之后,假设等待40s(wait time),仍然没有其他路由器声称自己是DR和BDR,我自己就把该接口设置为DR一般是谁先配置谁是DR,其次是BDR。
DR是没有抢占性的,当BDR变为老大时,DR无法自动再次成为老大,当某天DR挂了,则BDR会升级为DR,然后再DRother中选择一个作为BDR。
从宏观角度来说,一开始先选择BDR出来,然后BDR判断网络中有没有DR,没有DR,则BDR升级为DR,再选择一个BDR出来
--在一个广播网络类型下减少了OSPF邻接关系,减少了泛洪流量和重复接受的数据库;这样就节省了设备资源和带宽资源
[r2]interface GigabitEthernet 0/0/0
[r2-GigabitEthernet0/0/0]ospf dr-priority 3 修改接口优先级
<r1>reset ospf process 重启ospf进程
Warning: The OSPF process will be reset. Continue? [Y/N]:y
2、DR优先级修改为最大,BDR次大;其他设备修改为0;无需重启进程
-
区域汇总 --- OSPF协议不支持接口汇总;只能在ABR上将a区域拓扑计算所得路由,共享给B区域时进行汇总;
[r2]ospf 1
[r2-ospf-1]area 0
[r2-ospf-1-area-0.0.0.0]abr-summary 1.1.0.0 255.252.0.0
R2为一台连接区域0和其他区域的ABR;以上操作为,R2将通过区域0学习到的拓扑计算所得的路由,传递给其他区域时进行汇总,汇总网段1.1.0.0/22
-
被动接口(沉默接口)--仅接收不发送路由协议信息;用于连接用户终端的接口,不得用于连接邻居路由器的接口,否则无法建立邻居关系;
[r2]ospf 1
[r2-ospf-1]silent-interface GigabitEthernet 0/0/0
-
认证 -- 接口认证 在直连邻居或邻接的接口上配置,保障更新的安全
[r1-GigabitEthernet0/0/1]ospf authentication-mode md5 1 cipher 123456
模式、编号、密码要求邻居间一致
-
加快收敛
邻居间计时器 10s hello time 40s dead time
邻居间,修改本端的hello time,本端的dead time自动4被关系匹配;但ospf中邻居间的hello time和dead time必须完全一致,否则无法建立邻居关系;
[r1]interface GigabitEthernet 0/0/0
[r1-GigabitEthernet0/0/0]ospf timer hello 5
-
缺省路由 --- 边界路由器上配置后,将自动向内网下放一条缺省路由,之后内网设备将自动生成缺省路由指向边界
[r4]ospf 1
[r4-ospf-1]default-route-advertise always