0x0 WHY OSPF?

RIP面对越来越复杂的网络已经不适用了

0x0.1 RIP的缺陷

  • 距离矢量的路由选择协议,衡量标准为跳数,并非带宽
  • 最大跳数为16,局域网的范围太小
  • 收敛慢
  • 更新发送全部路由器的浪费网络资源
  • RIP路由学习不可靠,RIP为传言路由,不考虑路由是否正确
  • 容易产生环路,解决环路的方法治标不治本

0x0.2 OSPF的优点

  • 链路状态路由选择协议,基于带宽
  • 采用的SPF算法,从算法上保证无环
  • OSPF通过邻居关系来维护路由
  • OSPF路由更新效率高,网络收敛快,适用于大中型网络
  • OSPF先收集网络拓扑信息,在自己根据拓扑信息进行路由计算
  • OSPF可靠,虽然OSPF基于IP,但是OSPF有自己的一套确认机制

0x1 HOW OSPF?

0x1.1 OSPF的工作框架

  • 建立邻居;通过hello报文探测发现邻居——>交换hello报文
  • 发起路由;
    1. 描述直连网段和直连拓扑(LS:链路状态)
    2. 描述成LSA(链路状态通告,按一定格式封装后的LS)(有6种LSA)
    3. 把LSA存放到自己的LSDB(链路状态数据库:OSPF画的拓扑图,用于存储着自己收集到的全部LSA)
  • 传播路由;LSA洪范(通过LSR LSU LSACK洪范)——>区域内路由器的LSDB达到一致
  • 计算路由;以自己为根进行SPF计算,算出最优路由(算出OSPF路由表)
    1. 以自己为根
    2. 每个OSPF路由器单独进行SPF计算

0x1.2 OSPF的四张表

  • 邻居表:记录有哪些邻居,自己和邻居的状态 ——–>对于工作框架的建立邻居
    • 路由计算完毕后;OSPF只需要维护邻居关系;就能维护路由
  • LSDB:存储自己收集到的全部LSA ——–> 对应工作模型的发起路由和传播路由
  • OSPF路由表:在LSDB收集到了整个区域的LSA后,进行计算出来的路由,会被存进OSPF路由表 ——–> 对于工作框架的计算路由
  • 全局路由表;如字面

0x1.3 OSPF的基本概念

  • Router ID
    • 用来做标识作用
    • 要求独一无二 类似IP地址,但不是IP地址(RID只和RID冲突、IP和IP冲突)
    • 手工配置,可以自动生成(要么全部手工,要么全部自动)
      • 自动生成顺序
        1. 选取最大的Loopback接口(环回接口在路由器本地不能接网线,不能绑定vlan,无法当网关,只用来测试连通性)
        2. 选取最大的IP地址(要求接口UP)

0x1.4 OSPF的网络类型

OSPF是一种动态路由协议、动态的学习路由

  • 局域网;使用以太网技术 ethernet,
  • 广域网;帧中继网络 P2MP PPP、HDLC

    不同的网络都需要学习路由,所以OSPF为自己在不同的网络类型种,设计了不同工作方式的OSPF

  • 数据链路层不一样,默认用的OSPF类型不一样
    • 广播多路访问Broadcast型OSPF——->以太网技术(可以是点到点,也可以是多路) 224.0.0.5和224.0.0.6
    • P2P型OSPF——>PPP HDLC(点到点) 只用224.0.0.5

P2P最多只能建立一个邻居 Broadcast每个路由器可能建立多个邻居

0x1.5 OSPF的五种报文

  1. HELLO;建立并且维护邻居关系,比较HELLO包判断能否建立邻居(周期发送)
  2. DD;数据库内容汇总(类似目录,描述整个LSDB的汇总信息)
    • 收到DD报文后,判断自己需要哪些LSA
  3. LSR;请求自己需要的完整的LSA(只携带LSA的头部信息)
  4. LSU;收到了LSR后,发送响应LSU报文,携带对方需要的完整的LSA (携带LSU)
  5. LSAck;收到了LSU后,回复LSACK作为确认

OSPF被IP封装,IP不可靠,OSPF需要保证自己的可靠性,所以有确认机制(显示确认机制LSAck,隐式确认机制DD、LSR、LSU)
详情请见OSPF报文格式详解

0x1.6 OSPF的DR/BDR的选举

  • 为什么选DR?
    • 在广播多路访问中减少建立邻接关系的数量,从而节省开销
  • P2P需要选DR吗?
    • 不需要,P2P对端只有1台机器,没有多路型的拓扑 DR;类似班长 BDR;类似副班长(DR的备份)
  • 选举方式
    1. 比较Hello报文中携带的优先级 越高越好
    2. 比较Router ID 越大越好 选举完成后采用不抢占的方式——>DR、BDR选举完毕后,就算加入了优先级更高的路由器,也不会立刻成为DR
  • 上位过程
    • DR down后 BDR上位 新加入的优先级高的路由器被指定位BDR

what OSPF?

  • OSPF是一种典型的链路状态(LS)的路由协议,是工作在网络层用来动动态学习路由表,指导IP报文转发一种协议为什么工作在网络层