Area

  1. 一个区域内的路由器不会知道自己区域外路由的具体情况,使用区域可以减少数据库大小,减少对路由器内存和CPU消耗,同时减少LSA的发布;
  2. 区域ID使用32-bit,可以同时使用十进制或者带点的十进制,例如271等同于0.0.1.15;
  3. 根据区域可以定义3种类型的区域:
  • Intra-area traffic:在一个区域内部传播的包;
  • Inter-area traffic:在不同区域传播的包;
  • External traffic:在OSPF域和其他自治系统传播的包  

       4.   使用区域0作为backbone。所有inter-area流量都必须通过backbone;非backbone区域不能直接交换包;

        5..  所有路由器可以分类为:Internal Router, Backbone Router,Area Border Router (ABR), Automomous System Boundary Router (ASBR).  所有前三种路由器,都可以属于最后一种

Virtual Link

OSPF将虚拟链路看做是一种网络类型;这个连接是没有地址的,属于backbone,介于两个ABRs之间的;virtual link是点对点的;virtual link的cost等于到邻居的cost;

     ★Virtual Links 用于2个目的:

  1. 通过一个非backbone区域连接一个区域到backbone区域;
  2. 通过一个非backbone区域连接两个被分割的backbone区域;

       ★形成virtual links的要求:

  1. Virtual Link必须在两个ABR直接配置;
  2. Virtual Link 经过的区域叫做transit area,此区域必须有完全的路由信息;
  3. transit area 不能是stub area;

The Link State Database:

  1. LSA有age,默认是MaxAge 1小时,1小时到了过后,他们将被删除;Link State refresh机制会每隔30分钟 (LSRefreshTime)发送一个新的sequence number增加了的age为0的LSA;当邻居收到这个新的LSA,将用新的替换旧的;所以 Link state refresh相当于是LSA的keepalive;
  2. Link state refresh机制,每个LSA单独拥有LSRefreshtime的好处是,所有LSAs不会同时过期,也就不会同时产生大量的LSA包流量,但缺点是带宽利用率低,因为有时候一个更新包可能就只包含一条LSA;
  3. LSA group pacing,这个机制是单独更新和统一更新的折中方法;每个LSA拥有一个单独的refres timer,当其过期时候,会再加上一个延迟,等待其他LSA过期;默认是 240秒,可以通过命令timer lsa-group-pacing 更改,范围是10到1800秒;
  4.  所有收到的有效LSA存储在link state database内,使用命令show ip ospf database查看;
  5. LSA type
  6. 每个路由器都产生Router LSA;列举出路由器的所有连接或者接口、状态和出口cost;只在区域内部传播;show ip ospf database router 可单独查看;
  7. Network LSA: 每个多路访问网络DR产生此LSA;此LSA列举了所有相连的路由器,包括DR自己;只在本区域传播;使用命令show ip ospf database network单独查看;
  8. Network Summary LSA:ABR产生此LSA;告知一个区域外部路由;相当于ABR告诉区域内部路由器,ABR可以到达哪些地方;ABR也使用此LSA将与其相连的区域内部路由发布到backbone内;区域外的同时在OSPF自治区域内默认路由也由此LSA发布;当ABR发布此LSA时,将包含ABR到此目的地的cost;★如果有多条路径ABR 只发布一条带有最小cost的LSA到内部区域或者到backbone;★当路由器收到ABR发来的network summary LSA,它不会进行SPF计算,相反,仅仅简单地将其到ABR的cost加上ABR发布的cost,然后直接加入到其路由表中,由此可见OSPF在一个区域内是链路状态路由协议,在inter-area是距离矢量算法;使用命令show ip ospf database summary单独查看;
  9. ASBR Summary LSA:ABR产生此LSA;ASBR summary跟Newtork Summary LSA 完全一样除了发布的目的地是ASBR地址而不是网络;目的地址是个主机地址,掩码是全0;
  10. Autonomous System External LSAs: 又叫External LSA;由ASBR产生,用于宣告OSPF自治系统外部路由或者自治系统外部默认路由;此LSA没有跟任何区域绑定,将传播到整个自治系统;使用命令show ip ospf database external单独查看;
  11. Group Membership LSA:用于Mulitcast OSPF (MOSPF);
  12. NSSA External LSAs:ASBR在NSSA区域产生的LSA;此LSA几乎跟External LSA一样;不同的是External LSA在整个OSPF自治域内传播,NSSA只在NSSA区域内产生和传播。使用命令show ip ospf database nssa-external单独查看;

Stub Areas

  1. ASBR学到的外部路由默认会传播到整个OSPF自治域内,有时候,很大一部分OSPF路由表都是外部路由占据,但有些区域只跟Area 0 相连,没有必要接收所有的外部路由。
  2. Stub Area就是不允许External LSA传播的区域;因为Type 5类型LSA不允许传播,那么传播Type 4的LSA也就没有必要了,所以Type 4 和 5 都被阻止进入Stub Area;
  3. 在Stub Area边缘的ABR会发送一个Type 3的默认路由(目标0.0.0.0)进入Stub area;
  4. 所有路由不能在inter-area或者inter-area找到的,都将匹配默认路由;
  5. 因为默认路由是Type3 LSA,它将不会被传播到区域之外;
  6. Stub Area的一些限制:
  • 因为任何种类的区域内,所有路由器必须有相同的数据库;为了确保满足这个要求,所有stub area内的路由器将hello包的E-bit设定为0,任何E-bit为1的都与其他路由器形成邻接;
  • 虚拟链路不能通过stub area;
  • 在stub area内不能有ASBR;因为ASBR发送Type 5消息,而Type 5消息是不能够在Stub area内出现的;
  • 一个Stub area允许有多个ABR,因为有默认路由存在,内部路由器不能识别到ASBR的最佳路径;

Totally Stubby Area

  1. Cisco 私有,在stub area基础上,继续block Type3message;
  2. 使用默认路由到达本区域以外所有区域;
  3. ABR将阻止Type 3  4  5,唯一的例外是发布默认路由的Type 3 LSA;

Not-so-stubby areas(NSSA)

  1. NSSA 允许外部路由在区域内传播,同时对其余的自治系统保留stub area属性;
  2. NSSA内的ASBR将产生Type 7的LSA来传播外部路由;这些Type 7 LSA将在NSSA内传播,但会在ABR被阻止;
  3. Type 7 LSA有一个P-bit;NSSA ASBR有选项可以修改此P-bit;如果设定为1,那么Type 7将被转换为Type 5然后传播到其他区域;如果设定为0,则Type 7将不会传播到NSSA以外的区域;

路由表

  1. 一条路由的cost是到目的地所有出口接口cost之和;
  2. LSA使用16-bit记录cost,范围是 1到65535;

Destination Type

  1. 每一个路由条目,可以分类为networ或者router
  2. Network条目是网络地址,数据包可以根据此类条目被路由;这些目的地址被录入路由表中;
  3. Router条目用来路由至ABR或者ASBR;如果路由器需要发送包到inter-area地方它必须知道怎样找到ABR;如果一个包要发送到external目的地,路由器必须知道怎样到达ASBR;路由器在另外一个地方保存这个信息;使用命令 show ip ospf border-routers 查看;

     

    每个条目最后的数目是SPF算法反复安装此条目的次数。

 Path Types

     每条到一个网络的路由将归属于4种路径类型的其中一种:

  1. Intra-area paths。到达与路由器相连区域目的地的路由;
  2. Inter-area paths。到达OSPF自治区域以内其他区域的路由;此路径类型将经过至少一个ABR;
  3. Type 1 external paths。达到OSPF自治区域以外的路由;ASBR负责给外部路由赋予一个OSPF的cost;Type 1 的cost是路由本身cost和到达ASBR的cost之和;
  4. Type 2 external paths。达到OSPF自治区域以外的路由;cost只算路由本身cost,不加到达ASBR的cost;OSPF默认使用E2 path;

    ★OSPF使用最长掩码匹配,如果遇到相同掩码,使用以下顺序挑选路由:

  1. Intra-area paths;
  2. Inter-area paths;
  3. E1 external paths;
  4. E2 external paths;

     ★OSPF支持等cost负载均衡;如果多条相同cost,相同path type的路由存在,那么OSPF将会利用负载均衡同时使用;默认最多同时使用4条,使用命令maximum-paths可以改到最大6条;

OSPF包格式

   ★IP包头89封装OSPF包,IP包设定TTL 1确保OSPF包只在直连的邻居间传递,TOS设定为高优先级110 (Internetwork Control Precedence);

   ★OSPF packet header 对所有OSPF包都相同;OSPF Packet Data使用各自不同的数据结构;

   1. The Packet Header

     所有OSPF包都以这个24 octer的头开始

 

  • Version:OSPF版本,目前为2;
  • Type:1--Hello;2--Database Description;3--Link State Request;4--Link State Update;5--Link State Acknowledgement;
  • Packet length:OSPF包长度,包括包头;
  • Router ID:产生此包的路由器ID;
  • Area ID:产生此包的区域ID;如果是在virtual link上面的包,Area ID为0.0.0.0,因为virtual link被认为是backbone的一部分;
  • Checksum:包括包头的标准checksum;
  • AuType:0--Null ,Au部分不会检查,可以是任意数据;1--Au 部分最多包含64 bits的口令;2--Au部分包含Key ID, Authentication Data Length 和 Cryptographic Sequence Number;

2.  OSPF hello packet

 

  • Network Mask:  发送接口的子网掩码;如果此掩码跟接受接口的掩码不匹配,包将丢弃;
  • Hello INterval:发送、接受路由器必须有相同,否则不能建立邻居关系;
  • Options:增加兼容性,路由器可以因为此值不兼容而拒绝建立邻居关系;
  • Router Priority:用于DR、BDR选举,为0则不能成为DR或者BDR;
  • Router Dead Interval:未收到Hello包之前等待时间;双方必须有相同的interval才能建立邻居关系;
  • Designated Router:网络上DR接口的地址(是Router ID);如果没有DR(还没选举或者网络类型不用DR)则填写为 0.0.0.0;
  • Backup DR: 参考上面;
  • Neighbor:所有有效邻居列表;

3. Database Description Packet

DD packet在邻接关系建立过后使用。

 

  • Interface MTU:以octet为单位,表明源接口允许的最大IP包的大小;在virtual link上设定为0x0000;
  • Options:允许路由器选择不发送部分LSAs给不支持特定功能的邻居;
  • I-bit:第一个DD packet设为1,其他后续的设为0;
  • M-bit:More bit,1表明还不是最后一个包;最后一个包设为0;
  • MS-bit:Master/Slave bit,1意味着发送者是master,slave为0;
  • DD sequence number:Master设定,并在后续包中增加;
  • LSA Headers:源路由器Link state database的部分或者所有LSA 头;

 4. Link State Request Packet

当路由器收到DD包过后,有可能有在其database里面没有的条目,于是将这些条目放入Request包中;路由器发送一个或多个Link State Request包请求LSA;注意,包是通过Type, ID 和 发布路由器来唯一确定LSA的,而不是通过具体实例(sequence number, checksum 和 age);所以请求的是最新的是LSA,不论是否是真正想要的那个;

 

5.Link State Update Packet

包含一个或多个LSA,用于传播LSA和响应LSA Update;只发送给直连的邻居(只有1跳);

 

  • Number of LSAs:包含的LSA数量;
  • LSAs:完全的LSA;每个包可以有多个LSA,直到达到链路允许的最大包大小;

6.  Link State Acknowledgement Packet

用于保证LSA可靠传播;每一个收到的LSA都必须明确的确认;一个ACK包可以包含多个LSA headers;