网络通信——OSPF协议(基础篇)

这里基础是因为没有讲解OSPF中的具体算法过程,以及其中很多小细节。后续会更新。

目录

一.OSPF的基础信息

[二.认识OSPF中的Router ID](#二.认识OSPF中的Router ID)

三.OSPF中的三张表

四.OSPF中的度量方法(计算开销值)

[五. OSPF选举DR和BDR(就是这个区域的老大和老二)](#五. OSPF选举DR和BDR(就是这个区域的老大和老二))

(1)首先我们需要知道在OSPF中为什么需要这个DR和BDR。

(2)如何选举DR和BDR

[(3) 区分选举Router ID和选举DR/BDR](#(3) 区分选举Router ID和选举DR/BDR)

[六. OSPF邻接建立过程(五种数据包,七中状态过程)](#六. 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算法,计算最优的路由。

相关推荐
道法自然04028 分钟前
Ethernet 系列(8)-- 基础学习::ARP
网络·学习·智能路由器
EasyCVR1 小时前
萤石设备视频接入平台EasyCVR多品牌摄像机视频平台海康ehome平台(ISUP)接入EasyCVR不在线如何排查?
运维·服务器·网络·人工智能·ffmpeg·音视频
明月看潮生2 小时前
青少年编程与数学 02-003 Go语言网络编程 15课题、Go语言URL编程
开发语言·网络·青少年编程·golang·编程与数学
龙哥说跨境3 小时前
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
服务器·网络·python·网络爬虫
懒大王就是我3 小时前
C语言网络编程 -- TCP/iP协议
c语言·网络·tcp/ip
Elaine2023913 小时前
06 网络编程基础
java·网络
海绵波波1074 小时前
Webserver(4.3)TCP通信实现
服务器·网络·tcp/ip
热爱跑步的恒川7 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
云飞云共享云桌面8 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
音徽编程10 小时前
Rust异步运行时框架tokio保姆级教程
开发语言·网络·rust