OSPF (SPF)

   属于链路状态路由选择协议,并且是公有标准,

   理论上是没有网络规模限制的;

   支持网络的层次化设计,可以将网络分为2层。

   

   层,是通过“区域”的概念来进行区分的。

        -骨干区域

-非骨干区域

  所有的非骨干必须与骨干区域直接相连,才能正常通讯。

  

    路由器因为区域的存在,也分为不同的类型: 

   -骨干路由器

       所有链路都属于骨干区域的路由器;

-非骨干路由器

       所有链路都属于非骨干区域的路由器;

-区域边界路由器(*) 【ABR:area border router 】

      必须同时连接着骨干区域和非骨干区域;

   -自治系统边界路由器【ASBR:】

       具有引入外部路由能力的路由器,叫做OSPF的 ASBR。


  -工作原理

      1、建立邻居表

            仅仅使用 hello 报文。

            OSPF路由,仅仅在 OSPF 邻居路由器之间进行交换;

           


         

            邻居状态:

                 down

init

2way

Exstart(exchange start)

exchange

loading

full

       

 

 

      2、同步数据库 

         LSA-link state advertisement , 链路状态通告;

 

 

      3、计算路由表(通过SPF算法,对LSA进行计算,从而获得最终的路由条目)  


  -OSPF报文:

        hello:

dbd:database description ,数据库描述报文;

lsu:link state update ,链路状态更新报文;

lsr:link state request ,链路状态请求报文;

lsack:link state ack ,链路状态确认报文;


  -OSPF相关命令:

  

      0、建立测试端口:

            [R1]interface loopback 0 

            [R1-loopback0]ip address 10.10.1.1 255.255.255.0

  

            [R2]interface loopback 0 

            [R2-loopback0]ip address 10.10.2.2 255.255.255.0  

      

 1、配置OSPF

       [R1]ospf [process-id]   // 不写的话,默认是1;

[R1-ospf-1] area 0  // 进入区域0;

[R1-ospf-1-area-0.0.0.0] network 192.168.12.1 0.0.0.0 

                          //精确宣告 192.168.12.1所在的链路

     进入 OSPF 区域0;

 那么 gi0/0/0,则启用 OSPF 1 :

     #可以发送 ospf 1 的包;

 #可以接收 ospf 1 的包;

 #可以将该端口的IP地址中的

   网络部分,放入 OSPF 1 的包;

中,传输出去,给邻接路由器。

 2、验证

      display ospf [1] peer brief //查看OSPF邻居表的简要信息;

  display ospf [1] peer   //查看OSPF邻居表的详细信息;

  display ospf [1] brief //查看本地设备上的 OSPF 1 的相关信息;

  display ip routing-table //查看路由表中的OSPF路由 

                                (确定路由的类型和属性)

 

=================================================================


OSPF邻居建立影响因素:



1、确保最小范围内链路是互相 Ping通 的;(交换)


       R1:Ping R2 ; 

  R2:Ping R1 ;


2、确保设备端口可以发送报文;

       #network要宣告正确的网络范围;   

       #确保接收OSPF报文的端口不能是“被动端口- silent-interface”

         (华为设备上的 OSPF 的 silent-interface , 既不能发,也不能收包)

ospf 1  

  silent-interface gi0/0/0  


3、确保设备端口可以接收报文;

       #network要宣告正确的网络范围;

  #确保 ACL 是允许 OSPF 流量的;

  #确保接收OSPF报文的端口不能是“被动端口- silent-interface”

         (华为设备上的 OSPF 的 silent-interface , 既不能发,也不能收包)

        R1:

          acl name Deny-OSPF advance

    rule 5 deny ospf   source      192.168.12.2 0.0.0.0 

                   destination 224.0.0.5    0.0.0.0 

 interface gi0/0/0 

    traffic-filter inbound acl name Deny-OSPF

 

4、确保 OSPF Hello 包中的关键参数一致;【比较hello中的参数】

       # 直接建立邻居关系的路由器,RID一定不能相同;

         [R1]ospf 1 router-id  x.x.x.x // 指定 OSPF 1 使用的 RID 

  reset ospf 1 process // 重启 OSPF 1,才能生效;

       # 区域ID必须相同;

         [R1]ospf 1

 [R1-OSPF-1]area 0 

 [R1-OSPF-1-area-0.0.0.0]undo network 192.168.12.1 0.0.0.0

 [R1-OSPF-1]undo area 0 

 [R1-OSPF-1]area 1

 [R1-OSPF-1-area-1]network 192.168.12.1 0.0.0.0 

       # 认证必须成功;

       # 子网掩码必须得相同(特殊情况下)

       # hello 时间,必须相同;

        [R1]interface gi0/0/0 

[R1-gi0/0/0]ospf timer hello 20 // 更改hello时,dead跟随变化

                                    之间倍数关系是 4 倍; 

       # dead  时间,也必须相同;

        [R1]interface gi0/0/0 

[R1-gi0/0/0]ospf timer dead 41 //更改dead时,hello不变;

       # 特殊标记位,必须完全相同;

  # DR优先级,不能全为0;(特殊情况下)

        [R1]interface gi0/0/0 

[R1-gi0/0/0]ospf dr-priority 0

  # 3层MTU,必须完全相同;

  

验证命令:

         display ospf peer brief  //查看 OSPF 的邻居表

display ospf interface gi0/0/0  //查看OSPF的接口;














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


注意:

    ACL对设备本身发起的流量,是不起作用的。

ACL对设备的穿越流量,是起作用的。