OSPF : Open Shortest Path First - 开放式最短路径优先 支持网络的层次化设计 -区域 骨干 : 0区域,就是骨干区域 非骨干:不是区域0的,都叫做非骨干区域 所有的非0区域,必须直接连接0区域; 非0区域之间,不可以直接进行通信的;

配置命令: router ospf 1 netowrk x.x.x.x y.y.y.y area {id} router-id n.n.n.n
OSPF邻接建立影响因素: 1、确保最小范围内双向ping通; 2、能够正常发送OSPF报文; #确保链路正常宣告; 3、能够正常接收OSPF报文; #确保链路正常宣告; #确保ACL放行 OSPF 流量; 4、开始比较OSPF报文参数: 1、RID不能相同; router ospf 1 router-id x.x.x.x clear ip ospf process 2、区域ID必须相同; 3、认证必须成功(认证类型必须相同,并且密码必须相同) 4、子网掩码必须相同(特殊情况下) 5、hello时间必须相同; interface fas0/0 ip ospf hello-interval {value} 6、dead时间必须相同; interface fas0/0 ip ospf dead-interval {value} 7、特殊标记位必须相同; 8、优先级必须不能全为0(特殊情况下) interface fas0/0 ip ospf priority {value} 9、3层MTU必须相同,否则会卡在 Exstart 状态 ineterface f0/0 ip mtu 1499 默认1500 mtu :最大传输单元 max transmit 调试命令: debug ip ospf hello -->比较 hello 中的参数时,使用该命令; debug ip ospf adj --->比较 OSPF 头部中参数时,使用该命令; <TCP/IP路由技术 卷1>

华为配置 OSPF 的命令: [R1]ospf 10 router-id 1.1.1.1 [R1-ospf-10]area 12 [R1-ospf-10-area-0.0.0.12]network 192.168.12.0 0.0.0.255 验证命令: display ospf 10 brief // 类似于 show ip protocols display ospf 10 peer [brief] // 类似于 show ip ospf neighbor display ospf 10 lsdb //类似于show ip ospf database OSPF邻接建立状态: 0、down:邻居从完好状态到挂掉; 1、init:初始化,表示本地路由器收到了对方发送的hello包; attempt : 尝试; 只有在以单播的方式建立 OSPF 邻居时,才会有。 2、two-way:双向通信状态;表示本地路由器收到了对方发送的hello 包,并且在对方的报文中,发现了自己的 RID(neighbor-list) 此时也说明两边的hello中的参数协商成功了;

        在特殊的网络环境下,我们会在多个路由器中选择DR/BDR,
        其他的路由器都叫做 DRother。此时,所有的路由器都仅仅
        和DR/BDR同步数据库。DRother之间永远是处于Two-way。
        选择DR的原则:
              0、只有优先级不为0的路由器,才可以参与选举;
                 优先级为0的路由器,永远称之为 DRother。
              1、首先比较的优先级,越大越好;(默认是1)
              2、如果优先级相同,则比较 RID,越大越好;
        DR:designated router - 指定路由器
        BDR:backup designated router - 备份指定路由器

3、exstart:交换初始化状态;目的是在该阶段进行协商,从而确定 在后续的数据库同步过程中,应该如何确保稳定有效传输;
DBD-database description ,数据库描述报文; master/slave 选择原则:RID,越大越好; I-初始化位,表示的是第一个 DBD报文; M-More,表示后续还有更多的 DBD ; MS-master/slave,表示主从关系位;
4、exchange:交换 在该阶段,交换的其实不是数据库中的具体条目内容, 而是数据库中的每个LSA条目的简要信息; 此时发送的报文,就是 DBD,里面包含的是 LSA的简要/摘要信息;

5、Loading:加载 该过程中,才是真正的进行 LSA 的请求和发送的; 此时发送的报文是:LSR/LSU/LSAck

6、full:邻接。该状态表示双方的数据库完全同步。

OSPF网络类型: OSPF的工作过程,完全由网络类型来决定; 任何一种类型的链路,默认都对应着一种网络类型, 但是,可以基于网络需求,进行人工修改; interface fas0/0 //修改端口网络类型; ip ospf network {type} show ip ospf interface fas0/0 //查看端口网络类型;

broadcast :广播。(MA , multi-access) 当2层协议为ethernet时,对应的是广播网络类型; hello是10s;dead是40s; 需要选举DR/BDR; 端口主动发包,发包方式为组播(224.0.0.5/6) non-broadcast :非广播。(NBMA) 当2层协议为Frame-relay时,对应的是非广播网络类型; hello是30s;dead是120s; 需要选举DR/BDR; 端口不主动发包,发包方式为单播; 【OSPF实现单播:neighbor x.x.x.x】

point-to-point:点到点(P2P)
当2层协议为HDLC\PPP时,对应的是点到点网络类型; hello是10s;dead是40s; 不需要选举DR/BDR; 端口主动发包,发包方式为组播(224.0.0.5)
point-to-Multipoint:点到多点(p2mp)
hello是30s;dead是120s; 不需要选举DR/BDR; 端口主动发包,发包方式为组播(224.0.0.5)
point-to-Multipoint non-broadcast:点到多点(p2mp-NB)
hello是30s;dead是120s; 不需要选举DR/BDR; 端口不主动发包,发包方式为单播

LSA的类型:
OSPF的数据库中包含的是 LSA ; OSPF的数据库是以区域的形式来组织 LSA 的; 同一个区域中的所有路由器,数据库是完全同步的; LSA的摘要信息详解: link-id:表示的是LSA的名字, adv:表示的是产生这个LSA的路由器的名字; age:表示的是存活时间;最大存活时间是3600s; seq:表示的序列号;LSA表示的链路每变化一次,LSA的序列号 就会增加1; checksum:校验和,用于确保 LSA在传输过程中,没有被损坏。 link-count:链路计数器,只有1类LSA才会拥有。表示的是 该路由器上有多少个链路宣告进入了该区域;

   
1类LSA:router LSA
   任何一个路由器,都会在任何一个区域中产生一个 1类LSA ;
   可以将1类LSA理解为“自我介绍”,用于说明本身有哪些链路
   进入了该区域,并且是连接着哪些设备,是如何连接的;
   到对方的距离是多少;
   
   1类LSA只能在一个区域内部进行传输;
   
   link-id:路由器的RID
   adv:路由器的RID
   传输范围:只能在一个区域内部
   ADV是否变化:不变化   
   
2类LSA:net Link state
   这种类型的 LSA ,只有在选举DR/BDR的网络环境中才会有。
   只有DR才有资格产生 2 类 LSA 。   
   
   link-id:表示的是 DR 的接口IP地址;
   ADV:DR的 RID ;
   传输范围:一个区域内部
   ADV是否变化:不变化;
   
// 基于 LSDB 中的1类LSA 或者 1和2类LSA,就可以计算出
    一个区域内部的路由,叫做 O 的路由;
3类LSA:summary net link state
   在不同的区域之间传输路由信息;
   这种类型的LSA,仅有 ABR 可以产生。
   3类LSA被ABR产生以后,首先进入到 OSPF 区域0,然后再转发到
   其他区域。
   ABR:
      1、可以将非0区域中的“域内-O”路由,转变成3类LSA,发送到
         0区域;
      2、可以将0区域中的“域内-O”路由,转变成3类LSA,发送到非
         0区域;
         也可以将0区域中的“域间-OIA”路由,转变成新的3类LSA,
         发送到其他的非0区域中;
      3、一定不可以将非0区域中的3类LSA转发到0区域;;
    link-id:表示的是路由的前缀;
    adv:ABR的RID;
    传输范围:一个区域内部
    ADV是否变化:是;
4类LSA:summary ASB link state
    专门是为了辅助5类LSA计算路由而生的;
    传递的信息是 ASBR 的 RID ;
    是由与 ASBR在同一个区域的 ABR 产生的;
    传递过程中每经过一个ABR,ADV都会变化一次。
    link-id:表示的是 ASBR的 RID;
    adv:ABR
    传输范围:同一个区域内部;
    ADV是否变化:是的;
        
5类LSA:external LSA
    表示的是OSPF的外部路由,没有任何区域概念;
    可以在OSPF网络中畅通无阻。
    哪里有OSPF,哪里就有5类LSA。
    
    link-id:表示的是外部路由前缀;
    adv:ASBR的 RID ;
    传输范围:没有限制;
    ADV是否变化:否;
注意:
   计算域内路由时,使用的1类或者1类和2类LSA;
   计算域间路由时,使用的是3类和1类;
   计算外部路由时,使用的是5类和1类,或者是5类,4类和1类;
---------------------------------------------------------
非0区域没有直接与0区域互联,解决方案:
1、引入外部路由;
       #运行多个OSPF进程,并且相互之间进行重分发;
2、引入内部路由(O IA)
       #引入虚链路。
           通虚链路建立的OSPF邻居关系,永远都是属于区域0的;
           R3;
              router ospf 1
                area 12 virtual-link 4.4.4.4
           R4:
               router ospf 1
                area 12 virtual-link  3.3.3.3
            
Virtual-link:虚链路;