ospf路由 华3_[转载]华三OSPF学习笔记

本文详细介绍了OSPF路由协议的基本原理,包括其优点、工作过程、分层结构、路由器角色、网络类型以及DR/BDR选举。同时,讲解了OSPF报文类型、邻居关系建立和LSDB更新的过程。此外,还提供了OSPF的配置和优化技巧,如接口网络类型、DR优先级、接口开销和报文定时器的调整,以及如何引入默认路由。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、OSPF简介:

RIP是一个距离矢量路由协议,使用过程中,有以下限制:

网络扩展不好

周期性广播消耗带宽资源

路由收敛速度慢(30s)

以跳数作为度量值

存在路由环路

OSPF的优点:(链路状态路由协议)IP协议89号

适应范围广——支持各种规模的网络,最多可支持几百台路由器。

快速收敛——在网络的拓扑结构发生变化后立即发送更新报文,使这一变化在自治系统中同步。

无自环——由于OSPF根据收集到的链路状态用最短路径树算法计算路由,从算法本身保证了不会生成自环路由。

区域划分——允许自治系统的网络被划分成区域来管理,区域间传送的路由信息被进一步抽象,从而减少了占用的网络带宽。

等价路由——支持到同一目的地址的多条等价路由。

路由分级——使用4类不同的路由,按优先顺序来说分别是:区域内路由、区域间路由、第一类外部路由、第二类外部路由。

支持验证——支持基于接口的报文验证,以保证报文交互和路由计算的安全性。

组播发送——在某些类型的链路上以组播地址发送协议报文,减少对其他设备的干扰。

二、OSPF协议基本原理

工作过程:邻居发现、路由交换、路由计算、路由维护

1、邻居表:记录所有建立了邻居关系的路由器,包括相关描述和邻居状态。会定期的相互发送hello报文来维护,若在一定的周期内没有收到领居回应的hello报文,则认为邻居路由器失效,将它从邻居表中删除

2、链路状态数据库表(LSDB):此表里包含了网络拓扑中链路状态的通告。。每台路由器在同一个区域内LSDB表一样

3、路由表:在获得完整LSDB表后,进行SPF算法,形成最优路由加入路由表

OSPF协议路由生成过程:

1、生成LSA描述自己的接口状态

每台路由器都根据自己周围的接口状态生成LSA(接口状态up或down)、链路开销、IP地址/子网掩码

链路开销与接口带宽成反比

2、同步ospf区域内的每台路由器的LSDB

ospf路由器通过交换LSA来实现LSDB的同步

3、使用spf计算路由

ospf路由器用spf算法以自身为根节点计算出一棵最短路径树

如果通过SPF算法发现到达同一目标的路径cost值相同,就将两条路由同时加入路由表,形成等价路由

COST值(开销)算入口的

三、分层结构

1)、骨干区域与非骨干区域

区域的边界是路由器,而不是链路。一个网段只能属于一个区域,或者说每个运行ospf的接口必须属于某个特定的区域。

每个区域必须与骨干区域相连(区域0)

骨干区域自身也必须保持连通

区域划分的好处:

减少区域内LSA的数量

便于管理

减少路由震荡的影响

area0:

主要为快速、高效的传输数据包,一般不接用户(防止自环,节省带宽)

其他area:主要连接用户,所有数据必须经过area0

区域内各路由器标识:

ABR:区域边界路由器(接口属于两个区域以上,且均有一个接口属于area0)

ASBR:自治系统路由器(有一个接口属于area0,还有接口属于外部路由,做引入的)

Internal :域内路由器(所有接口都属于同个区域)

Backbone:骨干路由器(至少有一个接口属于area0)

2)、Router ID

Router

ID:是一个32bit(位)无符号整数,可以在一个自治系统中唯一的标识一台路由器(是本地的概念)

选举方式:

手工配置;

若有Loopback接口,则选其中IP地址大的;

若无,则选物理接口(必须UP)下,IP地址大的。。失效后重新选

3)、ospf网络类型

1、ospf的四种网络类型:dis ospf interface g0/0/0

广播(Brodcast)类型:当链路层协议是Ethernet(以太网)、FDDI(光纤分布接口)时,ospf默认认为网络类型是广播,在该网络中,通常以组播形式(224.0.0.5和224.0.0.6)发送协议报文。

NBMA(非广播多点可达网络):当链路层是帧中继(FR)、ATM(异步传输模式)或X.25(面向连接的)时,ospf默认类型是NBMA(全互联),以单播形式发送报文。

如果一个网络是NBMA时,ospf的解决方法:

P2MP(点到多点):没有一种链路层协议被默认为P2MP网络。是通过其他网络类型强制更改的。常用将NBMA改为P2MP网络,,,,以组播形式(224.0.0.5)发送协议报文,可以手动修改为单播方式

P2P(点到点)(串行接口):当链路层协议为PPP、HDLC时,网络默认为P2P。以组播(224.0.0.5)发送协议报文

ospf的hello报的时间间隔与网络类型的关系:

广播  点到点

NBMA

P2MP

hello :  10s  10s  30s  30s

老化:  40s  40s  120s

120s

ospf的DR/BDR选举与网络类型的关系:

广播

点到点  NBMA  点到多点

DR/BDR  需要  不需要

需要  不需要

只要是多点可达的网络,需要选择DR/BDR

2、NBMA网络的配置原则

由于发送报文方式为单播,所以要手工配置邻居和相邻路由器是否有选举权

NBMA必须是全连通的,任一两台路由器都要建立虚链路。如果

部分接口没有可达,则将接口配置成P2MP;如果路由器对端只有一个路由器,可以将其改为P2P模式

NBMA与P2MP的区别

a、NBMA是指全连通、非广播、多点可达,P2MP不需要

b、NBMA需要选举DR和BDR,而在P2MP网络中不需要

c、NBMA是一种默认网络类型,而P2MP是强制更改的

d、NBMA采用单播,需要手工配置邻居,P2MP是组播

4)、DR与BDR的选举(DR和BDR是针对路由器接口而言的)需要40s

选举制(DR/BDR)--------实习制(DR坏了,BDR上)--------终身制(稳定状态时,优先级高的,不重新选举)

在广播网和NBMA网中,任意两台路由器都要传递消息,如果有n台,需要建立n(n-1)/2个邻接关系(点到点链路不需要选择DR和BDR)

选举DR后,只需要建立2(n-2)+1个

优先级最高的被选举为DR,优先级次高的被选举为BDR

优先级为0的不参与选举

a、先比较hello报文的优先级(值越大越优)(接口默认优先级为1,最大为255,0表示不参加选举)

b、若优先级一样则比较router id,大的优

c、次优先级的为BDR

注:

当路由器网络中,增加了一个优先级更高的路由器,不会强制的更改DR和BDR,在DR坏后,进行再次选举时,更高的被选为BDR

四、ospf报文的类型和封装:

ospf报文直接封装为IP报文协议报文,协议号为89

1)、ospf报文格式:

Header:公共头部

(version、Authentication、Router-ID、AreaID)

2)、hello报文:建立(发现)并维护邻居关系

定时器的数值、DR、BDR以及自己已知的邻居

(轮询时间10s、失效时间40s、接口掩码、接口优先级、option可选项)

3)、DD报文:交互LSA前主从确定和数据库的汇总(LSA摘要),用于两台路由器进行数据库(LSDB)的同步

4)、LSR报文:请求自己没有的LSA或者比自己更加新的LSA

5)、LSU报文:回复LSR需要的LSA的详细信息

6)、LSAck报文:对LSU报文的确认。内容是需要确认的LSA的Header(每个LSA的头部)

五、邻居关系和邻接关系的建立:

1)、邻居发现与维护

a、两台路由器以组播的方式(224.0.0.5)发送ospf协议的hello报文(Router

ID、相关参数协商信息)。组播地址224.0.0.5表示所有运行ospf路由器都能收到该报文。(224.0.0.5是DR和BDR发送报文给DRother时用,224.0.0.6是DR和BDR监听DRother时用(实验表明都是用224.0.0.5))

b、两台路由器根据收到的报文,进行参数协商,如果验证、区域等参数都设置一致,则认为发现邻居

c、发现邻居后,进行维护。邻居之间周期性(10s)的交互hello报文

在一定时间内,内收到邻居发来的报文,认为邻居正常,反则认为失效。

d、ospf定时器:

hello定时器(10s):接口向邻居发送hello报文的间隔。邻居之间定时器要保持一致,且与路由的收敛速度、网络负荷大小成反比

邻居失效时间 (40s):在邻居失效时间内,如果接口还没有收到hello报文,则宣告邻居无效

非广播网络中,每隔30秒发送一次,保持时间120秒

2)、邻居和邻接

ospf路由器启动后,便会通过ospf接口向外发送hello报文。收到报文的ospf路由器且报文中参数一致,则双方形成邻居关系

形成邻居关系的路由器不一定都能形成邻接关系,要根据网络类型,,只要双方成功交互DD报文,交换LSA并达到LSDB的同步之后,才能真正成为邻接关系

DR、BDR之间为邻接关系(full)(LSA和DD报文)

DR、BDR与DRother之间为邻接

DRother之间为邻居关系(2-way)(hello报文)

3)、邻居关系的建立:

i:RTA发送hello报文将DR为置成0.0.0.0,邻居表为空

ii:看对方邻居表是否有自己,没有,将RTA放入邻居表状态设为Init状态,然后比较RouterID,发现自己的比RTA大,将DR设为自己,发给RTA

iii:RTA检查RTB的hello报文,发现邻居表有自己状态设为2-way,并将RTB加入自己的邻居表,再发送hello给RTB

iv:RTB收到RTA的hello报文检查,发现邻居表里有自己,直接将邻居表里RTA状态设为2-way

邻接关系的建立:

如果RTA和RTB有一个是DR或者BDR还要继续建立邻接关系

i:RTA将邻居表里的RTB状态设为Exstar状态,并且发送一个不包含LSA的DD报文,进行主从协商,(Maste路由器的作用是在交换DD报文时,主动发送DD报文的作用)

Seq:序列号,由主设定,第一个包RTA认为自己是主,序列号设为X

I:置为1,表示是RTA发送的初始化的包

M:置为1,表明这不是最后一个包

MS:置为1,表明自己是主

ii:RTB收到DD报文,将邻居表里的RTA设为Exstar状态。比较Router

ID,由于自己的比RTA大,所以认为自己是主,序列号置为Y,MS置为1,,I和M也置为1

iii:RTA收到后,比较Router

ID确实比自己大,认为RTB为主,并将邻居表RTB的状态设为Exchange状态,并采用RTB设置的序列号Y发送一个带有LSA摘要的DD报文

iv:RTB收到后,也将邻居表RTA的状态设为Exchange状态,并回一个序列号为Y+1的带有LSA摘要的DD报文和RTA交换LSA摘要信息

v:双方收到带有LSA摘要的DD报文后,进行比较,RTB发现RTA的LSA摘要所对应的LSA自己都有,则将邻居表里的RTA设为Full。

vi:RTA发现RTB发来的LSA摘要所对应的LSA自己有缺少的,将邻居表中RTB状态设为Loading,并发送一个LSR报文(包含自己缺少的LSA摘要)。

vii:RTB收到后,将RTA所请求的LSA,以一条或多条LSU报文发给RTA

viii:RTA将收的LSA放入自己的LSDB表中,知道之前请求的所有LSA都获得。

5)、ospf邻居状态机:

i:Down:在上一个邻居失效时间内,没有收到任何hello报文

ii:Attempt:只存在于NBMA网络中,当一台设备试图联系自己邻居时,没有收到回应报文时,就会将邻居状态设置为Attempt

iii:Init:表示一台路由器收到另一台路由器的hello报文,但是报文中的邻居表里没有自己的RouterID

iv:2-way:表示一台路由器收到另一台路由器的hello报文,报文的邻居表中有自己的RouterID

v:Exstart:在协商主从时,确定DD报文的序列号,比较MTU。(MTU不一样时停在此状态)ospf

mtu-enable  //开启MTU比较

vi:Exchange:在交换LSA摘要时

vii:Loading:对方的LSA摘要和自己的LSDB比较后,发现LSA摘要中存在LSDB中没有的

vii:Full:收到的LSA摘要和自己的LSDB表一致

六、LSDB的更新:

老化时间:LSDB里面的LSA都设定了老化时间,默认为1h,如果1h内LSA没有被更新,LSA在LSDB表中将会被移除。LSDB每隔0.5h刷新一次所有的LSA,LSA的序列号都会加一

序列号越大,表示LSA越新;老化时间越小,表示LSA越新,默认每0.5h进行一次LSA的泛洪。

注意:校验和是不能体现LSA的新旧。

(1)、RTA发现链路状态发生改变后,以组播地址为(224.0.0.6)将LSU报文发送给RTC和RTD。组播地址224.0.0.6表示只有DR和BDR能够接收到这个报文

(2)、RTC作为DR,收到报文后,发送LSAack报文确认,同时使用组播地址为224.0.0.5将LSU报文发送给所有OSPF的路由器。

配置和优化OSPF协议:

[RT2]ospf 1

//启用OSPF进程

注意:在同一台设备上,进程号不同,区域相同,不能互通,设备认为是两个路由协议,必须做重分布,,进程号是本地概念,不同的路由器进程号不同不影响互通。

[RT2-ospf-1]area 0

[RT2-ospf-1-area-0.0.0.0]

//进入ospf区域视图

[RT2-ospf-1-area-0.0.0.0]netw 192.168.1.0 0.0.0.255

//指定接口启用ospf协议

network的意思是:使能该网段覆盖的直连接口的ospf协议。

Router ID配置:

[RT2]router id 2.2.2.2

//配置全局router ID

[RT2-ospf-1]ospf 1 router-id 3.3.3.3

//配置局部的router id

当同时配置时,局部生效(配置完router

ID后要重置ospf协议reset ospf process)

查看:

[RT2]dis ospf peer

//查看ospf邻居

[RT1-ospf-1-area-0.0.0.0]dis ospf routing

//查看ospf路由信息

OSPF Process 1 with Router ID 1.1.1.1

Routing Tables

Routing for Network

Destination Cost Type NextHop AdvRouter Area

12.1.1.0/24 1 Stub 12.1.1.1 1.1.1.1 0.0.0.0

1.1.1.1/32 0 Stub 1.1.1.1 1.1.1.1 0.0.0.0

COST:开销  TYPE:路由类型(Intra-Area、Transit、Stub、Inter-Area、TYpe1

External和Type2 External)  NextHop:下一跳地址

AdvRouter:发布路由器  Area:区域ID

ospf的路由条目类型:  Transit:直连路由

1、域内路由(stub,Intra):来自同一区域内部的路由条目

2、域间路由(Inter):来自于不同区域的路由条目

3、外部路由(ASE,External)来自于ospf协议的外部路由

路由优先级排名:

域内路由>域间路由>外部路由

dis ip routing-table protocol ospf

//查看ospf路由(ospf的优先级为10,到达目的地的度量为1)

dis ospf interface g0/0/0

//查看ospf接口信息

dis ospf  1 brief

//显示ospf的概要信息

dis ospf  1 lsdb

//显示ospf的lsdb表

reset  ospf 1

counters  //清除ospf计时器

reset  ospf

1  process  //重启ospf进程

dis ospf error

//ospf的错误信息

terminal debugging

//打开debugging

debugging ospf ?

INTEGER<1-65535> Process ID

event OSPF events

//查看ospf时间

lsa OSPF LSA

//查看LSA

packet OSPF packets

//查看hello报文

spf OSPF spf

//查看spf算法

timer OSPF timer

//查看ospf计时器

undo debugging all

//关闭所有debugging

优化ospf网络

[RT1-GigabitEthernet0/0/0]ospf network-type ?

//修改接口的网络类型

broadcast Specify OSPF broadcast network

//广播

nbma Specify OSPF NBMA network

//非广播多点可达

p2mp Specify OSPF point-to-multipoint network

//点到多点

p2p Specify OSPF point-to-point network

//点到点

[RT1-GigabitEthernet0/0/0]ospf dr-priority 0~255

//配置接口优先级(0不参加选举)

[RT1-ospf-1]peer 12.1.1.2 dr-priority 2

//在NBMA的网络中,用此命令配置邻居,后面的优先级表示对方的接口优先级,是为了减少网络中的hello报文

[RT1-GigabitEthernet0/0/0]ospf cost 2

//修改接口开销(默认接口开销为1)

[RT1-ospf-1]bandwidth-reference 1000

//修改ospf的参考带宽(默认为100Mbps)

接口开销=参考带宽/接口带宽

配置ospf报文定时器:

[RT1-GigabitEthernet0/0/0]ospf timer ?

dead Interval after which a neighbor is declared dead

//修改邻居失效时间

hello Hello Interval

//修改hello时间

poll Poll Interval (on NBMA network)

//修改poll定时器

retransmit Retransmit Interval

//修改LSA的时间间隔

注意:修改计时器的时候两边必须都得改,否则无法发现邻居

配置ospf引入默认路由条目:

[RT2-ospf-1]default-route-advertise

{always|cost|type|route-policy}|summary

cost

//引入默认路由

always:若果本机没有配置默认路由,使用此参数可产生一个描述默认路由的ASE

LSA发不出去,如果没有写此命令,仅当本地配置饿默认路由,才可以产生一条Type-5 LSA发不出去

cost:该条默认路由度量值,(0~16777214)默认值为1

type:该路由ASE LSA的类型(1~2)默认为2

route-policy:路由策略名

summary:发布指定路由的type-3 summary LSA。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值