• OSPF 提升 一 ----基础


    ospf  ccnp内容

     
    一  link-state protocols     
    IGP   开放式的最短路径优先协议     公有协议
    支持中到大型的网络    spf算法 链路状态协议
    1.传送的LSA     link status   advertisement   链路状态通告    包换拓扑信息
    具体包括:网段的前缀   掩码  连接的路由器的哪些接口   直连哪些路由器   
    LSA分为7中类型
    某些包含的是拓扑信息     但是有些包含的是路由信息
    2.LSDB   lsa的集合     链路状态数据库
     对此进行spf  算法  得到spf 树     (基于cost代价)再得出最优的路由   并将其加入到路由表中
    3.既支持vlsm   变长掩码        又支持 cidr   路由聚合
    4.封装
    layer2| ip |ospf| fcs
    直接封装到IP报头内     上层协议号为89     eigrp为88
     
    二  link-state   data structures
    1.neighbor table:
    邻接表
    2.LSDB   
    链路状态数据库        既包含拓扑信息  又包含路由信息
    3.routing table
    路由表
    三 link-state routing protocols
    1.link-state routers recognize more information about the network than their distance vector counterparts
    信息更多    知道每个链路的具体状态连接信息   
    2.each router has a full picture of the topology in the every area.    每个路由器拥有同一区域内的所有拓扑信息
    3.consequently,link-state routers tend to make more accurate decisions.
    根据1和2   决策会更精确    主要是避免环路
    四 link-sate data structure:network hierarchy
    二层区域     基于路由器的接口
    transit area    -----backbone or area 0     传输区域   或者核心区域或者主干区域    必须存在
    regular area-----nonbackbone areas     常规区域    非主干区域   可以不存在
    单区域划分时   唯一的区域可以是area0     也可以不是area0
     
    拓扑展示
    OSPF 提升 一 - 骡子 - stupidmule@126 的博客
    有利点: a    减少路由表的路由条目的数量      ----汇总以及聚合   rc为area0和area1分别维护不同的LSDB
    area0到area1传递域间的路由时用到LSA传递       这时候LSA中包含的不是拓扑信息  而是路由信息
    而此路由信息由贝尔曼福特算法得出     此时会将路由汇总  称为域间汇总是重点     另一种汇总时域外 汇总
    b 基于域间汇总  多条连续路由汇总成一条汇总路由     当其中一条路由变化时(除非所有这些路由都变 化   才将汇总路由删除)不影响汇总路由条目     也就是不会影响其他区域    拓扑变更  带来的影响  限 制在区域内   不向整网扩散
    c 某些特定的LSA 只能在一个区域内进行泛洪        但是由于LSA包含的内容不一定都是一个类型的   所 以   LSA可以分为在区域内传    也可以在区域间传递     还可以在所有ospf域内传递
    d 需求    部署ospf时   必须要基于层次化 划分
    划分区域能够实现: a 减少路由条目数量   ---优化
    b 限制拓扑变更传递的范围   ---优化
    c 减少其他区域LSDB中LSA数量    ---优化
    层次化的设计就是优化    所以ospf能够适应大的网络    但是单区域的ospf支持的网络范围毕eigrp小    但是分区域后就不同了
     
    五 AREA TERMINOLOGY
    名词: backbone     骨干路由器  
    ABR     area border router     区域边界路由器   一个接口属于area0    另一个接口属于area1
     
    六 forming ospf adjacencies
    邻接关系的分类
    1两台路由器 只要三层直连  就是邻居   即hello能发过来
    2完全建立7级ospf邻接关系   才叫   邻接     最后一级邻接关系叫做full级
    邻接关系建立  用hello报文   组播     地址为224.0.0.5     常用           但是224.0.0.6为dr和bdr用的  不常用    当交换机收到hello的组播报文时   泛洪  给连接的所有路由器    耗费路由器的cpu资源      
    3一个MA网段 越庞大    邻接关系越多   资源消耗过大     影响性能   所以出现DR  和BDR
    DR    designated router    指定路由器
    BDR bak designated router   备份指定路由器
    邻接关系建立顺序
    a DR和BDR建立邻接关系
    b DR和其他DROTHERS路由器建立邻接关系
    c BDR和其他DROTHERS路由器建立邻接关系
    d DROTHERS之间只能够达到two-way的邻接关系    不能够达到full的完全邻接关系
    4 路由器之间交互更新报文     只有当建立完全的邻接关系的时候
    5 一旦邻接关系建立       两台路由器LSDB会包含相同的LSA的信息   即LSDB  相同
    6 lsa在区域内泛洪
     
    七 OSPF Calculation
    ospf 算法
    1.同一个区域内每个路由器有相同的LSDB
    2.同一个区域内   收敛之后     每个路由器将自己作为树根
    3.最低开销  cost    一条路径的总带宽    是最好的路径
    4.将最优的路由条目放到路由表中
    八 Link-State data structures:LSA Operation   
    LSU    ----update
    LSDB中不存在相同的lsa信息    对于多个相同的lsa信息    接收序列号码较大的lsa信息    sequence number   类似于 VTP里的配置修订号     越大越新    描述新旧程度
    OSPF 提升 一 - 骡子 - stupidmule@126 的博客

      发送LSU    既支持周期性发送   30分钟一次          lsa老化时间为60分钟    --aging-time

    也支持触发发送
    序列号 四个字节    取值范围从0到4亿     (2的32次方-1)
    最小的序列号位0x80000001        最大的序列号为0x7fffffff
    线性的数字序列    当一台路由器收到最大序列号的lsa后    源路由器向目的路由器再次发送的lsa的序列 号又回到了最小值    如果此时再发送   则目的路由器已有的lsa序列号为最大值   收到最小序列号的lsa 无法更新    此为线性序列号
     
    新方法为环形加线性    (具体看相关资料)
     
    九 OSPF PACKE TYPES
    ospf 报文分类
    a  hello
    b database description dbd
    c link-state request 请求报文   lsr
    d link-state update lsu
    e link-state acknowledgment             lsack   确认报文
     
    详解
    a  hello发送周期分为10s和30s两种
    hello hold的时间为发送时间*4即40s或120s
    b dbd数据库描述报文 包含lsa的报头  即告诉邻居路由器  本地的lsdb中包含哪些lsa信息  
    同步lsdb过程中如果没有此描述可能会发送重复的lsa   造成资源的浪费导致低效
    lsa中除了拓扑或路由信息的载荷外还有lsa的报头也叫lsa的摘要    报头中包含此lsa的标识   从而 避免 发送重复的lsa信息
    c 路由器请求邻居有但是本地没有的lsa   以保证lsdb一致   根据交互的dbd    将没有的lsa的报头放在lsr中 表明需要的lsa  
    d 根据上面的一条 将邻居请求的lsa信息 放在lsu中由本地路由器发送给邻居
    lsu包含完整的lsa信息
    e lsack为确认机制 由ospf定义的确认机制
    ospf定义了两类的确认 一种为显式的确认 另一类为隐式的确认(基于序列号的确认机制)
    前者收到一个报文 针对此报文 生成一个单独的确认报文
    (只有ospf支持隐士确认)后者收到一个报文 使用相同的报文再发送回来 序列号设置为一致 既传输了信息 又做了确认
     
    1.hello报文  不需要确认
    2.dbd报文 需要lsack确认   使用隐式确认   r1---》r2        然后r2用收到的dbd报文和相同的序列号发 给r1
    3.lsr报文 显式确认     r1---》r2       然后r2用lsu做确认返回给r1
    4.lsu报文 用lsack确认   注意lsu包含多条lsa   而lsack是针对lsa的  所以有多少lsa   就会有多少lsack报 文 
    5.lsack报文 不需要确认
    简述就是5确认4       4确认3 3确认2   2确认2本身 1不需要确认
    十 ospf packet header format
    OSPF 提升 一 - 骡子 - stupidmule@126 的博客
      a version     v2应用于ipv4
    v3  可同时用于ipv4和ipv6
    b 对应ospf报文的五种类型  从1到5
    c 报文长度包括ospf报头在内的长度
    d router id  路由器id   1.  手工配置      建议
    2.自动配置为 所有up up 的环回扣中选举最大的ip地址
    3.物理接口最大的ip地址    状态为up  up
     
    e area id 区域id   用于层次化的部署   4字节    可以用阿拉伯数字    也可用点分十进制    必须包含此字段
    f check-sum   校验和
    g authentication type   认证类型   明文或者密文   分三级    0级不认证    1级为明文认证      2为密文认证
    h authentication      秘钥   如果上一个字段是0   即不认证   则此字段无值为空
    i data 报文内容  根据五种类型不同  内容也不同
     
    十一 hello报文   重点
    OSPF 提升 一 - 骡子 - stupidmule@126 的博客
    其中的*号代表两台路由器  此字段需要设置为一致   才能建立邻接关系
      eigrp   hello发送周期取决与带宽    >1.54m    为5s/次        <1.54m   为60s/次
    ospf  hello发送周期取决于 网络类型   而不是带宽   分为10s      和30s
    neighbors 字段存储邻居的router id
    area id 区域id
    router priority MA网段有此概念      点到点网络没有此概念
    DR ip address 描述此MA网段   哪个是DR
    BDR IP address 描述此MA网段   哪个是BDR
    authentication password  认证秘钥
    stub area flag 末节区域标记    ospf的非骨干区域里包括多种区域类型   
    分               为:常规区域       末节区域        完全末节区域         次末节区域       完全次末节区域  
     
     
    十二   邻接关系建立过程
    1.down 初始状态  接口被宣告进ospf    没有发送任何报文
    2.init 通过接口发送一份hello
    3.two-way 通过接口收到一份neighbor字段包含自身rid的hello
    4.exstart 交互3个不带lsa报头的dbd   选择MASTER/SLAVE
    5.exchange 由master发起的带有lsa报头的dbd信息交互
    6.loading 交互lsr   lsu   以及lsack实现lsdb的同步
    7.full 一旦同步 邻接关系到达full     邻接关系建立完成
     
    (1) init------->two-way
     
    OSPF 提升 一 - 骡子 - stupidmule@126 的博客
     
    A发送hello报文   neighbor字段为空        链路状态到达init
            B收到后发送hello报文  neighbor字段包含A的id       
    A收到B发过来的hello报文  链路到达two-way状态   
     
    对于MA网段     进入到two-way阶段   就开始进行DR和BDR的选举
     
    (2) exstart -------》exchange 
    OSPF 提升 一 - 骡子 - stupidmule@126 的博客
      a 开始发送DBD报文       此为建立邻居开始第一个DBD     称为first  dbd     不包含任何的lsa报头 路由器 之间 会双向交互两个到三个DBD  目的是选举一个关系  --------主从关系----- master/slave      用来发起接下来 的DBD的交互
    b DBD采用隐式确认        主从关系选择根据路由器的router id 决定   谁高谁就是主  因此需要交互三个dbd才 能确定主从关系
    在dbd报头中有flag字段   包括三个bit: I     M     M/S   分别代表init      more     master/slave  
    router A发送的第一个DBD:I=1     M=1    M/S=1      即0x7       假设sequence=100    被发送给Router B
    router B收到后比较router id   发现自己更大是   所以发送DBD:I=1    M=1    M/S=1      假设 sequence=200      被发送给router A
    router A收到后  发现B是主   自己是从  同时需要给sequence=200的DBD报文做确认
    所以DBD:I=0    M=1    M/S=0 =自己是从   即0x2        sequence=200    发送给router B
    接下来就由router B带起     DBD的交互   此时DBD会包含lsa的报头
    在DBD中存在一个MTU的字段   不影响主从结果     但是会干扰主从关系的过程   如果MTU不一致   可能会 一致卡在exstart state状态     所以MTU尽量一致    如果不一致需要用高级特性调整   以使邻接关系尽快 建立
    c 下一个exchange state  就是由主路由器发起的带有lsa报头信息的DBD报文的交互过程   用来彼此告诉对方 本地所拥有的lsa信息   一直到协商完毕
    (3)loading state------》full state
    OSPF 提升 一 - 骡子 - stupidmule@126 的博客

      a. 在第2步中 的exchange state状态可能出现的情况  路由器A和B之中的LSDB中的lsa数目可能不相同  由 此导致的互相传输的dbd数量不同    举例导致A传输4个dbd    确认的dbd报文可能只有4个    B传输10个dbd     此 时剩余的6个dbd报文需要用lsack来确认    才会出现loading state之前的lsack的交互    即无法隐式确认时只能显式 确认 dbd同步完毕     

    b. 在loading过程中交互lsr和lsu    一直到lsdb同步
    c. 最后到达full的状态

    实验:
     
    OSPF 提升 一 - 骡子 - stupidmule@126 的博客
     
      同一区域内   r1和r2两个路由器ospf通信    路由器进程号可以不同
    即    A     router ospf 11     
    B router ospf 22
    两个名称不同的进程
    a 有用的show命令
    show  ip ospf interface 
    show IP int brief
    show ip ospf neighbor         其中串口的点到点网段   没有优先级   所以priority=0
    show ip protocols
    b 模拟优先宣告状况     查看邻接关系建立过程
    先关闭serial接口
    再开启debug 命令
    debug   ip ospf packet
    debug   ip ospf  adj       邻接关系状态
     
    c 修改MTU 查看邻接关系状态
    r1#interface serial 1/1
    ip mtu 1492 1492为改后的值 默认为1500
    但是r2的mtu仍然是1500 两端不一致
    然后清理ospf进程
    clear ip ospf process 
    通过show ip ospf neightbor命令查看
    state   字段的值为exstart     卡在了exstart
    可以通过命令无视mtu的设置   
    ip ospf   mtu-ignore     在一端或者两端敲此命令   均能实现
    d 修改hello时间和dead时间
    hold时间随hello的时间的改变而改变 -----ospf可以   但是eigrp不会改变
    在ospf中
    IP ospf hello-interval 12     12为hello的时间
    show ip ospf interface serial1/1   显示  dead时间变为48
      如果时间不一致   则show IP ospf neighbor邻居显示为空    但是状态会停留在init状态
    如果只修改dead时间  只能影响wait时间   与dead时间一致不会影响hello时间   原因是可能除4会出小数
    e 路由
    ospf不自动汇总
    r1#show IP route ospf查看路由条目
    在上图中 r1中的路由表中应该包含r2的环回口路由      r2-r3网段的路由    和r3的环回口路由
    但是在显示结果中    换回口的路由会表现为3.3.3.0/32   掩码为32位   原因是osp会自动将环回口的路由 改变为32位  精确路由条目 而eigrp中不会改变  即为原来设置的3.3.3.3/24   这样针对eigrp可能会 出现路由黑洞  而ospf不会出现    
    1.ospf中命令
    show ip ospf interface loopback0
    显示的环回口的描述显示  as a stub host   当做一个末节主机来处理
    如果想在ospf中变为原来设置的一样   则需要把网络类型修改为点到点类型
    #interface loopback 0
    #ip ospf network point-to-point
    此时不会被当做末节主机处理
    f 在MA网段建立OSPF邻接关系时DR和BDR的选举原则
    先看1.参与该MA网段的路由器接口的OSPF优先级 越高越好 范围0-255,缺省值为1
    再看2.该MA网段所连接的路由器的router id,越高越好
    拥有最好属性的DR 拥有次好属性的是BDR 所有其他的是DROTHERS 选举过程持续时间为40s 取决于wait时间 当邻接关系到达two-way状态时 注意从第一到达two-way状态的路由器宣布 开始DR 和BDR的选举 即从此时开始倒计时  40s或者120s 选出后结果不会改变  
    AAAA 即DR和BDR无法被抢占
    所以在不选DR和BDR的网段 效率更高
    OSPF 提升 一 - 骡子 - stupidmule@126 的博客
      实验验证DR和BDR的选举
    r1   环回口 1.1.1.1       物理口  100.1.1.1    router -id 1.1.1.1
    r2   环回口 2.2.2.2       物理口  100.1.1.2    router -id 2.2.2.2
    以上全部宣告进ospf的进程
    查看命令 show ip ospf neighbor
    状态在2way状态  等待40s DR和BDR才能选出来 再到达exstart状态
    在此例中 r1和r2的接口优先级均为1 所以比较router-id 所以r2的大 所以它是DR r1为BDR
    测试改变接口的优先级 DR能否被抢占
    命令如下
    int fa0/1
    ip ospf priority 10 将路由器接口的优先级改为10
    查看 show ip ospf neighbor
    显示 r2 仍然是DR 所以证明DR选出之后不能改变 BDR无法抢占DR的身份
    测试BDR能否被抢占
    再添加一台路由器 R3
    OSPF 提升 一 - 骡子 - stupidmule@126 的博客
      配置    环回口 3.3.3.3     物理口   100.1.1.3        将接口优先级改为255
    show ip ospf neighbor 查看结果没变化 r1是BDR r2是DR
    r3是DRTOHER
    如果此时r2down掉 则r1变为DR 不会因为r3的优先级高而变为DR r3只能是BDR
    BBBB 得出结论:DR down掉 原来的BDR会立即变为新的DR 而新的BDR由剩下的所 有DROTHERS之间重新选举出来 这叫做二次选举 不需要等待40s的时间
    CCCC DR和BDR属于接口级别的概念 每个MA网段都需要属于自己的DR 和BDR 通过相 同的机制单独选举出来
     
     
    重要的特性: ospf ma网段接口的ospf优先级如果值为0 代表的不是优先级的最小值 而是该接 口没有资格在这个网段参选DR和BDR 只能成为DROTHER
    实验测试 将r1和r2的接口优先级设置为0 看一下只有DR MA网段是否能够正常的运作
    r1#IP ospf priority 0 首先进入接口再打此命令
    r2#IP ospf priority 0
    在r3上 show ip ospf neighbor会显示r1和r2都变为DROTHER
    然后show IP route 查看路由是否有变化 发现一切正常
    证明 一个MA网段中可以只有DR 而没有BDR
    尤其在帧中继中特别有用 ---轴辅型拓扑 hub and spoke 中心节点为DR 不要B DR DR是hub节点 作用收集所有邻居信息再传送到其他邻居 需要连接到所有节点 在 帧中继中只有hub节点连接到所有邻居 spoke节点只能连接到hub 所以只有DR 没有B DR
     
    DDDD 在ethernet环境中建议拥有DR和BDR实现备份 而在FR frame repeater 帧中继环 境中 只能是hub节点称为DR 任何spoke节点都不能称为DR或BDR
    EEEE 在MA网段中 如果 DR 和BDR都没有 用实验检测就是所有的路由器接口优先级都设置为0( 基于DDDD条目) 网段内不会有任何的lsa交互 邻接状态只能到达two-way这一级 也就是没有任何ospf路由 存在。
    FFFF 一台路由器 运行ospf 只要在一个接口开启了ospf进程,则该接口会立即监听发往224.0.0. 5的组播组流量,而仅当一个节点成为DR或者BDR时,该接口才会同时监听发往224.0.0.5和224.0.0.6的组播组 流量 在一个MA网段内,所有路由器发送给DR和BDR的报文的目的地址都是.6 而DR将LSA整合之后就以. .5的组播地址发送给网段内所有其他的路由器。 在点到点网段没有.6的存在 因为没有DR和BDR
    问题    为什么会有.6的组播地址    
    答案:试想如果没有.6的组播地址   只有.5的地址    在一个域内   所有的路由器都监听.5的组播地址    那么每台路由器发送的lsa信息会被其他所有的路由器所接收  加大占用带宽  浪费cpu资源  也就失去了DR和 BDR存在的意义  而如果有.6的存在 所有的DROTHER路由器将LSA信息发网.6的组播地址  只有DR和BDR
    能够收到此LSA信息   减少资源开销    等DR中的LSDB建立完成之后     DR再将所有lsa信息以.5的组播地址发送 出去  DROTHER路由器监听的.5地址会收到此LSA信息   达到同一区域内LSDB同步的目的
  • 相关阅读:
    FirstBlood溢出攻击
    ShellCode
    OD分析-熊猫烧香
    IDA分析-熊猫烧香
    PentestBOX教程
    安全从业人员常用工具指引-freebuf
    安全从业人员常用工具指引
    Python 网络编程
    10个免费的游戏开发引擎
    用树莓派搭建你自己的Web服务器,以及一个可以外网访问的Blog
  • 原文地址:https://www.cnblogs.com/dongguolei/p/7902638.html
Copyright © 2020-2023  润新知