网络学习笔记(2)-OSPF路由计算
OSPF路由基础
OSPF 邻居建不起来的原因
- hello间隔和dead 间隔不同;
- 接口下OSPF网络类型不匹配。
- 区域号码不一致;
- 特殊区域(如stub,nssa等)区域类型不匹配;
- 认证类型或密码不一致;
- 路由器 router-id 相同;
- 链路上的 MTU 不匹配;
- 在broadcast链路上的子网掩码不匹配
- 在MA 网络中,没有DR
- 接口设置为 silent-interface
对于链路MTU不匹配的情况
int g0/0/0
mtu 1400
ospf mtu-enable
==ospf mtu-enable 两端都要设置==
ospf mtu-enable命令用来使能接口在发送DD报文时填MTU值。缺省情况下,接口发送DD报文时MTU值为0,即不填接口的实际MTU值。
大家直到OSPF在达到FULL关系过程中,可能会由于MTU不匹配导致DD报文交互出现问题,无法达到FULL状态。因此为了避免不同厂商设备对接时出现该问题,默认情况下发送DD报文时不填写接口的实际MTU值,即为0。这样避免对端由于DD报文中MTU值大于接口MTU,导致邻居关系无法建立。
强调下,该命令只是控制发DD报文的情况.HW VRP对于收的DD报文,就是不检查MTU的。所以MTU的匹配要通过专门确认。当然不检查MTU也会存在一些问题,就不能通过OSPF发现两端接口MTU不一致的情况。如果没有及时发现MTU不一致,上业务后会出现有丢包情况。
==OSPF几个需要注意的地方:==
1)当hello时间不同时是永远起不来邻居的
2)当hello时间不同时会停留在INIT状态
3)如果路由的优先级都改成了0,会停留在TWO-WAY状态
4)当MTU值不同时会停留在EXSTART或EXCHANGE状态
==OSPF 使用两个多播地址==
224.0.0.5---All OSPF Routers.
224.0.0.6---All DR Routers(DR+BDR)
224.0.0.5 指在任意网络中所有运行OSPF进程的接口都属于该组,于是接收所有224.0.0.5的组播数据包
224.0.0.6 指一个多路访问网络中DR和BDR的组播接收地址
MA 网络 路由器发向DR.BDR 的为 224.0.0.6
DR.BDR 回应的是 224.0.0.5
OSPF 进程号
OSPF ProcessID只是本地有效,用来在本地区分不同的OSPF进程
虽然OSPF ProcessID本地有效,但是仍然建议,除非有特殊需求,否则全网使用一致的OSPF进程ID,这将方便网络管理和维护
什么情况下需要用到多OSPF进程呢?这个问题可就大了,一般而言,一台路由器创建一个OSPF进程,可以实现网络的需求,但是在一些特殊的、复杂的环境当中,单一的OSPF进程可能无法满足要求,因此在一台路由器上创建多个OSPF进程,这样一来的直接好处是,这台路由器从原先的内部路由器--OSPF interArea Router,华丽的变成了一台ASBR,它可以在进程之间引入、可以过滤路由或LSA、可以控制路由、可以做基于route-policy的策略、可以做路由聚合等等。
LSA的基本概念
LSA是OSPF进行路由计算的关键依据。OSPF的LSU报文可以携带多种不同类型的LSA。各种类型的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的总长度值。
==链路状态类型、链路状态ID、通告路由器三元组唯一地标识了一个LSA。
链路状态老化时间 、链路状态序列号 、校验和用于判断LSA的新旧。==
常见LSA的类型
OSPF 链路状态序列号
最大寿命定时器、刷新定时器和链路状态序列号一起确保数据库只包含最新的链路状态记录。
- LSDB中每一个LSA都有一个序列号,序列号越大,LSA 越新
- 序列号范围从0x80000001-0x7FFFFFFF
- OSPF每30分钟flood一次LSA来维持LSDB同步,每次flood序列号加 1
- 当一个路由器遇到同一个LSA的两个实例时,它必须能够确定哪一个是最近的LSA。(根据序列号来识别)
当一条LSA的序列号到达最大序列号时,始发路由器会发送一个生存时间为最大值的LSA,让其它的路由器从LSDB中清除这条LSA,当其它路由器确认后,再发送一个初始序列号的LSA。注意:只有始发路由器才可以提前使这条LSA老化,LSA条目的老化时间默认是一小时(0-3600S)
判断LSA 的新旧
- 序列号越大,则LSA 越新
- 若序列号相同,则校验和较大被认为更新
- 若序列号与校验和的比较都不能确定出最新的LSA 时,则会比较老化时间。若LSA的老化时间被设置为 max age (默认 3600),则为最新
- 若没有LSA 的老化时间被设置为max age,则看老化时间的相差值。在LSDB中,如果老化时间相差在大于 15min 以上,则 Ls age 的值越小,说明LSA越新;如果相差在 15min内,则认为两条LSA是一样的。
当收到某条相同的LSA的多个实例时,路由器将通过下面的算法来确认哪个是最新的LSA实例:
- 比较LSA实例的序列号,拥有最大序列号的LSA就是最新的LSA;
- 如果LSA实例的序列号相同,那么将会比较它们的校验和。拥有最大的无符号校验和的LSA就是最新的LSA;
- 如果LSA实例的校验和也相同,那么就进一步比较老化时间。如果只有一条LSA拥有大小为最大生存时间的老化时间,那么就认为这条LSA是最新的LSA;
- 如果这些LSA的老化时间之间的差别多余15min,那么拥有较小老化时间的LSA将是最新的LSA;
- 如果上述的条件都无法区别最新的LSA,那么这两个LSA就被认为是相同的。
以上内容摘自《TCP/IP路由技术第一卷》
总结图
区域内路由
Router LSA(1类LSA)
- Router LSA(1类LSA):每台OSPF路由器都会产生。它描述了该路由器直连接口的信息。
- Router LSA只能在所属的区域内泛洪。
- Router LSA使用Link来承载路由器直连接口的信息。
- 每条Link均包含“链路类型”、“链路ID”、“链路数据”以及“度量值”这几个关键信息。
- 路由器可能会采用一个或者多个Link来描述某个接口。
- V (Virtual Link ) :如果产生此LSA的路由器是虚连接的端点,则置为1。
- E (External ): 如果产生此LSA的路由器是ASBR,则置为1。
- B (Border ):如果产生此LSA的路由器是ABR,则置为1。
- links :LSA中的Link(链路)数量。Router LSA使用Link来承载路由器直连接口的信息。
Network LSA详解(2类LSA
Network LSA(2类LSA):由DR产生,描述本网段的链路状态,在所属的区域内传播。
Network LSA 记录了该网段内所有与DR建立了邻接关系的OSPF路由器,同时携带了该网段的网络掩码。
- Link State ID :DR的接口IP地址。
- Network Mask:MA网络的子网掩码。
- Attached Router:连接到该MA网络的路由器的Router-ID(与该DR建立了邻接关系的邻居的Router-ID,以及DR自己的Router-ID),如果有多台路由器接入该MA网络,则使用多个字段描述。
区域间路由
区域划分
当网络规模越来越大时,LSDB将变得非常臃肿,设备基于该LSDB进行路由计算,其负担也极大地增加了,此外路由器的路由表规模也变大了,这些无疑都将加大路由器的性能损耗。当网络拓扑发生变更时,这些变更需要被扩散到整个网络,并可能引发整网的路由重计算。Router LSA和Network LSA只在区域内泛洪,因此通过区域划分在一定程度上降低网络设备的内存及CPU的消耗。
划分区域后,路由器可以分为两种角色:
- 区域内部路由器(Internal Router):该类设备的所有接口都属于同一个OSPF区域。如R1、R4、R5。
- 区域边界路由器(Area Border Router):该类设备接口分别连接两个及两个以上的不同区域。如R2、R3。
区域间路由信息传递
- OSPF区域间路由信息传递是通过ABR产生的Network Summary LSA(3类LSA)实现的。
- 以192.168.1.0/24路由信息为例:
- R2依据Area 1内所泛洪的Router LSA及Network LSA计算得出192.168.1.0/24路由(区域内路由),并将该路由通过Network Summary LSA通告到Area 0。R3根据该LSA可计算出到达192.168.1.0/24的区域间路由。
- R3重新生成一份Network Summary LSA通告到Area 2中,至此所有OSPF区域都能学习到去往192.168.1.0/24的路由。
Network Summary LSA详解(三类LSA)
Network Summary LSA(3类LSA)由ABR产生,用于向一个区域通告到达另一个区域的路由。
区域间路由防环
OSPF要求所有的非骨干区域必须与Area0直接相连,区域间路由需经由Area0中转。
区域间的路由传递不能发生在两个非骨干区域之间,这使得OSPF的区域架构在逻辑上形成了一个类似星型的拓扑。
ABR不会将描述到达某个区域内网段路由的3类LSA再注入回该区域。
虚连接的作用及配置
OSPF要求骨干区域必须是连续的,但是并不要求物理上连续,可以使用虚连接使骨干区域在逻辑上连续。
虚连接可以在任意两个ABR上建立,但是要求这两个ABR都有端口连接到一个相同的非骨干区域。
外部路由计算
OSPF外部路由引入背景:路由器连接外部网络使用静态路由或者BGP协议;服务器直连的链路未开启OSPF协议。
ASBR(AS Boundary Router):自治系统边界路由器。只要一台OSPF设备引入了外部路由,它就成为了ASBR。如图中的R1。
ASBR将外部路由信息以AS-external LSA(5类LSA)的形式在OSPF网络内泛洪。
AS-external LSA(5类LSA)
AS-external LSA(5类LSA):由ASBR产生,描述到达AS外部的路由,该LSA会被通告到所有的区域(除了Stub区域和NSSA区域)。
重要字段解释
- LS Type:取值5,代表AS-external-LSA。
- Link State ID:外部路由的目的网络地址。
- Advertising Router:生成该LSA的Router ID。
- Network Mask:网络掩码。
- E :该外部路由所使用的度量值类型
- 0:度量值类型为Metric-Type-1
- 1:度量值类型为Metric-Type-2
- metric:到目的网络的路由开销。
- Forwarding Address(FA):到所通告的目的地址的报文将被转发到这个地址。
ASBR-Summary LSA(4类LSA)
ASBR-Summary LSA(4类LSA):由ABR产生,描述到ASBR的路由,通告给除ASBR所在区域的其他相关区域。
外部路由类型
Metric-Type-1
- 当外部路由的开销与自治系统内部的路由开销相当,并且和OSPF自身路由的开销具有可比性时,可以认为这类路由的可信程度较高,将其配置成Metric-Type-1。
- Metric-Type-1外部路由的开销为AS内部开销(路由器到ASBR的开销)与AS外部开销之和。
Metric-Type-2
- 当ASBR到AS之外的开销远远大于在AS之内到达ASBR的开销时,可以认为这类路由的可信程度较低,将其配置成Metric-Type-2。
- Metric-Type-2外部路由的开销等于AS外部开销。
总结图
作者:废权
链接:https://blog.yjscloud.com/archives/138
声明:如无特别声明本文即为原创文章仅代表个人观点,版权归《废权的博客》所有,欢迎转载,转载请保留原文链接。
共有 0 条评论