返回顶部
首页 > 资讯 > 后端开发 > Python >OSPF详解-3 邻接、度量值
  • 937
分享到

OSPF详解-3 邻接、度量值

度量详解OSPF 2023-01-31 03:01:14 937人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

**一、OSPF邻接关系 运行链路状态路由协议的路由器必须首先与选定的邻居路由器建立邻接关系,这是通过与邻居路由器交换Hello分组来实现的。 1.邻接路由器建立步骤 路由器建立邻接关系的步骤如下: 1)路由器将Hello分组发送给邻居

OSPF详解-3 邻接、度量值

**一、OSPF邻接关系
OSPF详解-3 邻接、度量值

运行链路状态路由协议的路由器必须首先与选定的邻居路由器建立邻接关系,这是通过与邻居路由器交换Hello分组来实现的。

1.邻接路由器建立步骤

路由器建立邻接关系的步骤如下:

OSPF详解-3 邻接、度量值

1)路由器将Hello分组发送给邻居路由器,并接收来自邻居路由器的Hello分组。Hello分组的目标地址通常是组播地址。

2)路由器通过交换Hello分组来获悉协议特定的参数,如检查邻居是否位于同一个区域中,Hello间隔是否相等。交换完Hello分组后,路由器宣称邻居处于正常运行状态。

3)两台路由器使用Hello分组建立邻接关系后,它们通过LSA来同步LSDB,并确认已收到邻接路由器的LSA。至此,两台邻接路由器知道它们的LSDB已经同步。对OSPF而言,这意味着两台路由器已经处于完全邻接状态。

4)必要时,路由器将新的LSA转发给其他邻接路由器,确保在整个区域内,链路状态信息都是完全同步的。

2.点到点邻接

点到点串行链路上的两台路由器之间建立完全邻接的关系,它们使用的封装类型通常是高级数据链路控制(HDLC)或点到点协议(PPP)。然而,在LAN链路等广播网络上,将选举一个指定路由器(DR)和一个备用指定路由器(BDR)。其他的路由器都与这两台路由器建立邻接关系,却只将LSA通告给它们。DR从邻居那里收到更新后,将其转发给LAN上的其他所有邻居。DR的主要功能之一是确保同一个LAN中所有路由器的LSDB都相同。因此,在广播网络中,DROTHER(不属于DR或者BDR的路由器)与DR和BDR同步LSDB。

3.LAN链路中的邻接

LAN中不属于DR或BDR的路由器(DROTHER)之间维护部分邻居关系,这被称为双向邻居状态。例如,在上图中,路由器A为DR,路由器B为BDR,因此路由器C将与路由器A和B建立邻接关系,并与路由器D和E建立双向邻居关系。

需要指出的是,DR概念是链路级的。在多路访问的广播环境中,每个网段都有独立的DR和BDR。例如,如果路由器与多个多路访问广播网络相连,它可能在一个网段中为DR而在另一个网络中为DROTHER

LSA报告路由器和链路状态,因此有链路状态之说。路由器之间的链路状态信息必须同步,为此LSA必须具有如下特征。

OSPF详解-3 邻接、度量值

1)LSA是可靠的,有一种用于确认LSA被成功递送的方法。

2)LSA被扩散到整个区域(或整个域,如果只包含一个区域的话)。

3)LSA有序列号和寿命,以确保每台路由器都知道自己有最新的LSA版本。

4)LSA被定期刷新以确保拓扑信息的有效性,直到LSA从LSDB中被删除。

只有以可靠的方式扩散链路状态信息,才能确保区域中每台路由器对网络的认识都是最新、最准确的这样,路由器才能做出可靠的路由器决策,并与网络中其他路由器的决策一致。

二、OSPF度量值的计算

1.简介

Edsger Dijkstra(SPF算法的创始者) 设计了一种用于计算复杂网络中最佳路径的数学算法,供链路状态路由器选择协议使用。通过网络中的每条链路指定开销,将特定的节点作为树根,并将前往特定目的地的开销相加,便可以对树中的分支进行计算以确定前往每个目的地的最佳路径。最佳路径被加入到转发数据库(路由选择表)中。

2.COST值的计算

默认情况下,Cisco路由器根据接口的配置带宽来计算OSPF开销,带宽越高,开销越低。在Cisco路由器上,默认情况下使用公式“100/(Mbit/s为单位的带宽)”来计算OSPF开销,这个公式也可以表示为“10^8/(bit/s为单位的带宽)”。

如果修改了链路带宽,OSPF开销也将相应地变化。对于每个接口,只能指定一种开销。在路由器链路通告中,以链路开销的方式通告它。默认的OSPF开销如下:

OSPF详解-3 邻接、度量值

OSPF默认的COST值

也可以手工定义接口的OSPF开销,这种开销将覆盖默认开销(具体操作后续更新)。

3.SPF算法计算方式

下图是一个SPF计算示例,计算步骤如下。

OSPF详解-3 邻接、度量值

1)路由器H向路由器E发送通告,以表明自己的存在。路由器E将路由器H和自己的通告传递给邻居(路由器C和G)。路由器G将这些通告及自己的通告传递给路由器D。依次类推。

2)这些LSA遵守水平分割规则,即路由器不应将LSA通告给提供该LSA的路由器。在这个例子中,路由器E不会将路由器H的LSA再通告给路由器H。

3)路由器X有4台邻接路由器:A、B、C和D。它从这些路由器那里接收到了网络中所有其他路由器的LSA。根据这些LSA,它能够推断出路由器之间的所有链路,并绘制出如上图所示的路由器连接情况。

4)在上图中每条以快速以太网链路的OSPF开销都被设置为1.通过将前往每个目的地的开销相加,路由器可以推断出最佳路径。

5)在上图的右边是路由器XX通过计算得到的最佳路径(SPF树)。根据这些最佳路径(实线),将前往每台路由器连接的目标网络的路由加入到路由表中,并将相应邻接路由器(A、B、C或D)指定为下一跳地址。

--结束END--

本文标题: OSPF详解-3 邻接、度量值

本文链接: https://lsjlt.com/news/187719.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • OSPF详解-3 邻接、度量值
    **一、OSPF邻接关系 运行链路状态路由协议的路由器必须首先与选定的邻居路由器建立邻接关系,这是通过与邻居路由器交换Hello分组来实现的。 1.邻接路由器建立步骤 路由器建立邻接关系的步骤如下: 1)路由器将Hello分组发送给邻居...
    99+
    2023-01-31
    度量 详解 OSPF
  • C语言邻接表建立图详解
    目录有向图无向图邻接表存图进行拓扑排序总结有向图 代码: #include<stdio.h> #include<stdlib.h> #include<...
    99+
    2024-04-02
  • webpack打包的3种hash值详解
    目录前言当年的校招哪三种?实践讲解事先准备打包环境搭建hashchunkhashcontenthash前言 大家好,我是林三心,用最通俗易懂的话讲最难的知识点是我的座右铭,基础是进阶...
    99+
    2024-04-02
  • 数据结构TypeScript之邻接表实现示例详解
    目录图的结构特点图的分类图的表示面向对象方法封装邻接表构造函数增加顶点和边删除顶点和边图的遍历颜色标记广度优先搜索(队列)深度优先搜索(栈)图的结构特点 图由顶点和顶点之间的边构成...
    99+
    2023-01-30
    TypeScript数据结构邻接表 TypeScript数据结构
  • SpringBoot接值实现方法详解
    目录接值传值URL传值form表单传值Ajax异步传值接单一值@RequestParam注解@RequestParam注解属性对象接值创建实体类User增加新的处理方法修改页面并测试...
    99+
    2023-05-20
    SpringBoot接值 SpringBoot接收请求参数
  • 详解JS ES6变量的解构赋值
    目录1.什么是解构?2.数组解构3.数组模式和赋值模式统一4.解构的默认值5.对象的解构赋值6.函数参数7.字符串解构8.数值和布尔值的解构赋值9.解构赋值的应用1.交换变量的值2....
    99+
    2024-04-02
  • 第四章 SpringMVC--Controller接口控制器详解(3)
    11、AbstractWizardFormController向导控制器类提供了多步骤(向导)表单的支持(如完善个人资料时分步骤填写基本信息、工作信息、学校信息等)假设现在做一个完善个人信息的功能,分三个页面展示:页面1完善基本信息;页面2...
    99+
    2023-06-03
  • 详解jQuery中的变量赋值操作
    jQuery是一个优秀的JavaScript库,它可以使JavaScript的开发过程更加高效、优化和快速。在jQuery中,变量赋值是非常重要的一部分。本文将介绍jQuery中的变量赋值操作。一、基本赋值操作在jQuery中,赋值操作与J...
    99+
    2023-05-14
  • mysql sql99语法 内连接非等值连接详解
    #案例:查询员工的工资级别 SELECT salary,grade_level FROM employees e JOIN job_grades g ON e.`salary` ...
    99+
    2024-04-02
  • 如何在Vue 3中扩展Vue Router链接详解
    前言 <router-link> 标签是一个很好的工具,可以在你的Vue应用程序的不同页面之间进行导航,但当导航到一个外部链接时,它不是一个工具,为此,你应该使用一个普通...
    99+
    2024-04-02
  • Vue 实现接口进度条示例详解
    目录实现思路代码实现参数注入总结前端在向后端请求信息时,常常需要等待一定的时间才能得到返回结果。为了提高用户体验,可以通过实现一个接口进度条函数来增加页面的交互性和视觉效果。 接口...
    99+
    2023-05-17
    Vue 接口进度条 Vue 进度条
  • Go方法接收者值接收者与指针接收者详解
    目录引言联系与区别指针类型调用结果实现接口时约束该怎么用引言 在review 一些代码中,发现经常某个类型定义的方法,其接收者既有值类型,又有指针类型,然后 Goland 就有提示:...
    99+
    2024-04-02
  • Android中实时获取音量分贝值详解
    基础知识 度量声音强度,大家最熟悉的单位就是分贝(decibel,缩写为dB)。这是一个无纲量的相对单位,计算公式如下: 分子是测量值的声压,分母是参考值的声压(20微帕,人...
    99+
    2022-06-06
    Android
  • 详解如何在Golang中修改变量的值
    Golang是当今最为流行的编程语言之一,它具有简单易用、高效、安全等优点,使得它在应用开发领域里得到越来越广泛的应用。在程序开发过程中,我们经常需要改变变量的值,本文将介绍如何在Golang中改变变量的值以及相关的语法细节。一、变量的声明...
    99+
    2023-05-14
  • ES6变量赋值和基本数据类型详解
    目录let和constlet和const不存在变量提升暂时性死区(temporal dead zone,简称TDZ)不允许重复声明块级作用域与函数声明const变量解构解构必须左右解...
    99+
    2024-04-02
  • springboot 实现接口灰度发布的实例详解
    目录前言最小化改造方式springmvc接口请求原理HandlerMapping简介RequestCondition接口定义代码实现过程1、添加一个自定义注解用于标注接口类以及接口方...
    99+
    2024-04-02
  • Python解压可迭代对象赋值给多个变量详解
    目录问题描述解决方案1.将N个元素赋值给N个变量,可以通过如下一个简单的赋值语句实现。2.如何将N个元素赋值给M个变量(M<N)?总结1.任何可迭代对象都可以实现这种解压赋值,...
    99+
    2024-04-02
  • 详解Python变量与赋值,或许是你需要的
    前言Python是一门独特的语言,与C语言有很大区别,初学Python很多萌新表示对变量与赋值不理解,学过C的都知道,给变量赋值时,需要先指定数据类型,同时会开辟一块内存区域,用于存储值,例如:int a = ...
    99+
    2023-06-02
  • uni-app调取接口的3种方式以及封装uni.request()详解
    目录一、uni-app中调取接口的三种方式1、uni.request({})2、uni.request({}).then()3、async/await二、封装uni.request(...
    99+
    2022-11-13
    uniapp接口调用 uniapp接口文档怎么使用 uni-app 封装uni.request()
  • SpringBoot详解如果通过@Value注解给静态变量注入值
    目录前序方案一方案二方案三使用场景总结最近做项目的时候,给static变量赋值, 使用 @value注解 ,结果 获取一直为null , 1、spring不允许/不支持把值注入到静态...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作