首页 > 其他分享 >OSPF基础

OSPF基础

时间:2023-08-19 21:11:49浏览次数:37  
标签:LSDB LSA ospf 基础 链路 OSPF 路由器

链路状态路由协议

  • 网络拓扑是如何组成的? 由设备和设备之间的链路组成网络拓扑。
  • 链路状态是什么? 链路状态用来描述网络之间的拓扑结构,具体包括:1.路由器自身的标识 2.链路上的邻居 3.与邻居相连的接口地址 4.与邻居相连的链路开销 5.设备自身相连的路由信息 6.链路的类型

以下是路由器运行链路状态路由协议-ospf的链路状态信息

通过这段链路状态,我们就可以知道运行ospf协议设备的网络拓扑,比如通过Adv rtr可以知道路由器自身标识为1.1.1.1,通过link count知道邻居数量为3,通过link ID知道链路上的邻居有2.2.2.2、10.1.12.0和1.1.1.0,Data即与邻居相连的接口地址,link-type为链路类型,metric可以知道链路开销。根据这些信息,可以绘制如下拓扑:

补充:

来源:https://support.huawei.com/enterprise/zh/doc/EDOC1100126908/9b099a20
链路状态路由协议运行的大致过程为:运行链路状态路由协议的路由器之间建立协议邻居关系,之后彼此之间交互LSA,而后每台路由器将自己产生以及接收到的众多LSA放入自己的LSDB中,通过LSDB,路由器掌握了全网的拓扑,而后每台路由器基于LSDB使用SPF算法,计算出一颗以自己为根,无环、拥有最短路径的“树”,有了这棵“树”,路由器就可以知道到达网络各个角落的优选路径。之后,路由器将计算出来的优选路径,加载进各自的路由表中。总结下来就是:第一步建立相邻路由器之间的邻居关系。第二步是邻居之间交互LSA和同步LSDB。第三步通过SPF进行优选路径计算。第四步根据最短路径树生成路由表项加载到路由表。

OSPF路由协议

OSPF概述

链路状态路由协议在当前主要包括OSPF、ISIS,介绍完链路状态路由协议,我们将对其中所包含的OSPF进行进一步介绍。

路由器的ospf进程号是用来隔离网络的,只在本地有效,即一个路由器上的两个ospf进程互相隔离,但是不同设备配置不同的进程是可以建立邻居的。

区域

OSPF区域边界在路由器上,划分本质就是把接口划分进不同的区域中。对OSPFv2来说,一个接口只能加入一个区域,也只能加入一个进程中。

OSPF区域划分原则:
1.OSPF区域分为骨干区域(area 0)和非骨干区域(area n,n不等于0)。
2.骨干区域是唯一的,必须连续。
3.非骨干区域和骨干区域直接相连。
不同协议和相同协议的不同进程之间默认路由隔离。

Router-ID

router-id用于唯一的标识一台路由器。

华为路由器启动后会自动生成一个全局的(注意是全局的而不是ospf协议的)router-id(命令:display router id),默认情况下,当配置完第一个IP地址时,设备会将第一个IP地址作为全局router-id。

如果OSPF协议没有指定router-id,则用全局router-id作为OSPF router-id.之后再更改全局router-id,ospf该进程的router-id不会随之改变,如果想要其改变,需要重启进程(命令:reset ospf process)!!!会导致网络终端。而若手动更改ospf router-id,同样需要重启进程,但全局router-id却不会随之改变。(手动配置ospf router-id的优先级最高,而且是项目中的常用方式)

项目中一般使用loopback接口的IP地址作为ospf router-id,这一配置过程是手动的。

度量值(metric/cost)

OSPF使用Cost(开销)作为路由的度量值。每一个激活了OSPF的接口都会维护一个接口Cost值,缺省时接口Cost值 = 100 Mbit/s / 接口带宽。其中100 Mbit/s为OSPF指定的缺省参考值,该值是可配置的。一条OSPF路由的Cost值可以理解为是从目的网段到本路由器沿途所有入接口的Cost值累加。也可以说到目的网段所有出接口cost值的累加

假设参考值为默认参考值,当带宽为100M时,cost=1,当带宽为1000M时,cost=0.1=1(取非0整数),当带宽为2.048M时,cost=48.82=48(直接取整)

但是,当所有带宽都很大,1000M、2000M,甚至更高,由于默认参考值太小,仅仅用100M作为参照是不够的,这就会导致这些链路的cost值都为1,解决办法有:1.在路由器上改大参考带宽(bandwidth-reference ?)注意,整个网络路由器的参考带宽都要一起改。2.直接修改ospf开销(ospf cost ?)。由此可知,参考带宽的修改是全局的修改,直接修改属于局部微调,在一些带宽较大项目中,会要求修改带宽参考值。

ospf邻居表

在ospf相互传递LSA前,需要先通过hello报文建立邻居关系,ospf邻居表查看命令:display ospf peer.

LSDB表

LSDB表会保存自己产生的及从邻居收到的的LSA信息,Type标识LSA的类型,linkstate id随LSA类型的改变而改变,advrouter标识发送LSA的路由器,使用命令 display ospf lsdb查看lsdb表
如何唯一的识别一条LSA?1.TYPE 2.LINKstate ID 3.ADV ROUTER

ospf路由表

ospf路由表和路由器路由表是两个不同的表,ospf路由表包含destination、cost、nexthop等指导转发的信息。查看ospf路由表的命令是:display ospf routing

ospf域与单区域

ospf域(domain):一系列使用相同策略的连续的ospf网络设备所构成的网络(每台路由器只有一个进程,都使用ospf协议),为了保证每台路由器都能正常的计算路由,就要求域内所有的路由器同步 LSDB ,才能达到对整个 OSPF 网络的一致认知。当网络规模越来越大时,每台路由器维护的 LSDB 变得臃肿,计算庞大的 LSDB 需要消耗更多的设备资源,加重设备的负担。另外,网络拓扑的变化,引起所有域内的路由器重新计算,而域内路由无法进行汇总,每台路由器需要维护的路由表也越来越大,又是一个不能忽略的资源消耗。

因此,OSPF 引入了区域( Area )的概念。在一个大规模的网络中,把 OSPF 域分成多个区域。 LSA 的泛洪只在单个区域内部,同一个区域内的路由器维护一套相同的 LSDB ,对区域内的网络有一致的认知。每个区域独立进行 SPF 计算,区域内的拓扑结构对区域外是不可见的,而且区域内部的拓扑变化通知被限制在区域内,避免对区域外部造成影响.

ospf路由器类型

根据位置及功能,可分为:区域内路由器IR(所有接口都在同一区域)、区域边界路由器ABR(链接骨干区域和非骨干区域的路由器)、骨干路由器BR(有接口在骨干区域的路由器,骨干区域的IR+所有ABR=所有BR)、自治系统边界路由器ASBR(链接其他网络的路由器)

OSPF工作原理

OSPF路由器之间存在两种关系:邻居关系和邻接关系。
假设两台路由器在相连的接口上各自激活ospf进程,双方会自动发送并侦听hello报文,通过hello报文发现彼此后,双方建立邻居关系。
邻居关系建立后,路由器会进行一系列报文交互,在同步LSDB,双方开始独立计算路由时,邻接关系建立。

OSPF邻接关系建立过程

从邻居到邻接,大致要经过四个步骤:建立邻居关系、协商主从(DD报文)、交互LSDB摘要信息(DD报文)、同步LSDB。
(为什么要进行主从选举?因为LSDB的同步需要交换LSA的信息,为了保障交换过程中的有序性和可靠性,需要进行主从选举。)
(LSDB的同步不仅要求邻居之间LSDB的LSA相同,且LSA的新旧程度要一致。LSA的摘要解决LSA的标识问题(有没有)以及LSA的新旧问题(时效性))-----注意区分LSDB的摘要信息和LSA摘要信息
此图虚线上方就是LSA的摘要信息
LSDB的摘要信息(DD报文)实际上就是LSDB所有LSA摘要信息的集合

hello报文,源IP为接口IP,目的IP为224.0.0.5(ospf专用组播地址,用于标识所有运行ospf协议的路由器,当运行ospf协议的接口接收到目的地址为224.0.0.5的报文时,会自动将该报文发往CPU处理),在点到点链路(p2p)和广播型链路上,每隔10s发送一次,邻居失效时间为40s.在点到多点链路和非广播式多路访问链路(NBMA),每隔30s发送一次,邻居失效时间是120s.

ospf任何情况建立邻居的条件:
1.router id不能冲突
2.area id要相同
3.auth type(认证类型)要一致
4.auth data(认证数据)要能通过认证
5.hello间隔时间和失效时间要一致
6.option中的N bit和E bit取值要相同

ospf通过三次握手建立邻居关系,在没有发送hello报文前,初始状态为Down状态。当一台OSPF路由器收到其他路由器发来的首个Hello报文时会从初始Down状态切换为Init状态。当OSPF路由器收到的Hello报文中的邻居字段包含自己的Router ID时,从Init切换2-way状态。

参考资料

https://mp.weixin.qq.com/s/v8AsDaUySlGhnI3qiyp3iA
https://zhuanlan.zhihu.com/p/455522427?utm_id=0
https://blog.csdn.net/qq_40909772/article/details/106467772
https://blog.csdn.net/qq_40909772/article/details/106498557

标签:LSDB,LSA,ospf,基础,链路,OSPF,路由器
From: https://www.cnblogs.com/justicevil/p/17519060.html

相关文章

  • JAVAEE基础知识
    JAVAEE基础知识2018年3月,开源组织Eclipse基金会宣布,JavaEE(EnterpriseEdition)被更名为JakartaEE,也就是9版本后改名JakartaEE,也就是JakartaEE9。JavaEE(JavaPlatform,EnterpriseEdition)是sun公司(2009年4月20日甲骨文将其收购)推出的企业级应用程序版本。这个版本以前称为J2EE......
  • 普及模拟2 +【LGR-155-Div.3】洛谷基础赛 #3 &「NnOI」Round 2
    普及模拟2\(T1\)地址\(0pts\)简化题意:判断一个\(IP\)地址是否合法(数据保证字符串中存在且仅存在4个被字符分开的整数)#include<bits/stdc++.h>usingnamespacestd;#definelllonglong#definesortstable_sort#defineendl'\n'chars[100];intmain(){ freope......
  • SQL注入基础学习
    SQL注入基础一、sql注入的基本知识Ⅰ、sql注入原理通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。通常未经检查或者未经充分检查的用户输入数据或代码编写问题,意外变成了代码被执行。产生漏洞的条件:参数用户可控参......
  • java基础运算符04(扩展运算符,三元运算符,包机制)
    扩展赋值运算符扩展赋值运算符属于比较偷懒的一种方式,+=,-=,*=,/=都是同样的原理和运用方式,不深入学习,就代码示例一下publicclassDemo{publicstaticvoidmain(String[]args){inta=10;intb=20;a+=b;//a=a+bSystem.out.prin......
  • 无涯教程-TensorFlow - 数学基础
    在TensorFlow中创建基本应用程序之前,了解TensorFlow所需的数学概念非常重要,数学被视为任何机器学习算法的核心,借助于数学的核心概念,定义了针对特定机器学习算法的解决方案。向量(Vector)将连续或离散的数字数组定义为向量,机器学习算法处理固定长度的向量,以产生更好的输出。机......
  • 2.go语言基础类型漫游
    本篇前瞻本篇是go语言的基础篇,主要是帮助大家梳理一下go语言的基本类型,注意本篇有参考go圣经,如果你有完整学习的需求可以看一下,另外,go语言的基本类型比较简单,介绍过程就比较粗暴。基本类型整形这个不是韩国的“绝学”——整形术,整形在编程中可以表示一定范围内的整数注意:int......
  • linux基础命令
    1、显示了系统名称和内核版本cat/etc/issue2、显示系统名、节点名称、操作系统的发行版号、操作系统版本、运行系统的机器ID号uname-a3、查看磁盘空间占用情况df-hl4、查看内存使用情况free-mtotal内存总数used已经使用的内存数:free空闲的内存数shared当前已经废弃不用,......
  • linux基础
    1.计算机基础美团单车内存-ram读写速度快-运行程序-程序从闪存加载到[内存]中运行掉电数据丢失临时存储数据闪存-rom读写速度慢掉电数据不丢失-存储数据-存储信息永久存储数据程序运行下载微信-闪存手机:12+25612-内存256-闪存操作系统中的......
  • 【Freertos基础入门】队列(queue)的使用
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档@TOC前言本系列基于stm32系列单片机来使用freerotsFreeRTOS是一个广泛使用的开源实时操作系统(RTOS),它提供了丰富的功能和特性,使嵌入式系统的开发更加简单和高效。队列是FreeRTOS中常用的一种通信机制,它用于在任务之间传......
  • 领域驱动设计(DDD):从基础代码探讨高内聚低耦合的演进
    大家好,我是付威,一名已在编码第一线奋斗了十余年的程序员。在2019年我初次接触到领域驱动设计(Domain-DrivenDesign,简称DDD)的概念。在我的探索中,我发现许多有关DDD的教程过于偏重于战略设计,充斥着许多晦涩难懂的概念,导致阅读起来相当艰难。有些教程往往只是解释了DDD的概念,而未深入......