OSPF协议总结
OSPF:开放式最短路径优先协议(Open Shortest Path First)
OSPF概述
版本:V1/V2/V3(V3使用的是IPv6)
属于无类别链路状态路由协议–基于拓扑信息进行收敛
组波更新:224.0.0.5
触发更新 仅对变化量进行更新
周期更新 基于时间周期进行更新—更新量大
若一个协议希望实现增量更新— 仅触发无周期;hello机制(周期保活) ACK确认机制
1.OSPF数据包类型
- OPSF Version:是指OSPF的版本号。v2表示IPv4;v3表示IPv6
- Message Type:指出跟在头部后面的数据包类型
- Packet Length:OSPF数据包的长度,包括数据包头部的长度,以八位组字节计。
- Source OSPF Router:始发路由器的ID
- Area ID:始发数据包的路由所在区域。如果数据包是在一个虚链路上发送的,那么区域ID为0.0.0.0,也就是骨干区域ID,因为虚链路被认为是骨干的一部分。
- Packet Checksum:一个对整个数据包的标准IP校验和。
- Auth Type:正在使用的认证模式
- Auth Data:未完!!!!!!!!!!
ospf跨层封装在IPv4报头,协议号为89;
存在5种不同类型的数据包
类型 | 作用 | |
---|---|---|
Hello包 | 邻居、邻接的发现、建立、周期保活;hello time10s或30s;dead time为hello time 四倍 | 邻居、邻接的发现、建立、周期保活;hello time10s或30s;dead time为hello time 四倍 |
DBD包 | 数据库描述包 (数据库目录) | LSA更新时的主从选举;LSA交互 |
LSR包 | 链路状态请求 | 请求自身缺少的LSA信息 |
LSU包 | 链路状态更新(携带具体的LSA信息) | LSA更新信息(回应对方的LSR的请求) |
LSack包 | 链路状态确认包 | LSA更新的确认回复 |
LSA(链路状态通告):路由或者拓扑信息(在不同条件下产生不同类型的拓扑或路由信息)
hello包
- **网络掩码(Network Mask):**指发送数据包的接口的网络掩码。如果这个掩码和接收该数据包的接口网络掩码不匹配,那么该数据包将被丢弃。(可以确保路由器之间只有他们共享网络的地址精确匹配时才能互相成为邻居)。
- **Hello时间间隔(Hello Interval ):**接口上Hello数据包传送之间的时间间隔,也是一个周期性的时间段。如果接收和发送路由器没有相同的值,就不能建立邻接关系。
- 可选项(Option):未完待续!!!!!!!!!!!
- **路由优先级(Router Priority):**用来做DR和BDR路由器选举。如果该字段为0,则始发路由器没有资格被选成DR和BDR路由器。
- **路由器死亡时间(Router Dead Interval):**始发路由器在宣告邻接路由器无效之前,将要等待从邻接路由器发出的Hello数据包的时长。
- 指定路由器(Designated Router):网络上指定路由器接口的IP地址。注:不是指定路由器的路由器ID。如果没有DR(DR还没有选出或者网络类型不需要DR),那么这个字段设置为0.0.0.0
- **备份路由器(Backup Desinated Router):**网络上备份指定路由器接口的IP地址。没有选出设置为0.0.0.0
- **邻居(Active Neighbor):**是一个递归字段,如果始发路由器在过去的一个Router DeadInterval时间内,从网络上已经收到来自他的某些邻居的有效Hello包,那么将会在这个字段中列出所有这些邻居的RID。
DBD包
(Database Description)数据库描述包
- 接口MTU(Interface MTU):在数据包不分段的情况下,始发路由器接口可以发送的最大IP数据包大小。(华为设备默认不检测MTU值,Cisco默认检测)
- 可选项(option):
- **I位(初始位(initial bit)):**当发送的是一系列数据库描述数据包中的最初的一个数据包,该位设置为1.后续的数据库描述数据包将该位设置为0.
- **M位(后继位(More bit)):**当发送的数据包不是一系列数据库描述数据包的最后一个时,该位设置为1
- MS位(主/从位(Master/Slave bit)):在数据库同步过程中,该位设置为1,用来指明始发数据库描述数据包的路由器是“主”路由器。
- **数据库描述序列号(DD Sequence):**在数据库同步过程中,用来确保路由器能够收到完整的数据库描述数据包序列。这个序列号将由“主”路由器在最初发送的数据库描述数据包中设置一些唯一的数值,后续数据包的序列号将依次增加。
- **LSA头部(LSA Header):**列出了始发路由器的链路状态数据库中部分或全部LSA头部。注:在进行DR/BDR选举的时候不会出现LSA Header
关于DBD的一些问题:
1、 接口MTU,在cisco体系中,邻居间接口的MTU值默认被检测,华为默认不检测;
OSPF协议要求直连接口上邻居间的MTU值必须完成一致;
[r1]interface GigabitEthernet 0/0/1
[r1-GigabitEthernet0/0/1]ospf mtu-enable 开启华为MTU检测
2、 关于DBD的标记位
I 为1标识本地发出的第一个DBD包 M 为1标识不是本地的最后一个DBD包
MS 为1代表主 为0 代表从
3、 使用序列号进行隐性确认 DBD的隐性确认,基于序号进行的,从使用主的序号来对主进行确认
邻接关系建立后,邻居间使用真正DBD来获取对端邻接的LSDB目录,之后使用LSR/LSU/LSack来获取本地未知的LSA信息;生成LSDB—数据库表;
LSR包
链路状态请求数据包
- 链路状态通告类型(Link-state Advertisement Type):LSA类型
- 链路状态ID(link state ID):始发路由器ID
- 通告路由器(advertising router):始发LSA通告的路由器路由器ID
LSU包
链路状态更新数据包
- LSA数量(number of LSAs):这个数据包中包含的LSA数量。
- 链路状态通告(LSA):在OSPF协议的LSA数据包格式中描述的全部LSA。每个更新数据包都可以携带多个LSA。
LSAck包
链路状态确认数据包
被确认的LSA是根据在LSAck包中是否包含包含他的头部兰确认的。所以一个LSAck的组成只有OSPF包头和LSA头部。
2.OSPF状态机
(标准7个,还存在第八个)
-
Down:一旦本地发出Hello包,进入下一状态机
-
Init初始化:接收到的Hello包中若存在本地RID,那么进入下一状态
-
2way双向通讯:邻居关系建立的标志
条件:
1、点到点网络类型直接进入下一状态
2、MA网络,将进行DR/BDR选举(40s),非DR/BDR间不得进入下一状态
-
**Exstart预启动:**使用未携带目录信息的DBD包,进行主从关系选举,RID数值大为主,优先进入下一状态。
-
Exchange准交换:使用真正的DBD包进行数据库目录的交互,需要ack进行确认。
-
**Loading加载:**通过对端的数据库目录比对本地,就本地未知的LSA信息,使用LSR来进行请求,对端使用LSU进行应答,最终需要ack进行确认。
-
**FUll转发:**邻接关系建立的标志。
3.OSPF工作过程
启动OSPF协议后,本地基于所有激活接口使用组播224.0.0.5进行周期的hello收发;接收到的hello包若存在本地的RID,那么建立邻居,生成邻居表。
表中所有邻居存在条件,条件匹配失败将停留在邻居关系,仅hello周期保活即可。;条件匹配成功后,需要进一步建立为邻接关系邻接关系间,需要使用DBD包来进行数据库目录共享,使用LSR/LSU/LSACK来获取本地未知的LSA信息,补全本地的LSDB(链路状态数据库—所有LSA的集合)–生成数据表;
数据库同步完成后,本地其余SFP算法,基于数据库生成有向图,合成最短路径树,最终将所有未知网段的路由加载于本地的路由表中;–收敛完成,hello包周期保活,每30min再周期比对一次数据库目录;
网络结构突变:
1、 新增网段 – 直连新增网段的设备,使用更新包告知本地所有邻接,之后扩散到全网,需要ACK确认;
2、 断开网段-直连断开网段的设备,使用更新包告知本地所有邻接,之后扩散到全网,需要ACK确认;
3、 无法沟通 — dead time到时间时,断开邻居,删除邻居;且通过该邻接获取的LSA将不再被使用;
4.OSPF接口网络类型
OSPF协议在不同网络类型的接口工作方式不同。
网络类型 | OSPF工作方式 |
---|---|
loopback | 华为虽然标记为点到点,实际为环回的特殊工作,无hello包收发,直接学习32位主机路由 |
点到点 | 10s hello time;直接邻接关系,不进行DR选举;(串线上的PPP/HDLC;普通GRE) |
BMA(以太网) | broadcast;10s hello time;进行DR/BDR选举,最终建立邻接关系 |
NBMA(MGRE) | 默认为点到点的工作方式,该方式只能建立一个邻居;故在NMBA环境下将无法和所有节点建立关系; |
NBMA拓扑结构:
1、 星型—中心到站点
2、 部分网状结构,除去星型
3、 全连网状结构
NBMA不能和所有节点建立邻接关系解决方法:修改接口类型为broadcast
[r1]interface Tunnel 0/0/0
[r1-Tunnel0/0/0]ospf network-type broadcast 该网段所有接口修改为broadcast;
注:
1.若一端为点到点,另一端为broadcast,由于hello time均为10s,将建立邻居关系,但无法正常工作;因此一旦修改任何一个的ospf类型,就必须保障该网段所有节点类型一致;
2.在星型和部分网状结构中,若使用broadcast工作方式,必须考虑dr的位置;建议直接固定放置于中心站点; 若为全连网状结构,可以不用dr位置;
5.OSPF的DR选举
邻居关系成为邻接关系的条件:
在MA网络中,由于节点数量不限制,故俩俩间均为邻居,若不加管制将出现大量的重复更新;距离矢量协议(RIP/EIGRP)均存在水平分割机制来解决;但OSPF协议无法使用接口水平分割(从此口进不从此口出),因此ospf选择了DR/BDR选举方式来解决,在MA网段中存在一个DR和一个DBR,其他设备非DR/BDR,非DR/BDR之间不建立邻接关系,仅维持邻居关系,避免重复更新。
选举规则:
1、 比较接口优先级,0-255默认为1;数值大优 为0标识不参选
2、 若接口优先级一致,比较参选设备的RID,数值大优;
[r1]interface GigabitEthernet 0/0/0
[r1-GigabitEthernet0/0/0]ospf dr-priority ?
INTEGER<0-255> Router priority value
6.OSPF基础配置
[r1]ospf 1 router-id 1.1.1.1
1.启动时需要定义进程号,仅具有本地意义;
2.同时建议配置RID,ipv4地址编写规则;必须全网唯一;
3.手工---》环回最大数值-》物理接口最大数值
[r1-ospf-1]
宣告:
1、激活—被选中接口可以收发ospf 的数据包
2、传递接口信息—被选中接口的信息将被共享给本地的其他邻接 3、区域划分
[r1-ospf-1]area 0
[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
[r1-ospf-1-area-0.0.0.0]network 12.1.1.1 0.0.0.255
区域划分规则:
1、 星型结构拓扑 – 区域0 为骨干,大于0为非骨干;非骨干必须连接骨干区域;
2、 区域间必须存在ARB—区域边界路由器
启动配置完成后,邻居间收发hello包建立邻居关系,生成邻居表:
Hello包中的内容
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sAWzwWax-1601902102827)(file:///C:/Users/Lenovo/AppData/Local/Temp/msohtmlclip1/01/clip_image002.png)]
邻居间hello包中必须完全一致的参数;否则无法建立邻居关系;
1、hello、dead time 2、区域ID (ABR) 3、认证 4、末梢区域标记(特殊区域)
5、在华为设备的hello包中,还存在本地接口ip地址的的子网掩码,邻居间接口掩码不一致将无法建立邻居关系
[r2]display ospf peer 查看邻居关系
[r2]display ospf peer brief 摘要表格
邻居关系建立后,邻居间基于条件决定是否建立邻接关系;邻接关系间将使用DBD包来沟通;
优先级为10;cost的参考带宽为100M; COST=参考带宽/接口带宽
Ospf选择cost值之和最小的路径为最短路径;若接口带宽大于参考带宽,cost值为1,将可能导致选路不佳,建议修改参考带宽,修改时全网设备必须修改为一致;
[r1]ospf 1
[r1-ospf-1]bandwidth-reference ?
INTEGER<1-2147483648> The reference bandwidth (Mbits/s)
[r1-ospf-1]bandwidth-reference 1000
7.OSPF不规则区域
1.远离骨干的非骨干区域
2.不连续骨干区域
注:一台ABR设备若未连接到骨干区域,将被定义为非法ABR,不得进行区域间信息共享;
解决方案:
1、 Tunnel 在非法ABR与合法ABR间建立一条隧道,之后将该隧道链路宣告于OSPF协议中;
在OSPF协议,若接收到去往相同目标的多条路由;先优选从骨干区域传递过来的路由;
若所有路由器均基于骨干区域,或均基于非骨干区域传递,进行cost值对比;
缺点:
-
选路不佳
-
周期性的信息对中间穿越的区域存在资源占用
2、 OSPF的虚链路
合法的ABR对非法ABR进行授权,使得非法ABR可以进行区域间路由信息共享;
优点:由于没有新增链路,故不存在选路的问题;正常选路
缺点:
cisco为了避免周期信息对中间区域的影响,在虚链路上关闭了周期行为—失去可靠性
华为选择保持周期行为 —继续对中间区域资源占用
[r2]ospf 1
[r2-ospf-1]area 1 两台ABR共同存在的区域
[r2-ospf-1-area-0.0.0.1]vlink-peer 4.4.4.4 对端ABR设备的RID;
[r2-ospf-1]display ospf vlink
3、 多进程双向重发布(推荐)
一台设备运行所有路由协议进程,不同进程存在独立的数据库,相互间不进行共享;
仅将计算所得路由加载于同一张路由表中;
将不规则部分的区域宣告到其他的ospf进程中,之后使用重发布机制进行路由共享;
避免了周期信息和选路问题;
[r2]ospf 1
[r2-ospf-1]import-route ospf 2
[r2-ospf-1]q
[r2]ospf 2
[r2-ospf-2]import-route ospf 1