OSPF转发地址
5类LSA报文格式
5类LSA有一个Forwarding address字段,防止次优路由产生
次有路径的产生
如图,A与C运行OSPF协议,A与B运行ISIS协议,现在将ISIS导入到了OSPF中,C去访问X默认会先经过ASBR即R1,再去访问B设备。
现在有转发地址可以直接填入B的地址,这时候C选路的时候,优先看转发地址,如果转发地址和自己在同一个网段,那么就可以直接进入B设备。
FA地址一旦填充了,所有设备都不会看4类和ASBR,都会去找FA地址。如果与FA地址不在一个区域,那么就需要通过3类LSA去找。
转发地址的填充条件:
- 接口不能是P2P类型,P2MP类型接口,必须是广播型接口
- 连接外部的接口不能是静默接口
- 需要宣告连接外部的接口
FA地址生成举例
这个网络填充FA地址的条件就是,4上面的绿色端口:
- 宣告了OSPF
- 只能是广播类型接口
- 不能是静默接口
地址填充的是绿色端口对面的地址,FA地址填充后不看4类LSA,当成3类挂在ABR上面,如果FA地址到达不了,那么就到达不了了,不会再用4类LSA。
7类FA地址
7类也有FA地址,是默认填充的。
FA地址的填充
- 优先填外部宣告接口
- 没有的话再填充Lookback接口
- 都没有填充物理地址最大的
7类主要是避免次优路径,7类LSA最终要转向5类LSA,转向5类LSA的时候就可能会有次优路径,7转5的条件是FA地址要填充,NP位要置位,RID大的路由器去转换。
次有路径的产生
如果按照传统的来看,那么NSSA区域做7转5时要在4.4.4.4上面去做,那么区域0的路由器就会经过R4去访问区域1,此时因为开销所以就会造成次优路径
FA地址解决次优路径
如果填充了FA地址,地址就是填充的最上面的路由器的地址,因为普通区域有NSSA区域的明细,所以他会去经过R3去访问区域1
7转5的要求
现在再引入的时候,7类由R4做7转5,要求是FA地址不可变,到5类的FA地址还要是7类的FA地址;这样就会从R4做7转5,但是转发就走R3,从而实现了7类LSA解决次优路径问题。
什么是FA地址
到达所通告的目的地址的数据包应该先被转发到转发地址上面,如果转发地址为0,那么数据包将被转发到始发ASBR上。
OSPF的5类和7类中包含一个特别的字段FA,FA的引入使得OSPF在某些特殊的场景下可以避免次优路径问题。
FA的取值
当ASBR引入外部路由时,若5类LSA的FA字段为0,表示路由默认为到达目的网段的数据包应该发往该ASBR,若5类LSA的FA字段不为0,表示路由器认为到达目的网段的数据包应该发往这个FA所标识的设备。
当以下条件全部满足时,FA字段才可以设置为非0:
- ASBR在其连接外部网络的接口(外部路由的出接口)上激活了OSPF
- 该接口没有被配置为静默接口
- 该接口的OSPF类型为广播类型或者NBMA
- 到达FA地址的路由必须是OSPF区域内部路由区域间路由,这样接收到该外部LSA的路由器才能加载该LSA进入路由表,加载的外部LSA生成的路由条目下一跳与到达FA地址的下一跳相同(必须是通过3类学习到的路由,下一跳是指向FA地址的)
GR平滑重启
OSPF GR,平滑重启,使用9类LSA通告
- Graceful Restart Reason TLV:Type=2,长度为1字节,告知邻居设备GR Restarter的重启原因。(必须携带)
-
- nValue=0,表示原因未知;
- nValue=1,表示软件重启;
- nValue=2,表示软件重新加载(升级);
- nValue=3,表示GR Restarter进行主备倒换。
- IP Interface Address TLV:Type=3,长度为4字节,用来告知发送Grace LSA的接口的IP地址,在网络上需要用该IP地址来唯一标识一台重启设备。
在工作中GR用的很少,用的都是NSR
框式交换机,从侧面切开,一般去挂引擎版,业务板,最后通过总线把一块一块的板子连接到一起,转发板上有自己的芯片和存储空间
- 控制平面,转发板接收到组播LSA,上交给引擎版上,交给CPU处理后再通过转发版转给邻居
- 转发平面,FIB再转发板上面,进来信息在转发板进入,再从另一个转发板出去
这样,信息转发时就不会经过控制平面,这个时候,引擎版如果需要升级,主控板一定会释放掉所有配置,释放掉RIB和撤销FIB表,这个时候就会影响到转发平面;
这个时候就需要用到GR,引擎版需要重启时,先下发命令通知OSPF邻居我要重启设备,等一下如果你发现我的邻居列表中没有你,你不要把我删了,你要快点和我建立邻居。转发面仍然是正常的,从我这里过得数据包还是可以过得,重启之后,我的控制面生成了很多LSA,你直接把我之前的LSA传给我,我直接用起来,就不用重新计算了,交代了3件事情。通过9类LSA通告我要重启。会通过9类告诉原因
- 我要重启了 R1发送Grace-LSA
- 收到重启消息之后,就回复OK R2回复ACK
- 此时,开始重启
- 重启完成之后,发送消息,我重启完了 R1发送Grace-LSA
- 开始重新建立邻居,我会把你之前的以前生成的LSA全部还给你
- 还给他之后,控制面信息也有了,转发面本来也有,网络绝对不会断
- R1重新生成控制面发出去一遍
- 重启不可能一直等你,我会等1800秒,1800秒之内如果你回消息了那就正常,如果没回就认为断掉了。
NSR
GR是平滑重启,只能做到不间断转发,但是路由还会断掉
NSR,不间断路由技术,需要两块引擎版完成,不需要邻居帮忙,通过NSR命令通知主备倒换,把主引擎里面的配置全部换到备用,不断的同步内存,主板下电,备板生效。
ISIS高级特性
ISIS快速收敛
- 和OSPF的配置一样,三个只能定时器,FRC ISPF,FRR
- 多了一个LSP的快速扩散
- ISPF 针对实节点 1,2类变化时候 ISPF算法 3,5,7采用PRC算法
LSP的快速功能
不开启快速功能之前
拿到LSP之后先放入到LSDB中,计算完成再交给下一个设备,下个设备计算完再计算交给下一个,这样的话,第一台设备没有完成,最后一台设备就不会工作,影响效率
开启快速功能之后
启用快速扩散50条,如果收到100条LSP后,会先把50条传出去,然后再开始计算这100条,计算完成之后再把另一个50LSP传给下一台设备,这样提高了收敛速度。计算LSP之前,先把一部分传出去,毫秒级的提升,不容易差别。功能需要人为开启
等价路由
形成等价路由的条件是:开销值相同,LSA相同Level级别。L1优于L2,下一跳优先级也要相同
isis 1
maximum load-balancing number
isis 1
nexthop ip-address weight value
缺省路由
靠的是ATT置位,不是随便就会产生的,L1默认会渗透到L2,L2不会渗透的L1;L1-2设备收到了来自多个区域的信息,就会人为自己是出口,就会向内部生成路由。
ATT如果没有达到条件,可以通过命令来配置让它生成
就只在内部互访,访问外部只访问xy,那么可以不生成外部的缺省,只生成外部的明细路由
attached-bit advertise always //没有达成条件,也生成路由
attached-bit advertise never //达成了条件,不生成路由
attached-bit avoid-learning //控制设备不因为ATT置位下发缺省路由到路由表
也可以通过default-route-advertise下发缺省路由,不是L1-2设备。可以携带cost tag,可以选择发布L1还是L2或者L1-2
实际情况都用L2,因为次优路径
外面的开销看不到的
IGP叫做under,用ISIS比较简单粗暴,不容易出错
LSP分片
一台设备发送LSP,每台设备一般产生一条LSP,1条LSP包含了很多链路状态信息,如果引入了外部路由的话就会产生很多条LSP,MTU值最大1500字节,ISIS协议会对数据帧进行分片处理,如果数据包过大就会进行分片。分片ID用16进制标识,范围是0-255。
如果引入了很多外部路由,例如BGP,分别256不够用了
虚拟系统,LSPID不够用,开启虚拟系统,像是一个影子,开启一个虚拟的ISIS进程,又可以携带256个LSP分片
分为MODE1模式和MODE2模式
M1:老设备不支持虚拟系统,
M2:支持虚拟系统,
ISIS GR
多了3个定时器和3个FLAG位
RA答应你重启