前文我们了解了OSPF中的虚连接相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15202348.html;今天我们来聊一聊OSPF数据包中LSA类型相关话题;

  我们知道OSPF的核心就是通过LSA建立LSDB数据库,然后根据SPF算法从LSDB数据库中的内容计算出对应的路由;其中LSA并不是ospf的数据包类型,它存在于LSU当中;对于不同类型的LSA,其作用和内容也各不相同;

  LSA头部

  提示:LSA是ospf链路状态信息的载体,是LSDB的最小组成单位,即lsdb是由一条条LSA构成的;所有的LSA都拥有相同的头部;其中LS age表示LSA已经生存的时间,单位是秒,默认这个字段会每半个小时更新一次,即1800秒就会更新一次LSA;LS type字段主要用于标识LSA的格式和功能,对于不同类型的LSA其格式和功能各不相同,常用的LSA类型有五种;Link State ID用于描述该LSA所描述的链路的标识;advertising Router用于描述产生该LSA的路由器的router ID;LSsequence number用于检测旧的和重复的LSA;LS type,Link State ID和Advertising Router这三个字段共同标识了一条LSA,即LSA判断是否一样,就看这三个字段是否一样;

  Router—LSA描述P2P网络

  实验:如下拓扑,配置OSPF

  R1的配置

sys
sys R1
int s4/0/0
ip add 12.0.0.1 24
int lo 1
ip add 1.1.1.1 32
ospf 1 router-id 1.1.1.1
area 0
net 12.0.0.1 0.0.0.0
net 1.1.1.1 0.0.0.0

  R2的配置

sys
sys R2
int s4/0/0
ip add 12.0.0.2 24
int lo 2
ip add 2.2.2.2 32
ospf 1 router-id 2.2.2.2
area 0
net 12.0.0.2 0.0.0.0
net 2.2.2.2 0.0.0.0

  验证:在R1上抓包,看看对应LSU中的LSA的类型和内容

  提示:从上面的抓包信息可以看到,对应LSU中LSA的类型为Router-LSA;描述的是1.1.1.1这条链路的信息;其中该LSA是由1.1.1.1这台路由器发出的;该LSA里包含了两条链路,一条是12.0.0.0,掩码是24,开销为48;一条是1.1.1.1,掩码为32,开销为0;当然这些是我们用抓包软件上抓到的ospf LSU中的内容;我们也可以用命令在对应路由器上查看;

  在R1上查看自己发送的LSA内容

  提示:type是用于描述LSA的类型;其中Router表示一类LSA,该LSA是由路由器自己产生,主要用于描述自身所在区域链路状态信息;ls id表示链路状态的ID;adv rtr用于描述产生此LSA的路由器router id ;第一个link ID表示邻居路由器的router id;data表示宣告该路由LSA的路由器接口ip地址;link type用于描述对应链路的网络类型,metric用于描述对应链路的开销;后面的link id用于描述对应的路由信息,其中link id用于描述对应子网的ip地址,data表示掩码,metric用来描述开销;这里需要注意一点,链路类型并不是ospf定义的始终网络类型,router LSA描述的链路类型有,P2P(Point-to-point点到点类型);transnet是描述一个从本路由器到一个transit网段的连接;例如多路访问的网段信息;stubnet是描述一个从本路由器到一个stu网段(例如到回环接口)的连接;

  查看lsdb数据库

  提示:可以看到对应lsdb数据库就只有两条信息其类型为router,即一类LSA;一条是R1发送的一条是R2发送的,有了这两条信息,ospf就可以根据里面的内容,构建出对应的路由;

  查看ospf路由

  提示:ospf根据lsdb中的LSA计算出对应的路由信息;从上面的实验可以看到,对于点到点类型的链路,只需要用类型1的lsa就把对应网络描述清楚了;

  总结:一类LSA是每个路由器都会发送的LSA,其主要作用描述对应路由器接口所在区域的端口链路状态的集合;该LSA只在所描述的区域内泛洪,不能跨区域;对于点到点类型的链路,一类LSA就足以描述清楚对应接口链路状态;

  Router-LSA描述MA网络(多路访问网络)

  实验:如下拓扑,配置ospf

  提示:该拓扑和上面的拓扑没有太大的去边,唯一的区别是对应链路类型发生了变化,此拓扑链路类型就是BMA(广播多路访问);

  配置R1

sys
sys R1
int g0/0/0
ip add 12.0.0.1 24
int lo 1
ip add 1.1.1.1 32
ospf 1 router-id 1.1.1.1
area 0
net 12.0.0.1 0.0.0.0
net 1.1.1.1 0.0.0.0

  提示:这里的接口不是串口,而是以太网接口;

  配置R2

sys
sys R2
int g0/0/0
ip add 12.0.0.2 24
int lo 2
ip add 2.2.2.2 32
ospf 1 router-id 2.2.2.2
area 0
net 12.0.0.2 0.0.0.0
net 2.2.2.2 0.0.0.0

  在R1上抓包,查看对应发送的一类LSA

  提示:可以看到在R1上抓包,明显比上次抓到的包要多,其次在LSU中的一类LSA中,对应网络并没有子网掩码;对应网络的子网掩码却在另一个LSA中,该LSA类型为Network-LSA;除了有对应接口ip的子网掩码外,二类LSA还描述了对应链路上有几个路由器,它们的router ID;

  在R1上查看自己发送的一类LSA内容

  提示:在ma网络类型的Router-LSA中,Link ID是DR接口ip地址,Data为本地接口的ip地址;从上面的信息可以看到,

现在在R1发送的一类LSA中,并没有包含对应网络的掩码;其原因是在多路访问网络中一类LSA并不足以描述清楚对应链路状态;所以产生了2类LSA;

  在R1上查看二类LSA信息

  提示:type表示LSA的类型,network表示二类LSA;LS id用来描述对应DR接口ip地址;adv rtr用来描述产生此二类LSA的路由器的router id,即DR的router id;net mask用来描述该网段的网络掩码;attached router用来描述连接到该网段的路由器列表;基于上述字段信息,LS id和Net mask做与运算,即可算出该网络的ip网络号;上述信息中我们可以看到DR所在路由器的router id为1.1.1.1,DR所在接口的ip地址为1.1.1.1;对应网络的子网掩码为24,对应有两台路由器连接在这个多路访问网络中;

  验证:查看DR是否是R1的g0/0/0接口?

  提示:可以看到R1的g0/0/0接口就是DR,和上述的描述一样;

  查看lsdb

  提示:现在R1的LSDB中,要比点到点网络中的LSDB要多一条二类LSA;

  总结:在多路访问网络中,光凭一类LSA并不能完全描述清楚对应接口链路状态,需要借助二类LSA进行补充;对于二类LSA来说,它是由DR接口发出,主要目的是用来描述多路访问网络上所连接路由器的列表,以及对应网络的子网掩码;该类型LSA只会在对应网络所属的区域内泛洪,不能跨区域;综上所述,一类LSA和二类LSA都只能在对应接口所属区域内泛洪,不能跨区域;对于一类LSA来说,是区域内的每个路由器产生,主要用来描述对应接口链路状态集合;而二类LSA只会在多路访问网络中产生,其原因是二类LSA是DR接口发出,主要用来描述多路访问网络上所连接的路由器以及对应网络的掩码;而只有在多路访问网络中才会选举DR,所以二类LSA只会在多路访问网络中存在,对于点到点网络中不会存在二类LSA;也就是说在ospf里一类LSA是必须要产生的,对于是否有二类LSA产生,取决对应网络类型;

  对于单区域,有一类LSA和二类LSA就能够将对应网络描述清楚,对于多区域,ospf区域与区域间该如何传递路由信息呢?

  实验:如下拓扑配置ospf

  R1的配置

sys
sys R1
int g0/0/0
ip add 12.0.0.1 24
ospf 1 router-id 1.1.1.1
area 0
net 12.0.0.1 0.0.0.0

  R2的配置

sys
sys R2
int g0/0/0
ip add 12.0.0.2 24
int g0/0/1
ip add 23.0.0.2 24
ospf 1 router-id 2.2.2.2
area 0
net 12.0.0.2 0.0.0.0
area 1
net 23.0.0.2 0.0.0.0

  R3的配置

sys
sys R3
int g0/0/0
ip add 23.0.0.3 24
ospf 1 router-id 3.3.3.3
area 1
net 23.0.0.3 0.0.0.0

  在R2上查看lsdb

  提示:可以看到在R2上查看lsdb就有两个数据库,在area 0和area 1中都多了一条sum-net类型的LSA;这两条LSA都是由R2产生;

  在R2上查看sum-net类型LSA内容

  提示:类型为sum-net的LSA是三类LSA,其中LS id用来描述目标网络地址;ada rtr用来描述此LSA产生的路由器的router id;net mask用来描述对应目标网段的子网掩码;通过上述的信息,我们不难看到,该LSA就是在描述去往12.0.0.0/24的网络信息;该LSA是由R2产生,其开销为1;

  在R1或R3上查看abr或asbr

  提示:可以看到R2是abr(区域边界路由器);

  区域间路由传递

  提示:上述描述了三类LSA传递的过程;在area 1中RTD首先会发送一条一类LSA在区域1里泛洪(回环接口的网络类型是点到点类型,所以没有二类LSA)其主要目的是描述自己有192.168.1.0/24网络接口,在RTB收到对应一类LSA以后,它一看自己有多个区域,所以它会把区域1里的一类LSA汇总,然后以三类LSA的格式向区域0发送;此时区域0中的其他路由器收到该类型LSA就会学习到对应去往192.168.1.0/24网络的路由,出接口都指向对应路由器发送三类LSA的接口(RTB);当区域0中的RTC收到RTB发送的三类LSA以后,它一看自己又连接着多个区域,此时RTC就会把RTB发送的LSA中宣告者(adv rtr)字段修改成自己,然后再向区域2发送;此时区域2中的路由器收到此类LSA,就会把对应去往192.168.1.0/24网络的路由,出接口指向RTC发送三类LSA的接口;对应192.168.2.0/24网络也是类似的过程;首先在区域2里是一类LSA,然后经过RTC,RTC就会以三类LSA向区域0发送,此时宣告者还是RTC,在经过RTB时,对应三类LSA的宣告者会被修改为RTB,然后再由RTB向区域1发送;我们可以理解三类LSA就是对应的路由信息;一条三类的LSA只能描述一条路由信息;所以区域间有多少个网段,对应就会发送多少条三类LSA;

  总结:三类LSA是由ABR产生,其主要作用是描述和传递区域间的路由;该类型LSA会在所生成的区域内泛洪,再由其他区域的ABR重新生成;重新生成的目的是更换宣告者,以便其他路由器找到对应的宣告者;对于单纯的ospf进程来说(除开外部路由),有了一类、二类LSA可以描述单区域路由,三类LSA可以描述区域间的路由;有了这三种类型LSA,对应ospf的lsdb,路由计算都可以正常完成;

HCNP Routing&Switching之OSPF LSA类型的更多相关文章

  1. HCNP Routing&Switching之OSPF LSA类型(二)

    前文我们了解了OSPF的一类.二类.三类LSA,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15209829.html:今天我们来聊一聊OSPF的四类和五类L ...

  2. HCNP Routing&Switching之OSPF LSA更新规则和路由汇总

    前文我们了解了OSPF外部路由类型以及forwarding address字段的作用,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15225673.html: ...

  3. HCNP Routing&Switching之OSPF网络类型

    前文我们了解了PPPoE协议相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15182512.html:今天我们聊聊一聊OSPF中的网络类型相关话题: ...

  4. HCNP Routing&Switching之OSPF特殊区域

    前文我们了解了OSPF LSA更新规则以及路由汇总相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15231880.html:今天我们来聊一聊OSPF的 ...

  5. HCNP Routing&Switching之OSPF外部路由类型以及forwarding address

    前文我们了解了OSPF的4类.5类LSA,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15222969.html:今天我们来聊一聊外部路由类型和forward ...

  6. HCNP Routing&Switching之OSPF虚连接

    前文我们了解了OSPF的网络类型.帧中继交换机映射以及路由器帧中继映射相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15195762.html:今天我 ...

  7. HCNP Routing&Switching之IS-IS报文结构和类型

    前文我们了解了IS-IS动态路由协议基础相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15249328.html:今天我们来聊一聊IS-IS动态路由协 ...

  8. HCNP Routing&Switching之BGP报文结构、类型和状态

    前文我们了解了BGP的邻居建立条件.优化以及BGP认证相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15395723.html:今天我们来聊一聊BGP ...

  9. HCNP Routing&Switching之组播技术-组播协议IGMP

    前文我们了解了组播地址相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15616740.html:今天我们来聊一聊组播协议中IGMP协议相关话题: 组播 ...

随机推荐

  1. Jmeter入门 浏览器设置代理服务器和录制脚本

    第一步: 可以设置浏览器代理,本文章推荐使用火狐浏览器 在浏览器-首选项--网络设置里面设置代理服务器 注意:端口号可以自行设置,但是不可以与本机其他代理产生冲突 第二步: 打开jmeter工具,添加 ...

  2. 在java中为啥要重写toString 方法?

    在java中为啥要重写toString 方法?下面以一个简单的例子来说明. 先定义一个test5类.并写它的get,set方法. package test5; public class Test5 { ...

  3. 13Java进阶——IO、线程

    1 字节缓冲流 BufferInputStream 将创建一个内部的缓冲区数组,内部缓冲区数组将根据需要从包含的输入流中重新填充,一次可以读取多个字节 BufferOutputStream 该类实现缓 ...

  4. 【硬核】MMU是如何完成地址翻译的

    目录 1. 什么是虚拟内存? 2. 虚拟内存的作用 3. 虚拟内存与物理内存 3.1 CPU存取数据 3.2 物理地址常用术语 3.3 虚拟地址常用术语 3.4 页表常用术语 3.5 页命中/缺页 4 ...

  5. Resnet网络详细结构(针对Cifar10)

    Resnet网络详细结构(针对Cifar10) 结构 具体结构(Pytorch) conv1 (conv1): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, ...

  6. SpringCloud升级之路2020.0.x版-4.maven依赖回顾以及项目框架结构

    本系列代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford 我们先来回顾下 m ...

  7. [JS]异步任务之事件循环

    前言 常常会听到单线程和多线程这两个名词,单线程即一个时间段内程序从上到下执行任务,多线程即一个时间段内程序同时执行多个任务. 然而 JavaScript 是单线程的,它不像 Java 那样新开启一个 ...

  8. 八数码难题之 A* 算法

    人生第一个A*算法-好激动-- 八数码难题--又称八数码水题,首先要理解一些东西: 1.状态可以转化成整数,比如状态: 1 2 3 4 5 6 7 8 0 可以转化成:123456780这个整数 2. ...

  9. WinForm PerformClick()

    在Winfrom开发中,经常遇到调用Click事件,如:btn_click(null,null),其实winfrom也自带一个模拟点击事件:PerformClick(),区别就是:前者无论控件是否En ...

  10. noip模拟34[惨败]

    noip模拟34 solutions 我从来不为失败找借口,因为败了就是败了,没人听你诉说任何事情 今天很伤感,以来考试没考好,二来改题改半天也改不出来 这次算是炸出来了我经常范的一些错误,比如除以0 ...