动态路由协议及分类

动态路由协议及分类3 动态路由协议及分类前面已经为大家介绍了路由器对于直连路由的发现过程 以及静态路由的概念和部署要点 对于一个小型网络 静态路由或许已经能够满足需求 但是在大中型网络中 由于网段数量特别多 网络拓扑复杂等原因 仅仅使用静态路由来实现数据互通显然是不太现实的 配置及维护工作量都太大 再者静态路由无法动态地响应网络拓扑变更 此时就需要考虑另一种方案 动态路由协议 DynamicRouti 了 当我们在路由器上激活了动态路由协议后 就相当于激活了路由器的某种能力 路由器之间就

技术背景

  • 对于一个小型网络,静态路由或许已经能够满足需求,但是在大中型网络中,由于网段数量特别多、网络拓扑复杂等原因,仅仅使用静态路由来实现数据互通显然是不太现实的,原因是配置及维护工作量都太大,再者存在静态路由无法动态地响应网络拓扑变更等因素。
  • 动态路由协议(Dynamic Routing Protocol)可以很好地解决上述需求问题。
  • 在路由器上激活了动态路由协议后,就相当于激活了路由器的某种能力,路由器之间就能够交互路由信息或者用于路由计算的数据,而当网络拓扑发生变更时,动态路由协议能够感知这些变化并且自动地作出响应,从而使得网络中的路由信息适应新的拓扑,这种动作完全由协议自动完成,无需人为干预。
  • 因此在一个规模较大的网络中,我们往往会使用动态路由协议,或者静态路由与动态路由协议相结合的方式来建设该网络。

动态路由协议分类

  • 动态路由协议有很多,而分类的方法也存在多种。
  • 基于协议算法不同,可以将动态路由协议分成两类:
  1. 距离矢量路由协议(Distance Vector Routing Protocol);
  2. 链路状态路由协议(Link State Routing Protocol) 。
  • 根据工作范围的不同,动态路由协议可分为两类:
  1. IGP ( Interior Gateway Protocol,内部网关协议),比如RIP, OSPF, IS-IS等;
  2. EGP ( Exterior Gateway Protocol,外部网关协议),比如BGP ( Border Gateway Protocol )等。
  • IGP被用于在AS(Autonomous System,自治系统)内部实现路由信息的交互,而EGP则被用于在AS之间实现路由信息的交互。AS的传统定义是,由一个单一的机构或组织所管理的一系列IP网络及其设备所构成的集合,可以简单地将AS理解为一个独立的机构或者企业所管理的网络,比如一家跨省公司的网络等。

距离矢量路由协议

  • 距离矢量路由协议指的是基于距离矢量的路由协议,RIP是最具代表性的距离矢量路由协议。
  • “距离矢量”这个概念包含两个关键的信息:“距离”和“方向”,其中“距离”指的是到达目标网络的度量值,而方向指的是到达该目标网络的下一跳设备。
  • 每一台运行距离矢量路由协议的路由器都会周期性地将自己的路由表通告出去,其直连的路由器会收到这些路由信息,学习前者通告的路由并更新自己的路由表后,它也会向自己直连的路由器通告其路由表,最终网络中的每台路由器都能获知到达各个网段的路由,这个过程被称为路由的泛洪(Flooding)过程。
示例

如下图所示的网络拓扑中,

在这里插入图片描述

  • R1及R2两台路由器直连。
  • 初始情况下R1及R2都只知道自己“家门口的情况”,也就是说,R1及R2都自动发现了自己直连接口的路由。R1在其路由表中写入192.168.12.0/24及1.0.0.0/8两条直连路由,而R2则在其路由表中写入192.168.12.0/24这一条直连路由。
  • 对于R2而言,此刻是无法访问1.0.0.0/8的,因为在它的路由表中并没有任何能够到达这个网段的路由信息。
  • 现在R1和R2上激活距离矢量路由协议。
  • R1路由通告:
    (1)R1将已经发现的路由(1.0.0.0/8及192.168.12.0/24)通过路由协议报文通告给R2,这两条路由各附带着一个度量值。
    (2)以距离矢量路由协议的典型代表RIP为例,它使用跳数(Hop Count)作为路由的度量值,所谓跳数就是到达目的网段所需经过的路由器的个数,直连网段的度量值被视为0跳。
    (3)R1将两条直连路由通告给R2时,为路由设置的跳数为1,“我家门口的这些网段对于我自己而言可以直接到达(只需0跳),现在别人要经过我来访问该网段,就需要加上我这一跳”。


  • R2处理R1的路由通告:
    (1)由于192.168.12.0/24是R2自己的直连网段,因此R2会忽略R1通告过来的、到达该网段的路由更新,而1.0.0.0/8路由对于R2而言是未知的,因此R2将这条路由加载进路由表,同时为该条路由关联度量值:1跳,并且把路由的通告者R1视为该条路由的下一跳。
    (2)当R2要转发到达1.0.0.0/8的数据包时,就会将数据包发给下一跳路由器R1。可以形象的理解就是:“R2认为1.0.0.0/8可以通过R1到达,自己与该网段距离1跳路由器”,这也就是“距离矢量”名称的由来。

  • 需要注意的是,运行距离矢量路由协议的路由器并不了解网络的拓扑结构,该路由器只知道:
    (1)自己与目的网络之间的距离;
    (2)从哪个方向可到达目的网络。

链路状态路由协议

  • 链路状态路由协议与距离矢量路由协议不同,运行链路状态路由协议的路由器会使用一些特殊的信息描述网络的拓扑结构及IP网段,这些信息被称为链路状态(Link State )信息,所有的路由器都会产生描述自己直连接口状况的链路状态信息。
  • 路由器将网络中所泛洪的链路状态信息都搜集起来并且存入一个数据库中,这个数据库就是LSDB( Link-State Database,链路状态数据库),
  • LSDB可以视为对整个网络的拓扑结构及IP网段的描绘,所有路由器拥有对该网络的统一认知,接下来所有的路由器都基于LSDB使用特定的算法进行计算,计算的结果是得到一棵以自己为根的、无环的最短路径树,并将基于这棵树得到的路由加载到路由表中。
  • 典型的链路状态路由协议有OSPF及IS-IS。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233434.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • LAMP配置笔记

    LAMP配置笔记1>apache的配置文件路径:/etc/apache2/apache2.conf2>php的配置文件路径:/etc/php5/apache2/php5.ini3>mysql配置文件路径:/etc/mysql/my.cnf4>phpmyadmin配置文件路径:/etc/phpmyadmin/apache.conf5>网站根目录:/var/

    2022年5月3日
    42
  • 用亚马逊云建代理服务器[通俗易懂]

    用亚马逊云建代理服务器[通俗易懂]作者:Vamei出处:http://www.cnblogs.com/vamei转载请先与我联系。 我们用电脑、平板、手机等访问互联网时,本地设备和服务器之间的通信有可能因为某些不可控因素被切断。这种情况下,我们可以采用“曲线”的方式,让一个第三方的服务器来做接力,从而连接目标服务器。代理服务器可以绕过许多基于IP地址的限制。例如某视频网站只允许日本的IP访问,那么可以借助一台在日本的…

    2022年9月29日
    2
  • quartz定时任务不执行(任务统筹策略)

    由于某种原因,例如应用停掉,导致定时任务错过了本该执行的时间点,这就是定时任务过期。对于过期的定时任务,我们需要基于某种策略对其进行处理。过期策略在Trigger接口中定义了两种过期策略,publicstaticfinalintMISFIRE_INSTRUCTION_SMART_POLICY=0;publicstaticfinalintMISF…

    2022年4月11日
    1.5K
  • java localdatetime转date_java编码格式转换

    java localdatetime转date_java编码格式转换上篇文章介绍了Java8和Java8之前的时间处理的相关类,但是在日常开发中难免会遇到Java8和之前的旧对象互转的需求。我整理了一下之前的内容,做了一个工具类,如下:publicclassDateUtils{/***@Author:zhuoli*@Description:判断unix当前unix时间是否为0点*@paramu…

    2022年10月3日
    2
  • 随机森林随机选择特征的方法_随机森林步骤

    随机森林随机选择特征的方法_随机森林步骤当你读到这篇博客,那么你肯定知道手动调参是多么的低效。那么现在我来整理一下近几日学习的笔记,和大家一起分享学习这个知识点。

    2022年8月30日
    4
  • 使用eclipse建立ARM开发环境

    使用eclipse建立ARM开发环境原文:http://blog.sina.com.cn/s/blog_78212a050100ph5y.html J-Link: http://www.segger.com/http://www.eclipse.org/downloads/ 下载Eclipse IDE for C/C++ Developers 环境http://sourceforge.net/projects/gnu

    2022年6月6日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号