LSA报文头部字段: LS Age(链路状态老化时间): 此字段表示LSA已经生存的时间,单位是秒。 Options(可选项): 每一个bit都对应了OSPF所支持的某种特性。 LS Type(链路状态类型): 指示本LSA的类型。 Link State ID(链路状态ID): 不同的LSA,对该字段的定义不同。 Advertising Router(通告路由器): 产生该LSA的路由器的Router ID。 LS Sequence Number(链路状态序列号): 当LSA每次有新的实例产生时,序列号就会增加。 LS Checksum(校验和): 用于保证数据的完整性和准确性。 Length(长度): 是一个包含LSA头部在内的LSA的总长度值。
不同类型LSA: 1类LSA:
传递范围:区域内(area 内传递)作用:描述了本路由器直连接口的信息。(我连接着谁,同时传递路由和拓扑) 什么情况产生:运行了OSPF的设备都会100%产生1条1类LSA。(Router LSA:一类LSA) 每个设备都会产生,描述了设备的链路状态和开销,该LSA只能在接口所属的区域内泛洪
LSA同步三要素:(也就是直接查LSDB的内容)Type:类型(1类)Link State ID (链路状态ID:谁产生就填写谁的router-id,都是本设备) Advertising Router(通告路由器:谁产生就填写谁的router-id,本设备)前三个字段都是表面这个LSA是从那来的 LSA具体内容:使用:dis ospf router 链路状态ID 1类LSA被分成了四种类型(P2P,stubnet,transit,vlink)1. P2P类型(用来描述点到点的连接关系,也就是拓扑信息)* Link ID : 2.2.2.2(你链接着哪台设备,就填写哪台设备的router-id) Data : 192.168.1.1 (你哪个接口链接着这个邻居,就填写对应接口 的ip地址) Link Type: P-2-P(用来描述点到点的连接关系) Metric : 1(cost = 1) 2. Stubnet类型(用来描述路由信息的)* Link ID: 192.168.1.0 Data : 255.255.255.0 Link Type: StubNet Metric : 1 Priority : Low 3. Transnet类型(用来描述广播型网络下的链接关系) * Link ID: 192.168.1.2 (DR的接口IP地址【伪节点的Router-id】) Data : 192.168.1.1 (链接DR的接口IP地址) Link Type: TransNet Metric : 1(开销)4. vlink类型(用来描述虚链路建立的拓扑情况)* Link ID: 3.3.3.3 (虚链路建立的邻居router-id) Data : 10.1.23.2 (自身哪个接口去跟这个邻居建立的Vlink) Link Type: Virtual (链路类型virtual = vlink) Metric : 1虚链路,这个是专门的一个功能,有专门的文档来说,理论很简单 1、P2P是拿来构建拓扑图,Stubnet才是转发路由,两个的作用是不一样的2、构建拓扑图和转发路由区分开的原因是:构建拓扑可以理解为知道有这样一个目的地,路由是让自己知道这个目的地怎么去3、不同网络类型的1类LSA内容会有差别,但是作用是一样的4、本端端口激活了OSPF后,会产生Stubnet类型的路由信息1类LSA,至于是否会产生描述拓扑信息的LSA,需要判断该接口链接的对方是否会发送OSPF的报文,若发送,则会产生描述OSPF拓扑信息的1类LSA;若不发送,则只产生描述路由的Stubnet类型的1类LSA。
2类LSA:(描述了网络的链接情况以及路由情况)
4个一类LSA,1个二类LSALs这个2类LSA的地址就是伪节点的地址(伪节点使用DR的地址) 2类LSA只有DR产生(BDR都不产生) 传递范围:区域内(area 内传递)头部三要素: Type : Network(2类LSA) Ls id : 192.168.1.2(DR的接口IP地址【DR接口所属网段】) Adv router : 4.4.4.4 (DR的router-id)身体: Net mask : 255.255.255.0(子网掩码位数) 【Netmask + 头部三要素中的LS ID 组合出该网段的路由信息,向外传递】 Priority : Low Attached Router 2.2.2.2(说明伪节点连接的设备) Attached Router 1.1.1.1Attached Router 3.3.3.3Attached Router 4.4.4.4依靠Ls id 和Net mask来实现描述路由。通过attached router来描述在当前广播域下,设备的连接情况 LSA撤销方式: 1:seq:序列号,序列号加一,代表更新的,接到seq更大的,就替换原来的 2:Age时间超过3600秒(新旧判断)LSA新旧判断: LSA,先比较序列号, 越大越新,越新越接收 序列号一样,校验和越大越新, Age表示这条LSA生产多久了, 刚刚产生的LSA age = 0(1) 到达3600秒之后,该LSA失效(3600是最新的,0是第二新的,3599是最老的)3600的产生有两种情况:1:1秒1秒度过,到3600的时候,删除2:发来的LSA是3600的时候,也会接收,接收到之后直接删除这个LSA(因为如果0最新的话,对方会不接收的,但是3600最新的话,就可以立马删除) 报文例子:
在操作删除undo的时候,运行的逻辑就是设置为3600,立刻删除 3类LSA:(描述其他区域的路由情况)3类LSA只有ABR产生什么叫ABR:1. 伪ABR:该设备存在多个区域,且有一个区域是骨干区域的设备。2. 真ABR:多个接口链接多个区域,且有一个活跃接口存在于AREA 0骨干区域内的设备
比如这里:假如AR2只配置到area 0,但是没有在区域0当中宣告自己的0口的话,那AR2会以为自己是ABR,但是完全不进行ABR的操作,AR8不会收到3类LSA 传递范围:区域间
比如这里,AR1和AR2是区域0,AR2和AR3、6、7是区域1AR1宣告自己的0口在区域0,AR2宣告自己的0口在区域0AR2宣告自己的1口在区域1,AR3、6、7宣告自己的0口在区域1AR2作为中介,AR1只知道远方有一个网段,自己需要通信那个网段,直接找AR2即可。AR3、6、7也是同理,这样一来AR1可以只知道一条LSA3就可以知道互通,不需要维护其他的LSA1,并且AR3掉线的话,AR1也不需要重新使用LSA1来描绘拓扑,只需要删除一条LSA即可 LSA数目对比:《1》这里如果都在一个区域当中:每个设备会产生一条描述自己的LSA(5条),广播型区域会有一个DR产生LSA2(一条),一共6条LSA信息,LSDB有点臃肿《2》这里如果在不同区域当中:区域1当中,AR1和AR2产生各自的LSA1,然后AR2告诉AR1,自己有一个10.1.23.0/24网段的三类LSA(一条),AR1这边就只有LSA1(2条)和LSA3(1条)显得清爽很多,而且area1当中的设备挂掉的话,AR1的LSDB不影响,只是区域1当中的设备需要重新绘制拓扑 而这里的AR2有一个专有名词,ABR 3类LSA的内容: 头部三要素: Type : Sum-Net【summary-network】(3类LSA) Ls id : 10.1.23.0(其他区域所属的网段信息) Adv router : 2.2.2.2 (ABR的router-id)身体: Net mask : 255.255.255.0 (掩码) Tos 0 metric: 1 (开销) Priority : Low(优先级)
有Ls id 和Net mask就可以写出路由了 ABR设备判断: 在ABR发送的LSU报文当中,会在Flags的B比特位当中,置1就是说明自己是ABR 三类LSA 的防环规则:1. 新产生的3类LSA 不会回灌进原有的区域中,避免错误的路由又让原有的区域内成员学习到了。2. 只要传递的数据只要路由,没有拓扑的时候,就会有环路风险3. ABR是不会计算来自非骨干区域传来的3类LSA的
比如在这里,area1/2/3都会把来自area0的3类LSA导入自己的区域内路由器当中,但是area3的设备和area1的设备有连线,area3的设备把从area0的3类LSA发送给area1的设备之后,边界路由器不会导入到area0区域当中,因为这个3类LSA是来自area3这个非骨干区域的所以逻辑上,非骨干区域都是围绕着骨干区域的,现实设计的时候,倒是可以不直连area0,因为虽然3类LSA只能由ABR产生,但是其他的边界路由器,是可以转发3类LSA的
更极端的环路: 在这里AR1和AR2处在一个区域当中,没有线路直连,也就是无法通过1类LSA类互通这时候AR1就只能发3类LSA给AR3,AR2也只能发3类LSA给AR4但是AR3可以正常吧1.1.1.1的3类LSA发布在area1当中,但是AR4不会转发给AR2,因为这个3类LSA来自非骨干区域1,所以AR1是无法ping通AR2的甚至AR2无法ping通AR3的0口,因为AR3学习到2.2.2.2是通过AR4发来的3类LSA,但是因为AR3是ABR,所以不会计算和使用非骨干传来的3类LSA,所以AR2是无法ping通AR3的。但是可以ping通area1当中的非ABR设备 这个极端的现象有一个专门的术语:骨干区域被分割 ABR设备是在骨干区域和其他区域之间的路由器,只接收和处理来自非骨干区域的LSA-3,但是收到非骨干区域来的LSA-3之后并不会丢弃,会存在自己的LSDB当中,在那天自己身份变化的时候,拿出来计算
比如这里就是,AR5来自area2,AR3是ABR,不会接收来使用,但是会存起来,防止自己那天不是ABR了,当然,还有一个点需要注意,这个细致点就是,LSA报文但是通过LSU来传递的,无论里面的LSA是否会被计算和使用,都是会拆开LSU报文的, 使用AR3会接收LSU,但是不会使用里面的LSA-3 4类LSA(搭配LSA-5使用): 头部三要素: Type : sum-asbr(4类LSA) Ls id : 填写ASBR的router-id Adv router : (ABR的router-id)作用:告诉其他不跟ASBR在同一个area的设备,1谁是ASBR。LSA-4的作用是描述路由信息的,因为ASBR的确定是使用LSA-1的,但是跨区域没有 LSA-1,而且跨区域的LSA-3不整合这个字段,所以只能单独拿出LSA-4来告诉跨区域的 设备,告诉其他区域的设备,ASBR怎么去,跨区域是不,描述拓扑信息的,只是描述 路由信息 5类LSA:在操作引入外部路由的时候使用相当于路由重分发在OSPF中使用import命令 比如在ospf进程1当中使用import-route bgp就是将BGP引入OSPF当中
这里的意思就是: Router-ID是1.1.1.1的设备产生了一条到88.88.88.88的路由,使用的是AS-external,也就是LSA-5。 头部三要素: Type : AS-external(外部路由5类LSA) Ls id : 88.88.88.88(通过其他协议,发布进OSPF中的路由前缀信息) Adv router : 1.1.1.1 (ASBR的router-id)身体: 1、Net mask : 255.255.255.255 (掩码位数,配合LS ID生成路由) 2、TOS 0 Metric: 1 (开销) 3、E(external)type: 2(开销类型,Type1计算的是整条链路的cost,Type2计算的是ASBR 到达目的地的Cost。在引入时使用type1可以修改为1,默认为2) Type 1的算法是从源ping设备开始到目的地的全部开销Type 2的算法是从ASBR设备开始到目的地的全部开销
没有说那个最优,需要具体分析,比如使用了type1,那内部路由器就会计算出自己到外部全部的开销,那肯定就选下面的路。但是如果选的是type2的话,那就可能上下两个都是cost=1,都一样了,会出现次优路径问题,同时这个情况也叫负载分担。
4、Forwarding Address : 0.0.0.0 (转发地址)解决次优路径。 转发地址不置位(0.0.0.0):引入外部路由时,去往该地址下一跳的接口没有通过network 命令发布在OSPF 中时,转发地址不置位。
比如这里,这里的AR5是ASBR设备(别管原因)AR5产生的ASBR传递进去的LSA-5,会告诉area0当中的设备,我是ASBR,在没有意外的情况下,其他设备会把要去这个外部路由的数据包抛给AR5,但是这里很明显不对,以外走AR3开销比走AR5小,所以AR5这个ASBR在产生LSA-5的时候,就会在其中携带一个字段:Forwarding Address(转发地址)这个转发地址写的就是AR4这个真实的、通向外部网络的设备的地址,这样area 0的设备就不会无脑的转发给ASBR,而是通过自己的计算,发现走AR3的路线开销更低的话,那就走AR3不走AR5了 转发地址置位的场景(全部满足才行):1. ASBR 上与外部路由下一跳关联的接口激活了OSPF ,即通过network命令发布了的接口2. 链接外部的接口不能配置Slient- interface(静默接口)3. 只有广播型网络才会置位,P2P 只有单一的一条路无法置位。 5、Tag (标记) : 1 (区分路由的,搭配ACL)将特定的路由打上tag之后,可以选择性的接收哪些路由,可以选择性的拒绝哪些路由。(双点双向引入时、环路就是通过tag解决的)也有放环的作用,比如设备发送了tag 100的路由器,这时候设备就不会收tag 100的路由,因为这条路由,可能是环路传回来的,这个拒绝,也是要使用acl来操作的命令:
路由器角色判断:
在区域内的LSA-1当中,Flage字段会置位1、V字段:在设备有建立虚链路的时候置位2、E字段:设备是ASBR3、B字段:设备是ABR 7类LSA: 这个LSA-7是专门使用在NSSA区域当中的用于NSSA区域当中无法使用LSA-5,但是又要引入外部路由的时候,用来穿越NSSA区 域使用的在抵达NSSA的ABR(也同样是ASBR的时候,就会被转为LSA-5) LSA-7和LSA-5是一样的,就是因为不能出现LSA-5,使用才出现LSA-7,真的只是改个名字而已
头部三要素: Type : nssa(外部路由7类LSA) Ls id : 88.88.88.88(通过其他协议,发布进OSPF中的路由前缀信息) Adv router : 1.1.1.1 (NSSA区域的ASBR的router-id,唯一和LSA-5的区别)在使用LSA-5的时候,会使用LSA-4重新确定ASBR的router-id,但是在NSSA当中,执 行引入操作的路由器并不是ASBR,而是对接了area 0的ABR才是ASBR身体: Net mask : 255.255.255.255 (掩码位数) TOS 0 Metric: 1 E(external) type : 2(开销类型,Type1计算的是整条链路的cost,Type2计算的是ASBR到达目的地的Cost) Forwarding Address : 0.0.0.0 (转发地址)解决次优路径。 转发地址不置位(0.0.0.0):引入外部路由时,去往该地址下一跳的接口没有通过network命令发布在OSPF中时,转发地址不置位。 转发地址置位的场景:1. ASBR上与外部路由下一跳关联的接口激活了OSPF,即通过network命令发布了的接口2. 链接外部的接口不能配置Slient-interface3. 只有广播型网络才会置位,P2P只有单一的一条路无法置位。 Tag(标记) : 1(区分路由的)将特定的路由打上tag之后,可以选择性的接收哪些路由,可以选择性的拒绝哪些路由。(双点双向引入时、环路就是通过tag解决的) |