路由

在网络中,路由相当于就是一张地图,让路由器知道这个对应的IP数据包应该往哪端口、网段走;而这个“地图”我们称之为路由表,不同的目的IP路由表的下一个跳也不同,其生成方式有又有多种:

  • 静态路由:网络管理员手动定义的路由表条路
    • 默认路由:特殊的静态路由,路由表中没有的可以统一定义往这一路走。
  • 动态路由:通过路由协议来自动生成路由表条目,其中动态路由又有很多种,通过自治系统(AS)来划分
    • IGP(内部网关协议)RIP、OSPF、IS-IS、EIGRP
    • EGP(外部网关协议)BGP
协议名 协议算法 备注
RIP(路由信息协议) 距离矢量协议(DV)  
OSPF(开放式最短路径优先) 链路状态协议(LS) 可以用在大型的企业核心网中
IS-IS(中间系统到中间系统) 链路状态协议(LS) 这个协议我用比较少,和OSPF类似
EIGRP(增强内部网关路由协议) 链路状态+距离矢量协议(LS+DV) 思科私有协议
BGP(边界网关协议) 距离矢量协议(DV) 用在AS之间的路由协议,结合MPLS技术,实现不同AS内路由协议不同也可正常通信

路由协议算法

路由协议算法一般是两种,距离矢量协议和链路状态协议。

距离矢量协议

距离矢量路由协议算法,定期(比如RIP是30s)获取相邻路由器的路由表条目,对开销更低或者新的条目进行开销增加的操作,更新在自己的路由表条目。

  • 特点:开销小、路由器只知道邻居路由器的情况可能有不是最优的路由决策、收敛较慢;

链路状态协议

链路状态协议算法,获取最多使用Dijkstra算法,求出最短路径。

  • 特点:开销大、收敛快

OSPF协议(协议号89)

OSPF是我们最常用的动态路由协议。回归到我们动态路由的目的:

让路由器能够自动地建立自己的路由表,并且能够根据实际情况的变化适时地进行调整。

OSPF基本思想:

每个路由器将已知的链路状态信息通告邻居,收敛后,每个路由器对全网的链路状态有相同的路由认识,也就是全部拓扑。单台路由器根据全部拓扑,使用Dijkstra计算路由。

LSA和LSDB

名词 注解
LSA(链路状态通告) LSA含有路由器链路状态的信息(比如路由器编号,直连网段,开销等),一台路由器对于一条LSA
LSDB(链路状态数据库) 存在每台路由器中,由多条LSA组成,实现区域内部可以达到信息同步

图1.LSA和LSDB

DB和BDR

  • DR指定路由器(Designated Router),负责建立邻接和LSA的同步工作
  • BDR备份指定路由器(Back-up Designated Router)

DR/BDR由于端口的优先级来进行选举,接口的DR优先级越大越优先

DR和BDR会与其他所有路由器形成邻接关系并交换链路状态信息,其他路由器之间不直接交换链路状态信息

组播地址传递

组播IP 功能
224.0.0.5(AllSPFRouter) DRother侦听224.0.0.5
224.0.0.6(AllDRouter) DR/BDR侦听224.0.0.6
  1. 在点到点网络,是连接单独的一对路由器的网络、PPP(点对点)网络上的有效邻居总是可以形成邻接关系的,在这种网络上,OSPF包的目标地址使用的是224.0.0.5来发送LSA等路由选择及更新信息,这个组播地址称为AllSPFRouters。
  2. 在广播型网络,比如以太网,Token Ring和FDDI,这样的网络上会选举一个DR和BDR,DR/BDR的发送的OSPF包的目标地址为224.0.0.5,运载这些OSPF包的帧的目标MAC地址为0100.5E00.0005;而除了DR/BDR以外的OSPF包的目标地址为224.0.0.6,这个地址叫AllDRouters。

工作过程

  1. 发现邻居(A、B先相互发送Hello报文)
  2. 建立邻接关系(网络中选取DR和BDR,网络内所有的路由器只与DR和BDR建立邻接关系)
  3. 传递链路状态信息LSA(收敛以后区域内所有路由器具有相同的LSDB)
    1. 触发更新或定时(30min)更新
    2. 增量更新(只向邻居发送需要LSA)
  4. 计算最优路由(Dijkstra算法)
    1. 使用LSDB内的LSA,对应的生产加权的有向图,每台路由器自动计算自己最优的路径。

图2.计算最优路由

Area 区域划分

  • 使用划分的区域的方式,将大区域划分为若干个小区域。每个区域内只需要维护本区域内的LSDB,同时可以减少LSA泛洪范围。
  • 区域ID可以使用点32位点分十进制命名,也可以直接使用一个十进制数。area 0=area 0.0.0.0

所有的区域以星型结构的方式与area0(骨干区域)直接连接。

  • 边界的路由器称之为ABR,可能端口1是area0端口2是area1。

五种报文

报文类型 功能
Hello 发现和维护邻居关系
Database Description 交互链路状态数据库摘要
Link State Request 请求特定的链路状态信息
Link State Update 发送详细的链路状态信息
Link State Ack 发送确认报文

浅谈-动态路由之OSPF的理解的更多相关文章

  1. [原创]浅谈在创业公司对PMF的理解

    [原创]浅谈在创业公司对PMF的理解 在创业时,大多数人都常谈一个词叫"MVP“,但PMF谈的比较少,PMF在创业公司尤为重要,以下谈谈个人一些看法. 1.什么是PMF? 创业公司:一种是找 ...

  2. [原创]浅谈在创业公司对MVP的理解

    [原创]浅谈在创业公司对MVP的理解 目前自已所处的公司类似一个创业平台,我们内部会不断的去孵化不同方向的产品,产品经理经常谈到的一个词就是MVP,所以有必需要去了解下什么是MVP? 1 什么是MVP ...

  3. CISCO 动态路由(OSPF)

    OSPF(开放式最短路径优先):是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由.是对链路 ...

  4. 【 浅谈Linux路由机制 】

    以下均为个人实验验证结果,如有问题,恳请指正. 现在服务器一般都有四张网卡,给了我们更多网络模型的选择.为了业务的需求,有时我们需要如下网络架构 系统:centos 7.2 x64 两张网卡不在同一个 ...

  5. 浅谈对java中锁的理解

    在并发编程中,经常遇到多个线程访问同一个 共享资源 ,这时候作为开发者必须考虑如何维护数据一致性,在java中synchronized关键字被常用于维护数据一致性.synchronized机制是给共享 ...

  6. 浅谈EM算法的两个理解角度

    http://blog.csdn.net/xmu_jupiter/article/details/50936177 最近在写毕业论文,由于EM算法在我的研究方向中经常用到,所以把相关的资料又拿出来看了 ...

  7. 浅谈vue路由原理

    Vue的路由实现:hash模式 和 history模式 hash模式:在浏览器中符号“#”,#以及#后面的字符称之为hash,用window.location.hash读取: 特点:hash虽然在UR ...

  8. 干货,阿里P8浅谈对java线程池的理解(面试必备)

    线程池的概念 线程池由任务队列和工作线程组成,它可以重用线程来避免线程创建的开销,在任务过多时通过排队避免创建过多线程来减少系统资源消耗和竞争,确保任务有序完成:ThreadPoolExecutor ...

  9. 浅谈对ST表的一些理解

    今天打了人生第一道ST表题(其实只是ST表跑得最快); ST表是一种用来解决RMQ问题的利器... 大体操作有两步: 第一部分nlogn预处理 第二部分O(1)询问 预处理就是运用倍增+区间动规 ST ...

随机推荐

  1. 基于gRPC编写golang简单C2远控

    概述 构建一个简单的远控木马需要编写三个独立的部分:植入程序.服务端程序和管理程序. 植入程序是运行在目标机器上的远控木马的一部分.植入程序会定期轮询服务器以查找新的命令,然后将命令输出发回给服务器. ...

  2. 照着这个保姆级文档来,虚拟机装CentOS不再踩坑

    软件准备 VirtualBox 6.1.26 centOS镜像 接下来我们就开始进行安装: 创建虚拟机 新建虚拟机 点击下一步,调整内存大小 内存大小根据需要调整,然后点击下一步 3. 虚拟硬盘设置 ...

  3. 实践GoF的设计模式:迭代器模式

    摘要:迭代器模式主要用在访问对象集合的场景,能够向客户端隐藏集合的实现细节. 本文分享自华为云社区<[Go实现]实践GoF的23种设计模式:迭代器模式>,作者:元闰子. 简介 有时会遇到这 ...

  4. CSP-J2021 题解

    分糖果 题意 选择L~R中的某个数 , 使得x mod k的结果最大. 思路 分两种情况考虑: 若 L 和 R 对 K 取模后在同一区间,则必然在 x=R 位置取到最大值: 否则 L~R 必然跨越多个 ...

  5. 大数据管理系统架构Hadoop

    Hadoop 起源于Google Lab开发的Google File System (GFS)存储系统和MapReduce数据处理框架.2008年,Hadoop成了Apache上的顶级项目,发展到今天 ...

  6. Apache DolphinScheduler 1.2.1 发布说明

    Apache DolphinScheduler 于2020年2月24日正式发布 1.2.1 版,发布内容如下: 新特性: [#1497] 通过 API 创建的工作流在前端展示时自动调整布局. [#74 ...

  7. django中的forms组件

    form介绍 用户需要向后端提交一些数据时,我们常常把这些数据放在一个form表单里,采用form标签,里面包含一些input等标签把用户的数据提交给后端. 在给后端提交数据的时候,我们常常也需要对于 ...

  8. java-分支重载以及构造方法

    1:方法的签名: 方法名+参数列表就是一个方法的签名 2.方法的重载(Overload): 1)发生在同一个类中,方法名称相同,参数列表不同 2)编译器在编译时会根据方法的签名自动绑定方法 3.构造方 ...

  9. Python小游戏——外星人入侵(保姆级教程)第一章 03设置飞船图片 04创建Ship类

    系列文章目录 第一章:武装飞船 03:设置飞船图片 04:创建Ship类--管理飞船行为的类 一.设置飞船图片 1.注意事项 A.将图片设置为位图bmp格式最简单,因为pygame默认加载位图 B.飞 ...

  10. 完全彻底的卸载MySQL5.7.35

    最开始接触计算机的时候关于MySQL卸载的这个问题,导致我重装了一次系统.就在今天我又遇到了同样的问题. Setp①: 想要安装新的数据库软件必须要先彻底且干净的删除掉以前的数据库. 第一步要做的是停 ...