数据通信——OSPF高级特性

引言    

    之前讲过的是OSPF简单特性,理解起来很简单,但是OSPF协议深层很全面,可以说,如果懂了OSPF协议,相当于链路状态协议也能一通百通了。下面是一些重点注意事项和知识点。

    1.在大型网络中,OSPF的SPF计算中的Cost值要保证其计算一致性,防止百兆与千兆带宽的计算结果对比。

    2.挂靠在区域0和区域X之间的路由器是ABR,其中里面有两个表(含有区域0和区域X的路由信息),因此可以进行路由互导(将区域0的路由器给予区域X,ABR可产生3类LSA)区域间路由也可以汇总,减少区域间路由传递数量。

    其中ABR分为真ABR和假ABR

    真ABR:邻居关系FULL;假ABR:邻居关系没有到达FULL且只是把接口宣告进了Area 0

注:LSA仅能在FULL下传播,TWO-WAY是交互hello,FULL下可交互所有报文

    3.在MA网络中,DR仅有一个,BDR可以没有,其余R为DR other。选举比较OSPF接口优先级,接口优先级默认为1。接口优先级高则为DR否则比较RID,大的优先。DR other会维持在TWO-way,DR与BDR建立FULL。传递LSA给DR和BDR

注:DR的选举是基于MA网络,它是接口的概念,而不是基于区域。

    4.DD报文会在发送时携带一个序列号SN,当接受的路由器收到后会回复一个相同的序列号表示已经收到了。

    5.LSU中包含完整LSA而DD报文和LSR都是携带LSA的报头。LSACK也可做确认表示收到了LSA

    6.OSPF中,hello报文包含的东西很多,hello之间还要进行协调。hello报文中包含:version number :版本号(hello版本号需要一致);Router ID:路由器ID(不能冲突);Hello与dead时间(要一致,4倍时间关系);认证,(认证要相同)

一,OSPF特点总结

OSPF工作原理属于IGP,是链路状态协议,端口号89,华为的OSPF的默认管理距离为10(域间管理)外部管理距离为150。思科则为110。采用SPF算法,可以快速响应网络变化并进行信息的同步。支持负载分担,触发式更新

二,OSPF的状态

    运行OSPF时,除了骨干区域外,还有常规区域,STUB区域,NSSA区域,他们都为非骨干区域。 

    Hello报文中有一个字段option。其中有两个参数N和E。

    N位:只在Hello数招包中使用(即在hello包里代表N位)代表nssa区城。N=1表明路由器支持7类LSA。N=0表明该路由将不接收和发送NSSA LSA

     E位:当始发路由器具有接收OSPF区域外部LSA AS external LSA)能力时,该置位位。

    当处于常规区域的时候,N会变为0,E为1;当为Stub区域时,E为0,N为0;若为NSSA区域时,E为0,N为1.不同的类型区域发送的hello报文时option不一样。因此交互的时候,区域要一致,不能混用。(后面会提到NSSA和STUB)

    建立完TWO-Way以后,完成了DR和Bdr的选举,开始通过DD报文进行主从的选择,通过Master控制Slave。其中需要考虑MTU一致性检测,一旦开启MTU,会停在Exstart状态。

    为什么要选举主从?因为OSPF基于IP协议工作的,它无可靠的传输能力,需要DD报文选举主从达到一种有序性,可靠性的发送。

OSPF一共有8种状态

Down:路由刚被宣进到接口,还无任何报文的发送与接收。

attempt:它工作在NBMA网络中,NBMA网络不支持组播报文发送,仅支持单播,这就需要进行目的接口在NBMA网络中运行OSPF的环境下更改peer,指定hello的发送。

init:单方面通,我通过邻居的路由器获取到了Hello报文,但是在我的neightbor字段中没有我的路由器ID,意味着我发送的报文不知道它能否接受到,但我能收到它的报文。

2-way收到的Hello报文中包含有自己的Router ID,则状态为2-way;如果不需要形成邻接关系则邻居状态机就停留在此状态,否则进入Exstart状态

Exstart:DD报文确定master,master包含路由器ID,谁的RID大,谁就是master,DD报文有三个字段状态:flags(每个报文都有),flag变为1(当我是master时)flag变成0x7(发出报文告诉所有路由器我是master),当发现老大,其余成为slave,并映射master序列号。

Exchange:master主动向对方发送带有LSA的DD报文,随后进行确认,完成所有DD报文交互。

loading:LSR,LSU,LSack交互。

full:完成LSDB数据库同步

    为了防止LSA泛红发送导致广播风暴,因此通过比较LSA的新旧来选择LSA,如果没有,LSA则请求并接受,若有新的LSA到来则比较序列号,大的序列号优先。新的会接受后并进行同步。如果我的LSA更好则会进行反向同步(把我的LSA给你)LSA一样则丢弃,避免环路。序列号最小为0X80000001最大为0x7FFFFFFF

三,OSPF的LSA

ospf有11种LSA,其中8—11种不常用,剩下需要知道

一类LSA:Router LSA(路由器LSA)

二类LSA:Network LSA(网络LSA)

三类LSA:Summary LSA(汇总LSA)

四类LSA:Summary LSA(汇总LSA)

五类LSA:Autonomous System external LSA(自治系统外部LSA)

六类LSA:multicast OSPF LSA(组播LSA)

七类LSA:defined for not-so-stubby Areas Lsa(非末节区域LSA)

3.1 关于OSPF链路分类

我宣告的接口以链路来实现。一类是骨干链路,一类是stub链路

其中骨干链路分为:

TransNet——选择了DR和BDR

P-to-P——点到点链路

Virtual——虚链路

    P-to-P——点到点链路:它需要两个链路来描述,如果R1-R2连接中仅使用serial线也就是PtoP链路仅在骨干链路中描述的话无法了解整个网络路由情况。因此需要Stub-Link一起计算。

(PtoP是拓扑的连接信息,而Stub-Link用来做路由计算)

    但是TransNet不行,他仅有本机自身连接网络的接口的地址和DR的接口地址。针对整个网络而言,1类网络太垃圾,不能描述整个MA网络的信息,需要其他的LSA配合。

3.2 Link state ID和Adv Router

Link state ID(它是LSA的名字),Adv Router(始发者路由器ID)

1类LSA的Link state ID和Adv Router均为始发者路由器ID

2类LSA的Link state ID为DR接口的IP地址,Adv Router为DR的路由器ID

3类LSA的Link state ID为路由前缀,Adv Router是ABR的RID

4类LSA的Link state ID为ASBR的路由器ID,Adv Router为ABR的RID(它的内容仅有该ASBR的路径度量值)

5类LSA的内部包含了三个重要字段:Tag标记,Forwarding Address(FA地址)和Metric Type

    Tag——一个数字,作用是为了可以抓取外部路由

    Metric——度量值类型(以0和E来标识:当为0和E2时为二类度量值类型,表示内部度量值不会再累加;当为0和E1为一类度量值类型,表示内部度量值还会累加;后者优先级高于前者,0E2先对比外部度量值,一样的话则比较内部,小的优先。0E1比较度量值之和,0E1整体优于0E2,但是通常默认为0E2。)

    FA地址——远程下一跳(5类LSA携带FA地址,但是有三个条件:1.ASBR要把连接下一跳的外网接口宣告进OSPF;2.接口的OSPF网络类型不能为PtoP;3.接口不能为被动接口)

    如果我想要下一跳地址作为外网,需要FA地址,我将外网地址添加进入FA地址中,并发给其余的路由器。告诉他们想要去外网,发给这个远程下一跳。当然也要看FA是否可达,可达就可用,否则不会添加进路由表。

3.3 一类LSA

    路由器运行OSPF一定产生LSA,而router LSA表示在一个区域中,无论我宣布多少个接口,都只会产生一种LSA;传递范围是该区域的所有路由器;它包含路由器的描述和宣告进区域的所有路由信息区域的接口。

3.4 二类LSA

    DR会产生2类LSA,它们用来配合1类LSA一并告诉其他路由MA网络的情况。2类LSA会根据DR的本机接口的地址产生。它其中包含该MA网络中所有路由器的路由器ID和MA网络中接口的掩码。它在与DR所在一个区域的路由器都可以接收到,根据2类LSA会形成MA网络拓扑信息。但仍无法通过ABR前往其他区域。

3.5 三类LSA

    我通过了1类和2类LSA的描述后计算出了整个区域的网络信息。但是区域外的信息仍然不可获知,这个时候ABR是连接多区域的设备。这时3类LSA就是做这个用的。我收集到一个区域的1,2类LSA会形成Area1的路由并汇总成3类LSA并传递给Area0。3类LSA由ABR产生

它包含一条完整的区域间路由

    首先Area0会先找到ABR并判断是否可达(通过查询3类LSA到达时看ADV Router的路由器ID)。当Area2接收到Area1的3类LSA时,要经过ABR2,但Area1的ABR1并不是Area2的查找范围。因此,ABR2会修改ADV Router的路由器ID为自身这样告诉Area2想要访问Area1必须经过ABR2,而ABR2又是Area2可查到的。(每换一台R,它的ADV Router都会改为自身ABR的路由器ID)当跨区域传递时,4类LSA要更换为自身的路由器ID告诉该区域路由器去往ABR1的话要经过ABR2)

3.6 四,五类LSA

    5类LSA包含外部路由,它由ASBR产生。ASBR既连接OSPF也连接其他协议,它将其他协议的R强行引入OSPF。因此通过5类LSA通告,但里面不携带拓扑信息。5类LSA包含外部路由。它告诉其它路由器,想要访问外部网络,拿我做远程下一跳。5类LSA不会更改路由器ID,但是如何让其他区域知道5类LSA的信息呢?

    这时需要4类LSA。它会一并跟ASBR所在的同一区域的ABR产生。它包含ASBR的身份信息和位置信息。4类LSA发给其它不知道ASBR的区域。让他们知道ASBR的存在和位置信息。

6类和7类LSA下面会提到(其实LSA有11类,后面知识内容会提到)

四,OSPF矢量图

OSPF的矢量图分为:

节点、连接、树叶

    节点路由器节点(Router Node)、设备节点(Stub Node)

路由器节点只有在一个区域内的路由器会发现;设备节点在连接设备时会发现

    连接骨干连接、Stub连接

    树叶3类LSA区域间路由,5类LSA外部路由(5类LSA挂靠时要先知道ASBR在哪个ABR上面,之后再挂靠在ASBR上)

但以上如何形成路由条目呢?

    先画出路由器节点(Transit节点),生成一个最短路径树。之后画Stub节点,将其挂靠在最短路径树上(我只关心我去哪,不关心谁到自己这里)

LSA重要字段

PtoP 邻居路由器ID 该网段上本地接口IP地址
TransNet DR接口IP 该网段上本地接口IP地址
StubNet 该Stub网段上的IP网络地址 该Stub网段上的网络掩码
virtual 虚连接邻居的路由器ID 去往虚链邻居的本地接口IP地址

五,ISPF与PRC

早期在运行OSPF时采用SPF算法,但在后续的计算中逐步采用了ISPF和PRC算法

    iSPF:增量型SPF(当我的OSPF所处环境发生变化时,这时OSPF的树型结构受到影响,会重新计算树型结构图,消耗CPU极大)

    PRC:部分路由计算(当我更改了路由条目后,但环境无变动,这时会进行PRC计算,消耗极小)

    一个区域内的链路状态协议不太会出现环路,但是多个区域之间的通信会出现。单区域无法汇总,也不要只做一个区域(避免SPF的大量计算)

    它们的优点为每30分钟一次的LSA泛洪扩散不会让SPF算法重计算。而且仅会对变化的拓扑计算而不是整体。当路由发生变化时PRC会查看并更新(如果路径和树无变化时)它对3类LSA与5类LSA会重计算

    避免大量使用ISPF算法,区域内的树形结构更改,ISPF要计算;但区域外要更改,区域内树型无更改则用PRC。LSA的一类与二类执行ISPF三类、四类执行PRC。

    3类LSA所产生的优先级一定低于1类2类LSA所产生的路由。因为3类LSA无法保障端到端时无环的,仅能保障区域内是无环的。

    在Area0中有Full邻居的ABR在关于3类LSA防环的时候。ABR会先通过非骨干区收到3类LSA,这些LSA不能设置成Routing bit 也不能传递给任何其他的OSPF邻居。

六,LSA在虚链路中

    当我建立了虚链路时,LSA的传递怎么办呢?

    内网OSPF合并——多个不连续的Area0——远离Area0非骨干区域——双OSPF进程重分发——Tunnel Source——Tunnel接口自身也要有个IP地址(不过TUNNEL麻烦,直接用虚连接)。它仅用于常规区域如:stub,totally stub NSSA和Totally NSSA均不适用。只有在树型结构中看不到对端路由器时,虚连接才会down。一般设置在Area0的边界路由器上。

    比如以下区域:A0-A1-A2-A3-A4,如何通过虚连接让A4路由去往其它区域?

    在两个ABR之间做虚连接可以跨区域访问,且不需要必须挂靠在A0,但它会出现环路,尤其是在区域间汇总的时候。我们支持汇总,但是虚连接后要么不要进行汇总,要么做等量的汇总。

数据通信——OSPF高级特性_第1张图片

 虚连接出现环路(如下解释)

解释:当R5访问Area0的R3,就会出现以下路径

R5—R4—R2—R1—R3

但R3访问R5时

R3—R1—R2—R3。。。

出现路环路,因此如何避免区域间环路的形成呢?

很简单!将区域间路由优先级设计成低于区域间或者抑制3类LSA的传递,最好使用星形拓扑设计。

七,OSPF拓扑图

OSPF采用了树形结构算法(我只关心自己去往其它路由的路径)

树形拓扑图中含有以下内容:树根、树干、树枝、树叶

树根:路由器节点

树干:OSPF邻居与其它路由器建立的链路为树干(骨干链路)

树枝:路由器连接stub节点为树枝(这个是在我没有建立OSPF邻居,但是宣告了OSPF)

树叶:他所在区域内的其他路由可以获取,但想获取其他区域的路由器和外部路由器需要建立在路由器节点上(先把ASBR挂靠在ABR上,再把其他区域通过ASBR连入)

OSPF拓扑图有三种链路:

Stub链路、点到点、骨干链路

    骨干链路:骨干链路有能力转发既不是本网段产生的,也不以本网段为目的地的路由。有至少两台路由器的广播型网段或NBMA网段就是一种骨干链路网段。

    PtoP链路:其两端的地址不一致仍可通信,因为有peer neighbor—route 它将双方生成的32位主机路由通告给双方,因此会有一个配好的路由和32位主机路由。

    树形结构生长规则:从树根生长起,本地路由器节点(一个树仅有一个根);只往外长,不往回长;随后长树干,然后是树枝,最后是树叶。执行树形结构计算时按照先看1类2类LSA后看3类4类5类LSA进行;树干有多个时,优先生长最短的树干,如果没有可以找到的则在候选列表中找(找里面最长的)如果一样就全部选中。

以上也分为两个阶段:

一阶段:计算Transit节点,忽略stub节点生成一个最短路径树。

二阶段:只计算stub节点,将stub网段挂到最短路径树上区,先从自身始发的1类LSA根据开销查找。

八,OSPF网络类型

    当一个接口宣入到OSPF,就会产生一种网络类型。决定我们是否选择DR/BDR的是由OSPF决定的,而且由OSPF中的网络类型决定。比如:以太网链路,采用OSPF由广播类型(默认的)你要选择DR/BDR;用serial链路采用OSPF,由点到点类型决定不选择DR/BDR。

    OSPF网络类型有6种:loopback,broadcost,NBMA,ptop,PtoMP和PtoM NBMA(华为仅有四种,少了loopback和PtoM NBMA)。

其中以上前四种都有接口自动配制好类型,后两种无任何接口默认对应,宣告后不会看到。

(1)loopback:它仅能对应环回口,它应用很窄,常在做连通性测试和辅助更高级的协议中使用。几乎没有通过环回口连接路由邻居,不涉及邻居建立和传输问题,其他类型接口无法使用它。不过OSPF会认为环回口为一个末节节点,你无论配多少个掩码,通告路由时都以32位主机形式通告。

(2)Broadcast:它建邻居允许发送组播报文(224.0.0.5)也就是可自动建邻居。邻接关系数量无限制(Hello时间,dead时间为1:4)传送路由时,在该网络中,无论R如何传递,cost仅累加一次,无论R如何传递,下一跳都将保持信源接口地址。

   :在大部分广域网或VPN环境中,常采用DMVPN或DSVPN,它是Hub&Spoke星型结构,它会选出一个DR而无BDR,这时上述传路由特点不复存在(spoke—hub—spoke这样的结构,它的cost值不会累加,下一跳为中转者路由器地址)。

(3)NBMA:应用少,但是它的用法和BroadCast几乎完全一致,仅两点区别:

1.不支持组播发送,必须指定相应的IP地址,然后发送单播Hello(但华为要双方都建立Peer邻居,随后才能互相建立联系)。

2.建立时间慢,是BroadCast的3倍时长。

注:NBMA和Broadcast可以兼容,网络类型兼容参考于是否要DR/BDR来判断是否可以建立邻居(要注意Hello时间一致)。

(4)点到点:(用的多)允许组播hello发送,建立邻接关系仅能有一个且无DR/BDR。

(5)点到多点:支持组播,且无邻接关系数量限制,无DR/BDR。传递路由时会有自身接口IP地址对应的/32位主机路由形式通告;点到多点的cost值会累加,下一跳位hub接口地址。

(6)点到多点NBMA:它仅不支持发送组播Hello,其余和点到多点相同。

九,OSPF协议的NSSA和Stub

OSPF有两个区域——骨干区域和非骨干区域

    首先从广义的角度讲,包括STUB,TOTALLY STUB,NSSA在内OSPF AREA都是为了通过减少不同种类的LSA扩散而达到节约内存资源的目的。

数据通信——OSPF高级特性_第2张图片

数据通信——OSPF高级特性_第3张图片

    非骨干区域中有3个类型(默认为常规区域),可以把它们设置成Stub和NSSA,那为什么不用常规区域呢?

    答:一般情况下,非骨干区域去往外网或者其它网段时候仅有一条路径(一台ABR)为了优化其数据库和路由表则可以通过NSSA和Stub修改。当外网访问时候,ABR会阻止从外到内的流量的进入,也就是4,5类LSA,取而代之的是向区域内部传送指向自身路径的3类LSA,当内部设备访问外部网络时,通过给ABR发送数据以完成访问。

NSSA次末节区域:非骨干区域才能设置(非Area0区域)该区域所有的路由器都要为NSSA

Stub末节节点:非骨干区域才能设置(非Area0区域)该区域所有的路由器都要为Stub

数据通信——OSPF高级特性_第4张图片

Nssa和Stub区别

    虽然它们都会过滤4,5类LSA,但是Nssa不会下放默认路径,原因为Nssa中有出口会导致冲突(ABR和ASBR都会有下方默认路径)

    在思科设备中:如果想NSSA的ABR下放默认,敲命令就好,有无默认路由无所谓;但在NSSA的ASBR上下方默认,不止命令还要保障有默认路由

    在华为设备中:华为的NSSA中ABR会主动下放默认路由,ASBR也要下放,因此要处理cost等问题

因此不建议NSSA有多个ABR

    NSSA好在出口位置允许在内部,但Stub不允许在。如果你想减少LSDB等信息,不需要用ASBR设立,你可以将它升级成Totally NSSA(仅需要ABR部署)

    ABR会过滤从外到内的3,4,5,类LSA,除了外部路由,区域间也过滤,过滤后ABR会主动下放默认3类LSA以此完成区域间访问(Totally Nssa也是这样)

Stub区域禁止5,7类LSA

在Hello中有个Option字段其中有E和N

E1代表该区域允许5类LSA,N0代表非NSSA区

    在Stub区域中,R交互Hello时,E和N都为0,如果没有统一的设置为Stub,就会出现问题。Two-way都无法完成。E有0也代表不能产生5类LSA的ASBR。因此边界不能设置为Stub区域。Stub中也不能有Virtual Link

    不规则区域中,比如:Area0——Area1——Area0导致Area0之间无法通信。Area0——Area1——Area2导致Area0和Area1收不到Area2因此采用OSPF设定的Virtual link它仅属于Area0区域的延伸且是点到点。但它是临时解决方案,因为会导致有环路。(一般网络合并的时候会出现虚连接的使用)

    如果Stub区域中有两个ABR其实没必要用Stub了,设置Stub就是为了用默认路由代替明细路由,但有两个ABR了,有路可选择,很显然就是用明细路由(也可以做,但是不好)

    Stub可以说升级,不仅去往外网,也可去往其他区域,Totally Stub(完全末节节点)它解决了Stub优化问题。Stub拿到了ABR的3类LSA完成了外网和区域间路由的联系。但其它普通的Stub仅到外网用默认访问网段还是明细路由。将ABR设置为Totally stub它会过滤3,4,5类LSA。Stub内部仅有1,2类,对外区域由3类默认ABR做到。(注:我仅限制从外到内的LSA)

    NSSA区域中的Hello的Option E0和N1,NSSA中的ASBR无论什么情况,只要做到了重分发,它都会拿他宣告进OSPF的环回口或物理接口地址做FA地址,并通告7类LSA。

7类LSA区域内传递,但其它区域如何获得呢?

    7类LSA无法跨区域传送,因此在ASBR中找到ABR当作转换器,它必须是NSSA区域中的ABR(真伪ABR都可)它负责将7类转化为5类LSA形式发送给其他区域(谁的RID大谁就做转换器;其中7—5类LSA转化是等价的)但ADV router会改变区域口和其它区域收到的5类LSA,他们会认为是转换器(ADV router改为自己)发的,但其实不是。因此7类LSA要带FA地址,告诉它们想访问外网的话,下一跳跳给我。因此易产生次优路径和环路。

    何时把非骨干区域设成Stub或者NSSA?一个前提:区域内的路由器老龄化性能一般,区域内只有一台ABR从内到外的选路基本无空间,这时可升级为Stub和NSSA用3类LSA取代路由,以此减少消耗。

数据通信——OSPF高级特性_第5张图片

 找到的这个图很不错

十,OSPF实验

承上所述

回来补充了,上面提到的十一些OSPF的高级特性以及OSPF配置时的一些注意事项和优化。下面我们来用实验展现OSPF的配置。

如下,按图连接拓扑:

数据通信——OSPF高级特性_第6张图片

解释:我们将R6设置为边界路由器,R5为DR,R3为BDR,lsp为运营商,我们用环回口作为内网的主机设备,再在lsp上做一个环回口模拟为运营商服务器。IP地址随意即可。

在这个实验中,我们采用OSPF作为动态路由选择协议,其中,R1上的环回口宣告进OSPF;R5上的环回口重分发进OSPF来作为外部路由使用。

如上图可以看到,我们建立了一个不规则的OSPF区域,但是仍要保证它能通信(不会使用GRE等技术)。

我们不要让太多的LSA传来传去,尽可能减少网络的变化以及LSDB表的存储量,这样对网络的优化有好处!

我们再将area 2设置为Totally NSSA区域,目的是为了优化网络路由条目数量。也是为了让大家看一下Totally NSSA区域的一个实验配置。

R3和R6做个认证,毕竟到边界了,要保证网络数据安全而且还要想办法通过改变网络类型的方法来快速建立邻接关系

最终目标是内网的设备(环回口)可以访问到LSP的服务器(环回口)

配置OSPF

我们先把环回口和IP地址配置好!我们配置了loopback0口作为我们OSPF选举的时候的Router ID。下面,我们开启R1、R2、R3、R5、R6的OSPF协议,其中R1的环回口宣告进OSPF;R2的环回口重分发到OSPF作为外部路由,R3和R6自然是要快速建立邻接关系。

R1:

数据通信——OSPF高级特性_第7张图片

R5:

数据通信——OSPF高级特性_第8张图片

R3:

数据通信——OSPF高级特性_第9张图片

R6:

数据通信——OSPF高级特性_第10张图片

​​​​​​​R2:

数据通信——OSPF高级特性_第11张图片

好了,我们看下R6的路由表:

数据通信——OSPF高级特性_第12张图片

虚链路创建

上图我们可以发现, 区域0和1的都有,因为它们挂靠在区域0,但是没有区域2,因为没有挂靠在区域0.那为了保障不规则的OSPF可以完成正常通信,我们采用虚链路的方式在R3和R5上配置:

R5:

数据通信——OSPF高级特性_第13张图片

R3:

数据通信——OSPF高级特性_第14张图片

可以看到R3的虚连接状态:

数据通信——OSPF高级特性_第15张图片

我们再看下R6的路由表:

数据通信——OSPF高级特性_第16张图片

 我们再看看LSA,也就是在看看LSDB的状态:

数据通信——OSPF高级特性_第17张图片

现在开始抓包,抓R6的S2/0/1口,用R2pingR6:

数据通信——OSPF高级特性_第18张图片

数据通信——OSPF高级特性_第19张图片

可以发现都能Ping通。

修改优先级

我们下面修改优先级,R5为DR,R3为BDR,我们直接改优先级即可,当然了,我们还要重新刷新OSPF进程:

R5:

 R3:

R1,R3和R5都要重置进程 :

命令为reset ospf(+进程号)process(如果没有指定进程号则全部重置)

 我们来在R1上看下area 1的邻居关系:

数据通信——OSPF高级特性_第20张图片

路由汇总

为了减少LSA的传递数量,进而减少LSDB和网络的变化,从而做到带宽的节省和转发效率。我们用汇总路由的方式来进行。

我们可以通过汇总区域间路由(OIA)或者汇总外部路由(0E)来完成汇总。我们在R6上查看下OSPF路由表,就能得知是区域间路由还是外部路由了。下面,我们开始汇总:

区域间汇总

R5:

数据通信——OSPF高级特性_第21张图片

R3

数据通信——OSPF高级特性_第22张图片

外部路由汇总

最后我们查看下R6上面的路由表情况:

数据通信——OSPF高级特性_第23张图片

最开始我们的路由条目是14条,通过汇总变为了8条,不过为了继续优化,我们将area 2的区域设置为Totally NSSA的特殊区域。我们在此之前先了解下stub.Totally和stub.NSSA的配置:

与Totally NSSA相关配置

stub区域配置

我们通够STUB区域让域内只存在1类,2类和3类LSA,把5类LSA清除掉。首先看一下R2的LSDB状态:

R2:

[Huawei]ospf 110
[Huawei-ospf-110]area 2
[Huawei-ospf-110-area-0.0.0.2]stub

R5:

[Huawei]ospf 110
[Huawei-ospf-110]area 2
[Huawei-ospf-110-area-0.0.0.2]stub

查看R2路由表,发现没有5类的LSA了。

数据通信——OSPF高级特性_第24张图片

Totally Stub区域配置

我们继续让area 2中不仅没有5类LSA还有去掉3类LSA。虽然没有3类,但是ABR设备会向内部设备下发一条默认路由,这条路由将标记为3类LSA。这也是为什么STUB和Totally STUB均不支持重分发的原因,重分发外部路由并不能存在于路由表,所以设备不会收到外部路由的LSA。

R5:

[Huawei]ospf 110
[Huawei-ospf-110]area 2
[Huawei-ospf-110-area-0.0.0.2]stub no-summary 

R2:

[Huawei]ospf 110
[Huawei-ospf-110]area 2
[Huawei-ospf-110-area-0.0.0.2]stub //我们并不改变R2上面的配置,因为它不是ABR。

下图我们可以通过查看R2的LSDB发现area 2中只有1类和2类LSA了,以及自动下放的一条0.0.0.0的默认路由。

数据通信——OSPF高级特性_第25张图片

 NSSA区域配置

NSSA区域比起Stub区域,特点是支持重分发,ABR接收123类LSA后还可以手动下发7类LSA的默认路由。ABR会把7类LSA转化为5类LSA然后发送,太妙了!

R5:

[Huawei]ospf 110
[Huawei-ospf-110]area 2
[Huawei-ospf-110-area-0.0.0.2]undo stub //删除stub区域配置
[Huawei-ospf-110-area-0.0.0.2]nssa //开启nssa
R2:

[Huawei]ospf 110
[Huawei-ospf-110]area 2
[Huawei-ospf-110-area-0.0.0.2]undo stub //删除stub区域配置
[Huawei-ospf-110-area-0.0.0.2]nssa //开启nssa

再看看R2的链路状态数据库:

数据通信——OSPF高级特性_第26张图片

我们发现数据库中不再有4类和5类LSA,而是一条7类的LSA的默认路由和以7类LSA出现的外部路由取代了它们。

Totally NSSA区域配置 

这个区域仅支持1类和2类LSA,不过重分发功能也能执行。该区域会给ABR自动下发一条默认路由到stub区域

R5:

[Huawei]ospf 110
[Huawei-ospf-110]area 2
[Huawei-ospf-110-area-0.0.0.2]nssa no-summary  //配置成totally nssa区域
R2:

[Huawei]ospf 110
[Huawei-ospf-110]area 2
[Huawei-ospf-110-area-0.0.0.2]nssa //配置不变

观察R2的LSDB和R6的OSPF路由表:

R2:

数据通信——OSPF高级特性_第27张图片

R2已经没有了3类LSA,而是一条3类LSA的默认路由出现了。

R6:

数据通信——OSPF高级特性_第28张图片

R6看到了区域2的路由,证明没问题。 

安全认证配置

为了安全,R3到R6需要做认证,我们可以通过接口明文认证和区域密文认证完成。都展示下:

接口链路明文认证

R3与R6:

[Huawei]int s2/0/1
[Huawei-Serial2/0/1]ospf au    
[Huawei-Serial2/0/1]ospf authentication-mode si    
[Huawei-Serial2/0/1]ospf authentication-mode simple p    
[Huawei-Serial2/0/1]ospf authentication-mode simple plain dty //认证模式为普通密码dty

//R3和R6命令一致。

 区域密文认证

R3与R6:

[Huawei]ospf 110
[Huawei-ospf-110]area 0
[Huawei-ospf-110-area-0.0.0.0]authentication-mode md5 1 cipher dty //认证模式为MD5密文密码为dty

//R3和R6命令一致。

R5
[Huawei]ospf 110
[Huawei-ospf-110]area 0
[Huawei-ospf-110-area-0.0.0.0]authentication-mode md5 1 cipher dty

注:两台设备要配置一致,且R5也要配置区域密文认证,不然就接收不到路由了!

私网访问公网配置

自然是用NAT技术,我们可以先利用OSPF默认路由自动下发,我们先看配置:

[Huawei]ip route-static 0.0.0.0 0.0.0.0 g0/0/1 200.1.1.2 //我们为了访问ISP,写一条默认静态
[Huawei]ospf 110
[Huawei-ospf-110]default-route-advertise always //这个是用来下放默认路由的命令,而always是不管本地有没有默认路由,都可以下发。

[Huawei]acl number 2000
[Huawei-acl-basic-2000]rule 10 permit
[Huawei]nat address-group 0 200.1.1.3 200.1.1.10  //创建nat地址池
[Huawei]int g0/0/1
[Huawei-GigabitEthernet0/0/1]ip add 200.1.1.1 255.255.255.0
[Huawei-GigabitEthernet0/0/1]nat outbound 2000 address-group 0  //放行通过

最终,R1和R2上ping下我们的LSP:

数据通信——OSPF高级特性_第29张图片

数据通信——OSPF高级特性_第30张图片

行了,全部通行了,整个OSPF到此为止(不过后续对于OSPF中的一些功能还会在相应章节加以描述)

后续

OSPF在此就真的结束了,知识点很多,毕竟是链路状态协议的经典代表,这些知识点和实验会在后续中用到。但是最重要的是,实际面对问题的时候,使用OSPF前要考虑到OSPF的特性是否可以解决客户问题,配置过程中是否会出现特殊情况等,其次就是如何规划OSPF的路由表,如何在不影响正常通信的情况下最大程度增加通信的传输效率和传输安全!

后续,我们将在HCIE中通过OSPF来配合MPLS VPN、GRE、IPSEC等技术

你可能感兴趣的:(数通工程,数据通信,智能路由器,网络,计算机网络,信息与通信,网络协议,华为)