OSPF无环:
区域内通过SPF算法
区域见通过骨干区域,非骨干之间的路由信息一定通过骨干区域传递
[Huawei]dis ospf inter g0/0/1 查看链路cost
[Huawei]ospf 1
[Huawei-ospf-1]bandwidth-reference 1000 默认是100M
[R1]ospf router-id 1.1.1.1
[Huawei]dis ospf peer br
[Huawei]dis ospf peer
[Huawei]dis ospf lsdb
[Huawei]dis ospf lsdb router
[Huawei]dis ospf routing
[Huawei]dis ip routing-table
[Huawei]dis ip routing-table protocol ospf
抓包类型 | 数据包名称 | 说明 |
---|---|---|
1 | Hello | 发现邻居并与其建立相邻关系 |
2 | 数据库说明(DBD) | 在路由器间检查数据库同步情况 |
3 | 链路状态请求(LSR) | 由一台路由器发往另一台路由器,请求特定的链路状态记录 |
4 | 链路状态更新(LSU) | 发送所请求的特定链路状态记录 |
5 | 链路状态确认(LSAck) | 确认 |
hello:发现、维持邻居(10s,30s),选举DR、BDR
DBD:选举主从(RID大的为主设备,RID小的为从设备):确定序列号,确保数据可靠性,第一个发送LSA摘要的是从发出来的
宣告LSA的摘要(头部)信息
LSR:请求LSA
LSU:发送LSA
LSACK:确认LSA
状态 | 描述 |
---|---|
Down | 在Dead时间内没有收到Hello包 |
INIT | 收到Hello包,如果邻居的Hello包里没有我的rooter-id,我就置为初始化状态 |
Two-way | 收到Hello,在里面发现了自己的rooter-id,说明邻居也收到了我的Hello包,双向状态,这时候该选举DR和BDR了,进行选举 |
Exstart | DR和BDR选举结束(①接口优先级大②rooter-id大),现在该进行主从选举了(rooter-id大),发送第一类空DBD报文,选举主从(其实谁主谁从并不重要),主路由器可以优先发送DBD报文 |
Exchange | 交换第二类DBD报文 |
Loading | 交换路由信息,LSR、LSU和LSAck增量更新 |
Full | 同步完成 |
注:
DROther之间仅形成Two-way状态就结束了
点对点链路不用选择DR、BDR,所以跳过Two-way状态
Attempt: 只适用于NBMA类型接口,处于本状态时,定期向那些手工配置的邻居发送HELLO包
没看到状态变化信息怎么办?再来一次
进程重启:
断电重启:inter g0/0/0 shut 再 unshut
OSPF邻居状态:我认为我的邻居此时此刻是什么状态
DOWN:刚启动OSPF的时候,还没有收到对方的Hello报文
INIT:收到了对方的HELLO报文,但是HELLO里面不包含自己
ATTEMPT:NBMA,现网看不到了
2-WAY:收到了对方的HELLO报文,HELLO里面包含自己
完成DR、BDR的选举
Exstart:DBD(不带LSA头部信息)选举主从,确定序列号,保证可靠性
Exchange:进行DBD(带LSA头部信息)报文的交互,可能同时有LSA更新的交互
loading:继续加载LSA
FULL:LAS交互完成
形象比喻:
张三 李四
hello
DBD 选举主从
(exstart状态)
–>seq:007
<-- seq:117 对比routerID得:张三是主李四是从
.-----------------------------------------
(exchange状态)
**–>123seq:007
<-- 12456seq:007 **
.-----------------------------------------
(loading状态)
–>seq:008 LSR:请求456给我
<–seq:008 LSR:请求3给我
注意:
DR与 BDR、DROther 建立FULL,需要主从关系
DROther 之间:2-Way,不需要主从
1.验证:不通路由器配置不同的OSPF进程 -->可以✔
2.验证:BMA(广播多路访问)网络,掩码不一样,但互相包容 -->不可以✖掩码必须一样
10.1.1.2/24和10.1.1.2/30(可识别10.1.1.0到10.1.1.3)
3.验证:P2P网络,掩码不一样,但互相包容 -->可以✔掩码包容对方地址就可以
4.验证:接口hello计时器不一致 -->不可以✖计时器hello必须一样
[R1]dis ospf interface g0/0/0
[R1]inter g0/0/0
[R1-GigabitEthernet0/0/0]ospf timer hello 20
5.验证:接口dead计时器不一致 -->不可以✖计时器dead必须一样
[R1]inter g0/0/0
[R1-GigabitEthernet0/0/0]ospf timer dead 80
6.验证:直连邻居的Rooter-id相同 -->不可以✖
7.验证:非直连邻居的Rooter-id相同(单区域) -->不可以✖
但过一段时间,会自动更改一个路由器OSPF的Rooter-id,使此区域可以通信,但配置命令还在
8.验证:非直连邻居的Rooter-id相同(多区域) -->可以,不在同一区域Rooter-id也可以
种子度量值:各协议引入其他协议缺省度量值:
其他路由协议–>RIP:华为0
其他路由协议–>OSPF:华为1
其他路由协议–>BGP:原来路由所带的花销值
[R2]ospf 1
[R2-ospf-1]import-route rip 默认cost全部都是1
[R2-ospf-1]import-route rip type 1累加 RIP cost内部成本
[R2-ospf-1]import-route rip type 1 cost 2 cost跳数再加2
[R2-ospf-1]import-route rip type 1 cost 2 tag 88 打上88标记
[R1]dis ospf routing
[R2]rip
[R2-rip-1]import-route ospf
[R2-rip-1]import-route ospf cost 2
[R3]dis ip routing-table protocol rip
[R1]ping -a 10.1.1.1 30.1.1.1 通
问题:
[R1]ospf 1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]undo net 10.1.0.0 0.0.255.255
[R1-ospf-1-area-0.0.0.0]net 10.1.1.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]q
[R1-ospf-1]import-route direct
[R1-ospf-1]q
[R2]dis ospf routing
想让宣告的网段就不要Direct重分发了
[R1]inter lo 0
[R1-LoopBack0]ospf network-type broadcast
[R1]ospf 1
[R1-ospf-1]area 1
[R1-ospf-1-area-0.0.0.1]abr-summary 10.1.0.0 255.255.0.0 掩码
防环机制:丢弃
[R1]ip route-static 10.1.0.0 16 NULL 0 preference 9 比静态路由优先级60大就行
参数:
[R1]inter lo 0
[R1-LoopBack0]ospf cost 11
[R2]dis ospf routing 变成cost=12 ,用lo最大的
[R1]ospf 1
[R1-ospf-1]area 1
[R1-ospf-1-area-0.0.0.1]abr-summary 10.1.0.0 255.255.0.0 cost 22
[R2]dis ospf routing 变成cost=23 ,用lo最大的
[R1-ospf-1-area-0.0.0.1]abr-summary 10.1.0.0 255.255.0.0 cost 22 not-advertise 不通告,隔离
[R2]dis ospf routing 没有10.1.0.0网段了
[R2]ospf 1
[R2-ospf-1]asbr-summary 30.1.0.0 255.255.0.0
[R2-ospf-1]q
[R2]ip route-static 30.1.0.0 16 Null 0 preference 9
参数:
[R2-ospf-1]asbr-summary 30.1.0.0 255.255.0.0 cost 20 tag 88
实验思考:
1.为什么OSPF不能实现区域内路由汇总?
不能,区域内的LSDB需要同步,汇总后数据局不同了
2.区域间路由汇总是否可以在任意的ABR上实施?
只能在自己的/第一个ABR上做
1.Stub:末梢区域:不要45类LSA,允许123类,自动产生3类默认路由
2.Totally Stub 完全末梢区域:不要345类LSA,允许12类,自动产生3类默认路由
3.NSSA:不那么末梢的区域:不要45类LSA,允许1237类,自动产生7类默认路由
4.Totally NSSA :完全不那么末梢的区域:不要345类LSA,允许1237类,自动产生3类和7类默认路由,但优先选择3类默认路由
ospf路由优先级:内部路由>区域间路由>外部路由type1>外部路由type2>外部路由NSSAtype1>外部路由NSSAtype2
末梢区域:减少LSA,减小LSDB,减小了路由表
网络ISP — 主路由器 —(我的路由器—交换机—PC) 、
这一部分就叫做末梢区域,可以在我的路由器上配置默认路由,流量全部给主路由器
这样可以让末梢区域的路由更精简一点
区域类型 | 被隔离的路由类型 |
---|---|
Normal | 无 |
Stub | 外部路由 |
Totally Stub | 外部和域间路由 |
NSSA | 外部路由,内部可以引入传递到外部 |
Totally NSSA | 外部和域间路由,内部可以引入传递到外部 |
[R1]ospf
[R1-ospf-1]area 1
[R1-ospf-1-area-0.0.0.1]stub
[R2]ospf
[R2-ospf-1]area 1
[R2-ospf-1-area-0.0.0.1]stub
[R1]dis ospf rou
Totally Stub:area 0的路由隔离掉了
在ABR上:[R2-ospf-1-area-0.0.0.1]stub no-summary
[R1]dis ospf rou
[R1]ospf 1
[R1-ospf-1]import-route direct
[R2]dis ospf routing 并不能引入
外部路由进不来,内部引入的路由也不能出去
NSSA:外部进不来,但内部引入能出去
[R1]ospf
[R1-ospf-1]undo import-route direct
[R1-ospf-1]area 1
[R1-ospf-1-area-0.0.0.1]undo stub
[R2]ospf
[R2-ospf-1]area 1
[R2-ospf-1-area-0.0.0.1]undo stub
[R1]ospf
[R1-ospf-1]area 1
[R1-ospf-1-area-0.0.0.1]nssa
[R2]ospf
[R2-ospf-1]area 1
[R2-ospf-1-area-0.0.0.1]nssa no-summary
[R1]ospf 1
[R1-ospf-1]import-route direct
[R2]dis ospf routing
注意:
在ABR上做
area 0 是主干区域,不能做成末梢区域
虚链路穿过的区域不能作为末梢区域
[R1-ospf-1-area-0.0.0.1]nssa no-import-route 这条命令只能做在ASBR上,传出引入的路由
LSA:
路径信息:
链路类型:P2P、Stub、Transit、vlink(1类LSA)
邻居设备:(2类LSA)
1类:
名称:Router-LsA 路由器LSA
泛洪范围:本区域area
通告者:运行了OSPF的路由器本身
作用:宣告自家路段的网段信息(IP地址、cost)以及路径信息(是不是末梢?点对点还是多路访问)
dis ospf lsdb router self-originate
2类:(多路访问环境才会产生)
名称:NetworkLsA 网络LSA
泛洪范围:本区域area
通告者:DR
作用:宣告多路访问环境的网段信息(掩码)和链路类型(MA网段一共有有哪一些邻居设备)
dis ospf lsdb network self-originate self-originate
LSA Type | 描述 |
---|---|
1 | 路由器LSA |
2 | 网络LSA |
3 | 网络总结LSA |
4 | ASBR总结LSA |
5 | 自治系统外部的LSA |
7 | NSSA转悠的LSA |
[R1]dis ospf lsdb
[R1]dis ospf lsdb router 1类
[R1]dis ospf lsdb network 2类
[R1]dis ospf lsdb nssa 7类
3类:
名称:Network Summary 网络总结LSA
泛洪范围:任意两个,包括area0和郊区
通告者:ABR
作用:描述区域间路由信息,没有路径信息
dis ospf lsdb summary self-originate
为什么要划分区域??
LSDB太大,LSA太多,泛洪交互量大
一台设备挂了或更新了一条链路,每台链路都要更新
划分区域才能做汇总路由,因为192.168.0.0汇总1.0,2.0,3.0,4.0,LSDB就不一样了,这是OSPF所不允许的
5类:
【R1】ospf 1
【R1-ospf-1】import-route rip
名称:External LSA 外部LSA
泛洪范围:整个OSPF
通告者:ASBR
作用:宣告AS外部路由信息,没有路径信息
dis ospf lsdb ase self-originate
次优路径问题:
5类LSA的FA:置为要找的地址
一般情况下,访问外部路由信息必须要经过ASBR转发
这样,R3、R4、R5收到5类LSA就知道,不用根据第4类找ASBR了,直接找FA的地址就行了
4类:
名称:ASBR Summary ASBR汇总LSA
泛洪范围:除ASBR所在区域,因为一类LSA会宣告
通告者:ABR
作用:告诉ASBR的RID,即导航,告诉其他区域ASBR在哪里
dis ospf lsdb asbr self-originate
7类:
名称:NSSA LSA
泛洪范围:只能在本NSSA区域泛洪,由ABR(多个ABR,选RID大的)进行7转5泛洪(7转5的路由器也是ASBR,发5类的都是ASBR)
通告者:ASBR
作用:宣告NSSA区域外部路由信息
dis ospf lsdb nssa self-originate
FA:=ASBR上启用OSPF的接口IP地址:不会等于0
如果lookback接口,FA=LOOKBACK,如果多个Lookback,等于最后一个启用的lo地址
如果没有lo,FA=物理接口,多个物理接口,等于最后一个启用的物理接口
静默接口:
[R1]ospf 1
[R1-ospf-1]silent-interface g0/0/1
[R1]dis ospf br
不宣告:
[R2]ospf 1
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]net 12.1.1.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]q
[R2-ospf-1]im
[R2-ospf-1]import-route direct
[R1]ospf 1
[R1-ospf-1]inter g0/0/0
[R1-GigabitEthernet0/0/0]ospf network-type nbma 接口改为NBMA类型
[R1-GigabitEthernet0/0/0]ospf dr-priority 2 保证R1成为DR
R2,R3也配置成NBMA类型
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]peer 123.1.1.2
[R1-ospf-1]peer 123.1.1.3 手工邻居
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]net 123.1.1.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]net 1.1.1.0 0.0.0.255
R2,R3也进行手工邻居配置和宣告网段
查看:
[R1]dis ospf peer br
[R1]dis ospf routing
区域0分成两块,0可以和1通,0可以和2通,但1和2不通
[R2]ospf 1
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]net 12.1.1.0 0.0.0.255
R2]ospf 2
[R2-ospf-2]area 0
[R2-ospf-2-area-0.0.0.0]net 23.1.1.0 0.0.0.255
又想实现两边通讯:路由引入成外部路由
[R2]ospf 1
[R2-ospf-1]import-route ospf 2
[R2]ospf 2
[R2-ospf-1]import-route ospf 1
虚链路应该在R1R2上打
[R2]ospf
[R2-ospf-1]area 1
[R2-ospf-1-area-0.0.0.1]vlink-peer 1.1.1.1
[R1]ospf
[R1-ospf-1]area 1
[R1-ospf-1-area-0.0.0.1]vlink-peer 12.1.1.2
虚链路还要在R2R4上打
[R2]ospf
[R2-ospf-1]area 2
[R2-ospf-1-area-0.0.0.2]v
[R2-ospf-1-area-0.0.0.2]vlink-peer 34.1.1.2
[R4]ospf
[R4-ospf-1]area 2
[R4-ospf-1-area-0.0.0.2]v
[R4-ospf-1-area-0.0.0.2]vlink-peer 12.1.1.2
[R2]dis ospf vlink
虚链路认证:
[R4-ospf-1-area-0.0.0.2]vlink-peer 12.1.1.2 hmac-md5 1 cipher 123456
思考:
1.两个区域0是否需要做虚链路呢?
2.当非0区域全部直连到区域0时,还有必要做虚链路吗?
有,如果区域1和区域2间有物理链路,可以做一个虚链路作为备用路由
PVC:永久虚链路
SVC:交换虚链路