OSPF概要
ospfv2主要针对ipv4使用,v3针对ipv6使用。ospf通过IP报文承载。
OSPF的三张表
邻居表、LSDB(链路状态表)、路由表。
OSPF报文类型
1.Hello报文
定期发送Hello报文确认邻居状态,在P2P或NMA(或称为Broadcast)网络中,更新周期为10s,在P2MP和NBMA网络中更新周期为30s。路由失效时间一般为Hello interval 的4倍。若在路由失效时间后未收到邻居的Hello报文,在MA网络中,路由器则会通过组播(224.0.0.6)通知DR,再由DR通过组播(224.0.0.5)告知所有路由链路发生变化。
DR与BDR的选举也是通过Hello报文完成的,在MA网络中,可以没有BDR,但必须有DR。所有的DRother只与DR/BDR建立临接关系,DRother之间保持在2-way状态,即邻居状态。Hello报文中包含子网掩码、hello interval、Router dead interval等参数。在MA网络中,邻居的建立首先会检查两直连接口的子网掩码是否一致,而在其他网络中不会检查,检查之后,还会对hello interval、路由失效时间进行一致性检查。
2.DD报文
DD报文中包含一些LSA头部信息,方便确认需要的LSA信息。DD报文的交互,确认了Master/Slaver关系,router-ID大的便成为Master,Slaver的***必须同Master的一致。
3.LSR报文
4.LSU报文(LSU中包含完整的LSA信息。)
5.LSAck报文
8种邻居状态
Down:接口关闭状态
Init:收到Hello报文,但没有自身的Router-ID。即发现邻居的状态。
Attempt:此状态只在NBMA网络中出现,由于NBMA网络不支持广播,需要手动启动接口的ospf。
2-Way:收到Hello报文,发现自身的Router-ID,即邻居已发现自己。在此状态中开始选举DR和BDR。
Exstart:为交互DD报文,首先要确认主从关系,第一条DD报文,I为置为1,其余为0,若还有DD报文,则M为1。主的MS为1.
Exchange:开始交换DD消息,确认需要的LSA信息。
Loading:通过发送LSR请求相应的LSA信息,对方通过LSU回复,并使用LSAck确认这些LSA。一个LSAck可确认多个LSU信息,因此不必每次收到LSU就立即发送LSAck信息。
Full:当双方LSDB信息相同时,即网络达到收敛,此时双方建立邻接关系。
网络类型
P2P网络:当链路层协议为PPP、HDLC和LAPB时,网络类型缺省为P2P。在该类型的网络中,以组播形式(224.0.0.5)发送ospf协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。
BMA(广播型多路访问)或Broadcast网络:当链路层协议为Ethernet、FDDI时,网路缺省类型为BMA。以广播发送hello、LSU、LSAck报文,以单播发送DD、LSR报文。224.0.0.5的组播地址为OSPF设备的预留IP组播地址;224.0.0.6的组播地址为OSPF DR/BDR( Backup Designated Router)的预留IP组播地址。以单播形式发送DD报文和LSR报文。
NBMA网络:当链路层协议为帧中继、X.25,网络类型缺省为NBMA。NBMA网络不支持广播,因此ospf报文全以单播形式发送。
P2MP网络:P2MP网络可以看作是多条P2P链路一端捆绑而成的网络。没有任何一种协议缺省为P2MP,P2MP网络是通过手动设置而成,一般是将非全邻接状态的NBMA网络配置成P2MP网络。以组播(224.0.0.5)发送hello报文,以单播形式发送其他报文。
DR与BDR的选举:
1.首先看优先级,优先级大的为DR
2.优先级相同时,看Router-ID。ospf协议DR不具备抢占性。
路由类型:
内部路由:所有接口都属于同一区域。
ABR(区域边界路由):连接一个或多个区域,必定有一个接口属于骨干区域,位于区域边界的路由。但注意,并非连接着多个区域的路由都是ABR。
BR(骨干路由):位于骨干区域的路由。
ASBR(AS区域边界路由):引入外部区域外部路由的路由都可以是ASBR。
LSA类型
Type-1:Router LSA
所有的路由器都会产生,用于描述直连接口链路状态信息和cost值,只在产生该LSA接口区域内泛洪。
链路状态ID为产生此LSA的Router-ID。
主要参数:不含网络掩码。
V=1,表示Virtual Link的端点。
E=1,表示ASBR。
B=1,表示边界路由。
链路类型 | 链路ID(Link I | 链路数据(Link Data) |
---|---|---|
P2P(点对点) | 邻居的Router-ID | 产生此LSA接口的IP地址 |
Transnet(传输网络) |
DR接口的IP地址 |
产生此LSA接口的IP地址 |
Stub(末梢网络) | 目的网络的IP地址 | 目的网络的网络掩码 |
Virtual Link(虚连接) | 邻居的Router-ID | 产生此LSA接口的IP地 |
由上表,我们可以发现:当Link ID=Link Data时,可以确定此路由为DR。但此结论反过来不成立。
Type-2:Network LSA
由DR产生,用于通告MA网络与DR直连路由的Router-ID。泛洪范围:产生此LSA的接口区域。
链路状态ID为DR接口的IP地址。
主要参数:网络掩码(相连路由的子网掩码),相连路由router-ID。
Type-1 和Type-2 LSA统称为域内路由。
Type-3:Network Summary LSA
由ABR产生,描述到达某个区域目标网络的路由,泛洪范围:产生此LSA接口的区域。Type-3 LSA为域间路由。
链路状态ID为目标网络IP地址。
主要参数:网络掩码(目标网络)和度量值(为ABR到达目标网络的cost值)。
Type-4:ASBR Summary LSA
由ASBR产生,描述外部路由的出口,相当于一条到达ASBR的“主机路由”。泛洪范围:产生此LSA接口的区域。
链路状态ID为ASBR的Router-ID。
主要参数:网路掩码全0,度量值(ASBR到达外部路由的cost)。
Type-5:External LSA
由ASBR产生,描述外部路由信息。泛洪范围:整个OSPF区域。
链路状态ID为外部路由IP地址。
主要参数:
网络掩码:外部路由网络掩码。
E位,当E=0时,Metric-type-1,cost为各路由cost之和。
当E=1时,Metrci-type-2,cost为ASBR到达外部路由网络的cost。
外部Tos。
Type-7:NSSA LSA
由ASBR产生,该LSA只作用域NSSA区域,报文格式同Type-5。
Type-7不能进入area0区域,但其可被ABR转换为Type-5之后,可被引入area0。
OSPF区域类型
1.骨干区域:一个OSPF区域有且仅有一个Area0。
2.常规区域:OSPF区域缺省为常规区域,Area0为特殊的常规区域。
3.末梢区域(Stub)
一个区域可被设置为模式区域的条件:
(1).当一个常规区域只有单一的出口时;
(2).区域内的路由不需要更具特定的外部路由离开区域时;
上述条件满足其一时,即可被设置为Stub区域。
Stub区域的特点:更具其字面意思,该区域为网络末梢,即不需要知道外部路由,只需由一条通往外部的默认路由即可(Type-3 LSA缺省路由)。即不允许Type-5 LSA进入该区域,由于Type-5 LSA不能进入该区域,Type-4 LSA也就没必要进入该区域了。Stub区域允许少量域间路由进入,如相邻区域的Type-3LSA。而Totally Stub不允许域间路由(除Type-3 LSA缺省路由之外的任何域间路由)。虚连接不能跨越Stub区域。
4.非完全末梢区域(NSSA)
在Stub区域的基础上,允许少量外部路由的进入,即Type-7被允许在该区域内泛洪。而Totally NSSA则同Totally Stub一样,除Type-3缺省路由之外的域间路由都不被允许。虚连接不能跨越NSSA区域。
Type-1 | Type-2 | Type-3 | Type-4 | Type-5 | Type-7 | |
常规区域 | √ | √ | √ | √ | √ | × |
Stub区域 | √ | √ | √ | × | × | × |
Totally Stub区域 | √ | √ | × | × | × | × |
NSSA区域 | √ | √ | √ | × | × | √ |
Totally NSSA区域 | √ | √ | × | × | × | √ |
LSA新旧的判断
OSPF采用链路状态类型、链路状态ID、通告路由来标识一个LSA,这也是LSA头部的重要字段。当同一时间网络出现同一个LSA时,则需要判断此LSA的新旧。LSA定期广播,广播周期为1800s,MAXage为3600s。Maxdiffer为15min。
1.看***大的则更新
2.***相同时,看校验和,校验和大的更新
3.***和校验和都相同时,看老化时间是否被设置为Maxage。设置为Maxage的更新。
4.***和校验和相同,无老化时间设为Maxage,则看老化时间之差,老化时间之差大于Max differ,则两个LSA属于不同实例,老化时间越小越新。老化时间之差小于Max differ,相同实例,任选一条LSA作为最新LSA。
路由汇总
1.在ABR上进行路由汇总
2.在ASBR上进行路由汇总
默认路由
1.在常规区域发布默认路由
2.在Stub区域发布默认路由
3.在Totally Stub区域发布默认路由
4.在NSSA区域发布默认路由
5.在Totally NSSA区域发布默认路由
OSPF认证
OSPF支持两种验证方式:区域验证方式和接口验证方式,缺省时接口验证方式优先。
三种认证方法:
1.空认证(认证类型为0)
不做认证,但还是会检查校验和。
2.简单口令认证(也称明文认证)(认证类型为1)
3.密文口令认证(认证类型为2)
加密算法MD5,双方的Key-ID必须保持一致。
FA(转发地址)
当满足以下所有条件时,FA字段才允许被修改为非0
1.引入外部路由的ASBR的外部路由接口上**了OSPF
2.该接口没有被配置为被动端口(Silent-interface)
3.接口类型为Broadcast或NBMA
4.接口的IP地址落在OSPF协议配置的network允许范围
OSPF防环机制
1.区域内防环机制
每个路由通过Type-1、Type-2 LSA,使用SPF得到以自己为中心的最短无环路径。
2.区域间防护机制
(1)OSPF要求所有非骨干区域都必须与Area0直连,区域间路由必须由Area0中转
(2)ABR从非骨干区域收到的Type-3不能用于区域间的计算
(3)ABR只能将自己到达所接区域内部路由注入骨干区域(区域间路由则不被允许),另外可以将其到达所连接区域的区域内部路由及到达其他区域的区域路由注入非骨干区域
(4)ABR不会将描述到达某个区域内网络路由的Type-3LSA在注入回该区域
3.外部路由防环
依赖Type-1,Type-2,Type-4的防环机制
OSPF路由类型及优先级
区域内路由(Type-1,Type-2)>区域间路由(Type-3)>Metric-Type-1>Metric-Type-2
路由选择先看优先级在看cost