OSPF的优化主要目的是为了减少LSA的更新量。而可以实现这效果的有两种手段—.1,路由汇总(可以减少骨干区域的LSA更新量); 2,做OSPF特殊区域(可以减少非骨区域的更新量)
OSPF的优化实质是减少LSA的更新量,在我们学到的六种LSA中,一类和二类携带的都是拓扑信息,在区域内传播,这两类LSA不可缺少,而其他携带路由信息的LSA呢,这些LSA的都是必须的吗?
如果非骨干区域只保留一类和二类LSA,向内添加一条缺省指向骨干区域,向外将区域内路由信息发出,这样骨干区域具有所有网段的路由信息,当非骨干区域需要访问未知路由时由缺省将消息交由骨干转发,这样就可以减少非骨干区域的LSA更新量。而每个非骨干区域也可以将自己区域内的网段进行汇总后再发给骨干区域,这样将减少了骨干区域的LSA更新量。
总结: OSPF的优化就是通过缺省减少非骨干区域的LSA更新量,通过汇总减少骨干区域的LSA更新量。
OSPF的汇总不同于RIP的接口汇总,而称为区域汇总。因为OSPF在区域之间传递的是路由信息
OSPF的汇总实质上是区域汇总,是将这个区域的路由进行汇总后发布到其他区域,而区域汇总的实质是对传递路由信息的LSA进行汇总。OSPF不像RIP一样在接口发布汇总,因为OSPF的接口包含在拓扑信息中,只有路由信息才可以进行汇总。
域间指的是区域之间,实质上是在ABR上将区域间传递的路由信息进行汇总,将汇总后的路由信息发布到其他区域,减少了三类LSA的数量。
域间路由汇总—实质上是通过在ABR设备上对区域之间传递的三类LSA进行汇总
[r1-ospf-1-area-0.0.0.2]abr-summary 192.168.0.0255.255.252.0
注意: 域间路由汇总只能汇总ABR设备自身通过1类,2类LSA信息学习到的路由信息
[r1]ospf 1
[r1-ospf-1]area 1 --- 进入需要汇总的区域
[r1-ospf-1-area-0.0.0.1]abr-summary 192.168.0.0 255.255.254.0 -- abr-summary 输入汇总后的网段和掩码
注意:
ABR上进行的区域汇总一定针对自己通过1类2类LSA计算出来的路由进行汇总操作。
汇总后路由的开销值为明细路由开销值中的最大值。
域外路由汇总实质上是将在ASBR上通过重发布时导入的路由进行汇总,然后将汇总后的路由信息发布到OSPF域内,减少了五类LSA的数量。
[r1] ospf 1
[r1-ospf-1]asbr-summary 172.16.0.0 255.255.254.0 -- asbr-summary 汇总后的网段和掩码
在ASBR的OSPF进程中执行,这个汇总命令只能在ASBR设备上生效
域外汇总网段LSA中的开销值:
如果开销值类型为类型2,则汇总网段的开销值等于明细路由中的最大开销值+1。
如果开销值类型为类型1,则汇总网段的开销值等于明细路由中的最大开销值。
通过将非骨干区域配置为特殊区域,可以使骨干区域只保留一二类LSA,再通过一条缺省路由指向骨干区域。OSPF的特殊区域一共存在4中特殊区域,分为两大类,每一个大类可以再分为两小类。
设置成第一类的条件 — 1、不能是骨干区域;2、不能存在虚链路;3、不能存在ASBR设备
满足第一大类区域条件的区域称为末梢区域(STUB)
将一个非骨干区域配置为末梢区域后,这个区域将不再接受四类和五类LSA,同时它会自动生成一条指向骨干的三类缺省。
末梢区域配置方法
[r5-ospf-1-area-0.0.0.]stub
— 配置末梢区域注意:一旦做特殊区域,则所有区域内的设备都必须做特殊区域
[r1]ospf 1
[r1-ospf-1]area 1 --- 进入需要成为末梢区域的区域
[r1-ospf-1-area-0.0.0.1]stub --- 该命令时使该区域成为末梢区域,本地属于该区域的接口发送hello时会携带特殊区域标记,如果本设备
·································是ABR的话,还会像向区域内发布一条三类缺省,并拒绝其他四类、五类进入。
R1作为ASBR引入多个外部网段,如果Area2是普通区域,则R3将向该区域注入5类和4类LSA。
当把Area2配智为Stub区域后
R3不会将5类LSA和4类LSA注入Area 2。
R3向Area2发送用于描述缺省路由的3类LSA,Area2内的路由器虽然不知道到达AS外部的具体路由,但是可以通过该默认路由到达AS外部。
注意: 因为hello包在建立邻居关系的时候回去检测特殊区域标记,如果特殊区域标记对不上,则将导致邻居关系无法建立。所以,要求,配置成特殊区域内的所有设备都需要进行相同配置。
将某区域设置为末梢区域后依然会收到其他区域的三类LSA,既然区域内部已经有了缺省路由,三类LSA也不需要学习。完全末梢区域就是在末梢区域的基础上进一步拒绝学习3类LSA,仅保留3类缺省。
[r1-ospf-1-area-0.0.0.1]stub no-summary
# 该命令只需在ABR设备上执行即可,配置后,ABR就会拒绝其他三类LSA进入
第二大类特殊区域:要求:1,不能是骨干区域;2,区域中不能存在虚链路;3,存在ASBR。 满足以上要求的区域我们可以将其配置成为NSSA(非完全末梢区域),如果一个区域成为NASS后,它会拒绝四类和五类LSA进入。了正常访问域外路由信息,NSSA区域也会自动生成一条指向骨干区域7类缺省。
NSSA区域拒绝四类和五类的进入,但NASS还需完成传递域外路由即传递五类LSA的任务,所以NSSA区域的内的ASBR在发布域外路由信息时是通过七类LSA承载的,这个七类LSA其实就相当于五类的马甲,除了名字不同,携带的信息都是相同的。NSSA区域的ABR收到七类LSA后会将七类转换成五类LSA后发布到骨干区域,该ABR就相当于一个ASBR,骨干区域内还可以减少一条四类LSA。
注意:在执行七转五时,如果七类LSA携带的路由信息可以通过一二类LSA验算得出,就不会执行七转五。
类型 | LS ID | 通告者 | 传播范围 | 携带的信息 |
---|---|---|---|---|
Type - 1LSA:Router | 通告者 | ospf域内所有运行ospf的设备的RID | 单区域 | 本地接口直连的拓扑信息 |
Type - 2LSA:Network | DR的接口IP | MA网路中的DR的RID | 单区域 | 单个MA网络的拓扑信息的补充 |
Type - 3LSA:Sum-net | 路由网段 | ABR,在经由其他ABR转发时会修改为新的ABR | 单区域 | 其他区域的路由信息 |
Type - 5LSA:External(ase) | 域外路由网段 | ASBR | ospf域内 | 域外路由 |
Type - 4LSA: Sum-Asbr(summary) | ASBR的RID | 和ASBR同区域的ABR,在经由其他ABR转发时修改为新的ABR | 除ASBR所在区域外的OSPF单区域 | ASBR的位置信息 |
Type - 7LSA:NSSA | 域外路由网段 | ASBR | NSSA单个区域 | 域外路由 |
[r4-ospf-1]area 2 --- 进入需要成为NASS的区域
[r4-ospf-1-area-0.0.0.2]nssa --- 将该区域配置为NSSA,特殊区域被的所有设备都需要配置,否则邻居关系无法正常建立
[r3]display ospf lsdb nssa 192.168.0.0 -- 查看一条七类LSA
OSPF Process 1 with Router ID 3.3.3.3
Area: 0.0.0.0
Link State Database
Area: 0.0.0.1
Link State Database
Type : NSSA
Ls id : 192.168.0.0 --- 域外路由网段
Adv rtr : 4.4.4.4 --- 通告者
Ls age : 70
Len : 36
Options : NP 注*
seq# : 80000002
chksum : 0x2a14
Net mask : 255.255.254.0 --- 子网掩码
TOS 0 Metric: 2 --- 种子度量
E type : 2 --- 度量类型
Forwarding Address : 4.4.4.4 注*
Tag : 1
Priority : Low
将一个区域配置为NSSA后,虽拒绝了四类和五类的进入,但本区域的ASBR发布的五类依然进入本区域,只是换了一个名字,这好像没有减少LSA的更新量,但其实NSSA主要拒绝的是从骨干区域传来的四类和五类。
LSA头部信息的特殊标记为(option):
E位 — 一般置1,代表支持5类LSA。如果是特殊区域,则将置0。
N位 — 一般置0,只有在NSSA区域中置1,代表支持7类LSA。
P位 — 如果置1,则代表该LSA信息支持7转5。
forwaing address:主要目的是为了应对选路不佳的情况。5类LSA在不存在选路不佳情况下,这个转发地址默认为0.0.0.0,7类LSA在默认不存在选路不佳的情况时,将携带ASBR的环回接口的最大IP地址。如果没有环回接口,则将使用物理接口的IP地址作为转发地址。
在上图中,R1和R3为一个AS,运行RIP;R2、R2、R4为一个AS,运行OSPF,R1通过RIP学习到R2的路由,在将之中重发布到OSPF中,R1发布一条五类LSA给R2;这条五类的通告者为R1,如果R2想找R3,它会将信息交由R1转发,但R1、R2、R3处于一个网段中,R1从G 0/0/0口收到R2的信息,然后从G 0/0/0口发出,造成了链路浪费。所以R1在发送给R2的五类LSA中携带转发地址为R3的接口IP,这样R2找R3的时候就不必要通过R1了。
注意: 一旦做特殊区域,则所有区域内的设备都必须做特殊区域
O_NSSA—7类域外路由信息的标记,默认优先级也是150
完全的NSSA区域可以进一步拒绝学习三类LSA,并生成一条指向骨干区域的三类缺省。
[r1-ospf-1-area-0.0.0.2]nssa no-summary --- 仅需在ABR设备上执行即可
完全的NSSA区域配置之后,将自动生成一条3类缺省,同时会保留NSSA区域生成的7类缺省。但因为3类LSA的优先级高于7类LSA,所以,加表时将选择3类缺省进行加表。
注意: 配置成为完全的NSSA区域后,会自动生成一条指向骨干的三类缺省,但是,之前普通的NSSA区域产生的7类缺省依然会保留,因为OSPF SA的优先级,设备会选择使用3类缺省而不用7类缺省。
(1)、ABR会自动下发一条Type-3 LSA的默认路由,除此之外其他的Type-3 LSA都被禁止。(2)、ABR会自动下发一条Type3 LSA的默认路由,除此之外其他的Type-3LSA都被禁止。
在OSPF数据包交互过程中,邻居之间的数据报中将携带认证类型和认证口令,两边认证类型和认证口令都相同,才意味着身份合法。OSPF的手工认证总共分为三种:
[r1]interface gigabitethernet 0/0/0 --- 进入需要配置认证的接口
[r2-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456 --- 邻居间都需配置,否则无法建立邻居关系
ospf authentication-mode 认证类型 KEY 密码在本地保存形式 密码
认证类型有:null(不认证) ;simple(明文认证) ;MD5(通过比对摘要值的方式进行认证)
KEY:邻居间的KEY需要相同,KEY和密码一起才是认证口令
密码在本地保存形式:simple(明文保存),MD5(只保存摘要值)
[r1]ospf 1
[re-ospf-1]area 2 --- 进入需要配置区域认证的区域
[r1-ospf-1-area-0.0.0.2]authentication-mode md5 1 cipher 123456
[r1-ospf-1-area-0.0.0.1]vlink-peer 2.2.2.2 md5 1 cipher 123456
加快收敛即修改OSPF的计时器,如hello时间、dead时间、Wating time、poll、Retransmit、Trasmit Delay等计时器。
[r1]interface g 0/0/0 --- 在接口修改计时器是因为OSPF在接口的工作方式是独立的
[r1-GigabitEthernet0/0/0]ospf timer hello 5 --- 配置后邻居也需配置,否则无法建立邻居关系
[r1-GigabitEthernet0/0/0]ospf timer dead 20
[r2-GigabitEthernet0/0/0]ospf timer poll ?
INTEGER<1-3600> Second(s)
[r2-GigabitEthernet0/0/0]ospf timer retransmit ?
INTEGER<1-3600> Second(s)
[r2-GigabitEthernet0/0/0]ospf trans-delay ?
INTEGER<1-500> Second(s)
在宣告接口后,就会激活接口收发OSPF数据包的功能,而连接用户网段的接口发送OSPF数据包只会造成链路占用,所以需要在连接用户的接口上配置沉默接口,使这些接口只接收不发送OSPF的数据。
[r1-ospf-1]silent-interface GigabitEthernet 0/0/2
注意: 在RIP中,沉默接口只会不发送组播的RIP组播数据包,但可以发送RIP单播包。而OSPF的沉默接口对单播包和组播包都生效,所以,不能像RIP一样结合单播邻居应用在一些特殊场景中。
OSPF的缺省路由总共可以分为三类:三类缺省、五类缺省和七类缺省。
缺省类型 | 产生方式 | 特点 |
---|---|---|
三类缺省 | 只有在配置特殊区域(末梢区域、完全末梢区域、完全NSSA区域)时会自动产生 | 在路由表中的协议类型:OSPF,默认优先级:10 |
五类缺省 | 通过手工下发,实际上相当于将本地路由表中从其他协议产生的缺省路由重发布到OSPF网络中 | 在路由表中的协议类型:O_ASE,默认优先级:150 |
七类缺省 | 有两种方法产生,一种是同过特殊区域(NSSA和完全NSSA)自动生成,另一种时通过命令进行配置获取 | 在路由表中的协议类型:O_NSSA,默认优先级:150 |
[r1-ospf-1]default-route-advertise --- 在本地存在缺省路由的情况下,将缺省路由重发布到OSPF中
[r1-ospf-1]default-route-advertise always -- 如果本地路由表中没有其他协议产生的缺省路由,则可以通过增加always参数进行强制下发
[r1-ospf-1]area 1 --- 进入NSSA区域
[r1-ospf-1-area-0.0.0.1]nssa default-route-advertise
OSPF可针对三类、五类、七类进行过滤,即使ABR和ASBR不能通告特定的路由信息
[r1-ospf-1]area 1 --- 进入需要过滤路由网段所在的区域
[r1-ospf-1-area-0.0.0.1]abr-summary 192.168.0.0 255.255.252.0 not-advertise --- 使属于该网段的三类LSA不会被通告,该网段可以是汇总也可以使明细路由。
针对3类LSA的过滤 — 明细路由也可以通过这种方法进行过滤;
注意: 五类七类LSA也可以通过类似的方式进行过滤。
[r1-ospf-1]asbr-summary 192.168.0.0 255.255.255.0 not-advertise --- 在使属于该网段的三类LSA不会被通告。
通过修改路由的优先级和开销值已达到我们所以期望的选路。
以下两种修改优先级的方法都是仅影响本地路由表中路由条目的优先级。
[r1-ospf-1]preference 50
这个命令主要影响的是由1类,2类,3类LSA获取到的路由信息,类型字段为:OSPF的路由的优先级。
[r1-ospf-1]preference ase 100
这个命令主要影响的是由5类,7类LSA获取到的路由信息。
OSPF的开销之算法为 参考带宽/实际带宽,实际带宽越大,开销值越小。我们可以通过修改参考带宽和实际带宽或直接修改某接口的开销值来控制选路。
[r1]ospf 1
[r1-ospf-1]bandwidth-reference 1000
[r1]interface g 0/0/0
[r1-GigabitEthernet0/0/0]undo negotiation auto --- 关闭自动协商,注意:这个命令需重启接口生效
[r1-GigabitEthernet0/0/0]speed ? --- 修改接口的带宽,注意,接口带宽只能改小不能改大
10 10M port speed mode
100 100M port speed mode
1000 1000M port speed mode
[r1]interface gigabitEthernet0/0/0 --- 进入需要修改开销值的接口。可以是环回接口
[r3-GigabitEthernet0/0/0]ospf cost 10
OSPF开销值计算的是控制层面流量入接口的开销值
OSPF依据LSA信息进行选路,我们学到的六种LSA可以分为域间路由(一、二类LSA)、域间路由(三类LSA)和域外路由(五类、七类LSA),如果不同类型的LSA携带相同的路由信息,OSPF会如何做选择,有或者两条类型相同的LSA携带相同的路由信息,OSPF又会如何做选择?
优先级: 域内路由 > 域间路由 > 域外路由,当通过不同路由学到了相同的路由信息。选择优先级大的提供的,无论开销值。域外路由中的五类和七类可以看作是一种,开销值相同时会负载均衡。