通过GRE建立ospf邻居关系时,因为错误端口宣告导致的频繁重新建立

通过GRE建立ospf邻居关系时,因为错误端口宣告导致的频繁重新建立,第1张

通过GRE建立ospf邻居关系时,因为错误端口宣告导致的频繁重新建立

上面的三个路由器中,中间的路由器仅仅配置了静态路由,而左右两边的路由器配置了静态路由,因此三个路由器可以互相的ping通。

然后我在左右两边的路由器上面创建GRE隧道。

然后我在左右两边的路由器上进行ospf *** 作,然后将所有的端口宣告出去。有意思的地方来了。

左边的路由器将ospf的相关协议报文使用GRE隧道封装出去,然后到达右边的路由器,它们的所有协议报文使用GRE隧道进行协商。到最后它们会建立ospf邻居关系,而它们建立邻居关系的接口是隧道接口,也就是tunnel口,虽然在底层承担数据通信的接口是它们的边界接口。当它们使用隧道接口进行ospf邻居关系建立的时候,它们的底层接口所处的网段就相当于是一个末梢网络会被隧道接口宣告出去,然后还会被路由器学习到路由表中,这个到底有什么问题呢?

我们知道GRE隧道开启的前提条件是路由表中有对应的表项,我们一开始配置的是静态路由,下一条是中间路由器的接口,当使用了GRE隧道将路由器上边界接口所处的网段宣告出去之后,路由器学习到这条路由之后,默认路由还是存在,但是却有了一条具体的路由条目,比如左边的路由器上面就有这样一条路由 :去往10.0.1.2 的下一跳时直接从tunnel口发送出去。

但是这个其实就是一个先有鸡还是先有蛋的问题,我们知道tunnel隧道添加的新的IP头部时依靠它的路由表的,也就是说要先有一条可以用的路由条目,才会有tunnel口,现在好了,你直接下一跳变成tunnel口,这不是乱搞吗?于是tunnel就直接down掉了。于是邻居关系也会down掉,但是down掉之后,于是ospf的路由全部都会消失掉,然后tunnel口又发现了那条默认路由,然后它们又尝试建立ospf邻居关系,然后关系又建立了,然后它又学习到了这个路由,然后又down掉了,就这样不停的反复。

解决方法

这里最主要的问题就是将路由器的边界接口也宣告到ospf中,这就使得路由表发生了变动,我们在ospf中宣告路由的时候,不能能将边界接口宣告出去,其实虽然路由器之间是使用GRE隧道建立邻居关系,但是本质还是通过边界接口建立邻居关系,所以我们根本没有必要将边界接口宣告出去,只要宣告隧道接口IP,用作邻居关系维持的接口即可。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5672262.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存