OSPF
一. 基本知识:
OSPF(Open Shortest Path Fist),开放式最短路径优先,传信机制,目前所使用的为OSPFv2版本,IPV6使用OSPFv3版本,协议优先级为10/150
OSPF依靠IP进行承载,协议号位89。OSPF作为链路状态的协议(Link-state Routing Protocol),具有收敛快、路由无环、扩展性好等优点,被快速接受并广泛使用。
链路状态算法路由协议互相通告的是链路状态信息,每台路由器都将自己的链路状态信息(包含接口的IP地址和子网掩码、网络类型、该链路的开销值等)发送给其它路由器,,并在网络中泛洪,当这台路由器收集到网络内所有的链路状态信息后,就能应有整个网络的拓扑情况,然后通过运行SPF(Shortest Path First)算法,得出所有网段的最短路径。
1. 特点:
① 支持无类域间路由CIDR
② 支持报文的认证
③ 无路由自环
④ 路由变化收敛速度快,触发更新
⑤ 使用组播首发协议数据(DR-other:224.0.0.5/DR:224.0.0.6)
⑥ 支持多条等价路由
⑦ 支持区域划分
(1)支持无类域间路由CIDR:
OSPF路由汇总可以减少LSA的条目,当明细条目消失时,不会形成路由动荡,当所有的明细条目消失后,汇总路由也会消失。与RIP不同,OSPF不支持自动路由聚合,仅支持手动路由聚合。OSPF的路由聚合有两种方式:
① 区域间路由聚合
② 外部路由聚合
① 区域间路由聚合:
在区域边界路由器ABR上进行路由聚合:
[Huawei]ospf
[Huawei-ospf-1]area 1
[Huawei-ospf-1-area-0.0.0.1]abr-summary 1.1.1.0 255.255.255.0-将区域1
的聚合路由发布到其他区域
not-advertise---不通告,即汇总和明细都没有
cost------------修改汇总通告的cost值,默认聚合路由的开销值为0
advertise-------默认为通告
注1:在做区域间路由聚合时,一定要在产生明细路由的区域ABR上做汇总
注2:当明细路由全部消失后,汇总路由也会消失
② 外部路由聚合:
[Huawei]ospf
[Huawei-ospf-1]asbr-summary 1.1.1.0 255.255.255.0----将外部路由聚合
注:外部路由汇总只能在ASBR或NSSA区域7转5的ABR上做路由汇总时,默认的花费为
2
(2)报文认证:
OSPF支持邻居间认证和链路间认证两种方式,认证可以基于明文和md5模式。
① 链路认证:
[Huawei-GigabitEthernet0/0/1]ospf authentication-mode simple Huawei
② 区域认证:
[Huawei-ospf-1-area-0.0.0.0]authentication-mode simple Huawei
注:当同时存在链路认证和区域认证时,链路认证优先
③ V-Link认证:
V-Link属于区域0,所以如果配置了V-Link,并且区域0启用了认证,此时由于V-Link端没有配置认证,此时会造成V-Link down的现象,V-Link认证属于特殊的接口认证
[Huawei-ospf-1-area-0.0.0.1]vlink-peer 1.1.1.1 simple huawei
注:当同时存在V-Link认证和区域认证时,V-Link优先
备注:
V-link配置方法:
- 在R3的area0上配置区域认证
- 在两端的V-Link上配置V-Link认证
④ MD5认证原理:
当OSPF采用MD5认证的时候,OSPF区域认证的头部报文里面会携带以下参数:
① 2Byte的保留位
② 1Byte的Key ID
③ 1Byte的认证数据长度
④ 4Byte的加密序列号
报文的最后携带128bit的哈希值
并不携带密码,摘要信息进行验证,信息摘要附加在OSPF包的后面,不考虑为OSPF包的一部分。认证长度描述了附加在OSPF包后面的信息摘要的长度(128bit==16Byte)
a) 摘要生成过程:
OSPF的MD5摘要是OSPF包(OSPF Header+OSPF payload有效载荷)和Key的计算结果,生成128bit的哈希值,并附加在OSPF报文的后面。
注:密码只是起到一个哈希改变的作用,并不是直接用密码+ID进行哈希,而是使用OSPF报文+Key ID生成哈希,所有的协议都基于此过程进行哈希
b) Key id作用:
- 结合OSPF报文进行哈希的生成,每次增加数值不确定
- 进行平滑过渡,OSPF MD5验证可以在不中断邻居关系的前提下更改密钥,所以可以在OSPF接口上配置多份密钥,每个密钥有一个Key ID(1~255)关联,验证时同时传递多份报文,分别使用不同的Key,接收测根据Key ID在已有的密钥列表中找到对应的Key即可,只有一个Key存在即可,不用所有的密码都存在
c) Data Length:
哈希长度
d) Data:
哈希值,为128bit
e) Sequence Number:
序列号,默认每次发送数据包,序列号都会加1,如果对端收到重复的序列号不会接受,用于防止“报文重放攻击”(anti-replay)。重放攻击是攻击者先从链路上捕获包含认证信息的OSPF信息,在适时重新放到链路上发送,以达到干扰OSPF邻居路由器间的通讯的目的。
加密序列号是个32位整数,与特定的一台邻居路由器关联,OSPF路由器会增加该值,当邻居路由器收到该序列号之后,便记忆下来,随后的OSPF消息中的加密序列号字段值低于上次记忆的值,邻居路由器会丢弃该消息。目的是攻击者捕获了曾经的报文,使用该消息的SN到Link上,受攻击路由器不收,所以每个消息中该值都在递增。
针对加密序列号的攻击是攻击者伪造更大的加密序列号让邻居路由器记忆,合法的路由器送来的相对较小的序列号反而不被接受,导致邻居关系Down,攻击成功,所以加密序列号绝非提供完美的安全方案(但如果攻击者吧加密序列号变大,相当于OSPF报文发生变化,这样导致接收方验证摘要值的时候不相等,所以OSPF验证失败)
如果序列号增加到最大值,至少需要100多年,可以不去考虑担心
(3)默认路由发布:
OSPF引入静态时不会引入默认路由,所以使用以下方式引入默认路由
① 配置默认路由,使用命令[Huawei-ospf-1]default-route-advertise重分布,如果没有默认路由,命令不生效
② 使用命令[Huawei-ospf-1]default-route-advertise always强制下发默认路由
2. Area/AS:
(1)Area:
OSPF支持区域的划分,区域是从逻辑上将路由器划分为不同的组,每个组用区域号(Area ID)来标识,一个网段(链路)只能属于一个区域,或者说每个运行OSPF的接口必须指明属于哪一个区域。Area 0位骨干区域,所有的非特殊区域都必须连接到Area 0实现通信,在一个OSPF区域中有且只有一个骨干区域,区域的路由器称为ABR。
Area的规划为一个AS中只能有一个Backbone区域(Area0),其余的区域都为Normal区域,所有的Normal区域只能与Backbone区域传递3类LSA,Normal区域与Normal区域之间不会传递3类LSA,用于防止环路。
3类LSA是ABR将区域内的路由表生成LSA传递给另外一个区域,所以区域间为距离矢量的行为,会造成环路,所有的Normal区域只能与Backbone区域传递3类LSA用于防止环路
① 如果没有规定Normal区域之间不可以传递三类LSA,此时Area 1生成三类LSA传递给Area0
② Area0将三类LSA传递Area2,Area2将三类LSA传递给Area3,Area3会将三类LSA重新传回给Area0,如果此时Area1中的网段消失了,Area1会删除此三类LSA,此时Area0会选择Area3传递的关于10.1.1.0/24的网段的LSA,形成环路
(2)AS:
Autonomous System,通常运行一个OSPF的体系为一个AS,AS包含ospf所有的区域,AS外部的路由称之为OSPF外部路由,自制系统边界路由器称为ASBR。
(3)进程ID:
代表的仅仅是OSPF进程,只具有本地意义。
空间大小为16bit,默认0不可用
取值范围为1-2^16为1-65535
注:ABR路由器上,所连接的两个区域必须在同一个进程ID中,否则会造成邻居可以建立但是无法传递路由的现象,使用import可以解决此现象
3. 区域路由器角色:
(1)BR:
Backbone Router,骨干区域路由器,至少有一个接口属于骨干区域。
(2)IR:
Internal Router,内部路由器,纯属于普通区域中的路由器。
(3)ABR:
Area Border Router,区域边界路由器,用于连接骨干区域和非骨干区域的路由器,但其中一个必须是骨干区域,和骨干区域可以是物理连接的(真ABR),也可以是逻辑连接的(假ABR)。
“真正的ABR”需要满足两个两个条件:
① 能产生3类LSA通告给隔壁区域
② 接口发布到Area0并且和邻居形成Full的邻居关系(只有Loop口属于Area0的路由器称为“伪ABR”)
注:由于ABR连接着骨干区域0和Normal区域,所以ABR设备维护骨干区域的LSDB和Normal区域的LSDB
(4)ASBR:
AS Border Router自制系统边界路由器,用于OSPF边界连接外部的路由器并引入外部路由的设备为ASBR。
4. Router-ID:
一些动态路由协议要求使用Router-ID作为路由器的身份标识,为点分十进制。
Router-ID选举规则:
① 如果配置路由协议的Router-ID,则将其作为协议Router-ID
② 如果在全局下配置了Router-ID,则将其作为协议Router-ID
③ 如果配置了loopback接口IP,则将loopback中地址最大的作为协议Router-ID
④ 如果配置接口IP地址,则从接口IP中地址最大的作为协议Router-ID(不考虑接口的Up/down状态)
注1:在选举Router-id之后,即使被标识Router-id的接口down掉或更改IP也不会造成Router-id的重新选举
注2:Router-ID是用来标识路由器的。
5. Router身份:
广播型网络和NBMA网络中,如果网络中存在很多路由器,则需要建立很多邻接关系,即当路由器很多时,需要建立和维护邻接关系就很多,两两之间需要发送的报文也就特别多,这会造成很多很多内容重复的报文在网络中传递,浪费了设备的带宽资源。此时,便出现了DR/BDR/DR-other的定义。
(1)身份定义:
在OSPF中,主要包含三种路由角色:
① DR
② BDR
③ DR-other
① DR:
DR是针对同一网段中接口的一种标志,OSPF协议定义了指定路由器DR(Designated Router),即所有其他路由器都只将各自的链路状态信息发送给DR,再由DR以组播的方式发送至所有路由器,减少了OSPF数据包的发送。
注1:DR侦听地址为224.0.0.6,也侦听224.0.0.5,所有发送到DR、BDR的LSA的目标地址都为 224.0.0.6。
② BDR:
在OSPF中,如果DR由于某种故障失效,此时网络中必须重新选举DR,并同步链路状态信息,这需要较长的时间。为了能够缩短这个过程,OSPF协议又定义了BDR(Backup Designated Router)的概念,作为DR路由器的备份,当DR路由器失效时,BDR成为DR,并在重新选举新的BDR路由器。
注1:与DR相同,BDR默认侦听地址为224.0.0.6,也侦听224.0.0.5,所有发送到DR、BDR的LSA的目标地址都为224.0.0.6。
注2:默认DR工作正常时,BDR只会接收DD报文,请求缺少的LSA,但是不会去泛洪DD报文和LSA
③ DR-other:
没有选举为DR或BDR的路由器称为DR-other。DR-other默认侦听的地址为224.0.0.5,当DR或BDR发送信息给DR-other时,采用224.0.0.5作为目标地址。
6. DR/BDR:
(1)DR/BDR选举规则:
在广播型网络和NBMA网络中会进行DR/BDR的选举,通过Hello包的交换进行选举。
注1:DR在选举完成后,默认为非抢占模式,即当网络中出现了比DR更优的设备时,默认DR也不会被抢占,防止端口抖动出现的频繁迁移,所以优先级高的不一定为DR,在有限时间内只有一台设备启动,超出选举时间后(40S)便认为自己是DR。
注2:在一个广播型网络中,当两台路由器建立邻居选举出DR和BDR后,此时又有一台设备启用OSPF,不会抢占,所以优先级高的路由不一定为DR,可以在全局下使用命令
<Huawei>reset ospf process重新加载OSPF进行重新选举DR。
主要通过以下几种方式选举:
①优先级
②Router-id
① 优先级:
首先比较优先级,优先级数值越大越优先,默认为1(如果为0没有选举权),使用命令在接口上进行优先级的修改:
[R1]inter G0/0/1
[R1-G0/0/1]ospf dr-priority 100
② Router-ID:
当优先级一致时,使用Router-ID进行DR的选举,默认Router-ID越大越优先。
(2)DR/BDR选举算法:
在OSPF中,一个网段内的路由器在没有选举出DR之前,都会启用一个Wait timer,时间大小和Dead timer时间一致,在Wait timer时间内,不会自动选举DR和BDR,而是检测邻居发送过来的Hello报文中的Designated Router表项和Backup Designated Router表项中的标识参考当前网络的DR和BDR。
如果在Wait timer时间超时后,依旧没能得知当前网网络中的DR和BDR,此时会使用DR算法进行选举。
DR算法过程:
① 路由器会启用DR算法生成三个结合:DR-other{}、BDR{}、DR{},选举顺序也是按照此顺序进行选举
② 由于当前没有设备认为自己为DR或BDR,所以将当前接收到的Router-ID标识全部放入DR-other{}中
③ 从DR-other中选举出最好的Router-ID放入BDR{}中
④ 从BDR{}中选举出最好的Router-ID放入DR{}中
⑤ 缺少BDR,再从DR-other{}选举出最好的Router-ID放入BDR{}中
Router-ID选举案例:
(1)默认情况下:
- R6为DR
- R5为BDR
(2)当LSW1与LSW2端口down掉后:
1)左侧网段:
- R5为DR
- R3为BDR
2)右侧网段:
- R6为DR
- R4为BDR
(3)当两端链路恢复后:
- R6为DR
- R4为BDR
(4)当R6down掉后:
- R4为DR
- R5为BDR
7. Neighbor/Adjacency:
① Neighbor邻居状态
② Adjacency邻接状态
(1)Neighbor:
邻居状态,默认双方发送并接收到对端的hello报文后,为Neighbor状态,DR-other之间收敛之后处于邻居状态。
通常在双方互相发送Hello包之后并且得到了对端的确认之后进入此状态,需要:
1)数据包头部信息无误:
- 版本号一致
- Router-ID不相同
- Area-ID一致
- 认证类型和密码一致
2)Hello包中内容无误:
- 掩码一致(P2P网络可以不一致)
- Hello时间一致
(2)Adjacency:
邻接状态,DR和DR-other收敛之后的最终状态。
网络类型中的邻接关系:
网络类型 |
是否和邻居建立邻接关系 |
P2P |
总是和邻居建立邻接关系 |
P2MP |
总是和邻居建立邻接关系 |
Virtual Link |
总是和邻居建立邻接关系 |
Broadcast NBMA |
DR总是和其他所有路由器包括BDR建立邻接关系 BDR总是和其他所有路由器包括DR建立邻接关系 处于DR-other状态的路由器只与DR和BDr建立邻接关系 DR-other之间为邻居状态 |
8. 被动接口:
OSPF被动接口也称为抑制接口,成为被动接口后,将不会接收和发送OSPF报文。
[Huawei-ospf-1]silent-interface g0/0/1-----ospf进程下配置g0/0/1为被动口
二. OSPF报文类型:
OSPF报文特点:
① 运行在IP协议之上,协议号为89
② 使用组播进行更新,DR/BDR侦听组播地址为224.0.0.6和224.0.0.5,所有路由器侦听组播地址为224.0.0.5
五种报文类型:
① hello报文
② DD报文
③ LSR报文
④ LSU报文
⑤ LSACK报文
不同网络类型报文目标地址:
网络类型/报文类型 |
Hello |
DD |
LSR |
LSU |
LSACK |
Broadcast |
组播地址 |
单播地址 |
单播地址 |
组播地址 |
组播地址 |
NBMA |
单播地址 |
单播地址 |
单播地址 |
单播地址 |
单播地址 |
P2P |
组播地址 |
组播地址 |
组播地址 |
组播地址 |
组播地址 |
P2MP |
组播地址 |
单播地址 |
单播地址 |
单播地址 |
单播地址 |
OSPF报文头部:
一个OSPF的头部为24Byte
① Version:版本
② Message Type:OSPF报文类型
③ Packet Length:报文长度
④ Router-ID:发送者路由ID
⑤ Area-ID:区域ID
⑥ Checksum:校验和
⑦ Authentication Type:认证类型
⑧ Auth Data:认证数据
Options选项位:
所有的OSPF报文和所有的LSA都包含Options选项
① DN:Down位,用来在MPLS中预防环路
② O:表示支持Opaque LSA
③ DC:支持按需链路
④ EA:支持外部路由属性
⑤ N/P:
- N:表示为NSSA区域
- P:在NSSA区域中表示LSA是否能7转5类LSA,置位表示可以装换
⑥ MC:表示支持MOSPF
⑦ E:表示支持外部路由
⑧ MT:表示支持多拓扑OSPF
1. Hello报文:
协议号为1,用于建立邻居关系、维持邻居关系,在广播链路中路由器根据hello报文中的优先级和Router ID选举DR和BDR,目标地址为224.0.0.5。(不同的网络类型,Hello发送时间不一致),当接口启用OSPF后,会一直发送Hello报文用于邻居的建立
注:除P2P网络,其余的网络类型中两端的链路子网掩码要一致。
① Network Mask:网络掩码
② Hello Interval:Hello时间间隔
③ Options:选项
④ Router Priority:本Router DR优先级
④ Router Dead Interval:Dead时间
⑤ Designated Router:DR的接口IP地址
⑥ Backup Designated Router:BDR的接口IP地址
⑦ Neighbor:已建立的邻居(Router-ID)
2. DD报文:
协议号为2,Database Description,数据库检索报文,路由器将LSDB中LSA简化成一张只有网段的目录(只存放LSA的头部信息),发送给对端,用于对端根据此检索信息查看自己缺少的LSA。
(1)DD报文格式:
- Header Message
- DD Message:
① MTU:接口MTU值(华为设备默认不检测)
② Options:选项
③ Flags:置位符
- R:
- I:置位表示为Fist DD报文,用于主从关系的选举
- M:置位表示后面还有DD报文
- MS:置位表示本路由器为Master
④ Sequence:序列号
⑤ LSA Header:LSA头部信息
(2) Options选项位:
Options选项中的包含8位
① DN:Down位,用来在MPLS中预防环路
② O:表示支持Opaque LSA
③ DC:支持按需链路
④ EA:支持外部路由属性
⑤ N/P:
- N:表示为NSSA区域
- P:在NSSA区域中表示LSA是否能7转5类LSA,置位表示可以装换
⑥ MC:表示支持MOSPF
⑦ E:表示支持外部路由
⑧ MT:表示支持多拓扑OSPF
3. LSR报文:
协议号为3,Link State Request请求报文,只存放LSA的标识三要素,用于向对端请求自己缺少的LSA报文。
4. LSU报文:
协议号为4,Link State Update报文,当收到对端发送LSA Request报文请求后,本端使用LSA Update报文回复对端缺少的LSA,LSU报文中包含了对端所缺少的LSA。
5. LSACK报文:
协议号为5,Link State ACKnowledgment,只存放LSA的头部信息,当收到对端发送过来的LSU报文后,回复LSACK确认回复报文。
三. OSPF收敛过程:
OSPF收敛需要经过八种状态机制:
① down
② Attempt
③ Init
④ Two-way
⑤ Exstart
⑥ Exchange
⑦ Loading
⑧ Full
1. Down:
关闭状态,默认运行ospf的路由端口刚up的一瞬间处于此状态。
注:在NBMA网络中,由于120S没有收到Hello报文会由Attempt状态进入down状态,此状态下120S发送一次Hello报文。
2. Attempt:
试图等待状态,Attempt状态只在NBMA网络中出现,由于NBMA使用单播建立邻居关系,当手工指定对端接口后,会进入此状态,默认会每隔30S发送一次Hello包,当120S内没有收到Hello报文后,会跳转到Down状态,如果在120S内收到Hello报文跳转到Init状态
3. Init:
初始状态,当一台路由器收到对端发送过来的Hello报文,便进入此状态。
注:单项链路故障造成一直收不到对端的Hello报文,会造成本端一直停留在Init状态
4. Two-way:
邻居状态,路由器收到对方的Hello包,本端路由器也会发送Hello报文,并将邻居的Router-ID放入Hello报文中,发送给对端邻居,邻居收到Hello报文后发现报文中存在自己的Router-ID,进入Two-way状态,并且在此发送Hello报文,报文中包含对端的Router-ID,对端收到Hello报文后,也进入Two-Way状态,并选举出DR、BDR和DR-other。
路由器不会自主选择DR、BDR,而是侦听链路上的Hello数据包,如果数据包中的DR、BDR字段一直为0,则在40S过后,会根据收到的Hello数据包中的DR优先级选举出DR和BDR
注1:Hello包交换建立Two-way状态为三次握手
注2:DR-other之间永远是Two-way状态
5. ExStart:
ExStart状态用于检测MTU是否一致,并通过发送Fist DD报文选举并确立主从关系,Router-ID高(忽略优先级)的路由器成为主路由器(Master),低的为Slave
注:如果MTU值不匹配,将停留在此阶段,华为设备默认不检测MTU
(1)主从选举原因:
OSPF承载在IP层,为了保障可靠的传输,在交换DD报文前,首先选举出Master,在进
行DBD报文交互时,Master首先发送DD报文给Slave,Master首先确定一个序列号,并发送此序号的DD报文,如果对端收到DD报文,会回复和Sequence number一致的DD报文,如果没有回复,表示当前发送的DD报文没有被对端收到,此时会重新发送。
注:选举主从路由,只有DR和DR-other进行主从选举(因为只有他们是Full状态,才会
进行主从选举,邻居关系(DR-other和DR-other)只停留在Two-way状态。
(2)主从选举过程:
① 两端都发送Fist DD报文,无任何头部描述信息,只有序列号和I、M、MS三个置位符:
- I:置位表示第一个DD报文
- M:置位表示后面还有DD报文
- MS:置位表示当前本路由器为Master
② 当两端互相收到对端的DD报文后,查看Router ID,如果路由器发现自己的Router ID小于对端的Router ID,便认为对端为Mater,自己进入Exchange状态,并将LSA的序列号改为对端发送过来的序列号进行同步,并发送带有LSA头部的DD报文给对端
③ 对端收到新的DD报文后,发现序列号和本端的序列号一致,于是进入Exchange状态,并选举自己为Mater
注1:当两端设备MTU不一致,将一直停留在Exstart状态。华为默认不检查MTU值,如果发送的MTU数值超出对端的最大MTU并且不分片,送往对端将会被丢包
注2:如果一端认为自己为Slave,立刻发送带有LSA header的DD报文,Seq Number为Mast起始的Seq Number,在每次交互中,只有Mast会主动增加Seq Number
注3:如果两端的DD个数不一样,如果一端发送完毕,另一端继续发送,此时一端会使用空DD报文进行回复确认
(3)MTU检测不通过问题:
如果华为设备开启了MTU检测,并且两端MTU不一致,会有以下情况
① 只有一端开启MTU检测:
如果两端MTU不一致,只有单边开启MTU检测是不会影响邻居建立的,两端都会到Full状态
① AR1开启MTU检测,AR2没有开启MTU检测
② AR1发送DD报文,MTU值为1400,AR2由于没有开启MTU检测,所以不会查看该值,直接通过
③ AR2发送DD报文,由于设备不检测MTU值,所以DD报文中的MTU值为0,AR1收到此DD报文,检测MTU值,发现值为0,小于自身接口的MTU值,通过检测,进入下一状态
② 如果两端开启MTU:
a) Master端的MTU小于Slave端的MTU:
- AR2(Master)发送DD报文,MTU值为1500,AR1(Slave)收到此报文,检测MTU,MTU值大于当前接口的MTU,检测不通过,停留在ExStart状态
- AR1(Slave)发送DD报文,MTU值为1400,AR2收到(Master)收到此报文,检测MTU,MTU值小于当前接口的MTU,检测通过,但是收不到Slave发送过来的确认报文,所以卡在ExStart状态
b) Master端的MTU大于Slave端的MTU:
- AR2(Master)发送DD报文,MTU值为1400,AR1(Slave)收到此报文,检测MTU,MTU值小于当前接口的MTU,检测通过,进入ExChange状态
- AR1(Slave)发送DD报文,MTU值为1500,AR2收到(Master)收到此报文,检测MTU,MTU值大于当前接口的MTU,检测不通过,卡在ExStart状态
6. Exchange:
主从关系确立后,进入Exchange状态,开始正式交换交换DD报文内容,当将所有的DD报文发送完毕后,发送一个空的DD报文,将M位置为0,表明DD报文已发送完毕,并进入Loading状态
7. Loading:
发送LSR,通过更新LSU,LSACK报文,交换相互缺少的LSA报文,完成LSDB的同步。
注:卡在Loading状态的原因huawei设备不检测MTU,有可能发送LSU报文超出接收路由器接口的MTU,所以设备会丢掉此LSU报文,由于一直得不到LSACK回复,卡在Loading状态,如果在规定时间内没有收到相应的确认报文,会在重传30次,默认重传间隔为5S,在30次之后没有收到确认,断开邻居关系
- 使用命令[Huawei-GigabitEthernet0/0/0]ospf timer retransmit 10修改重传间隔。
- 使用命令[Huawei-ospf-1]retransmission-limit 10修改重传次数
8. FULL:
同步完成后,建立邻接关系。并且每隔一段时间周期的发送Hello报文,每隔30min发送一次完整的LSDB中的LSA报文。
9. 泛洪新LSA:
① 在广播网络中,当网络中出现新的路由器,泛洪新的LSA时,此时路由器只需要发送目标地址为224.0.0.6的LSU报文给DR,由DR重新泛洪目标地址224.0.0.5的LSU报文给所有的路由器
② 在点到点链路上,当网络中出现新的路由器,泛洪新的LSA时,此时路由器会直接发送目标地址为224.0.0.5的LSU给对端设备
四. LSA:
Link State Advertisement,链路状态通告信息,OSPF是一种基于链路状态的动态路由协议,每台OSPF路由器都会生成相关的链路状态广播LSA,并将这些LSA通过出去,路由器收到LSA后,会将他们存放在链路状态数据库LSDB中。
LSA主要分为:
① Router LSA路由器LSA
② Network LSA 网络LSA
③ Network summary LSA 网络汇总LSA
④ ASBR summary LSA ASBR汇总LSA
⑤ AS external LSA 自制系统外部LSA
⑥ Group membership LSA 组成员LSA
⑦ NSSA External LSA NSSA外部LSA
LSA的标识:
OSPF使用LSA头部中的LS type、Link Start ID、Advertising Router标识一条LSA
LSA的选择:
当收到了两条相同的LSA,OSPF会根据以下信息判断一条LSA的新旧程度,选取最新的LSA
① 序列号大的优先
② 校验和大的优先
③ 比较老化时间:
- 如果一条LSA具有最大的老化时间,即3600S,那么就选择该LSA实例
- 如果LSA老化时间差大于15分钟,则老化时间小的优先
- 如果LSA老化时间之差在15分钟以内,则认为这两个LSA一样
注:3600S:
① 区域内,如果出现链路故障时,路由器使用新的lSA重新通告邻居路由器,邻居路由器重新SPF计算最短路径树,此时新的lSA没有包含故障的链路,所以达到了重新收敛
② 区域间路由,如果链路出现故障时,发送一份和原来序列号一样的三类LSA通告对端邻居,并将Age Timer设为3600S,收到此LSA的路由器将删除对应的路由
③ 外部路由,ASBR检测到外部路由消失,发送一份和原来序列号一样的LSA通告全网,并将Age Timer设为3600S,收到此LSA的路由器将删除对应的外部路由
传递与泛洪:
① 传递:传递是指LSA在传输过程中标识身份的三要素是否发生改变
② 泛洪:泛洪是指该LSA所描述的内容是否能够被接收到
各类LSA允许泛洪的区域:
LSA报文头部:
① LS age:LSA老化时间,递增数值,每经过一台路由器加2S,在数据库中按正常时间增加,最大老化时间为3600S
② Options:选项
a) DN:Down位,用来在MPLS中预防环路
b) O:表示支持Opaque LSA
c) DC:支持按需链路
d) EA:支持外部路由属性
e) N/P:
- N:表示为NSSA区域
- P:在NSSA区域中表示LSA是否能7转5类LSA,置位表示可以装换
f) MC:表示支持MOSPF
g) E:表示支持外部路由
h) MT:表示支持多拓扑OSPF
③ Ls type:LSA类型
④ Link State ID:链路状态ID值,不同类型LSA含义不同
LSA |
OSPPFv2 LS ID |
Router LSA |
Router ID |
Network LSA |
DR所在IPv4网段IP |
Type 4 LSA |
ASBR的Router ID |
Type3、Type5、Type7 LSA |
IPv4网段 |
⑤ Advertising Router:通告该LSA的路由器的RID
⑥ LS sequence number:序列号,大小为32bit
⑦ LS checksum:校验和
⑧ Length:长度
⑨ Flags:
a) V:表示是否存在虚链路
b) E:表示是否为ASBR
c) B:表示是否为ABR
LS sequence number详解:
序列号,大小为32bit,线性增长,序列号使用“原码”表示,第32位表示“正负”号,
1表示负号,0表示正号,最小的数位0x80000000,最大的数为0x7FFFFFFF。
- 1表示负号,所以最小的数为1000 (28个0)=80000000
- 0表示正号,所以最大的数为0111 (28个1)=7FFFFFFF
I----------------------------------------------------------I I----------------------------------------------------------I
80000000-------------------------------------------à0--------------------------------------------à7FFFFFFF +1
重新回到80000000 I
ß----------------------------------------------------------------------------------------------------------------------------I
Options选项位:
所有的OSPF报文和所有的LSA都包含Options选项
① DN:Down位,用来在MPLS中预防环路
② O:表示支持Opaque LSA
③ DC:支持按需链路
④ EA:支持外部路由属性
⑤ N/P:
- N:表示为NSSA区域
- P:在NSSA区域中表示LSA是否能7转5类LSA,置位表示可以装换
⑥ MC:表示支持MOSPF
⑦ E:表示支持外部路由
⑧ MT:表示支持多拓扑OSPF
1. Router LSA:
Type-1 LSA,路由器LSA,每台路由器都会产生Router LSA,用来描述路由器本身的直连链路状态和开销值。
Router LSA只能在所属区域内部传递,在所属区域内泛洪
1)头部信息:
① Ls id:自身的Router-ID
2)LSA信息:
① Flags:标识位:
- V:是否为V-Link
- E:是否是ASBR
- B:是否是ABR
② Link count: 链路信息数量(表明当前设备有几条Link)
③ Link ID:链路IP地址信息
④ Data:Router id自身的接口地址
⑤ Link Type:拓扑类型
⑥ Metric:开销值,每经过一个ABR,开销值都会重新计算
注:每种拓扑类型对应的Link ID和Data都不相同:
Link Type |
实际物理网络 |
Link ID |
Data |
Stub net |
环回口/串行/以太网络(无邻居)、Sub IP |
该Stub网段的IP网络地址 |
该Stub网段的网络掩码 |
Transit |
以太链路、FR(有邻居) |
DR的接口IP地址 |
自己的接口IP |
P2P |
串行链路 |
邻居的RID |
自己的接口IP |
Virtual |
V-Link |
邻居的RID |
自己的接口IP |
2. Network LSA:
Type-2 LSA,网络LSA,它是由DR产生(不选举DR的网络环境不存在Network LSA),在广播网络中,Network LSA用来描述虚节点周边的连接关系和网段信息
Network LSA只能在所属区域内传递,在所属区域内泛洪
1)头部信息:
① Ls id:DR自身的接口IP地址
2)LSA信息:
① Net Mask:当前网络的子网掩码
② Attached Router:当前连接此区域的所有Roter-ID
注:P2P网络不选举DR,所以没有network LSA,由于Router LSA中的P2P网络没有携带网络掩码信息,所以P2P网络类型会在Router LSA中增加Stub net拓扑条目,用来表示本地接口的网络信息和掩码信息
3. Network summary LSA:
Type-3 LSA,网络汇总LSA,完整的路由信息,没有拓扑信息,它是由ABR产生,ABR路由器将所连区域的Router LSA和Network LSA转换为Network summary LSA,用来描述区域间的路由信息,Network summary LSA只传递路由信息,并不传递拓扑信息。
ABR是查看路由表中的路由条目生成三类LSA,所以可以使用路由策略修改路由表得到过滤区域间路由的效果
一条路由条目为一个3类LSA,一条三类路由失效,生成此LSA的路由器重新生成一条关于此路由的新(和前一条LSA的Seq Number相同)的LSA,并将Age Timer置为3600S传递给邻居,收到此毒化LSA的路由器删除此条路由
Network Summary LSA每经过一个区域,LSA中的adv rtr会变为引入Network Summary
LSA的ABR的RID,Network summary LSA只在区域内传递,在AS内泛洪(特殊区域除外)
1)头部信息:
① Ls id:目标网段
2)LSA信息:
① Net mask:掩码
④ Metric:开销值,三类LSA内域内传递开销值不变,当到达下一个ABR时,重新计算Metric,在原基础上加上两端ABR之间的开销值,传递给下一个Area中。
Network Summary Flooding原则:
① Network Summary LSA不会在两个Normal区域之间传递
② 水平分割原则:
- 从一个区域流出的Network Summary LSA不会再流入此区域(Area0除外)
一个区域的1类2类优于3类,所以ABR接收到3类LSA的内容如果和区域内的1类和2类一样,不会将他放入路由表,也不会将他传回到区域内
- 从一个区域流入的Network Summary LSA不会在从此区域流出(Area0除外)
- ABR不会传递非Area0来的LSA3到其他的区域,并且不会生成路由表
- 如果没有了Area0的邻居,此ABR不能成为真正的ABR,而是一个普通区域的路由器,他便会接收三类LSA
① 在Area1区域内,AR2和AR4发送类型1的LSA,并将flag中的E置位,表明自己当前为ABR
② AR2发送三类LSA,Adv为自己的Router ID,经过区域0传递给AR4,针对三类1.1.1.1/32的路由,区域内会使用1类和2类进行传递,所以AR4不接受此三类LSA进入Area1,而是直接使用1类和2类表示1.1.1.1/32这条路由
③ 如果此时AR1和AR3中的链路断掉,AR4不知道AR2为ABR,那么此时在经过Area0传递过来的由AR2生成的三类LSA会经过AR4传递到Area1中
④ AR6和AR8之间建立链路,同时属于Area2,AR6发送1.1.1.1/24的三类LSA给AR8,由于是非骨干区域传递过来的三类LSA,AR8不会将他计算并放入路由表
⑤ 如果此时AR8去往骨干区域的链路断掉时,此时AR8只能通过AR6去往骨干区域,他会将AR6传递过来的三类LSA放入路由表中
4. ASBR summary LSA:
Type-4 LSA,ASBR汇总LSA,它是由ASBR所在区域的ABR产生的,用来描述ASBR的路由,ASBR summary LSA可以泛洪到整个AS内部,但不能泛洪到所有的特殊区域。
当本区域的路由器收到AS External LSA时,查看Adv rtr时,可以根据一类和二类拓扑信息可以得到去往ASBR的实际地址,所以本区域中的ASBR Router ID依靠Router-LSA进行传递告知当前区域内的路由器ASBR的地址,但是区域间的路由不存在拓扑信息,所以不同区域的路由器并不知道去往不同区域ASBR的地址,所以此时需要使用ASBR summary LSA告知不同区域去往ASBR的地址。
ASBR summary LSA只在区域内传递,在区域间泛洪(特殊区域除外),每经过一个Area区域,Adv Router都会变成ABR
注:四类为五类工作,但产生五类不一定会产生四类,比如ASBR所在的区域中,有五类,
但是没有四类
1)头部信息:
① Ls id:ASBR的RID
2)LSA信息:
① Net mask:掩码
② metric:发布者ABR到ASBR的花费
5. AS External LSA:
Type-5 LSA,AS外部LSA,它是由ASBR产生的,用来描述到AS外部网络的路由。
一条五类路由失效,生成此LSA的路由器重新生成一条关于此路由的新的LSA(序列号和上一个Seq Number相同),并将Age Timer置为3600S传递给邻居,收到此毒化LSA的路由器删除此条路由
AS External LSA在AS内传递,在AS内泛洪(特殊区域除外),只有AS External LSA在传递过程中不会被ABR更改Adv Rtr,所以只有AS External LSA在区域间传递并泛洪
注:V-Link不会传递AS External LSA
1)头部信息:
① Ls id:外部路由网段
2)LSA信息:
① Net mask:掩码
② E type:路由类型
③ Forwarding Address:转发地址
④ Tag:标签
注:网络稳定后,一台设备称为ASBR并引入外部路由,此时此设备会发送一类LSA和五类LSA,使用Flags中的E置位表明自己为ASBR,五类为外部路由
(1)Metric详解:
LSA类型5中的Metric值为域外到ASBR的开销值,所以如果E type类型为E1时,路由器去往外部路由的总开销为LSA5中的开销值+路由器到ASBR的开销,计算域内路由器到ASBR的开销有两种情况
- 当路由器和ASBR在同一个区域内:
a) FA地址为0,根据1类和2类计算到ASBR的开销
b) FA地址不为0,根据1类和2类计算到FA地址的开销
注:如果FA地址不为0,1类和2类中没有到达FA地址的路由,此时这条五类路由不会放入路由表
- 当路由器和ASBR不在同一区域内:
a) FA地址为0,根据四类Metric计算到ASBR的开销
b) FA地址不为0,根据三类LSA计算到FA地址的开销
注:如果FA地址不为0,3类中没有到达FA地址的路由,此时这条五类路由不会放入路由表
(2)五类LSA防环:
默认AS External LSA在全网传递,所以普通区域也会传递给普通区域,但是由于普通区域不
存在ABR,所以不会传递ASBR summary LSA,此时会存在只有AS External LSA而没有ASBR
summary LSA的情况,所以路由器并不知道去往ASBR的地址,也不知道外部路由的开销值,
所以不会将LSA中的路由放入路由表中
(3)E type:
E type用来表示引入路由条目的类型,主要分为两个类型,为E1、E2,默认在引入外部路由时使用E2,E1的优先级别高于E2, E1路由和E2路由的区别在于他们计算前往目的地开销的方式不一样.。
① E1:
E1路由前往目的子网的开销计算是域内开销+域外开销,也就是说经过的路径的开销的总和。
② E2:
E2路由前往目的子网的开销则只计算域外开销,也就是说出去ASBR之后的路径的开销总和,不考虑域内开销.
注:引入外部路由时不定义引入cost,默认外部路由的cost全部为1
使用命令修改引入外部路由的类型:
[Huawei-ospf-1]import-route rip type 1
使用Router-Policy修改部分路由类别:
[Huawei]ip ip-prefix 1 permit 5.5.5.5 32
[Huawei]route-policy 1 permit node 5
[Huawei-route-policy]if-match ip-prefix 1
[Huawei-route-policy]apply cost-type type-1
[Huawei]route-policy 1 permit node 10
[Huawei]ospf
[Huawei-ospf-1]import-route rip route-policy 1
(4)Forwarding address:
Forward Address,为OSPF的ASBR去往外部路由的下一跳地址IP
注:必须满足以下四个条件,OSPF的转发地址才能为非0地址:
- 连接外部路由的接口必须存在OSPF进程中
- 连接外部路由的接口不能为Silent-interface
- 连接外部路由的接口网络类型不能为P2P类型
- 连接外部路由的接口网络类型不能为P2
如图,OSPF网络中,并没有将192.168.2.0和192.168.3.0的网段宣告进OSPF进程中,所以无法产生基于192.168.2.0和192.168.3.0的链路状态信息,所以R1并不知道192.168.2.0和192.168.3.0的具体位置,所以转发地址为0.0.0.0,但是R1知道外部路由的产生者为R2,此时只需要将数据传递给R2即可。
当将192.168.2.0的网段宣告到OSPF进程中,产生基于192.168.2.0的网段的链路LSA,传递给R1,此时R1便知道外部链路的信息,Forwarding Address便为外部路由的下一跳具体地址:
解决次优路径问题:
① AR2和AR3运行OSPF
② AR2配置静态路由去往AR1的192.168.2.0/24的路由网段
③ AR2将静态路由引入OSPF,将192.168.1.1作为静态路由的下一跳地址,由于G0/0/0接口符合FA地址条件,所以192.168.1.1作为去往192.168.2.0/24的Forwarding address
④ AR3收到5类LSA后,发现去往192.168.2.0、24的Forwarding address为192.168.1.1
⑤ AR3访问192.168.2.0/24直接将数据包送往192.168.1.1,而不会送往RTB
6. Group membership LSA:
Type-6 LSA,组成员LSA,用于OSPF组播。
7. NSSA External LSA:
Type-7 LSA,NSSA外部LSA,它是由NSSA区域或Totally NSSA区域的NSSA ASBR产生的,用来描述NSSA区域或Totally NSSA区域所连接的AS外部路由。NSSA LSA只能出现在所属NSSA区域或Totally NSSA区域内部。
1)头部信息:
① Ls id:外部路由网段
2)LSA信息:
① Net mask:掩码
② E type:路由类型
③ Forwarding Address:转发地址
④ Tag:标签
Options选项中的NP(Propagate)置位,表示此LSA在NSSA的ABR上将7类LSA变为5类LSA通告到骨干区域中,如果NP不置位,表明此LSA只能在NSSA中传递
Options选项中NP不置位的场景:
① 当NSSA中的ABR连接着骨干区域,并且也连接者其他路由器,使用其他路由协议进行路由的传递,并在OSPF进程中引入了外部路由,此时外部路由会以五类的LSA传递到骨干区域,也会以7类的LSA传进NSSA区域,但这些LSA在进行7转5流入骨干区域是没有必要的,所以会将Options选项中的NP不置位,只在NSSA区域中传递。
② NSSA区域中使用命令生成7类默认路由,此默认路由NP不置位,只在NSSA区域中传递
(1)E type:
E type用来表示引入路由条目的类型,主要分为两个类型,为E1、E2,默认在引入外部路由时使用E2,E1的优先级别高于E2, E1路由和E2路由的区别在于他们计算前往目的地开销的方式不一样.。
① E1:
E1路由前往目的子网的开销计算是域内开销+域外开销,也就是说经过的路径的开销的总和。
② E2:
E2路由前往目的子网的开销则只计算域外开销,也就是说出去ASBR之后的路径的开销总和,不考虑域内开销.
注:引入外部路由时不定义引入cost,默认外部路由的cost全部为1
使用命令修改引入外部路由的类型:
[Huawei-ospf-1]import-route rip type 1
使用Router-Policy修改部分路由类别:
[Huawei]ip ip-prefix 1 permit 5.5.5.5 32
[Huawei]route-policy 1 permit node 5
[Huawei-route-policy]if-match ip-prefix 1
[Huawei-route-policy]apply cost-type type-1
[Huawei]route-policy 1 permit node 10
[Huawei]ospf
[Huawei-ospf-1]import-route rip route-policy 1
(2)Forwarding address:
在LSA7中,不会存在FA不为0的场景(ABR发布的默认7类路由除外),如果真的有FA不为0,则ABR不会将此LSA进行7到5的转换发布到骨干区域中。
LSA7类的FA地址分为两类:
① ASBR去往外部路由的下一跳地址:
- 连接外部路由的接口必须存在OSPF进程中
- 连接外部路由的接口不能为Silent-interface
- 连接外部路由的接口网络类型不能为P2P类型
- 连接外部路由的接口网络类型不能为P2MP
② 如果不满足上述条件,当环回接口在OSPF进程中,则FA地址为ASBR的环回接口地址;如果没有环回接口,则为物理接口地址
注:使用以下命令在ABR设备上将7 转5类LSA时清空FA地址:
[Huawei-ospf-1-area-0.0.0.1]nssa suppress-forwarding-address
(3)FA地址不为0的原因:
① 防止次优路径
② 防止环路
① 防止次优路径:
NSSA区域可能和骨干区域之间存在多个ABR,但是只有Router-ID地址大的ABR才会将7类
LSA转换为5类LSA,并且Cost会变为1,但是如果此ABR并不是骨干区域内的路由器到达
NSSA区域ASBR的最优路径
注:由于连接NSSA区域的骨干区域ABR起到了7类转5类的作用,所以可以认为为ASBR,所以此区域不会产生四类LSA
- 如果FA地址为0,则骨干区域内的路由器访问NSSA区域的外部路由只能走此ABR,有可能不是最优路径
- 如果FA地址不为0,骨干区域内的路由器可以根据三类LSA知道区域FA地址的最优路径,也就是相当于骨干区域内的路由器知道去往NSSA区域ASBR最优的路径,防止了次优路径的产生
a) Area1为NSSA区域,默认huawei设备AR4会将7类LSA转为5类LSA传递给AR5
b) 如果FA地址为0,此时AR5想要访问外部网络,唯一标识去往外部网络的只有AR4,所以AR5会将数据包送给AR4,路径为AR5→AR4→AR3→AR1,形成次优路径
c) 如果FA地址为AR1的环回接口会实际物理IP地址,AR5会根据FA地址查看三类LSA,知道去往AR1的最优路径为AR5→AR2→AR1,解决了次优路径
② 防止环路:
① NSSA区域将外部路由1.1.1.1/32传递到AR4
② AR2将七类LSA传递AR3,此时AR3去往外部路由的下一跳为AR4
③ 只有Router ID最大的ABR进行7转5的工作,此时AR3将7类LSA转为5类LSA传递给AR4,如果FA地址为0,AR4收到此5类LSA后,由于FA地址为0,所以去往ASBR的地址只能走AR3
④ AR4收到此五类LSA后,也会交给AR2,AR2会从Area1收到一份7类的LSA,同样也会从Area0收到一份5类的lSA,优先级相同,都为E2模式,比较外部开销,AR2到达ASBR AR1的开销为48;到达ASBR AR3的开销值为2,所以优选开销值小的走AR2去往AR3,环路产生
注:使用命令[Huawei-ospf-1-area-0.0.0.1]nssa suppress-forwarding-address在ABR七转五的时候删除FA地址
五. 拓扑结构:
1. Stub网段:
在OSPF网络中,将Loopback网段成为Stub网段,在路由器中,将Stub网段看作一个节点。
注:默认OSPF中Stub中loop口都是/32主机地址
2. Transit网段:
有至少两台路由器的广播型网段或NBMA网段就是一种Transit网段。
3. P2P网段:
六. 网络类型:
网络类型是指运行OSPF网段的二层链路类型,根据路由器所连接的二层链路类型的不同,OSPF将网络结构划分为四种网路类型,每种类型存在差异。
OSPF将网络划分为四种类型:
① Broadcast广播多路访问型网络
② NBMA非广播多路访问型网络
③ Point-to-Point点到点型网络
④ Point-to-MultiPoint点到多点型网络
注:
使用命令[Huawei-GigabitEthernet0/0/0]ospf network-type p2p修改网络类型
使用命令[Huawei]disp ospf interface g0/0/0查看网络类型
网络类型差异:
网络类型 |
Hello时间/死亡时间 |
DR选举 |
Broadcast |
10/40 |
√ |
NBMA |
30/120 |
√ |
P2P |
10/40 |
× |
P2MP |
30/120 |
× |
不同网络类型报文目标地址:
网络类型/报文类型 |
Hello |
DD |
LSR |
LSU |
LSACK |
Broadcast |
组播地址 |
单播地址 |
单播地址 |
组播地址 |
组播地址 |
NBMA |
单播地址 |
单播地址 |
单播地址 |
单播地址 |
单播地址 |
P2P |
组播地址 |
组播地址 |
组播地址 |
组播地址 |
组播地址 |
P2MP |
组播地址 |
单播地址 |
单播地址 |
单播地址 |
单播地址 |
不同网络类型互联结果:
路由器交换Hello包进行邻居的建立,所以不同的网络类型只要Hello时间间隔一致就可以建立邻居,选DR的会自动认为自己为DR,不选DR的知己跳过,邻居建立成功就能够成功交互DD报文,并传递LSA。
但是不同的网络类型中描述LSA的Link ID和DATA是不同的,所以LSA生成路由能成功的条件为Link ID和DATA信息描述和接口发出的描述是一样的
网络类型 |
Full邻居建立 |
路由学习 |
P2P------- Broadcost |
√ |
× |
P2MP----Broadcost (手工设置Hello时间相同) |
√ |
× |
P2P--------P2MP (手工设置Hello时间相同) |
√ |
√ |
NBMA ----Any (单播,对方都是组播) |
× |
× |
注:所有的网路类型中只有NBMA是单播发送Hello报文的,需要手工指定邻居,所以会发送单播的OSPF的Hello报文,对端如果是其余三种网络类型,在收到单播的Hello报文后,由于发现目标地址是自身的IP地址,所以会接收此报文,进入Init状态,发送组播Hello报文,但是NBMA网络的路由器并没有侦听OSPF组播组,所以不会接收此组播报文,最近进入到Down状态,所以NBMA和其余三种网络类型建立OSPF邻居时,NBMA会由Apptemp状态进入Down状态,而其余三种网络类型会一直在Init状态
1. Broadcast:
广播型多路访问,以太网环境为Broadcast,默认进行DR、BDR的选举,Hello时间为10S发送一次,死亡时间为40S。
2. NBMA:
Non Broadcast multiple Access,非广播多路访问,ATM或帧中继接口的默认网络类型为NBMA,默认进行DR、BDR的选举,Hello时间为30S发送一次,死亡时间为120S。
(1)NBMA网络不支持广播,所以OSPF在发送组播报文时无法到达对端,也就无法建立邻居,此时状态会一直停留在Attempt状态。
- 将网络类型改为Broadcast类型,并在帧中继网络中建立map映射表时使用命令让链路支持广播:
[Huawei-Serial0/0/0]ospf network-type broadcast
[Huawei-Serial0/0/0]fr map ip 192.168.1.3 103 broadcast
- 使用单播命令指定对端IP地址建立邻居:
[Huawei-ospf-1]peer 192.168.1.1
(2)在hub-spoken中,由于所有的路由器没有完全建立pvc,所以导致dr的选举错误,此时r2和r3都认为自己是DR,所以应该将hub端选举为DR
- 除Hub外,将其余的路由器的优先级置为0
(3)R1与R2,R1和R3之间建立了pvc,R1为Hub点,所以为R2,R3更新路由条目 ,此时R2,R3已经收到所有的路由条目,如果此时R2访问R3,根据FS地址下一跳为R3的接口地址,但是数据层面无法通信,因为R2,R3之间没有建立pvc,R2去往R3不知该封装多少DLCI号,此时会造成有路由但数据不通的现象。
- dlci复用,R3去往R2的dlci设置为去往R1的dlci,R2去往R3的dlci设置为去往R1的dlci,此时R3和R2通信经过R1中转便可以实现
- 注:Hub-Spoke中,Spoke路由器是无法建立邻居的,及时是单播建立邻居,采用DLCI复
用的方法也不行,因为单播的TTL值为1
3. Point-to-Point:
点到点链路,环回口,串行接口(PPP、HDLC)为点到点链路,默认不会进行DR、BDR的
选举,Hello时间为10S发送一次,死亡时间为40S。
(1)P2P的缺点:
P2P网络默认不检查网络掩码,所以两端IP掩码不一致也可以建立Full状态,如果掩码不一致,设备会自动为对端生成一条关于对端接口的OSPF网络路由
路由互指会生成环路:
① AR1访问192.168.1.3,OSPF路由器访问192.168.0.0/16的下一跳为S4/0/0
② AR2收到数据包后,发现去往192.168.1.3,根据OSPF路由下一跳为AR1,造成环路
4. Point-to-MultiPoint:
点到多点,支持广播针对FR中Hub-Spoke模式中出现的问题而设计的网络类型,默认没有
一种网络拓扑为此结构,默认不会进行DR、BDR的选举,Hello时间为30S发送一次,死亡
时间为120S。
针对帧中继HUB-Spoke模型,可以采用P2MP模式解决所出现的问题:
P2MP网络会将路由器所有的直连接口作为OSPF路由条目发送出去
问题1.支持组播,所以将端口改为P2mp不需要手工peer,但需要在建立fr map的时候加入broadcast命令支持组播发送
问题2.在hub-spoken中,由于P2MP不需要选举DR,所以不会出现DR选举错误的问题
问题3.在hub-spoken中,网络类型为p2mp网络的时候,由于没有另外一端Spoke的DLCI,但是递归查询,去往Spoke的下一跳为HUB端,而且也知道HUB端的DLCI号,于是递归查询将去往另一端Spoke的DLCI自动封装为HUB端的DLCI送往HUB,实现了数据方向通信
5. Virtual:
虚链路网络类型,当配置V-Link后,这个虚拟接口(不是物理口)类型属于Virtual网络类型类型
注:在Cisco中,是没有Virtual类型的,他使用的P2P类型
七. 区域类型:
OSPF网络中存在两种传统区域和四种特殊区域,与传统区域区别在于这四种区域的允许的LSA泛洪有所不同。特殊区域的存在,为网络部署提高了活跃性。
两种传统区域:
① Backbone骨干区域
② Normal普通区域
四种特殊区域:
① Stub Area 末梢区域
② Totally Stub 完全末梢区域
③ NSSA 非纯末梢区域
④ Totally NSSA 完全的非纯末梢区域
OSPF区域标识:
OSPF在建立邻居时,使用Hello包中的Area-ID和Options选项中的Flag位的组合表示当前的区域类型,如果区域类型不一致,将无法建立邻居关系。
Area ID:当前的路由器所属区域
NP:是否是NSSA区域
E:是否有外部路由的能力
类型标识:
区域类型使用Hello报文中的Area ID和Options字段组合标识区域类型
区域类型/标志位 |
AreaID |
NP位 |
E位 |
Backbone |
为0 |
0 |
1 |
Normal |
不为0 |
0 |
1 |
Stub |
不为0 |
0 |
0 |
Totally Stub |
不为0 |
0 |
0 |
NSSA |
不为0 |
1 |
0 |
Totally NSSA |
不为0 |
1 |
0 |
Stub(NSSA)和Totally Stub(Totally Stub)在传递hello报文中用来表示特殊区域的组合是没有区别的,唯一的区别是配置上在ABR上是否放行三类LSA,所以变为Totally Stub(Totally Stub),只需要在所有的ABR上不允许放行三类LSA
四种特殊区域允许存在的LSA:
LSA/区域类型 |
Stub |
Totally Stub |
NSSA |
Totally NSSA |
Type1 LSA |
√ |
√ |
√ |
√ |
Type2 LSA |
√ |
√ |
√ |
√ |
Type3 LSA |
√ |
× |
√ |
× |
Type4 LSA |
× |
× |
× |
× |
Type5 LSA |
× |
× |
× |
× |
Type6 LSA |
× |
× |
× |
× |
Type7 LSA |
× |
× |
√ |
√ |
1. Backbone:
骨干区域,为区域0
2. Normal:
普通区域,除区域0意外的区域
3. Stub Area:
末梢区域:
- Stub区域不允许所有AS External LSA在其内部进行泛洪
- 在Stub区域连接骨干区域的边界ABR路由器使用Network Summary LSA 向这个Stub区域通告缺省路由,所有去往AS外部的路由全部通往骨干区域进行转发
- ABR发布的缺省路由不会被通告到这个区域的外部去。
4. Totally Stub:
完全末梢区域:
- 不允许所有Network Summary LSA和所有AS External LSA在其内部进行泛洪
- 在Totally Stub区域连接骨干区域的边界ABR路由器使用Network Summary LSA 向这个Stub区域通告缺省路由,所有去往外Area部区域和AS外部的路由全部通往骨干区域进行转发
- ABR发布的缺省路由不会被通告到这个区域的外部去
5. NSSA:
非纯完全末梢区域:
- NSSA区域不允许骨干区域传递过来的AS External LSA在其内部进行泛洪
- 允许自己直连的外部路由的引入,并将自身引入的外部路由转换为NSSA External LSA在本区域传递
- 在NSSA区域连接骨干区域的边界ABR路由器使用7类LSA向这个NSSA区域通告缺省路由,所有去往NSSA区域外部的路由全部通往骨干区域进行转发
- NSSA中的ABR将NSSA External LSA转化为AS External LSA泛洪到整个AS中,唯一变化的内容为Adv变为了ABR的Router-ID。
注:NSSA区域中,ABR会将NSSA区域中的7类LSA转为5类LSA发布到区域0,所以ABR
也是ASBR,当NSSA区域存在多个ABR和骨干区域相连接时,NSSA会选择ABR的
Router-ID最大的ABR将七类转换为五类发布到骨干区域,huawei设备可以在ABR设备
上使用命令[Huawei-ospf-1-area-0.0.0.1]nssa translator-always规定此设备进行7转5功能
NSSA区域的ABR将七类装换为五类LSA的时候,不会生成四类LSA,所以骨干区域收到NSSA的外部路由是没有四类LSA辅助的,由于类型7的FA地址不为0,所以转为5类LSA时也不为0,此时骨干区域中的路由器直接根据三类LSA就可以知道去往ABR的开销
当骨干区域在往其他的区域Flooding NSSA域的外部路由时,会产生四类LSA,用来描述到NSSA的ABR的开销(ASBR),如果存在多个ABR时,会产生多份四类LSA分别描述到不同的ABR的开销,不管他是否将7类LSA装换5类LSA
6. Totally NSSA:
完全非纯完全末梢区域:
- Totally NSSA区域不允许所有的Network Summary LSA和骨干区域传递过来的AS External LSA在其内部进行泛洪
- 允许自身引入的外部路由转换为NSSA External LSA在本区域传递
- 在Totally NSSA区域连接骨干区域的边界ABR路由器使用7类LSA和3类LSA分别向这个NSSA区域通告缺省路由,所有去往外部区域和AS外部的路由全部通往骨干区域进行转发
- ABR发布的缺省路由不会被通告到这个区域的外部去
- NSSA中的ABR将NSSA External LSA转化为AS External LSA泛洪到整个AS中,唯一变化的内容为Adv变为了ABR的Router-ID
注1:NSSA区域中,ABR会将NSSA区域中的7类LSA转为5类LSA发布到区域0,所以ABR也是ASBR,当NSSA区域存在多个ABR和骨干区域相连接时,NSSA会选择ABR的Router-ID最大的ABR将七类转换为五类发布到骨干区域
注2:由于NSSA网络中的路由器会收到LSA3和LSA7的两条默认路由,根据路由选路规则,路由器会将类型3的默认路由放入路由表
Totally NSSA区域的ABR将七类装换为五类LSA的时候,不会生成四类LSA,所以骨干区域收到NSSA的外部路由是没有四类LSA辅助的,由于类型7的FA地址不为0,所以转为5类LSA时也不为0,此时骨干区域中的路由器直接根据三类LSA就可以知道去往ABR的开销
当骨干区域在往其他的区域Flooding NSSA域的外部路由时,会产生四类LSA,用来描述到NSSA的ABR的开销(ASBR),如果存在多个ABR时,会产生多份四类LSA分别描述到不同的ABR的开销,不管他是否将7类LSA转换5类LSA
八. V-Link:
通常情况下,一个OSPF网络的每个非骨干区域都必须与骨干区域通过ABR路由器直接连接,非骨干区域之间的通信都需要通过骨干区域进行中转。但在现实生活中,可能会因为各种条件限制,导致非骨干区域与骨干区域无法直接连接,在这种情况下,可以使用OSPFV-Link(Virtual Link)来实现非骨干区域与骨干区域在逻辑上直接相连。
OSPF协议还要求骨干区域必须是唯一且连续的,然而,由于发生故障等原因,骨干区域有可能出现被分割的情况。此时,同样可以使用V-Link来实现物理上被分割的骨干区域能够逻辑相连。
注1:普通区域之间可以建立邻接关系,但是无法传递三类路由和四类路由,可以传递五类,但是不会放入路由表
注2:虚拟链路属于区域0,用于做链路的备份,V-Link的成本就是物理链路的成本
1. V-Link原理:
V-Link属于骨干区域的一部分,当建立一条V-Link后,逻辑上将非骨干区域中与另外一个费骨干区域相连接的路由器作为真正意义上的“ABR”,属于Area0的ABR,此时非骨干区域就可以利用ABR生成Network summary LSA通过V-Link传递给Area0,ABR属于区域0。
指定对端的Router ID,由于两端建立Router ID存在于隔离两端的非骨干区域中,此时两端的路由器通过同区域的1类和2类,根据路由器根据物理地址建立连接。
2. V-Link检测:
V-Link会每隔10S进行Hello包的检测,Dead时间为40S,目标地址为单播
注:Cisco的V-link为Demand-Croat,当两端邻居通过Hello报文到达Full之后,便不会在发送Hello报文进行检测链路,所以当V-Link两端无法通信时,V-Link的状态依旧是Full,所以当huawei设备和Cisco设备做V-Link时,数据包交互中会显示V-link的模式,如果模式不匹配无法建立Full状态,当Cisco设备检测到对端的模式后,会自动变为Full之后每10S发送Hello包的模式
3. V-Link场景:
① 骨干区域和非骨干区域被另外一个非骨干区域隔离,此时需要使用V-Link将非骨干区域和骨干区域建立虚链接。
② 当骨干区域被非骨干区域分离时,此时为了使两个骨干区域合并通信,此时需要使用V-Link建立连接实现两个被分离的骨干区域的通信。
③ 三个连续的非骨干区域相连接,想要让两端的非骨干区域联通通,可以在中间的非骨干区域配置V-Link将两端的非骨干区域相连实现通信。
④ 使用V-Link做冗余备份时,如下图:
⑤ 解决次优路径问题:
a) AR16访问13.13.13.13/32的网络,由于AR16为ABR,不会接受非骨干区域Area2的ABR AR17发送过来的三类LSA
b) 此时AR16访问13.13.13.13/32的网络走的为低速链路
c) 在Area2区域将AR17和AR16之间建立V-Link,此时AR16个AR17建立一条属于Area0的链路
4. V-Link问题:
(2)邻居不稳定:
路由器ID冲突或修改路由器ID会导致虚链路不稳定
(2)无法接受汇总路由:
如果在V-Link区域的ABR配置了汇总路由对V-Link区域记性路由汇总的发布,此时这条汇总路由无法生效,在V-Link区域的路由器上还是原始路由条目,目的为了防止环路。
① 在Area1中,AR23和AR25之间使用V-link将AR25作为ABR,实现Area2路由通信
② 在Area23上做路由汇总,汇总为10.0.0.0/8;在Area25上做路由汇总,汇总为10.1.0.0/16
③ AR24访问10.1.1.1,最长掩码匹配,下一跳为AR25,将数据包送给AR25
④ AR25收到数据包后,传给邻居AR23,下一跳为AR24,于是将数据包楼传回了AR24,造成了路由环路
(3)V-Link环路:
AR21访问AR14的14.14.14.14,在没有V-link的情况下,AR18不会将三类LSA传递给AR21,所以在AR17和AR18之间建立V-Link,AR17将一类和二类LSA传递给AR18,AR18将转换为三类LSA传递给AR21
④ AR14访问AR21的22.22.22.22,交给AR17,AR17将数据包交给AR16,送给V-Link邻居AR18
⑤ AR16为ABR,关于22.22.22.22/32的LSA:
- AR14从区域0传递一份三类的LSA给AR16,AR16放入路由表
- AR18从区域1传递一份三类的LSA给AR16,由于水平分割的原因,ABR不会接收从普通区域传递过来的是三类LSA,所以不会放入路由表。
AR16将数据包送给AR14,形成环路
解决方法:
① 在AR16个AR18之间建立V-link
② 在AR17和AR18之间建立V-link,并且接入一根物理链路,物理链路的开销小于AR17走AR15到AR18的开销
5. V-Link配置:
邻居已建立,但是因为三类LSA水平分割的原因,没有路由条目
在区域1中建立一条V-Link,使Area2和Area0实现通信:
R2:
[Huawei]ospf
[Huawei-ospf-1]area 1
[Huawei-ospf-1-area-0.0.0.2]vlink-peer 3.3.3.3
R3:
[Huawei]ospf
[Huawei-ospf-1]area 1
[Huawei-ospf-1-area-0.0.0.1]vlink-peer 4.4.4.4
九. OSPF防环机制:
1. 区域内防环:
区域内使用SPF算法,以自己为根,根据LSA的拓扑信息和路由信息,纯天然的防环机制
2. 区域间防环:
- 从一个“真ABR”流出的Network Summary LSA不会在流入其他的“真ABR”:
- 普通区域从骨干区域收到的Network Summary LSA不会在传递给其他的区域(普通区域和骨干区域),称为“OSPF水平分割”
- ABR不会计算任何从非骨干区域传递过来的3类LSA,只会放进数据库
3. 外部路由防环:
5类LSA可以在全网传递,但是用于标识ASBR和开销值的四类LSA只由ABR产生,一个普通区域的路由器收到另一普通区域的五类LSA,但是两个区域之间不存在ABR,所以不会生成只在区域内传递的四类LSA,所以普通区域只把五类LSA放入数据库,但是缺少四类LSA,不会进行外部路由的计算。
十. LSA Flooding:
(1)稳定收敛过程:
① AR1从所有的接口flooding LSA
② AR2、AR3收到LSA后,从除接收到此LSA的接口flooding LSA
③ AR4收到相同的两条LSA,根据LSA选举规则选出一条最好的LSA放入数据库中,同时AR4也会将LSA从接口传给AR3和AR2(AR4认为是不相同的两条LSA)
(2)新的LSA Flooding:
① AR2 Flooding一条更好的LSA,AR4将LSA flooding给AR3
② AR3也收到了此更好的LSA,但数据库中已经存在,于是不再flooding此LSA
(3)旧的LSA Flooding:
① AR3有一条旧的LSA flooding给AR4,AR4不接受,(并将新的传递给AR3,huawei设备没有标明)
(4)3600S LSA Flooding:
① AR3有一条3600S的LSA flooding给AR4,AR4立刻将此LSA从数据库中删除
(5)AR1宕机:
① 网络稳定一段时间后,AR1宕机,AR2和AR3将关于AR1相关的LSA生成的路由删除,但是保留数据库中的LSA(依旧3600S老化)
② AR2、AR3发送新的LSA给AR4,AR4重新计算拓扑,此时拓扑中不在存在AR1的路由信息
(6)AR1重新存在:
① AR1会重新发送LSA,序列号为0x80000000,发送给AR2、AR3,但是由于AR2、AR3中的序号要大于此序列号,拒绝接收,AR2、AR3会将原LSA的序列号传给AR1
② AR1产生新的LSA,将Seq Number作为源序列号+1并重新flooding
十一. SPF:
Shortest Path Fast,最短路径优先,OSPF使用SPF算法在网络图谱中传出最优的路径生
成路由信息放入路由表中。
1. SPF过程:
SPF算法分为三个阶段:
① 根据LSA生成有向图
② 保留最优的有向路径
③ 增加网络号
(1)有向图生成:
根据LSA中的P2P和Trans Net描述生成有向图:
(2)执行SPF计算:
以自己为根,执行SPF计算,将最优的路径保存,将不必要的边全部切掉,当网络中出现去往同一几点相同的开销值时,SPF会画出两张拓扑图用来分别描述着两条路径
最优的路径中总链路数=N(路由器个数)-1
以RTB为中心:
(3)增加网络号:
根据Stub net中的网络信息将网络挂到最优的有向图中
2. SPF特点:
1. OSPF在Area内使用SPF算法,以自己无节点,生成一棵以自己为根的无环的树,保证了无环(区域间可能存在环路)
2. OSPF在OSPFv2中最大的缺点为LSA1和LSA2中既有拓扑信息又有网路信息,当接口IP修改了但是拓扑没有发生变化,但此时发生接口IP变化的的路由器会立刻Flooding新的LSA,所有收到新的LSA的路由器都会进行SPF的重新计算(OSPFv3解决了此问题)
3. I-SPF:
Incremental SPF,增量最短路径优先算法,是指网络中节点发生变化时,针对网络拓扑改变所做出的行为。当网络初次收敛时,路由器会以自己为根,对全网信息使用SPF算法算出最优路径,这种算法称为Full SPF。
而一个区域内一段链路的变化并不会影响其他链路的结构,所以进行Full SPF的计算是没有必要的,只需要对变化的拓扑链路进行单独的SPF计算即可,在OSPF中,区域内由于LSA1类和LSA2类包含着拓扑信息和网络信息,所以任何LSA1和LSA2的变化都会触发ISPF计算(也包括LSA1和LSA2)
原理:
A会以自己为根使用SPF算法进行收敛,当网络稳定后,Root A使用I-SPF算法,此时网段中的4网段出现故障时,不会触发Root A的重新计算。
当网络中出现新的设备G,路由器D在网络中通告路由器G的路由信息,此时Root A使用I-SPF算法只对路由器G的路由网段进行计算,而不会全网重新计算。
4. PRC:
Partial Route Calculation,部分路由计算,是指当网络中路由发生变化的时候,只对发生变化的路由进行重新计算。
SPF算法中将区域内算出一棵最优的以自己为根的树,所有的外部路由(3、4、5、7)的路由都充当枝叶挂在ABR和ASBR上,当3、4、5、7的LSA内容发生变化时,是不会影响已经计算好的拓扑树,所以当区域外的路由发生变化时,时不需要执行SPF算法重新计算拓扑树的,此时只需要使用RPC算法对网络中的路由重新计算即可。
5. 按照优先级进行收敛:
OSPF的LSA中有优先级字段,可以按优先级收敛是指在大量路由情况下,能够让某些特定的路由(例如指定IP前缀的路由)有限收敛的一种技术,因此用户可以把和关键业务相关的路由配置成相对较高的优先级,使这些路由更快的收敛,从而使关键的业务受到的影响减小。通过对不同的路由配置不同的收敛优先级,达到重要的路由先收敛的目的,提高网络的可靠性。
配置命令:
可以通过配置IP前缀列表或tag路由将特定路由过滤出来,通过对不同的路由配置不同的收敛优先级,达到重要的路由先收敛的目的,提高网络的可靠性。OSPF路由收敛优先级为critical>high>medium>low,只有本地有效。
[Huawei]ip ip-prefix 1 index 5 permit 192.168.1.0 24
[Huawei-OSPF-1]prefix-priority critical ip-prefix 1
6. 智能定时器:
在进行SPF计算和产生LSA的时候用到的一种定时器,该定时器首次超时时间是一个固定的时间。如果在定时器超时前,又有触发定时器的时间发生,则该定时器下一次的超时时间会增加,智能定时器默认LSA间隔为2S,SPF计算默认为5S。
- 当R6发送了一条新的LSA给R7,如果网路出现变化,此时R6必须等待2S之后才能将新的LSA发送给R7,如果网络中不停的出现状态,此时R6会发送大量的LSA,造成网络瘫痪,此时使用智能定时器后,每次智能定时器时间内产生新的LSA,定时器数值都逐渐增大,减少LSA,防止网络瘫痪。
- 当R6发送了一条新的LSA给R7,R7会进行SPF计算,如果网路出现变化,R6重新发送LSA给R7,此时R7必须等待5S之后才弄能重新进行SPF计算,如果网络中不停的出现状态,此时R6会发送大量的LSA给R7,R7不停的进行SPF计算,为了防止R7频繁进行SPF计算出现宕机,此时可以使用智能计时器增大SPF计算时间,防止宕机发生。
智能定时器配置:
[Huawei-OSPF-1]timer LSA-generation 3 5 10---设置产生同一LSA间隔为3S,设
置初次产生LSA的延迟时间为5
毫秒,两次产生相同的LSA iD的LDP之间的递增时间为10毫秒
[Huawei-OSPF-1]timer LSA-max-age 3---设置产生LSA的最大老化时间500S,默认为20min
[Huawei-isis-1]timer LSA-refresh 400--设置LSA的刷新时间为400S,默认为15min
[Huawei]timer spf 10---修改SPF重新计算的时间间隔为10毫秒(默认为5S)
十二. OSPF选路:
1. 开销值计算:
默认情况下,OSPF接口开销值与接口的带宽有关,计算公式为:
Bandwidth-reference/bandwidth
- 参考带宽Bandwidth-reference默认取值为100Mb=100 000Kbps=100 000 000bps
- 实际带宽bandwidth的单位使用bit/S,以太网接口的开销默认为1,不足1的按1计算。
- 所以常见接口开销值为:
a) 十兆:100Mb/10Mb=10
b) 百兆:100Mb/100Mb=1
c) 千兆:100Mb/1000Mb=0.1==1
d) 串口E1:100Mb/2.048=48.82==49
如果想要修改参考带宽,在OSPF进程下使用以下命令修改:
[Huawei-ospf-1]bandwidth-reference 1000
如果直接改动接口OSPF开销值,直接在接口下使用以下命令修改:
[Huawei-GigabitEthernet0/0/0]ospf cost 10-----增加花费10
注1:计算Cost计算的为路由传递的入方向Cost,所以修改Cost值在路由传递方向的入接口进行修改
注2:默认接口修改Cost值只能对区域内和区域间生效,对引入路由(E2)无效
2. 路由选路规则:
① 存在同一目的地的不同LSA时,LSA1/2路由>LSA3路由>LSA5、LSA7路由
② 存在同一目的地同一类型LSA时,骨干区域优于非骨干区域
③ 存在同一外部路由不同Type类型时,E1优于E2
④ 外部路由都为E1,Cost越小越优先
⑤ 外部路由都为E1,并且Cost相等,那么进行负载均衡
⑥ 外部路由都为E2,外部Cost越小越优先
⑦ 外部路由都为E2,外部Cost值相等,则到ASBR路由器cost小的路径优先
⑧ 外部路由都为E2,Cost值相等,到ASBR路由器cost相等,则进行负载均衡
十三. OSPF扩展特性:
OSPF扩展特性主要包含三方面,分别为:
① LSDB超载机制
② 按需电路
③ Stub路由器
1. LSDB超载机制:
如果路由器内存容量较小,无法存储太多的AS外部路由信息,可能会导致路由器宕机,为了防止路由器宕机,此时可以使用LSDB超载机制限制LSA的数量。
如果超出LSDB限制,此时首先删除自身产生的五类LSA,如果此时依旧大于超出限制,只接受限制LSA的数量(若果已经超出限制LSA,默认不会删除原来的)。
[Huawei-ospf-1]lsdb-overflow-limit 20
2. 过滤策略:
(1)本区域过滤:
[Huawei-ospf-1]filter-policy 2000 import-----------对生成路由表进行路由策略(只对本设备有效)
[Huawei-GigabitEthernet0/0/1]ospf filter-lsa-out all---接口下使用此命令对当前所有的LSA实现过滤(包含1类和2类)
注:此命令并不是用来转对实现1类2类的过滤,主要用于多链路减少LSA泛洪行为
此图中,AR1和AR4之间为附载分担,AR2和AR3会将AR1生成的LSA传递给AR4,AR4收
到两份相同的关于AR1生成的LSA,所以只会选择其中一份进行SPF算法,如果当前AR1端
在大量的1类LSA,AR4会升到大量两份相同的一类LSA,所以是没有必要的,所以可以
直接在AR1的G0/0/0和G0/0/1上使用命令ospf filter-lsa-out all过滤此接口的所以LSA,此
时AR4只会收到一份LSA,减少不必要的LSA。
(2)三类过滤:
① 区域下配置:
[Huawei-ospf-1-area-0.0.0.0]filter 2000 export-----在ABR上实现对出方向的三类LSA做过滤
(一类LSA的区域下配置)
[Huawei-ospf-1-area-0.0.0.0]filter 2000 import-----在ABR上实现对入方向的三类LSA做过滤
(生成三类LSA的区域下配置)
[Huawei-ospf-1-area-0.0.0.0]abr-summary 10.10.0.0 255.255.0.0 not-advertise-----在ABR上通过聚合路由默认抑制明细,不通过聚合路由,等同于过滤路由
② 接口下配置:
[Huawei-GigabitEthernet0/0/0]ospf filter-lsa-out summary acl 2000 ------对出(入)方向的LSA做过滤(只对3、5、7起作用)
(3)五(七)类过滤:
① 在ASBR上:
[Huawei-ospf-1]filter-policy 2000 export-------在ASBR上实现引入外部路由时对路由做策略
[Huawei-ospf-1]asbr-summary 10.10.0.0 255.255.0.0 not-advertise-----聚合路由默认抑制明细,不通过聚合路由,等同于过滤路由
② 在接口下:
[Huawei-GigabitEthernet0/0/0]ospf filter-lsa-out summary acl 2000 ------对出(入)方向的LSA做过滤(只对3、5、7起作用)
十四. IE面试题:
1. Router-ID重复:
(1)直连Router-ID重复:
两台路由器Router-ID重复,当AR1收到AR2的Hello报文,发现Router-ID为自身的Router-ID,认为Router-ID重复,将无法建立邻居关系
(2)非直连Router-ID重复:
① 同区域Router-ID冲突
如图,AR1和AR3Router-ID重复
a) 邻居建立:
- AR2会从G0/0/0和G0/0/1端口收到两份都是Router-ID标识为1.1.1.1的hello报文
- AR2会将网络拓扑信息理解为自身与对端1.1.1.1的设备使用双线连接,于是与对端建立邻居关系
b) 路由传递:
- AR1将LSA传递给AR2(Seq=a)
- AR2收到LSA后,放入数据库中,并将此LSA在从G0/0/1口传递给AR3
- AR3收到LSA后,发现此LSA的Adv为自身的Router-ID,检查响应的拓扑信息,发现拓扑信息不符合当前接口状态,于是立马发送a+1的LSA传递给AR2
- AR2收到Adv为1.1.1.1,Seq为2001的LSA后,将其从G0/0/0口传递给AR1,AR1收到LSA后,发现此LSA的Adv为自身的Router-ID,检查响应的拓扑信息,发现拓扑信息不符合当前接口状态,于是立马发送a+2的LSA传递给AR2,AR2收到后,在传递给AR3,AR3又会发送新的LSA传给AR2,如此循环往复,两端设备不断发送Seq增加的LSA进行更新
- huawei设备在一段时间后认为网络的Router-ID存在问题,于是将其中一台的Router-ID设为接口的IP地址,解决Router-ID冲突的问题
② 不同区域Router-ID冲突:
a) 邻居建立:
- AR2会从G0/0/0和G0/0/1端口收到两份都是Router-ID标识为1.1.1.1的hello报文
- AR2会将网络拓扑信息理解为自身与对端1.1.1.1的设备使用双线连接,于是与对端建立邻居关系
注:路由器并不在乎相同Router-ID的Area-ID是否相同
b) 路由传递:
- AR2为ABR设备,将区域内的1、2类LSA转变为3类LSA传递给其他区域
- AR2生成三类LSA,LS ID为网段信息,Advertise Router为自身Router ID2.2.2.2
- AR1和AR3在收到AR2发送过来的三类LSA后,检查无误,放入数据库中,所以针对此种情况的Router ID冲突,只传递三类LSA是没有任何问题的
- AR1上存在静态路由,将其引入OSPF进程中,此时AR1变为ASBR设备,全AS内泛洪五类LSA,Seq Number=a,LS ID为网段信息,Advertise Router为自身Router ID1.1.1.1
- AR2在收到五类LSA后,直接传递给发现此LSA的Adv为自身的Router-ID,检查LS ID,发现当前自身无此外部路由,立刻发送一份Age为3600的毒化LSA给AR2。Seq Number=a+1,
- AR2收到AR3发送过来的毒化LSA后,删除响应的外部路由,并将此LSA传递给AR1,
- AR1收到毒化五类LSA后,删除响应的外部路由,但自身确实存在响应的外部路由,重新生成一份五类LSA,Seq为a+1+1,将其从G0/0/0口传递给AR2,AR2又传递给AR3,
- AR3,AR3又会发送新的毒化五类LSA传给AR2,如此循环往复,两端设备不断发送Seq增加的LSA进行更新,所以针对此种情况的Router ID冲突,传递五类LSA存在问题
注:实验发现其中一台设备并没有自动更改自己的Router ID,而是在不断重复此过程
2. 链路故障访问:
(1)AR1和AR2认证密码错误,但是有此网段的路由并且进行了LSA的Flooding,AR4访问AR1的192.168.1.1能通吗?
答:不能通
去方向:AR2将192.168.1.0/24的一类LSA和二类LSA通告给AR4,AR4有去往192.168.1.0/24的路由,下一跳为AR2;AR2收到后,直连网段,将数据包交给AR1
回方向:AR1和AR2没有形成邻居关系,所以不能通过AR2去往AR4;由于ABR不会将从普通区域传递过来的是三类LSA放入路由表,所以AR3不会将AR4三类LSA传给AR1,AR1回将数据包丢包
(2)AR1和AR3认证密码错误,但是有此网段的路由并且进行了LSA的Flooding,AR4能够访问AR3的192.1682.2接口吗?
答:能通
去方向:AR1将192.168.2.0的一类和二类LSA传递给AR2,AR2将此LSA传递AR4,AR4访问192.168.2.2将数据包送给AR2,AR2送给AR1,AR1发现为直连网段,交给AR3
回方向:AR1和AR3没有形成邻居关系,所以AR1不会将AR4的一类和二类LSA传给AR3;由于AR3为ABR,连接AR1的链路没有形成OSPF邻居关系,所以他会接受普通区域传递过来的三类LSA,AR4生成的三类LSA会被AR3放入路由表,此时AR3访问AR4走区域1