zoukankan      html  css  js  c++  java
  • OSPF原理及配置

    OSPF原理及配置

    OSPF(Open Shortest Pass First,开放最短路径优先协议),是一个最常用的内部网管协议,是一个链路状态协议。

    OSPF的特点

    1. OSPF是一种无类路由协议,支持VLSM可变长子网掩码。支持IPV4和IPV6.
    2. 组播地址:224.0.0.5 224.0.0.6。
    3. OSPF度量:从源到目的所有出接口的度量值,和接口带宽反比(10^8/带宽)。
    4. 收敛速度极快,但大型网络配置很复杂。
    5. IP封装,协议号89

    OSPF运行原理

    OSPF组播的方式在所有开启OSPF的接口发送Hello包,用来确定是否有OSPF邻居,若发现了,则建立OSPF邻居关系,形成邻居表,之后互相发送LSA(链路状态通告)相互通告路由,形成LSDB(链路状态数据库)。再通过SPF算法,计算最佳路径(cost最小)后放入路由表。 
    设计要求:1.必须配置骨干区域0 
                      2.其他区域连接到骨干区域 
    好处:  1.减小路由表(通过域间汇总) 
              2.本地拓扑变化值影响一个区域(也是通过汇总) 
              3.某些LSA之子本地泛红,不泛洪到其他区域 
    注:OSPF区域划分基于接口而不是设备

    OSPF区域及路由器身份

    OSPF区域

    骨干区域(区域0):骨干区域必须连接所有的非骨干区域,而且骨干区域不可分割,有且只有一个,一般情况下,骨干区域内没有终端用户。 
    非骨干区域(非0区域):非骨干区域一般根据实际情况而划分,必须连接到骨干区域(不规则区域也需通过tunnel或virtual-link连接到骨干区域)。一般情况下,费骨干区域主要连接终端用户和资源。

    OSPF身份

    DR(Designated Router):指定路由器,OSPF协议启动后开始选举而来 
    BDR(Back-up Designated Router):备份指定路由器,同样是由OSPF启动后选举而来 
    DRothers:其他路由器,非DR非BDR的路由器都是DRothers。

    ABR(Area Border Routers):区域边界路由器,连接不同OSPF区域。 
    ASBR(Autonomous System Boundary Router):自治系统边界路由器,位于OSPF和非OSPF网络之间。 
    骨干路由器:至少有一个借口连接到骨干区域(区域0)。

    OSPF邻居建立

    邻居的两个状态 
    Neighbors:邻居 
    Adjacency:邻接

    1. 邻居不一定是邻接,邻接一定是邻居,只有交互了LSA的OSPF邻居才成为OSPF的邻接,之交互Hello包的支撑位邻居,
    2. 在点对点网络中,所有邻居都能成为邻接。
    3. MA(广播多路访问网络,比如以太网)网络类型中,DR,BDR,DRothers三者关系为: 
      DR、BDR与所有的邻居形成邻接,DRothers之间只是邻居而不交换LSA

    影响OSPF邻居建立的原因:

    1. Hello与Dead Time时间不一致(改Hello的话Dead自动*4,单改Dead的话Hello不变)
    2. 区域ID必须一致
    3. 认证(password一致)
    4. Stub标识一致(与特殊区域有关,之后介绍)
    5. MTU-携带在DBD报文中,两端口必须一致
    6. 掩码,如12.1.1.1/30——12.1.1.2/24 这种情况是可以ping通的,但邻居关系起不来 
      (OSPF对环回口,无论掩码多少位,都按32位处理,所以建议环回口直接/32,或者在环回口下还原真实掩码)
    7. ACL(是否放行OSPF)

    OSPF更新

    1. OSPF是一种触发更新的机制。一旦拓扑发生变化便会更新。
    2. OSPF也有周期性更新(30分钟一次)
    3. 当收到一条LSA之后: 
      首先查看是否在LSDB中,若没有则假如LSDB,回复LSACK。继续泛洪出去,并且通过SPF算法计算最佳路径并加入路由表。若存在,则比较谁的更“新”(看序号),序号大者新,若本地不如收到的信更新本地LSDB并泛洪,且通过SPF算法计算最佳路径并加入路由表,若比收到的新,则将本地的泛洪出去。

    注:LSA序列号,4字节,16进制 
    0x80000001-0x7FFFFFFF

    OSPF数据包类型

    1. Hello:10秒发送一次,死亡时间40s,4倍关系,可以修改。
    2. DBD:Database Description 仅仅是一个对本地数据库的概念性叙述,供路由器核对数据库是否同步
    3. LSR:Link-State Request 请求链路状态,在数据库同步过程中使用,请求其他角色发送自己失去的LSA最新版本。
    4. LSU:Link-State Update 链路状态更新,LSU包括几种类型的LSA,LSU负责泛洪LSA,和相应LSR。LSA只会发送给之前以LSR请求的LSA的直连邻居,进行泛洪的时候,邻居路由负责把收到的LSA信息重新封装在新的LSU中。
    5. LSACK:链路状态确认,路由器必须对每个收到的LSA进行LSACK确认,但可以用一个LSACK确认多个LSA。

    DR、BDR的选举

    DR、BDR的选举规则:比较router-id,router-id有以下获得方式:

    1. 由工程师指定
    2. 这台设备最大的环回口ip
    3. 没有环回口的话,物理接口ip地址最大的。

    选举规则:

    1. 最高优先级值的路由器被选为DR(默认优先级相同:1),次高优先级的为BDR
    2. 若优先级相同,则比较router-id,拥有最高router-id的成为DR,次高的成为BDR
    3. 优先级被设置为0的不参与选举
    4. OSPF系统启动后,若40s内没有新设备接入就会开始选举,所以为保证DR与BDR的选举不发生意外,建议优先配置想成为DR与BDR的设备。
    5. DR与BDR不可以抢占
    6. 当DR小时之后,BDR直升DR,重新选BDR
    7. 所有DR,BDR,DRothers说的都是接口,而不是设备
    8. 不同网段间选DR,BDR,而不是以OSPF区域为单位

    OSPF状态

    1. Down State
    2. Init State:发送了Hello包(还没收到)
    3. Two-way State:收到了一个Hello包且Hello包中包括自己的router-id(对方回复的)
    4. Exstart State:First DBD确认主从关系,router-id大的为主,先发包
    5. Exchange State:交互DBD 相互学习
    6. Loading State:LSR与LSU的交互过程
    7. Full State:所有交互已经完成

    注:DBD只是一个目录的性质,并且第一个DBD只是用来协商之后的DBD由谁先发送。

    基本配置演示

    我们用下面的拓扑进行配置演示: 
    这里写图片描述
    对R1进行配置:

    R1>en
    R1#conf t
    R1(config)#int lo 0
    R1(config-if)#ip add 1.1.1.1 255.255.255.255
    R1(config-if)#no sh
    R1(config-if)#exi
    R1(config)#int f0/0
    R1(config-if)#ip add 100.1.1.1 255.255.255.0
    R1(config-if)#no sh
    R1(config-if)#exi
    
    R1(config)#router os 100
    R1(config-router)#router-id 1.1.1.1
    R1(config-router)#net 1.1.1.1 0.0.0.0 a 0
    R1(config-router)#net 100.1.1.0 0.0.0.255 a 0
    R1(config-router)#exi

    对R2进行配置:

    R2>en
    R2#conf t
    R2(config)#int lo 0
    R2(config-if)#ip add 2.2.2.2 255.255.255.255
    R2(config-if)#no sh
    R2(config-if)#exi
    R2(config)#int f0/0
    R2(config-if)#ip add 100.1.1.2 255.255.255.0
    R2(config-if)#no sh
    R2(config-if)#exi
    
    R2(config)#router os 100
    R2(config-router)#route
    R2(config-router)#router-id 2.2.2.2
    R2(config-router)#net 2.2.2.2 0.0.0.0 a 0
    R2(config-router)#net 100.1.1.0 0.0.0.255 a 0
    R2(config-router)#ex

    R3进行配置:

    R3>en
    R3#conf t
    R3(config)#int lo 0
    R3(config-if)#ip add 3.3.3.3 255.255.255.255
    R3(config-if)#no sh
    R3(config-if)#exi
    R3(config)#int f0/0
    R3(config-if)#ip add 100.1.1.3 255.255.255.0
    R3(config-if)#no sh
    R3(config-if)#exi
    
    R3(config)#router os 100
    R3(config-router)#router-id 3.3.3.3 
    R3(config-router)#net 3.3.3.3 0.0.0.0 a 0
    R3(config-router)#net 100.1.1.0 0.0.0.255 a 0
    R3(config-router)#exi

    对R4进行配置:

    R4>en
    R4#conf t
    R4(config)#int lo 0
    R4(config-if)#ip add 4.4.4.4 255.255.255.255
    R4(config-if)#no sh
    R4(config-if)#exi
    R4(config)#int f0/0
    R4(config-if)#ip add 100.1.1.4 255.255.255.0
    R4(config-if)#no sh
    R4(config-if)#exi
    R4(config)#int f0/1
    R4(config-if)#ip add 45.1.1.4 255.255.255.0
    R4(config-if)#no sh
    R4(config-if)#exi
    
    R4(config)#router os 100
    R4(config-router)#router-id 4.4.4.4
    R4(config-router)#net 4.4.4.4 0.0.0.0 a 0
    R4(config-router)#net 100.1.1.0 0.0.0.255 a 0
    R4(config-router)#net 45.1.1.0 0.0.0.255 a 1
    R4(config-router)#exi

    R5进行配置:

    R5>en
    R5#conf t
    R5(config)#int lo 0
    R5(config-if)#ip add 5.5.5.5 255.255.255.255
    R5(config-if)#no sh
    R5(config-if)#exi
    R5(config)#int f0/1
    R5(config-if)#ip add 45.1.1.5 255.255.255.0
    R5(config-if)#no sh
    R5(config-if)#exi
    
    R5(config)#router os 100
    R5(config-router)#router-id 5.5.5.5
    R5(config-router)#net 5.5.5.5 0.0.0.0 a 1
    R5(config-router)#net 45.1.1.0 0.0.0.255 a 1
    R5(config-router)#exi

    以上就是全部基本配置,我们下面来查看一下基本信息 
    查看邻居信息:

    R4#show ip ospf neighbor 
    
    Neighbor ID     Pri   State           Dead Time   Address         Interface
    1.1.1.1           1   FULL/DR         00:00:38    100.1.1.1       FastEthernet0/0
    2.2.2.2           1   FULL/BDR        00:00:34    100.1.1.2       FastEthernet0/0
    3.3.3.3           1   2WAY/DROTHER    00:00:33    100.1.1.3       FastEthernet0/0
    5.5.5.5           1   FULL/DR         00:00:33    45.1.1.5        FastEthernet0/1

    以看见R4这台路由器一共有四个邻居,这里临界状态,full就是代表邻接,我们可以看见区域0中R1是DR,R2是BDR,R3和R4都是DRothers,而区域1中R5是DR。那么我们可以推测,R4是区域1的BDR,我们在R5上查看:

    R5#show ip ospf neighbor 
    
    Neighbor ID     Pri   State           Dead Time   Address         Interface
    4.4.4.4           1   FULL/BDR        00:00:36    45.1.1.4        FastEthernet0/1

    推测不假,下面查看一下开启OSPF的接口信息:

    R1#show ip ospf interface 
    FastEthernet0/0 is up, line protocol is up 
      Internet Address 100.1.1.1/24, Area 0 
      Process ID 100, Router ID 1.1.1.1, Network Type BROADCAST, Cost: 10
      Transmit Delay is 1 sec, State DR, Priority 1
      Designated Router (ID) 1.1.1.1, Interface address 100.1.1.1
      Backup Designated router (ID) 2.2.2.2, Interface address 100.1.1.2
      Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
        oob-resync timeout 40
        Hello due in 00:00:00
      Supports Link-local Signaling (LLS)
      Cisco NSF helper support enabled
      IETF NSF helper support enabled
      Index 2/2, flood queue length 0
      Next 0x0(0)/0x0(0)
      Last flood scan length is 1, maximum is 1
      Last flood scan time is 4 msec, maximum is 4 msec
      Neighbor Count is 3, Adjacent neighbor count is 3 
        Adjacent with neighbor 2.2.2.2  (Backup Designated Router)
        Adjacent with neighbor 3.3.3.3
        Adjacent with neighbor 4.4.4.4
      Suppress hello for 0 neighbor(s)
    Loopback0 is up, line protocol is up 
      Internet Address 1.1.1.1/32, Area 0 
      Process ID 100, Router ID 1.1.1.1, Network Type LOOPBACK, Cost: 1
      Loopback interface is treated as a stub Host

    可以看见,开启了OSPF的接口的详细信息,比如Router-id,区域id,进程id,以及接口是如何加入进入OSPF的(network) 
    查看OSPF的路由:

    R5#show ip route ospf 
         1.0.0.0/32 is subnetted, 1 subnets
    O IA    1.1.1.1 [110/21] via 45.1.1.4, 00:26:31, FastEthernet0/1
         2.0.0.0/32 is subnetted, 1 subnets
    O IA    2.2.2.2 [110/21] via 45.1.1.4, 00:26:31, FastEthernet0/1
         100.0.0.0/24 is subnetted, 1 subnets
    O IA    100.1.1.0 [110/20] via 45.1.1.4, 00:26:31, FastEthernet0/1
         3.0.0.0/32 is subnetted, 1 subnets
    O IA    3.3.3.3 [110/21] via 45.1.1.4, 00:26:31, FastEthernet0/1
         4.0.0.0/32 is subnetted, 1 subnets
    O IA    4.4.4.4 [110/11] via 45.1.1.4, 00:26:31, FastEthernet0/1

    在R5中查看OSPF的路由,发现全部都是O IA标记,这里O 标识来自OSPF,而IA代表是OSPF其他区域传来的路由(关于标记在后面讲解LSA中还会提到),我们再在R1上查看一下OSPF的路由:

    R1#show ip route os
         2.0.0.0/32 is subnetted, 1 subnets
    O       2.2.2.2 [110/11] via 100.1.1.2, 00:29:28, FastEthernet0/0
         3.0.0.0/32 is subnetted, 1 subnets
    O       3.3.3.3 [110/11] via 100.1.1.3, 00:29:28, FastEthernet0/0
         4.0.0.0/32 is subnetted, 1 subnets
    O       4.4.4.4 [110/11] via 100.1.1.4, 00:29:28, FastEthernet0/0
         5.0.0.0/32 is subnetted, 1 subnets
    O IA    5.5.5.5 [110/21] via 100.1.1.4, 00:28:17, FastEthernet0/0
         45.0.0.0/24 is subnetted, 1 subnets
    O IA    45.1.1.0 [110/20] via 100.1.1.4, 00:29:28, FastEthernet0/0

    可见,区域1的被标识为O IA,而区域0的则只是O。 
    以上就是基本的OSPF系统的配置。

    一入运维深似海,从此不见彼岸花
  • 相关阅读:
    链表操作
    建立简单的链表
    scanf()函数用法小结
    快速求某年某月是第几天(未整理)
    合并两个有序数组(未整理)
    如何配置JAVA的环境变量、Tomcat环境变量
    【动态规划】流水作业调度问题与Johnson法则
    分治法(二)
    分治法(一)
    HTML5入门十一---Canvas画布实现画图(二)
  • 原文地址:https://www.cnblogs.com/cn-jasonho/p/13285591.html
Copyright © 2011-2022 走看看