ospf协议(开放式最短路径优先协议)

  • OSPF 协议概述

    随着企业内部网络规模的扩大,网段的数量越来越多,所以想要实现不同网段之间互通,

    就必须得依靠大量的路由设备以及路由条目。

    想让路由设备获得路由条目的方法,有很多,对应着不同类型的路由条目:

    直连路由

    非直连路由

    -静态

    -动态

     -IGP(internal gateway protocol),内部网关路由协议:同一个公司内使用的路由协议
    
        *RIP-只能适用于小型规模的网络(网络直径不能超过16个路由器)
    
        *EIGRP-增强型的IGRP 协议,可以支持更大的网络规模(网络直径最大可以做到255个,私有)
    
        *ISIS-公有标准,免费的。理论上支持无限规模的网络,但是支持的 CLNP 路由
    
        ***OSPF-公有标准,免费的。理论上支持无限规模的网络。但是支持的是 IP 路由**
    
    -EGP(external gateway protocol),外部网关路由协议:不同公司之间使用的路由协议
    
        *BGP(border gateway protocol),边界网关协议
    

    OSPF,称之为 open shortest path first ,开放式 最短 路径 优先 协议;

    该协议的主要作用是:在公司内部的多个路由设备之间运行 OSPF 协议,动态的传递彼此的路由条目,目的就是为了让网络中的每个路由设备,都拥有整个网络中的所有的网段信息。

    该协议在转发数据包的时候,都是包含在IP头部后面的,协议号是 89,目标地址是 224.0.0.5 /224.0.0.6

    OSPF的工作过程,仅仅分为3步:

    1. 建立邻居表
    2. 同步数据库
    3. 计算路由表

    OSPF的报文类型:

    1. Hello,用于邻居表的建立、维护、拆除
    2. DD(dbd),database description ,数据库描述报文
    3. LSR(link state request) ,链路状态请求报文
    4. LSU(link state update ),链路状态更新报文
    5. LSAck(Link state acknowledgement),链路状态确认报文

    OSPF基本配置命令:

ospf {进程号} -> 启用 OSPF 协议,进程号如果不指定,默认是1 ;(1-65535)
area {区域号} -> 对于 OSPF 协议,区域必须有;如果仅仅需要1个区域,这个区域就得是区域 0
network {网段} {反掩码} -> 指的是将后面这个网段,宣告进入到OSPF协议,然后传递给邻居路由器
  但是,network 命令有很大的局限性,该命令后面跟的网段,只能是“直连网段”。
  如果想要将本地路由表中的哪些非直连的网段(静态路由),通过 OSPF 协议宣告出去的,
  那就得使用另外一个宣告方式:import-route {路由类型}
  注意:我们使用 import-route 命令的时候,是不需要进入到某个区域中的。

route {路由类型}

ospf 进程号的作用:在同一个路由器上,区分不同的 OSFP 协议;不同的路由器,进程号可以不同,也可以相同

区域号:用于在 OSPF 网络中,将网络划分成2个层次:骨干区域和非骨干区域

所谓的骨干区域,就是 0 区域 ;

所谓的非骨干区域,就是 非0 区域 ;

   -普通区域,要外部路由;

   -特殊区域,不要外部路由;[**stub / totally stub** / nssa / totally nssa]

当网络中存在多个区域的时候,区域之间的互联原则是:所有的非骨干区域必须和骨干区域,直接相连

  • 案例:OSPF 单区域配置

    • 拓扑      watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARy1EcmFnb24xNDI=,size_20,color_FFFFFF,t_70,g_se,x_16

       

       

    • 需求

      1. 如图配置每个设备的IP地址
      2. 网络部署 OSPF 单区域,实现不通网段之间的互通
      3. 修改每个设备的名字为 x.x.x.x (X为每个设备的编号)
    • 配置

PC1:
192.168.1.1
255.255.255.0
192.168.1.254

PC2:
192.168.2.1
255.255.255.0
192.168.2.254

R1:
undo terminal monitor
system-view
sysname R1
interface gi0/0/2
ip address 192.168.1.254 24
quit 
interface gi0/0/0
ip address 192.168.12.1 24
quit 

ospf 1 router-id 1.1.1.1 -> 启用 OSPF 进程1,设置名字为 1.1.1.1
area 0  -> 进入到 OSPF 区域 0 
network 192.168.1.0 0.0.0.255
network 192.168.12.0 0.0.0.255
quit 
quit
-----------------------------------------------------

R2:
undo terminal monitor
system-view
sysname R2
interface gi0/0/0
ip address 192.168.23.2 24
quit 
interface gi0/0/1
ip address 192.168.12.2 24
quit 

ospf 1 router-id 2.2.2.2 -> 启用 OSPF 进程1,设置名字为 2.2.2.2
area 0  -> 进入到 OSPF 区域 0 
network 192.168.23.0 0.0.0.255
network 192.168.12.0 0.0.0.255
quit 
quit
-----------------------------------------------------
R3:
undo terminal monitor
system-view
sysname R3
interface gi0/0/2
ip address 192.168.2.254 24
quit 
interface gi0/0/1
ip address 192.168.23.3 24
quit 

ospf 3 router-id 3.3.3.3 -> 启用 OSPF 进程3,设置名字为 3.3.3.3
area 0  -> 进入到 OSPF 区域 0 
network 192.168.2.0 0.0.0.255
network 192.168.23.0 0.0.0.255
quit 
quit
-------------------------------------------------------------
查看 OSPF 邻居表:
<R2>display  ospf peer  brief  
   OSPF Process 1 with Router ID 2.2.2.2
      Peer Statistic Information
----------------------------------------------------------------------------
 Area Id          Interface                        Neighbor id      State    
 0.0.0.0          GigabitEthernet0/0/1             1.1.1.1          Full        
 0.0.0.0          GigabitEthernet0/0/0             3.3.3.3          Full        
 ----------------------------------------------------------------------------

  • 案例:OSPF多区域配置

    • 拓扑    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARy1EcmFnb24xNDI=,size_20,color_FFFFFF,t_70,g_se,x_16

       

       

    • 需求

      1. 如图配置每个设备的IP地址
      2. 将R1和R2设置为区域12
      3. 将R5和R6设置为区域56
      4. 将R2\R3\R4\R5设置为区域0
      5. 实现不同区域之间的PC互通
    • 配置

PC1:
192.168.1.1
255.255.255.0
192.168.1.254

PC2:
192.168.2.1
255.255.255.0
192.168.2.254
-------------------------------
R1:
undo terminal monitor
system-view
sysname R1
interface gi0/0/2
ip address 192.168.1.254 24
quit 
interface gi0/0/0
ip address 192.168.12.1 24
quit

ospf 1 router-id 1.1.1.1
area 12
network 192.168.1.0 0.0.0.255
network 192.168.12.0 0.0.0.255
quit 
quit 

---------------------------------
R2:
undo terminal monitor
system-view
sysname R2
interface gi0/0/1
ip address 192.168.12.2 24
quit 
interface gi0/0/0
ip address 192.168.23.2 24
quit 
ospf 1 router-id 2.2.2.2
area 12
network  192.168.12.0 0.0.0.255
quit 
area 0 
network 192.168.23.0 0.0.0.255
quit 
quit 
----------------------------
R3:
undo terminal monitor
system-view
sysname R3
interface gi0/0/1
ip address 192.168.23.3 24
quit 
interface gi0/0/0
ip add 192.168.34.3 24
quit 
ospf 1 router-id 3.3.3.3
area 0 
network 192.168.23.0 0.0.0.255
network 192.168.34.0 0.0.0.255
quit 
quit 
---------------------------------
R4:
undo terminal monitor
system-view
sysname R4
interface gi0/0/0
ip address 192.168.45.4 24
quit 
interface gi0/0/1
ip add 192.168.34.4 24
quit 
ospf 1 router-id 4.4.4.4
area 0 
network 192.168.45.0 0.0.0.255
network 192.168.34.0 0.0.0.255
quit 
quit
-------------------------------
R5:
undo terminal monitor
system-view
sysname R5
interface gi0/0/1
ip address 192.168.45.5 24
quit 
interface gi0/0/0
ip add 192.168.56.5 24
quit 
ospf 1 router-id 5.5.5.5
area 0 
network 192.168.45.0 0.0.0.255
quit 
area 56
network 192.168.56.0 0.0.0.255
quit 
quit
---------------------------
R6:
undo terminal monitor
system-view
sysname R6
interface gi0/0/1
ip address 192.168.56.6 24
quit 
interface gi0/0/2
ip add 192.168.2.254 24
quit 
ospf 1 router-id 6.6.6.6
area 56 
network 192.168.2.0 0.0.0.255
network 192.168.56.0 0.0.0.255
quit 
quit   

  • 总结
    1. 当网络中存在多个区域的时候,路由器的角色也就不同了:
    2. 骨干路由:一个路由器的所有接口都属于骨干区域;
    3. 非骨干路由器:一个路由器的所有接口都属于非骨干区域;
    4. 区域边界路由(ABR):一个路由同时连接着骨干区域和非骨干区域;为的是:实现不同区域之间的互通
    5. 自治系统边界路由器:拥有产生外部路由能力的 OSPF 路由器。人话:凡是输入了命令 imnport-route {类型} 的路由器,都叫做 OSPF 的 自制系统边界路由器(ASBR)

在上述的案例中,我们想让公司之间的 PC1/2/3 互通,但是公司之间不允许运营 OSPF 协议;

所以我们在 R6 上配置了一个去往 PC3的静态路由,下一跳IP地址是 R6-R7之间的链路接口。

同时,我们在 R6 上将该静态路由“导入”进 OSPF 协议,传遍了整个企业内网的所有路由器。

此时,PC1/2/3 能够互通了。

但是,R6-R7之间的链路,是不稳定的。

因为,R6-R7之间的链路的稳定性,不是由同一个公司来控制的。

所以,我们认定这种“不是由一个公司管理的线路”是不稳定的线路。

那么,使用这个线路的路由,也是属于不稳定的路由。

同时,这个路由还偏偏使用了import-route 的方式,引入到了企业内网所有的设备上,

所以,如果这个路由不稳定了,就会导致企业内网的所有路由器的路由表都不稳定,

总是频繁的计算路由条目,浪费设备的系统资源。

所以,我们为了保护企业内网某些重要的区域,

希望这些区域,不要受到这些不稳定的外部路由的影响,

我们就可以将这些区域配置为 特殊区域

  • [ ] 所谓的特殊区域,指的是:不要外部路由的区域
  • [ ] 具体类型分为:stub 区域 、totally stub 区域 、 nssa 区域 、totally nssa区域

特殊区域之stub区域

stub的特点是:不要外部路由。

但是,如果该区域的路由器上了外部路由,那当外部路由正常的时候,

该区域的设备如何与外部路由互通

此时,该 stub 区域的 ABR 会自动的产生1个默认路由,发送到该区域的所有路由器。

配置方法:在该区域的所有路由器上,都使用下面特定的命令:

ospf 1

area (区域号)

stub → 将上面指定的区域,配置为特殊区域;

  • 案例:OSPF特殊区域之Stub区域

    • 拓扑      watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARy1EcmFnb24xNDI=,size_20,color_FFFFFF,t_70,g_se,x_16

       

       

    • 需求

      1. 如图配置每个设备的IP地址
      2. 将R1和R2设置为区域12
      3. 将R5和R6设置为区域56
      4. 将R2\R3\R4\R5设置为区域0
      5. R6和R7之间通过静态路由的方式互通
      6. R6-R7之间的链路不稳定,尽量减少对区域12的影响
    • 配置

PC1:
192.168.1.1
255.255.255.0
192.168.1.254

PC2:
192.168.2.1
255.255.255.0
192.168.2.254
-------------------------------
R1:
undo terminal monitor
system-view
sysname R1
interface gi0/0/2
ip address 192.168.1.254 24
quit 
interface gi0/0/0
ip address 192.168.12.1 24
quit

ospf 1 router-id 1.1.1.1
area 12
network 192.168.1.0 0.0.0.255
network 192.168.12.0 0.0.0.255
quit 
quit 

---------------------------------
R2:
undo terminal monitor
system-view
sysname R2
interface gi0/0/1
ip address 192.168.12.2 24
quit 
interface gi0/0/0
ip address 192.168.23.2 24
quit 
ospf 1 router-id 2.2.2.2
area 12
network  192.168.12.0 0.0.0.255
quit 
area 0 
network 192.168.23.0 0.0.0.255
quit 
quit 
----------------------------
R3:
undo terminal monitor
system-view
sysname R3
interface gi0/0/1
ip address 192.168.23.3 24
quit 
interface gi0/0/0
ip add 192.168.34.3 24
quit 
ospf 1 router-id 3.3.3.3
area 0 
network 192.168.23.0 0.0.0.255
network 192.168.34.0 0.0.0.255
quit 
quit 
---------------------------------
R4:
undo terminal monitor
system-view
sysname R4
interface gi0/0/0
ip address 192.168.45.4 24
quit 
interface gi0/0/1
ip add 192.168.34.4 24
quit 
ospf 1 router-id 4.4.4.4
area 0 
network 192.168.45.0 0.0.0.255
network 192.168.34.0 0.0.0.255
quit 
quit
-------------------------------
R5:
undo terminal monitor
system-view
sysname R5
interface gi0/0/1
ip address 192.168.45.5 24
quit 
interface gi0/0/0
ip add 192.168.56.5 24
quit 
ospf 1 router-id 5.5.5.5
area 0 
network 192.168.45.0 0.0.0.255
quit 
area 56
network 192.168.56.0 0.0.0.255
quit 
quit
---------------------------
R6:
undo terminal monitor
system-view
sysname R6
interface gi0/0/1
ip address 192.168.56.6 24
quit 
interface gi0/0/2
ip add 192.168.2.254 24
quit 
ospf 1 router-id 6.6.6.6
area 56 
network 192.168.2.0 0.0.0.255
network 192.168.56.0 0.0.0.255
quit 
quit   
------------------------------------------------------------------
@为了实现 R6 和 PC3 之间的互通
R6:
interface gi0/0/0
ip address 192.168.67.6 24
quit 

ip route-static 1921.68.3.0 24 192.168.67.7

R7:
undo terminal monitor
system-view
sysname R7
interface gi0/0/1
ip address 192.168.67.7 24
quit
interface gi0/0/0
ip address 192.168.3.254 24
quit

ip route-static  192.168.2.0  24  192.168.67.6

此时,PC2和PC3就互通了。

但是,PC1 和 PC3 无法互通。
因为,PC1的网关设备 R1 上没有去往PC3的路由。
因为,R6没有将去往PC3的路由进行宣告
同时,在 OSPF 协议中,想要宣告静态路由的话,只能使用 import-route 命令,
因为,network 命令无法宣告非直连的网段路由,非常有局限性。
命令如下:
    R6:
       ospf  1
        import-route static 
此时,我们在 R1 上就可以看到 PC3的路由了,并且类型是 O_ASE ,即 OSPF 的外部路由。
但是,PC1依然无法与PC3互通,因为:PC3的网关设备 R7 上没有返回到 PC1 的路由,
所以,在R7上添加一个去往PC1的路由:

ip route-static  192.168.1.0  24  192.168.67.6

此时,PC1和PC3也可以互通了。

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

但是,如果R6-R7之间的链路非常不稳定的话,就会导致 R6 产生的 OSPF 外部路由在整个
OSPF网络的各个路由器上,不断的添加和删除,影响每个路由器的系统资源的使用。
所以,我们为了保护区域 12,我们可以:确保区域12的路由器无法接收到这些不稳定的OSPF外部路由
就可以了。

所以,我们需要将区域 12 配置为特殊区域。
配置原则是:在该区域的所有路由器上都配置下面的命令:
R1/R2:
  ospf 1
    area  12
      stub 

此时,在 R1 上查看 OSPF 路由表,就不会存在任何的 OSPF 外部路由条目了:

display ip routing-table protocol ospf -> 看不到 O_ASE 的路由了。

  • 总结
    1. 虽然 stub 区域不受到外部链路/路由的影响,但是会受到其他的区域的不稳定的链路的影响
    2. 为了解决这个问题,我们可以继续让该stub 区域,不收到其他区域的链路。想要实现这个目的,我们要首先的是:该 stub 区域当年的那些区域之间的路由,是谁发给这个区域的。
    3. 是 stub 区域的 ABR ,为该 stub 转发了其他区域的路由。
    4. 如果不想让 stub 区域接收其他区域的路由条目,就可以直接在 stub 区域的 ABR 上配置:
    5. 命令如下:(案例中的 R2)→这种 stub 区域,叫做 totally stub 区域
R2:
ospf 1 
  area  12
     stub  no-summary -> 即 R2不向区域 12 下发外部路由,也不下发区域之间的路由;
  • 案例:OSPF特殊区域之 NSSA 区域

    • 拓扑    watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARy1EcmFnb24xNDI=,size_20,color_FFFFFF,t_70,g_se,x_16

       

       

    • 需求

      1. 如图配置设备的接口IP地址
      2. 如图配置OSPF的区域,每个设备的router-id 是 x.x.x.x (X 是路由器的编号)
      3. 实现企业内网的所有设备,都可以访问Server1
    • 配置

R1:
undo terminal monitor
system-view
sysname R1
interface gi0/0/0
ip address 192.168.12.1 24
quit 
ospf 1 router-id 1.1.1.1
area 123
network 192.168.12.0 0.0.0.255
quit 
quit


R2:
undo terminal monitor
system-view
sysname R2
interface gi0/0/1
ip address 192.168.12.2 24
quit 
interface gi0/0/0
ip address 192.168.23.2 24
quit 
ospf 1 router-id 2.2.2.2
area 123
network 192.168.12.0 0.0.0.255
network 192.168.23.0 0.0.0.255
quit 
quit

R3:
undo terminal monitor
system-view
sysname R3
interface gi0/0/0
ip address 192.168.34.3 24
quit 
interface gi0/0/1
ip address 192.168.23.3 24
quit 
ospf 1 router-id 3.3.3.3
area 123
network 192.168.23.0 0.0.0.255
quit 
area 0 
network 192.168.34.0 0.0.0.255
quit 
quit

R4:
undo terminal monitor
system-view
sysname R4
interface gi0/0/1
ip address 192.168.34.4 24
quit 
interface gi0/0/0      // 连接外网的接口,使用的是公网IP地址
ip address 100.1.1.4 24
quit 
ospf 1 router-id 4.4.4.4
area 0
network 192.168.34.0 0.0.0.255
quit 
quit 

R5:
undo terminal monitor
system-view
sysname R5
interface gi0/0/1
ip address 100.1.1.5 24
quit 
interface gi0/0/2
ip address 200.1.1.254 24
quit 

Server1:
200.1.1.1
255.255.255.0
200.1.1.254
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
为了能够实现访问外网,所以在 R4 上配置默认路由:
ip route-static 0.0.0.0  0 100.1.1.5

为了能够让出去的数据包,顺利的返回到企业内网,
所以我们需要在 R4 连接外网的接口上配置 nat(EasyIP):
acl 2000
rule 10 permit source any 
quit 

interface gi0/0/0
nat outbound 2000
quit 

但是,此时企业内网的其他路由器是没办法访问内网的,
因为,其他路由器上没有访问外网的路由条目,
所以,我们需要在 R4上通过OSPF协议传输默认路由,
在 OSPF 协议中,产生默认路由的方法是:
R4:
ospf 1 
default-route-advertise 
quit

此时,R1/R2/R3上,就可以看到一个 OSPF 的默认路由。

---------------------------------------------------------------------
**现在的企业,要求 区域 123 ,不要受到外部链路的影响。
所以,我们可以将区域 123 设置为 stub 区域,防止外部链路对区域123的影响。
命令:
R1/R2/R3:
ospf 1 
  area 123
    stub 

此时,区域123的R1和R2的路由表中,就没有 O_ASE 的 OSPF 默认路由;
变成了 OSPF 类型的默认路由,该默认路由,是通过 Stub 区域的 ABR 自动产生的!**

-------------------------------------------------------------------------
突然,现在因为业务扩展,我们的公司,需要和其他公司进行合作,实现某些业务之间的互通。
但是,因为网络结构的原因,此时的外联公司,只能连接到目前的区域 123 的设备 R1 上。

此时,为了实现外联公司与本公司的业务服务器(200.1.1.1)的互通,
需要:在外联公司的设备上,添加去往服务器的路由条目,;
     在R1上添加返回到外联公司的路由(去往 PC1)
但是:即使数据包从PC1经过企业内网转发到了外网的 Server1
     可是数据包返回的时候,到了R4上,就没有去往PC1的路由。
     所以,数据包是无法返回到PC1的。
因为,R1虽然有去往PC1的路由,但是没有办法将PC1的路由导入进入到OSPF,传递给R4
因为,R1所在的区域123,是 stub 区域,不允许该区域中的路由器,引入外部路由。
所以,我们可以将区域 123 配置为 nssa 区域,即not so stub area ,不那么stub的区域
人话:其他区域发送过来的外部路由,该区域不要;但是自己本区域的设备引入的外部路由,要的。
配置方法,极为简单:在该区域的所有路由器上,配置相同的命令:

R1/R2/R3:
 ospf 1 
   area 123
     undo stub -> 删除之前的 stub 区域配置
     nssa -> 将目前的区域配置为 nssa 
     
然后,我们在R1,导入去往PC1的静态路由:

R1:
  ospf 1 
    import-route static 
然后,
PC1就可以和Server1互通了。


  • 总结
    1. NSSA区域,不接收其他区域发送过来的外部路由;但是自己本区域的设备,可以产生外部路由
    2. 普通区域的外部路由,类型是:O_ASE;NSSA 区域的默认路由,类型是:O_NSSA
    3. NSSA区域的ABR,和 Stub 区域的 ABR 的类似的,都会自动的产生1个默认路由- O_NSSA
    4. 虽然,NSSA 区域不接收其他区域传递过来的外部路由,不受到外部链路的影响。但是依然会受到其他区域内的链路影响。
    5. 为了让 NSSA 区域,不受到其他区域的链路的影响,我们需要在 NSSA 区域的 ABR 上,禁止向 NSSA 区域发送其他区域的路由,即 NSSA 区域内不但没有了外部路由,也没有了其他区域之间的路由,所以,这种 NSSA 区域,称之为 totally NSSA 。
    6. 配置命令:仅仅需要在NSSA 区域的 ABR 上配置: area 123 → nssa no-summary
    7. 在 totally nssa 中,ABR 依然会自动产生默认路由,但是此时的路由类型,是 OSPF/O_NSSA 。但是最终能够进入到 OSPF 路由表的默认路由是:OSPF 类型的,即 OSPF 的内部路由
    8. 因为 OSPF 类型属于 OSPF的内部路由,优先级是10;O_NSSA 属于 OSPF 的外部路由,优先级是150。所以,优先级数值小的,优先进入到 OSPF 路由表。

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值