动态路由协议及分类

动态路由协议及分类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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python 列求和_python分数序列求和

    python 列求和_python分数序列求和欢迎访问少儿编程网(http://www.pxcodes.com)在python求和的方法:首先定义数组,并输入求和的整数;然后使用for循环,保存在数组中;接着调用sum函数,计算所有整数的和;**后输出计算得到的所有整数和。6MX少儿编程网-https://www.pxcodes.com6MX少儿编程网-https://www.pxcodes.com本教程操作环境:windows7系统、pyt…

    2025年7月12日
    0
  • substring截取字符串特定位置的值

    substring截取字符串特定位置的值1、截取指定字符上的字符串:substring(start,end)start:开始的位置(从0开始索引)包括该位置的字符,不可省略end:结束的位置(不包括该位置上的字符),可省略例:Stringstr=“第1周”;str=str.substring(1,2);str此时里面就剩一个1了若start与end相等,那么返回的就是一个空串若start比end大…

    2022年5月23日
    49
  • linux中777是什么权限_centos切换到root用户

    linux中777是什么权限_centos切换到root用户基本上就是全部开放读写执行操作权限一个文件有三个权限,分别是读、写和执行,它们对应的数分别是4、2和1。如果某个用户只有读权限没有写和执行权限当然就是4,如果三个如果有读和执行权限就是5(4+1)所以有全部权限就是7了。而一个文件或文件夹面对的用户分三类:所属用户、所属用户的组其他用户以及组外用户。所以777三个数字就是对应这三个用户对象全部都有读、写、执行权限。如果是所属用户有全部权限,组员有读…

    2022年10月9日
    0
  • mfc怎么把cstring转换成int(string型转化为int型)

       m_ed.GetWindowTextW(str);  char*time;  time=(char*)(LPCTSTR)str;  inttiti;  titi=atoi(time); 网上搜索了很久.也没有找到好的转换 然后我偶然的试了这个方法..没想到可以成功转换==#  

    2022年4月11日
    159
  • SVN的学习.SVN的使用方式!TortoiseSVN以及TortoiseSVN汉化包下载和使用!

    一.SVN是什么:SVN是Subversion的简称,是一个开放源代码的版本控制系统,说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。二.SVN的工作流程:集中式管理的工作流程:集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码,然后开发,最后解决冲突,提交。所有的版本信息都放在服务器上。如果脱离了服务器,开发者…

    2022年4月10日
    33
  • qca wlan wifi modules 解析一

    qca wlan wifi modules 解析一分析lsdk-ap121lsdk-ap134源码:https://github.com/hades13/lsdk_ar9531包含wifidrivers另一wifidrivers版本:https://download.csdn.net/download/nolycjyf/3722308目录结果:appsbuilddriversincludemodulesbo…

    2022年7月27日
    11

发表回复

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

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