某大型企业ospf面试题分析(含路由策略和路由过滤,及双点双向重发布)
面试问题背景
本面试题来自国内最大通信技术公司之一,央企,有很多金融网项目。
了解行业的同学,一定知道事哪个企业。
上面试问题(取自百哥收集整理的面试总结大全,关注百哥CSDN或知乎,不定期分享名企面经)
问题分析
很显然,按面试总结里的答案,并不是面试官想要的,也并不能解决数据分流与互备的需求。
那么,怎样才能实现呢,一起来分析。
OSPF选举路由优劣的方式,是看cost值,先看下普通的单进程ospf,通过修改cost值是否能实现分流
这里所有接口带宽相同,默认cost相同,所以会形成等价路由,也就是说业务流量上行的时候,两条路都会走。
需求是业务走左边,办公走右边,我们尝试修改接口cost,发现不行,因为这样做的结果是
所有数据都走左边,或者所有数据都走右边,并不能实现不同数据左右分离。
所以,实现分流,必须使用双进程ospf,这样来
如图,启用两个OSPF进程,进程号分别是OSPF 100 和 OSPF 1
两个OSPF进程,LSDB和路由计算是完全独立的,相当于两个不同的路由协议,相当于OSPF和RIP
那么两个进程互相学习对方的路由,就要用路由重发布了(也叫路由重分布、路由引入)
这时,对R4来讲,访问业务服务器和办公服务器的路由,是由两台ASBR,也就是R2和R3,以重发布的方式,通过5类lsa发过来的
这时,R2和R3在做重发布时,给100网段、200网段分别指定不同的cost值。
R2发的100段(业务服务器),cost值小
R3发的100段(业务服务器),cost值大
这样R4就认为,从R2去访问业务服务器更合理,实现业务数据从左边走。
同样的
R2发的200段(办公服务器),cost值大
R3发的200段(办公服务器),cost值小
这样R4就认为,从R3访问办公服务器更合理,实现办公数据从右边走
需求实现
下面来实现一下。
1、ip规划与配置
这里的ip规划是这样的,使用路由器编号进行网段规划,比较直观。
R1和R2互联地址,使用10.10.12.0/24,其中R1是10.10.12.1,R2是10.10.12.2
R1和R3互联地址,使用10.10.13.0/24,其中R1是10.10.13.1,R3是10.10.13.3
R2和R4互联地址,使用10.10.24.0/24,其中R2是10.10.24.2,R4是10.10.24.4
R3和R4互联地址,使用10.10.34.0/24,其中R3是10.10.34.3,R4是10.10.34.4
在R4上使用loopback接口模拟业务、办公数据的终端地址
在R1上使用loopback接口模拟业务、办公数据的服务器地址
地址配置过程略(看这篇文章的同学,ip地址当然会配置,如果不会配置,可以参考公众号“跟百哥学网络”前面几篇)
2、OSPF宣告
R1
这里所有接口都宣告到OSPF 100
R1(config)#router ospf 100
R1(config-router)#network 0.0.0.0 0.0.0.0 a 0
R2
R2是ASBR,上面的接口在OSPF 100,下面的接口在OSPF 1
R2(config)#router ospf 100
R2(config-router)#network 10.10.12.0 0.0.0.255 a 0
R2(config)#router ospf 1
R2(config-router)#network 10.10.24.0 0.0.0.255 a 0
R3
和R2相同
R3(config)#router ospf 100
R3(config-router)#network 10.10.13.0 0.0.0.255 a 0
R3(config-router)#router ospf 1
R3(config-router)#network 10.10.34.0 0.0.0.255 a 0
R4
所有接口都在OSPF 1
R4(config)#router ospf 1
R4(config-router)#network 0.0.0.0 0.0.0.0 a 0
宣告完成后,查看一下每台路由器的邻居是否都正常建立
每个路由器,都有两个邻居
3、路由重发布(也叫路由重分布、路由引入)
在R4上查看路由表,发现并没有100段和200段,也就是业务和办公的服务器网段,因为这是不同OSPF进程的
现在,在R2和R3上,通过重发布的方式,让R4学习到去往100段和200段的路由
R2(config)#router ospf 1
R2(config-router)#redistribute ospf 100 subnets
R3(config)#router ospf 1
R3(config-router)#redistribute ospf 100 subnets
再来查看路由表
这时R4已经学习到了100段和200段的路由,但是还是没有满足需求
没分流啊,没实现访问100走左边访问200走右边啊,现在是两条随机走啊,这可不行,上路由策略
4、路由策略
使用route-map,给100段和200段分别指定不同的cost值,然后做重发布时,调用这个route-map
第1步,使用acl来定义路由条目,直接用拼音来命名吧。
ip access-list standard bangongfuwuqi
permit 192.168.200.0 0.0.0.255
ip access-list standard bangongzhongduan
permit 192.168.2.0 0.0.0.255
ip access-list standard yewufuwuqi
permit 192.168.100.0 0.0.0.255
ip access-list standard yewuzhongduan
permit 192.168.1.0 0.0.0.255
第2步,使用route-map,来给各个路由条目指定cost值
先在R2上做,业务服务器的cost设置小一点,办公服务器的设置大一点
route-map 100to1 permit 10
match ip address yewufuwuqi
set metric 100
route-map 100to1 permit 20
match ip address bangongfuwuqi
set metric 200
含义是,建立一个名字叫100to1的route-map,这个route-map里有两条规则,规则编号分别是10和20
编号10的规则,给业务服务器的网段,设置度量值为100
编号20的规则,给办公服务器的网段,设置度量值为200
没错,这里是用acl来识别网段的
在R3上也建立一下route-map,但是度量值和R2相反
route-map 100to1 permit 10
match ip address yewufuwuqi
set metric 200
route-map 100to1 permit 20
match ip address bangongfuwuqi
set metric 100
最后,重发布的时候,调用这个route-map,就可以按照他指定的度量值,进行重发布了
R2(config)#router ospf 1
R2(config-router)#redistribute ospf 100 subnets route-map 100to1
R3(config)#router ospf 1
R3(config-router)#redistribute ospf 100 subnets route-map 100to1
回到R4上看结果,是否满足分流
可以看出,已经实现了访问100走左边,访问200走右边
至此,分流的关键技术原理和实现,我们已经完成,但是仍要注意,数据要原路去原路回,这也是面试官又把图反过来问了一遍的原因
现在到R1上看回包的路由
发现根本没有ospf的路由,这是因为只做了从进程100到进程1的重发布,现在还需要反着来一遍,就是进程1重发布到进程100
R2的配置
R2(config)#route-map 1to100 permit 10
R2(config-route-map)# match ip address yewuzhongduan
R2(config-route-map)# set metric 100
R2(config-route-map)#route-map 1to100 permit 20
R2(config-route-map)# match ip address bangongzhongduan
R2(config-route-map)# set metric 200
R2(config-route-map)#router ospf 100
R2(config-router)#redistribute ospf 1 subnets route-map 1to100
R3的配置
R3(config)#route-map 1to100 permit 10
R3(config-route-map)# match ip address yewuzhongduan
R3(config-route-map)# set metric 200
R3(config-route-map)#route-map 1to100 permit 20
R3(config-route-map)# match ip address bangongzhongduan
R3(config-route-map)# set metric 100
R3(config-route-map)#router ospf 100
R3(config-router)#redistribute ospf 1 subnets route-map 1to100
再来R1看路由
已经正常学习到分流的路由 ,然后使用ping和tracert测试一下连通性
业务终端 ping 业务服务器
R4#ping 192.168.100.1 source 192.168.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.100.1, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/18/36 ms
办公终端ping办公服务器
R4#ping 192.168.200.1 source 192.168.2.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.200.1, timeout is 2 seconds:
Packet sent with a source address of 192.168.2.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/26/36 ms
再来跟踪一下路由
R4#traceroute 192.168.100.1 source 192.168.1.1
1 10.10.24.2
2 10.10.12.1
R4#traceroute 192.168.200.1 source 192.168.2.1
1 10.10.34.3
2 10.10.13.1
R1#traceroute 192.168.1.1 source 192.168.100.1
1 10.10.12.2
2 10.10.24.4
R1#traceroute 192.168.2.1 source 192.168.200.1
1 10.10.13.3
2 10.10.34.4
5、路由过滤
现在已经实现了数据分流,且来回路径一致,测试一下故障切换
把这个接口shutdown,模拟线路故障,然后测试连通性与路由跟踪
先看连通性,没有问题
R4#ping 192.168.100.1 source 192.168.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.100.1, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/21/28 ms
R4#ping 192.168.200.1 source 192.168.2.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.200.1, timeout is 2 seconds:
Packet sent with a source address of 192.168.2.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/27/36 ms
再看路径,会发现都切换到了右边
R4#traceroute 192.168.100.1 source 192.168.1.1
1 10.10.24.2
2 10.10.12.1
R4#traceroute 192.168.200.1 source 192.168.2.1
1 10.10.24.2
2 10.10.12.1
目前为止一切正常,现在把线路恢复,看路由是否能还原
发现即使线路又恢复了,但是路由还是没有切换,是因为ospf双进程的“先入为主”机制
先入为主就是,ospf从两个进程,学习到了同一条路由,那么将采用先来的。
我们到R2上查看路由表
在R2上,线路恢复后,1.1和2.1的路由,应该是O才对,这里为什么是O E2呢,O E2是外部路由,也就是重发布的啊
原因就是,之前因为线路故障,邻居失效,删除了进程1里的1.1和2.1的路由
但是1.1和2.1又从进程100里学习到了,没错,就是重发布来的
然后线路又恢复了,虽说又从进程1里学习到了1.1和2.1的路由,但是进程100已经先入为主了
所以导致线路恢复但是进程1的路由没恢复,最后出现路由切不回来的问题。
来看一下两个进程的的lsdb
这是进程100的lsdb,发现这里有1.1和2.1
R2#sh ip ospf 100 database | begin Type-5
Type-5 AS External Link States
Link ID ADV Router Age Seq# Checksum Tag
192.168.1.1 10.10.34.3 1252 0x80000001 0x0084C2 0
192.168.2.1 10.10.34.3 1252 0x80000001 0x008D1D 0
这是进程1的lsdb,这里也有1.1和2.1
R2# sh ip ospf 1 database router | include 192.168.1.1
(Link ID) Network/subnet number: 192.168.1.1
R2# sh ip ospf 1 database router | include 192.168.2.1
Link State ID: 192.168.2.1
Advertising Router: 192.168.2.1
(Link ID) Network/subnet number: 192.168.2.1
因为先入为主,最终采用的是进程100里的,这是次优路由
我们要把他过滤掉,不让他从进程100里学习进程1的路由
做法
先做个acl
R2(config)#ip access-list standard deny1
R2(config-std-nacl)#deny 192.168.1.0 0.0.0.255
R2(config-std-nacl)#deny 192.168.2.0 0.0.0.255
R2(config-std-nacl)#permit any
然后把acl,调用在ospf 100的路由过滤策略中
R2(config)#router ospf 100
R2(config-router)#distribute-list deny1 in
再查看路由表,发现进程100的这个路由被过滤掉了,不会写入路由表
进程1的路由出来了
然后所有的路由都正常了
平常,业务和办公实现分流,各走各的专用线路,来回路径一直
当线路故障,可以自动切换到备选线路
当线路恢复,路由也可以自动恢复到主路由,不会再受到ospf多进程先入为主的影响。
获取更多学习资料,欢迎加入技术讨论群:662736393
如有问题,可私信或联系QQ:167748928
如果你看到了这里,百哥想请你帮个小忙:
1.关注百哥,这是一个会陪你至少10年的技术号,定期分享ICT技术。
2.帮我点赞,收藏,分享三连,方便你最快找到百哥,也让更多的人真正爱上ICT技术,学好ICT技术
某大型企业ospf面试题分析(含路由策略和路由过滤,及双点双向重发布)的更多相关文章
- ip route rule 路由策略 高级路由 捆绑 网桥
http://lwfs.net/2005/11/28/10/ #!/bin/bash IP0= IP1= GW0= GW1= NET0= NET1= DEV0=eth0 DEV1=eth1 # com ...
- CCNP路由实验(3) -- 路由控制
1.用distribute-list过滤路由在不同协议里的用法 在RIP里 在EIGRP里 在OSPF里 只接收奇数路由 只接收偶数路由 只接收被4整除的路由2.offset-list在不同协议里的用 ...
- 使用java理解程序逻辑 试题分析
1.编译Java Applet源程序文件产生的字节码文件的扩展名为() A:.java B..class C:Html D:Exe 正确答案:B 试题分析: 本题考查的是Java程序的开发过程.J ...
- Redis面试题大全含答案
Redis面试题大全含答案 Redis面试题大全含答案 1.什么是Redis?答:Remote Dictionary Server(Redis)是一个开源的使用ANSI C语言编写.支持网络.可基于内 ...
- Thinkphp源码分析系列(六)–路由机制
在ThinkPHP框架中,是支持URL路由功能,要启用路由功能,需要设置ROUTER_ON 参数为true. 开启路由功能后,系统会自动进行路由检测,如果在路由定义里面找到和当前URL匹配的路由名称, ...
- Vue ---- 组件文件分析 组件生命周期钩子 路由 跳转 传参
目录 Vue组件文件微微细剖 Vue组件生命周期钩子 Vue路由 1.touter下的index.js 2.路由重定向 3.路由传参数 补充:全局样式导入 路由跳转 1. router-view标签 ...
- CCNP路由实验之八 路由重公布
CCNP路由实验之八 路由重公布 在前面几个实验,已经学习了静态路由和动态路由.如今,我们要掌握怎样使它们在一个网络中融合,即路由重公布. 使用出站口作为静态路由 0 使用下一跳地址作为静态路由 ...
- CCNA - Part12 - 路由协议 (1) - 静态路由,动态路由 RIP
路由器 在之前关于路由器的介绍中,我们知道它是网络互联的核心设备,用于连接不同的网络,在网络之间转发 IP 数据报.对于路由器来说,路由表是其内部最为重要的构成组件.当路由器需要转发数据时,就会按照路 ...
- BGP:我们不生产路由,而是路由的搬运工
1.BGP协议自身不能生产路由,它主要通过配置来将本地路由进行发布或者引入其他路由协议产生的路由. 有两种方法, 方法一.在BGP视图下,通过network命令将本地路由发布到BGP路由表中, 通过本 ...
随机推荐
- 六十来行python代码完成一个文件分类器
你的桌面是否像这样的一样被各种文件给堆满了,但是每一个文件又不清楚是否后面还有作用,也不敢删除,自己一个一个转移又太麻烦了.没关系,今天我带大家用python一起来做一个文件归类器,一键进行 ...
- 在linux下修改文件夹机器子文件夹的权限
使用命令:chmod 用法:chmod [选项]... 模式[,模式]... 文件... 或:chmod [选项]... 八进制模式 文件... 或:chmod [选项]... --reference ...
- P1525 关押罪犯(洛谷)
前几天没做题,神经有点错乱,感觉一片虚无.今天开始继续写博客. 题目描述 S 城现有两座监狱,一共关押着N名罪犯,编号分别为1-N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件 ...
- Guava集合--新集合类型
Guava引入了很多JDK没有的.但我们发现明显有用的新集合类型.这些新类型是为了和JDK集合框架共存,而没有往JDK集合抽象中硬塞其他概念.作为一般规则,Guava集合非常精准地遵循了JDK接口契约 ...
- Vue开发者必会的基础知识盘点
你会Vue吗,你看以下知识点你掌握了多少?实际工作中是否运用的得心应手?如果是,那么恭喜你! Vue中的数据和DOM已经被关联起来,所有的东西都是响应式的.注意我们不再和HTML直接交互.一个Vue应 ...
- vue怎么自定义组件
我们在搭建好的手脚架中 进行使用 一.在src =>components => 创建XXbtn文件夹用来存放你的组件 =>在创建一个vue的文件 . 二.在src => com ...
- Android应用内部实现多语言,一键切换语言,国际化适配
1.首先提供多语言对应的string值 如en对应英语, fr对应法语 两个文件中包含同样的key, 对应不同的语言的value 2.java代码相应用户切换语言动作 private static v ...
- springboot(八)内置SpringMvc静态文件地址修改
参考:作者:恒宇少年链接:https://www.jianshu.com/p/c6ab1081fd5f 介绍: SpringMVC大家都不陌生,而被SpringBoot集成的SpringMVC除了 ...
- 给隔壁的妹子讲『一个SQL语句是如何执行的?』
前言 SQL作为Web开发是永远离开不的一个话题,天天写SQL,可是你知道一个SQL是如何执行的吗? select name from user where id = 1; 上面是一个简单的查询语句, ...
- 做完这套面试题,你才敢说懂Excel
下面的题目来自一份商品专员的面试题,其中有涉及到条件格式.自定义排序.数据验证制作下拉菜单.查找引用类函数.文本提取函数等等技能. 满满的干货技能可不是商品专员“专属”,如果你能熟练掌握,在平日工作中 ...