网络通信——OSPF协议(基础篇)
这里基础是因为没有讲解OSPF中的具体算法过程,以及其中很多小细节。后续会更新。
目录
一.OSPF的基础信息
二.认识OSPF中的Router ID
三.OSPF中的三张表
四.OSPF中的度量方法(计算开销值)
五. OSPF选举DR和BDR(就是这个区域的老大和老二)
(1)首先我们需要知道在OSPF中为什么需要这个DR和BDR。
(2)如何选举DR和BDR
(3) 区分选举Router ID和选举DR/BDR
六. OSPF邻接建立过程(五种数据包,七中状态过程)
(1)五种数据包
(2)OSPF的Hello包(这个hello包的作用)
(3)OSPF的建立过程
一.OSPF的基础信息
OSPF的链路类型:链路状态路由协议
注意:距离矢量协议(如RIP)不同,OSPF使用链路状态算法,所有路由器都有相同的网络拓扑视图,从而计算出最短路径。可以说是RIP的超级升级版本。
OSPF是由IETF开发链路(邻居路由器的线路 )状态(ip地址,子网掩码) 路由协议
采用SPF算法(Dijkstra算法)计算到达目的地最短路径
链路(link)——路由器接口
状态(state)——描述接口及邻居路由器之间的关系
二.认识OSPF中的Router ID
首先R1开始只知道直连的网段(10,20,30),相互交换,通过路由学习,放在链路状态数据库。当链路收敛时,每个路由器都对网络有个完整的认识。每个路由器都有一个编号,表示路由器本身,叫Router ID
Router ID(RID):是OSPF区域内唯一标识一台路由器的IP地址
重点:Router ID 选取规制
1.手动自己用命令选定的Router ID,最优先
2.路由器上的回环地址(就是虚拟接口的ip eg:-int l0)
3.活动的物理接口最大的IP地址为Router ID
三.OSPF中的三张表
1.邻居表
列出本地路由器全部的已经建立邻接关系的邻居路由器信息
2.链路状态数据库(LSDB)LSA:链路状态信息
列出网络中所有的路由器的信息,有一个完整的网络拓扑认识
3.路由表
通过SPF算法,计算出到达每个网络的最佳路径。
四.OSPF中的度量方法(计算开销值)
之前的RIP的开销值是通过条数决定,这其实是有局限性的,由于是根据条数,如果说这条链路的宽带一条是100M(条数为2),另外一条是200M(条数为3)。由于RIP根据条数决定优先路线,导致流量会走100M这条路线,但其实最优的应该是200M。这就是RIP其中的局限性。
为了解决这个问题,OSPF的度量值计算要更加科学合理。
Metric Cost= 参考带宽(10^8b/s=100mb)/ 接口带宽 (<1的Cost=1);
OSPF协议的最短路径就是基于路由器的每一个接口指定的开销(cost)置计算出来的;
一条路由的开销:是指沿着到达目的网络的路由路径上的所有出站接口的开销之和
五. OSPF选举DR和BDR(就是这个区域的老大和老二)
DR(Designated Router)指定路由器
BDR(Backup DR)备用指定路由器(当老大DR挂掉的时候,BDR就会接任DR的位置)
DRother(除了DR和BDR的其他路由器)
(1)首先我们需要知道在OSPF中为什么需要这个DR和BDR。
DR的作用:多路访问中减少邻接关系;
BDR其到备份的作用(备胎)
上面是一个简单的网络拓扑,我前面也讲了由于OSPF协议最优路径是通过STP算法进行的计算,既然是计算,肯定是需要参数的,这里参数就是通过数据包进行传递,如果说没有DR和BDR,想要让这个区域的路由器知道整个的网络拓扑,意味着,一个路由器,会将自己的路由信息发送给除它外其他的路由器,这样意味着整个网络中会充斥这个数据包,影响网络效率。
为了解决这个问题,就在这个区域选举DR和BDR这两个话事人,DRother们只需要于DR和BDR说就行,再通过DR和BDR汇众之后,同一发给DRother们,这样大大减少了网络中的数据包。
(2)如何选举DR和BDR
通过组播发送Hello包
1.具有最高OSPF优先级(路由器的接口优先级(越大越优先)(默认情况下是1(范围0~255)))的路由器会选为DR
2.若最高OSPF优先级相同,那具有最高Router ID的路由器选为 DR
组播地址
224.0.0.5 DRother和DR,BDR之间通信(员工与管理员一起的群)
224.0.0.6 DR和BDR通信(管理员们的群)
(3) 区分选举Router ID和选举DR/BDR
Router ID:这个区域中,路由器的标识号ID,也就是你的身份证号。
DR和BDR:这个区域中,管理者,类似你工作的工位号。
所以说是两个不同的概念。
六. OSPF邻接建立过程(五种数据包,七中状态过程)
(1)五种数据包
Hello数据包:用于邻居或邻接之间建立和维护邻居关系,10秒周期 40(4倍关系)秒死亡 这里10秒可以更改
DBD-数据库描述包:(相当于书本目录) 每台OSPF路由器的LSDB的信息,写了每个网段。
LSR-数据链路请求:请求OSPF邻居的链路状态信息。比方说路由器A收到路由器B发送的DBD包,拆开发现没有10.0.0.0这个网段,路由器A就会发送LSR包 给路由器B。
LSU-链路状态更新包:传SA(包含一条或多条给邻居) 比方说路由器B收到LSR请求包,路由器B就会发送这个LSU包给路由器A,这个包就具体的网段内容。
LSAck-链路状态确认包:回应并确认收到对方的LSU包中的LSA。
(2)OSPF的Hello包(这个hello包的作用)
1.OSPF的邻接关系的建立和维护依赖于Hello包
2.Hello包的发送周期与OSPF类型有关
3.管理Hello包交换的规则是Hello协议
4.Hello用来确定DR,BDR路由器的选择
(3)OSPF的建立过程
首先路由器A,和B启动,此时是第一个状态down state状态 。
接着路由器A发送Hello包给路由器B,告诉它路由器A的Router ID。此时是init state状态。
然后路由器B发送Hello包给路由器A,告诉它路由器B的Router ID。此时由init状态变成了Twoway state 状态。此时邻居关系建立(不是邻接关系)
接下来进入exstart state状态(涉及到DBD包,商量哪一个是老大,谁先发)
这里路由器A先发送一个没有具体信息的DBD包给路由器B,路由器B收到之后,返回一个DBD给路由器A,意思就是说我的优先级比你大,我先发,所以后面发送具体的DBD包由路由器B先发送。
紧接着来到exchange state 状态
这里有时交换详细的DBD包,只不过由优先级高的先发,比如这里路由器B先发,都收集到对方的链路数据状态后。
进入到loading state状态
比如说路由A发现这段链路信息没有,于是就发送LSR包给路由器B,请求此路由信息,路由器B接收到这条信息之后,发送LSU返还给路由器A,最后路由器A接收到后,返还Lsack包过去表示说我接收了。
最后进入Full state 状态
邻接建立成功,链路收敛,进行SPF算法,计算最优的路由。