文章目录
一、ospf 是什么?
OSPF(Open Shortest Path First,开放式最短路由优先)是一种典型的链路状态路由协议,由IETF的OSPF工作小组开发,是目前应用最广泛的IGP(内部网关协议)之一。OSPF支持VLSM(变长的子网掩码),支持路由汇总等,引入Area(区域)的概念使OSPF能够支持更广大规模的网络。目前OSPF主要有两个版本,一个是OSPFv2,这版本主要针对IPv4,另外一个版本是OSPFv3,改版本主要针对IPv6。
二、ospf 基本信息
1)ospf 区域内使用SPF算法(Dijkstra算法)计算无环路由
2)ospf (网络层协议)运行在IP之上,协议号:89
3)优先级:内部网关协议:10 ,外部网关协议:150
路由生成特点
1)快速收敛:
触发更新----及时相应
增量更新----更新高效
周期更新----每隔30min泛洪一次拓扑表
维护三张表----邻居表、拓扑表、路由表
邻居表:
利用Hello包发现与维持邻居关系
由于Hello小,占用资源少
快速检测建立状态连接(Hello包发送周期为10s)
拓扑表:由于OSPF属于链路状态协议,所以会构建网络拓扑信息
路由表:根据拓扑信息再通过SPF强大算法计算生成
2)组播、单播路由更新:使得ospf更新更为高效
3)支持CIDR(无类别域间路由选择),VLSM(可变长子网掩码):支持路由聚合(路由汇总),路由计算携带掩码(路由更加精确)
4)支持认证(明文认证/MD5 认证): 抵御恶意的路由Flood攻击
5)区域内无环路由协议:SPF算法特点
6)支持等价负载均衡:通告的路由必须是源于相同的区域才能负载均衡
7)ospf路由建立过程: ospf邻接建立----交换LSA构建LSDB-----生成本地路由表
8)路由信息交互与路由计算分离: OSPF路由计算不以赖邻居的路由通告
ospf报文有类型及作用?
1、Hello报文用于发现邻居、维护邻居关系、选举DR/BDR、保证邻居的双向通信。
2、DBD(Database description)用于选举DR/BDR、交互数据库摘要信息。
3、LSR(LSA Request)向对方请求对方有而自己没有的LSA摘要信息。
4、LSU(LSA Update)向请求发送LSA一方发送LSA信息更新报文。
5、LSACK(Link State Acknowledgement)对发送更新报文的邻居进行确认。
ospf是怎么工作的?
1、在路由器启用ospf进程接口处互相发送自己的Hello报文,并且匹配Hello报文中的各种参数,如果参数匹配,就进行下一步,建立邻居。
2、接口根据ospf网络类型建立邻居或者邻接关系,邻居关系就只是交互Hello报文,并不知道邻居的拓扑信息,邻接关系就是两个邻居之间相互交互各种报文,两台路由器都各自拥有完整的拓扑信息从而实现LSDB数据库同步。
3、路由器根据对方建立的邻居或者邻接关系发送不同的LSA报文,这些LSA中包含了路由器的ospf进程信息。
4、当接受到邻居路由器发过来的LSA之后该路由器会它加入到LSDB中,并且再根据路由器自身角色对发送过来的LSA进行泛洪。
5、当一个网络中所有路由器都完成了LSDB同步时,网络收敛完成。
6、网络收敛完成后,区域内每个路由器以自己为树根,计算到达每一个节点的最短路径,画出最短路径的矢量图,这个拓扑图就是SPF算法树。
7、根据SPF算法算出的矢量图算出到达每个节点的最优路径,最后放进路由表中。
Router Id是什么,它的规则是怎么样的?
1、路由器在履行自己的职责时,为了区别于其他路由器,于是每台路由器都有了属于自己的名字(Router ID),Router ID是用32比特位来命名的,在配置ospf时,Router ID的规则是:手动配置优先,默认逻辑接口中最大的IP地址优先,否则路由器物理地址最大的优先。
ospf的八种状态机
第一种、Down 失效状态:
这是邻居的初始状态,
表示路由器还没有从邻居收到任何信息。
也是最开始的状态。
• 停滞于此状态表明路由器没有从邻居处接收到Hello报文。
第二种、Attempt 尝试状态:
此状态只在NBMA网络上存在,表示路由器没有收到邻居的任何信息,
但是已经周期性地向邻居发送了Hello报文;
如果在Router Dead Interval的时间间隔内未收到邻居的Hello报文,
则转为Down状态。
• 停滞于此状态表明路由器向已配置的邻居发送了单播Hello报文,但没有收到该邻居的Hello报文。
第三种、Init 初始状态:
表示路由器已经从邻居收到了Hello报文,
但是自己不在所收到的Hello报文的邻居列表中。
这说明自己尚未与邻居建立起双向通信关系。
• 停滞于此状态表明路由器收到了邻居的Hello报文,但Hello报文中没有包含接收路由器的OSPF RID(Router ID)。
第四种、2-Way 双向通信状态:
表示路由器与邻居的双向通信关系已经建立(即已经建立起了邻居关系),
但是尚未建立起邻接关系。
• 停滞于此状态表明路由器彼此都收到了对方的Hello报文,并且都从Hello报文中发现了自己的OSPF RID。对于以太网链路上的非DR/BDR路由器来说,这种状态是可以接受的。
第五种、ExStart 信息交换初始状态:
邻居状态变成此状态以后,
路由器开始向邻居发送DD报文。
Master/Slave关系是在此状态下形成的,
初始DD序列号也是在此状态下确定的。
在此状态下发送的DD报文不包含链路状态描述。
• 停滞于此状态表明邻居路由器之间的MTU不匹配或OSPF RID重复。
第六种、Exchange 信息交换状态:
在此状态下,
路由器与邻居之间相互发送包含链路状态信息摘要的DD报文。
• 停滞于此状态表明邻居路由器之间的MTU不匹配。
第七种、Loading 信息加载状态:
在此状态下,
路由器与邻居之间相互发送LSR报文、LSU报文、LSAck报文。
• 停滞于此状态表明可能存在硬件故障或硬件故障或MTU不匹配。
第八种、Full 完全邻接状态
表示LSDB同步过程完成,
路由器与邻居之间形成了完全的邻接关系。
• Full状态是OSPF路由器的一个最常见的状态。如果一个路由器停留在另外一个状态,那么就说明了在路由器建立临接关系的过程中是存在问题的。唯一的例外是2-way状态,是在广播网络中常见的。在广播网络中,邻居之间(除了和DR,BDR之外)会最终处于2-way状态。
ospf的网络类型详解
首先讲解一下,什么是MA网络?
MA网络就是多路访问网络(Multiaccess ),它分为两种:一是广播(Broadcast),二是非广播的多路访问网络(NBMA)MA网络在ospf中需要选出DR和BDR,用来减小LSA泛洪。
1)P2P(点对点)
传输介质为(PPP, HDLC, FR点对点子接口)ospf默认网络类型为P2P
邻居发现: 自动
DR/BDR选举:无
Hello/Dead间隔时间: 10/40s
2)BMA(广播型多路访问)
传输介质为(Ethernet)
邻居发现:自动
DR/BDR:存在
Hello/Dead间隔时间10/40s
Next-hop:不改变
3)P2MP (点对多点)
传输介质: 不存在
邻居发现:自动
DR/BDR:不存在
Hello/Dead间隔时间30/120s
Next-hop: 包含所有节点的32位的主机路由
4)NBMA(非广播多路访问)
传输介质: FR(帧中继),FR多点子接口
邻居发现: 手动建立邻居(相互指定)
DR/BDR选举:存在
Hello/Dead时间: 30/120s
Next-hop: 参考BMA
5)Vlink (虚链路)
常见LSA类型讲解
背景:ospf 是一种基于链路状态的动态路由协议,每台ospf路由器都会生成相关的LSA,并将这些LSA通告出去。路由器收到LSA后,会将它们存放在链路状态数据库LSDB中。
Type-1 LSA (Router LSA): 每台路由器均会产生,用来描述路由器的直连链路状态和开销值。Type-1 LSA只能在所属区域内部泛洪,不能泛洪到其他区域。
Type-2 LSA (Network LSA): 它由DR产生,主要用来描述该DR所在网段的网络掩码以及该网段内有哪些路由器。Type-2 LSA只能在所属区域内部泛洪,不能泛洪到其他区域。
Type-3 LSA (Network Summary LSA):它是由ABR路由器产生的,ABR路由器将所连区域内的Type-1和Type-2 LSA转换成Type-3 LSA,用来描述区域间的路由信息。Type-3 LSA 可以泛洪到整个自治区域内,但是不能泛洪到Totally Stub区域和Totally NSSA区域。
Type-4 LSA (ASBR Summary LSA): 它是由ASBR所在区域的ABR产生的,用来描述到ASBR的路由。Type-4 LSA 可以泛洪到整个AS内部,但是不能泛洪到stub,Totally stub,NSSA 和Totally NSSA区域。
Type-5 LSA (AS External LSA): 它是由ASBR所在区域的ABR产生的,用来描述到AS外部网络的路由。Type-5 LSA可以泛洪到整个AS内,但是不能泛洪到stub,Totally stub,NSSA 和Totally NSSA区域。
Type-6 LSA (Group Membership LSA): 在MOSPF中用于标识组播成员使用的用户组播路由。
Type-7 LSA (NSSA LSA): 它是由NSSA区域或Totally NSSA区域的ASBR产生的,用来描述AS外部的路由。Type-7 LSA 只能出现在所属区域NSSA区域或Totally NSSA区域内部。
NBMA场景问题
NBMA的理解,首先是造一个NBMA的环境(举例R1,其他路由器类比),底层配置是配置NBMA网络类型 link-protocol fr
然后在帧中继中搭好专线
fr map ip 155.1.0.2 102
fr map ip 155.1.0.3 103
分支之间没有搭建专线,分支之间不能互通,运营商与分支之间可以互通,此时需要把R2、R3优先级改为0,避免DR选举抢占,让R1成为R2、R3的DR。当大家都配置OSPF时,此时R2、R3却不能通信,原因如下图所示:因为hello报文的交互需要组播,此时我们需要手动指定邻居(单播建立邻居关系)
peer 155.1.0.2
peer 155.1.0.3
邻居建立之后,我们需要让R2通过201专线到达R1,再通过R1到达R3。
fr map ip 155.1.0.3 201
P2MP与P2P的场景
注意点是邻居建立时间要改为一致,OSPF才能建立。
典型vink场景问题
现网尽量避免虚链路问题,虚链路连接的命令是peer对端router-id。
路由优先级比较
外部类型2引入沿途不累加开销
场景一:
路由优先级比较场景LSA1>LSA4,无论R2-R4开销开多大都走R2-R4,拓扑比LSA算的更准。
场景二:
stub、totally stub和nssa、totally nssa场景拓扑图如下
下发缺省问题:
下发缺省的前提是ABR必须要有这条到外面的缺省路由
命令是 : detault-route-advertise
在引入外部路由时,需要避免因为某ip挂掉而导致路由汇总由精确变为不精确,从而导致环路的产生,决解办法是在ABR上手动添加静态路由空接口。(ASBR引入也需要注意到这个细节)如下所示:
OSPF报文认证
vlink-peer 150.1.1.1 md5 1 plain HUAWEI 虚链路添加认证
vlink-peer 150.1.2.2 authentication-null 虚链路空认证
双方都要认证才能成功,若一方区域认证,一方接口认证也可以认证成功。
区域配置命令:
接口认证配置:
查看MD5认证是否成功看邻居有没有断(dis ospf peer brief),如果邻居断了,说明认证不成功,否则反之。
静默接口
节约带宽,提高性能。一般跟终端相连,常间配置方法有两种,如下:
这个是挨个挨个接口配置,过程比较麻烦。
第二种是直接让全部接口配置成静默接口,然后再undo不需要静默的接口就好了,如下:
LSA5、LSA7之间比较优先级
第一步我们需要看定义的标准是什么(默认RFC1583),默认是比较优先级。
但是我们可以更改标准,使用undo rfc1583 compatible之后采用的标准就变为rfc2328标准了,这时候就不比开销了,这时候比较区域号,选择区域号大的优先。
OSPF转发地址(FA地址)
目的:解决转发过程中次优路径问题。
先找转发地址,而不是先找通告者,再去找目标地址(外部网络)我们也可以手动执行强制指定路由器执行七转五。命令:nssa translator-always
当我们在执行了手动执行七转五之后又把配置删除时(命令:nssa translator-always suppress-forwarding-address )容易发生环路,如下环路:
nssa translator-always suppress-forwarding-address 清空转发地址命令
FA存在场景如下图:
PRC
智能定时器
基本配置如下
第二个调成0意思是LSA一变化就马上改变
配置Smart-discover
FRR
解决路由器故障时,路由不能快速跟着改变路由的问题。
符合接盘侠的条件如下:
次拓扑全配OSPF无其他要点
此时说明已经成为接盘侠了。如果配置接盘侠不合格,没有成功,则发生故障时,使用SPF算法也就是时间会长一点而已。
OSPF Database Overflow
LSA更新、同步机制(结论)
OSPF排错诊断
邻居无法建立
1、OSPF 计时器不匹配
2、OSPF区域ID不匹配
3、OSPF 区域类型不匹配
*末梢与完全末梢可以建立邻居关系
4、OSPF认证
5、双方router-id相同
6、前缀或掩码不一致
*P2P网络类型忽略
*华为允许掩码或前缀不一致
*思科仅允许掩码不一致
MA网络类型考虑掩码与地址
MA网络仅存在一条LSA2,仅描述DR对应掩码
7、OSPF网络类型不匹配
NBMA与P2P、MA、P2MP无法建立
一下网络类型可以建立邻居
MA与P2P—无法路由计算
MA与P2MP----无法路由计算
P2P与P2MP—需修改OSPF计时器
8、
排错工具:
debug ospf error
dis ospf error
OSPF最终拓扑
先配置好底层环境之后直接开干
实验需求
1.区域ID如图所示;R1能与R2,R3通信,R2,R3不能直接通信
所有路由器的router-id设置为150.1.X.X/32(X为路由器ID)
其中SW1不支持组播转发(此处模拟器BUG)
交换机LSW2配置:
vlan batch 10 20 30
interface GigabitEthernet0/0/1
port hybrid pvid vlan 10
port hybrid untagged vlan 10 20 30
interface GigabitEthernet0/0/2
port hybrid pvid vlan 20
port hybrid untagged vlan 10 20
interface GigabitEthernet0/0/3
port hybrid pvid vlan 30
port hybrid untagged vlan 10 30
R1:
ospf network-type nbma
ospf 1 router-id 150.1.1.1
peer 155.1.0.2
peer 155.1.0.3
R2:
ospf network-type nbma
ospf 1 router-id 150.1.2.2
peer 155.1.0.1
R3:
ospf network-type nbma
ospf 1 router-id 150.1.3.3
peer 155.1.0.1
2.蓝色区域不包含LSA4,LSA5,可以引入外部路由
R4:
ospf 1
area 0.0.0.2
nssa
R5:
ospf 1
area 0.0.0.2
nssa
R6:
ospf 1
area 0.0.0.2
nssa
3.10.1.0.0/24;10.1.1.0/24属于区域1
10.1.2.0/24;10.1.3.0/24;150.1.1.1/32不属于OSPF网络;
这只是一个被告知的条件
4.R2,R4启用区域MD5认证,R3,R5互联接口启用MD5认证
R2:
ospf 1
area 0.0.0.0
authentication-mode md5 1 plain huawei
R3:
interface GigabitEthernet0/0/2
ospf authentication-mode md5 1 plain huawei
R4:
ospf 1
area 0.0.0.0
authentication-mode md5 1 plain huawei
R5:
interface GigabitEthernet0/0/2
ospf authentication-mode md5 1 plain huawei
5.为了防止R4,R5互联链路故障导致骨干区域分裂,R2,R3部署VLINK作为备份
R2:
vlink-peer 150.1.3.3
R3:
area 0.0.0.1
vlink-peer 150.1.2.2 smart-discover md5 1 plain huawei
6.优化区域0不包含LSA2
R2:
interface GigabitEthernet0/0/1
ospf network-type p2p
R3:
interface GigabitEthernet0/0/1
ospf network-type p2p
R4:
interface GigabitEthernet0/0/2
ospf network-type p2p
R5:
interface GigabitEthernet0/0/2
ospf network-type p2p
7.精确汇总10.1.0.0/24,10.1.1.0/24
R2:
abr-summary 10.1.0.0 255.255.254.0
R3:
abr-summary 10.1.0.0 255.255.254.0
精确汇总10.1.2.0/24,10.1.3.0/24
import-route direct route-policy DIR->OSPF
route-policy DIR->OSPF permit node 10
if-match ip-prefix NET10
ip ip-prefix NET10 index 10 permit 10.1.2.0 23 greater-equal 24 less-equal 24
8.区域0不包含150.1.6.6/32,OSPF网络内部节点可以访问外部网络(未学跳过)
9.R1下发缺省路由并累加沿途开销,实现所有节点均可以访问150.1.1.1/32
R1:
default-route-advertise always type 1
10.保障R1访问10.1.2.0/24,10.1.3.0/24使用R3作为下一跳,但是通告者为R4
R4:
nssa translator-always
R2:
ospf cost 10
11.若R2,R4互联链路故障,R4可以快速将流量切换到备份路由上
R4:
frr
loop-free-alternate
12.R1与R2,R3之间检测到链路故障时,快速断开OSPF邻居关系(未学跳过)
13.设置合理的SPF计算的间隔时间,可以避免占用过多的路由器内存和带宽资源
? 设置SPF计算的最长间隔时间10s
? 设置SPF计算的初始间隔时间1s
? 设置SPF计算的基数间隔时间0.5s
R1:
spf-schedule-interval intelligent-timer 10000 1000 500
R2:
spf-schedule-interval intelligent-timer 10000 1000 500
R3:
spf-schedule-interval intelligent-timer 10000 1000 500
R4:
spf-schedule-interval intelligent-timer 10000 1000 500
R5:
spf-schedule-interval intelligent-timer 10000 1000 500
R6:
spf-schedule-interval intelligent-timer 10000 1000 500
14.修改AREA 1的Hello间隔为默认的1/3, 设置VLINK设置主动发送Hello报文
R1:
interface GigabitEthernet0/0/0
ospf timer hello 10
R2:
interface GigabitEthernet0/0/0
ospf timer hello 10
vlink-peer 150.1.3.3 smart-discover
R3:
interface GigabitEthernet0/0/0
ospf timer hello 10
vlink-peer 150.1.2.2 smart-discover md5 1 plain huawei
OSPF常见命令如下
dis ospf int g0/0/0
dis ospf peer brief
dis ip route-table protocol ospf
dis ospf interface
dis ospf peer brief
dis ospf brief (stub)
ospf dr-priority 0
dis ospf lsdb router self-originate
dis ospf abr-asbr
dis ospf routing
dis ospf lsdb summary X.X.X.X
dis ospf vlik
dis ospf lsdb ase
dis ospf lsdb ase self-originate
dis ospf lsdb asbr
dis ospf error interface e0/0/0
vlink-peer 150.1.1.1 md5 1 plain HUAWEI 虚链路添加认证
vlink-peer 150.1.2.2 authentication-null 虚链路空认证
nssa translator-always suppress-forwarding-address 清空转发地址命令
dis ospf lsdb ase X.X.X.X 可以查看FA地址
ospf timer hello 5 hello包间隔时间
ospf timer dead 15 收不到hello包多久就认为对方已经挂掉了
ospf smart-discover 启用smart-discover
spf-schedule-interval intelligent-timer 5000 100 100 设置SPF智能定时器
lsa-originate-interval 0 LSA产生间隔
lsa-originate-interval intelligent-timer 5000 500 1000 设置LSA接收处理的智能定时器
dis ospf routing X.X.X.X
lsdb-overflow-limit numer 设置ospf中lsdb的外部LSA的最大数目
dis ospf error 查看ospf错误信息
debug ospf error 排错工具