你口中的“邻居”关系,其实是“邻接”关系
各位小伙伴在学习OSPF过程中,经常会说路由器之间会形成“邻居”关系,其实这种说法是不准确的,大部分人要表达的应该是“邻接”关系,小伙伴之前有意识到这两者的区别吗?
“邻居”和“邻接”, 虽然在中文里差的不多,但是在英文里它们是两个完全不同的单词,没有任何的联系:
- “邻居”,英文是“Neighbor”;
- “邻接”,英文是“Adjacency。
在OSPF世界里,它们的区别也比较大,可以说是两个完全不同的状态,我们来一起看一下!
邻居关系止步于“2-Way", 邻接关系包含整个过程
OSPF状态机
买过我专栏的小伙伴都应该知道,OSPF在形成邻居关系时有8个状态,在每个状态都会做不同的事情。如果没有购买,可以参考一下专栏里的第4节内容:掌握OSPF的8个邻居状态,OSPF就学会了一半。
如在上图中的“2-Way"状态,表明两台OSPF路由器已经建立双向的通信,并且选取了DR/BDR。此时我们就可以说路由器之间形成了"neighbor"(邻居)关系。
两台路由器之间经过"neighbor"(邻居)关系以后,还必须经过ExStart、Exchange,Loading、Full四个状态,完全LSDB的同步,才能称它们是“邻接”(adjacency)关系。
也就是说“邻接”关系指的是OSPF路由器之间交互信息的整个过程,而“邻居”关系只需要两台路由器进入“2-way”状态就可以了, 不需要交互LSA信息。
这样小伙伴明白我开头说的,大部分人都说错的原因了吧!我们平常说的“邻居”关系,其实指的是交换了LSA信息的“邻接”关系!
那为什么路由器之间形成“邻居”(neighbor)关系就可以了呢?这就涉及到DR/BDR的内容了!
同一个LAN上,所有的OSPF路由器需要和DR/BDR形成“邻接”关系
稍微了解OSPF的小伙伴都会知道DR/BDR,它们是为了节省资源而出现的概念!例如下图,如果没有DR/BDR, 在同一个LAN上的4台路由器,两两之间都要形成“邻接”关系,对资源是极大的浪费! 形成多少个“邻接”关系,可用“n(n-1)/2”公式计算。
两两形成邻接关系
而如果有了DR/BDR以后,所有的OSPF路由器(DR Other)只需要和DR/BDR交换LSA就行了,它们(DR Other)之间没有必要交换LSA,这样就能节省很多的资源。
为了简洁,只列出DR
这样其它的路由器(DR Other)之间,只需要形成“邻居”(neighbor)关系就可以了,不需要继续交互下去了!
从上面我们可以看出,并不是所有的路由器之间都是需要形成“邻接”关系的,有时”邻居“关系也是足够了。
邻居和邻接状态
总结
如果你在工作中,听到有小伙伴说OSPF路由器形成“邻接”关系,那毫无疑问,这个人一定是独立独行的高手,一定要多和他交流网络知识,因为大部分人还是都是顺大流的说“邻居”,不会那么严格的区分!