一、OSPF是什么

  Open Shortest Path First, 开放最短路径优先协议,是一种开源的使用最短路径优先(SPF)算法的内部网关协议(IGP)。常用于路由器的动态选路。

二、OSPF常见的几个概念

  1. 邻居(Neighbor):宣告OSPF的路由器从所有启动OSPF协议的接口上发出Hello数据包。若两台路由器在同一条链路上,并且它们根据hello消息中指定的某些信息(比如id等)协商成功,那么它们就成为了邻居(Neighbor)。

  2. 邻接关系(Adjacency):两台邻居路由器之间构成的一条点到点的虚链路,邻接关系的建立是由交换hello信息的路由器类型和网络类型决定的。形成邻居关系的双方不一定会形成邻接关系。

  3. 链路状态通告(Link State Advertisement,LSA):每一台路由器都会在所有形成邻接关系的邻居之间发送链路状态通告LSA。LSA描述了路由器所有的链路、接口、邻居等信息。
    注:ospf定义了许多不同的LSA类型。

  4、Router ID:Router ID是一个32位的值(类似于IP地址,通常情况下建议手动进行配置),它是一个自治系统内的路由器的唯一标识。若没有进行手动配置,则会按以下几点进行自动选举:

  ①若有逻辑接口,则按照逻辑接口中最大的IP地址作为Router ID。

  ②若没有逻辑接口,则按照接口中最大的IP地址作为Router ID.

  注:若一台运行的路由器上重新配置了Router ID,可以在路由器上重置OSPF进程来更新Router ID。

  5. 链路状态数据库(LSDB):每一台收到来自邻居路由器发出的LSA的路由器都会把这些LSA信息记录在它的LSDB中,并且发送一份LSA的拷贝给该路由器的其他所有邻居。这样当LSA传播到整个区域后,区域内所有的路由器都会形成同样的LSDB。

  6、DR:DR是网络的中心点,其选举方式是按照路由器的端口优先级进行选举(值越大越优先)。当端口优先级一致时,按照Router ID进行选举(越大越优先)(当网络拓扑稳定后,新加入路由器不管其优先级都不会成为DR或者BDR)

  7、BDR:;BDR是DR的备份,当DR出现问题时,由BDR接替DR(BDR出现问题时,不会影响DR,BDR会重新选举)。

三、OSPF报文

  OSPF报文主要包含两部分:IP Header 与 OSPF Protocol Packet

  • OSPF直接运行在IP协议上,使用的协议号是89
  • OSPF的有五种报文

  ①Hello报文:最常用的一种报文,用以发现、维护邻居关系。还可以在广播和NBMA的网络类型中选举指定路由器(DR)与备份指定路由器(BDR).

  ②DD报文:两台路由器进行LSDB数据库同步时,用来描述自己的LSDB。(此报文只包含了LSA的头部,而LSA的头部可以唯一识别一条LSA)

  ③LSR报文:当两台路由器交换过DD报文后,与自己的对比,会得知对端有而本端没有的LSA。这时就会向对端发送LSR报文,以请求这些本端没有LSA同步过来。在发送的LSR报文中只包含了本端所需要的LSA的摘要信息。

  ④LSU报文:用来向对端发送所需要的LSA。

  ⑤LSACK报文:对收到的LSU报文进行确认。

四、OSPF支持的网络

  1、点到点的网络

  2、广播型网络

  3、NBMA网络

  4、点到多点的网络

五、区域

  OSPF支持将一组网段组合在一起,这样的一组合成为区域。

  Area 0 为骨干区域,为了避免路由的环路,非骨干区域之间不允许直接相互发布路由信息,所以,每个区域必须连接到骨干区域。

六、OSPF建立的步骤

  1、Down状态

  在这个状态下,所有设备刚刚启动,设备之间没有数据的交换。

  2、INT状态

  在这个状态下,路由器之间开始交换Hello报文。这时,设备知道了其他设备的存在。

  3、Two-Way状态

  在这个状态下,建立了双向通信。符合条件的设备之间建立邻居关系(此状态不建立邻接关系,但是建立邻接关系前的最高状态)。

  PS:(指定路由器与备份指定路由器的选举也在这个状态,不确定)

  4、ExStart状态

  在这个状态下,是建立邻接关系的第一步。路由器开始向邻居发送DD报文。当对端收到DD报文后,会回复一个LSA报文,表示我已收到。

  5、Exchange状态

  在这个状态下,设备之间开始互相发送含有链路状态信息摘要的DD报文,用以描述本端的LSDB;而收到DD报文的设备会与自己的LSDB进行对比。

  6、Loading状态

  在这个状态下,当设备收到DD报文与自身的LSDB进行比较时,会发现有缺少的LSA。这时候,会发送LSR报文以学习邻居设备的LSA;当邻居收到LSR报文后,会回复LSU报文(也就是回复收到的LSR中包含的LSA的相关信息)以供LSR的发出端进行学习。

  7、Full状态

  在这个状态下,LSDB的同步以完成,所有的路由器以形成相同的LSDB。

七、OSPF补充
    1. 当这些路由器的LSDB完全相同时,每一台路由器都会以自身为根结点,使用最短路径优先(Shortest Path First,SPF)算法计算一个无环路的拓扑图,这个拓扑图就是SPF算法树。每台路由器都会从自己的SPF算法树中构建出自己的路由表,用于动态选路。

2. 当区域内所有节点的LSDB状态都已同步后,ospf协议将会变的平静下来,邻居之间根据配置固定时间交换hello数据包作为心跳消息,并且每隔30分钟传一次LSA。如果网络拓扑稳定,那么ospf也是稳定的。如果网络拓扑发生了变化,比如有节点故障或者新增节点,那么将重新开始交换信息并计算路由。

3. OSPF拓扑中的节点可以分为两类:传输节点和末梢节点。传输节点指网络链路中的中转路由器,它一般两端与其他ospf邻居相连,作用仅是转发数据包而数据包的源网络和目的网络往往都不同于传输节点所在的网络;末梢节点指网络链路中的末端路由器,它一般只有一端与ospf邻居相连,作为数据包的源头或者目的地。OSFP协议在末梢节点宣告主机路由(也就是子网掩码为255.255.255.255的路由),这样拓扑中其他节点要访问末梢节点就可以在LSDB中查到对应的信息,并通过SPF算法生成的最短路径进行访问。

网络初级篇之OSPF(一)原理的更多相关文章

  1. 网络初级篇之VLAN(原理)

    一.早期网络的问题 1.若某时刻有多个节点同时试图发送数据,极易产生冲突域,这样使得网络传输效率大大降低. 2.从一节点发送的数据都会被送到各个节点,极易形成广播域,这样会使得产生太多的广播流量而耗费 ...

  2. 网络初级篇之RSTP(原理与配置)

    一.RSTP的产生 前面的文章写到了当网络拓扑发生变化时,STP的收敛速度大约需要花费30秒-50秒的时间才会继续转发数据.这样在实际生产环境中花费的时间是非常长的,这样RSTP(快速生成树协议)便应 ...

  3. 网络初级篇之OSPF(二)实验

    一.实验目的:     下面关于OSPF的实验,仔细看配置过程,以增加对OSPF的理解. 二.实现目标:     使用OSPF实现所有主机之间的通信 三.配置过程: 1.AR1的配置过程:      ...

  4. 网络初级篇之网络设备的FTP(原理与实验)

    一.什么是FTP    FTP就是文件传输协议.用于互联网双向传输.二.FTP的作用    控制文件下载空间在服务器复制文件从本地计算机或本地上传文件复制到服务器上的空间,主要的作用就是文件的传输,保 ...

  5. 网络初级篇之DHCP原理与配置(原理与实验)

    一.什么是DHCP DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理.分配IP地址,使网络环境 ...

  6. 网络初级篇之STP(概念原理)

    一.什么是STP 生成树协议(Spanning Tree Protocol,STP),是一种工作在OSI网络模型中的第二层(数据链路层)的通信协议,基本应用是防止交换机冗余链路产生的环路.用于确保以太 ...

  7. 网络初级篇之VLAN间路由(原理与配置)

    一.VLAN间的路由 由于VLAN隔离了二层广播域,也间接的隔离了各个VLAN之间的其他二层流量交换,这样导致属于不同VLAN之间的用户不能进行二层的通信.只能经过三层的路由转发才能将报文从一个VLA ...

  8. 网络基础篇之NAT(原理)

    一.NAT的产生 由于网络的飞速发展和网络应用的极速增多,致使IPv4可用地址空间逐渐枯竭.尽管IPv6可以在根本上解决地址枯竭问题,但IPv4发展到IPv6还需要一个过渡,而这便产生了NAT. 二. ...

  9. 网络初级篇之STP(BPDU详解与STP故障恢复)

    一.BPDU包含的参数 通过STP的原理,我们学习了红色部分的字段(根桥ID.根路径开销.桥ID.端口ID).现在讲解一下黄色部分的字段(类型.计时器.老化时间.访问时间) 1.(BPDU Type) ...

随机推荐

  1. 时间总线框架之EvenBus

    概述 EventBus定义:是一个发布 / 订阅的事件总线. 这么说应该包含4个成分:发布者,订阅者,事件,总线. 那么这四者的关系是什么呢? 很明显:订阅者订阅事件到总线,发送者发布事件. 订阅者可 ...

  2. MyBatis Mapper Demo

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-/ ...

  3. 数据库高级数据库学习--上机练习7(Transact-SQL 函数定义和调用)

    上机练习7 在Transact SQL中,有一类特殊的自定义函数,其返回值为一张表,该类自定义函数被称作内嵌(联)表值函数,其基本语句格式如下: CREATE FUNCTION函数名称[( {@参数名 ...

  4. 在pythonanywhere.com免费网站建立虚拟机环境以及django网站

    注册,添加App,选择python3.5,然后打开控制台 搭建python3.5虚拟环境 python --version virtualenv -p /usr/bin/python3.5 VENV ...

  5. ubuntu下终端代理方法

    起因 正常使用shadowsocks后只能在浏览器中访问google,而终端中却无法使用.   解决方法 ProxyChains是一个终端代理方案,使用比较简单. 在源里有这个软件,直接安装 sudo ...

  6. Misc题目

    @freebuff教程https://www.freebuf.com/column/196815.html @巅峰极客wp https://www.anquanke.com/post/id/18914 ...

  7. gzip 命令

    NAME gzip -- compression/decompression tool using Lempel-Ziv coding (LZ77) SYNOPSIS gzip [-cdfhkLlNn ...

  8. 使用Themleaf 模板引擎手动生成html文件

    1.为什么要写这一篇呢? 在做一个邮件发送功能的时候,需要发送html邮件,javaMail 发送html 的时候需要有已经生成的html正文,所以需要提前将要发送的内容生成,所以就需要模板引擎来动态 ...

  9. 接口自动化框架 - httprunner

    自己曾经写过一个接口自动化的框架,并做了一版本的优化,一直觉得做的还不错,且没依赖现有的框架. 最近因为一些工作的原因,开始又思考之前写的框架的一些缺点及如何优化,所以找到比较有名的httprunne ...

  10. “automation服务器不能创建对象”的问题的解决方案大全

    本人工作中的应用系统都是jsp的,大量javascript程序,一旦出“automation服务器不能创建对象”问题,大量报表及查询无法保存,苦思冥想.千尝万试,终于将其搞定,现将相关方案与大家共享. ...