HELLO ----- 用于邻居的发现,建立,保活(10s),里面含有router id,这个是唯一的,用于路由器建立邻居关系所用的身份标识。
DBD ---- 数据库描述包 ----里面包含了数据库目录信息(LSA的目录信息)
LSR ---- 链路状态请求
LSU ---- 链路状态更新 ---- 里面携带各种LSA(里面携带真正的链路拓扑)
LSack ----- 链路状态确认
1、DOWN:本地一旦发出hello包,进入下一状态
2、INit 初始化:本地接收到的hello包中若存在本地RID(router-ID),进入下一状态(和对方一起进入)
3、two-way 双向通信:邻居关系建立的标志。
条件匹配:点到点网络直接进入下一状态;MA网络将进行DR/BDR选举(40s)(目的是为了消除重复更新),非DR/BDR间不能进入下一个状态;
4、Exstart预启动:双方使用的是类hello包的DBD包进行主从关系的选举,RID数值大为主(这里比较的Router id的大小),主优先进入下一状态。若MTU不一样的话,就停留在这个状态,MTU在OSI中是2层或3层 2层的大于3层。
注意:这里使用假的DBD包进行主从选举时,证明条件匹配成功,开始建立邻接关系。
5、Exchange 准交换:这时候使用真正的DBD进行数据库目录的共享,需要ACK(因为IP协议是不可靠的的)
6、Loading 加载:使用LSR/LSU/LSack来获取未知的LSA信息;
7、Full 转发:邻接关系建立的标志;
将上述5种基本数据包和7种装态连接起来,就是ospf的工作过程了,也可用邻居表、路由表、数据表这三张表来说明ospf的工作过程:
1、启动完协议后(down后),本地使用组播地址224.0.0.5收发OSPF的hello包,若收到的hello包中携带了本地的RID之后,邻居关系建立,生成邻居表;
2、此时进行条件匹配,匹配失败将维持邻居关系,仅hello包10s周期保活即可;匹配成功者间可以建立邻接关系,邻居间使用DBD进行数据库目录的比对;之后使用LSR查询目录中未知的LSA信息,对端使用LSU来携带传递LSA,最终需要LSack进行接收确认;当本地收集到区域内所有设备的LSA后,生成LSDB—链路状态数据库表;
3、LSDB建立完成后,本地基于SPF选路规则,计算本地到达所有未知网段的最短路径,然后将其加载到路由表中;完成收敛。
4、收敛完成后,使用hello包10s周期保活以及30min周期的DBD比对(30min的周期更新为了弥补触发更新,这里使用的是正真的DBD),若不一致,将使用LSR/LSA/LSack来重新获取。
每一台路由器都会产生 1 类 LSA 通告。这个最基本的 LSA 通告列出了路由器所有的链路或接口,并指明了它们的状态和沿每条链路方向出站的代价,以及该链路上所有已知的 OSPF 邻居;另外,1 类 LSA 同时也指出了路由器是不是 ABR 或 ASBR 。这些 LSA 通告只会在始发它们的区域内部进行泛洪扩散。可以通过命令 show ip ospf database router 可以查看数据库中列出的所有路由器 LSA 通告。
2 类 LSA 是 DR 为区域中每个中转的广播网络或 NBMA 网络生成的。中转网络至少与两台 OSPF 路由器直接相连,诸如以太网等多路访问网络就属于中转网络。2 类 LSA 列出了构成中转网络的所有路由器(包括 DR 本身)和链路的子网掩码。中转链路的 DR 负责通告 2 类 LSA ,2 类 LSA 随后被扩散到区域内所有的路由器,2 类 LSA 不会跨越区域边界进行传播(如下图所示)。其链路状态 ID 为通告这个 2 类 LSA 的 DR 的 IP 接口地址。使用命令 show ip ospf database network 可以查看网络 LSA 通告的信息。请注意,和路由器 LSA 不同,网络 LSA 中没有度量字段。
3 类 LSA 由 ABR 生成,它将一个区域内的网络通告给 OSPF 自治系统中的其他区域( 1 类和 2 类 LSA 是被限制在区域内的)。如下图所示,ABR 从区域内的其他路由器那里收到 1 类 LSA 后,向外发送 3 类 LSA ,以便将通过 1 类 LSA 获悉的网络通告给其他区域。3 类 LSA 只在一个区域内扩散,但 ABR 重新生成 3 类 LSA 以便将其扩散到其他区域。使用命令 show ip ospf database summary 可以显示链路状态数据库中的网络汇总 LSA 信息。
仅当区域中有 ASBR 时,ABR 才会生成 4 类 LSA 。4 类 LSA 标识 ASBR ,并提供一条前往该 ASBR 的路由。前往外部自治系统的数据流要求路由表包含有关通告外部路由的 ASBR 的信息。链路状态 ID 被设置为 ASBR 的路由器 ID 。使用命令 show ip ospf database asbr-summary 可以查看 ASBR 汇总 LSA 的信息。这里要注意的是,其中目的地是一个主机地址,并且掩码是 0(通过 ASBR 汇总 LSA 通告的目的地将总是一个主机地址,因为它是一条到达一台路由器的路由)。
5 类 LSA 描述了前往 OSPF 自治系统外的网络的路由(也包括 OSPF 自治系统外部的缺省路由),它由 ASBR 发送并被扩散到整个 AS(如下图所示)。5 类 LSA 是链路状态数据库中唯一不与具体的区域相关联的 LSA 通告(即 O E1 和 O E2 路由不属于某个 Area ,是独立的)。5 类 LSA 通告将在整个自治系统中进行泛洪扩散。其链路状态 ID 为外部网络的网络号。使用命令 show ip ospf database external 可以查看 5 类 LSA 的信息。
●E1 :对于 O E1 外部路由,开销为外部开销加上分组经过的每条链路的内部开销。多个 ASBR 将同一条外部路由通告到同一个自治系统中时,应使用这种类型,以避免次优路由;
●E2(默认):O E2 路由的开销总是只包含外部开销。只有一台 ASBR 将外部路由通告到自治系统中时,使用这种类型。
7、NSSA 外部 LSA( NSSA External LSA )
是指在非纯末梢区域( Not-So-Stubby Area ,NSSA )内始发于 ASBR 路由器的 LSA 通告。NSSA 外部 LSA 通告几乎和 5 类 LSA 通告是相同的。只是不像 5 类 LSA 通告那样在整个 OSPF 自治系统内进行泛洪扩散,NSSA 外部 LSA 通告仅仅在始发这个 NSSA 外部 LSA 通告的非纯末梢区域内部进行泛洪扩散。可以通过命令 show ip ospf database nssa-external 来显示 NSSA 外部 LSA 通告的信息。
<1>、末梢区域
拒绝4/5类的LSA,ABR自动产生3类缺省发向该区域,方向为骨干区域。
<2>、完全末梢区域
在末梢区域的基础上进一步拒绝3类的LSA,仅保留一条3类的缺省,先将该区域配置为末梢区域,然后仅在ABR上定义完全即可。
注意:在配置全完末梢区域时,一定要先将其区域内所有设备调成至末梢区域,然后在ABR上调至完全末梢区域。
<3>、NSSA—非完全末梢区域
该区域拒绝其他区域产生的4/5类LSA;不会自动产生3类缺省(容易出环路),本地的5类LSA基于7类转发,通过NSSA区域转发后转回5类;
该特殊区域存在的意义在于拒绝其他区域的ASBR产生的4/5类数据,又为了避免环路的出现,默认不会自动产生缺省路由,导致无法访问其他的域外网段,所以在管理员确定无环路的情况下,可以手工添加缺省路由。
<4>、完全NSSA区域
在NSSA的基础上进一步拒绝3类的LSA,自动产生3类缺省,先将该区域配置成NSSA,然后仅在ABR上完全定义即可。
网络类型 OSPF接口工作方式
环回 LOOPBACK 无hello包 以32位主机掩码发送路由
点到点(HDLC/PPP) POINT_TO_POINT hello time 10s 不选DR
BMA(以太网) BROADCAST hello time 10s 选DR(DR位置一定放在中心点上)
NBMA(MGRE) POINT_TO_POINT hello time 10s 不选DR
注意:点到点工作方式,仅适用于一个网段两个节点的网络;
所以在MGRE环境下若适用tunnel口默认的工作方式,那么一个网段内若存在两个以上节点将出现邻居翻滚。
1、多路访问网络中,每个路由器都会与DR和BDR同时形成邻接关系,其他路由器之间只是2-way关系。DR和BDR之间也形成邻接关系。
2、DR和BDR是路由器接口的特性,并不是整个路由器的特性。
3、DR和BDR信息被存放在接口数据结构表中。
4、DR和BDR不能抢占,也就是在一个多路访问中先初始化启动的路由器可能成为DR/BDR,不能抢占。
5、邻居表2-way后并不是马上选举DR/BDR,而是等待一个定时器,超时后才进行选举。在wait时间内等待其他邻居给我通告DR/BDR信息。wait时间内就收发hello。
●因为ospf是共享的是链路状态、没有必要和整个ospf域内所有路由器共享相同的DBD,所以,划分区域后数据库缩小,降低了了路由器对内存的消耗。
●在进行划分区域后,链路状态数据库减小,处理着较小的LSA,降低了对CPU的消耗
●防止LSA洪泛影响整个ospf域(只让其在区域内洪泛就行了)
●区域概念,有效减少路由条目对CPU和内存的占用,将拓扑变化局限在本地区域内,相信的LSA洪泛控制。
●邻接关系,OSPF协议定义了一些路由器类型和网络类型,邻接关系的建立是交换hello信息的路由器类型和交换hello信息的网络类型决定的。
●每台收到从邻居路由器发出的LSA的路由器都会把这些LSA记录在它的LSDB中,并且发送一份LSA拷贝给这台路由器其他所有邻居。
●当这些路由器LSDB完全相同时,各自路由器就以自身为根,使用SPF算法算一条无环的最短路径拓扑图,从而构建自己的路由表。