完整版华为OSPF总结推荐文档.docx
《完整版华为OSPF总结推荐文档.docx》由会员分享,可在线阅读,更多相关《完整版华为OSPF总结推荐文档.docx(44页珍藏版)》请在冰豆网上搜索。
![完整版华为OSPF总结推荐文档.docx](https://file1.bdocx.com/fileroot1/2023-2/24/0e380bf5-56d8-4bc9-9889-a37f98955fbd/0e380bf5-56d8-4bc9-9889-a37f98955fbd1.gif)
完整版华为OSPF总结推荐文档
华为OSPF总结
1OSPF基本概念
1.1拓扑和路由器类型
OSPF整体拓扑
OSPF把自治系统划分成逻辑意义上的一个或多个区域,所有其他区域必须
与区域0相连。
路由器类型
区域内路由器(InternalRouter):
该类设备的所有接口都属于同一个OSPF区域。
区域边界路由器ABR(AreaBorderRouter):
该类路由器可以同时属于两个以上的区域,但其中一个接口必须在骨干区域。
ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻
辑上的连接。
骨干路由器(BackboneRouter):
该类路由器至少有一个接口属于骨干区域。
所有的ABR和位于Area0的内部路由器都是骨干路由器。
自治系统边界路由器ASBR(ASBoundaryRouter):
与其他AS交换路由信息的路由器称为ASBR。
ASBR并不一定位于AS的边界,它可能是区域内路由器,也可能是ABR。
只要一台OSPF路由器引入了外部路由的信息,它就成为ASBR。
拓扑所体现的IS-IS与OSPF不同点
在OSPF中,每个链路只属于一个区域;而在IS-IS中,每个链路可以属于不同的区域;
在IS-IS中,单个区域没有骨干与非骨干区域的概念;而在OSPF中,
Area0被定义为骨干区域;
在IS-IS中,Level-1和Level-2级别的路由都采用SPF算法,分别生成最
短路径树SPT而在OSPF中,只有在同一个区域内才使用SPF算法,区域之间的路由发布还是距离矢量算法,区域之间的路由需要通过骨干区域来转发。
1.2OSPF网络类型,DR,BDR介绍
OSPF支持的网络类型
点到点P2P类型:
当链路层协议是PPP、HDLC时,缺省情况下,OSPF认为网络类型是P2P。
在该类型的网络中,以组播形式(224.0.0.5)发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。
点到多点P2MP类型(Point-to-Multipoint):
没有一种链路层协议会被缺省的认为是Point-to-Multipoint类型。
点到多点必须是由其他的网络类型强制更改的。
常用做法是将非全连通的NBMA改为点到多点的网络。
在该类型的网络中以组播形式(224.0.0.5)发送Hello报文,以单播形式发送其他协议报文(DD报文、LSR报文、LSU报文、LSAck报文)。
NBMA类型(Non-broadcastmultipleaccess):
当链路层协议是ATM时,缺省情况下,OSPF认为网络类型是NBMA。
在该类型的网络中,以单播形式发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。
广播类型(Broadcast):
当链路层协议是Ethernet、FDDI时,缺省情况下,OSPF认为网络类型是Broadcast。
在该类型的网络中,通常以组播形式发送Hello报文、LSU报文和LSAck报文。
其中,224.0.0.5的组播地址为OSPF路由器的预留IP组播地址;224.0.0.6的组播地址为OSPFDR的预留IP组播地址。
以单播形式发送DD报文和LSR报文。
在至少含有两个路由器的广播型网络和NBMA网络都有一个指定路由器
(DR)和一个备份指定路由器(BDR)
DR/BDR的作用
减少邻居关系的数量,从而减少链路状态信息和路由信息的次数。
Drother只与DR/BDR建立完全邻接关系。
DR与BDR之间建立完全邻接关系。
DR产生网络LSA来描述NBMA网段或者广播网段信息。
DR/BDR选举规则
DR/BDR由OSPF的Hello协议选举,选举是根据端口的路由器优先级
(RouterPriority)进行的。
如果RouterPriority被设置为0,那么该路由器将不允许被选举成DR或
者BDR。
RouterPriority越大越优先。
如果相同,RouterID大者优先。
DR/BDR不能抢占。
如果当前DR故障,当前BDR自动成为新的DR,网络中重新选举BDR;如果当前BDR故障,则DR不变,重新选举BDR。
ISISDIS与OSPFDR/BDR的不同点
在IS-IS广播网中,优先级为0的路由器也参与DIS的选举,而在OSPF中优先级为0的路由器则不参与DR的选举。
在IS-IS广播网中,当有新的路由器加入,并符合成为DIS的条件时,这个路由器会被选中成为新的DIS,原有的伪节点被删除。
此更改会引起一组新的LSP泛洪。
而在OSPF中,当一台新路由器加入后,即使它的DR优先级值最大,也不会立即成为该网段中的DR。
在IS-IS广播网中,同一网段上的同一级别的路由器之间都会形成邻接关系,包括所有的非DIS路由器。
1.3OSPF报文类型
Hello报文:
用于建立和维持邻居关系
DD报文:
描述本地LSDB的摘要信息,用于两台路由器进行数据库同步
LSR报文:
用于向对方请求所需的LSA路由器只有在OSPF邻居双方成功交换
DD报文后才会向对方发出LSR报文
LSU报文:
用于向对方发送其所需要的LSA
LSAck报文:
用来对收到的LSA进行确认
OSPF报文概述
OSPF报文直接运行于IP之上,IP协议字段号为89。
OSPF有五种报文类型,但是OSPF报文头部格式都是相同的。
除Hello报文外,其它的OSPF报文都携带LSA信息。
1.3.1OSPF报文头部信息
所有的OSPF报文使用相同的OSPF报文头部
Version:
OSPF协议号,应当被设置成2。
Type:
OSPF报文类型,OSPF共有五种报文。
Packetlength:
OSPF报文总长度,包括报文头部。
单位是字节。
RouterID:
生成此报文的路由器的RouterID。
AreaID:
此报文需要被通告到的区域。
Checksum:
是指一个对整个数据包(包括包头)的标准IP校验和。
AuType:
验证此报文所应当使用的验证方法。
Authentication:
验证此报文时所需要的密码等信息。
1.3.2Hello报文格式
NetworkMask:
发送Hello报文的接口的网络掩码。
HelloInterval:
发送Hello报文的时间间隔。
单位为秒。
Options:
标识发送此报文的OSPF路由器所支持的可选功能。
RouterPriority:
发送Hello报文的接口的RouterPriority,用于选举DR
和BDR。
RouterDeadInterval:
宣告邻居路由器不继续在该网段上运行OSPF的时间间隔,单位为秒,通常为四倍HelloInterval。
DesignatedRouter:
发送Hello报文的路由器所选举出的DR的IP地址。
如果设置为0.0.0.0,表示未选举DR路由器。
BackupDesignatedRouter:
发送Hello报文的路由器所选举出的
地址。
如果设置为0.0.0.0,表示未选举BDR路由器。
BDR的
IP
ActiveNeighbor:
邻居路由器的RouterID列表。
表示本路由器已经从该邻居收到合法的Hello报文。
1.3.3DD报文格式
接口MTU:
是指在数据包不分段的情况下,始发路由器接口可以发送的最大IP数据包大小。
当在虚连接时,该在段为0x0000。
Option:
同hello报文。
I位:
当发送的是一系列DD报文中的第一个数据包时,该为置位为1。
后续的DD报文将该位置位0。
M位:
当发送的数据包还不是一个系列DD报文中的最后一个数据包时,该值置为1。
如果是最后一个DD报文,则将该为置为0。
MS位:
在数据库同步中,主要用来确认协商过程中的序列号。
DDSequenceNumber:
DD的序列号报文,4byteLSA头部信息。
1.3.4LSR报文格式
LinkStateType:
用来指明LSA标识是一个路由器LSA、一个网络LSA还是其他类型的LSA。
LinkStateID:
不同类型LSA该字段意义不同。
AdvertisingRouter:
始发LSA通告的路由器的路由器ID。
1.3.5LSU报文格式
NumberofLSA:
指出这个数据包中包含的LSA的数量。
LSA:
明细LSA信息
1.3.6LSAck报文格式
HeaderofLSA:
LSA头部信息。
1.3.7LSA头部信息
除Hello报文外,其它的OSPF报文都携带LSA信息。
LSage:
此字段表示LSA已经生存的时间,单位是秒。
Option:
该字段指出了部分OSPF域中LSA能够支持的可选性能
LStype:
此字段标识了LSA的格式和功能。
常用的LSA类型有五种。
LinkStateID:
根据LSA的不用而不同。
AdvertisingRouter:
始发LSA的路由器的ID。
SequenceNumber:
当LSA每次新的实例产生时,这个序列号就会增加。
这个更新可以帮助其他路由器识别最新的LSA实例。
Checksum:
关于LSA的全部信息的校验和。
因为Age字段,所以校验和会随着老化时间的增大而每次都需要重新进行计算。
Length:
是一个包含LSA头部在内的LSA的长度。
1.4LSA类型和区域内路由计算与描述
Router-LSA(Type1)
路由器产生,描述了路由器的链路状态和开销,本区域内传播Network-LSA(Type2)
DR产生,描述本网段的链路状态,本区域内传播Network-summary-LSA(Type3)
ABR产生,描述区域内某个网段的路由,区域间传播(除特殊区域)
ASBR-summary-LSA(Type4)
ABR产生,描述到ASBR的路由,OSPF域内传播(除特殊区域)
AS-external-LSA(Type5)
ASBR产生,描述到AS外部的路由,OSPF域内传播(除特殊区域)
NSSALSA(Type7)
由ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。
区域内路由的计算只涉及到router-lsa和network-lsa也只有router-lsa和network-lsa参与ospf路由计算
1.4.1描述拓扑结构
1.4.2Router-LSA
Router-LSA必须描述始发路由器所有接口或链路。
区域内路由计算用到router-lsa
[Q5]displayospflsdbrouterself-originate
OSPFProcess1withRouterID5.5.5.5
Area:
0.0.0.1
LinkStateDatabase
Type
:
Router
Lsid
:
5.5.5.5
Advrtr
:
5.5.5.5
Lsage
:
194
Len
:
48
Options
:
ASBRE
seq#
:
80000007
chksum
:
0xacb8
Linkcount:
2
*LinkID:
4.4.4.4
Data:
45.0.0.5
LinkType:
P-2-P
Metric:
1562
*LinkID:
45.0.0.0
Data:
255.255.255.0
LinkType:
StubNet
Metric:
1562
Priority:
Low
LinkStateID:
是指始发路由器的路由器ID。
V:
设置为1时,说明始发路由器是一条或者多条具有完全邻接关系的虚
链路的一个端点。
E:
当始发路由器是一个
ASBR路由器时,该为置为
1。
B:
当始发路由器是一个ABR路由器时,该为置为1。
Linkcount:
表明一个LSA所描述的路由器链路数量。
LinkType:
置为1表示点到点连接一台设备;置为
2表示连接一个
transit网络,可以理解为广播网络;置为3表示连接subnet网络,一般该地址为环回口地址;置为4表示虚链路。
LinkID:
LinkType置为1表示邻居路由器的路由器ID;LinkType置为2
表示DR路由器的接口的IP地址;LinkType置为3表示IP网络或子网地址;LinkType置为4邻居路由器的路由器ID。
LinkData:
LinkType置为1表示和网络相连的始发路由器接口的IP地址;LinkType置为2表示和网络相连的始发路由器接口的IP地址;LinkType置为3网络的IP地址或子网掩码。
P2P链路:
描述到邻居连接
Transit链路:
描述到DR的连接
Stub链路:
描述子网,没有邻居(loopback或者只有一个以太网链路)
V-link链路:
描述虚链路点到点链路
ToS,暂不支持。
Metric:
是指一条链路或接口的代价。
1.4.3Network-LSA
DR产生,BDR不会产生Network-LSA
[Q2]displayospflsdbnetworkself-originate
OSPFProcess1withRouterID2.2.2.2
Area:
0.0.0.0
LinkStateDatabase
Type
:
Network
Lsid
:
10.0.0.2
Advrtr
:
2.2.2.2
Lsage
:
393
Len
:
36
Options
:
E
seq#
:
80000006
chksum
:
0x9088
Netmask
:
255.255.255.0
Priority
:
Low
AttachedRouter
2.2.2.2
AttachedRouter
3.3.3.3
AttachedRouter
4.4.4.4
LinkStateID:
是指DR路由器接口上的地址。
NetworkMask:
指定这个网络上使用的地址或者子网的掩码。
Attachedrouter:
列出该多路访问网络上与DR形成完全邻接关系且包括DR本身的所有路由器的路由器ID。
1.4.4Network-summary-LSA(ABR产生)
[Q4]displayospflsdbsummary
Type
:
Sum-Net
Lsid
:
45.0.0.0
Advrtr
:
4.4.4.4
Lsage
:
425
Len
:
28
Options
:
E
seq#
:
80000003
chksum
:
0xde1f
Netmask
:
255.255.255.0
Tos0
metric:
1562
Priority:
Low
LinkStateID:
对于3类LSA来说,表示所通告的网络或子网的IP地址。
对于4类LSA来说表示所通告的ASBR路由器的路由器ID。
NetworkMask:
对于3类LSA来说,表示所通告的网络的子网掩码或者地址。
对于4类LSA来说,该字段没有实际意义,一般置为0.0.0.0。
Metric:
直到目的地址的路由的代价。
Network-summary-LSA在区域间传递,区域间路由是矢量的,那么矢量的路由需要防止环路
防止环路方法如下:
(1)ABR不能从非骨干区域接收类型3LSA
(2)Downbit防环
1.4.5ASBR-summary-LSA(ABR产生)
1.4.6AS-external-LSA(ASBR产生)
[Q4]displayospflsdbase
OSPFProcess1withRouterID4.4.4.4
LinkStateDatabase
Type
:
External
Lsid
:
55.55.55.0
Advrtr
:
5.5.5.5
Lsage
:
2341
Len
:
36
Options
:
E
seq#
:
80000002
chksum
:
0xa273
Netmask
:
255.255.255.0
TOS0
Metric:
1
Etype
:
2
ForwardingAddress:
0.0.0.0
Tag
:
1
Priority
:
Low
LinkStateID:
目的地的IP地址。
NetworkMask:
指所通告的目的地的子网掩码或地址。
Etype:
用来指定这条路由使用的外部度量的类型。
如果该
Ebit设置为1,那
么度量类型就是E2;如果该Ebit设置为0,那么度量类型就是E1。
Metric:
指路由的代价。
由ASBR设定。
ForwardingAddress:
是指到达所通告的目的地的数据包应该被转发到的地址。
如果转发地址是0.0.0.0,那么数据包将被转发到始发ASBR上。
ExternalRouteTag:
标记外部路由。
1.4.7NSSALSA(ASBR产生)
[Q5]displayospflsdbnssaself-originate
Type
:
NSSA
Lsid
:
55.55.55.0
//目的网段的网络地址
Advrtr
:
55.55.55.55
Lsage
:
66
Len
:
36
Options
:
NP
seq#
:
80000001
chksum
:
0x8390
Netmask
:
255.255.255.0
TOS0
Metric:
1
Etype
:
2
ForwardingAddress:
45.0.0.5
Tag
:
1
Priority
:
Low
ForwardingAddress:
如果网络一台NSSAASBR路由器和邻接的自治系统
之间是作为一条内部路由通告的,那么这个FA就是这个网络的下一跳地
址。
如果网络不是作为一个条内部路由通告的,那么这个FA地址将是NSSAASBR路由器的路由器ID。
1.4.8区域内路由计算SPF过程
1.5Option字段
Option可选字段出现在每一个Hello数据包、DD和每个LSA中的。
Option字段允许路由器和其他路由器进行一些可选性能的通信。
Option字段解释:
DN:
用来避免在MPLSVPN中出现环路。
当3类、5类和7类LSA中设置了DN位之后,接收路由器就不恩能够在它的OSPF路由计算中使用该LSA。
O:
该字段指出始发路由器支持OpaqueLSA(类型9、类型10和类型
11)。
DC位:
当始发路由器支持按需链路上的OSPF的能力时,该位将被设置。
EA:
当始发路由器具有接收和转发外部属性LSA的能力时,该位被置位。
N位:
只在Hello数据包中。
N=1表明路由器支持7类LSA。
N=0表明该路由器将不接收和发送NSSALSA。
P位:
只用在NSSALSA。
该位将告诉一个非纯末节区域中的ABR路由器
将7类LSA转换为5类LSA。
MC位:
支持MOSPF。
E位:
当始发路由器具有接收OSPF域外部LSA的能力时,该位置位。
在所有5类LSA和始发于骨干区域以及非末节区域的LSA中,该位置为
1。
而始发与末节区域的LSA中,该位置为0。
如果Hello报文中该位表明一个接口具有接收和发送5类LSA的能力。
MT位:
表示始发路由器支持多拓扑OSPF。
2OSPF邻居和邻接关系
2.1邻居关系建立
邻居状态建立:
Down:
这是邻居的初始状态,表示没有从邻居收到任何信息。
Init:
在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中,表示尚未与邻居建立双向通信关系。
在此状态下的邻居要被包含在自己所发送的Hello报文的邻居列表中。
2-Way:
在此状态下,双向通信已经建立,但是没有与邻居建立邻接关系。
这是建立邻接关系以前的最高级状态。
如果网络为广播网络或者NBMA网络则选举DR/BDR。
在形成邻居关系过程中,需要对Hello报文携带的参数进行协商:
如果接收端口的网络类型是广播型,点到多点或者NBMA,所接收的
Hello报文中NetworkMask字段必须和接收端口的网络掩码一致,如果
接收端口的网络类型为点到点类型或者是虚连接,则不检查NetworkMask字段;
所接收的Hello报文中的Hello和Dead字段必须和接收端口的配置保持一致;
所接收的Hello报文中的认证字段需要一致;
所接收的Hello报文中的Options字段中的E-bit(表示是否接收外部路由信息)必须和相关区域的配置保持一致。
所接收的Hello报文中的区域字段必须一致。
2.2邻接关系建立
邻接状态建立:
邻居状态机变为ExStart以后,R1向R2发送第一个DD报文,在这个报文中,DD序列号被设置为552A(假设),Initial比特为1表示这是第一
个DD报文,More比特为1表示后续还有DD报文要发送,Master比特为1表示R1宣告自己为主路由器。
邻居状态机变为ExStart以后,R2向R1发送第一个DD报文,在这个报文中,DD序列号被设置为5528(假设)。
由于R2的RouterID比R1的大,所以R2应当为主路由器,RouterID的比较结束后,R1会产生一个NegotiationDone的事件,所以R1