IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 《学习笔记77》—— # 计算机网络 # OSPF协议详解:数据包类型、邻居建立、DR/BDR选举、LSA类型等 -> 正文阅读

[网络协议]《学习笔记77》—— # 计算机网络 # OSPF协议详解:数据包类型、邻居建立、DR/BDR选举、LSA类型等

OSPF协议

1. 协议特性

OSPF定义:

OSPF(Open Shortest Path First,开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。采用SPF算法进行路径计算,属于链路状态协议。

特征:

  1. OSI的层次——传输层协议,基于IP协议,协议号89。
  2. 运行特征——链路状态协议。
  3. 运行范围——内部网关协议(Interior Gateway Protocol)
  4. 有无类——无类路由协议。
  5. 最佳路径——管理距离(110);度量值(cost)=100M/带宽(m)。
  6. 分层——通过骨干区域(0区域)和非骨干区域(非0区域)进行分层。可以防止路由环路。

2. 基本概述

2.1 常见的五种数据包

  1. Hello——功能:用于建立和维持邻居关系。每10s相互发送Hello包,若40s内没有发送,则邻居关系删除。
  2. DBD(Database Description)——功能:用于对OSPF的网络拓扑进行描述。
  3. LSR(Link State Request)——功能:用于请求对方的路由信息。
  4. LSU(Link State Update)——功能:用于存储和传递路由信息。
  5. LSack——功能:用于对LSU等包进行可靠确认。

建立邻居时使用的是hello包,在hello包里面有一些重要的字段:

  1. hello时间间隔和死亡时间间隔:在多路访问网络中(以太网)10s和40s
  2. 认证字段:ospf认证,要求认证的类型和认证的数据(密码)是一样的
  3. area字段:区域号(需要建立邻居的两个路由器的接口必须在同一个区域中)
  4. STUB标识(末节标识):特殊区域的标识(区域分为:骨干区域、普通区域、特殊区域)

以上四个字段是建立邻居的四个条件。

2.2 建立邻居过程

  1. Down:两边都处于“沉默”状态;

  2. Init:一边开始发送hello分组;

  3. 2way:两边相互发送hello分组,并且处于“邻居状态”,形成邻居关系后要进行DR/BDR选举;

  4. Exstart:在执行Master/Slave选举;

  5. Exchange:交换DBD分组;

  6. Loading:相互加载对方链路状态信息;

  7. Full:表示数据库达到一致,此时处于"邻接状态".
    【邻居状态+链路状态交互==>邻接状态】

2.3 DR/BDR选举

指定路由器 (designated router,DR) ——作用:描述多路访问网络及与该网络相连的其他路由器。DR只是接口概念,每个网段都会选举DR。
备份路由器(backup designated router,BDR)——作用:当指定路由器无法正常工作时,备份路由器充当指定路由器

选举DR/BDR的作用是为了减少邻接数目,减小链路消耗

DR/BDR的选举规则:

  1. 比较优先级,越大越优(默认为1,最大255,0表示不参加选举);
  2. 比较Router-ID,越大越优。

DR/BDR特征:

  1. 不抢占DR,DR正常工作时,即使有新的优先级更高的路由器出现,也不能抢占成为DR;
  2. DR正常工作时,BDR只监听,转发LSA和同步LSBD的任务由DR完成;
  3. DR只是接口概念,每个网段都会选举DR;不同网段之间分别选举DR/BDR;
  4. DRother和DR建立邻接关系,和BDR建立邻居关系。

DR/BDR地址:

  1. DR/BDR对外发送路由条目,以224.0.0.5发送;
  2. DRother对外发送路由条目,以224.0.0.6发送。

2.4 六种LSA类型

OSPF的6种LSA:

LSA种类传播范围ADV router内容
1型(Router-LSA)本区域内区域内每台路由器包含本路由器的直连的邻居,以及直连接口的信息
2型(network LSA)本区域内DR标识出本MA网中有哪些路由器以及本网的掩码信息
3型(summary LSA)整个OSPF区域由ABR发出,每穿越一个ABR,其ADV Router就会变成此ABR的Router-id包含本区域中的路由信息,包括网络号和掩码
4型(Summary ASBR LSA)整个OSPF区域由ABR产生并发出,穿越一个ABR,其ADV Router就会变成此ABR的Router-id把ASBR的Router-id传播到其他区域,让其他区域的ABR路由器得知ASBR的位置
5型(Type-5 AS External Link States)整个OSPF区域ASBR产生,泛洪到整个AS。不会改变ADV Router域外路由条目,包括网络号和掩码,不属于某个区域
7型(Type-7 AS External LSA)只存在于NSSA网络中ASBR域外路由

注:①2型LSA只在MA网络中存在;

②5型LSA由重分发产生;

③7型LSA只在NSSA网络中存在。

可以使用命令dispaly ospf lsdb来查看OSPF的链路状态数据库信息。

2.5 区域划分

OSPF中的常规区域:

  • 骨干区域——通常以area 0
  • 非骨干区域——除area 0以外的区域,非骨干区域之间交换数据需要通过骨干区域进行。

OSPF中的特殊区域:

  • 脱节区域(不连续区域)——指某一非骨干区域并未与骨干区域相连,因此无法与其他区域进行数据交换。
  • Stub区域——STUB区域是一个末梢区域,当一个OSPF区域处于整个自治系统边界时,而又不含其他路由协议,这时就可以配置为Stub区域。禁止4,5,7类型的LSA。
  • totally stub区域——完全末梢区域,不但具有末梢区域的功能且一个完全末梢区域的ABR(边界路由)将不仅阻塞外部的LSA,而是阻塞所有的汇总LSA,除了通告默认路由的那一条类型3的LSA。
  • NSSA(not-so-stub area)——允许外部路由通告到ospf自治系统内部,而同时保留自治系统其余部分的末梢区域部分。NSSA区域的边界ABR会将LSA7转成LSA5,传播到其他区域。
  • Totally NSSA——cisco私有特性,能阻止LSA3/4/5,并且由ABR产生LSA3默认路由传播到NSSA其他路由器。

解决脱节区域的办法:

  1. 设置虚链路(virtual-link):虚连接是指在两台ABR之间,穿过一个非骨干区域(转换区域——Transit Area),建立的一条逻辑上的连接通道,可以理解为两台ABR之间存在一个点对点的连接。配置如下。
  2. 隧道(tunnel)
  3. 单点双向重发布

模拟脱节区域案例:
在这里插入图片描述
在这里插入图片描述
从上图中,R1的路由信息可知,R1只学习到了23.1.1.0网段,并未学习到34.1.1.0网段,因为area0和area2存在脱节。

  1. 使用虚链路解决区域0和区域2脱节问题:通过在转换区域的ospf配置模式下,使用命令Area 穿越的区域 virtual-link 对方RID即可。

在R2中配置如下。

R2(config-router)#area 1 virtual-link 3.3.3.3

在R3中配置如下。

R3(config-router)#area 1 virtual-link 2.2.2.2

等待若干秒后,再次查看路由信息,发现新增了34.1.1.0网段。
在这里插入图片描述
如果骨干区域做了区域认证,又使用了虚链路,那就必须部署虚链路认证。方法是在设置虚链路时在后面加上认证命令:area 穿越的区域 virtual-link 对方RIP authentication message-digestarea 穿越的区域 virtual-link 对方RIP message-digest-key 1md5 123。设置完后可以使用命令clear ip ospf process清空ospf进程。
两台设置了虚链路的路由器都要做配置,下面只演示R2。

R2(config-router)#area 1 virtual-link 3.3.3.3 authentication message-digest
R2(config-router)#area 1 virtual-link 3.3.3.3 message-digest-key 1 md5 123 
  1. 使用隧道技术:
    通用路由封装(GRE: Generic Routing Encapsulation)是通用路由封装协议,可以对某些网络层协议的数据报进行封装,使这些被封装的数据报能够在IPv4网络中传输。
    在R2进行配置如下。
R2(config)#int tunnel 0  //开启进入tunnel0接口
R2(config-if)#tunnel source 23.1.1.2  //设置源接口IP地址
R2(config-if)#tunnel destination 23.1.1.3  //设置目的接口IP地址
R2(config-if)#ip add 192.168.1.1 255.255.255.0  //为tunnel0接口设置IP地址
R2(config)#route os 1  //进入ospf进程1
R2(config-router)#net 192.168.1.0 0.0.0.255 area 0  //通告新建的tunnel0接口的IP地址

在R3进行配置如下。

R3(config)#int tunnel 0  //开启进入tunnel0接口
R3(config-if)#tunnel source 23.1.1.3  //设置源接口IP地址
R3(config-if)#tunnel destination 23.1.1.2  //设置目的接口IP地址
R3(config-if)#ip add 192.168.1.2 255.255.255.0  //为tunnel0接口设置IP地址
R3(config)#route os 1  //进入ospf进程1
R3(config-router)#net 192.168.1.0 0.0.0.255 area 0  //通告新建的tunnel0接口的IP地址
  1. 使用单点双向重发布技术:
    在R3上起不同的OSPF进程,然后进行OSPF的双向重发布。
R3(config-router)#router os 1  //进入ospf进程1
R3(config-router)#no net 34.1.1.3 0.0.0.255 area 2  //删除f1/0接口的通告
R3(config-router)#router os 2  //新建ospf进程2并进入
R3(config-router)#network 34.1.1.3 0.0.0.255 area 2  //通告f1/0接口
R3(config-router)#redistribute ospf 1 subnets  //重发布进程1
R3(config-router)#router os 1  //进入ospf进程1
R3(config-router)#redistribute ospf 2 subnets   //重发布进程2

3. 防环机制

OSPF通过以下两种方式防止环路:

  1. 分层设计:分为骨干区域和非骨干区域。
  2. SPF算法:算法计算出来的路由100%无环。

4. 配置方法

  • 创建OSPF进程,并进入OSPF进程进行配置:

    router(config)#router ospf 100  //进程号的范围为1-65535,用于标识或者区分不同的OSPF进程。同一台路由器的不同ospf进程会影响路由的传递
    
  • 标识当前路由器的身份,以便其他路由器识别:

    Router(config-router)#router-id 1.1.1.1  //路由器标识符,相当于路由器的身份证
    
  • 通告指定直连接口的网络地址并划分进指定区域:

    Router(config-router)#network 1.1.1.1 0.0.0.0 area 0  //指定接口与路由器直接连接的网络并划分进区域0,不同区域是不会互发LSA的;0.0.0.0是反掩码
    
  • 查看邻居信息:

    router#show ip ospf neighbor
    
  • 查看OSPF数据库信息:

    router#show ip ospf database
    
  • 修改接口优先级:

    Int f0/0
    Router(config-if)#Ip ospf priority  0   //默认值为1,值为0-255,值越大越有可能成为DR
    
  • 修改计算cost的参考值(默认参考值为100M):

    Router(config-router)#auto-cost reference-bandwidth 1000  //进入OSPF配置模式,将默认参考值从100M修改为1000M
    
  • 向OSPF网络中注入默认路由:

    Router(config-router)#default-information originate
    

5.路由认证

5.1 链路明文认证

R1(config)#int f0/0  //进入f0/0接口
R1(config-if)#ip address 12.1.1.1 255.255.255.0  //为接口设置ip地址
R1(config-if)#ip ospf authentication  //开启接口的明文认证
R1(config-if)#ip ospf authentication-key 0 123  //设置加密类型为0,认证的密码为123

5.2 链路密文认证

R2(config)#int f0/0   //进入f0/0接口
R2(config-if)#ip add 12.1.1.1 255.255.255.0   //为接口设置ip地址
R2(config-if)#ip ospf authentication message-digest   //开启接口的密文认证
R2(config-if)#ip ospf message-digest-key 1 md5 123   //密钥id为1,采用md5加密方式,密码为123

5.3 区域认证

注:区域认证需在该区域所有的路由上都做

R2(config)#router ospf 1  //进入ospf进程1
R2(config-router)#area 0 authentication message-digest   //为区域0开启区域认证
//接着需要进入每一个区域0的接口开启密文认证,以下以f0/0实例
R2(config-router)#int f0/0  //进入f0/0接口
R2(config-if)#ip ospf message-digest-key 1 md5 123  //密钥id为1,采用md5加密方式,密码为123
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-07-16 11:40:31  更:2021-07-16 11:42:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 17:55:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码