ospf协议_OSPF协议介绍及配置(2)

1、前言

前面我们已经介绍过了,对于OSPF这类的链路状态路由协议而言,LSA链路状态通告是工作在底层、最为关键、最为核心的构件,正因为有了LSA,OSPF能够准确的描述网络拓扑并且最终计算出最优的路由。OSPF设计了多种LSA,以便描述网络拓扑及各种类型的路由。

2、实验环境

7a5360de28832708d6b5bbcdee5ccff3.png

上图是本次我们用于讲解OSPF LSA的网络拓扑,比较简单:

  • R1、R2、R3、R4四台路由器运行OSPF。
  • 设备接口互联IP如图所示,都是192.168.0.0/16开头的地址段。
  • 所有设备配置Loopback0接口,IP地址为x.x.x.x/32,x为设备编号。但仅在R1及R2上network loopback0接口。
  • 所有设备的OSPF RouterID均使用Loopback0接口的IP地址,也就是x.x.x.x在R1、R2、R3所处的LAN中,将R3的GE0/0/0口优先级调高,使之成为DR

我们开始来逐一认识每种LSA:

3、LSA详解

1) LSA类型1-路由器LSA(Router SLA)

每一台运行OSPF的路由器均会产生1类LSA,1类LSA怎么理解?其实很简单,就是每台路由器描述一下自己“家门口的状况”,并且只会告诉给“全村的人”(本区域内泛洪)。

1类LSA主要的功能有以下两点:

描述路由器的特殊角色,如Virtual-link、ABR、ASBR:

这是通过1类LSA中相关的V、B、E位的置1来体现的,例如如果本台设备是ABR,那么它产生的1类LSA中B位会置1。

描述本路由器在某个区域内部的直连链路(接口)及接口COST值。

2938014a5ac61bd7d97b3fd88e7f3f4d.png

例如上图中,所有OSPF路由器都会产生1类LSA,并且在本区域内泛洪。我们以R1举例,它会产生一个类型1的LSA,那么在这个LSA1中,包含两个链路的描述,一个用于描述Loopback接口以及接口的COST值,另一个是描述GE0/0/0接口以及COST值。这个1类LSA会在area1内泛洪。

我们首先来看一下R1的LSDB:

 [R1] display ospf lsdb  OSPF Process 1 with Router ID 1.1.1.1 Link State Database  Area: 0.0.0.1 Type LinkState ID AdvRouter Age Len Sequence Metric Router 2.2.2.2 2.2.2.2 527 48 80000005 1 Router 1.1.1.1 1.1.1.1 562 48 80000006 1 Router 3.3.3.3 3.3.3.3 775 36 80000007 1 Network 192.168.123.33.3.3.3 816 36 80000003 0 Sum-Net 192.168.34.0 3.3.3.3 771 28 80000001 48

上面就是R1的LSDB,实际上在area1内,OSPF路由器关于area1的LSDB都是统一的。在上面的LSDB中我们观察到了1、2、3类LSA。重点来看一下R1自己产生的1类LSA:

 [R1] display ospf lsdb router 1.1.1.1 #这条命令查看router lsa也就是1类LSA 1.1.1.1 OSPF Process 1 with Router ID 1.1.1.1 Area: 0.0.0.1 Link State Database  Type : Router #LSA类型为router lsa,也就是类型1 Ls id : 1.1.1.1 # LS ID为1.1.1.1,这是R1的RouterID Adv rtr : 1.1.1.1 # 该LSA通告者的RouterID,也就是R1的RouterID Ls age : 644  Len : 48  Options : E  seq# : 80000006  chksum : 0xbca7 Link count: 2 #这个LSA包含2个链路的描述 * Link ID: 192.168.123.3 #链路1,ID为192.168.123.3也就是DR的IP地址 Data : 192.168.123.1 #R1的GE0/0/0口的IP Link Type: TransNet #链路类型 Metric : 1 #接口Cost=1 * Link ID: 1.1.1.1 #链路2,对应Loopback接口 Data : 255.255.255.255  Link Type: StubNet  Metric : 0 #接口Cost=0 Priority: Medium

这就是1类LSA, R2在Area1中的1类LSA大体上类似,那么R3泛洪的1类LSA是如何?

[R3 ]display ospf lsdb router 3.3.3.3 OSPF Process 1 with Router ID 3.3.3.3 Area: 0.0.0.0 #R3在area0内泛洪的1类LSA Link State Database  Type : Router Ls id : 3.3.3.3 Adv rtr : 3.3.3.3  Ls age : 946  Len : 48  Options : ABR E  seq# : 80000002  chksum : 0x2878 Link count: 2 #R3在area0内泛洪的1类LSA包含两个Link,实际上一个用于描述这个接口所在的网段,另一个用于描述这个点到点接口对端的路由器也就是R4 * Link ID: 4.4.4.4 #R4的RouterID Data : 192.168.34.3 #R3的serial4/0/0的IP地址 Link Type: P-2-P  Metric : 48 * Link ID: 192.168.34.0 #描述R4的Serial4/0/0口所在的网段及掩码 Data : 255.255.255.0  Link Type: StubNet  Metric : 48  Priority : Low  Area: 0.0.0.1 #R3在area1内泛洪的1类LSA Link State Database  Type : Router Ls id : 3.3.3.3 Adv rtr : 3.3.3.3  Ls age : 970  Len : 36  Options : ABR E  seq# : 80000007  chksum : 0x7fe4 Link count: 1 * Link ID: 192.168.123.3  Data : 192.168.123.3  Link Type: TransNet  Metric : 1

我们来总结一下,针对不同的链路类型,OSPF 1类LSA在描述不同链路类型的时候,LSID及Data字段的内容有不同:

9c2d4cbd7606b2071f67b703e6dbc445.png

2) LSA类型2-网络LSA(Network LSA)

在多路访问型MA网络中(例如以太网,或者帧中继网络),会选举DR、BDR,而所有的Drother都只能和DR及BDR建立邻接关系,Drother也就是非DR、BDR路由器之间不会建立全毗邻的OSPF邻接关系。

从某种层面上说,DR实际上代表了这个MA网络,在本区域内泛洪2类LSA,来呈现该MA网络中的所有路由器。因此2类LSA仅存在于有MA网络的area中,并且由DR发送,用来描述这个MA网络中的所有路由器(的Router-ID)。

c8c4d928d3c0d0387cb1d3ac7e30a233.png

在上例中,R3的GE0/0/0口是123.0网络的DR,因此R1、R2都只和R3建立全毗邻的邻接关系。这时候R3就成了这个MA网络的代表者,其发送2类LSA,该LSA包含的内容如图,详细信息见下,注意该2类LSA也只是在area1内泛洪。

 [R3] display ospf lsdb network  OSPF Process 1 with Router ID 3.3.3.3 Area: 0.0.0.1 Link State Database  Type : Network #LSA类型为network lsa,也就是类型2 Ls id : 192.168.123.3 #LS ID链路状态ID为DR的接口IP地址 Adv rtr : 3.3.3.3 #通告者RouterID,自然就是R3的RouerID Ls age : 1256  Len : 36  Options : E  seq# : 80000003  chksum : 0x2a1e Net mask : 255.255.255.0 #掩码信息 Priority : Low Attached Router 3.3.3.3 #连接到这个MA网络的路由器:R3 Attached Router 1.1.1.1 #连接到这个MA网络的路由器:R1 Attached Router 2.2.2.2 #连接到这个MA网络的路由器:R2

总结一下:

  1. 2类LSA,也就是网络LSA,由DR产生,描述其在该MA网络上连接的所有路由器的RouterID(包括DR自己)以及该MA网络的掩码。
  2. 2类LSA只在本区域Area内洪泛,不允许跨越ABR。而且只有在MA网络才会出现。
  3. 2类LSA中没有COST字段(因此需借助1类LSA来进行SPF算法)
  4. 得益于1、2类LSA,OSPF在一个区域内的路由计算就没有问题了。

3) LSA类型3-网络汇总LSA(Network Summary LSA)

前两类LSA解决了区域内路由计算的问题,那么区域间呢?如果路由器需要访问其他区域呢?

这时就需要3类LSA。3类LSA是网络汇总LSA,这里的“汇总”二字,其实翻译为“归纳”更贴切,它和路由汇总是完全不同的概念。由于ABR同时属于两个以上的区域(其中必须有骨干区域),它知道这些区域的1、2类LSA,那么就能做件事:将某个区域的1、2类LSA,做个归纳,然后为其他区域生成3类LSA并泛洪到其他区域中,如此一来,区域间的路由计算就没问题了。.

因此3类LSA,由ABR产生:

02dd72dc1107585c8fd5d061ca7082b4.png

上图中,R3将area0内的LSA1做了归纳,然后为area1注入LSA3,这个LSA3实际上是描述的192.168.34.0/24这个网段,以及cost值,当然,这个cost值实则为R3的Serial4/0/0口的接口cost。

287bd55adb96bc0f0e8627988cdb656c.png

上图是R3将area1内的网络信息通过LSA3注入到了area0中,其中包含三个网段信息,分别是192.168.123.0/24、1.1.1.1/32、2.2.2.2/32。那么这样一来R4就能进行计算,得出三条路由。

来看一下R3的LSDB

[R3] display ospf lsdb  OSPF Process 1 with Router ID 3.3.3.3 Link State Database Area: 0.0.0.0 Type LinkState ID AdvRouter Age Len Sequence Metric Router 4.4.4.4 4.4.4.4 1574 48 80000002 48 Router 3.3.3.3 3.3.3.3 1573 48 80000002 48 Sum-Net 192.168.123.03.3.3.3 1593 28 80000001 1 Sum-Net 2.2.2.2 3.3.3.3 1350 28 80000001 1 Sum-Net 1.1.1.1 3.3.3.3 1386 28 80000001 1  Area: 0.0.0.1 Type LinkState ID AdvRouter Age Len Sequence Metric Router 2.2.2.2 2.2.2.2 1351 48 80000005 1 Router 1.1.1.1 1.1.1.1 1387 48 80000006 1 Router 3.3.3.3 3.3.3.3 1597 36 80000007 1 Network 192.168.123.3 3.3.3.3 1638 36 80000003 0 Sum-Ne192.168.34.0 3.3.3.3 1593 28 80000001 48

在更详细点的来查看一下R3产生的3类LSA

 [R3] display ospf lsdb summary  OSPF Process 1 with Router ID 3.3.3.3 Area: 0.0.0.0  # R3为area0注入的LSA3 Link State Database Type : Sum-Net Ls id : 192.168.123.0 Adv rtr : 3.3.3.3  Ls age : 1637  Len : 28  Options : E  seq# : 80000001  chksum : 0x1b50 Net mask : 255.255.255.0 Tos 0 metric: 1 Priority : Low Type : Sum-Net Ls id : 2.2.2.2 #描述2.2.2.2/32这个子网的LSA3 Adv rtr : 3.3.3.3  Ls age : 1394  Len : 28  Options : E  seq# : 80000001  chksum : 0xbe89 Net mask : 255.255.255.255 Tos 0 metric: 1#cost=1 Priority : Low Type : Sum-Net Ls id : 1.1.1.1 #描述1.1.1.1/32这个子网的LSA3 Adv rtr : 3.3.3.3  Ls age : 1430  Len : 28  Options : E  seq# : 80000001  chksum : 0xec5f Net mask : 255.255.255.255 Tos 0 metric: 1#cost=1 Priority : LowArea: 0.0.0.1 #R3为area1注入的LSA3 Link State Database Type : Sum-Net Ls id : 192.168.34.0 #描述192.168.34.0/24这个子网 Adv rtr : 3.3.3.3  Ls age : 1637  Len : 28  Options : E  seq# : 80000001  chksum : 0xc9cb Net mask : 255.255.255.0 Tos 0 metric: 48#cost为48 Priority : Low

以上就是R1在area0及area1中产生的3类LSA。事实上3类LSA由ABR就是将某个区域的子网信息通告给其他区域。往更深的角度思考,其实OSPF在area之间的3了LSA传递很像距离矢量路由协议的行为。

4) LSA类型4-ASBR汇总LSA(ASBR Summary LSA)

4b23659e9d8ec786cc5e7734dd997479.png

为了讲解LSA4及LSA5,我们需要将配置做点小变更。在R4上,我们开设一个新的Loopback接口,配置一个IP地址,子网位44.44.44.0/24,现在我们使用import-route的方式,将44.44.44.0/24的直连路由重发布进OSPF。然后继续我们的讲解:

4类LSA是一个指向ASBR的LSA,由该ASBR所在的area中的ABR产生(这点要格外留意)。

ASBR作为域边界路由器,将外部的路由通过重发布的方式注入了OSPF域,这些外部路由在OSPF中进行传递(这些外部路由是以5类LSA的形式在域内传播),而我们OSPF内部的路由器如果想前往这些外部网段,则需要同时具备两个条件:

  • 知道外部的路由(这通过重发布的动作,已经完成了注入,借助5类LSA完成传播)
  • 知道完成这个重分发动作的ASBR的位置

也就是说,我们在围城里,想要去围城外的某个地方,需具备两个条件,1是你要知道外头有什么,2是你要知道城门在哪里,所以5类LSA告诉你外头有啥,4类LSA告诉你城门是谁。

关键在于第二点。与ASBR在同一区域的区域内部路由器(例如本实验中的R3),能通过ASBR(R4)产生的1类LSA知道该ASBR的位置(1类LSA中E位=1,所以与ASBR同区域的路由器都知道),但是问题来了,1类LSA的泛洪范围是本区域内,那么该区域外的路由器(如area1中的R1、R2),如何得知这台ASBR的位置呢?那么就需要借助4类LSA了。

778c96c258f669886d67635af3ccac7a.png

因此4类LSA由ABR产生,用来告诉与ASBR不在同一个区域内的其他OSPF Router关于 ASBR的信息。

3e43631ec85e852a7f4dbfd4cc623d55.png

上图中R4作为ASBR,做了路由import,将直连路由4.4.4.4/32引入了OSPF。这些路由通过5类LSA的形式在OSPF Domain里扩散。但是4.4.4.4/32的路由要真正加载进OSPF路由表,还需要一个重要因素,那就是他们得知道注入这条外部路由的ASBR在哪儿。我们已经说了,与ASBR R4同处一个area的R3已经通过LSA1知道了ASBR,但是area1内的路由器却并不知道,因为R4产生的1类LSA只能够在area0内泛洪。

在这个时候,R3作为ABR,就扮演一个重要作用,它自己得知ASBR的位置后,会向area1注入4类LSA,用于描述ASBR。这样一来area1内的R1及R2就既通过LSA5学习到了路由4.4.4.4/32,又通过LSA4了解到了ASBR的位置,因此这条外部路由才能够被加载进他们的路由表中。

我们在R1上查看一下这个4类LSA:

[R1]display ospf lsdb asbr  OSPF Process 1 with Router ID 1.1.1.1 Area: 0.0.0.1 Link State Database  Type : Sum-Asbr Ls id : 4.4.4.4#ASBR的RouterID Adv rtr : 3.3.3.3 #通告这条4类LSA的ABR的RouterID Ls age : 1037  Len : 28  Options : E  seq# : 80000001  chksum : 0x2ce3 Tos 0 metric: 48 #ABR也就是R3自己到达ASBR的开销

5)LSA类型5-AS外部LSA(AS External LSA)

ce84c3193122d6d85112d980e01ce407.png

R4此刻已经是一台ASBR了,因为它将外部路由44.44.44.0/24通过import-route的方式注入到了OSPF中,这条外部路由实际上是通过LSA5在整个OSPF domain内泛洪。

[R1]display ospf lsdb ase OSPF Process 1 with Router ID 1.1.1.1 Link State Database Type : External Ls id : 44.44.44.0 #注入进来的这条外部路由的网络号 Adv rtr : 4.4.4.4 #ASBR的RouteriD Ls age : 781  Len : 36  Options : E  seq# : 80000001  chksum : 0xcde2 Net mask : 255.255.255.0#外部路由的掩码 TOS 0 Metric: 1 #这条外部路由的外部metric E type : 2 #外部路由的metric类型,为metric-type 2 Forwarding Address : 0.0.0.0  Tag : 1  Priority : Medium

6)LSA类型7:NSSA外部LSA(NSSA External LSA)

7类LSA是一种非常特殊的LSA,要注意的是这种LSA作为一种描述外部路由的LSA它只能被在NSSA中进行泛洪,不能跨越NSSA进入骨干区域0。特殊区域NSSA会阻挡从骨干区域area0中过来的5类LSA进入,同时允许NSSA本地始发外部路由,这些外部路由以7类LSA的形式在本地NSSA中进行泛洪,当这些7类LSA到达NSSA的ABR时,由该ABR负责将这些7类LSA转换成5类LSA,方可注入骨干区域。

79e6b16e2b3e4abc42f359d68ef0e87e.png

留意一下上图,我们将配置做一点变更:将area1配置为NSSA。然后在R1上再创建一个Loopback1,配置一个11.11.11.0/24的子网IP,然后将这个直连路由import到OSPF中:

be369fb89e535ab42ea93c67a62a918b.png

这样一来,这条外部路由由于是在特殊区域NSSA中被注入的,那么它是以LSA类型7注入进来,并在NSSA area1内泛洪的。

在R2上做一下查看:

 [R2]display ospf lsdb  OSPF Process 1 with Router ID 2.2.2.2 Link State Database Area: 0.0.0.1 Type LinkState ID AdvRouter Age Len Sequence Metric Router 2.2.2.2 2.2.2.2 100 48 80000006 1 Router 1.1.1.1 1.1.1.1 100 48 80000007 1 Router 3.3.3.3 3.3.3.3 100 36 80000006 1 Network 192.168.123.3 3.3.3.3 100 36 80000003 0 Sum-Net 192.168.34.0 3.3.3.3 148 28 80000001 48 NSSA 11.11.11.0 1.1.1.1 163 36 80000001 1

我们看到area 1中,已经出现了一条NSSA类型的LSA,这就是7类LSA。

再来看一下详细内容:

 [R2] display ospf lsdb nssa 11.11.11.0 OSPF Process 1 with Router ID 2.2.2.2 Area: 0.0.0.1 Link State Database Type : NSSA Ls id : 11.11.11.0 Adv rtr : 1.1.1.1  Ls age : 253  Len : 36  Options : NP  seq# : 80000001  chksum : 0xf90 Net mask : 255.255.255.0  TOS 0 Metric: 1  E type : 2 Forwarding Address : 1.1.1.1  Tag : 1  Priority : Low

我们看到,其实7类LSA在报文格式上,与5类LSA没有明显的差别。两者都用于描述外部路由。但是7类LSA只能够存在于NSSA中,不能被泛洪到常规区域中。因此在本实验中,R3也能够从area1中收到R1产生的7类LSA,并且在路由表中加载如下路由:

[R3] display ip routing-table  Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Routing Tables: Public Destinations : 16 Routes : 16  Destination/Mask Proto Pre Cost Flags NextHop Interface 11.11.11.0/24 O_NSSA 150 1 D 192.168.123.1 GigabitEthernet0/0/0 ……

但是7类LSA是不能进入area0的,那么area0内的用户如何能够学习到这条外部路由呢?R3作为一台ABR,就发挥了很重要的作用,它会做一个“7转5”的动作,也就是讲7类LSA转换成5类LSA,然后在泛洪到area0中,从而泛洪到其他常规区域中:

18eade0a9c1227bef9990db79c3d2075.png

我们可以在R4上再做查看:

 [R4] display ospf lsdb OSPF Process 1 with Router ID 4.4.4.4 Link State Database Area: 0.0.0.0 Type LinkState ID AdvRouter Age Len Sequence Metric Router 4.4.4.4 4.4.4.4 765 48 8000000C 48 Router 3.3.3.3 3.3.3.3 686 48 8000000B 48 Sum-Net 192.168.123.0 3.3.3.3 685 28 8000000A 1 Sum-Net 2.2.2.2 3.3.3.3 640 28 80000001 1 Sum-Net 1.1.1.1 3.3.3.3 642 28 80000001 1  AS External Database Type LinkState ID AdvRouter Age Len Sequence Metric External 44.44.44.0 4.4.4.4 638 36 80000001 1 External 11.11.11.0 3.3.3.3 642 36 80000001 1

我们看到,11.11.11.0这条外部SLA,到了area0里的R4上,就变成了5类LSA了,并且advrouter,也就是通告者是R3。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值