华为技术篇之 OSPF 协议入门
1.1. OSPF 入门童话
可以把整个网络(一个自治系统 AS)看成一个王国,这个王国可以分成 b
几个区(area),现在我们来看看区域内的某一个人(你所在的机器 root)是怎样
得到一张世界地图(routing table)的。
首先,你得跟你周围的人(同一网段如 129.102)建立基本联系。你大叫
一声“我在这!”(发 HELLO 报文),于是,周围的人知道你的存在,他们也会大叫,
这样你知道周围大概有哪些人,你与他们之间建立了邻居(neighbor)关系,当
然,他们之间也有邻居关系。
在你们这一群人中,最有威望(Priority 优先级)的人会被推荐为首领
(Designated Router)首领与你之间是上下级关系(adjacency 邻接),它会
与你建立单线联系,而不许你与其它邻居有过多交往,他会说:“那样做的话,
街上太挤了”。
你只好通过首领来知道更多的消息了,首先,你们互通消息,他告诉你他
知道的所有地图的地名,你也会告诉他你现知道的地名,当然上也许只有你一
个点。(Database Description 数据库描述报文)
你发现地名表中有你缺少的或比你新的东西,你会问他要一份更详细的资
料,他发现你的地名表中有他需要的东西,他也会向你索求新资料。(Link
State Request 连接状态请求报文)
当然,你们毫不犹豫地将一份详细资料发送给对方。(Link State Update
连接状态升级报文)
收到地图后,互相致谢表示收到了。(Link State Ack 连接状态响应报文)
现在,你已经尽你所能得到一份地图(Link State DataBase 连接状态数据
库),你去查找地图把到所有地方的路挑一条最近(shortest path 最短路)
的,记为一张表格(routing table 路由表),当然以后查这份表格就知道到
目的地的一条最近的路了。地图也要收好,万一表格上的某条路不通了可以通
过图去找一条新的路。
其实跟你有联系的,只是周围一群人,外面的消息要通过首领来知道。因
为你的地图是跟首领的一致,我们假设你是首领,你要去画一份世界地图。
你命令所有手下向你通报消息,你可以知道你这一群人的任何一点点小动
静(event 事件)。你手下还会有同时属于两群人的家伙(同一区内两网段),
他会告诉你另一群人的地图,当然也会把你们这一群人的地图泄露,(不过,无
所谓啦)。这样,整个区的地图你知道了(对于不知道的那也没办法,我们尽力
了)。