作为网络工程项目的设计师,如果能够从网络技术的基本原理和科学方法来规范网络工程项目的规划设计是非常重要的!因为它能最大程度规避许多潜在的“坑”或者说风险吧。但是很不幸的是,网络工程项目的负责人往往并非是网络方面的专家,亦或者并没有听从网络工程师的合理建议,最终导致实际中的网络设计存在很大的缺陷。
所以你面对这种情况,也无可奈何,毕竟是历史遗留问题,而找到合理的解决办法才是当下最重要的!虽然冒着巨大的风险去承担风险,但是你要相信这不是你的错,你只是为了解决当下最重要的矛盾问题而对网络进行优化改造。当然记得保护自己,向你的直接负责人说清楚问题所在,然后申请合理的变更时间进行重新优化配置。
我今天要讨论分析的问题就是现实中遇到的一个案例,为了隐私和保密考虑,我们只能从技术角度去分析为什么这样的网络设计是存在巨大缺陷的,我们该怎么去解决遇到这样的问题。当然这个案例中涉及的网络规模和架构非常庞大,但是并不妨碍我们从技术角度去简化分析它。因此,我们用简单的网络结构来分析它并给出解决的办法。
实验拓扑图
实验目的
从上图我们看到,该实验环境存在巨大的设计缺陷。在OSPF网络设计中,骨干区域0与必须与其它非骨干区域直接相连,而图中的情况恰恰违背了OSPF设计最基本的常识。注意是作为网络工程师最基本的常识,但是现实中仍然违背了这样的设计原则,造成业务访问出现问题。我们就针对上图来进行分析和提出解决办法(我们不提倡等到犯错了之后再去挽救,因为这样做会承担巨大的风险和成本)。
实验配置
AR1的配置:
interface Serial2/0/0
link-protocol ppp
ip address 10.0.12.1 255.255.255.0
ospf authentication-mode md5 1 plain huawei
#
interface LoopBack0
ip address 10.1.1.1 255.255.255.0
ospf network-type broadcast
#
ospf 1 router-id 10.1.1.1
import-route static
area 0.0.0.0
network 10.0.12.1 0.0.0.0
network 10.1.1.1 0.0.0.0
#
ip route-static 10.0.0.0 255.0.0.0 NULL0
#
AR2的配置:
interface Serial2/0/0
link-protocol ppp
ip address 10.0.12.2 255.255.255.0
ospf authentication-mode md5 1 plain huawei
#
interface Serial2/0/1
link-protocol ppp
ip address 10.0.23.2 255.255.255.0
#
interface LoopBack0
ip address 10.0.2.2 255.255.255.0
#
ospf 1 router-id 10.0.2.2
area 0.0.0.0
network 10.0.2.2 0.0.0.0
network 10.0.12.2 0.0.0.0
area 0.0.0.1
network 10.0.23.2 0.0.0.0
#
AR3的配置:
interface Serial2/0/0
link-protocol ppp
ip address 10.0.23.3 255.255.255.0
#
interface GigabitEthernet0/0/0.10
dot1q termination vid 4
ip address 10.0.4.1 255.255.255.0
arp broadcast enable
#
interface GigabitEthernet0/0/0.20
dot1q termination vid 5
ip address 10.0.5.1 255.255.255.0
arp broadcast enable
#
interface GigabitEthernet0/0/0.30
dot1q termination vid 6
ip address 10.0.6.1 255.255.255.0
arp broadcast enable
#
interface LoopBack0
ip address 10.0.3.3 255.255.255.0
ospf network-type broadcast
#
ospf 1 router-id 10.0.3.3
area 0.0.0.0
abr-summary 10.0.4.0 255.255.252.0
network 10.0.3.3 0.0.0.0
network 10.0.4.1 0.0.0.0
network 10.0.5.1 0.0.0.0
network 10.0.6.1 0.0.0.0
area 0.0.0.1
network 10.0.23.3 0.0.0.0
#
LSW1的配置:
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 4 to 6
#
interface GigabitEthernet0/0/2
port link-type access
port default vlan 4
#
interface GigabitEthernet0/0/3
port link-type access
port default vlan 5
#
interface GigabitEthernet0/0/4
port link-type access
port default vlan 6
#
AR4的配置(模拟普通PC):
interface GigabitEthernet0/0/0
ip address 10.0.4.4 255.255.255.0
#
interface LoopBack0
ip address 10.1.4.4 255.255.255.0
#
ip route-static 0.0.0.0 0.0.0.0 10.0.4.1
#
AR5的配置(模拟普通PC):
interface GigabitEthernet0/0/0
ip address 10.0.5.5 255.255.255.0
#
ip route-static 0.0.0.0 0.0.0.0 10.0.5.1
#
实验分析
我们看下,AR1的路由表和AR3的路由表、LSDB:
AR1的路由表和LSDB
AR3的路由表
AR3的LSDB
从AR1和AR3的路由表和LSDB,我们很容易看出AR3有学到AR1的路由以及传递过来的LSA,但是AR1却没有AR3的汇总路由及其通告的路由及LSA。而图中违背了OSPF区域设计基本规则,即骨干区域只有一个,区域0,非骨干区域必须直接与骨干区域直连,也就是常说的向日葵模型。
但是上面的实验拓扑中,区域0被区域1分割,导致出现了两个区域0。这样为了避免出现环路,势必会导致触发OSPF防环机制,导致一部分路由学习存在问题。为了解决该问题,常见的解决办法就是建立虚链路和通过隧道打通两个分割的区域0直接逻辑相连。
虚链路解决办法:
AR2:
ospf 1 router-id 10.0.2.2
area 0.0.0.0
network 10.0.2.2 0.0.0.0
network 10.0.12.2 0.0.0.0
area 0.0.0.1
network 10.0.23.2 0.0.0.0
vlink-peer 10.0.3.3 (只需配置该命令)
AR3:
ospf 1 router-id 10.0.3.3
area 0.0.0.0
abr-summary 10.0.4.0 255.255.252.0
network 10.0.3.3 0.0.0.0
network 10.0.4.1 0.0.0.0
network 10.0.5.1 0.0.0.0
network 10.0.6.1 0.0.0.0
area 0.0.0.1
network 10.0.23.3 0.0.0.0
vlink-peer 10.0.2.2(只需配置该命令)
配置完成后,查看AR1的路由表,我们发现AR1的路由表学习正常:
AR1路由表及LSDB
AR1 PING 测试正常
隧道解决办法:
AR2配置:
interface Tunnel0/0/0
ip address 192.168.100.1 255.255.255.0
tunnel-protocol gre
source 10.0.23.2
destination 10.0.23.3
ospf 1 router-id 10.0.2.2
area 0.0.0.0
network 10.0.2.2 0.0.0.0
network 10.0.12.2 0.0.0.0
network 192.168.100.1 0.0.0.0
area 0.0.0.1
network 10.0.23.2 0.0.0.0
AR3的配置:
interface Tunnel0/0/0
ip address 192.168.100.254 255.255.255.0
tunnel-protocol gre
source 10.0.23.3
destination 10.0.23.2
ospf 1 router-id 10.0.3.3
area 0.0.0.0
abr-summary 10.0.4.0 255.255.252.0
network 10.0.3.3 0.0.0.0
network 10.0.4.1 0.0.0.0
network 10.0.5.1 0.0.0.0
network 10.0.6.1 0.0.0.0
network 192.168.100.254 0.0.0.0
area 0.0.0.1
network 10.0.23.3 0.0.0.0
配置完成后,测试验证:
AR2、AR3通过隧道建立邻居
AR1的路由表和LSDB
从测试结果来看,两种解决办法都实现了同样的效果,即通过逻辑方式实现了区域0不被分割。不过实际中,存在的问题可能更趋复杂。比如当被分割的区域0中的其中一方由于设备性能问题,不一定能直接采用上述办法,因为骨干区域存在大量的路由条目,一旦引入过来能否承受巨大的路由条目是需要慎重考虑的。
静态路由配置解决AR1路由器不能访问AR3右侧的10.0.4.0/22网段:
AR1的配置:
ip route-static 10.0.4.0 255.255.252.0 10.0.12.2 preference 5
AR2的配置:
ip route-static 10.0.4.0 255.255.252.0 10.0.23.3 preference 5
测试验证效果:
AR1 路由表及PING测试
AR2路由表及PING测试
这个时候应该采用临时办法,比如采用静态路由方式手工打通部分网段的通信问题。而不能直接采用上述两种办法,需要综合评估采取最佳策略。
实验总结
- 通过虚链路和tunnel GRE隧道可以解决区域0直连问题。
- 区域0如果被分割,会导致部分路由学习存在问题导致出现网络问题,实践中应在设计阶段规避掉。
- 实践中碰到的问题可能更趋复杂,需要综合评判采取最佳策略解决问题。