OSPF

基础

复制代码
ospf概述

OSPF:
RIP英文的名称:route information protocol-------------------贝尔曼斯特算法-------距离矢量算法:道听途说
OSPF的英文名称:Open shortest path first   SPF:迪杰科斯特拉算法  Djake-------------链路状态算法:类似百度地图




同一个区域内         区域之间
LS链路状态            DV距离矢量
map                  无map
LSA                  路由 
SPF                  ——
无环、最短           DV防环机制(水平分割)、不能最短
LSDB要求同步        LSDB不需要同步





OSPF 的特点:
1、收剑速度快,适应于大型园区网络                 EIGRP收敛速度最快
2、是无类协义,支持不连续子网,支持VLSM CIDR,支持手工汇总
3、OSPF支持路径负载分担                          Eigrp没有可比性 支持非等价负载
   RIP支持8条负载
4、支持区域划分,可以减少链路状态数据库的容量
5、OSPF支持认证,简单口令和MD5认证
6、采用触发更新,无路由环路(在区域内绝对无环)
7、OSPF的优先级(协议管理距离 AD) 10 (内部)   150(OSPF的外部路由)  思科是110
8、OSPF使用COST(协议开销)作为度量标准  RIP跳数   ISIS  metric值  
9、三张表:邻居表(邻接表),拓扑表(链路状态数据库LSDB)、路由表(转发信息数据库FIB)
10、OSPF采用组播进行报文收发  OSPF  224.0.0.5(ALL)  224.0.0.6 (DR  BDR)    RIP(224.0.0.9)              EIGRP 224.0.0.10
11、OSPF的LSA更新时间(1800秒),老化时间(360012、OSPF  是IP协议承载的  端口89 ;RIP 是由UDP承载的,端口号520






OSPF的术语:
1、自治系统(Autonomous System):一个自治系统是指使用同一种路由协议交换路由信息的一组路由器。
2、Router ID:用于在自治系统中唯一标识一台运行OSPF的路由器的32位整数,每个运行OSPF的路由器都有一个Router ID。
3、链路:路由器上的一个接口
4、链路状态:各条链路的状态信息,包括接口,IP,掩码,开销,以及相关邻居路由
5、链路状态数据库(LSDB):所有链路状态信息构成链路状态数据库
6、区域(Area):在一个区域内,各路由器具有相同的链路状态数据库
7、链路状态通告(LSA)用来描述链路状态路态和路由
8、链路状态更新LSU:一条LSU包括多条LSA
9、SPF算法
10、邻居关系:相互建立关系,双方的关系处在2-way状态
11、邻接关系:建立在邻居之上,双方进一步交互链路状态信息,处在full状态




OSPF中路由器的分类
内部路由器(Internal Router):内部路由器是指所有所连接的网段都在一个区域的路由器。属于同一个区域的IR维护相同的LSDB。
区域边界路由器(Area Border Router):连接骨干区域(Area0)和非骨干区域的设备区域边界路由器是指连接到多个区域的路由器。ABR为每一个所连接的区域维护一个LSDB。
骨干路由器(Backbone Router):骨干路由器是指至少有一个端口(或者虚连接)连接到骨干区域的路由器。包括所有的ABR和所有端口都在骨干区域的路由器。
AS边界路由器(AS Boundary Router):AS边界路由器是指和其他AS中的路由器交换路由信息的路由器,这种路由器向整个AS通告AS外部路由信息。
AS边界路由器可以是内部路由器IR,或者是ABR,可以属于骨干区域也可以不属于骨干区域。
ospf概述
复制代码
复制代码
ripv1广播,ripv2组播224.0.0.9   ospf组播224.0.0.5(所有路由器),224.0.0.6(只有DR,BDR监控)
224.0.0.6  //DR/BDR监听的组地址,DRother发送路由更新给DR、BDR的目的地址
224.0.0.5  //DRother监听的组地址,DR、BDR发送路由更新给DRother的目的地址,运载这些OSPF包的帧的目标MAC地址为0100.5E00.0005



ospf的进程号只具有本地意义,可以运行多个ospf进程



Router ID:用于在自治系统中唯一标识一台运行OSPF的路由器的32位整数,每个运行OSPF的路由器都有一个Router ID。
选举router-id顺序:
    1、优先手工指定的(router-id可以在全局宣告,也可以在ospf进程中宣告。ospf进程宣告优先)
    2、自动选举的,loopback口IP地址大的优
    3、物理接口IP地址大的优(无论该接口是否宣告进OSPF,该接口必须是UP的)
如果重新配置Router ID,需要重置OSPF进程才会生效
组播IP地址、ospf进程号、router-id
复制代码
复制代码
OSPF共有五种报文类型:
Hello报文用于发现和维护邻居关系,在广播型网络和NBMA网络上Hello报文也用来选举DR和BDR。
DD报文通过携带LSA头部信息来描述链路状态摘要信息。(第一个DBD报文无LSDB摘要信息,而是用于确定主从关系)
LS Request报文用于发送下载LSA的请求信息,这些被请求的LSA是通过接收DD报文发现的,但是本路由器上没有的。
LS Update报文通过发送详细的LSA来同步链路状态数据库。
LS Ack报文通过泛洪确认信息确保路由信息的交换过程是可靠的。
除了Hello报文以外,其他所有报文只在建立了邻接关系的路由器之间发送。


OSPF的五种报文中,只有LSU包含具体的LSA信息;DBD报文包括是只是一个摘要信息






           Hello时间   dead       DR/BDR         HELLo       DBD             LSR               LSU           LSACK 
广播        10         40         需要           组播        单播            单播             组播/单播      组播/单播
点到点      10         40         不需要         组播        单播/组播       单播/组播        组播           组播 
NBMA        30         120        需要           单播        单播            单播             单播           单播
点到多      30         120        不需要         组播        单播            单播             单播           单播
ospf报文的五种报文类型
复制代码

 

复制代码
认证字段在ospf头部携带,即五种报文都会进行版本、区域、认证的检查
了解五种报文,重点掌握报文中的option字段NP位,E位

OSPF 报文头部格式:
version:版本号  默认就是V2     
type:类型:1 hello  2 dbd   3 lsr   4  lsu  5 ack
Length:OSPF报文长度
Router-id ;
Area号:区域号  如果区域号不一致,会影响OSPF的邻居建立
Checksum:校验值
Autype:认证类型:0不认证,1 明文认证  2 MD5认证
Authentication:认证密码:鉴定字段,其数值根据验证类型而定。当验证类型为0时未作定义;类型为1时此字段为密码信息;类型为2时此字段包括Key ID、MD5验证数据长度和序列号的信息。
MD5验证数据添加在OSPF报文后面,不包含在Authenticaiton字段中。
OSPF 报文头部格式
复制代码
复制代码
ospf的报文有五种报文,五种报文都封装有ospf报文头部
ospf的多种报文中都有Option字段,hello、dbd源生就有;LSU、LSAck(LSA头部中有option字段);LSR没有option字段
Option字段:
   DN位,在MPLS VPN中用来防环路的             *
   O位:支持 9  10 11类LSA的
   DC位:表明该链路是按需链路,按需链路不会发送Hello报文      *
   L位具有接收的转发外部属性LSA能力
   NP位:在hello报文中NP=1表明路由器支持7类LSA。NP=0表明该路由器不接收发送7类LSA          *
            在7类LSA中 NP=1 ,需要将7类LSA转成五类LSA
   MC位:支持Mospf 
   E位:置1表明该接口可以正常接收外部LSA的(5类LSA)    (E位和NP位不能同时置位)     *
   MT位:表明支持多拓扑OSPF


wireshark中的备注
NP位        置1:NSSA is supported                      置0:NSSA is NOT supported
E位         置1:External Routing Capability            置0:NO External Routing Capability


dd报文有option字段,又有lsa头部,头部有option字段




   option字段                 NP位             E位                            
普通区域hello报文             置0              置1           NP位置0表示非nssa区域,E位置1表示可以接受5类LSA
普通区域dbd报文               置0              置1 
普通区域LSA报文头部           置0              置1 

stub区域hello报文             置0              置0           NP位置0表示非nssa区域,E位置0表示不接受5类LSA(满足这2点的也就是stub区域了)
stub区域dbd报文               置0              置0
stub区域LSA报文头部           置0              置0

nssa区域hello报文             置1              置0           NP位置1表示nssa区域,E位置0表示不接受5类LSA(特殊区域都是没有4,5类LSA的)
nssa区域dbd报文               置0              置0
nssa区域LSA报文头部           置0              置0           普通LSA头部均置0
nssa区域7类LSA报文头部        置1              置0           当LSA头部NP位置1,且该LSA为7类LSA,ABR要对该LSA进行7转5
ospf报文option字段总结
复制代码

 

复制代码
Hello报文格式:
Network Mask:掩码,在广播网络和NBMA网络中是会检测掩码的
HelloInterval:发送Hello 报文的时间间隔,广播网络或者点到点(10秒钟) ,如果是NBMA,点到多(30秒)
Option字段:详见option字段解读
RTR pri:DR优先级。默认为1。如果设置为0,则路由器不能参与DR或BDR的选举。
RouterDeadInterval:死亡时间为Hello时间的4位,如果在该时间没有收到Hello报文,就认为邻居故障
Designated Router:发送Hello报文的路由器所选举出的DR的IP地址。如果设置为0.0.0.0,表示未选举DR路由器。
Backup Designated Router:发送Hello报文的路由器所选举出的BDR的IP地址。如果设置为0.0.0.0,表示未选举BDR路由器。
Neighbor:邻居路由的Router ID列表。表示自己已经邻居邻居收到的合法的Hello报文
Hello报文格式
复制代码

复制代码
DD报文格式
Interface MTU: 在不分片的情况下,此接口最大可发出的IP报文长度。 
Options可选项:详见option字段解读
I : 当发送连续多个DD报文时,如果这是第一个DD报文,则置为1,否则置为0。 
M (More): 当发送连续多个DD报文时,如果这是最后一个DD报文,则置为0。否则置为1,表示后面还有其他的DD报文。 
M/S (Master/Slave): 当两台OSPF路由器交换DD报文时,首先需要确定双方的主从关系,Router ID大的一方会成为Master。当值为1时表示发送方为Master。 
DD sequence number: DD报文序列号。主从双方利用序列号来保证DD报文传输的可靠性和完整性。 
LSA Headers: 该DD报文中所包含的LSA的头部信息。 
DD报文格式
复制代码

 邻居、邻接

 

 

复制代码
OSPF根据二层链路类型定义了5种网络类型:
点到点(p2P):PPP链路
点到多(P2M):
NBMA:(帧中继链路)\ATM
broadcast :以太网链路,缺省情况是broadcast
虚链路(第五种)
OSPF的5种网络类型
复制代码
复制代码
邻接关系建立过程的概要过程:
    1.交互hello报文,进入init状态
    2.若为MA/NBMA网络,则停留在2-way状态,选举DR/BDR;若为P2P/P2MP,则跳过步骤2,直接进入ExStart
    3.发送第一个DD报文,进入ExStart状态;接收到第一个DD报文,进入Exchange状态
    4.loading状态,LSDB同步
    5.同步完成

--------------------
OSPF有两种确认机制:隐示确认(主从序列号
                   显式确认(lsr  lsu  lsack )


邻居:交互了hello,并且双方同意了hello包中的相关参数后,就形成邻居
邻接:交互了链路状态信息(LSA)或路由信息的是邻接
邻接是邻居的进一步的发展,并不是所有的路由器之间一定会形成邻接

不同网络类型,邻居或邻接是否可以正常建立
Broadcast 和 P2P                    不需要修改Hello时间,邻接关系可以正常建立,但是无法学习路由
Broadcast 和 P2MP                修改Hello时间,邻接可以正常建立,但是无法学习路由
Broadcast 和 NBMA
P2P 和 P2M                        修改Hello时间,邻接可以正常建立,彼此可以学习到路由
P2P 和 NBMA                      修改Hello时间邻居也无法正常建立,


邻接关系是否可以正常建立,要看Hello时间是否一致
是否有路由,看2类LSA (p2p ,P2MP没有DR,BDR ,没有二类LSA)

点到点、点到多点、虚链路总是建立邻接关系
MA、NBMA中,DRother之间建立2-way关系,DRother、DR、BDR之间建立邻接关系


--------------------

直连的设备router-id冲突——报错(模拟器上不会持续报错)
非直连的设备router-id冲突——学习不到路由


224.0.0.6  //DR/BDR监听的组地址,DRother发送路由更新给DR、BDR的目的地址
224.0.0.5  //DRother监听的组地址,DR、BDR发送路由更新给DRother的目的地址,运载这些OSPF包的帧的目标MAC地址为0100.5E00.0005

在NBMA网络上,当邻居失效后,将按ospf timer poll设置的轮询时间间隔定期地发送Hello报文。轮询时间间隔值至少应为Hello报文时间间隔的4倍。
邻接关系建立过程的概要过程
复制代码
复制代码
1.交互hello报文(检查是否合法)
    验证OSPF Hello报文是否合法:
    一、首先需要验证一个OSPF报文是否合法:先要看OSPF报文头部是否合法:
    1. Version必须为2;
    2. Area ID应当满足以下两种情况之一:a)和接收端口所属区域的Area ID一致;b)和接收端口所属区域的Area ID不一致,但是值为0,表示该报文属于骨干区域,而且是在一个虚连接上发送的;
    3. AuType字段必须与该区域配置的Autype一致;
    4. Authentication为验证信息,内容与AuType字段相关。

    二、验证一个接收到的Hello报文是否合法包括:
    1. 掩码一致:如果接收端口的网络类型是广播型,点到多点或者NBMA,所接收的Hello报文中Network Mask字段必须和接收端口的网络掩码一致,如果接收端口的网络类型为点到点类型或者是虚连接,则不检查Network Mask字段;
    2. hello间隔一致:所接收的Hello报文中的HelloInterval字段必须和接收端口的配置保持一致;
    3. dead间隔一致:所接收的Hello报文中的RouterDeadInterval字段必须和接收端口的配置保持一致;
    4. 所接收的Hello报文中的Options字段中的E-bit(表示是否接收外部路由信息)必须和相关区域的配置保持一致。


这是形成邻居关系的过程和相关邻居状态的变换过程。
Down:这是邻居的初始状态,表示没有从邻居收到任何信息。在NBMA网络上,此状态下仍然可以向静态配置的邻居发送Hello报文,发送间隔为PollInterval,通常和RouterDeadInterval间隔相同。
Attempt:此状态只在NBMA网络上存在,表示没有收到邻居的任何信息,但是已经周期性的向邻居发送报文,发送间隔为HelloInterval。如果RouterDeadInterval间隔内未收到邻居的Hello报文,则转为Down状态。
Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中,表示尚未与邻居建立双向通信关系。在此状态下的邻居要被包含在自己所发送的Hello报文的邻居列表中。
2-WayReceived:此事件表示路由器发现与邻居的双向通信已经开始(发现自己在邻居发送的Hello报文的邻居列表中)。Init状态下产生此事件之后,如果需要和邻居建立邻接关系则进入ExStart状态,开始数据库同步过程,如果不能与邻居建立邻接关系则进入2-Way。
2-Way:在此状态下,双向通信已经建立,但是没有与邻居建立邻接关系。这是建立邻接关系以前的最高级状态。
1-WayReceived:此事件表示路由器发现自己没有在邻居发送Hello报文的邻居列表中,通常是由于对端邻居重启造成的。

猜测:全新的MA网络环境,会先进入2-way,选举DR/BDR再建立邻接关系;而稳定的MA网络环境,新加入的路由器在经历2-WayReceived事件应该会直接进入ExStart状态,开始建立邻接关系。
单边2-way的情况一般情况下是不会存在的,通过策略也难以实现:
    1.MA网络中,hello报文是发送到组播地址;
    2.要保证邻居发来的hello包的邻居列表中有本端端口的IP,
        首先:本端的hello包可以正常发送,也要能正常接收hello包
        其次:对端可以正常接收hello包,也要可以正常发送hello包
1.交互hello报文(检查是否合法)
复制代码
复制代码
建立邻居关系后,若为MA/NBMA网络,则停留在2-way状态,选举DR/BDR;若为P2P/P2MP,则跳过步骤2,直接进入ExStart
两端同时进入2-way会进行DR BDR的选举,选举时间等于Dead时间(MA默认40秒,NBMA默认120秒)

一个OSPF路由器在广播型网段和NBMA网段上选举DR和BDR之前,首先会等待一段时间(RouterDeadInterval),在这段时间里检测网络上是否已经存在DR和BDR,如果已经有DR和BDR,则不启动选举过程,直接进入DROther状态。因此,网络上Router Priority最大的路由器不一定是DR,Router Priority第二大的路由器也不一定是BDR。


MA网络(多路访问网络)会选举DR/BDR:
(1)BMA(支持广播的多路访问网络)----LAN
(2)NBMA(不支持广播的多路访问网络)----帧中继


MA网络中路由器接口的角色:DR(指定路由器)、BDR(备份指定路由器)、DRother:即不是DR又不是BDR的所有其他路由器接口

DR和BDR的作用:
1. 减少邻接关系的数量,从而减少链路状态信息以及路由信息的交换次数,这样可以节省带宽,减少路由器硬件的负担。
2. 在描述拓扑的LSDB中,一个NBMA网段或者广播型网段是由单独一条LSA来描述的,这条LSA是由该网段上的DR产生的。

DR的自动选举原则:(选举完成后即为稳定状态)
1.接口优先级(大):默认为1,0-255;接口优先级设置为0,则不参选
2.router-id(大)

DR和BDR的选举细则:
双方同时进入2-way状态开始选举,选举时间=死亡时间(如广播网络,则默认为40秒)
1、首先检查hello报文中的DR和BDR字段是否为空,如果都为空(0.0.0.0)表明没有DR也没有BDR,会先选举出BDR
2、如果 DR字段和BDR字段都为空;会先选举出BDR,比较 优先级(默认为1)越大越优,如果 优先级相同 ,会比较Router-id,越大越优;选举出BDR后,BDR会自动升级为DR,然后再重新选举出BDR
3、如果BDR字段为空,DR字段不为空,会重新选举出BDR,选举规则:比较 优先级(默认为1)越大越优,如果 优先级相同 ,会比较Router-id,越大越优
4、如果DR字段为空,BDR字段不为空,BDR会升级为DR,重新选举出BDR


DR和BDR的选举特点:
1.DR选举出来以后就是一个稳定状态,默认DR,BDR是不抢占的。先选BDR,然后BDR升级为DR,再继续选举BDR
2.等待40S(wait时间)
3.40S超时后,路由器认为自己是这个网段的DR,后面加入的路由器则只能成为BDR或DRother
4.在错误的DR一端清ospf进程,可重新选举DR
5.每个网段选举一个DR

如果当前DR故障,当前BDR自动成为新的DR,网络中重新选举BDR;如果当前BDR故障,则DR不变,重新选举BDR。
极端情况还是可能抢占的:比如2个vlan合并,网络中同时存在DR和BDR,那么两个DR之间会选举出唯一一个DR,另外 DR降为DRother  ;BDR之间同样会选举出唯一的一个BDR,另外 一个会降为DRother

看到设备处于2-way状态,表明了什么:1、自己不是DR,也不是BDR
                                  2、对端不是DR,也不是BDR
                                  3、两个都是Drother
                                  4、出故障了卡到了2-way,也有可能是两个优先级都为0



waiting时间:BMA——40S,NBMA——120S
若网络中没有DR/BDR,则在waiting时间内竞选DR/BDR
若网络中已经有DR/BDR,新加入的端口在收到DR/BDR发来的hello后,应该会直接进入DRother状态(MA网络下实验实测没有40秒)
2.DR选举(P2P、P2MP则跳过该步骤)
复制代码
复制代码
------------主从关系------------
主从关系(Master/Slave):当两个路由器之间通过DD报文交换数据库信息的时候,首先形成一个主从关系,Router ID大的优先为主,确认主从关系之后,主路由器发送DD报文,从路由器不能主动发送DD报文,只能回应主路由器发送的DD报文,回应时使用的DD序列号必须和所回应的主路由器发送的DD报文的序列号一致。
主从关系的选举(其实很简单,只要注意2点):
1.第一个DD报文(没有LSA摘要信息),序号随机,Initia位为1表示这是第一个DBD报文,More位为1表示还有后续DBD报文要发送,Master位为1表示路由器宣告自己为主路由器。
2.比较router ID ,大的为主
隐示确认:(从路由器负责响应,响应的DD报文的序号为主路由器的hello报文中的序号,Master位置0)
隐示确认:通过主序列号进行确认:如果主设备收到一条DBD的回复报文,里边的序列号是自己之前发送的,就认为之前的DBD对端已经收到
显示确认:LSAck

DBD 报文的2个作用:1.选举主从;2.交互LSA摘要信息
这里强烈建议查看DD报文的I位,M位,M/S位
Initia位为1表示这是第一个DBD报文,More位为1表示还有后续DBD报文要发送,Master位为1表示路由器宣告自己为主路由器。

------------检测MTU及可能存在的问题------------

MTU:最大传输单元默认是1500
MTU在BDB报文中会携带,华为设置默认是不检测MTU的,思科默认会检测MTU

如果配置了MTU检测:
    1、Master MTU小于从MTU:Master会卡在Exstart状态  从设备会卡在Exchange状态
    2、Master MTU大于从MTU,两端都会卡在Exstart状态
如果不检查MTU,OSPF有可能会卡在Loading状态


邻居关系的建立和MTU没有任何关系,MTU是在DBD报文中携带的;但建立邻接关系时会受到影响。


------------LSDB同步过程------------
1.双方各发送第一个DBD报文(也称DD报文)后,转入ExStart状态。序号随机,Initia位为1表示这是第一个DBD报文,More位为1表示还有后续DBD报文要发送,Master位为1表示路由器宣告自己为主路由器。

2.接收到第一个DBD报文后,进行主从路由器选举,选举规则为比较router-id大小。
    从路由器产生一个NegotiationDone事件,同时从路由器状态改变为ExChange状态。
    从路由器回应一个DBD报文(包含lsdb摘要信息,序列号则为主路由器的hello报文中的序号,Master位置0)
    主路由器收到报文后,产生NegotiationDone事件,进入ExChange状态
    主路由器再次发送一个DBD报文(包含LSBD摘要信息,序列号为上次使用的序列号+1)
    从路由器对主路由器发送的DBD报文进行一一确认(猜测:应该还是有DBD报文进行确认,序列号为主路由器的hello报文中的序号)
    发送完DBD报文后,产生一个ExChangDone事件,邻居状态进入loading
    总结:正常情况下,主路由器共发送2个dd报文:1.空的DBD报文,2.主动发送1个含有摘要的DD报文
                                            从路由器共发送3个dd报文:1.竞争主从的dd报文,竞争失败;2.竞争失败后,回应含有lsdb摘要信息的DD报文;3.对发来含有lsdb摘要信息的DD报文的响应DD报文

3.路由器开始发送LSR报文,请求在ExChange状态下通过DBD报文发现的,在本地LSDB中没有的链路状态信息
    对端收到LSR报文后,返回LSU报文。
    收到LSU报文后,进入FUll状态,并返回LSAck进行确认。
    

    
    

ExStart:发送第一个DBD报文后进入ExStart状态,这是形成邻接关系的第一个步骤,邻居状态变成此状态以后,路由器开始向邻居发送DD报文。主从关系是在此状态下形成的;初始DD序列号是在此状态下决定的。在此状态下发送的DD报文不包含链路状态描述。
ExChange:接收到对方的第一个DBD报文,确认主从关系后,进入ExChange状态。此状态下路由器相互发送包含链路状态信息摘要的DD报文,描述本地LSDB的内容。
Loading:DBD报文发完后,进入Loading状态.相互发送LS Request报文请求LSA,发送LS Update通告LSA。
Full:两路由器的LSDB已经同步。
3.LSDB同步,完成邻接关系的建立(ExStart、exchange、loading、full、主从关系、MTU)
复制代码
复制代码
网络类型中的端口状态
(1)P2P、P2MP、虚链路
Down:这是端口的初始状态,在该状态下,底层协议显示该端口不可用,所有定时器被关闭。
Loopback:此状态表示端口被环回。在该状态下的端口被通告为一个Stub网段。
Point-to-point(P-to-P):在此状态下,端口是可用的,而且端口是连接到点到点、点到多点或者虚连接,此状态下的端口试图与邻居建立邻接关系,并以HelloInterval的间隔发送Hello报文。

由于不需要选举DR和BDR,因此点到点、点到多点网段以及虚连接的端口状态变换比较简单,在Down状态下收到InterfaceUp事件后,转为Point-to-point(P-to-P)状态,此状态即为稳定工作状态。

(2)BMA、NBMA
down:这是端口的初始状态,在该状态下,底层协议显示该端口不可用,所有定时器被关闭。
Waiting:在此状态下,路由器通过监听接收到的Hello报文检测网络中是否已经有DR和BDR。在此状态下的路由器不可以参与选举DR和BDR。
Backup:在此状态下,该路由器成为所连接网络上的BDR,并与网段中所有的其他路由器建立邻接关系。
DR:在此状态下,该路由器成为所连接网络上的DR,并与网段中所有的其他路由器建立邻接关系。
DROther:该路由器连接到一个广播型网段或者NBMA网段,而且该路由器不是一个DR或者BDR。此状态下的路由器与DR和BDR形成邻接关系并交换路由信息。
BackupSeen:路由器已经检测到网络上是否存在BDR。


经试验验证:P2P、P2MP、虚链路中,端口状态稳定后,确实为P2P;而BMA、NBMA中,端口状态稳定后则为DR、BDR、DRother
网络类型中的端口状态(了解)
复制代码

 LSA

 

 

复制代码
LS age:此字段表示LSA已经生存的时间,单位是秒。
LS type:此字段标识了LSA的格式和功能。常用的LSA类型有五种。
Link State ID:此字段是该LSA所描述的那部分链路的标识。例如Router ID等。
Advertising Router:此字段是产生此LSA的路由器的Router ID。
LS sequence number:此字段用于检测旧的和重复的LSA。

LS type,Link State ID和Advertising Router的组合共同标识一条LSA。

option可选项:(可参考ospf报文option字段总结)
E:允许Flood AS-External-LSAs 
MC:转发IP组播报文 
N/P:处理Type-7 LSAs 
DC:处理按需链路
LSA报文头部字段解读
复制代码
复制代码
LS type、Link State ID和Advertising Router的组合唯一标识一条LSA,但是对于一条LSA,有可能同时存在多个实例。LS sequence number用于检查哪一个实例更新。

-------------LS Sequence Number(LSA的序列号)------------
LS Sequence Number是一个32位的有符号整数,用于检测过期和重复的LSA。
数值0x80000000,也就是-2**31是最小的数值,但此数值是被保留的,协议可用的最小数值为0x80000001(即-2**31+1)。
当路由器生成一条新的LSA时,使用序列号0x80000001做为该LSA的初始序列号,此后,每次更新该LSA,序列号加1。当试图增加最大序号 N-1(0x7fffffff,也被定义为 MaxSequenceNumber)时,必须先将当前 LSA从路由域中废止。这通过将 LSA 提早老化并重新洪泛而实现。

当路由器收到一条自己产生的LSA,而且此LSA的LS Sequence Number比该路由器最近产生的这条LSA的LS Sequence Number更新时,路由器需要重新生成这条LSA的实例,其LS Sequence Number为收到的LSA中的LS Sequence Number加1。

OSPF设备是不能删除非自己产生的LSA,如果设备要删除LSA,始发者会发送一条LSA Age时等于MAX-age时间的LSA,收到该LSA的设备会将该LSA老化掉



--------------LSA新旧比较:(小重点)---------------
1、首先比较LSA的序列号,序列号大的是最新的LSA
2、如果序列号相同,会比较他们的校验值(Checksum),Checksum值大的是最新的LSA
3、如果Checksum值也相同,会比较他们的LS age时间,如果LS Age时间等于Max-age时间,就认为该LSA是最新的LSA;(将会删除该LSA)
4、如果Checksum值也相同,会比较他们的LS age时间,如果LS Age时间不等于Max-age时间,就比较他们之间的差值,如果值大15分钟,较小的LSA Age时间的LSA是最优的
5、如果Checksum值也相同,会比较他们的LS age时间,如果LS Age时间不等于Max-age时间,就比较他们之间的差值,如果值小于15分钟,就认为是同一条LSA,忽略其中一条就行了


tips

当一个路由器的ospf进程重启后,那么该路由器的lsa肯定是从80000001开始计算的
而其他路由器还保留着序号为800000xx的lsa,根据规则,认为800000xx的lsa更加新
因为触发更新,8000000xx的lsa的会返回产生该lsa的路由器,然后该路由器刷新序列号,更新一个8000000xx+1的lsa,并泛洪


若重启ospf进程前,修改了router-id,虽然实际上是同一条lsa,但是根据ospf规则,认为是不同的lsa
所以本地还会学习到重启前产生的lsa,同时存在两条。。。
重启前的lsa只能等3600秒自动老化

当发送来的lsa age时间等于3600,说明产生该lsa的路由器要删除该lsa


---------LSA老化更新---------

LSA的更新时间 1800  老化时间3600
除Hello报文外,其它的OSPF报文都携带LSA信息。

什么情况下LSA会更新:
1、1800秒自动更新
2、触发更新(接口地址变化(增加,或删除),修改接口开销值,删除接口,或者删除通告)

触发更新要删除某条lsa时或者LS序列号为0x7fffffff后,发出的lsa的age为3600秒;收到age时间为3600秒的lsa后,路由器将删除该条lsa
LSA序列号、LSA新旧比较、LSA老化更新
复制代码
复制代码
LS type,Link State ID和Advertising Router的组合共同标识一条LSA。


  TYPE                     ADV                            区域                                       LS-id                               内容               
1、Router-lsa          每个设备都会产生                  本区域                           产生此LSA的Router ID                   路由器端口中链路状态的集合
2、Network-LSA            DR                             本区域                                  DR接口的IP                广播网络或NBMA网络链路上所有设备的router ID
3、network-summary LSA    ABR              除了totally(stub, nssa)都可以                         目标网络前缀                    区域内的所有有网段的路由信息
4、ASBR-summary LSA       ABR              除了ASBR区域之外的区域                             asbr的router id                        描述ASBR的路由信息
5、AS-external  LSA       asbr             可以跨区域(stub nssa)                             目标网络前缀                             路由信息
7、NSSA-LSA               asbr                       只能在nssa区域                           目标网络前缀                             路由信息
 
ospf的各类LSA的对比
复制代码
复制代码
Router-LSA每一个路由器都会生成。这种LSA描述某区域内路由器端口链路状态的集合。只在所描述的区域内泛洪。
Network-LSA由DR生成,用于描述广播型网络和NBMA网络。这种LSA包含了该网络上所连接路由器的列表。只在该网络所属的区域内泛洪。

一类LSA的链路描述(点到点有P-2-P 、StubNet两条)
Link Type             Link ID                                       Data   
P-2-P              邻居的router-id                  该网段上本地接口的IP地址                     
StubNet            该StubNet网段的IP网络地址        该网段掩码                                     
TransNet            DR接口的IP地址                   与DR接口相连的地址(与DR接口在同个网段的地址)  
Virtual            虚邻居的router-id                去往虚邻居的本地接口IP地址





[R3]dis ospf lsdb router 1.1.1.1

     OSPF Process 100 with Router ID 3.3.3.3
                 Area: 0.0.0.0
         Link State Database 


  Type      : Router       #LS type,Link State ID和Advertising Router的组合共同标识一条LSA。
  Ls id     : 1.1.1.1     #产生该LSA的路由器的router-id  
  Adv rtr   : 1.1.1.1   #产生并宣告该lsa的路由器的router-id
  Ls age    : 202 
  Len       : 60 
  Options   :  E  
  seq#      : 80000007 
  chksum    : 0x7934
  Link count: 3                                 //一个点到点2条+广播1条=3条
-------------------------下面是P2P------------------------------
   * Link ID: 2.2.2.2      #邻居的router-id
     Data   : 10.0.0.1     #该网段上本地接口的IP地址
     Link Type: P-2-P        #点到点类型
     Metric : 1562
   * Link ID: 10.0.0.0     #该StubNet网段的IP网络前缀
     Data   : 255.255.255.0 #该网段掩码
     Link Type: StubNet      #末节网络类型
     Metric : 1562                                                                      #若p2p两端的ip不在同一网段中,则到达对端ip时需要计算2倍的开销 
     Priority : Low
-------------------------下面是广播------------------------------
   * Link ID: 13.0.0.1     #DR接口的IP地址
     Data   : 13.0.0.1     #与DR接口相连的地址(与DR接口在同个网段的地址)
     Link Type: TransNet     #广播网络的类型
     Metric : 1
-------------------------下面是虚链路------------------------------
。。。。。

 
[R3]dis ospf lsdb network 13.0.0.1

     OSPF Process 100 with Router ID 3.3.3.3
                 Area: 0.0.0.0
         Link State Database 


  Type      : Network                              #LS type,Link State ID和Advertising Router的组合共同标识一条LSA。
  Ls id     : 13.0.0.1#DR接口的IP地址
  Adv rtr   : 1.1.1.1  #产生并宣告该lsa的路由器的router-id
  Ls age    : 72 
  Len       : 32 
  Options   :  E         #E表示可以接收外部路由
  seq#      : 80000002 
  chksum    : 0x66d0
  Net mask  : 255.255.255.0
  Priority  : Low
     Attached Router    1.1.1.1 #本区域中的设备的router-id
     Attached Router    3.3.3.3
一类二类LSA及区域内路由(1/2类LSA描述)
复制代码
复制代码
---------ospf区域内的metric值计算-------

ospf开销计算公式:带宽参考值/接口带宽;向下取整,最小值为1
    缺省情况下,OSPF的带宽参考值为100Mbit/s。
    bandwidth-reference     修改参考带宽
    开销的参考值要改,那么整个ospf的路由器开销参考值都要改
    
Cost表示从一个端点到另一个端点的开销,该参数可以在OSPF接口上配置,表示数据离开该接口(出接口)的开销。(ospf只计算出接口cost,入接口无cost)


在ospf中,metric=cost
metric:路由算法确定到达目的地的最佳路径的计量标准。
常用metric有:路径长度、可靠性、延迟、带宽、负载等。
在路径长度这一类中,不同协议有不同标准。如:RIP依据跳数,OSPF依据cost,EIGRP主要依据带宽K1和延时K3。
通常一个路由算法基于多个metric,并最终形成一个复合metric来作为选路标准。

注意:若p2p两端的ip不在同一网段中,则到达对端ip时需要计算2倍的开销


SPF算法
每个路由器计算以自己为根的最短路径树。
计算最短路径树的过程分为两个阶段:
第一阶段,计算所有的Transit节点和P2P,包括路由器和Transit网段。(相当于画骨架)
第二阶段,计算Stub网段。(添加血肉,即实际网段,最终计算路由开销)

stubnet参与cost计算,但是不能参与链路图的绘制
广播,p2p既参与cost计算,也参与绘制


看明白了,所谓spf算法,其实就是按照路由连接结构,以度量值为优先值读取数据库的做法,同时为深度优先。



---------ospf跨区域的metric值计算---------
1.先计算本区域内到达abr的metric值
2.再叠加3类lsa中的metric值
OSPF路由开销计算(区域内、区域间、SPF算法)
复制代码
复制代码
区域边界路由器(ABR)上有多个LSDB,ABR为每一个区域维护一个LSDB。
ABR将所连接的非骨干区域内的链路状态信息抽象成路由信息,并发布到骨干区域中,由骨干区域进一步发布到其他非骨干区域中。
ABR也要将骨干区域的链路状态信息抽象成路由信息,并发布到所连接的非骨干区域中。

为了避免区域间的环路,OSPF规定不允许直接在两个非骨干区域之间发布路由信息,只允许在一个区域内部或者在骨干区域和非骨干区域之间发布路由信息
三类LSA(network summary LSA)由ABR产生,将非骨干区域的一类,二类LSA转换而成,通告进骨干区域;同时ABR会将骨干区域的三类LSA继续通告给非骨干区域


3类LSA在ABR上生成,发布到除本区域以外的区域;当3类LSA跨区域传递时,通告路由器将是另一个ABR,metric也会重新计算
OSPF的水平分割原则:ABR从非骨干区域接收的一类或二类LSA,会转成三类LSA,该三类LSA不会再进入始发区域(防环)


骨干区域受水平分割的限制,从骨干区域传出去的路由,既不会从本身ABR传回LSA,也不会从其他ABR将LSA传回骨干区域
非骨干区域则不一样,从非骨干区域传出去的路由,不会从自身ABR传回LSA,但会从其他ABR传回LSA

这种区域表现为:
    当骨干区域被分割,则2个骨干区域不会有对方的路由信息,因为无3类LSA
    当非骨干区域被分割,OSPF正常,相当于2个不同的非骨干区域


-----------------真假ABR------------

真假ABR的问题----满足真ABR的条件:
    1、连接骨干区域和非骨干区域
    2、在骨干区域要有活动邻接

真ABR从非骨干区域收到的三类LSA,只接收(LSDB中会出现),不选路(不加入路由表)
    真ABR从非骨干区域收到的三类LSA和真ABR自己产生的三类LSA还是有区别吧。。。
伪ABR(连接骨干区域和非骨干区域,但是在骨干区域没有活动邻接),例如链路中断而造成的骨干区域被分割
假abrABR从非骨干区域收到的三类LSA,既接受,也选路




-----------------3类LSA描述------------

[Huawei]display ospf lsdb summary 12.0.0.0

     OSPF Process 100 with Router ID 4.4.4.4
                 Area: 0.0.0.0
         Link State Database 

                 Area: 0.0.0.10
         Link State Database 


  Type      : Sum-Net
  Ls id     : 12.0.0.0   #网络前缀。不管实际链路层为广播、环回口、点到点,三类汇总出的信息貌似都是一样的。只有一点需要注意:环回口默认当做末节网络宣告,不修改的话,掩码为32位
  Adv rtr   : 4.4.4.4  
  Ls age    : 62 
  Len       : 28 
  Options   :  E  
  seq#      : 80000001 
  chksum    : 0x9b84
  Net mask  : 255.255.255.0
  Tos 0  metric: 1563

  Priority  : Low
三类LSA及区域间路由(ABR、真假ABR、3类LSA描述)
复制代码
复制代码
如果是单区域,可以配置为骨干区域,也可以配置为非骨干区域
如果是多区域,必须要配置一个骨干区域,其他非骨干区域应该要和骨干区域相连
非骨干区域必须要连接到骨干区域,实在不行的话,也要建立虚连接


虚链路是属于骨干区域的
每个虚连接的端点都要计算两个最短路径树,一个是本地最短路径树,而另一个是虚连接邻居的最短路径树。
    1.最短路径树1----以自己为根
    2.最短路径树2---以虚连接邻居为根
    3.虚连接是不能跨区域的
本端报文的目的IP地址:
    计算虚连接邻居的最短路径树之后,在最短路径树上查找如何到达本地路由器(通过Router ID标识),即知晓了该虚连接邻居在该最短路径上的端口,即知晓了该IP。
    将该IP设置为本地路由器发送给虚连接邻居的协议报文的目的IP地址。(所以区域内的链路变化可能会造成目的IP的变化)




虚连接的应用场景:
    1、非骨干区域没有连接到区域0
    2、骨干区域被分割
    3、为了保证区域0的健壮性
    4、解决次优路径
    5、用虚链接代替区域0(华为可以,思科的虚链路必须要连接到区域0)



虚连接的缺点:
 1、必需要手工指router ID,如果自动选举router id ,重启进程有可能会造成虚连接中断
 2、不能汇总(使汇总配置失效)
 3、容易产生环路




虚链注意事项:配置虚链路要指peer 为对端的router id,ID与该设备有没有该IP没有任何关系,
             虚链接不能跨区域
             虚链接不能建立在stub 和nssa区域






#
ospf 10 router-id 2.2.2.2 

 area 0.0.0.20 
  network 23.1.1.2 0.0.0.0 
  vlink-peer 4.4.4.4                      指定虚连接的对端ID
           


[AR4]dis ospf vlink 

         OSPF Process 10 with Router ID 4.4.4.4
                 Virtual Links 

 Virtual-link Neighbor-id  -> 2.2.2.2, Neighbor-State: Full

 Interface: 34.1.1.4 (GigabitEthernet0/0/0)
 Cost: 2  State: P-2-P  Type: Virtual 
 Transit Area: 0.0.0.10 
 Timers: Hello 10 , Dead 40 , Retransmit 5 , Transmit Delay 1 
 GR State: Normal 
虚链路
复制代码
复制代码
3类LSA和5类LSA很相似
在跨区域传递时,3类LSA的通告路由器和metric都发生变化
但5类LSA的通告路由器和metric都不变,因为5类LSA的通告路由器始终是那个ASBR

4类lsa是由ABR产生的,所以引入外部路由的ASBR所在的区域是没有4类LSA的。。。
4类LSA不能跨区域,而是重新生成一条


-----FA地址-----

FA地址作用:类似icmp重定向,解决次优路径
计算外部路由时,如果五类LSA的FA地址不为0,那么计算该路由的依据FA地址进行选路;如果FA地址为0,计算该路由的下一跳依据ASBR


OISPF的五类LSA中,FA地址默认为0.0.0.0,携带FA地址的条件:
    1、该外部路由的下一跳地址所在网段的接口要发布到OSPF中,即该路由域内或域间可达
        域内可达的场景:类似icmp重定向,下一跳的设备没跑ospf或者接口没宣告进ospf中
        域间可达的场景:未知
    2、该接口没有配置为静默端口,或被动端口 即silent-interface 
    3、下一跳地址所在网段的接口类型不能是p2p或者P2MP


-------外部路由类型---------

ospf 10 router-id 5.5.5.5 
 import-route rip 1 type 1                      将RIP路由引入到OSPF,并设置类型为OE1,VRP中默认为OE2

OSPF共有两类外部路由:
第一类外部路由的AS外部开销值被认为和AS内部开销值是同一数量级的,因此第一类外部路由的开销值为AS内部开销值(路由器到ASBR的开销)与AS外部开销值之和;
第二类外部路由的AS外部开销值被认为远大于AS内部开销值,因此第二类外部路由的开销值只是AS外部开销值,忽略AS内部开销值。

第一类外部路由永远比第二类外部路由优先。
若某台ospf路由器到一个目标外部路由网段有2条OE2路由(即有2个ASBR引入了同一段外部路由),若外部开销相等,还要比较内部开销值;若内部开销值不同,则优选一条开销值低的

OSPF的路由优先级(好像没怎么讲。。。。)
域内(1-2)优先于 域间(三类) 外部(五类或七类)
域内〉域间〉OE1(ON1)〉OE2(ON2)





----------------4/5类LSA描述------------------

五类LSA
[AR5]dis ospf lsdb ase 6.6.6.6

     OSPF Process 10 with Router ID 5.5.5.5
         Link State Database


  Type      : External
  Ls id     : 6.6.6.6                                 网络号
  Adv rtr   : 5.5.5.5                                 通告者(ASBR)
  Ls age    : 574 
  Len       : 36 
  Options   :  E  
  seq#      : 80000001 
  chksum    : 0x5351
  Net mask  : 255.255.255.255 
  TOS 0  Metric: 1                                     ASBR到达目标网络的开销
  E type    : 2                                                                              OE1 和OE2 ,默认是OE2
  Forwarding Address : 0.0.0.0                                                FA 地址
  Tag       : 1 
  Priority  : Low


四类LSA
<AR8>dis ospf lsdb asbr 5.5.5.5

     OSPF Process 10 with Router ID 8.8.8.8
                 Area: 0.0.0.10
         Link State Database 


  Type      : Sum-Asbr
  Ls id     : 5.5.5.5                                                              ASBR的Router ID  
  Adv rtr   : 2.2.2.2  
  Ls age    : 1362 
  Len       : 28 
  Options   :  E  
  seq#      : 80000002 
  chksum    : 0x4cf0
  Tos 0  metric: 2
四类五类LSA及外部路由(FA地址、外部路由、4/5类LSA描述)
复制代码
复制代码
Stub区域技术可以减少Stub区域内部路由器上LSDB的规模和对内存的需求。

NSSA区域可以过滤五类LSA,也过滤4类,本地会生成NSSA(七类LSA)
ABR从骨干区域收到五类LSA会过滤掉,向NSSA区域通告一条类型为七类LSA默认类路由

七类LSA经过ABR时,会转成五类LSA(ADV会变成ABR的router id)
七转五的规则:如果有多个ABR,会比较router id,越大越优(即默认情况下,若有nssa区域与骨干区域有多个ABR,只会生成一条5类LSA);但可以通过命令强制某个或多个ABR进行转换:

虚连接不能跨越Stub area。ABR上可以将7类LSA转换为5类LSA,所以不是只有ASBR才能生成5类LSA的


域内路由,域间路由,华为标识为ospf,外部路由标识为 O_ASE 
                    思科域 O   域间OIA          外部OASE


------NSSA区域FA地址------

NSSA区域中会始终携带FA地址
携带FA地址的条件:
    1、该外部路由的下一跳地址所在网段的接口要发布到OSPF中,即该路由域内或域间可达
        域内可达的场景:类似icmp重定向,下一跳的设备没跑ospf或者接口没宣告进ospf中
        域间可达的场景:未知
    2、该接口没有配置为静默端口,或被动端口 即silent-interface 
    3、下一跳地址所在网段的接口类型不能是p2p或者P2MP
如果满足那三个条件FA地址是ASBR上外部路由的下一跳地址
如果不满足那三个条件,FA地址是ASBR上某个接口的IP地址,优选环回口地址

------特殊区域E位、NP位------

stub区域和totally stub区域的option选项中的E比特位都为0,即不接收外部路由

                  E (1表示可以接受5类LSA)          NP(1表示可以接受7类LSA)
normal            1                                  0                               1/2/3/4/5类LSA
stub区域          0                                  0                               1/2/3类LSA
NSSA              0                                  1                               1/2/3/7类LSA
backbone          1                                  0   area ID 为0                  1/2/3/4/5类LSA
 

------特殊区域配置------


配置上的区别:
stub区域:
    区域内所有路由器配置:[Huawei-ospf-10-area-0.0.0.10]stub
totally stub区域:
    区域内(除ABR以外)所有路由器配置[Huawei-ospf-10-area-0.0.0.10]stub
    区域内ABR配置[Huawei-ospf-10-area-0.0.0.10]stub no-summary 
    
nssa区域:
    区域内所有路由器配置:[Huawei-ospf-10-area-0.0.0.20]nssa 
totally nssa区域:
    区域内(除ABR以外)所有路由器配置:[Huawei-ospf-10-area-0.0.0.20]nssa 
    区域内ABR配置:[Huawei-ospf-10-area-0.0.0.20]nssa no-summary

路由现象的区别:
stub区域:
    stub过滤4,5类LSA,生成一条3类的默认路由;stub区域内还保留有3类LSA;不能引入外部路由
    stub区域只有1、2、3类LSA
totally stub区域:
    完全stub区域则过滤3,4,5类LSA,只保留一条3类的默认路由;不能引入外部路由
    完全stub区域有1、2、3类LSA,但无描述其他区域的3类LSA
    
nssa区域:
    nssa过滤4,5类LSA,生成一条7类的默认路由指向ABR;nssa区域内还保留有3类LSA;
    同时nssa区域可以引入外部路由,生成7类LSA在本区域内传递
    ABR会将7类LSA转换为5类LSA传递到其他区域
    nssa区域有1、2、3、7类LSA
    
totally nssa区域:
    完全nssa区域则过滤3,4,5类LSA,将3类LSA转化为一条默认路由指向ABR,同时生成一条7类的默认路由指向ABR;
    同时完全nssa区域可以引入外部路由,生成7类LSA在本区域内传递
    ABR会将7类LSA转换为5类LSA传递到其他区域
    完全nssa区域有1、2、3、7类LSA(此处的3类与nssa区域不一样)





ospf 10 
 area 0.0.0.10 
    stub                           /将该区域配置为stub区域(末节区域),该命令需要在所有配置为stub区域的设备上配置

ospf 10
 area 0.0.0.10 
  stub no-summary                /将该区域配置为totally stub(完全末节区域),该命令只需要在ABR上配置,其他设备只需要配置为stub即可

 area 0.0.0.10 
  nssa no-summary            将该区域配置成完全nssa(过虑掉3类LSA       华为没有totally nass的说法,只有相应的no-summary配置

nssa no-import-route           不向NSSA区域引入外部路由。该场景适用于即是ABR,也是ASBR的场景
nssa zero-address-forwarding   在NSSA区域的ABR上引入外部路由时,将生成的NSSA LSA的FA置为0.0.0.0。


[Huawei-ospf-10-area-0.0.0.10]nssa translator-always no-summary no-import-route suppress-forwarding-address
translator-always            在NSSA区域的ABR中,指定转换路由器。允许将NSSA区域中的多个ABR配置成转换路由器。
no-import-route            不向NSSA区域引入外部路由,自己既是ABR也是ASBR,做路由引入时,不向NSSA区域引入外部路由
no-summary               禁止ABR向NSSA区域内发送Summary LSAs。
suppress-forwarding-address        将通过该NSSA ABR转换后生成的Type5 LSA的FA(Aaddress Forwarding)设置为0.0.0.0。
zero-address-forwarding             将外部路由引入NSSA区域时抑制FA地址




[AR1]dis ospf lsdb nssa 10.1.1.0

         OSPF Process 10 with Router ID 1.1.1.1
                         Area: 0.0.0.10
                 Link State Database 


  Type      : NSSA
  Ls id     : 10.1.1.0                        /网络前缀
  Adv rtr   : 7.7.7.7                         /通告者ASBR
  Ls age    : 119 
  Len       : 36 
  Options   :  NP                           
  seq#      : 80000001 
  chksum    : 0xa5f3
  Net mask  : 255.255.255.0 
  TOS 0  Metric: 1000 
  E type    : 2
  Forwarding Address : 7.7.7.7                /在七类LSA中,始终会携带FA地址;通过命令可以置0
  Tag       : 1 
  Priority  : Low
OSPF特殊区域
复制代码

 认证

复制代码
OSPF的认证:在OSPF的头部携带
    1、不认证 type =0
    2、简单的明文认证type =1
    3、MD5 认证  type =2



ospf不区分区域或者接口认证,只要认证类型一致,密码一致,邻居就可以正常建立
如果在该区域下配置了认证,该区域下的所有接口在发送报文时都会携带认证字段
如果同时配置了区域认证和接口认证,接口认证优先
如果OSPF的Area0配置了认证,那么虚链接也需要配置认证,因为虚链接也属于区域0

cipher、plain影响的只是本地存储是否加密,默认为cipher本地加密
cipher、plain不一致并不影响认证

area 0.0.0.0 
 authentication-mode simple cipher                    /配置OSPF区域下的认证类型为简单明文认证

interface GigabitEthernet0/0/0
 ip address 24.1.1.2 255.255.255.0 
 ospf authentication-mode simple ciphe               /配置OSPF接口 下的认证类型为简单明文认证

 area 0.0.0.20 
  network 45.1.1.0 0.0.0.255 
  vlink-peer 4.4.4.4 simple cipher                 针对虚链路配置认证
认证
复制代码

 OSPF默认路由、区域间路由汇总、OSPF路由过滤

复制代码
OSPF默认路由的下放
1、ip route-static 0.0.0.0 0.0.0.0 56.1.1.6
   [AR5-ospf-10]default-route-advertise 
   
2、[AR5-ospf-10]default-route-advertise always                /无论本地是否有默认,始终会下发默认路由


NSSA区域ABR下放默认路由:
    1.ABR配置了NSSA就会下放一条包含默认路由的7类LSA
    2.ABR配置了nssa no-summary会同时下放一条包含默认路由的3类LSA和一条包含默认路由的7类LSA
NSSA区域ASBR下放默认路由
    1.ASBR配置nssa default-route-advertise。。。。。
    2.totally NSSA 区域,ASBR是无法下放默认路由,即使ASBR有默认路由也不会下放
OSPF默认路由
复制代码
复制代码
三类LSA的汇总

ospf 10 router-id 2.2.2.2 
 area 0.0.0.10 
  abr-summary 10.1.0.0 255.255.248.0                   三类LSA的汇总,只能在ABR上做,而且只能在起始区域做汇总

 area 0.0.0.10 
  abr-summary 10.1.0.0 255.255.248.0 cost 1000         对三类LSA汇总,并赋予Cost值
 area 0.0.0.10 
  abr-summary 10.1.0.0 255.255.248.0 not-advertise     对三类LSA汇总,不通告给任何邻居
2、五类LSA的汇总
ospf 10 router-id 5.5.5.5 
 asbr-summary 192.168.0.0 255.255.248.0                 五类LSA的汇总,需要在ASBR上做

[R5-ospf-10]asbr-summary 192.168.0.0 255.255.248.0 cost 1999       对五类LSA进行汇总,并赋予Cost值
asbr-summary 192.168.0.0 255.255.248.0 not-advertise               对五类LSA进行汇总,不通告给任何邻居
区域间路由汇总
复制代码
复制代码
引入路由时,可以使用xxxx调用acl,route-policy等进行路由过滤

OSPF的过滤:
总结:
    1. 在ospf进程中,使用filter-policy进行过滤,只过滤路由,不过滤LSA
        filter-policy:进程下的命令,所有路由器上都可以做;出方向可以敲上去,但是没有任何效果,只能用入方向(加数据库但是不加路由表)——同思科
    2. 在ospf进程中,使用filter-lsa-out可以直接过滤LSA
    3. 在ospf进程区域下配置,使用filter进行过滤,可以过滤3类LSA
        filter:区域下的命令,只能在ABR上做(不一定非要是路由起源的ABR)。与思科的不同之处:可以调用ACL或prefix,思科只能调用prefix
    4. 路由汇总时配置not-advertise也有过滤效果
      5. 接口上配置ospf filter-lsa-out,过滤LSA     




------------------------具体用法展示--------------------
1、使用filter-policy进行过滤
acl number 2001  
 rule 5 deny source 77.77.77.77 0 
 rule 10 permit 

ospf 10 
 filter-policy 2001 import            该方法只能过滤路由,不能过滤LSA,如果该命令配置在abr,匹配的路由不会引入进该区域
2、
ospf 10 

 filter-policy 2002 export            在出方向过滤路由该命令只能在ASBR上配置,将外部路由引入OSPF时进行过滤
acl number 2002  
 rule 5 deny source 172.16.0.0 0.0.3.255 
 rule 10 permit 
3、三类LSA的过滤
#
acl number 2001  
 rule 5 deny source 77.77.77.77 0 
 rule 10 permit
 area 0.0.0.10 
  filter 2001 export                   使用filter 过滤三 类LSA,该命令只能在abr 上配置        

 area 0.0.0.0 
  filter 2001 import 

filter  import/export只能在abr上做过滤

4、三类LSA过滤
 area 0.0.0.10 
  abr-summary 10.1.0.0 255.255.252.0 not-advertise  //将该路由汇总并过滤

5、五类LSA的过滤
ospf 10 
 asbr-summary 172.17.0.0 255.255.0.0 not-advertise

6、在接口下进行过滤
interface Serial1/0/0
 ospf filter-lsa-out ase                  过滤五类LSA
interface Serial1/0/0

 ospf filter-lsa-out summary              过滤三类LSA
interface Serial1/0/0
 ospf filter-lsa-out all              过滤所有LSA
OSPF路由过滤
复制代码

 OSPF配置及常用命令

复制代码
----------------------------------------常用命令-------------------------------------------

<POP-S12508-01>dis cu configuration ospf #其实配置是可以根据各个视图进行查看的。。
[Huawei]dis ospf interface  #可以查看当前ospf宣告的端口有哪些,以及该端口的链路类型,DR/BDR
[Huawei]display ospf peer brief #查看邻居表
[Huawei]display ospf lsdb#查看链路状态数据库
[Huawei]display ospf error interface g0/0/0#查看错误,方便排障,思科没有相应的命令

[Huawei-GigabitEthernet0/0/0]ospf enable 10 area 10#另一种ospf端口宣告方式,不推荐
[Huawei-GigabitEthernet0/0/0]ospf timer hello 15                        修改OSPF 的Hello时间,如果Hello时间修改,Dead 时间会自动为Hello的4倍

<AR2>reset ospf process                  /重置OSPF进程
[AR1]dis ospf int                        //查看OSPF接口宣告状态
[AR8]dis ospf peer brief                 //查看OSPF邻居信息
display ospf lsdb                          //查看OSPF的链路状态数据库


--------------------------------------常见配置---------------------------------------------

把端口宣告进ospf进程有2种方式
    1.再ospf进程的area视图宣告
    2.在设备端口视图进行宣告

-----OSPF进程的配置------
Router ID:用于在自治系统中唯一标识一台运行OSPF的路由器的32位整数,每个运行OSPF的路由器都有一个
ospf 10 router-id 1.1.1.1#router-id可以在全局宣告,也可以在ospf进程中宣告;ospf的进程号只具有本地意义;进程优于全局
  bandwidth-reference 1000/修改OSPF的参考带宽
 area 0.0.0.0
  network 13.0.0.1 0.0.0.0#建议精确宣告

-----端口关于OSPF的配置----

[Huawei-GigabitEthernet0/0/0]ospf dr-priority 0         #修改接口DR优先级,0不参选
[Huawei-GigabitEthernet0/0/0]ospf network-type p2p      #修改链路类型
[Huawei-GigabitEthernet0/0/0]ospf mtu-enable            #开启MTU检测
[Huawei-GigabitEthernet0/0/0]ospf timer hello 20 #修改Ospf的hello时间,MA网络中hello默认10秒,dead时间会自动调整
[Huawei-GigabitEthernet0/0/0]ospf timer dead 50#若修改了dead时间,hello时间不会自动修改;MA网络中默认为hello的4倍
[Huawei-GigabitEthernet0/0/0]ospf timer poll 40#在NBMA网络上,当邻居失效后,将按ospf timer poll设置的轮询时间间隔定期地发送Hello报文。轮询时间间隔值至少应为Hello报文时间间隔的4倍。
[Huawei-GigabitEthernet0/0/0]ospf timer retransmit 5#设置接口重传LSA的时间间隔。
[Huawei-Serial0/0/0]ospf trans-delay 400#并不是延迟400秒发送,而是直接增加了age时间400秒
[Huawei-GigabitEthernet0/0/0]ospf p2mp-mask-ignore      #在点到多链路中忽略掩码检测
OSPF配置及常用命令
复制代码

 故障排查思路

复制代码
故障处理步骤:
    1.首先要确保IP地址配置正确dis ip int b
    2.检查ospf邻居关系dis ospf peer brief
    3.定位ospf邻居故障dis ospf error(用户试图:reset ospf counter计数器清零)
        [AR1]dis ospf error interface GigabitEthernet 0/0/0
    4.查看配置
        dis cu conf ospf  //查看ospf部分的配置
        dis cu int g0/0/0  //查看接口下的配置


影响OSPF邻接建立的因素:
    1、物理层故障(链路由故障)或者是协议故障(链路是UP的,协议是down的)
        ping一下对端地址是否正常
    2、RID冲突导致OSPF邻居无法正常建立
        如果直连冲突,邻居无法建立;
        如果在同一个区域,非直连,邻居没有问题,LSA会一直震荡,到一定时间,华为设备的OSPF会检测到冲突,自动修改rid,即可正常
        如果不同一个区域,邻居正常,路由正常,如果在冲突设备上引入外部路由,LSA会一直震荡,到一定时间,华为设备的OSPF会检测到冲突,自动修改rid,即可正常
    3、接口是否宣告进OSPF
        display ospf interface                 查看接口的OSPF情况
    4、区域ID错误,导致OSPF邻居无法建立:同一网段的所有端口应当配置在同一区域中
        display ospf interface    
    5、网络类型不匹配会导致OSPF邻居无法建立,网络类型两端要保持一致
    6、OSPF的认证类型不区配/OSPF的认证密码不匹配
    7、Hello时间不一致,会导致邻居无法建立;dead时间不一致,会导致邻接无法建立
    8、配置了被动接口,会导致邻居无法建立
    9、option选项不匹配也会导致邻居无法建立-----E位,N/P位----配置了特殊区域时,区域内的所有路由器都要配置
    10、掩码不匹配
        如果是ma网络会检测掩码,邻居无法正常建立
        如果是P2p,p2m不检测,可以正常建立
    11、DR优先级都为0,会导致邻接无法(full )建立,但是可以正常建立邻居(two-way)
    12、MTU不一致,华为设备是不检测MTU的
        如果配置了MTU检测会卡在extart 或exchage状态
        如果没有开启MTU检查功能会卡在Loading状态
    12、NBMA中环境中,没有手工指定邻居
    13、配置了ACL,对224.0.0.5  224.0.0.6做过滤,(协议号89——ACL)
故障排查思路
复制代码

 其他

复制代码
LSDB超载机制、stub-router、TAG


LSDB超载机制(限制LSA的另一种方式)

超载正是因为在引入了外部路由后,造成路由表过大产生超载

LSDB超载机制限制路由器所能学习的最大的5类LSA的条目数量,以防超载(超载后将不学习这些5类LSA了)
[Huawei-ospf-10]lsdb-overflow-limit 100


stub路由器特性
如果网络中有某些低端设备要参与到ospf中,但又不希望将它参与到SPF计算中(因为其性能较差),可以设置这个特性
[Huawei-ospf-10]stub-router //末节路由器
stub特性会修改其1类LSA中通告出来的开销值,这样别人就不会从它这里走,从而到达影响路径选择的目的



使用import命令引入外部路由时,可以对路由打标记(TAG)
    ISIS协议中搜索tag
LSDB超载机制、stub-router、TAG
复制代码

 故障案例

复制代码
案例1:
学习目的:学会路由分析,真假ABR

ospf中,若骨干区域和非骨干区域同时存在多个ABR,则存在多条同一网段的3类LSA,因为每个ABR都会宣告一条
上面为骨干区域,下面为非骨干区域


测试目标为R4的两个端口与R2的两个端口互ping



情况1.当r1r2之间的邻居down,端口状态正常:[r1-ospf-100]silent-interface Ethernet 0/0/1
R4端口24.0.0.4 ping R1端口12.0.0.1  不通!     去向有路由,返向无路由,因为R1无返向路由;R3为真ABR,虽然有24.0.0.0段的3类LSA,但是不加载路由
R4端口24.0.0.4 ping R1端口13.0.0.1  不通!     去向无路由,因为R4为真ABR,虽然有13.0.0.0段的3类LSA,但是不加载路由;返向也无路由。
R4端口45.0.0.4 ping R1端口12.0.0.1  通! 
R4端口45.0.0.4 ping R1端口13.0.0.1  不通!     


情况2.当R1R2之间的链路故障,端口down
因为R4为真ABR,虽然有12.0.0.0,13.0.0.0网段的3类LSA,但不会加载路由
则4个方法都不通



情况3.当R2R4之间的邻居故障,链路正常
此时R4为伪ABR,有12.0.0.0,13.0.0.0网段的3类LSA,同时会加载路由:所以R4到R1的两个网段总是有路由的,且都是从3类LSA中学习到的
R1去往R4的24.0.0.0网段则是通过1类LSA学习到的,去往45.0.0.0网段则是通过3类LSA学习到的。


情况4.当R2R4之间的链路故障,端口down
R4为伪ABR,去往R1的2个网段都有路由;因为端口down了,此时24.0.0.0网段根本就没有被宣告经ospf进程中。。。
R4端口24.0.0.4 ping R1端口12.0.0.1  不通!     
R4端口24.0.0.4 ping R1端口13.0.0.1  不通!     
R4端口45.0.0.4 ping R1端口12.0.0.1  通! 
R4端口45.0.0.4 ping R1端口13.0.0.1  通! 



这道题目还有一个变种
就是上面为area 10
下面为area 0
所以就相当于非骨干区域被分割,这种情况不会有问题。非骨干区域被分割,则相当于2个非骨干区域

真ABR从骨干区域接受的3类LSA,既接受也选路。
真ABR从非骨干区域收到的三类LSA,只接收(LSDB中会出现,不选路(不加入路由表)


满足真正的ABR的和条件:1、连接骨干区域和非骨干区域
                      2、在骨干区域要有活动连接



1.首先设备是可以判断出来自己是ABR
2.应该是ospf系统天生认为骨干区域唯一,所以ABR默认不使用3类LSA选路,因为ABR可以通过1,2类LSA进行SPF计算(猜测)
案例1
复制代码

 

复制代码
案例2:虚链路的应用场景---解决次优路径
例如以上场景:当未配置虚连接时,AR21访问上面的AR14时,路由到达AR20时,由于区域内路由优先于区域间路由(AR20从AR19学习到的是区域内路由,AR20从AR18上获取的是3类LSA,即区域间路由),而选择了开销值更大的AR19为下一跳,此时产生了次优路径



虚链路应用的其他4个场景就没什么好说的了
案例2:虚链路的应用场景---解决次优路径
复制代码

复制代码
案例3:虚链路环路场景1
R3作为ABR,在区域0有关于5.5.5.5的3类LSA,在区域1也有关于5.5.5.5的3类LSA

当R2要访问R5:
    1.R2根据3类LSA,先去寻找ABR(R4),下一跳到达R1
    2.R1根据3类LSA,也去寻找ABR(R4),但由于是虚链路,此时实际下一跳到达R3
    3.R3虽然有多条关于5.5.5.5的3类LSA,不管如何,肯定也是去寻找ABR(R4),此时优化区域内路由,即下一跳为R2(环路产生)
    
肯定优选了区域0的3类LSA:1.骨干区域的路由优先,2.R3为真ABR,从非骨干区域接收的3类LSA只接收不选路

结论1:虚链路不是真正的隧道,实际走的还是IP转发,所以R1虽然想到ABR(R4),但实际还是到了R3


R3上关于5.5.5.5的3类LSA共有3条
    1.区域0,由R4传递过来的3类LSA
    2.R4通告进区域1的3类LSA
    3.R3通告进区域1的3类LSA
    4.R1不会将该条3类LSA通告进区域1,因为水平分割
案例3:虚链路环路场景1
复制代码
复制代码
案例3:虚链路环路场景2
注意:上图中有2条虚连接

AR6有去往11.11.11.11的3类LSA,通告路由器为AR10
AR9有去往11.11.11.11的3类LSA应该有3条
    R10作为ABR,向区域1通告3类LSA
    R7作为ABR,向区域2通告3类LSA
    因为R7R9在区域2做了虚连接,所以区域0也有1条3类LSA
    R7是ABR,但不会向区域1通告关于11.11.11.11的3类LSA,因为水平分割
AR8有去往11.11.11.11的3类LSA,通告路由器为AR7

当R6访问11.11.11.11
    1.R6去往ABR(R10),下一跳为R7
    2.R7去往ABR(R10),但因为虚链路,实际下一跳为R9
    3.因为R7R9在区域2做了虚连接,R9认为自己在骨干区域到ABR(R10)可达,实际下一跳为R8(成环关键)
    4.R8下一跳到达R7
案例3:虚链路环路场景2
复制代码

复制代码
案例4:FA地址环路实验

实验前提:
    1.7转5类由R3完成
        七转五的规则:如果有多个ABR,会比较router id,越大越优(即默认情况下,若有nssa区域与骨干区域有多个ABR,只会生成一条5类LSA);但可以通过命令强制某个或多个ABR进行转换:
    2.11.11.11.11作为外部路由引入;R2上存在了2条11.11.11.11的LSA,一条为R1生成的7类LSA,另一条为R3生成的5类LSA
    
正常情况下:
    1.R3将7类转5类时,设置了FA地址12.0.0.1(FA地址域间可达场景);所以R4要访问11.11.11.11时,即先去往FA地址12.0.0.1,根据关于12.0.0.0的3类LSA,下一跳到达R2
    2.R2此时有2条关于11.11.11.11的LSA,一条7类LSA,另一条R3宣告的5类LSA;但FA地址都设置为12.0.0.1。从路由表关于11.11.11.11的ospf 协议类型为O_NSSA来看,R2选择了7类LSA??
    
当R3将7类转5类时,抑制了FA地址,此时将会形成环路:
    1.当R4要访问11.11.11.11时,通过5类LSA去访问,因为FA地址为0,所以下一跳到达ABR,即到了R3
    2.R3根据7类LSA进行选路,路由指向R2
    3.(成环关键)R2存在2条关于11.11.11.11的LSA,一条为R7生成的7类LSA,表现为ON2,另一条为R3生成的5类LSA,表现为OE2;
    其实ON2和OE2是一样的,因为外部开销一致,则开始比较内部开销;此时在区域0去往ABR的5类LSA的开销小,所以R2区域11.11.11.11的下一跳为R4(成环)
案例4:FA地址环路实验
复制代码

复制代码
关于R3上为什么只有1条1.1.1.1的lsa的解释:
    因为虚链路是穿越area10到达R4的,同时因为水平分割,所以关于1.1.1.1的LSA不会回传给R3






其他:
两台ABR只有一台执行了汇总——可能引起路由环路问题
解决方法:两台ABR都执行汇总
案例5
复制代码

 

posted @   雲淡風輕333  阅读(1748)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示