OSPF笔记


一、OSPF

  • Open Shortest Path First  开放式最短路径优先;属于链路状态路由协议
  • OSPF被IP协议封装,工作在网络层之上的一种路由协议,协议号为89
  • OSPF路由信息传递与路由计算分离,基于SPF算法,以累计链路开销作为选路参考值
  • OSPF四张表:邻居表、链路状态数据库、OSPF路由表、全局路由表

二、OSPF报头

  • Version(1字节):版本v2代表v4网络,v3代表v6网络
  • Type(1字节):类型;ospf报文的类型;一共五种(看下面OSPF报文,type1-5顺序)
  • Pack Length(2字节):总长度;包括报文头部+数据
  • Router ID(4字节):发送该报文的路由器标识(router id)
  • Area ID(4字节):发送该报文的所属区域
  • checksum(2字节):校验和,包含了除认证字段的整个报文的校验和
  • Auth Type(2字节):验证类型;0:验证 1:简单验证 2:MD5认证
  • Authentication(8字节):验证信息;0代表没有 1为明文密码 2为key id

三、OSPF报文

  1. hello 报文:发现和建立邻居关系
    1. 邻居发现:自动发现邻居路由器
    2. 邻居建立:完成hello报文中的参数协商,建立邻居关系
    3. 邻居保持:通过keepalive机制,检测邻居运行状态
    4. hello报文:

        

  2. DD 建立邻接关系:交互链路状态数据库摘要(DD报文两种情况:不携带LSA摘要信息的DD报文和携带LS摘要信息的DD报文)
  3. LSR 链路状态请求:请求特定的链路状态信息
  4. LSU 链路状态更新:发送详细的链路状态信息(拥有完成LSA)
  5. LACK 链路状态确认:发送确认报文
HELLO报文中影响邻居关系的因素:
  • router id(不冲突)
  • area id(一致)
  • 认证类型(一致)
  • 认证数据(一致)
  • Hello时间间隔(一致)
  • Hello失效时间(一致)
  • N bit和E bit取值(一致)
DD、LSR、LSU、LSAck与LSA的关系:

  DD报文:携带LSDB所有LSA的摘要信息;摘要信息包括:type、Ls id、Advertising Router、ls age(老化时间)、seq(序列号)、chksum(校验和)等信息

  

  LSR:携带LSA的标识;type、Ls id、Advertising Router

  

  LSU:携带LSA的头部以及链路状态

  

  LACK:包含LSA摘要信息,跟DD报文一样

  

OSPF协议router ID如何确认

  • 管理员手动配置ospf的router id优先级最高
  • 默认使用路由器的全局router id;全局router id:设备第一个配置的IP成为router ID;手动配置全局ID:router id X.X.X.X 需要重启生效
  • 手动配置---->loopback最大--->物理接口最大/或者第二大(一般思科遵循此选举办法,华为设备建议手动配置)

四、OSPF工作状态

  • dowm:
    • 邻居初始状态;表示没有从邻居收到任何信息,此状态下可以发送hello报文,发送间隔为poll interval通常和router dead interval间隔相同
  • attempt:
    • 此状态只有在NBMA网络中存在。
  • init:
    • 此状态已经从邻居收到hello报文,但hello报文中不包含自己route id,将邻居的router id添加到hello报文中再发送出去。
  • to-way:
    • 收到含有自己router id的hello包进入2-way状态,建立邻接关系;根据网络类型选举DR/BDR
  • ex-start:
    • 这是形成邻接关系的第一个步骤;进入此状态向邻居发送DD报文(不携带LSA摘要信息的DD报文)主要确认主从路由器(router id较大称为主master)
    • 为什么要选举主从路由器;通过DD报文序列号+1机制实现隐式确认,保障数据可靠传输; 
    • I(init)置1,表示第一个DD报文     M(more)置1表示后续还有其他DD报文     MS(master)置1表示自己为master
  • ex-change
    • 将自身LSDB中所有LSA信息摘要信息通过DD报文进行交换,实现LSDB同步;(DD报文好处:传递的是邻居之间没有的LSA头部信息,减少无用的LSA传递)
    • LSDB同步:就是邻居之间最终拥有相同的LSA的信息以及LSA的新旧程度
    • 摘要信息用途:
      • 标识唯一条LSA(由type、ls id、adv rtr三个参数标识一条LSA)
      • 用于判断LSA的新旧(seq(序列号)、chksum(校验和)、ls age(老化时间)三个参数判断新旧程度)
    •   

  • loading
    • 相互发送LSR报文请求LSA,发送LS Updata通告LSA(交互LSR和LSU)
  • full
    • 运行SPF算法,LSDB已经同步完成(主路由器优先进入full状态)

   

  OSPF 邻居建立和LSDB同步过程:

  
   判断一条LSA新旧:
  • Seq(序列号)越大的越新,起始值:0x80000001  最大值:0x7fffffff
  • 如果seq相同则比较chksum(检验和)越大越新
  • chksum相同,则判断LS age(老化时间)是否等于3600s,等于3600s最新
  • 如果LS age不等于3600s则判断ls age差值,如果大于900s则LS age小的最新,小于900s则认为相同
  • DR/BDR选举
    • 根据优先级选举DR/BDR;优先级高的优先;当优先级相同时router id大的优先;
    • 接口优先级0-255,0代表不选举,默认是1,不具有抢占性;
    • 每条广播/NBMA链路都必须选举一个DR,默认会选举BDR路由器(可选),链路上其他路由器称为Drother
    • DR/BDR/Drother之间保持full的邻接关系需要进行LSDB同步;Drother之间保持tao-way的邻居关系,不进行LSDB同步;
    • DR/BDR 监听:224.0.0.5和224.0.0.6        Drother监听:224.0.0.5
  • 链路总结:
  • 网络类型
    hello时间
    特点
    缺省选择
    备注
    p2p
    10s
    以组播形式发送hello报文、DD报文、LSR报文、LSU报文、LSAck报文
    当链路层协议是ppp、hdlc、lapb时,缺省情况下ospf网络类型是P2P
     不选举DR/BDR
    NBMA
    30s
    以单播形式发送hello报文、DD报文、LSR报文、LSU报文、LSAck报文、NBMA网络必须是全连通的,
    即网络中任意两台路由器之间必须直连可达
    当链路层协议是ATM时,缺省情况下ospf认为网络类型是NBMA
      
    DR与BDR/DRoute建立邻接关系
    BDR与DR/DRoute建立邻接关系
    DRoute之间只建立邻居关系
    广播(broadcast)
    10s
    通常以组播形式发送hello报文、LSU报文和LSAck报文,以单播形式发送DD报文和LSR报文
    当链路层协议是ethernel、FDDI时,缺省情况下ospf认为网络类型是broadcast
    P2MP
    30s
    以组播形式发送hello报文、以单播形式发送DD报文、LSR报文、LSU报文、LSAck报文、P2MP网络中掩码长度必须一致
    必须手动指定
     不选举DR/BDR

五、LSA

  • LSA(link state Advertisement)是路由器之间链路状态信息的载体,LSA是LSDB最小的组成单位,也就是说LSDB是由一条条LSA构成的;一共6种LSA。
  • LS age(16位):此字段表示LSA生存时间,单位是秒
  • LS type(8位):此字段标识了LSA的格式和功能,常用的LSA类型有五种
  • Link State ID(32位):此字段是该LSA所描述的的那部分链路的标识,例如:router id等
  • Advertising Router(32位):此字段是产生此LSA的路由器的rouer ID
  • LS sequence number(32位):此字段用于检测旧的和重复的LSA;序列号越大代表LSA越新。
  • LSA checksum(16位):校验和
  • Length(16位):LSA总长度
  • 1800s 更新一次   3600s失效

链路状态信息

  • 什么是链路?路由器之间相连的链路
  • 什么是状态?链路上各种网络参数在某一个时刻的取值
  • 链路的类型、接口IP地址及掩码、链路上所连接的邻居路由器、链路的带宽(开销 cost)

  • 1类LSA
    • router lsa
    • 每个ospf路由器都会产生,描述路由器自身加入到ospf进程的直连链路的链路状态;只在区域泛洪(右图是建立邻居关系后)
    • 1类LSA的链路状态由4种组成link type来进行描述;Stubnet(描述自身直连的网络号/掩码)、p-to-p(描述点对点、点对多点链路邻居)、transnet(描述广播/NBMA链路上的邻居)、virtual(描述虚链路)
    • 注意:广播/NBMA 网络里会出现一个伪节点概念,广播网络里ospf在计算拓扑的时候都把当成与伪节点相连,依次来计算路由拓扑。
    • 下面三张分别描述:stubnet、p-to-p、transnet

       

        

  • 2类LSA
    • network lsa
    • 由DR路由产生,描述DR周边网络环境(包括拓扑和网络号),只在本区域泛洪
    • (transNet:用于描述连接伪节点的信息,type2 LSA其实描述了伪节点连接的哪些节点)
  • 3类LSA
    • network summary lsa
    • 网络汇总lsa,由ABR路由器产生,将区域1、2类LSA做归纳,生成3类LSA泛洪到其他区域中。
    • 一条三类LSA只能传递一条路由;(如果1类2类LSA很多那么生成的三类LSA路由也会很多)
  • 4类LSA
    • asbr summary lsa
    • 由ABR路由器产生,描述ASBR路由所在区域的位置  
  • 5类LSA
    • AS external LSA 自治系统外部LSA(外部引入路由)由ASBR路由器产生,用来通告网络去往其他路由协议的LSA。
    • 外部路由通过重分布引入到ospf路由域中,以5类LSA进入ospf区域。引入外部路由时默认是type2的路由;
    • type 1:路由表始终显示引入时开销和AS内部路径开销之和
      • 同类型的路由,选择cost小的,如果cost值相同则负载分担,路由意义上选路方式,OSPF根据SPF算法自动选路;
    • type2:引入外部路由时在路由表中忽略AS内部路径的开销,仅显示引入的开销,cost默认是1;
      • 同类型的路由,优先比较引入时的开销,引入时的开销值小的优先,如果引入时开销相同则比较AS内部路径开销,即选择到ASBR近的优先,如果内部开销也相同则负载分担;管理意义上的选路方式,人为可控。
  • 7类LSA
    • nssa external lsa
    • 由NSSA区域中的ABR/ASBR产生,描述到达外部网络的信息
  • 总结:

  

六、OSPF区域

  • OSPF将网络划分成两层区域结构
    • 一层为骨干区域(area 0)
    • 一层为非骨干区域(非area 0)
    • 非骨干区域一定要和骨干区域相连
  • OSPF路由类型:
    • 区域内路由:由1类和2类LSA产生
      • 把整个OSPF的一棵大树划分成几个小树;1类和2类LSA各自在树内的计算路由
    • 区域间路由:由3类LSA产生          
      • 把各自树内计算出的路由通过转换成三类LSA在区域间传递,一条区域内路由只能转换成一条区域间的路由
      • ABR将自身直连区域内路由转化其他直连区域3类LSA,完成区域间路由计算;ABR将区域0中的3类LSA转换成其他非骨干区域的3类
      • 区域间路由的计算方法:cost=自身到ABR的开销+ABR到路由的开销
    • 区域外路由:由5类和7类LSA产生

ABR:连接多个区域并且至少一个活动的接口属于区域0的路由器

IR:区域颞部路由器,所有接口都属于同一个区域的路由器

ASBR:连接其他自治系统的路由器称为ASBR

 

虚链路介绍:

  • 主要创建vlink的路由器都是ABR
  • vlink永远属于区域0的链路
  • vlink只能在非骨干区域创建,只能跨越一个非骨干区域
  • 特使区域不能创建vlink
  • 用于修复不连续的骨干区域
  • 将非骨干区域和骨干区域相连起来
  • 可以作为区域0的备用路线,能不用就不用
  • 配置:骨干区域配置vlink-peer X.X.X.X:非骨干区域的IP地址  非骨干区域:vlink-peer X.X.X.X:骨干区域IP地址   

 

特殊区域介绍:

  • stub区域(末节区域)
    • 不允许5类LSA在该区域泛洪,不会产生4类LSA;
    • ABR为该区域产生一条3类LSA的缺省路由用于访问外部路由;区域试图下:default-cost修改缺省路由的开销
    • 通过3类的LSA用于访问区域间的路由;
    • 该区域的所有路由器都要配置成末节区域
  • totally stub(完全末节区域)
    • 不允许5类LSA在该区域泛洪,不产生3类和4类lsa
    • 该区域的ABR产生一条3类的LSA用于访问区域间路由和外部路由
    • 该区域的ABR路由配置成完全末节区域,IR路由器配置成末节区域
    • 和ASBR在同一个区域路由如何计算外部路由?
      • Cost=自身到ASBR的开销+引入时的开销(5类)    next-hop=自身到asbr的下一跳
    • 和ASBR不在同一个区域的路由器如何计算外部路由?
      • Cost=自身到ABR的开销+ABR到ASBR的开销(4类)+引入时的开销(5类)   next-hop=自身到asbr的下一跳
  • nssa
    • 允许本区域ASBR引入外部路由,以7类LSA形式引入;
    • 只能在本区域泛洪,不能在其他区域泛洪
    • 不允许其他区域的ASBR产生的5类LSA泛洪,不产生4类LSA
    • NSSA区域的ABR产生一条7类缺省路由,用于访问其他区域引入外部路由
    • NSSA区域ABR将7类LSA转成5类LSA泛洪到其他区域,如果有多个ABR则router ID大的ABR去做7转5;nssa translator-always 这条命令可以指定某个ABR做7转5;
  • totally nssa
    • 允许本区域的ASBR引入外部路由,以7类的LSA方式引入
    • 不允许其他ASBR产生的5类LSA泛洪,不产生4类LSA
    • 不产生3类lsa,由NSSA区域的ABR产生一条3类LSA的缺省路由,用于访问区域间路由
    • NSSA区域的ABR产生一条7类LSA的缺省路由,用于访问其他区域引入的外部路由(存在两条缺省路由,一条3类,一条7类,优选3类的LSA的缺省路由)
    • 7类LSA只能在NSSA区域泛洪,不能泛洪到其他区域
    • NSSA区域的ABR将7类LSA转成5类LSA泛洪到其他区域,如果有多个ABR,则router id大的ABR去做7转5;nssa translator-always
  • 总结:
  • 特点
    stub 区域
    totally stub区域
    nssa区域
    totall nssa区域
    是否必须位于AS边缘
    ABR数量
    1个
    1个
    1个或者多个
    1个或者多个
    是否允许有ASBR
    不允许
    不允许
    允许一个或者多个
    允许一个或者多个
    是否允许虚连接穿过
    不允许
    不允许
    不允许
    不允许
    type 3 LSA
    允许
    不允许
    允许
    不允许
    type 4 LSA
    type 5 LSA
    不允许
    不允许
    不允许
    不允许
    type 7 LSA
    不允许
    不允许
    允许
    不允许
    缺省路由
    自动生成一条默认路由;下一跳是所在区域内的ABR路由器接口地址;
    自动生成一条默认路由;下一跳是所在区域内的ABR路由器接口地址;
    自动生成一条默认路由;下一跳是所在区域内的ABR路由器接口地址;
    自动生成两条默认路由;一条3类,一条7类
    允许的LSA
    type 1 LSA
    type 2 LSA
    type 3 LSA
    type 1 LSA
    type 2 LSA
    type 1 LSA
    type 2 LSA
    type 3 LSA
    type 7 LSA
    type 1 LSA
    type 2 LSA
    type 7 LSA
    不允许的LSA
    type 4 LSA
    type 5 LSA
    type 7 LSA
    type 3 LSA
    type 4 LSA
    type 5 LSA
    type 7 LSA
    type 4 LSA
    type 5 LSA
    type 3 LSA
    type 4 4 LSA
    type 5 LSA

七、路由汇总

  • 区域间路由汇总
    • 只能在ABR上执行。只能对直连区域的路由汇总(即对区域内的路由)
    • 汇总路由的开销默认继承明细路由中开销最大的值
    • 明细路由全部失效,汇总路由也会失效(哪怕明细路由只有一条可达,汇总路由也不会失效)
    • 如果区域有多个ABR,所有ABR都要执行汇总,否则失去汇总的效果
  • 外部路由汇总
    • 只能在ASBR上执行
    • 汇总路由开销类型继承明细路由的开销类型,如果明细路由开销类型不一致则默认为type2
    • NSSA区域的外部路由汇总可以在ASBR上执行,也可以再NSSA区域的ABR执行

八、路由过滤

  • 过滤工具filter-policy 
  • import方向:对接收路由设置过滤策略,只有通过过滤策略的路由才被添加到路由表中,但不影响对外发布路由。ospf路由信息记录在lsdb中,实际上只是对ospf计算出来的路由进行过滤,不能对LSA过滤
  • export方向:通过引入外部路由后通过filter-policy对引入路由发布时进行过滤,将满足条件的外部路由转换为type5、type7发布出去。先引入路由,再过滤。filete-policy acl name filter-export

九、OSPF防环

  • 区域内
    • 在区域内每个路由器都维护一个独立的lsdb,根据SPF算法得出最优路由,算法本身防环。
  • 区域间:
    • 所有非骨干区域必须和骨干区域相连,区域间路由需要通过骨干区域中转。
    • ABR只能将本区域内部路由注入到area 0(ABR存在其他区域的路由不会注入到area0中)但可以将区域内部路由以及区域间的路由注入到非0区域
    • ABR从非骨干区域收到type-3LSA不能用于区域间路由计算
    • ABR不会将area 0内部路由信息type-3再注入该区域中(情景:三角网络架构其中路由器1、2为区域0,与另一台路由器3非0区域相连,路由1通过路由器3把type-3路由信息传递到了路由器2,路由器2不会把该type-3路由信息再此传递给路由器1)
    区域外(mpls)
    • ospf通过down位防环,3类LSA DN比特不仅可以防环还可以优化数据转发;DOWN比特在把多协议BGP引入到ospf时3类LSA自动添加,其他PE设备如果检测到3类LSA中down位 置位就拒绝再引回BGP(自动完成)
    • ospf 通过tag防环,主要针对5类和7类;在MPLS VPN环境下,会把BGP的AS号放到5、7类的tag字段,其他PE设备检测到TAG位和自身的AS号相同就拒绝路由。display ospf lsdb ase 可以看到TAG 值
OSPF 不能建立原因:
  1. 路由器接口未参与OSPF 进程
  2. 网络一二层故障
  3. 路由器接口被设置为passive接口
  4. Hello 包被acl 拦截
  5. MA 网络子网掩码不匹配
  6. Hello包时间间隔不匹配
  7. 认证类型和认证密钥不匹配
  8. 区域ID 和 router id
  9. Stub/NSSA 区域选项不匹配
  10. P2MP 中FR没有配置broadcast
  11. 企图用接口辅助地址建立邻居

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM