动态路由OSPF基础学习笔记一

news2024/9/22 21:21:47

由于静态路由由网络管理员手工配置,因此当网络发生变化时,静态路由需要手动调整,这制约了静态路由在现网大规模的应用。

动态路由协议因其灵活性高、可靠性好、易于扩展等特点被广泛应用于现网。在动态路由协议之中,OSPF(Open Shortest Path First,开放式最短路径优先)协议是使用场景非常广泛的动态路由协议之一。

OSPF在RFC2328中定义,是一种基于链路状态算法的路由协议。

1.初步了解配置OSPF

(1)配置PC的IP地址信息

PC1:

PC2:

(2)配置R1和R2的接口IP

R1:

sysname R1

undo info-center enable

interface Ethernet0/0/0

 ip address 192.168.1.1 255.255.255.0

quit

interface Ethernet0/0/1

 ip address 12.1.1.1 255.255.255.0

 quit

R2:

sysname R2

undo info-center enable

interface Ethernet0/0/0

 ip address 192.168.2.1 255.255.255.0

quit

interface Ethernet0/0/1

 ip address 12.1.1.2 255.255.255.0

 quit

(3)配置OSPF

R1:

ospf 1 router-id 1.1.1.1     #创建ospf进程(进程号1)

 area 0.0.0.0              #进入区域0

  network 192.168.1.0 0.0.0.255     #通告直连网段

  network 12.1.1.0 0.0.0.255        #通告直连网段

quit

quit

R2:

ospf 1 router-id 2.2.2.2

 area 0.0.0.0

  network 192.168.2.0 0.0.0.255

  network 12.1.1.0 0.0.0.255

quit

quit

(4)验证测试

查看路由表

R1:

R2:

由此可以看出R1通过OSPF路由协议学习到去往192.168.2.0/24的路由信息,R2通过OSPF路由协议学习到去往192.168.1.0/24的路由信息。R1学到192.168.2.0/24通过R2向邻居通告它自身的路由信息学习到的,同样R1也会把自己路由表中学习到的192.168.1.0/24路由信息通告给R2。

PC1访问PC2:

2.动态路由概述

2.1为什么需要动态路由协议?

静态路由是由工程师手动配置和维护的路由条目,命令行简单明确,适用于小型或稳定的网络。

静态路由有以下问题:

无法适应规模较大的网络:随着设备数量增加,配置量急剧增加。

无法动态响应网络变化:网络发生变化,无法自动收敛网络,需要工程师手动修改。

例如图中的R1连接R2的链路发生故障,那么就需要网络管理员去手动配置更改R1去往R2的路由,需要经过R3在到R2。并且在R1和R2链路断开时或者发生故障时,R1上配置直接去往R2的静态路由是无法感知的,R1上的静态路由还是存在的,并不会因为链路故障而消失,除非管理员手动更改,这就是静态路由不灵活的体现了。

2.2动态路由协议的分类

2.2.1按工作区域分类

IGP(Interior Gateway Protocols,内部网关协议):RIP    OSPF    IS-IS

EGP(Exterior Gateway Protocols,外部网关协议:BGP

2.2.2按工作机制及算法分类

(Distance Vector Routing Protocols, 距离矢量路由协议) :RIP

(Link-State Routing Protocols,链路状态路由协议): OSPF  IS-IS

2.3距离矢量路由协议

运行距离矢量路由协议的路由器周期性的泛洪自己的路由表。通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加载进自己的路由表中。

对于网络中的所有路由器而言,路由器并不清楚网络的拓扑,只是简单的知道要去往某个目的方向在哪里,距离有多远。这即是距离矢量算法的本质。

假设R1路由表有1万多条,每隔30s左右向相邻的路由器去泛洪自己的路由表信息,R2收到之后呢,30s会向R3泛洪自己的路由表信息,那么对于链路带宽来说占用是比较严重的,比较消耗设备的资源。这就是距离矢量运行的特点,它传输时传递的都是完整的路由信息,它不是链路状态,链路状态不是传递完整的路由信息,而是传递“原材料”。

距离矢量是通过距离的远近来衡量路由到达目标的优劣,比如说R1到达R3有一条直连的链路,那么直接走R1相连R3比较近一些;而不是走到R2再到R3的线路。就算上面的带宽有10G那么大,底下是100M,对于距离矢量来说,还是底下距离最短最优到达目标,它只看距离远近,不管你的带宽有多大。

而链路状态协议,以OSPF来说,它既要看链路的带宽,也要看距离的远近,它要综合去衡量。

2.4链路状态路由协议 - LSA泛洪

与距离矢量路由协议不同,链路状态路由协议通告的的是链路状态而不是路由表。运行链路状态路由协议的路由器之间首先会建立一个协议的邻居关系,然后彼此之间开始交互LSA(Link State Advertisement,链路状态通告)

例如R3在OSPF中不再通告路由信息,而是LSA,跟R2、R4建立邻居。

LSA描述了路由器接口的状态信息,例如接口的开销、连接的对象等。

2.5链路状态路由协议 - LSDB组建

每台路由器都会产生LSAs,路由器将接收到的LSAs放入自己的LSDB(Link State DataBase,链路状态数据库)。路由器通过LSDB,掌握了全网的拓扑。

2.6链路状态路由协议 - SPF计算

每台路由器基于LSDB,使用SPF(Shortest Path First,最短路径优先)算法进行计算。每台路由器都计算出一棵以自己为根的、无环的、拥有最短路径的“树”。有了这棵“树”,路由器就已经知道了到达网络各个角落的优选路径。

例如R3以自己为树根去计算到达R4、R1和R2的路到底怎么走。

2.7链路状态路由协议 - 路由表生成

最后,路由器将计算出来的优选路径,加载进自己的路由表(Routing Table)。

2.8链路状态路由协议总结

第一步:建立邻居关系;

第二步:发送LSA(链路状态信息),有链路状态信息之后,收集到的信息会放进自己LSDB(链路状态数据库)里面;

第三步:根据LSDB通过运行SPF算法,算出相关的最优路径,

第四步:把最优的路由放进自己的路由表中,用于指导数据的转发。

3.OSPF简介

OSPF是典型的链路状态路由协议,是目前业内使用非常广泛的IGP协议之一。

目前针对IPv4协议使用的是OSPF Version 2(RFC2328);针对IPv6协议使用OSPF Version3(RFC2740)。如无特殊说明本章后续所指的OSPF均为OSPF Version 2

运行OSPF路由器之间交互的是LS(Link State,链路状态)信息,而不是直接交互路由。LS信息是OSPF能够正常进行拓扑及路由计算的关键信息。

OSPF路由器将网络中的LS信息收集起来,存储在LSDB中。路由器都清楚区域内的网络拓扑结构,这有助于路由器计算无环路径。

每台OSPF路由器都采用SPF算法计算达到目的地的最短路径。路由器依据这些路径形成路由加载到路由表中。

OSPF支持VLSM(Variable Length Subnet Mask,可变长子网掩码),支持手工路由汇总。

多区域的设计使得OSPF能够支持更大规模的网络。

4. OSPF在园区网络中的应用

OSPF通常运行在网关上,网关是二层和三层的分界线。

5. OSPF基础术语

5.1区域

OSPF Area用于标识一个OSPF的区域。

区域是从逻辑上将设备划分为不同的组,每个组用区域号(Area ID)来标识。

比如说区域0、区域1、区域2等等,为什么要划分区域?主要是为了适应大规模的网络,连减轻或者减少路由器的资源消耗,这是设计的初衷。有了这个区域之后,比如我们设计这个多区域的时候可以方便做路由的汇总,路由的过滤和路径的调整等等。

5.2 Router-ID

Router-ID(Router Identifier,路由器标识符),用于在一个OSPF域中唯一地标识一台路由器。

Router-ID的设定可以通过手工配置的方式,或使用系统自动配置的方式。

如果没有手动去配置Router-ID的话,系统会选择路由器上某个接口作为它的Router-ID。

R1:

sys

un in en

sysn R1

int e0/0/0

ip add 13.1.1.1 24

quit

ospf 1

are 0

net 13.1.1.0 0.0.0.255

quit

R2:

un in en

sysn R2

int e0/0/0

ip add 23.1.1.2 24

quit

ospf 1

are 0

net 23.1.1.0 0.0.0.255

quit

R3:

un in en

sysn R3

int e0/0/0

ip add 13.1.1.3 24

quit

int e0/0/1

ip add 23.1.1.3 24

quit

ospf 1

are 0

net 13.1.1.0 0.0.0.255

net 23.1.1.0 0.0.0.255

quit

通过查看OSPF邻居摘要信息命令可以查看router-ID

display ospf peer brief

R1:

R2:

R3:

这个Router-ID系统生成的不太稳定,最好进行手工配置,手工配置指定的router-id不一定是接口的IP地址。

当我们没有手工指定route-id的情况下,系统已经生成route-id了,如果再去手工配置的话它就是提示我们需要重启OSPF进程才会生效,这时候需要重启OSPF进程。

[R1]ospf 1 router-id 1.1.1.1

重启OSPF进程需要退出到系统配置视图下进行关闭,重启OSPF进程的命令为:

<R1>reset ospf process

还有一个手工配置router-id的方法,先是把整个OSPF进程删除掉,接着在全局下配置router-id,最后创建OSPF进程,配置区域和宣告路由信息。

以R2为例:

[R2]undo ospf 1

Warning: The OSPF process will be deleted. Continue? [Y/N]:y

[R2]router id 2.2.2.2

[R2]ospf 1

[R2-ospf-1]area 0

[R2-ospf-1-area-0.0.0.0]network 23.1.1.0 0.0.0.255

[R2-ospf-1-area-0.0.0.0]quit

[R2-ospf-1]quit

[R2]display ospf peer brief

宣告路由信息中,0.0.0.255为反掩码,0代表精确匹配,255也就是全为1,1表示任意匹配。

注意:router-id不能配置冲突,即R1和R2的router-id不可以配置相同。

5.3度量值

OSPF使用Cost(开销)作为路由的度量值。每一个激活了OSPF的接口都会维护一个接口Cost值,缺省时接口Cost=100Mbit/s接口带宽

其中100 Mbit/s为OSPF指定的缺省参考值,该值是可配置的。

笼统地说,一条OSPF路由的Cost值可以理解为是从目的网段到本路由器沿途所有入接口的Cost值累加

例如R2的接口带宽为100M,那么计算出来的开销就是1;

当接口带宽为1000M时,默认的100除以1000等于0.1,取值不会取0.1,而是1。

比如R1的E0/0/0百兆接口下的开销是多少呢?可以通过display ospf interface Ethernet 0/0/0命令来查看。

可以通过到接口下,使用命令ospf cost XXX来修改开销值。

开销的累加:

环回口的开销值为0;

如何看开销进行累加:

例如192.168.2.0到达192.168.1.0开销是多少,看路由传递的方向,也就是回包路由的方向,由图可以看出去往192.168.1.0的开销为1+1=2。

当有多条路径到达同一目标的时候,可以通过调整开销值来进行选路。

调整方式一:

把R2的e0/0/1口开销值改为10,那么去往192.168.1.0/24的开销累加就是1+10=11。

调整方式二:

修改缺省参考值100 Mbit/s变为1000Mbit/s

进入到OSPF进程下进行配置修改

[R2]ospf 1

[R2-ospf-1]bandwidth-reference 1000

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2050924.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux I/O 多路复用机制详解

文章目录 1 文件描述符&#xff08;File Descriptor&#xff09;1.1 什么是文件描述符&#xff1f;1.2 文件描述符与文件的关系 2 文件描述符集合&#xff08;File Descriptor Set&#xff09;2.1 什么是文件描述符集合&#xff1f;2.2 fd_set 结构体 3 select() 函数的工作原理…

ros笔记06--从零体验ros2中launch系统

ros笔记06--从零体验ros2中launch系统 介绍创建步骤最基础的 launch 案例多节点 launch 案例 注意事项说明 介绍 ROS2系统通常由许多节点组成&#xff0c;这些节点运行在许多不同的进程(甚至不同的机器)上。虽然可以通过 ros2 run 单独运行这些节点&#xff0c;但当节点数量很…

【LLM入门】Let‘s reproduce GPT-2 (124M)【完结,重新回顾一下,伟大!】

文章目录 03:43:05 SECTION 4: results in the morning! GPT-2, GPT-3 repro03:56:21 shoutout to llm.c, equivalent but faster code in raw C/CUDA【太牛了ba】03:59:39 summary, phew, build-nanogpt github repo 03:43:05 SECTION 4: results in the morning! GPT-2, GPT-…

计算机毕业设计选题推荐-springboot 基于springboot的宠物健康顾问系统

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

Windows系统下Go安装与使用

step1&#xff1a; 下载go语言SDK 下载地址&#xff1a;https://go.dev/dl/ 下载后选择合适位置安装即可&#xff0c;我选择D盘 在安装完成后&#xff0c;可以通过go env 命令检测是否安装成功。在“命令提示符”界面输入“go env”命令&#xff0c;如果显示如下类似结果则说明…

C++STL初阶(12):stack和queue的初阶实现

1. stack的选型 对于栈的实现是我们非常熟悉的过程&#xff1a; C语言基础数据结构——栈和队列_栈和队列 插入取出数据-CSDN博客 _top表示下标&#xff0c;_capacity表示空间大小&#xff1a; 那么按照我们原来的思路&#xff0c;利用_top和_capacity T*来给stack构形。 temp…

Grok 2携AI图片生成重生

埃隆马斯克&#xff08;Elon Musk&#xff09;的人工智能初创公司xAI推出其最新的AI助手Grok 2的测试版&#xff0c;添加了类似于OpenAI的DALL-E和Google的Gemini的图像生成工具&#xff0c;但对可以生成的图像类型的限制显然较少。<这是其中的一个“亮点”&#xff0c;一些…

【Hot100】LeetCode—234. 回文链表

目录 1- 思路快慢指针链表拆分反转链表 2- 实现⭐234. 回文链表——题解思路 3- ACM 实现 原题连接&#xff1a;234. 回文链表 1- 思路 快慢指针链表拆分反转链表 思路 ①将链表拆分前后两个部分——>找拆分点、②反转后面部分、③根据反转结果&#xff0c;同时利用两个指…

揭秘住宅IP代理:原理、用途及应用分析

在数字化时代&#xff0c;互联网已成为我们日常生活和工作中不可或缺的一部分。然而&#xff0c;随着网络环境日益复杂&#xff0c;隐私保护、网络访问限制等问题愈发凸显。住宅IP代理作为一种新兴的网络技术解决方案&#xff0c;正逐渐成为众多跨境业务和网络活动的重要工具。…

打卡第46天------动态规划(回文串)

想要快点把每一道题给练会,在面试的时候跟面试官对答如流,这家公司实在是让我没有继续待下去的欲望了,天天祈祷上Di,求Shang帝帮助我实现两份工作的无缝衔接。交托仰望。 今天 我们就要结束动态规划章节了,动态规划的题目还是挺难的,贪心和动态规划对我来说都比较困难,对…

Jeecgboot3.6.3的vue3版本的一种flowable动态增加一个用户任务节点的方法(三)后端代码实现

因为这个项目license问题无法开源,更多技术支持与服务请加入我的知识星球。 这部分主要讲后端实现部分 1、增加一个AddTaskVo 类型,提供新增任务需要的数据结构 import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.D…

10结构型设计模式——桥接模式

一、桥接模式 桥接模式&#xff08;Bridge Pattern&#xff09;是结构型的设计模式之一。桥接模式基于类的最小设计原则&#xff0c;通过使用封装&#xff0c;聚合以及继承等行为来让不同的类承担不同的责任。它的主要特点是把抽象&#xff08;abstraction&#xff09;与行为实…

PNG的存储方式[计算机原理]

块的基本理论 众所周知&#xff0c;所有的信息在计算机中以位的形式存在&#xff08;0|1&#xff09;8位是一个字节&#xff0c;可以表示成两个16进制数&#xff0c;例如0xFC因为4位对应一个16进制数嘛。PNG这种图片也不例外&#xff0c;它也是由位组成的&#xff0c;不过我们…

利用Redis获取权限的多种方式

更多实战内容&#xff0c;可前往无问社区查看http://www.wwlib.cn/index.php/artread/artid/10333.html Redis是我们在实战中经常接触到的一款数据库&#xff0c;因其在前期打点中被利用后可直接影响服务器安全所以在攻防过程中也备受红队关注&#xff0c;在本文中会重点分享一…

【java】Java Cryptography Extension (JCE)

在Java中&#xff0c;我们可以使用Java Cryptography Extension (JCE) 来实现加密和解密工具和技术。以下是一些常见的加密和解密技术及其示例代码&#xff1a; 1.使用AES加密和解密 package org.example.Test05;import javax.crypto.Cipher; import javax.crypto.spec.Secre…

高效记录与笔记整理的策略:工具选择、结构设计与复习方法

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

【赵渝强老师】基于RBF的HDFS联邦架构

在最新的Hadoop版本中又实现了基于Router的联盟架构&#xff0c;并且在这个架构之上还实现了许多增强集群管理能力的特性。Router将挂载表从客户端中抽离了出来&#xff0c;解决了ViewFS存在的问题。   视频讲解如下&#xff1a; 基于RBF的HDFS联邦架构 【赵渝强老师】基于R…

基于Mediepipe的手势识别系统 | OpenCV | Mediapipe | C++ | QT | Python | C# | Unity

基于Mediapipe的手势识别系统 OpenCV、Mediapipe C (QT)、Python (PyCharm)、C# (Visual Studio) Unity 3D 登录界面 图片手势识别 视频文件手势识别 摄像头实时手势识别 演示视频 基于Mediapipe的手势识别系统

ESP32 分区表介绍

前言 个人邮箱&#xff1a;zhangyixu02gmail.com关于分区表&#xff0c;很多人看了很多资料很可能依旧是一脸懵逼。不知道各位有没有玩过 EEPROM&#xff0c;他可以断电保存数据。这里你也可以理解为分区表将 Flash 中划分出来了一个 EEPROM。虽然这样说从专业的角度是毫无疑问…

Ilya Sutskever 2023年伯克利大学演讲回顾:无监督学习与GPT的数学基础

引言 在2023年&#xff0c;OpenAI联合创始人之一的Ilya Sutskever在伯克利大学进行了一次极具影响力的演讲。这场演讲虽然内容复杂晦涩&#xff0c;但却被认为是人工智能发展历史上的一个重要里程碑。在演讲中&#xff0c;Sutskever深入探讨了无监督学习的数学依据&#xff0c…