ospf ccnp 三
上图中 rip域中的不连续的100条路由 在a1中导致LSDB太大 在保证网段的可达性的前提下 尽可能减少区域内路由器的lsdb 可以将a1设置为stub区域
r3中有rip传过来的100条路由(5类lsa) 但是r1和r2没有必要有这些LSA 因为无论如何都要将报文传递给r3
A stub区域
设置stub
1.区域内只有一条ABR 导致不会有次优路由存在(前提条件) 或者还有多个ABR(不建议 但可以有)
2.区域内的所有路由器都要设置为stub区域 (原理为建立邻居中相同的区域网络类型 都是stub才能建立链接)
3.区域内不能有ASBR
4.非骨干区域 即不能是area0 传输区域 area0的作用之一就是为不同的区域传输数据 要求拥有所有的路由 LSDB是域内都是一致的也是 最全的 如果设置为stub之后 就不能有5类lsa 所以不能设置
5.区域内没有虚链路 即 此区域外不能再连接一个常规区域 例如area3--area1--area0---area2
其中area1就不能设置为stub
在上图中 r1和r2没有rip明细路由 但是r3 (此abr)有 同时r3会向r1和r2下放一条缺省路由
stub区域会把5类和4类的LSA都过滤掉 但是abr会有路由
实验
上图中将area1 区域设置为stub区域
ip地址和ospf rip 以及重分发做完之后
命令:r2:#router ospf 110
#area 1 stub
此时需要将r4同时设置为末节区域
r4:#router ospf 110
#area 1 stub
实验中r2给r4下放的缺省路由是 O* IA 0.0.0.0/0 【110/65】via 24.1.1.2 -----
此时度量值为65=64+1 由abr r2创建 并且串口相连 所以seed metric为1
总结 stub区域:如果将一个ospf区域部署为stub 该区域的ABR会将入区域方向的4/5类LSA同时过滤 同时该ABR会主动向区域内部奉送一个 O IA的0.0.0.0/0的3类缺省路由 seed Metric为1
问题2 在最上面的图中 存在一种情况 如果 一个区域内有两个ABR 假定为r4 r3和r4同时向a1内发送缺省路由 并且缺省路由的seed metric度量值都是1 导致其他路由器访问其他区域的路由器时会选路 可能会选择转发路径不好的路由 缺省路由是以3类lsa发送的 不会进行spf算法计算 仅仅接收到此lsa的同时添加网段的度量值 再加入路由表 此为贝尔曼福特算法 很可能选到不好的路由
如果一个区域存在多台ABR 防止产生次优路径的方法如下
通过修改下放缺省路由的seed metric的值----原则谁下放的 在谁上修改
实验2 在第2个图中
r2#router ospf 110
#area 1 default-cost 36 当在区域1下放缺省路由时候 度量值改为36
在第一个图中 想让r3优选 r3down时再选择r4 就需要将r4下放的缺省路由改为比r3下放的缺省路由seed metric值大即可
B TOTALLY STUBBY AREA 完全stub区域
stub只限制了外部路由 同时3类lsa同样可以进入
所以ABR 还可以过滤掉3类lsa 此时为完全stub区域 即totoally stubby area
只需要在stub的基础上 在ABR上同时过滤3类lsa即可
命令:
r2#router ospf 110
#area 1 stub no-summary 3 4 5类lsa都会过滤掉
总结:totally stub区域 在stub区域的基础上ABR路由会同时将3/4/5类入向传递的LSA过滤掉 同时会主动向该区域注入一 条 0.0.0.0/0 O IA 的缺省路由 seed metric缺省也为1.
配置案例1
配置案例2
两个abr 由于r2度量值为5 r4下放的缺省路由 seed metric设置为10 所以优先选择r2
C NOT-SO-STUBBY AREAS NSSA区域
案例拓扑图
其中r1为translator 如果area2中有多个ABR 要选举translator 根据路由器ID的大小 谁大是谁
命令:
r4配置
#int lo 100
#ip add 100.1.1.4 255.255.255.0
#int lo 200
#ip add 200.1.1.4 255.255.255.0
#router eigrp 90
#no auto-summary
#network 100.1.1.4 0.0.0.0
#network 200.1.1.4 0.0.0.0
#router ospf 110
#redistribute eigrp 90 subnets 注意做之前需要先no掉此区域的stub属性
此时r3上有此路由
area2 设置为nssa区域
r1#router ospf 110
#area 2 nssa
r3#router ospf 110
#area 2 nssa
eigrp的路由在r3上就不存在了
在r3上检验 show ip route
show ip ospf database
出现了7类LSA 与5类的lsa的区别 是后面关联区域 即7类lsa只存在nssa内部
详细信息中 forward address :环回口地址 而5类lsa中为全0
在路由器r1上show IP route 可以看到on2标记的路由条目
O N2 35.1.1.0---
O N2 5.5.5.0-----
OE1----ON1 ON2----OE2互相对应
在r2上查看 show ip route
会显示O E2 35.1.1.0 ----
O E2 5.5.5.0----
证明 O N2只存在与area2中 即nssa中 并且r1将其转换为5类lsa 发送到area0和area1中
注意在图中 r2上 show IP ospf border-routers
显示r3是asbr r1是ABR/ASBR WHY?
ASBR定义: 一台路由器只要可以产生5类LSA 则该路由器就是ASBR
nssa区域中的7类lsa的adv router 是r3 当被转换为5类LSA之后 ADV ROUTER会变为r1 可以在r2上验证
当r2和r4想访问rip中的路由时 虽然r1是伪ASBR 但是报文最终需要发给r3 所以forward address被设置为3.3.3.3 就是表明真实的ASBR的地址
nssa路由器内部每台路由器都可以成为ASBR
问题2
在上图中的r1中 运行rip协议
r4中eigrp的ip地址网段为100.1.1.0 和200.1.1.0/24 以5类lsa的形式发送 但是由于nssa 区域的存在导致
r3没有此路由 如何让r3能够访问这两个网段
命令:在设置nssa区域的时候
由于r1是ABR 拥有全网的路由条目
r1#area2 nssa default-information-originate 用此命令的原因 :由于r1过滤的来自eigrp的5类和4类的LSA
R4不能与r3通信
产生缺省默认路由 全0/0的默认路由 必须下放此路由
#area 2 nssa default-information-originate no-redistribution
针对r1中rip协议中的路由条目不用重分发进area2 即想要访问这些地 址 只需要把报文发送给r1 就可以 由r1下发默认路由
NSSA细节
1.O N2(度量值不能累加)转换为O N1(度量值可以累加)
#area 2 nssa default-information-originate metric-type 1 改类型
#area 2 nssa default-information-originate metric 36 metric-type 1 修改度量值
2.forward address 不设置 在本例中由于r2和r4访问r5需要将包发给r1 r1有r3发过来的1类lsa 所以r1知道r3的 位置 forward address不需要被设置 将其设为0即可 将这些路由以常规的外部路由在其他区域进行传递
2.forward address 不设置 在本例中由于r2和r4访问r5需要将包发给r1 r1有r3发过来的1类lsa 所以r1知道r3的 位置 forward address不需要被设置 将其设为0即可 将这些路由以常规的外部路由在其他区域进行传递
方法:
#area 2 nssa translate type7 suppress-fa
转换器r1 在将7类lsa转换完成之后 需要抑制其中的forward address地址
在r2上验证 show ip ospf database external
35.1.1.0 其中的forward address 3.3.3.3 变成0.0.0.0
好处是:a 节约了一点cpu的资源
b 隐藏了真实的ASBR 安全性增加
注意r1重分发r1上设置的rip路由时 在area0中检测时 其forward address为0 只有纯粹的nssa区域的内部路由ASBR 重分发时 才携带forword addresss参数
D totally NSSA 区域
过滤3 4 5类lsa 默认在此区域内主动下放 默认路由 全0/0 seed metric为1
在改区域的ABR上部署命令 area 2 nssa no-summary
命令参数的使用:
default-information-originate 默认在ABR向nssa区域内下放缺省的路由
no-redistribution 在ABR/ASBR上 优化内部路由条目 所以可以和第一个参数共同使用
no-summary 区域变为totally nssa区域 主动下放默认路由 2和3参数可以共同使用
translate
加表路由优先级
O>O IA> O E1/E2= O N1/N2
区域优选选择顺序
totally nssa> totally stub>nssa>stub
总结:NSSA区域 在nssa区域内可以拥有ASBR 并且重分发进入OSPF的路由是以7类LSA形式存在 该类型的LSA 只能存在于NSSA区域内 并且该区域所有ABR会通过比较RID选举出一个转换器 (最大RID者),该转换器会将内部传递给外部的nssa lsa 转化成5类lsa并且通告给其他区域 所有该区域内的ABR都会过滤从外部进入该区域的4/5类lsa 但是该区域的任何abr都不会主动向内部下放缺省路由 为了实现内部路由器的外网可达性 需要在该区域ABR 上手工下放缺省路由 ,
O N2 0.0.0.0/0 seed metric=1
Totally NSSA区域 给予nssa区域的概念基础 ABR会主动阻止3/4/5类LSA进入该区域 并且ABR会主动向区域内下放 O IA 0.0.0.0/0 SEED METRIC=1的缺省路由
配置案例:
E ----DEFINING VIRTUAL LINKS
1.远离骨干区域的非骨干区域
2.被分割的area0
1.在出现问题的abr上(没有和area0直连的ABR上),使用双OSPF进程,并且执行单点双向重分发。
r5#router ospf 100
#router-id 95.5.5.5
#network 35.1.1.5 0.0.0.0 area 3
r3#router ospf 100
#router-id 3.3.3.3 注意不能和ospf进程110中的router-id一致
#network 35.1.1.3 0.0.0.0 area 2
#redistribute ospf 110 subnets 将110进程的路由条目宣告进100进程中
#router ospf 110
#redistribute ospf 100 subnets 将100进程的路由条目宣告进110进程中
此时r1-r4中都有到r5的路由条目 r5中也有其他的路由条目但是都是OE2形式存在的 不精确 会影响r5的次 优路由选择 seed metric 所以此种方式不推荐使用
2.第2种解决方案
在出现问题的ABR上建立以个Tunnel链路连接到离其最近的AREA 0中的ABR路由器上,在这两台ABR上对 Tunnel配置ip地址为同一个IP子网段 并且将其宣告进OSPF的区域0. tunnel是二层链路
r1#interface tunnel 1
#tunnel source 1.1.1.1 源地址
#tunnel destination 3.3.3.3
r3#interface tunnel 3 标示只具有本地意义
#tunnel source 3.3.3.3 源地址
#tunnel destination 1.1.1.1 目的地址
需要给二层的tunnel链路 配置ip地址
r1#interface tunnel 1
#IP add 31.1.1.1 255.255.255.0
r3#interface tunnel 3
#IP add 31.1.1.3 255.255.255.0
宣告接口进入ospf域内
r1#router ospf 110
#network 31.1.1.1 0.0.0.0 area 0
r3#router ospf 110
#network 31.1.1.3 0.0.0.0 area 0
注意 此时会导致邻接关系反复重启 需要将tunnel的源和目的地址取消宣告 即环回口地址
no network 1.1.1.1 0.0.0.0 area 0
no network 3.3.3.3 0.0.0.0 area 2
但是此时又没有去往环回口的路由 所以需要手工创建静态路由 (此种方式适合中间路由少的情况)
r3#IP route 1.1.1.1 255.255.255.255 serial 1/0 13.1.1.1
r1#IP route 3.3.3.3 255.255.255.255 serial 1/1 13.1.1.3
此种方式太繁琐 不建议使用 只是提供一种思路
*****3. 使用virtual-link 在出问题的ABR一级离他最近的Area 0中的ABR上部署
virtual-link只能属于area0 必须跨越一个区域 不能跨越骨干区域 不能跨越特殊区域 只能跨域非骨干的 常规区域 此链路只能在属于一个区域内的两台路由器之间建立
命令:
r1#area 2 virtual-link 93.3.3.3
r3#area 2 virtual-link 91.1.1.1 指定要连接的路由器id
验证:
r1#show ip ospf virtual-links
显示关键信息:adjacency state full(hello suppressed) 邻接关系完全建立 hello报文被抑制因为没必要
donotage lsa allowed 没有dead时间
satae point-to-point
r1#show ip ospf database
其中包含(DNA)的记录就是virtual-link发送的lsa dead-time 没有或者不变
F----OSPF 认证 authentication
1.基于链路的明文认证
在接口级别上配置
r2#ip ospf authentication-key cisco 设置秘钥
#ip ospf authentication 设置类型
r4上也要配置相同的命令
2.基于链路密文认证
r1#int serial 1/1
#ip ospf message-digest-key 13 md5 cisco 13为keyid 需要两端都一致
#ip ospf authentication message-digest 启用密文认证
在r3上做同样的命令操作
3.区域级别的明文认证
在接口中定义秘钥 在ospf进程中启用认证声明
r1#interface serial 1/1
#ip ospf authentication-key h3c
#router ospf 110
#area 0 authentication
r2#int serial 1/1
#ip ospf authentication-key h3c
#exit
#router ospf 110
#area 0 authentication
链路两端的秘钥需要一致 但是在区域中的其他不同网段中秘钥可以不一样 区域内声明的秘钥类型需要 一致
密文认证
r2#IP ospf message-digest-key 12 md5 cisco
#area 0 authentication message-digest
4.虚链路的认证 在配置虚链路过程中做
明文:
r3#router ospf 110
#area 2 virtual-link 91.1.1.1
#area 2 virtual-link 91.1.1.1 authentication-key cisco
#area 2 virtual-link 91.1.1.1 authentication
只有在vl初始化建立邻接关系的时候有效 建完邻接关系之后再做无用
密文:r1#router ospf 110
#area 2 virtual-link 93.3.3.3 message-digest-key 1 md5 cisco
#area 2 virtual-link 93.3.3.3 authentication message-digest
情况1 area0启用了基于区域的认证 那么就表明区域内的所有路由器都启用了认证 只需要在路由器的相应 的接口配置相应的秘钥即可 由于虚链路包含在area0之内的虚拟逻辑链路 要求r1和r3之间做virtual-link认证
由于area0已经启用了认证 所以r1和r3不需要声明虚链路认证 只要配置秘钥即可