OSPF Open shortest path First
特征:
链路状态协议
基于IP协议,协议号 89
所有的路由器使用组播地址224.0.0.5 还有224.0.0.6 – DR
或单播地址
OSPF 默认路由优先级:
Route Preference: 10 区域内或区域间
ASE Route Preference: 150 外部路由(引入的路由)
三张表:
1.邻居表
邻居关系:
若两台路由器能用同一种路由协议交换路由信息,则两者互为邻居。
邻接关系:
若两台路由器都将对方识别为邻居路由器,并判定己方同样为对方所识别,且经过验证,双方可以“畅通无阻”地交换路由信息,则两台路由器建立邻接关系。
在OSPF网络中,为了交换路由信息,邻居设备之间首先要建立邻接关系,邻居(Neighbors)关系和邻接(Adjacencies)关系是两个不同的概念。
邻居关系:OSPF设备启动后,会通过OSPF接口向外发送Hello报文,收到Hello报文的OSPF设备会检查报文中所定义的参数,如果双方一致就会形成邻居关系,两端设备互为邻居。
邻接关系:形成邻居关系后,如果两端设备成功交换DD报文和LSA,才建立邻接关系。
display ospf peer brief
2.链路状态数据库 LSDB
display ospf lsdb
3.路由表
]display ospf routing
===============================================
OSPF 区域概念:骨干区域和非骨干区域
1.推荐OSPF 必须存在区域0 骨干区域
2.区域内描述的是详细的拓扑信息,详细的描述拓扑结构的链路状态信息。
区域间传递的是抽象的路由信息。
原则:
1.所有的非骨干区域必须与骨干区域相连
2.骨干区域不能被分割
为了避免区域间路由环路,非骨干区域之间不允许直接相互发布区域间路由信息。
路由器的角色:
内部路由器(Internal Router):
内部路由器是指所有所连接的网段都在一个区域的路由器。属于同一个区域的IR维护相同的LSDB。
区域边界路由器(Area Border Router):
区域边界路由器是指连接到多个区域的路由器。ABR为每一个所连接的区域维护一个LSDB。
骨干路由器(Backbone Router):
骨干路由器是指至少有一个端口(或者虚连接)连接到骨干区域的路由器。包括所有的ABR和所有端口都在骨干区域的路由器。
AS边界路由器(AS Boundary Router):
AS边界路由器是指和其他AS中的路由器交换路由信息的路由器,这种路由器向整个AS通告AS外部路
ABR(区域边界路由器),需要满足以下三个条件才能成为一台真正意义上的ABR:
1、至少连接两个区域
2、连接的区域中有一个是区域0(骨干区域),至少有一个接口属于区域0
3、在区域0中至少有一个活跃的邻居
ASBR:引入外部路由协议的路由器 (产生5类LSA的路由器)
OSPF配置:
配置方法:
1.区域宣告
ospf 1 //进程ID,本地有效,如果直接回车,默认创建进程ID 为 1
area 0.0.0.0 //使能区域0
network 11.1.1.1 0.0.0.0 //network作用,该接口使能OSPF协议,且把该接口宣告进OSPF协议中
network 12.1.1.0 0.0.0.255 //宣告一个网段地址。推荐:只宣告某个接口的主机地址,不是宣告一个网段
2.接口宣告
ospf 1
area 0.0.0.0
area 0.0.0.1
interface GigabitEthernet0/0/1
ip address 10.1.1.3 255.255.255.0
ospf enable 1 area 0.0.0.1 //前期条件,OSPF进程下存在该区域number
[AR2]dis ospf int //查看使能OSPF接口
[AR2]dis ospf peer brief //查看OSPF邻居关系
[AR2]dis ospf lsdb //查看OSPF链路状态数据库 LSDB
[AR2]dis ospf brief
===============================================
router-id
作用:1.在网络中标识自己 2.虚连接 会用router-id
router-id 要保证在每个OSPF进程中全网唯一。
选举原则:
1.优先选择手工配置的 (推荐方法)
2.如果没有手工指定router-id,优先使用环回口地址,如果有多个环回口地址,选择环回口地址大的
3.如果没有环回口地址,使用物理接口地址,优选物理接口地址大的
router-id配置方法:
1.路由管理中的配置
[AR1]router id 111.1.1.1 //如果没有手工指定router-id,该路由器中所有的动态路由协议都使用该地址作为协议的router-id
Info: Router ID has been modified, please reset the relative protocols manually to update the Router ID.
2.ospf 1 router-id 111.1.1.1 //指定OSPF进程中的router-id
Info: The configuration succeeded. You need to restart the OSPF process to validate the new router ID.
注意:手工指定router-id以后,一定要重启OSPF进程
reset ospf process
Warning: The OSPF process will be reset. Continue? [Y/N]:y
===============================================
影响OSPF建立邻居的条件:
1.router id --------header packet
同一个区域相邻的设备router-id不能相同
同一个区域不相邻的设备,router-id可以相同,但是会影响路由的接收
不同的区域,不相邻的设备,router-id可以相同,也不会影响路由的接收
2.区域ID —header packet
直连的接口区域ID一定要相同
dis ospf error
1 : Bad area id
3.掩码
默认情况下以太链路(网络类型为broadcast)掩码长度必须相同
默认情况下串行链路掩码长度可以不同 或者(网络类型为P2P链路掩码长度可以不同)
网络类型P2MP,掩码长度必须相同,(也可以不相同,但是必须通过OSPF P2MP-netmask-ignore忽略对网络掩码的检查)
interface Serial4/0/1
ospf network-type p2mp //修改OSPF网络类型为P2MP
ospf p2mp-mask-ignore //忽略对网络掩码的检查
dis ospf error
HELLO packet errors:
8 : Netmask mismatch
4.hello 及dead time 必须相同
不同的OSPF的网络类型hello time 和dead time时间不一样
默认情况下,dead time 是hello时间的4倍
当修改hello time,dead time会自动发生变化
如果只修改dead time,hello time不会自动发生变化
interface Serial4/0/1
ospf timer hello 15 //修改hello时间15s
ospf timer dead 45 //修改dead 时间45s
[AR1]dis ospf int s4/0/1
5.认证
6.option 选项 E/N位
7.MTU值 DD报文
华为设备默认是不检测MTU的,可以通过命令配置检测MTU(思科设备默认是检测MTU)
如果MTU不一致,会卡在什么状态
如果从设备的MTU小于主设备的MTU,两端都会卡在Estart状态
[AR1]int g0/0/0
[AR1-GigabitEthernet0/0/0]ospf mtu-enable 开启MTU检测
8.silent-interface 禁止接收和发送OSPF报文
一般配置在连接终端的接口,不会影响路由的通告
注意:千万不要配置在路由器之间相连的接口
配置:
ospf 1 router-id 11.1.1.1
silent-interface all //所有使能OSPF的接口都会被变成静默接口
undo silent-interface Serial4/0/1 //排除S4/0/1接口
9.过滤 OSPF报文
acl number 3000
rule 10 deny ip
interface Serial4/0/1
traffic-filter inbound acl 3000 //接口调用ACL
10.NBMA
单播指定邻居
==============================================
OSPF 网络类型:
网络类型: OSPF网络类型
以太网链路 ----广播
串行链路 ----P2P
帧中继链路 ----NBMA
注意:
P2P—broadcast 可以建立邻居关系,但是学不到路由
===============================================
OSPF cost计算
cost =100M参考带宽/接口的物理带宽 bandwidth
cost的总和=计算去往目的地沿途数据层面出方向接口的总和
或者控制层面的入方向
数据层面:数据业务的访问层面
控制层面:路由更新,策略的层面
ECMP 路由负载
配置1:
interface Serial4/0/1
ospf cost 1 //修改OSPF cost值为1
配置2:
ospf 1 router-id 11.1.1.1 设置通过公式计算接口开销所依据的带宽参考值。
bandwidth-reference 1000 //修改参考带宽
1.路由选择
(1)最长匹配原则
(2)从相同协议学到相同的路由前缀和掩码的时候,比较metric值,metric值越小越优先
(3)从不同的协议学到相同的路由前缀和掩码时候,比较优先级,优先级越小越优先
==============================================
OSPF报文类型:
1、Hello报文:建立和发现邻居 维护OSPF的邻居关系
2、DBD报文:用于描述LSDB的摘要信息
3、LSR:用于向对方请求所需的具体的LSA信息
4、LSUpdate 更新报文:用于向对方发送具体的LSA
5、LSACK:用来对收到的LSA的确认
LSA link-state advertisement 链路状态通告 不是数据包
=============================================
ospf建立邻居的过程:
1.DOWN 表示没有从邻居收到Hello信息。在NBMA网络中仍然使用较低的频率向down状态的邻居发送Hello报文
2.Atempt(NBMA环境):没有从邻居收到Hello报文,但是仍然需要进一步尝试,用于邻居联系,这时按poll interval向外发送hello报文
3.Init:在此状态,表示了hello报文,但是报文中没有看到自己的router ID,
4.two-way:表明收到邻居的Hello 报文,报文中包含自己的router id,进入2-way,双方同时进入two-way表明邻居关系的建立
5.exstart
开始发送DD报文,此时只发送包含router-ID的DD报文,用于选举Master/Slave ,在此状态下选举 router-id大的成为master
由Master来决定发送DD报文,来决定DD序列号
I位为1 表明开始协商 DD报文
M位为1 表明不是ospf router 发送最后一个包,M位为0,表明是OSPF路由器发送的最后一个包
M/S为1 表明为master 主从关系协商
在华为设备里面,默认不会检查MTU值,默认为0
DD报文通过序列号进行隐式确认
6.exchange 交互真实的DBD报文
7.loading交互LSU,LSR及LSAck
8.full 计算完毕
===============================================
DR和BDR选举:
作用:减少邻接关系,降低OSPF 协议流量
在MA网络中,才会涉及DR和BDR的选举
DR是基于链路的,基于接口的,而不是基于路由器
224.0.0.5 —ALLospfrouter
224.0.0.6 —DRrouter & BDR
DR 指定路由器
BDR 备份指定路由器 为了防止DR挂掉,起到备份作用。当DR挂掉时候,BDR成为DR
Drother 普通路由器
DR和所有的路由器建立邻接关系
DR和BDR选举原则:
前提条件 在选举期内 默认时间为40s waiting time等于hold time时间
1.先选BDR,然后才选DR
2.选DR 接口的优先级越大越优先,默认为1 优先级范围(0-255)如果优先级为0,放弃选举,成为DRother Drohter之间处于two-way
3.如果优先级相同,则比较router-id大,越大越优先
4.选举期结束以后,DR不能被抢占
5.DR失效,则BDR成为DR
===============================================
手工指定邻居关系
ospf 1 router-id 11.1.1.1
peer 21.1.1.2 //指定对端的接口IP地址
==============================================
OSPF LSA
1.LS seq 序列号越大,该LSA越新
2.LS age 越小越新
刷新时间 30分钟 1800s
max-age 1个小时 3600s
OSPF不能够删除不是自己生成的LSA(这条LSA有誰生成的,由删除)
LSA—链路状态通告
Router-LSA
1类LSA 传播范围 本区域内不能穿越ABR 通告者 网络中每个路由器 包含的内容 拓扑信息,路由信息 掩码 metric Link state-ID 路由器的RID ADV-router每个路由的RID
一条Router-LSA可以描述多条链接,每条链接描述信息由Link ID,Data,Link Type和Metric组成,其关键字含义如下:
Type:链接类型(并非OSPF定义的四种网络类型),Router LSA描述的链接类型主要有:
Point-to-Point:描述一个从本路由器到邻居路由器之间的点到点链接,属于拓扑信息。
TransNet:描述一个从本路由器到一个Transit网段(例如MA网段或者NBMA网段)的链接,属于拓扑信息。
StubNet:描述一个从本路由器到一个Stub网段(例如Loopback接口)的链接,属于路由信息
Point-to-Point
如果点到点链路 : 拓扑信息
link-id :邻居的router-id
Data : 宣告该router LSA的接口ip地址,也就是自身的接口IP地址
Link Type: P-2-P
Metric : 1
TransNet
如果MA链路:拓扑信息
link-id :DR的接口IP地址
Data:宣告该router LSA的接口ip地址,也就是自身的接口IP地址
Link Type: TransNet
Metric : 1 表示到达DR的开销值
P2P 描述的连接中包含路由信息携带网络号及掩码
TransNet描述的链接中仅包括与DR的连接关系及开销,没有网络号/掩码及共享链路上其他路由器的任何信息。
dis ospf abr-asbr //查看路由器的角色
dis ospf lsdb router //查看1类LSA
dis ospf lsdb network 172.16.10.7 查看二类LSA(Network LSA)
============================================
二类LSA 传播范围 (存在DR的环境)本区域内不能穿越ABR 通告者MA网络DR 包含的内容纯拓扑信息,包含了该MA网段直连的所有路由器的RID信息,该MA网段的掩码 Link state-ID DR的接口IP地址 ADV-router DR的RID
1.SPF算法
(1)构建 SPF树
根据1类中的P2P,transnet 和2类LSA中的拓扑信息,构建SPF树干
(2)计算最优的路由
根据SPF树干及1类LSA中的Stubnet及2类LSA,计算出最短的路径
=============================================
三类LSA summary LSA
3类LSA 传播范围 除了该区域外的整个OSPF区域 通告者ABR 包含的内容前缀信息 掩码 cost值 3类LSA的前缀信息 Link state-ID ABR的RID, ADV-router跨区域以后ABR会重新生成
3类LSA中的 cost值是ABR到达目标网段的距离
dis ospf lsdb summary 77.77.77.0 查看三类lsa
3类LSA的过滤: 通告者是ABR
第一种方法:
通过前缀列表进行匹配路由
acl —只能够匹配前缀,不能够匹配掩码
前缀列表 —可以匹配前缀,也可以匹配掩码
需求:过滤44.1.1.1/32的三类LSA,放行其他
ip ip-prefix 44 index 10 deny 44.1.1.1 32 //拒绝44.1.1.1/32
ip ip-prefix 44 index 20 permit 0.0.0.0 0 less-equal 32 //允许其他路由
ospf 1 router-id 22.1.1.1
area 0.0.0.0
filter ip-prefix 44 import //匹配到的前缀信息,不允许进入区域0
或者:
area 0.0.0.1
filter ip-prefix 44 export //匹配到的前缀信息,不允许离开区域1
第二种方法:
interface GigabitEthernet0/0/0
ospf filter-lsa-out summary //对OSPF接口出方向的3类LSA进行过滤
===============================================
为防止区域间的环路OSPF定义了骨干区域和非骨干区域和三类LSA的传递规则。
1、OSPF划分了骨干区域和非骨干区域,所有非骨干区域均直接和骨干区域相连且骨干区域只有一个,非骨干区域之间的通信都要通过骨干区域中转,骨干区域ID固定为0。骨干区域不能被分割。
2、OSPF规定从骨干区域传来的三类LSA不再传回骨干区域。
3、OSPF要求ABR设备至少有一个接口属于骨干区域
4、从非骨干区域接收到的3类LSA,ABR能接收到,但不会使用这条3类LSA
真假ABR的问题
真ABR 在骨干区域有邻居,满足 ABR从非骨干区域接收到的三类LSA只接收不选路
假ABR 在骨干区域没有邻居, 不满足
===============================================
5类LSA
5类LSA 传播范围整个区域内,除了特殊区域 通告者 ASBR 包含的内容 FA地址 cost值 掩码 TAG等 Ls-ID 外部路由的前缀 ADV-rtr ASBR RID(不变)
域外的路由 :
ospf 1 router-id 55.1.1.1
import-route static //把路由表中存在的静态路由,引入到OSPF协议的数据库中
作用:用于描述如何从ASBR到达外部目的地
dis ospf lsdb ase 6.6.6.6 查看五类lsa
cost值 :默认为1.描述ASBR到达目的外部路由的cost值
type: 默认为2,不会将ospf域内的cost值进行累加
tag值: 默认为1,主要用于路由策略
FA地址:默认为0.0.0.0 ,也会存在非0.0.0.0 的情况
4类LSA 传播范围 除了ASBR所在区域之外的整个区域 通告者ASBR所处区域的ABR设备 包含的内容纯拓扑信息 cost值 Link state-IDASBR的RID ADV-router通告者ABR RID(每穿越一个区域,ABR会重新生成)
cost值:ABR到达ASBR的cost值
作用:用于描述如何从ABR到达ASBR
[AR1]display ospf lsdb asbr self-originate 查看4类LSA
ospf 1 router-id 55.1.1.1
import-route static cost 100 type 1 tag 666 //修改外部路由的外部开销值为100,type为1,tag为666
area 0.0.0.2
type2 = 外销开销值 (不累加,默认)
type1 = 外部开销值+ 内部开销值
===============================================
OSPF路由的选路原则:
1.区域内 > 区域之间 > type 1 > type 2
2.type1 = 外部开销值+ 内部开销值 .cost值越小越优先
如果cost值相同,来自于同一个区域,则路由负载。
3.type2 = 外销开销值 (不累加,默认)
先比较外部开销值,cost值越小越优先。
如果外部开销值相同,则比较内部开销值,cost值越小越优先。
如果内部开销值也相同,则比较区域号ID大的。
如果来自于同一个区域,则路由负载。
负载的条件:
1.cost值一致。 2.区域一致。
===============================================
FA地址:作用为了解决次优路由,防环
FA地址:默认为0.0.0.0 ,也会存在非0.0.0.0 的情况
首先检查type5 LSA的FA地址是否为0.
如果为0,说明路由必须经过ASBR转发,那么就要优先选择到达ASBR metric 最短路径的。
如果FA非0.那么优选到FA地址metric值最短的路径,而且到FA的路由必须为域内或域间的,否则外部路由无法装载进路由表中。
五类和七类LSA FA地址
五类需要满足条件才会携带FA地址
七类始终会携带FA地址
===============================================
OSPF 汇总:
域间汇总: 针对3类LSA的汇总 只能在ABR上进行汇总
只通告汇总的路由,不通告明细
R2: ABR
ospf 1 router-id 22.1.1.1
area 0.0.0.1
abr-summary 172.16.0.0 255.255.252.0 //注意区域,想汇总的明细来自于哪个区域,就进入哪个区域进行汇总
3类LSA过滤:
area 0.0.0.1
abr-summary 172.16.0.0 255.255.252.0 not-advertise //汇总以后,不通告该3类LSA的汇总
域外汇总: 针对外部路由的汇总,针对5类LSA,只能在ASBR上进行汇总
R5: ASBR
ospf 1 router-id 55.1.1.1
asbr-summary 192.168.0.0 255.255.0.0 //针对外部路由进行汇总,汇总默认的cost值等于自身cost值1加上外部引入的cost值1
asbr-summary 192.168.0.0 255.255.0.0 cost 5 //手工设置汇总以后的cost值
5类LSA的过滤:
asbr-summary 192.168.0.0 255.255.0.0 not-advertise //外部路由汇总以后,不通告
===============================================
OSPF 默认路由:
默认情况,在OSPF协议中,不能把0.0.0.0/0的静态默认路由,通过外部引入的方式引入到OSPF区域中
default-route-advertise,默认情况下不会产生默认路由
前提条件:该路由表中必须有默认路由,才会产生一条5类LSA的0.0.0.0/0 默认路由
ip route-static 0.0.0.0 0.0.0.0 null 0 //在现网中,默认路由的下一跳,写真实的接口IP地址
ospf 1 router-id 55.1.1.1
default-route-advertise //下发默认路由,
default-route-advertise always //always参数,不管路由表中是否存在默认路由,自身都会产生一条5类LSA的0.0.0.0/0默认路由 ,推荐做法
efault-route-advertise always cost 10 //设置下发默认路由的cost值为10
===============================================
虚连接:逻辑上属于区域0
注意:当区域0做认证时候,虚连接也必须使能认证。
应用的场景 :
1.远离区域0
2.分割区域0
3.不存在骨干区域,只有非骨干区域之间相连的情况
4.为了备份,防止区域0被分割
配置:
R6:
ospf 1 router-id 66.1.1.1
area 0.0.0.26 //传输区域
vlink-peer 22.1.1.1 //指对方设备的router-id,不是接口IP地址
[AR6]dis ospf vlink
Virtual-link Neighbor-id -> 22.1.1.1, Neighbor-State: Full //邻居状态一定要FULL,虚连接邻居建立成功
===============================================
特殊区域
option选项 —hello报文
默认情况下,E位为1 --可以接收外部路由的
E位为0,N位为0 ----stub区域
E位为0,N位为1 ----NSSA区域
1.stub区域
过滤4类,5类LSA,存在1类、2类、3类LSA
由stub区域的ABR设备产生一条3类LSA 0.0.0.0/0的默认路由,发布给stub区域中的其他路由器
配置:特殊区域的所有设备都要配置
ospf
area 0.0.0.2
stub //把区域2设置为stub区域
2.totally stub区域
过滤3类、4类、5类LSA,只存在1类、2类LSA
由stub区域的ABR设备产生一条3类LSA 0.0.0.0/0的默认路由,发布给stub区域中的其他路由器
配置:特殊区域的所有设备都要配置
ospf
area 0.0.0.2
stub no-summary //把区域2设置为stub区域,stub 区域的ABR上配置就可以
3.NSSA Not-so-stub-area
过滤4类,5类LSA,由NSSA区域的ABR设备产生一条7类LSA O N2 0.0.0.0/0的默认路由
本NSSA区域的路由器可以拥有ASBR,可以引入外部路由,该外部路由以7类LSA的形式在NSSA区域中存在。
由NSSA区域的ABR路由器将7类LSA转换成5类LSA,如果有多个ABR,router-id大的ABR成为转发者路由器。
配置:属于nssa区域的所有设备都需要配置
ospf 1 router-id 55.1.1.1
area 0.0.0.2
nssa //把区域2设置为nssa区域
ospf 1 router-id 11.1.1.1
nssa translator-always //强制指定R1作为转发者
参数:no-import-route //NSSA区域中的路由器,不允许引入外部路由
4.totally NSSA 区域
过滤3类、4类,5类LSA,由NSSA区域的ABR设备产生一条3类LSA 0.0.0.0/0的默认路由
配置:属于nssa区域的ABR设备需要配置
ospf 1 router-id 11.1.1.1
area 0.0.0.2
nssa no-summary //把区域2设置为totally nssa区域
七类LSA:NSSALSA
[AR1]dis ospf lsdb nssa 88.1.1.0
===============================================
OSPF认证:在OSPF header 包头格式中
认证的类型:
1.null --type=0
2.明文 —type=1
3.密文 --type=2
接口认证及区域认证:
接口认证优于区域认证
接口认证:
明文认证:
interface GigabitEthernet0/0/0
ip address 24.1.1.4 255.255.255.0
ospf authentication-mode simple cipher huawei
密文认证:
interface GigabitEthernet0/0/0
ospf authentication-mode md5 1 cipher huawei
区域认证:
如果区域使能认证,该区域下的接口都使能认证
明文认证:
ospf 1 router-id 22.1.1.1
area 0.0.0.1
authentication-mode simple cipher huawei
密文认证:
ospf 1 router-id 22.1.1.1
area 0.0.0.1
authentication-mode md5 1 cipher huawei
注意:
如果区域0认证,存在虚链路时,虚链路也要进行认证
===============================================
MTU值 最大传输单元 1500
MRU 最大接收单元
默认情况下,华为设备是不协商MTU值,忽略检查该值。
在DD报文中,华为设备不协商MTU值,默认为0
如果强制协商MTU值,MTU不匹配时候,ospf邻居状态卡在exstart或者exchange状态
interface GigabitEthernet0/0/0
mtu 1400
ip address 24.1.1.2 255.255.255.0
ospf mtu-enable //强制检查DD报文中的MTU值
==============================================
OSPFv3
基本配置:
ospfv3 1
router-id 11.1.1.1
area 0
interface GigabitEthernet0/0/1
ipv6 enable
ipv6 address auto link-local //使用链路本地地址即可建立邻居
ospfv3 1 area 0.0.0.0 //启动OSPFv3的区域0
interface LoopBack0
ipv6 enable
ipv6 address 2011::1/128 //用于数据转发的全局单播地址
ospfv3 1 area 0.0.0.0
dis ospfv peer //查看邻居表
OSPFv3 Process (1)
OSPFv3 Area (0.0.0.2)
Neighbor ID Pri State Dead Time Interface Instance ID
66.1.1.1 1 Full/DR 00:00:33 GE0/0/2 0