OSPF (SPF)
属于链路状态路由选择协议,并且是公有标准,
理论上是没有网络规模限制的;
支持网络的层次化设计,可以将网络分为2层。
层,是通过“区域”的概念来进行区分的。
-骨干区域
-非骨干区域
所有的非骨干必须与骨干区域直接相连,才能正常通讯。
路由器因为区域的存在,也分为不同的类型:
-骨干路由器
所有链路都属于骨干区域的路由器;
-非骨干路由器
所有链路都属于非骨干区域的路由器;
-区域边界路由器(*) 【ABR:area border router 】
必须同时连接着骨干区域和非骨干区域;
-自治系统边界路由器【ASBR:】
具有引入外部路由能力的路由器,叫做OSPF的 ASBR。
-工作原理
1、建立邻居表
仅仅使用 hello 报文。
OSPF路由,仅仅在 OSPF 邻居路由器之间进行交换;
邻居状态:
down
init
2way
Exstart(exchange start)
exchange
loading
full
2、同步数据库
LSA-link state advertisement , 链路状态通告;
3、计算路由表(通过SPF算法,对LSA进行计算,从而获得最终的路由条目)
-OSPF报文:
hello:
dbd:database description ,数据库描述报文;
lsu:link state update ,链路状态更新报文;
lsr:link state request ,链路状态请求报文;
lsack:link state ack ,链路状态确认报文;
-OSPF相关命令:
0、建立测试端口:
[R1]interface loopback 0
[R1-loopback0]ip address 10.10.1.1 255.255.255.0
[R2]interface loopback 0
[R2-loopback0]ip address 10.10.2.2 255.255.255.0
1、配置OSPF
[R1]ospf [process-id] // 不写的话,默认是1;
[R1-ospf-1] area 0 // 进入区域0;
[R1-ospf-1-area-0.0.0.0] network 192.168.12.1 0.0.0.0
//精确宣告 192.168.12.1所在的链路
进入 OSPF 区域0;
那么 gi0/0/0,则启用 OSPF 1 :
#可以发送 ospf 1 的包;
#可以接收 ospf 1 的包;
#可以将该端口的IP地址中的
网络部分,放入 OSPF 1 的包;
中,传输出去,给邻接路由器。
2、验证
display ospf [1] peer brief //查看OSPF邻居表的简要信息;
display ospf [1] peer //查看OSPF邻居表的详细信息;
display ospf [1] brief //查看本地设备上的 OSPF 1 的相关信息;
display ip routing-table //查看路由表中的OSPF路由
(确定路由的类型和属性)
=================================================================
OSPF邻居建立影响因素:
1、确保最小范围内链路是互相 Ping通 的;(交换)
R1:Ping R2 ;
R2:Ping R1 ;
2、确保设备端口可以发送报文;
#network要宣告正确的网络范围;
#确保接收OSPF报文的端口不能是“被动端口- silent-interface”
(华为设备上的 OSPF 的 silent-interface , 既不能发,也不能收包)
ospf 1
silent-interface gi0/0/0
3、确保设备端口可以接收报文;
#network要宣告正确的网络范围;
#确保 ACL 是允许 OSPF 流量的;
#确保接收OSPF报文的端口不能是“被动端口- silent-interface”
(华为设备上的 OSPF 的 silent-interface , 既不能发,也不能收包)
R1:
acl name Deny-OSPF advance
rule 5 deny ospf source 192.168.12.2 0.0.0.0
destination 224.0.0.5 0.0.0.0
interface gi0/0/0
traffic-filter inbound acl name Deny-OSPF
4、确保 OSPF Hello 包中的关键参数一致;【比较hello中的参数】
# 直接建立邻居关系的路由器,RID一定不能相同;
[R1]ospf 1 router-id x.x.x.x // 指定 OSPF 1 使用的 RID
# 区域ID必须相同;
[R1]ospf 1
[R1-OSPF-1]area 0
[R1-OSPF-1-area-0.0.0.0]undo network 192.168.12.1 0.0.0.0
[R1-OSPF-1]undo area 0
[R1-OSPF-1]area 1
[R1-OSPF-1-area-1]network 192.168.12.1 0.0.0.0
# 认证必须成功;
# 子网掩码必须得相同(特殊情况下)
# hello 时间,必须相同;
[R1]interface gi0/0/0
[R1-gi0/0/0]ospf timer hello 20 // 更改hello时,dead跟随变化
之间倍数关系是 4 倍;
# dead 时间,也必须相同;
[R1]interface gi0/0/0
[R1-gi0/0/0]ospf timer dead 41 //更改dead时,hello不变;
# 特殊标记位,必须完全相同;
# DR优先级,不能全为0;(特殊情况下)
[R1]interface gi0/0/0
[R1-gi0/0/0]ospf dr-priority 0
# 3层MTU,必须完全相同;
验证命令:
display ospf peer brief //查看 OSPF 的邻居表
display ospf interface gi0/0/0 //查看OSPF的接口;
----------------------------------------------------------------
注意:
ACL对设备本身发起的流量,是不起作用的。
ACL对设备的穿越流量,是起作用的。