2024年5月7日发(作者:)

今天去完美面试,面试官问到我一个问题:什么情况下ospf建立邻居后,一条路由能进入路由

器的lsdb,但是不能进入路由表?

我当时思考了一下,觉得确实没有遇到过这个问题,后来回来研究了下,还有根据王淘同学的

实验结果支持,回来我又进一步进行扩展,得出以下实验结论:

两个路由器能建立ospf邻居的5要素:

1,hello和dead interval一致

2,两路由器直连

3,mtu一致

4,认证不认证或者认证方式一致

5,stub flag一致

只要满足以上5个条件,ospf就能建立邻居关系,根你路由器两边配置的网络类型无关.

通过以下实验证明:

环境说明:r1与r2 s1/1口直连,接口地址为192.168.1.0/24网段,两路由器的loopback口地址如

图.

我左边路由器r1的s1/1口我输入ipospf network broadcast把类型改为广播类型,右边路由器

r2的s1/1口我输入ipospf network non-broadcast类型,然后两边正常配置ospf,所有的接口全

部划分到区域0,由于大家是知道的,点到点和广播类型网络ospf的默认hello和dead interval

分别是10s,40s,而其他类型是30s,120s.所以邻居建不起来,但是我在右边路由器s1/1接口输入

命令,ipospf hello-interval 10 和ipospf dead-interval 40,让两边hello和dead interval时间一致

后,两路由器达到full状态.

在r1和r2上看到的结果分别如下:

由次可知,ospf两边网络类型不一致也能达到full状态.

然后我们继续做实验,还是上面那拓扑图,r1还是类型设置为广播,但是r2设置为点到点类型

(使用命令ipospf network point-to-piont),然后两边路由器依然把所有的网段都启动ospf,并且

都划分到区域0,结果是两路由器邻居关系起来了,并且形成full(因为点到点和广播类型hello

和dead interval一致).

但是在r1上和r2上看到的lsdb和路由表分别如下:

r1上:

r2上看到:

由此可以看到,r1和r2的lsdb中都有对方loopback口的网段地址1.1.1.1和2.2.2.2但是路由

表中并没有对方的网段,这应该就是面试官所提到问题的一种产生情况.

我个人推导他产生的原因是:

r1的网络类型是广播,所以要选dr和bdr,但是他认为r2的router-id大,所以r2应该为dr,他自

己为bdr,但是r2的类型是点到点,不需要dr和bdr,导致整个网络只有bdr,而没有dr接收和发

布ospf的lsa,所以相互学习不到路由.