|
|
|
|
公众号矩阵

这篇文章把OSPF讲的明明白白

OSPF属于IGP,是Link-State协议,基于IP Pro89,它采用SPF算法(Dijkstra算法)计算最佳路径,可以快速响应网络变化。

作者:小微来源:厦门微思网络|2021-09-30 09:59

OSPF

  • OSPF属于IGP,是Link-State协议,基于IP Pro89。
  • 采用SPF算法(Dijkstra算法)计算最佳路径。
  • 快速响应网络变化。
  • 以较低频率(每隔30分钟)发送定期更新,被称为链路状态刷新。
  • 网络变化时是触发更新。
  • 支持等价的负载均衡。

OSPF维护的3张表

  • Neighbor Table:确保直接邻居之间能够双向通信。
  • Topology Table:LSDB(Link-State DataBase),同一区域的所有路由器LSDB相同。
  • Routing Table:对LSDB应用SPF算法,选择到达目标地址的最佳路由放入路由表。

OSPF的区域划分

(1) OSPF采用层次设计,用Area来分隔路由器。 

区域中的路由器保存该区域中所有链路和路由器的详细信息,但只保存其他区域路由器和链路的摘要信息。

(2) Transit area (backbone or area 0)区域0--主要作用是防环,也提高了扩展性!

主要功能:为快速、高效地传输数据包。通常不接用户。

(3) Regular areas (nonbackbone areas) 主要是连接用户。而且所有数据都必须经过area 0中转。 

包括:Stub / Totally Stubby / NSSA

采用层次设计的好处

  • 减少了路由表的条目
  • LSA的泛洪在网络边界停止,加速会聚
  • 局限拓扑变更的影响 缩小网络的不稳定性,一个区域的问题不会影响其它区域。

OSPF的邻居与邻接关系

  • OSPF路由器与它直连的邻居建立邻居关系。
  • OSPF路由器只会与建立了邻接关系的路由器互传LSA。
  • 路由器只和建立了邻接关系的邻居才可以到达FULL状态。
  • 路由更新只在形成FULL状态的路由器间传递。
  • P2P链路可以到达FULL状态。
  • MA网络,所有路由器只和DR/BDR到达FULL状态。

(Backup Designated Router)

邻居及邻接的区别

  • 邻居---必须有直连的链路
  • 邻接--- 1. 必须是邻居 2. 链路两边同一区域的数据库必须同步(状态为:FULL).

(1) Route-ID:

为唯一标识OSPF域中路由器。

设置Route-ID的优先顺序:

  • 手工指定Route-ID x.x.x.x(可任意,但不能重复)
  • 最大的Loopback IP
  • 最大的接口IP(保证接口是激活状态)higher active physical interface ip推荐使用环回口和手工指定的router-id,因为它们的稳定性更高。

(2) DR/BDR的选举:

比较优先级,越大越优(默认为1,如设为0表示不参与选举)

比较Route-ID,越大越优。

  • DRother发送LSA给DR/BDR用224.0.0.6
  • DR发送LSA给DRother用224.0.0.5
  • 非MA网络(没有DR/BDR),路由器都用224.0.0.5

<DR/BDR>特点

  • 不抢占,DR正常时,即使有新的Pri比DR高的路由器也不能抢占成为DR。
  • DR正常时,BDR只接收所有信息,转发LSA和同步LSDB的任务由DR完成,当DR故障时,BDR自动成为DR,完成原DR的工作,并选举新的BDR。
  • DR是个接口概念。每个网段都会选举DR。
  • 不同网段分别选DR/BDR

SPF算法

  • 在一个区域内的所有路由器有同样的LSDB
  • 每一个路由器在计算时都将自已做为树根
  • 具有去往目标的最低cost值的路由是最好的路径
  • 最好的路由被放入转发表

计时器

  • Hello Intervals:10S/30S(广播型网络默认10s,非广播型网络缺省是30s!)
  • Dead Interval:4*Hello =40S 不同于其它协议的三倍于Hello时间

hello包发向224.0.0.5

下面这三种网络类型的hello时间是30S

  • NON_BROADCAST
  • POINT_TO_MULTIPOINT
  • POINT_TO_MULTIPOINT(点到多点) NON_BROADCAST(非广播)

OSPF开销值计算

  • OSPF Cost = 10^8/BW (bps)

默认情况下,环回口的COST值是1,serial口的COST值是64,以太口是10

OSPF的5种报文

(1) Hello:发现并建立邻接关系。还有选举DR和BDR!!!

(2) DBD:包含路由的摘要信息。

(3) LSR:向另一台路由器请求特定路由的完整信息。

(4) LSU:用于LSA的泛洪和回应LSR该条路由的完整信息。在OSPF中,只有LSU需要显示确认

(5) LSAck:对LSU做确认。

确认(ACK):

  • 隐式 如Update对Request的隐式确认
  • 显式 LSA只对LSU显式确认

DBD包中有一个三位的标志字段(主从关系控制标志):

  1. Initial(初始位)、More(后继位)、Master/Slave(主从位) 
  2. I(是否第一个包)        M(是否还有后续包)        M/S        
  3. 1        1        1        
  4. 0        1        0        
  5. 0        1        1     

分别是0x7,0x2,0x3 具有最高route-id的路由器为主路由器,建邻居时第一个DBD是空的,目的为了选主从关系。选主从的目的是为了同步DBD,一开始两台路由器都发送一个空的DBD,序列号随机生成,选出主路由器后从路由器先发送一个DBD,序列号为主路由器的序列号。(这样就隐式确认)

OSPF建邻居的必要条件

  1. Hello/Dead Intervals 
  2. Area ID 
  3. Authentication Password 
  4. Stub Area Flag 
  5. MTU 
  6. subnet mask(必须是同一个网段) 
  7. show ip ospf nei         如皋市exstart 状态 表明他们呢的mtu 不一致,  那么 就 ip ospf mtu-ignore (忽略这个问题zx) 

OSPF状态机

  1. down state 
  2. init state 
  3. two-way state 
  4. exstart state 
  5. exchange state 
  6. loading state 
  7. full state 

OSPF基本操作命令

  1. R1(config)#router ospf 110    注意:进程号是cisco的私有技术 没有必要都设置成一样的 
  2. R1(config-router)#network 1.1.1.0 0.0.0.255 area 0   (正/反掩码皆可) 
  3. R1(config-router)#network 12.1.1.0 255.255.255.0 area 0   区域号还可用点分十进制表示 
  4. R1#show ip protocols 
  5. R1#show ip ospf       可查看router-id,进程号,域的数量 
  6. R1#show ip ospf interface 
  7. R1#show ip ospf interface brief 
  8. R1#show ip ospf neighbor    查看邻居信息 
  9. R4(config-if)#ip ospf hello-interval 9 
  10.                      (dead自动*4) 
  11. R4(config-if)#ip os dead-interval 80 
  12. R4(config-if)#ip ospf priority 10   修改优先级 
  13. R1#show ip os database 
  14. 注意:在OSPF中,环回接口的路由掩码会变为32位   可用命令IP OSPF NETWORK POINT-TO-POINT 

假如在一个大型网络中,OSPF如果没有分层,会有以下的问题产生:

  • 每一个路由器会接收到太多的LSA
  • 会经常进行路由的计算
  • 路由表太大,而路由器的内存是有限的。

OSPF路由器的类型:

  • 内部路由器--在一个普通区域内的路由器
  • 核心路由器--在area 0区域内的路由器
  • ABR区域边界路由器--连接两个不同区域的路由器
  • ASBR自治系统边界路由器--连接OSPF域到另一个自治系统的路由器

LSA

链路状态类型、链路状态ID、通告路由器用来唯一地标识一条LSA序列号、校验和、老化时间标识一条LSA的具体实例

  1. 32位 
  2. 16b----------|----8------------|------8-----| 
  3. 老化时间            可选项            类型        
  4.             链路状态ID(Link-ID)名字        
  5.             通告路由器(ADV  Router)Router-id        
  6.                  序列号 .seq        
  7.   校验和 .CRC                   长度 .len        

学习时的注意点:

  • 传播范围
  • 由谁产生
  • 包含内容
  1. ·类型         指明是哪种类型的LSA 
  2. ·Link-ID      每一条LSA都有一个Link-ID,区分不同路由器发出的LSA 
  3. ·ADV Router   指通告路由器的Router-id 
  4.  
  5.  
  6.             1     2  34  57 
  7. Link ID    RID   DR IP Route ASBR RID RouteRoute 
  8.  
  9.  
  10. show ip ospf database router 1.1.1.1 
  11. LSA1(Router Link States) 
  12. R1#show ip ospf database router   查看LSDB中的1类LSA的详细信息 
  • 域内路由,仅在本区域传递,不会穿越ABR。
  • 每台路由器都会产生。
  • 包含本路由器的直连的邻居,以及直连网络的信息
  1. Link ID:              router ID 
  2. ADV router:        router ID 
  3. 三种信息:Another neighbor    stub network   transit  network(Ma网络的一些信息,说明是否连接到ma网络!) 
  1. LSA2(Net Link States) 
  2. R1#show ip ospf database network  
  3. 1、仅在本区域传递 
  4. 2、只有MA网络才会产生LSA2,由DR产生。 
  5. 3、标识出本MA网中有哪些路由器以及本网的掩码信息。 
  6. Link ID:        DR的接口IP 
  7. ADV router:     DR的router ID 

  1. LSA3(Summary Net Link States) 
  2. R1#show ip ospf database summary 
  3. 1、域间路由,能泛洪到整个AS。 
  4.     2、由ABR发出,穿越一个ABR,其ADV Router就会变成此ABR的Router-id. 
  5. 3、包含本区域中的所有路由信息,包括网络号和掩码。 
  6. Link ID:        路由route(网络号) 
  7. ADV router:     ABR的router ID(经过一个ABR,就会改为这个ABR的router ID) 
  1. LSA4(Summary ASB Link States辅助作用,用来告知其他路由器ASBR的位置 
  2. R1#show ip os database asbr-summary 
  3. 1、把ASBR的Router-id传播到其他区域,让其他区域的路由器得知ASBR的位置。 
  4. 2、由ABR产生并发出,穿越一个ABR,其ADV Router就会变成此ABR的Router-id. 
  5. Link ID:        ASBR的RID 
  6. ADV router:     ABR的router ID(经过一个ABR,就会改为这个ABR的router ID) 
  7. 在ASBR直连的区域内,不会产生4类的LSA,因为ASBR会发出一类的LSA,其中会指明自已是ASBR 
  1. LSA5(Type-5 AS External Link States) 
  2. R1#show ip os database external 
  3. 1、域外路由,不属于某个区域。将外部路由通告进入ospf区域! 
  4. 2、ASBR产生,泛洪到整个AS。不会改变ADV Router。因为不改变所以其他路由器不知道ASBR怎么走,这就要用到类型4LSA! 
  5. 3、包含域外的路由       Type 4 LSA is needed to find the ASBR 
  6. Link ID:        路由(网络号) 
  7. ADV router:     ASBR的router ID (unchange) 
  8. R1#sh ip os database external 
  9.             OSPF Router with ID (172.16.1.1) (Process ID 1) 
  10.                 Type-5 AS External Link States 
  11.   LS age: 135 
  12.   Options: (No TOS-capability, DC) 
  13.   LS Type: AS External Link 
  14.   Link State ID: 172.16.1.0 (External Network Number ) 
  15.   Advertising Router: 172.16.1.1 
  16.   LS Seq Number: 80000001 
  17.   Checksum: 0xB76C 
  18.   Length: 36 
  19.   Network Mask: /24 
  20.         Metric Type: 2 (Larger than any link state path) 
  21.         TOS: 0 
  22.         Metric: 20 
  23.         Forward Address: 0.0.0.0 转发地址为0.0.0.0表示要向外部路由发数据包就发向通告路由器.....什么情况下不是0.0.0.0呢?这时会出问题。 
  24.         External Route Tag: 0     
  1. LSA7(Type-7 AS External Link States) 
  2. R2#show ip os database nssa-external 
  3. 特殊的域外路由,只存在于NSSA区域中。 
  4. Link ID:        路由(网络号) 
  5.    ADV router:     ASBR的router ID (只在NSSA区域中) 
  6. R2(config-if)#bandwidth 5000 
  7. R2(config-if)#ip ospf cost 30 

OSPF的四种路径类型

  • 域内路由 O...1、2
  • 域间路由 O IA....3、4
  • E1的外部路由 O E1...5 (当有2个出口的时候可以优化)
  • E2的外部路由 O E2...5 (只有一个出口的时候最佳)

外部路由重分布进OSPF有两种类型:

  • 重分布进OSPF的路由默认为E2,Cost=20,且传递过程中不改变COST。
  • 如果改为E1类型,则在传输过程中会累加每个入接口的cost值

如果有去往同一目标的多条路由重分布进OSPF,OSPF在选择外部路由的时候,遵循的原则是:

  • O E1优于O E2
  • 在同样的情况下,Cost越小越优先
  • 在cost相同的情况下,选择到达ASBR最优的路径

新命令

  1. Router(config-router)#max-lsa maximum-number [threshold-percentage] [warning-only] [ignore-time] [ignore-count] [reset-time]...限制lsa的条数 
  2. 定义一个百分比值,当收到LSA的条数超过我指定的值,进行相应的操作,用于限定路由器所能收到的LSA条数 
  3. maximum-number   所允许收到LSA的最大条数 
  4. [threshold-percentage]  maximum-number的百分比,超过这个值就会发出警告,默认75% 
  5. [warning-only]    只发送警告,不做其它动作,默认是关闭的 
  6. [ignore-time]     超过最大值后进入ignore状态的时间,默认5分钟,5分钟后恢复 
  7. [ignore-count]    超过多少次后,一直进入ignore状态 
  8. [reset-time]      一直进入ignore状态后多长时间重置所有邻居 

ABR有多条路由时如何发出三类LSA:

ABR路由器即使知道它有多条路由可以到达同一个目的地,它只会为这个目的地始发单条网络汇总LSA通告。不论是从核心区域到非核心,还是从非核心到核心区域。而且一定是代价最低的一条LSA。

修改Cost参考值

  1. ·OSPF Cost = 108/BW (bps)    环回口的COST值是1,serial口的COST值是64,以太口是10 

要修改路由的COST值有两种方法:

第一种:

  • R1(config)#int e0
  • R1(config-if)#ip ospf cost 10 直接修改COST值1-65535

第二种:

  • R1(config)#router ospf 110
  • R1(config-router)#auto-cost reference-bandwidth 1000 (Mbps10的六次方)在COST公式中修改分子,本例修改分子为10的九次方

汇总的好处:

  • 减少路由条目数
  • 使拓扑变化的影响局限在一个小范围内
  • 减少了LSA3和LSA5的flood

鸿蒙官方战略合作共建——HarmonyOS技术社区

【责任编辑:赵宁宁 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微