网络互联技术(四)-LSA的第四和第五种类型详解

LSA的第四和第五种类型详解

一、External LSA:第五种LSA

  我们前面已经详细介绍了前面三种LSA,今天就接着介绍第四种和第五种LSA。因为理解ASBR Summary LSA——第四种LSA需要涉及External LSA的一些知识,所以我们先介绍第五种LSA,然后再回过头来看第四种LSA。

  External LSA由ASBR(Autonomous System Border Router,自治系统边界路由器,我们前面说过了OSPF网络就是一个自治系统)产生。它是用来通告OSPF网络内部的路由器,如何到达OSPF网络外部的某个地址。External LSA在整个OSPF网络内部洪泛(除了ASBR所在的区域以外)。External LSA是唯一一种跨越Area洪泛的LSA。

  例如:R1-R2-R3-R5直接连接。R1-R2是OSPF路由器,属于Area 0;R2-R3属于Area1;R5运行RIP(不知道RIP为何物的朋友请自行百度,我这里就不展开说明了)。R3作为ASBR(自治系统边界路由器,OSPF和RIP都是一个自治系统),运行了OSPF与RIP。为了让OSPF内部的R1知道Link R3-R5的网络地址,R3会产生一个External LSA,记录了2件事情:1)Link R3-R5的网络地址;2)经过ASBR(R3)能到达Link R3-R5。当R1收到这个External LSA,它会结合R2的Router LSA(如果你还有印象的话,我们前面讲过同一个OSPF区域之内,路由器间用第一类LSA,Router LSA来交换路由和拓扑信息),计算出到达Link R3-R5的路径。

二、ASBR Summary LSA:第四种LSA

  ASBR Summary LSA由ABR(R2)产生。它是用来通告一个Area内部的路由器:如何到达另一个Area内部的ASBR。换句话说,ASBR Summary LSA的作用是用于告知ASBR的位置。其通告范围是除了ASBR所在的区域外的所有OSPF区域(即在上图中,只在Area 0内传播,而不会在Area 1内传播),因为在ASBR所在的OSPF区域内,ASBR已用第一种LSA,Router LSA,向同区域内的路由器告知了其位置。

  例如,如上图,4台路由器R1-R2-R3-R5直接连接。R1,R2,R3是OSPF路由器,R5运行RIP。R3作为ASBR,运行了OSPF和RIP。R1-R2属于Area 0,R2-R3属于Area 1。如何让OSPF路由器知道到达R5的路径呢?

  • R3作为ASBR,产生External LSA,记录了两件事情:1)目的地Link R3-R5的IP地址;2)经过R3(ASBR)可以到达这个目的地址。External LSA会在OSPF网络内部所有的Area(本除外)内洪泛。
  • R3属于Area 1,所以当Area 1内部的路由器收到External LSA,结合R3的Router LSA就知道了如何到达Link R3-R5。
  • R1是Area 0内部的路由器,它收到External LSA以后仍然不知道如何到达Link R3-R5。因为R1不知道如何到达ASBR(R3)。
  • R2作为ABR,它知道在Area 1内部有一台ASBR。因此,它会产生一个ASBR Summary LSA,通告Area 0内部的路由器:如何到达Area 1内部的ASBR(R3)。当R1收到这个ASBR Summary LSA,结合External LSA,就知道如何到达Link R3-R5。

三、网络拓扑环境搭建

  前面已经讲了第四和第五种LSA,我们知道,要对这两种类型的LSA进行相关实验,就要先搭建起一个如上图OSPF和RIP混合的网络,下面就来看看搭建的具体操作。

                    

  首先,将我们的网络拓扑如上图配置,分别给每条路由路径分配网段,并将其宣告入自治系统(OSPF网络或RIP网络)。具体如何宣告如OSPF网络我这里就不再说了,之前的博文已经详细介绍过如何配置。这里要说明的一点是:将网段宣告入RIP网络时,不需要加掩码。所以指令将变成如下这样(以R5为例):

  

  但是现在,OSPF网络和RIP网络还未互通,因为ASBR还未通告External LSA,我们可以用show ip route命令查看路由器现有的路由信息。

  我们可以发现,R1现在已经有了Area 0区域里两个网段的路由(192.168.1.0和192.168.2.0)和Area 1区域里192.168.3.0网段的路由信息。但却还没有RIP网络里192.168.4.0网段的路由,这意味着,OSPF网络和RIP网络仍未互通。(我们可以用ping命令,在R1里去ping R4的地址,发现ping不通)。

  所以,我们现在需要做一个称为“重发布”的步骤,即在ASBR里通告External LSA,具体操作如下:

  

  首先,进入R3的配置模式,进入OSPF的网络配置,然后重发布RIP网络的信息。退出后再进入RIP的网络配置,然后重发布OSPF网络的信息。这样一来,OSPF网络和RIP网络就知道了彼此之间的路由信息(External LSA已通告)。

  我们回到R1,再输入show ip route,查看R1的路由条目。

  

  我们看到,和之前相比,R1新增了192.168.4.0网段的路由条目,现在,你可以自己再ping一下R5,发现就能ping通啦~

Reference:

  维基百科OSPL介绍:https://zh.wikipedia.org/wiki/%E5%BC%80%E6%94%BE%E5%BC%8F%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84%E4%BC%98%E5%85%88

原文地址:https://www.cnblogs.com/liuyongdun/p/8678681.html

时间: 2024-08-04 11:22:05

网络互联技术(四)-LSA的第四和第五种类型详解的相关文章

因特网与网络互联技术

LVS三种模式及常见的四种调度算法详解

LVS三种工作模式: 1. Virtual server via NAT(VS-NAT) 优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,物理服务器可以分配Internet的保留私有地址,只有负载均衡器需要一个合法的IP地址. 缺点:扩展性有限.当服务器节点(普通PC服务器)数据增长到20个或更多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包都需要经过负载均衡器再生.假使TCP包的平均长度是536字节的话,平均包再生延迟时间大约为60us(在Pentium处理器上计算

java四种内部类详解

一般来说,有4中内部类:常规内部类.静态内部类.局部内部类.匿名内部类. 一.常规内部类:常规内部类没有用static修饰且定义在在外部类类体中.   1.常规内部类中的方法可以直接使用外部类的实例变量和实例方法.   2.在常规内部类中可以直接用内部类创建对象   3.代码如下: public class MyOuter {  private int x = 100; // 创建内部类  class MyInner {   private String y = "Hello!"; p

PHP页面间参数传递的四种方法详解

2016-04-16 定义page01.php和page02.php两个php文件,将page01中的内容想办法传递到page02,然后供我们继续使用.--------------------------------------------------------------------------------第一种:使用客户端浏览器的cookie.cookie很容易理解,就是一个临时文件,可以把它看成一个储藏室,浏览器在浏览的过程中记录一些信息,就暂时存放在这里.在page01中设置一个coo

AES加密的四种模式详解

对称加密和分组加密中的四种模式(ECB.CBC.CFB.OFB) 一. AES对称加密:                                                       AES加密                          分组 二. 分组密码的填充                                                    分组密码的填充 e.g.:                                          

Android中点击事件的四种写法详解

Android中点击事件的四种写法使用内部类实现点击事件使用匿名内部类实现点击事件让MainActivity实现View.OnClickListener接口通过布局文件中控件的属性 第一种方法:使用内部类基本步骤如下: 新建一个MyOnClickListener类并实现View.OnClickListener接口 重写View.OnClickListener接口中的OnClick(View view)方法 给Button绑定一个监听器,并监听一个点击事件示例代码如下: public class

单元测试实战(四种覆盖详解、测试实例)

理论部分 前言 单元测试,就是对某一段细粒度的Java代码的逻辑测试.代码块一般指一个Java 方法本身,所有外部依赖都需要mock掉,仅关注代码逻辑本身. 需要注意,单测的一个大前提就是需要清楚的知道自己要测试的程序块所预期的输入输出,然后根据这个预期和程序逻辑来书写case. (这里需要注意的就是单测的预期结果 一定要针对需求/设计逻辑去写,而不是针对实现去写,否则单测将毫无意义,照着错误的实现设计出的case也很可能是错的) 覆盖类型 1.行覆盖 Statement Coverage 行覆

redis数据类型四之hash的指令操作(五种数据类型中最重要的一种)

1.老规矩,看看redis官方文档怎么写:         这里说呢,hashes 这种数据类型容易代表对象,实际上你可以无限制地在 hash 中放给定数量的字段.(除了可用的内存)(其实这个我理解有些模糊,是内存能够满足就可以无限制的放入吗?)所以你可以在应用中多方面地使用它. 我理解的 hash 数据类型是: 就好像是Java中 Map<String, Map<Srtring,String>> 一样,KV模式不变,但是 V 值是一个键值对. 2.hash 数据类型的指令操作:

深入理解闭包系列第四篇——常见的一个循环和闭包的错误详解

前面的话 关于常见的一个循环和闭包的错误,很多资料对此都有文字解释,但还是难以理解.本文将以执行环境图示的方式来对此进行更直观的解释,以及对此类需求进行推衍,得到更合适的解决办法 犯错 function foo(){ var arr = []; for(var i = 0; i < 2; i++){ arr[i] = function(){ return i; } } return arr; } var bar = foo(); console.log(bar[0]());//2 以上代码的运行