OSPF协议:

ospf:开放式最短路径优先协议(Open Shortest Path First)

一、基本概念:

  • 是携带真实掩码(无类别链路状态IGP协议);
  • 周期更新(30min) + 触发更新 ---- (在RIP中讲过,不懂的小伙伴可以去RIP篇看看);
  • 在中大型网络中,需要结构化部署(划分区域,合理的 IP地址规划;区域内部传拓扑,区域之间传路由),因为此协议是链路状态协议,更新量随着网络的扩大,指数型的上升;
  • 优先级:10(华为);
  • 使用组播更新:
  • 224.0.0.5(所有OSPF路由器)
  • 224.0.0.6(一个MA网络中的DR/BDR接收的信息地址)

二、OSPF 的5种数据包:

  • Hello包:
  • 邻居的发现,关系的建立;
  • 周期(10s)的保活;
  • 携带Router-id(全网唯一,标识路由器的身份32位二进制组成,由点分十进制形式表示);
  • DBD包:(DB Description)
  • 数据库(拓扑)的描述;
  • 内部包含了所有的拓扑的目录信息;
  • LSR包:(Link State Request)
  • 链路状态的请求;
  • 请求获取未知的链路信息;
  • LSU包:(LS Update Packet)
  • 链路状态的更新;
  • 携带真正的LSA信息的数据包;
  • LSAck包: 链路状态的确认;

补充:

  • lsa:是一种链路状态,具体一条一条的路由信息或拓扑信息;但它不是一个包,是被LSU包携带的;
  • lsdb:链路状态数据库 ---- 所有 lsa 的集合;

三、OSPF 的7种状态机:

  • Down:关闭状态 ---- 一旦启动OSPF协议后,则发出Hello报文,进入下一个状态;
  • Init:初始化状态 ---- 收到的Hello报文中包含本地的Router-ID时,进入下一状态;
  • Two-way:双向通信 ---- 邻居关系建立的标志;

    条件匹配: 匹配成功进入下一状态,匹配失败,则停留在邻居关系
  • Exstart:预启动状态 ---- 使用不携带信息的DBD包,进行主从关系的选举,Router-ID大的为主,优先进入下一个状态,解决了目录共享时的无序;
  • Exchange:准交换状态 ---- 使用携带了目录信息的DBD包,共享本地的数据库目录;
  • Loading:加载状态 ---- 查看完邻接的 DBD 信息后,对比本地,然后基于本地的 lsa(链路状态)进行查询、lsr 向对端查询、对端使用 LSU 来传输这些 LSA 信息,获取完整的拓扑信息;
  • Full:是邻接关系建立的标志,意味着邻接间的数据库同步;

ossempost优先级 ospf优先级_ospf

四、OSPF 的工作过程:

  • 启动配置完成后,邻居间开始收发 hello 包;hello 包中将携带本地及本地所有已知邻居的 Router-ID;之后生成邻居表;邻居间需要关注是否可以成为邻接的条件;若不能建立为邻接,将保持为邻居关系,仅 hello 包周期保活即可;
  • 若可以建立邻接关系;将使用 DBD进行本地数据库日录的对比;之后基于对比的结果,使用 LSR/LSU/LSack 来获取本地未知的 LSA 信息;使邻接关系间数据库(LSDB)完成同步(一致),生成数据库表;
  • 之后本地基于LSDB,使用SPF算法,生成有向图 ==> 最短路径树 ==> 计算本地到达所有未知网段的最短路径,将其加载到本地路由表中;收敛完成;
  • 收敛完成后,邻居和邻接关系间均 hello 每10s 保活;每30min 一次邻接关系间周期数据库比对,保障一致;

五、OSPF 的基础配置:

  • 宣告:
  • 激活,可以手法 ospf 的信息;
  • 被选中接口的拓扑信息,可以共享给邻接;
  • 区域划分;
  • 区域划分的规则:
  • 必须是星形结构,编号为 0 的骨干区域(中心),大于0为非骨干区域(分支),非骨干区域必须直连骨干区域;
  • 必须存在 ABR ---- 区域边界路由器,两个区域间互联的设备;
  • 反掩码: 32位二进制,使用点分十进制表示,由连续的0和连续的1组成,0表示IP的对应位不变,1表示IP对应位可变;
//启动OSPF进程1,并配置rid为1.1.1.1如果不进行手工配置RID,最大环回IP地址>最大物理接口IP地址
[r1]ospf 1 router-id 1.1.1.1 
[r1-ospf-1]area 0                                       //进入骨干区域
[r1-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255      //宣告,使用反掩码的形式宣告;
[r1-ospf-1-area-0.0.0.0]network 12.1.1.1 0.0.0.0
[r1-ospf-1-area-0.0.0.0]network 0.0.0.0 255.255.255.255
  • 启动配置完成后,邻居间收发 Hello 包,建立邻居关系,生成邻居表
[r1]display ospf peer //查看邻居表
[r1]display ospf peer brief //查看邻居简表
  • 邻居关系建立后,关注条件;匹配失败,保持为邻居关系,仅 hello 包周期保活;匹配成功可以建立邻接关系;邻接关系间,将使用 DBD/LSR/LSU/LSack 来获取本地未知的 LSA 信息; 完善本地的LSDB(数据库表);
[r1]display ospf lsdb              //查看数据库简表
  • 当数据库同步完成后;本地基于SPF算法,将数据库转换为有向图,再将有向图转换为树型结构;之后基于树形结构,以本地为起到到达所有未知网段的最短路径,加载到路由表中;
[r1]display ip routing-table protocol ospf    //查看路由表

六、OSPF 的扩展配置:

(1) DR/BDR选举:

邻居成为邻接关系的条件,与网络类型有关;

  • 网络类型:
  • 点到点 ---- 在一个网段内只能存在两个节点 ---- (串线链路)
  • MA ---- 多路访问 ---- 在一个网段内的节点数量不限制;不是当下连接了几个节点;而是该网络类型允许最终连接多个节点;---- (以太网)
  • 点到点网络邻居关系直接成为邻接关系;
  • 在 MA 网络中,将进行 DR/BDR 选举;
  • 在一个网段中仅 DR/BDR 与其他路由器为邻接关系,非 DR/BDR 之间是邻居关系;
  • 选举规则:
  • 先比较该网段所有参选设备接口的优先级,越大越优;默认优先级为1;取值范围 0-255,0标识不参选
  • 若所有参选者优先级相同;比较参选设备的RID,数值大的优;
  • 干涉选举:
  • DR优先级修改为最大,BDR次大;其他设备修改为0;
  • DR优先级最大,BDR次大 ---- 切记 OSPF 的选举是非抢占性的;故在修改完优先级后需要所有路由器重启OSPF进程;
[r2]interface GigabitEthernet 0/0/0
[r2-GigabitEthernet0/0/0]ospf dr-priority 3修改接口优先级
<r1>reset ospf process     //重启ospf进程
Warning: The OSPF process will be reset. Continue? [Y/N]:y

(2)区域(手工)汇总:

  • OSPF协议不支持接口汇总;
  • 只能在ABR上将 A区域的拓扑计算所得路由共享给B区域时进行汇总;
[r2-ospf-1-area-0.0.0.0]abr-summary 1.1.0.0 255.252.0.0

R为一台连接区域О和其他区域的ABR;以上操作是,R2将通过区域0学习到的拓扑计算所得的路由,传递给其他区域时进行汇总,汇总网段1.1.0.0/22;

(3)被动(沉默)接口:

  • 仅接受,不发送路由协议信息;
  • 只能用于连接用户终端的接口;
  • 不能用于直连路由器邻居间的接口,否则建立邻居关系;
[r1-ofps-1]silent-interface GigabitEthernet 0/0/0

(4)接口认证:

  • 在直连邻居或邻接的接口上配置,保障更新的安全
  • 模式、编号、密码要求邻居间一致
[r1-GigabitEthernet0/0/1]ospf authentication-mode md5 1 cipher 123456

(5)加快收敛:

  • 邻居间计时器:
  • 10s hello time,40s dead time(4倍的 hello 时间);
  • 邻居间,修改本端的 hello time,本端的dead time自动4被关系匹配,但 ospf 中邻居间的hello time和 dead time必须完全一致,否则无法建立邻居关系;
[r1-GigabitEthernet0/0/0]ospf timer hello 5

(6)缺省路由:

  • 在边界路由器上定义缺省源头信息后,将向内网发送缺省路由;
  • 内部路由器将自动生成缺省路由指向边界路由器的方向;
[r1-ofps-1]default-route-advertise always