通信人家园

 找回密码
 注册

只需一步,快速开始

短信验证,便捷登录

搜索

军衔等级:

  少将

注册:2012-10-23179
发表于 2015-8-11 14:00:38 |显示全部楼层
好东西收藏啦

举报本楼

军衔等级:

  中士

注册:2010-7-295
发表于 2015-8-14 20:35:02 |显示全部楼层

【华为原创连载】-问鼎OSPF(3)-完善机制沐邻里,帅将兵民如父兄

鲜衣怒马惊草风,
身若劲松气如虹。
一朝踏尽寒霜雪,
剑破长空化游龙。
“这诗说的正是白袍小将。广播链路一战,世人皆识得白袍小将,即便与我们的军师OSPF相比,亦有过之而无不及。那一战,白袍小将恍若天神,携雷霆万钧之势冲入敌阵,好不威风! ”说书人眉飞色舞,口沫横飞。台下看客目瞪口呆,一脸沉醉。
自广播链路大捷已过三日。虽说众人都很高兴,但是连番的几次大战,亦是让不少人生了疲惫之心。网管听得OSPF的报告,便命三军稍作休整,恢复元气。这一日,OSPF与攻打广播链路一众将士相约于X网点有名的醉仙楼,谈天说地,把酒言欢。
“军师,莫要听那说书人瞎说。这种人就一样本事,喜欢夸夸而谈。”说话的人剑眉星目,英武不凡,对军师的语气很是恭敬。
“呵呵,将军莫要自谦,若非有你,我们不知要折损多少将士,才能攻下广播网络。”答话人白衣胜雪,神色如常。
“哎呀哎呀,大哥和军师你们怎么突然都变得如此清高了。哎呦哎呦,冷死了。”这时候突然窜出来一个小姑娘,那小姑娘一身水绿裙裳,扎着个马尾,宛若白玉的小脸上生着一双秀丽的大眼睛,乌黑的眼珠在里边滴溜溜的打着转。而那双顾盼撩人的大眼睛忽闪忽闪,带着微微上翘的长睫毛上下跳动,真是好生俏丽。
“噗。”终于有人忍不住,笑出声来,而席间的氛围也轻松了起来。
“小妹你又胡说,若无军师,我们这些兄弟怎受得主公如此赏识。你这么不懂规矩,以后也不知道哪家小哥敢要你。”白袍小将苦笑摇头。
“哼哼,我谁都不嫁,我…我就一辈子赖上你了!”难得的,小丫头白嫩嫩的小脸上透出了一点红。
“哈哈哈哈,原来我们的小妹心有所属了。”众人哈哈大笑,跟着起哄。
“你们也跟着胡闹!” 白袍小将言间讪讪,为了掩饰尴尬,干咳一声。忽又觉得好久没如此开心过,既而也跟着放声大笑。一时间,众人言笑晏晏,似是忘了Internet上那繁多的战事,那繁多的忧愁。
1      由接口演七般变化 众网元借奇功应不同链路
酒过三巡,白袍小将见时机成熟,便对OSPF正色道:“多谢军师提拔,方有我今日成就。原先籍籍无名一网元,如今却管理一方广播链路,竟然还有了DR这个名号,此等恩情,没齿难忘!”
“呵呵,非也。名利皆虚妄,这是家师教导我的,今天我也对你这样说,”OSPF摆了摆手,然后又对其他众人道:“还有你们也莫要看轻自己。常言道,此一时彼一时,你们可知道我传予你们的功法,人人皆能生出七般变化?将军当得DR、小妹当得BDR,你们也能当得。教你们七般变化,就是让你们顺势而为,莫说广播链路、NBMA链路,P2P/P2MP链路也当应付得了。”
“哦?竟有如此威能?”白袍小将很是惊奇。
“怎么?不信吗?且看看你的OSPF接口状态。”言罢OSPF含笑不语。
白袍小将心怀忐忑,查看了自己的OSPF接口,竟发现其上颜色由赤及紫,七般状态,交错变化,持续时长不一而足。
“军师,这?”
“莫慌,待我慢慢说来…..”
1.1      OSPF接口
通过第一篇&第二篇,我们知道OSPF是链路状态协议,运行OSPF的设备间通过交互链路状态信息(即LSA),最后每台OSPF设备都形成一个链路状态数据库(即LSDB),从而知道整张网络的拓扑信息。而这些链路信息最初的源头肯定都是OSPF设备本身相连的本地链路信息,那么这些信息又是从哪里获得的呢?答案是与链路直连的OSPF接口。
我们可以通过display ospf interface查看OSPF接口信息。
图1 OSPF接口信息
在上面的信息中,通过其中一些描述链路基本状况的字段,就可以了解OSPF接口相连的链路信息。
1Router ID设备的ID,第二篇中介绍到的,保证设备在OSPF网络的唯一性。
2Area接口所在的区域ID。关于区域ID,在第四篇中会详细介绍。
3Interface接口的基本信息,包括接口的IP地址、接口编号。始发于这个接口的OSPF报文将把这个IP地址作为源地址。
4Cost接口开销值,即此接口发送出去的数据包在链路中传输需要花费的开销值。
OSPF在生成SPF时,就是依据这些链路开销值,选出最优的数据转发链路。
5Type接口类型,即这个接口相连的链路类型,包括P2P、P2MP、广播或NBMA。

当然,还有别的如维持邻居关系相关的等其他的信息,比如第二篇里的Dead Timer。
6Priority设备接口在选取DR和BDR时的优先级。其值越大,优先级越高。
7DesignatedRouter接口所在广播网络/NBMA网络上的指定设备,即DR。一般用连接这个广播网络/NBMA网络的接口地址表示。比如192.168.23.0/24这个广播网络/NBMA网络的DR是相连接口地址为192.168.3.2的设备。
8BackupDesignatedRouter接口所在网络上的备份指定设备,BDR。一般用连接这个广播网络/NBMA网络的接口地址表示。比如192.168.23.0/24这个广播网络/NBMA网络的BDR是相连接口地址为192.168.3.1的设备。
9Hello接口发送Hello报文的时间间隔。
10Dead接口相连的OSPF邻居失效时间。超过失效时间,如果接口还没有收到邻居设备发来的Hello报文,就表明两端的邻居关系已无效。华为S系列交换机在默认情况下,邻居失效时间为发送Hello报文时间间隔的4倍。
11PollNBMA网络上发送轮询Hello报文的时间间隔。在NBMA网络上,当邻居失效后,设备将按轮询时间间隔定期地发送Hello报文。轮询时间间隔值至少应为Hello报文时间间隔的4倍,华为S系列交换机在默认情况下发送轮询Hello报文的时间间隔是发送Hello报文时间间隔的4倍。
12Retransmit接口没有收到来自对端“LSA已经收到”的确认报文,需要重传LSA的等待时间。
13Transmit Delay接口发送LSA过程中的传输延迟时间。
1.2      OSPF接口状态机
OSPF设备从接口获取了链路信息后,然后与相邻设备建立邻接连接,交互这些信息。在建立邻接关系之前,邻居设备间需要明确角色分工,才能正常建立连接。那角色分工通过什么来了解呢?其实在图1的接口信息中,我们还有一个非常关键的字段没有介绍,那就是State字段。通过这个字段,我们就可以了解OSPF设备在一段链路中的作用。而这也就是OSPF接口的七般变化。每个设备通过这七般变化,顺势而为,扮演好自己在这段链路中的角色。
接口总共有下面7种状态:
- Down接口的初始状态。表明此时接口不可用,不能用于收发流量。
- Loopback设备到网络的接口处于环回状态。环回接口不能用于正常的数据传输,但仍能通过ICMP ping或位错误检测来收集接口信息。
- Waiting设备正在判定网络上的DR和BDR。在设备参与DR/BDR选举前,接口上会起一个Waiting定时器。在这个定时器超时前,设备发送的Hello报文不包含DR和BDR信息,设备不能被选举为DR或BDR,因为从第二篇可以知道,正常的DR/BDR选举遵循非抢占原则。这可以避免不必要地改变链路中已存在的DR和BDR。仅NMBA网络、广播网络有此状态。
- P-2-P接口连接到物理点对点网络或者是虚拟链路,这个时候设备会与链路连接的另一端设备建立邻接关系。仅P2P、P2MP网络有此状态。
- DROther设备没有被选为DR或BDR,但连接到广播网络或NBMA网络上的其他设备被选举为DR。它会与DR和BDR建立邻接关系。
- BDR设备是相连网络的BDR,并将在当前的DR失效时成为DR。该设备与接入该网络的所有其他设备建立邻接关系。
- DR设备是相连网络的DR。该设备与接入该网络的所有其他设备建立邻接关系。

每个OSPF接口如何进行七般变化?它是根据不同的情况(即输入事件)在这些状态中进行灵活转换的,这样就形成了一个高效运作的接口状态机,如下图所示
图2 接口状态机
下面是不同状态切换时的输入事件InputEvent(图中简称IE)。

输入事件


详细事件描述


IE1


InterceUP:底层协议表明接口是可操作的。


IE2


WaitTimer:等待定时器超时,表明DR/BDR选举等待时间结束。


IE3


BackupSeen:设备已检测过网络中是否存在BDR。发生这个事件主要有下面两种方式:

1)接口收到邻居设备的Hello报文,宣称自己是BDR;

2)接口收到邻居设备的Hello的报文,宣称自己是DR,而没有指明有BDR。

这都说明邻居间已进行了相互通信,可以结束Waiting状态了。


IE4


接口所在的设备在网络中被选举为DR。


IE5


接口所在的设备在网络中被选举为BDR。


IE6


接口所在的设备在网络中没有被选举为DR/BDR。


IE7


NeighborChange:与该接口相关的邻居关系变化的事件发生,这表明DR/BDR要

重新选举。下面的这些邻居关系变化可能会导致DR/BDR重新选举:

1)接口所在的设备和一个邻居设备建立了双向通信关系。

2)接口所在的设备和一个邻居设备之间丢失了双向通信关系。

3)通过邻居设备发送的Hello报文检测到,邻居设备重新宣称自己是DR/BDR。

4)通过邻居设备发送的Hello报文再一次检测到,邻居设备宣称自己不再是DR/BDR。

5)通过邻居设备发送的Hello报文再一次检测到,邻居设备的DR优先级已经改变。


IE8


UnLoopInd:网管系统或者底层协议表明接口不再环回。


IE9


InterfaceDown:底层协议表明接口不可操作。任何一种状态都可能触发此事件

切换到Down状态。


IE10


LoopInd:网管系统或者底层协议表明接口处于环回状态。任何一种状态都可能触发此事件切换到Loopback状态。




2      邻居间奏琴瑟和鸣 八般变化助LSA交互
众人听罢,内心久久不能平歇,军师的功法原来竟有这般变化!想想也是,十四儿郎,少小离家,谁不想从茫茫行伍中脱颖而出,纵不博得个千古美名,总要留下些什么证明自己亦曾得意过。
“初时以为军师给我们都定义好了角色,照着军师给的锦囊去做就好,原来这竟是一门能演绎七般变化的高明心法。”白袍小将似是喃喃自语,又似是对众人说,忽的他抬头对OSPF道:“军师,既然这心法能教人应不同链路,却没有说如何去教我们在这链路上去交互LSA,想必还另有心法,是也不是?!”
“嗯,将军果然聪明,的确如此,”OSPF微微点头,“还有一门心法叫琴瑟和鸣,想来你们从这雅致的名字也可以知道,这需要两人共同修行演绎。而这心法,可是比之前的更复杂了,它有八般变化。”
“八般变化?这不是才多了一般变化么?”
“呵呵,非是多了一般变化那么简单。反正这些你们迟早也要习得,我就先说与你们听听…..”
2.1      OSPF邻居
相邻设备间明确好角色分工,相连接口状态稳定下来以后,下一步就是建立邻接关系,完成链路信息的传输。
江湖小贴士
1、 邻居关系和邻接关系有什么区别?什么情况下才会出现邻居或者邻接?
图3 邻居关系和邻接关系的区别
1)邻居关系:OSPF设备启动后,会通过OSPF接口向外发送Hello报文,收到Hello报文的OSPF设备会检查报文中所定义的参数,比如Hello报文发送间隔、网络类型、IP地址掩码等,如果双方一致就会形成邻居关系,两端设备互为邻居。
2)邻接关系:位于邻居关系之上,如果两端需要进一步交换DD报文、交互LSA信息,才建立邻接关系。
这也就解答了第二篇里面广播链路/NBMA链路的一些疑问。在广播链路/NBMA链路里,因为DROther之间不需要交换LSA信息,所以建立的就是邻居关系。而DR与BDR之间,DR/BDR与DROther之间需要交互LSA信息,所以建立的是邻接关系。如上图所示。
而P2P链路/P2MP链路则只有邻接关系。
后面会介绍到邻居状态机,如果根据邻居状态理解,邻居关系是指邻居状态达到了2-way状态,而邻接关系则需要达到Exstart以上状态。

2、 OSPF的五种协议报文。
在介绍OSPF邻居的一些内容之前,有必要讲解下OSPF协议用到的5种协议报文,因为后面的知识点很多都会涉及到这些协议报文。在讲解时,会拿生活中的顾客去饭馆点菜、服务员上菜做类比,加深理解。
Hello报文:最常用的报文,其作用为建立和维护邻接关系,周期性地在使能了OSPF的接口上发送。报文内容包括一些定时器的数值、本网络中的DR、BDR以及已知的邻居。
这类似于顾客去饭馆吃饭,先跟服务员打招呼。
DD报文:两台设备在邻接关系初始化时,用DD报文描述本端设备的LSDB,进行数据库的同步。报文内容包括LSDB中每一条LSA的Header(LSA的Header可以唯一标识一条LSA),即所有LSA的摘要信息。LSA Header只占一条LSA的整个数据量的一小部分,这样可以减少设备之间的协议报文流量,对端设备根据LSA Header就可以判断出是否已有这条LSA。在两台设备交换DD报文的过程中,一台为Master,另一台为Slave。由Master规定起始序列号,每发送一个DD报文序列号加1,Slave方使用Master的序列号作为确认。
这里面,DD报文就好比饭馆里面的菜单,顾客先要看下菜单,了解有哪些菜。
LSR报文:两台设备互相交换过DD报文之后,需要发送LSR报文向对方请求更新LSA,内容包括所需要的LSA的摘要信息。
这类似于顾客看完菜单之后,他就知道想要点哪些菜了,就把X桌的菜单写好给服务员。
LSU报文:LSU报文用来向对端设备发送其所需要的LSA或者泛洪本端更新的LSA,内容是多条LSA(全部内容)的集合。为了实现Flooding的可靠性传输,需要LSAck报文对其进行确认,对没有收到确认报文的LSA进行重传,重传的LSA是直接发送到邻居的。
这类似于饭馆根据顾客点的菜单提供对应的菜。
LSAck报文:LSAck报文用来对接收到的LSU报文进行确认,内容是需要确认的LSA的Header(一个LSAck报文可对多个LSA进行确认)。
这类似于服务员上好菜以后,顾客还要确认下是不是他点的那些菜。
考虑到篇幅有限,如果大家希望了解不同协议报文的格式,可以查阅后面会发布的“OSPF-番外篇之协议报文格式”

邻居关系建立和维持都是通过交换Hello报文来完成的。OSPF设备发送的Hello报文会携带有OSPF接口数据结构中保存的信息,来通告给邻居设备。而对于邻居设备来说,也会将这些学习到的信息维护一张邻居数据结构表中。通过display ospf peer命令可以了解这些邻居信息。
图4 OSPF邻居信息
对于OSPF邻居字段信息的详细解释如下。
1Area邻居所属的区域。
2Interface与邻居相连的接口。
3Router ID邻居的Router ID。
4Address邻居接口的IP地址。
5State邻居状态。
6Mode DD交换进程中协商的主从状态。
- Nbr is Master,邻居是Master,主动发送DD报文。
- Nbr is Slave,邻居是Slave,配合Master发送DD报文。
7Priority邻居的DR优先级。
8DR邻居间指定路由器的IP地址。
9BDR邻居间备份指定路由器的IP地址。
10Dead timer 邻居失效定时器。如果在超时时间内,还没有收到邻居发来的Hello报文,说明邻居已失效。
11Retrans timer interval重传LSA的时间间隔。如果在这个间隔内,没有收到邻居的LSA已经收到的确认报文,LSA会进行重传。
12Authentication Sequence 认证序列号。
2.2      OSPF邻居状态机
相信大家也注意到了,邻居信息中也有个State字段。不错,OSPF说的琴瑟和鸣大法正是相邻设备间通过不同的邻居状态切换,最后形成完全的邻接关系,完成LSA信息的交互。
邻居状态机总共有8种状态:
Down邻居会话的初始阶段。表明没有在邻居失效时间间隔内收到来自邻居设备的Hello报文。除了NBMA网络OSPF路由器会每隔PollIntervla时间对外轮询发送Hello报文,包括向处于Down状态的邻居路由器(即失效的邻居路由器)发送之外,其他网络是不会向失效的邻居路由器发送Hello报文的。
Attempt这种状态适用于NBMA网络,邻居路由器是手工配置的。邻居处于本状态时,路由器会每隔HelloInterval时间向自己手工配置的邻居发送Hello报文,尝试建立邻居关系。
Init本状态表示已经收到了邻居的Hello报文,但是对端并没有收到本端发送的Hello报文,收到的Hello报文的邻居列表并没有包含本端的Router ID,双向通信仍然没有建立。
2-way互为邻居。本状态表示双方互相收到了对端发送的Hello报文,报文中的邻居列表也包含本端的Router ID,邻居关系建立。如果不形成邻接关系则邻居状态机就停留在此状态,否则进入Exstart状态。而且DR/BDR只有在邻居状态处于这个状态或者更高的状态才会被选举出来。
Exstart协商主/从关系。建立主/从关系主要是为了保证在后续的DD报文交换中能够有序的发送。邻居间从此时才开始正式建立邻接关系。
Exchange交换DD报文。本端设备将本地的LSDB用DD报文来描述,并发给邻居设备。
Loading正在同步LSDB。两端设备发送LSR报文向邻居请求对方的LSA,同步LSDB。
Full建立邻接。两端设备的LSDB已同步,本端设备和邻居设备建立了完全的邻接关系。
其状态切换如下图所示。
图5 邻居状态机
触发不同状态的输入事件如下表所示。

输入事件


详细事件描述


IE1


Start:以HelloInterval间隔向邻居设备发送Hello报文,尝试建立邻居关系。仅

NMBA网络适用。


IE2


HelloReceived:从邻居设备收到一个Hello报文。


IE3


2-WayReceived:从邻居设备收到的Hello报文中包含了自己的RouterID,邻居间

建立了双向通信关系。接下来会进行判断:

IE3(Y):如果相邻设备间应当建立邻接关系,会将邻居状态切换为Exstart;

IE3(N):如果相邻设备间不应当建立邻接关系,只建立邻居关系,会将邻居状态切换为2-way。


IE4


NegotiationDone:邻居间主从关系已经协商完成,DD序列号已经交换。


IE5


ExchangeDone:邻居间成功交换了数据库描述报文。接下来会进行判断:

IE5(Y):如果链路状态请求列表为空,会将邻居状态切换为Full状态,表示链路状态数据已全部交换完成,邻居间建立了完全的邻接关系;

IE3(N):如果链路状态请求列表不为空,会将邻居状态切换为Loading状态,开始或继续邻居发送LSR报文,请求还没有接收到的链路状态数据。


IE6


LoadingDone:链路请求状态列表为空。


其实,上面的邻居状态机并没有描述完全,只是描述了正常的切换过程,实际的状态机很复杂,会考虑其他很多异常情况,比如链路变化导致的邻居关系和邻接关系只见的切换、链路状态数据传输时出现错误导致重传等。考虑到篇幅有限,如果大家希望了解更全面的状态,可以查阅后面会发布的“OSPF-番外篇之邻居状态机”
  


举报本楼

军衔等级:

  中士

注册:2010-7-295
发表于 2015-8-14 20:38:13 |显示全部楼层
下面介绍一下不同网络的邻接关系建立过程:
广播网络
图6 广播网络邻居关系的建立
1.  建立邻居关系
a.  DeviceA的一个连接到广播类型网络的接口上激活了OSPF协议,并发送了一个Hello报文(使用组播地址224.0.0.5)。此时,DeviceA认为自己是DR设备(DR=1.1.1.1),但不确定邻居是哪台设备(Neighbors Seen=0)。
b.  DeviceB收到DeviceA发送的Hello报文后,发送一个Hello报文回应给DeviceA,并且在报文中的Neighbors Seen字段中填入DeviceA的Router ID(Neighbors Seen=1.1.1.1),表示已收到DeviceA的Hello报文,并且宣告DR设备是DeviceB(DR=2.2.2.2),然后DeviceB的邻居状态机置为Init。
c.  DeviceA收到DeviceB回应的Hello报文后,将邻居状态机置为Exstart状态,下一步双方开始发送各自的链路状态数据库。在广播网络中,两个接口状态是DR Other的设备之间将停留在此步骤。
2.  主/从关系协商、DD报文交换
a.  DeviceA首先发送一个DD报文,宣称自己是Master(MS=1),并规定序列号Seq=X。I=1表示这是第一个DD报文,报文中并不包含LSA的摘要,只是为了协商主从关系。M=1说明这不是最后一个报文。
为了提高发送的效率,DeviceA和DeviceB首先了解对端数据库中哪些LSA是需要更新的,如果某一条LSA在LSDB中已经存在,就不再需要请求更新了。为了达到这个目的,DeviceA和DeviceB先发送DD报文,DD报文中包含了对LSDB中LSA的摘要描述(每一条摘要可以惟一标识一条LSA)。为了保证在传输的过程中报文传输的可靠性,在DD报文的发送过程中需要确定双方的主从关系,作为Master的一方定义一个序列号Seq,每发送一个新的DD报文将Seq加一,作为Slave的一方,每次发送DD报文时使用接收到的上一个Master的DD报文中的Seq。
b.  DeviceB在收到DeviceA的DD报文后,将DeviceA的邻居状态机改为Exstart,并且回应了一个DD报文(该报文中同样不包含LSA的摘要信息)。由于DeviceB的Router ID较大,所以在报文中DeviceB认为自己是Master,并且重新规定了序列号Seq=Y。
c.  DeviceA收到报文后,同意了DeviceB为Master,并将DeviceB的邻居状态机改为Exchange。DeviceA使用DeviceB的序列号Seq=Y来发送新的DD报文,该报文开始正式地传送LSA的摘要。在报文中DeviceA将MS=0,说明自己是Slave。
d.  DeviceB收到报文后,将DeviceA的邻居状态机改为Exchange,并发送新的DD报文来描述自己的LSA摘要,此时DeviceB将报文的序列号改为Seq=Y+1。上述过程持续进行,DeviceA通过重复DeviceB的序列号来确认已收到DeviceB的报文。DeviceB通过将序列号Seq加1来确认已收到DeviceA的报文。当DeviceB发送最后一个DD报文时,在报文中写上M=0。
NBMA网络
图7 NBMA网络邻接关系的建立
1.  建立邻居关系
a.  DeviceB向DeviceA的一个状态为Down的接口发送Hello报文后,DeviceB的邻居状态机置为Attempt。此时,DeviceB认为自己是DR设备(DR=2.2.2.2),但不确定邻居是哪台设备(Neighbors Seen=0)。
b.  DeviceA收到Hello报文后将邻居状态机置为Init,然后再回复一个Hello报文。此时,DeviceA同意DeviceB是DR设备(DR=2.2.2.2),并且在Neighbors Seen字段中填入邻居设备的Router ID(Neighbors Seen=2.2.2.2)。在NBMA网络中,两个接口状态是DR Other的设备之间将停留在此步骤
2.  主/从关系协商、DD报文交换过程同广播网络的邻接关系建立过程。
3.  LSDB同步(LSA请求、LSA传输、LSA应答)过程同广播网络的邻接关系建立过程。
点到点/点到多点网络
与广播链路的过程相似,只是少了形成邻居关系判断这一步。
3      X网点大阵终成 少年联手小将再踏征途
草长莺飞,醉柳垂堤,一晃竟过去数月有余。
X网点,点将台。
网管于台上意气风发,心中却颇多感叹。他对台下众人道:“你们随本公南征北战,一路披荆斩棘,个个当有万夫莫敌之勇。然勇者有余,每每遇到X网点这样复杂的网点,却也是无计可施。”他顿了一顿,似是将多年沉积的郁结之气一扫而空:“天佑我三军!幸遇军师!”
“天佑我三军!幸遇军师!”
“天佑我三军!幸遇军师!”
白衣少年微微颔首,然后分别向网管和台下众将士盈盈一拜:
“臣本布衣,自耕野于草莽,苟全性命于乱世。然主公不以臣卑微,三顾臣于草庐之中。
恐有负主公知遇之恩,日日亦殚精竭虑图破X网点。时至今日,终有所成:
一为五行八阵图,定X网点OSPF路由运行机制。
二为巧计分四路,破不同类型网络。
三为奇才举能人,解广播链路/NBMA链路困局。
四为演七般变化,得十八样武器皆通众网元。
五为奏琴瑟和鸣,助邻居间互通LSA有无。”
接着他又朝网管再拜:“终得X网点大阵练成,微臣在此已无必要,特请辞军师,拜别主公。”
全军皆寂然。
“哈哈哈哈!”默然半晌,网管大笑三声,“天下无不散之筵席,军师智绝天下,本公早想到军师会有离开的一天。众将士听令!”随之,他睥睨下首:“本公在此立誓,有我网管一日在,军师变是我军中上宾。三军诸将,尽听其号令!”
“三军诸将!尽听号令!”
“三军诸将!尽听号令!”

翌日清晨。
“怎么,不与她道别吗?”白衣少年拍了拍白袍小将的肩膀。
“不了,见了徒增伤感罢了。”白袍小将定了半晌,然后摆了摆手,转身催马便走。
“大哥慢走!”明晃晃的人儿竟追了过来,见白袍小将慢慢停下,也随之停在他后边不远处。
那明晃晃的人儿仍穿着一身水绿衣裳,俏生生的立在那儿,满目含泪。白袍小将低下了头,心中一阵苦涩。
她见他那副模样,亦知他心中不舍,遂用袖口擦了擦泪水,然后展颜一笑道:“大哥是要去做大事的人,自当不应有所羁绊,我不会追随大哥的。但是总有不舍,所以想见大哥最后一面。”
“……嗯。”
“大哥,我们一起呆了这么久,还不知道你的名字呢。”
“呵呵,很俗气的一个名字,叫华为S系列交换机。”
“一点都不俗气,我觉着特好听。大哥?”
“嗯?”
“不要低着头,我希望你看着我,记着我的模样,永远不要忘记我!”
大哥抬首。
脉脉情眸柔似水,怡然俏立痴佳人




举报本楼

军衔等级:

  中士

注册:2010-7-295
发表于 2015-8-14 20:42:27 |显示全部楼层

【华为原创连载】问鼎OSPF(4)-连绵网络拔地起,划区而治应运生

十四儿郎,少小离娘。
牙牙学语,犹在耳旁。
一战功成,美名远扬。
孰知城下,枯骨高墙。
吾儿吾儿,今在何方。
每逢佳节,倍加思量。
不期名就,锦帽貂裘。
只盼来年,儿能还乡。
一个老兵低声地哼唱着乡谣,背靠着一截被砍断的木板,两眼空洞的望着前方。到处都是断壁残垣,战场上横七竖八的躺着很多尸体,中间来回穿梭着一些大夫,还在为伤者敷药包扎。生还的士兵们大都三三两两的围坐在奄奄一息的篝火旁,耷拉个脑瓜子,伸出一双大糙手取着暖。而还有一些人竟忍受的了这凛冽的寒风,和着冰冷的甲胄,伴随着那一声声乡谣,沉沉睡去。
1      扩疆域陷入死结 左右双少初起争执
阿帕历开元32年,少帅军新立,OSPF被奉为左少帅,华为S系列交换机被奉为右少帅。其后,于互联网上势如破竹,多个网点连连攻克,群雄震慑。
阿帕历开元34年,著名的Y网点之战拉开序幕。此网点幅员辽阔,东临蓝海,西邻僚邦,各方诸侯加入混战。战事已近一年,仍未有停歇的迹象,其间饿殍千里,伏尸百万,战况之惨烈,可见一斑。

阿帕历开元34年冬,Y网A据点少帅军营帐。

“欧少,这一战还要持续多久?”听到外边老兵的乡谣,这个仍内罩镫亮银甲,身披白色罗袍的少帅终于坚持不住向私下里以华少、欧少相称的那个人问了句。他原先英武俊朗的脸上现在已经胡子拉碴,眼睛里充斥着血丝。
“华少,我也不知道,”那个从链路谷下来的少年,依旧白衣翩翩,但却掩饰不了他的疲惫之色,“Y网就像一块基石,成了预示着以后可以握有更多的网点,败了便是绊脚石,在互联网上元气大伤。所以,现在每一路诸侯大军都不会轻易撤离。”
“可是,再这样下去,你我手下的这些将士们就吃不消了。”华少的声音有些沙哑。
“再坚持坚持吧,应该快了。我们这一路走来,危难重重,最后无不化险为夷。哼,”欧少的话语中略带一丝嘲讽,“好比那一次,那个路将军,还不是靠你作为DR破了广播链路吗?RIP?嘿嘿,以为我不知道他与那个路将军以往的关系吗…..”
“欧少!”怒吼的声音打断了欧少继续往下说,“看看外面的兄弟!他们已经精疲力竭了!你没发现单靠你的这一个阵法已达极限了吗?莫不如与其他路由协议联合,多生几个阵法吧。难道还要为了我们一己之私搭上更多人的性命吗?!”

面对日益增大的OSPF网络,双少起先都颇为自得。但是渐渐地,他们却陷入了两难境地,因为随着OSPF网络规模的增大,渐渐出现了三件棘手的问题。
图1 单区域运行的OSPF网络
1LSDB日益庞大。
随着网络规模日益扩大,当一个大型网络中的路由器都运行OSPF路由协议时,如果所有路由器都运行在同一个区域里,由于OSPF要求同一个区域的所有路由器都具有相同的链路状态数据库,所以此时路由器数量的增多会导致LSDB非常庞大,占用大量的存储空间,并使得运行SPF算法的复杂度增加,导致路由器CPU负担很重。
2、信息传递效率降低。
在大型网络中,拓扑结构发生变化是不可避免的,网络会经常处于“动荡”之中,造成网络中会有大量的OSPF协议报文在传递,这些协议报文占用了业务报文的传输带宽,所以降低了网络的带宽利用率。更为严重的是,每一次变化都会导致网络中所有的路由器重新进行路由计算。
3、网络稳定性降低。
OSPF单区域运行情况下,任何一台路由器的拓扑发生变化都会导致全网的LSA泛洪,网络中所有其他路由器都要重新计算刷新路由。这样势必会影响整个网络运行的稳定性。比如某条链路质量较差,处于闪断中,那么此时整个网络的路由就会长时间处于动荡之中,严重降低了网络的稳定性。
2      置死地破后而立 划区治理应运而生
“嘿嘿嘿嘿……”欧少略微一顿,似是发现了什么好笑的事,既而放声大笑,苍白的面色上浮现了一抹潮红。
“欧少,我知你心中愤懑,”华少也觉得刚刚有些过了,语气稍缓,“其实谁不想图得大业?但我们不能忘却初衷,让追随你我的那些兄弟白白丢了性命。我们能走到如今的地步,已经很好了。”
“哈哈哈,哈哈哈哈……”欧少恍若未闻,笑声越来越大,离营帐较近的士兵也渐渐朝这边望来,很好奇左少帅何故大笑。
“欧少?”华少心有忧色,难道欧少因我这话语被刺激到,疯了?
“哈哈哈哈,对啊,一个阵法不行,为何不多摆几个阵呢?破后而立,阵阵连环,华少,你真是我命里的福星!”欧少手舞足蹈,兴奋莫名。
“呃?你有驭域之策了?”华少松了口气,原来还没疯。既而反应过来他说的话,忙问道。
“正是!传令官!”
“在!”
“传我手谕与诸位将军,分四路人马居天、地、玄、黄四位,与主力大军结子母连环阵!”
2.1      OSPF区域划分
OSPF说的子母连环阵其实就是将一个OSPF网络分为多个区域。如图2所示,OSPF将自治系统划分成不同的区域。区域是从逻辑上将路由器划分为不同的组,每个组用区域号(Area ID)来标识。区域的边界是路由器,而不是链路。一个网段(链路)只能属于一个区域,或者说每个运行OSPF的接口必须指明属于哪一个区域。
图2 OSPF区域划分
OSPF划分的区域类型主要有骨干区域、标准区域以及特殊区域,详细如下:
骨干区域
OSPF划分区域之后,并非所有的区域都是平等的关系。其中有一个区域其区域号(Area ID)是0,通常被称为骨干区域。骨干区域是连接所有其他OSPF区域的中央区域,骨干区域负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发。对此,OSPF有两个规定:
l  所有非骨干区域必须与骨干区域保持连通;
l  骨干区域自身也必须保持连通。
标准区域
标准区域是最通用的区域,它传输区域内路由,区域间路由和外部路由。
特殊区域
OSPF为了进一步精细化管理LSA的传播,还划分了4个特殊区域:
l  Stub区域:Stub区域不允许自治系统外部的路由(Type5 LSA)在区域内传播。
l  Totally Stub区域:Totally Stub区域既不允许自治系统外部的路由(Type5 LSA)在区域内传播,也不允许区域间路由(Type3 LSA)在区域内传播。
l  NSSA区域:NSSA区域允许引入少量通过本区域的ASBR到达的外部路由,但不允许其他区域的外部路由AS-external-LSA(Type5 LSA)在区域内传播。
l  Totally NSSA区域:Totally NSSA区域既不允许其他区域的外部路由ASE LSA(Type5 LSA)在区域内传播,也不允许区域间路由Network-summary-LSA(Type3 LSA)在区域内传播。
关于OSPF特殊区域我们在后面的章节会有详细的介绍。
2.2      OSPF划分区域解决的问题
OSPF通过区域划分的方式将一个大型的网络分解成多个小区域进行管理,这实际上也是一种网络的分层拓扑结构,这种方式解决了OSPF网络的几个难题,详细如下:
1、解决LSDB日益庞大的问题。
划分区域以后,由于LSDB只需要在一个区域内进行维护,因此,大量的LSA泛洪扩散就被限制在一个区域里面了。此时路由器仅仅需要和它所在区域的其他路由器具有相同的LSDB,而没有必要和整个OSPF域内的所有路由器共享相同的LSDB。也就是说,划分区域以后,在一个区域内的路由器将不需要了解他所在区域外部的拓扑细节。因此,在这种情况下LSDB的规模就会大大缩减,降低了对路由器内存和CPU的消耗。同时划分区域以后,可以充分利用路由策略、路由汇总、特殊区域等等各种手段进一步优化网络结构,进一步减少LSA的规模。
2、提高了信息传递效率
划分区域以后,区域之间只交换汇总的路由信息,而不是交换每条详细的路由,这样LSA泛洪的数量就会大大减小,用户维护路由表的协议报文数量就会减少,从而空余出更多的链路带宽供业务报文使用,这对提高信息传递的效率是有好处的。
3、提高了网络稳定性
图3 划分区域后链路震荡的影响范围减小
OSPF网络划分其余以后,一个区域内参与SPF算法的只有区域内的LSA,其他的区域的LSA不参与本区域的SPF算法。例如如图3中,区域1有一条链路质量不好一直处于闪断中,所以区域1的SPF算法会频繁的运算,但是这种影响仅局限在区域1内,其他区域不会因此而重新执行SPF算法,所以这种情况下,网络的震荡被限制在一个更小的范围内,提高了网络的稳定性。
2.3      区域间环路及防环方法
区域的划分解决了OSPF网络的诸多问题,然而任何事情都具有两面性,区域划分也不例外,划分区域后引入了一个需要设计者思考的问题,就是如何避免区域间环路的产生?
OSPF在区域内部运行的是SPF算法,这个算法天然能够保证区域内部的路由不会成环。然而划分区域后,区域之间的路由传递实际上是一种类似距离矢量算法的方式,关注过问鼎OSPF(1)的读者应该还记得RIP协议就是一种基于距离矢量的协议,在问鼎OSPF(1)中我们曾经指出这种方式容易产生环路。
为了避免区域间的环路,OSPF规定直接在两个非骨干区域之间发布路由信息是不允许的,只允许在一个区域内部或者在骨干区域和非骨干区域之间发布路由信息。因此,每个区域边界路由器(ABR)都必须连接到骨干区域。
图4 OSPF区域间环路
假设OSPF允许非骨干区域之间直接传递路由,则可能会导致区域间环路。例如图4所示的网络中,骨干区连接到网络N,这个路由信息会传递至区域1,假设非骨干区之间允许直接传递路由信息的话,那么这条路由信息最终又被传递回去,形成区域间的路由环路。为了防止这种区域间环路,在图4这种网络拓扑中,OSPF禁止Area1和Area3,或者Area2和Areea之间直接交互路由信息,而必须通过Area0这个骨干区域进行路由交互。这样就能防止区域间环路的产生。
2.4      OSPF路由器的角色
划分完OSPF区域之后,根据路由器在不同的区域位置,相应的可以将OSPF域内的路由器划分为如下几种角色,详细如表1所示。
路由器角色

含义

区域内路由器
(Internal Router)

该类路由器的所有接口都属于同一个OSPF区域。

区域边界路由器ABR
(Area Border Router)

该类路由器可以同时属于两个以上的区域,但其中一个必须是骨干区域。
ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。

骨干路由器
(Backbone Router)

该类路由器至少有一个接口属于骨干区域。
所有的ABR和位于骨干区域Area0内部的路由器都是骨干路由器。

自治系统边界路由器ASBR
(AS Boundary Router)

与其他AS交换路由信息的路由器称为ASBR。
ASBR并不一定位于AS的边界,它可能是区域内路由器,也可能是ABR。


表1 OSPF路由器类型
2.5      OSPF区域划分案例
图5  OSPF单区域运行案例
图6 OSPF区域划分案例
组网及业务描述
如图5所示,四台路由器R1、 R2、R3以及R4同时运行OSPF,所有路由器运行在一个单区域Area0内。如图6所示,四台路由器运行在不同的OSPF区域内,R1与R2属于Area 1,R2与R3属于Area 0,R3与R4属于Area 2。四台路由器分别都用各自的LoopBack0作为各自的Router ID。
关键配置
实验效果:
1、查看划分区域前后R1上的LSDB信息,详细如下:
图7 单区域运行的时候R1的LSDB信息
图8 划分区域后,R1的LSDB信息
通过对比可以看出,划分区域之前R1上参与区域内路由计算的LSA有7条,而划分区域之后R1上参与区域内路由计算的LSA为3条,另外两条描述的是区域间路由,不参与本区域的路由计算。在更大规模的网络中,划分区域减少LSDB的数量效果更明显。可见通过划分区域,可以达到降低LSDB规模,减少LSA泛洪的作用。
2、划分区域后以R2为例查看OSPF的接口信息,详细如下:
图9 划分区域后以R2为例查看OSPF的接口信息
可以看到,OSPF的区域划分是基于接口的,同一个路由器的不同接口可以属于不同的区域,每个运行OSPF的接口必须指明属于哪一个区域。
3、划分区域后查看R1R2LSDB信息,详细如下:
图10 划分区域后查看R1的LSDB信息
图11 划分区域后查看R2的LSDB信息
划分区域后对比R1和R2的LSDB信息可以看到,R1上只有Area1的LSDB信息,而R2上同时有Area0和Area1的LSDB,这是因为R2作为区域边界路由器(ABR)负责传递区域间路由信息,所以ABR必须同时知道骨干区和标准区域的路由信息。
3      再遇难题用虚连接巧解  Y网点终战一触即发
“欧少,你的这个连环阵确实天衣无缝,此役胜算的确大了许多。但是,我总感觉有一点不妥的地方。”华少正目不转睛的盯着桌子上的沙盘,眉头紧皱。
“华少,莫要太担心,成大事都需伴着一定的风险。”欧少一副胸有成竹的样子。
“不对,你看!这一处,没有设备与我们的主力大军有连接之处!”华少顺手一指,的确那一处区域,确实没有与骨干区域有连接的地方。
“这一处么,我已经想到了。”欧少不紧不慢,吐出了一句话。

OSPF随后就跟华为S系列交换机说出了解决的方法-----虚连接。
虚连接(Virtual link)是指在两台ABR之间通过一个非骨干区域建立的一条逻辑上的连接通道。
1、 产生原因
根据RFC 2328,在部署OSPF时,要求所有的非骨干区域与骨干区域相连,否则会出现有的区域不可达的问题。但是在实际应用中,可能会因为各方面条件的限制,无法满足所有非骨干区域与骨干区域保持连通的要求,此时可以通过配置OSPF虚连接来解决这个问题。
图12 OSPF非骨干区没有连接骨干区
如图12中所示,Area2没有连接到骨干区Area0,所以RouterA并不能扮演ABR的功能,因此不会向Area2生成Area0中Network1的路由信息,所以RouterB上没有到达Network1的路由。此时可以考虑部署虚链接来解决这个问题。
2、实现原理
图13 OSPF虚连接实现原理
如图13所示,通过虚连接,两台ABR之间直接传递OSPF报文信息,两者之间的OSPF设备只是起到一个转发报文的作用。由于OSPF协议报文的目的地址不是这些设备,所以这些报文对于两者而言是透明的,只是当作普通的IP报文来转发。
3、规划建议
虚连接相当于在两个ABR之间形成了一个点到点的连接,因此,虚连接的两端和物理接口一样可以配置接口的各参数,如发送Hello报文间隔等。配置虚链接的时候需要注意如下两点:
l  虚连接必须在两端同时配置方可生效。
l  为虚连接两端提供一条非骨干区域内部路由的区域称为传输区域(Transit Area)。
可以看到,虚链接的存在增加了网络的复杂程度,而且使故障的排除更加困难。因此,在网络规划中应该尽量避免使用虚链接,设计者应该仅仅把它用来作为修复无法避免的网络拓扑问题的一种临时手段。虚链路可以看作是一个标明网络的某个部分是否需要重新规划设计的标志。

“如何?你还有什么可担心的么?”欧少边说着边往帐外走去。
华少听完他所说的,又看了沙盘半晌,直到发现再无边边角角有问题的地方,便默然点头。但是他心中的那一丝不妥却仍未有何消减,却也只能跟着走出帐外。
三军将士,尽皆肃立。
“Y网点大战几近一年,我们在这耗的太久了,也知道诸位将士耗不起了。”欧少顿了一顿又对三军将士道,“而今终得破敌连环阵,诸位,成败在此一举!DR!ABR!ASBR!”
“末将在!”
“得我烽火敕令,率军攻敌!”
“是!”

但见得风云色变,尚不知鹿死谁手。
大战,一触即发。



举报本楼

军衔等级:

  中士

注册:2010-7-295
发表于 2015-8-14 20:44:42 |显示全部楼层

【华为原创连载】问鼎OSPF(5)-内外疾行烽火令,锦绣山河尽囊中

上一期我们讲到网络中Y网点大战一触即发,此战将是决定中原鹿死谁手的关键一战,夜幕已经降临,军中将士仍然在来回穿梭为即将来临的大战做最后的准备。

营帐中华少和欧少正在对照作战沙盘争论本次作战的战略战术。“华少,在你看来Y网点这一站我军的主要软肋在哪里?”欧少面色凝重的问。华少似乎早已考虑过这个问题,不慌不忙的说到,在我看来,本次作战十分关键,这一战将决定我们是否能够称霸中原,将决定我们能否把锦绣山河尽收囊中,将士们行军打仗这么些年建功立业、改换门庭的机会就在这一战。就实说,我军数量上占优势,地势上也占上风,然而最大的软肋却是本次作战是多战区、多方阵联军作战,战胜的关键在于是否能够协调各方作战的步调,说白了就是怎么解决多个战区之间互相通报作战方略的问题。欧少,你师出名门,看你是否有比较高明的战略?

OSPF对于华少的分析还是非常认同的,他觉得华少点点数语却道出了此次作战的关键所在。欧少转身对华少道,昨夜月明星稀,我卧在榻上想起了老师教给我的七色烽火阵法,运行此阵法时军中无将帅,所有将士全部根据七种烽火令的指挥协同作战。这样,多战区、多方阵作战的情况下战力上和作战速度上将会有极大的提升,如果全军将士熟练掌握这七种烽火令,可保此战八成以上胜算。
华少听了欧少的叙说顿时精神大振“快快详细拆解,说与我和各位将领听听”
OSPF所说的七色烽火阵法即是指的不同类型的LSA前面曾经提到OSPF划区而治,每个区都维护自己独立的LSDB,网络中的路由设备也会被定义为不同的角色。而必然OSPF最核心的LSA也要根据路由设备的类型被分门别类。下面我们来逐个介绍一下这七种烽火令的使用方法,也请华少告诫军中所有将士,务必熟练掌握七种烽火令含义及使用方法。
图1 划分区域的OSPF网络

如图1是一个被划分区域的OSPF网络:
l  所有设备配置的接口IP地址及Rouer ID如图所示;
l  R4上配置静态路由,在R4上将这个静态路由import进OSPF进程。
我们看下R2设备上的LSDB信息,如图2所示。
图2 R2设备上的LSDB信息

其中Tpye就是指LSA的类型,在R2的LSDB信息中有:Router LSA、Network LSA、Sum-Net LSA、Sum-Asbr LSA以及External LSA。这已经占据了7种主要的LSA类型中的5种,下面我们将详细介绍。

一、赤色烽火令Type1:Router-LSA
Router-LSA是一种最基本的LSA,即Type 1 LSA,中文名路由器LSA。
OSPF网络里的每一台路由设备都会发布Type 1 LSA。这种类型的LSA主要的目的是做自我介绍,告诉同区域其他路由设备它在此区域中所有的链路状态以及开销。以R2为例,如图3,R2在Area0、Area1会分别发布Router-LSA。
将运行OSPF的网络比作为一个部落,部落划分了很多区域比作村子。那Type 1 LSA就是村子里村民做的自我介绍,这个信息只在这个村子传播,每个村民都了解该村其他村民的信息。
图3 Type 1 Router-LSA

我们来详细看一下Router LSA中包含的信息。如图4,这是通过抓包软件看到的R2在GE0/0/1接口上泛洪的一条LSA。
图4 Router-LSA信息

LSA报文主要分LSA头部和LSA信息字段。所有类型的LSA报文,其LSA头部包含的字段都是一样的,唯一不同的是Link state ID字段含义。在LSA头部中,我们主要关心以下三个字段:
l  Link-State Advertisement Type:LSA类型
l  Link state ID:链路状态ID。在Router-LSA中代表始发该LSA的设备的Router ID,这里即是R2自己的Router ID。
l  Advertising Router:通告路由器

Router-LSA的信息字段有三个,用于将自己连接的所有链路的状况以及开销告诉该LSA泛洪区域的其他路由设备。
该LSA描述的信息就是链路类型为一个传送网络(Transit),DR接口的IP地址为192.168.23.2(ID),和网络相连的通告路由器接口的IP地址是192.138.23.1(Data),到达该网络的花费值是1(Metric)。
(路由设备就是根据这些链路状态的描述从而生成拓扑)。
其中,Link Type有4种类型,并且ID和Data的值会根据Link Type而有不同:
l  1-P2P(点对点):此时Link ID表示邻居路由设备的Router ID,Data表示和网络相连的通告路由器接口的IP地址。
l  2-Transit(传送网络):此时Link ID表示DR接口的IP地址,Data表示和网络相连的通告路由器接口的IP地址。
l  3-Stub(末梢网络):此时Link ID表示IP网络或子网地址,Data表示网络的IP地址或子网掩码。
l  4-Virtual Link(虚链路):此时Link ID表示邻居路由设备的Router ID,Data表示通告路由器接口的MIB-II ifIndex值。

我们可以直接通过命令行查看R2上LSDB中所有的Router-LSA,如图5所示。
图5 R2上LSDB中所有的Router-LSA

根据图中对Area0的详细描述, Area1中的LSA又分别是什么含义呢?
Area1中有两条Router LSA:一条通告路由器是R2,并告知本区域其他路由设备与该区域相连的接口的IP地址为192.168.12.2;另一条通告路由器是R1,告知本区域其他路由设备与该区域相连的接口的IP地址为192.168.12.1。在同一区域中的路由设备,都会收到该区域路由设备发出的自我介绍。

二、橙色烽火令Type2Network-LSA
R2的LSDB中第二种LSA类型是Network-LSA也就是Type2 LSA,中文名网络LSA。
如图6所示,Network-LSA由DR发布,描述本网段的链路状态,也是在所属的区域内传播。
假设DR是一个村子的村长,负责描述与之交互的所有村民的信息。并将这些信息在整个村子里传播。
图6  Type2 Network-LSA

我们来详细看一下Network LSA中包含的信息,如图7。
图7 Network LSA信息

前面说过,LSA头部的字段都是一样的,只是Link state ID字段的含义不同。在Network-LSA中,Link-State ID字段的含义是DR接口上的IP地址。
在Network LSA中列出了所有与DR形成完全邻接关系的路由设备Router ID,有没有觉得一张以DR为中心的拓扑已经了然于心 !

下面我们来看看R2上LSDB中所有的Network--LSA。(在这之前,各位可以先想象一下,R2上应该有几条Network-LSA呢?)
图8 R2上LSDB中所有的Network—LSA

通过Type 1 Router LSA和Type2 Network-LSA在区域内洪泛,使区域内每个路由设备的LSDB达到同步,这就解决了区域内部的通信问题。那区域之间的通信怎么解决呢?

三、黄色烽火令Type3Network-Summary- LSA
接下来我们来看看黄色烽火令,即Network-summary-LSA,也叫Type3 LSA,中文名网络汇总LSA
Network-summary-LSA由区域边界路由器ABR发布,用来描述区域间的路由信息,ABR将Network-summary-LSA发布到一个区域,通告该区域到其他区域的目的地址。实际上就是将区域内部的Type1 Type2的信息收集起来以路由子网的形式扩散出去,这就是Summay的含义,如图9所示,R2作为ABR,将Area0和Area1中的路由信息分别发布对方区域。

ABR相当于通信联络员,负责村子与村子之间的通信。ABR将一个村子的Type1 Type2的信息进行汇总形成路由信息传递到另外一个村子,另外一个村子同样将该村Type1 Type2的信息进行汇总形成路由信息传递到这个村子。
图9 Type3 Network-summary-LSA

我们先看看Network-summary-LSA中包含的信息。如图10,这是在R2的GE0/0/1上发布的一条Network-summary-LSA。
图10 Network-summary-LSA信息

在Network-summary-LSA中,Link-State ID字段代表该LSA所描述的网络的网络地址。从LSA的信息中可以看出,该LSA由R2发布(10.2.2.2),可以到达192.168.12.0,掩码为255.255.255.0的网络;
代价为1。
由此可以看出,R2将Area1中的网络地址在Area0中发布,从而可以让Area0中的路由设备知晓去该网络的路径,实现区域间的通信。我们再通过命令来看看R2上LSDB中所有的Network-summary-LSA。
图11。
图11 R2上LSDB中所有的Network-summary-LSA

由图11可以看到,R2的LSDB中,Area0包含了到达192.168.34.0以及192.168.12.0的网络,Area1包含了到达192.168.23.0及192.168.34.0的网络。
不知大家是否注意到了,Area0和Area1中,同样是到达192.168.34.0的网络,但通告路由器却是不同的,这是什么原因呢?原来如果ABR收到来自同区域其它ABR传来的Type 3 LSA后,会重新生成新的Type3 LSA(Advertising Router改为自己),然后继续在整个OSPF系统内扩散。

江湖小贴士:如果—台ABR在与它本身相连的区域内有多条路由可以到达目的地,那么它将只会始发单一的一条网络汇总LSA到骨干区域,而且这条网络汇总LSA是上述多条路由中代价最低的。

四、绿色烽火令Type4ASBR-Summary-LSA
R2 LSDB中还有一种叫ASBR-summary-LSA,也叫Type4 LSA,中文名为ASBR汇总LSA
如图12所示,该类型LSA也是由ABR发布,描述到ASBR的路由信息,并通告给除ASBR所在区域的其他相关区域。

ASBR也是通信联络员,与ABR不同的是,ASBR是部落间的通信员,负责部落间的通信。一个部落所有村子里的村民如果想要和其他部落通信,必须经过ASBR。ASBR-summary-LSA的作用就是告诉非ASBR所在村的其他村的村民,ASBR在哪,怎么才能去ASBR。
图12 Type4 ASBR-summary-LSA

图13是R3往R2发布的一条ASBR-summary-LSA,此处的Link State ID表示该LSA所描述的ASBR的Router ID(10.4.4.4),即R4,发布该LSA的路由设备是R3(10.3.3.3),R3到达R4的代价是1。
图13 ASBR-summary-LSA信息

我们可以看下R2上LSDB中的ASBR-summary-LSA信息,如图14所示。
图14 R2上LSDB中的ASBR-summary-LSA

五、青色烽火令Type5AS-external-LSA
在R2的LSDB中,还有最后一种LSA—External,即AS-external-LSA,也叫Type5 LSA,中文名为AS外部LSA顾名思义,此种LSA是描述到AS外部的路由,由自治系统边界路由器ASBR发布,在整个AS中泛洪(除了STUB区域和NSSA区域,后面章节会详细介绍到)。如图15,R4作为ASBR发布了一条OSPF AS到外部目的网络的路由信息。
这种很容易理解了,就是部落内任意一个村民到该部落外部的路由。由部落间通信联络员ASBR发布。
图15 Type5 AS-external-LSA

看下AS-external-LSA中包含的信息,如图16所示。
图16 AS-external-LSA信息

在AS-external-LSA中,Link State ID代表外部网络目的IP地址,转发地址是指到达该外部网络的数据包应该被转发到的地址。此处的转发地址为0.0.0.0,意思是数据包将被转发到始发ASBR上。
如图17是R2上LSDB中的AS-external-LSA信息。
图17 R2上LSDB中的AS-external-LSA

六、紫色烽火令Type7NSSA-LSA
目前为止,我们一共讲解了5类LSA,分别是Router-LSA、Network-LSA、Network-summary-LSA、ASBR-summary-LSA、AS-external-LSA。还有一种比较特殊的LSA, Type7 NSSA LSA,接下来我们就一起看下。

我们将文中开头的组网图,Area2配置为NSSA区域。看下R4的LSDB,如图18,该LSDB中包含了两条NSSA LSA,其中一条就是ASBR始发的。
江湖小贴士:不知道大家是否还记得,我们在第四篇时介绍过几种特殊区域。NSSA区域允许本区域ASBR引入的外部路由在该区域内传播,但不允许其他区域引入的外部路由在本区域内传播。
图18 配置NSSA区域后R4的LSDB

图19是R4 GE0/0/0接口上始发的NSSA LSA。NSSA LSA所有的字段与AS-external-LSA字段均相同。
图19 NSSA LSA
但他们泛洪的区域不同,AS-external-LSA是在整个AS泛洪,而NSSA LSA仅仅是在NSSA区域中泛洪。
如图20,从R3的LSDB中可以看出,NSSA LSA只存在于Area 2(NSSA区域)中。
图20 配置NSSA区域后R3的LSDB

在图18 R4的LSDB中,还有一条NSSA LSA(LinkState ID:0.0.0.0),这是在ABR(R3)上会自动产生缺省的Type7 LSA到NSSA区域,关于OSPF中的缺省路由后续会详细讲解。
NSSA区域允许引入外部路由,但外部路由信息的NSSA LSA只能在本区域泛洪,那外部路由如何能传递给整个自治域呢?
大家可以看下R3的LSDB即图20,在“AS External Database”中,有一条Tpye5的AS-external-LSA,目标网络是10.44.44.44,通告路由器是R3,这是因为Type7 LSA在ABR(R3)上转换成Type5 LSA,并且泛洪到骨干区直至整个自治域中。这样就将外部路由引入到了除NSSA区域的其他区域。
为了证实这一点,我们再看下R1上的LSDB,如图21所示。
图21 配置NSSA区域后R1的LSDB

R1上同样有一条Type5的LSA,目标网络是10.44.44.44,通告路由器是R3。
欧少似乎有种如释重负的感觉道,我要说的七色烽火阵法就是这样一个运行机制,众将士都听明白了吗?华少第一个急切的问:“你命名说的是七色烽火阵法,这才说了6种烽火令嘛,缺了一种蓝色烽火令Tpye6嘛”。此战至关重要,欧少你可勿要马虎大意啊。

欧少缓缓道:华少莫要着急,我在山中听老师讲解时确实是七色烽火阵法,只不过这蓝色烽火令Tpye6老师也没给我看过。老师只说这蓝色烽火令Tpye6 LSA为group-membership-LSA,是在MOSPF中用于标识组播组成员用的,用户组播路由。可惜MOSPF基本被淘汰。哎。。。另外,还有Type9/Type10/Type11,提供用于OSPF的扩展的通用机制,此处就不介绍了。

听完欧少的讲解,华少及众将士有种豁然开朗的感觉,特别是华少,对此次作战的信心大增,大有跃跃欲试的冲动。众将士也是你一言我一语开始躁动起来。
欧少见状说:众将士莫要躁动,我这里有几张张老师赠予我的铭牌,上面详细罗列了这七色烽火阵法的使用方法,众将士请各领一个回去带全军兄弟们操练该阵法的使用方法,此战胜负在此一举了,欧少深深一躬到底,拜托各位将士了。……
七、无声奇战旷古未闻,锦绣山河尽收囊中
寥寥数日,大战果然开打,然而这确实异常旷古未闻的奇战、恶战。大战开始却听不到任何鸣金声、没有任何杀喊声,军中仿佛没有了将帅一般,唯见朦胧月下七色烽火此起彼伏,而将士们却像入了魔一样听从这七色烽火的指挥打仗。对方军中将士直感叹这打法真是奇特、真是从未见过。将士们跟随七色烽火令的指挥神出鬼没一般冲入敌军营地,及至东方发白,战事逐渐结束。

华少兴奋撤回将士们,兴冲冲的来到帐中,欧少,你这阵法真是奇特,运筹帷幄之中却决胜千里之外,我们几大战区联军作战全都大获全胜,此次作战中原各地全数拿下,我们扫平四海,称霸中原的日子快到了!



举报本楼

军衔等级:

  中士

注册:2010-7-295
发表于 2015-8-14 20:53:02 |显示全部楼层
谢谢各位关注。

举报本楼

军衔等级:

  中士

注册:2010-7-295
发表于 2015-8-15 17:46:13 |显示全部楼层

举报本楼

军衔等级:

  新兵

注册:2015-8-17
发表于 2015-8-17 10:04:37 |显示全部楼层
高人,怒顶

举报本楼

军衔等级:

  中士

注册:2010-7-295
发表于 2015-8-30 21:30:20 |显示全部楼层

【华为原创连载】问鼎OSPF(6)-因地巧施张良计,宏图霸业指日统

寒星似铁,如钩月,几度离人肠。
醉卧沙场,红尘叹,何苦问苍茫。
和歌剑舞,自嘲弄,凭添一惆怅。
但却为何,忘忧梦,总拂过绿裳。
俊俊的人儿准是梦到了什么好事,平日那脸上的一丝沧桑,那眉间的一抹忧愁都化开了。
真好看。
“阿兰,再瞧你就要成一朵花了。”突然从背后冒出来一句话,吓了阿兰一跳。待她看清来人是谁,正待臭骂那白衣无赖,那个华阿哥叫他做欧少的人一顿,那人却做了一个噤声的手势,然后正色道:“阿兰,和你阿爹谈的如何了,边疆地域特殊,我们不能像一般的中原地域去征讨这里。而你们世世代代居于此,我们亦不希望打破此间平和。”
“说了,我阿爹是个明事理的人,他知道什么对族人好,什么对族人不好,只不过多了个封号,却还是我们自己管自己。”阿兰说道,“现如今他正在联络其他几个部族的人,这需要些时日。”
“哦…..那就好。”欧少长吁了一口气,由我所定的四个特殊区域,分封这四族为镇守,应无后顾之忧了。他看了看远处的华少,又对阿兰认真的道:“阿兰,其实你的华阿哥已经有喜欢的人了,你知道么?”
“知道……”阿兰咬了咬嘴唇,像他这样的人,除了喜欢的人,能有什么让他化不开忧愁的呢?“但我不在乎,我只做华阿哥的一个小阿妹就好。”
欧少正待再劝她,但见她神色郁郁,却又有点不忍。
静立半晌,欧少转身欲走。突地又想起了一件事,回头对她说:“哦,对了,刚你瞧的像个痴人花。”
“痴人花?痴人….花?吃人花?!回来!你给我回来!”待得反应过来,哪里还有白衣飘飘的影子,她却也只得恨恨的跺了跺脚……
因地巧设特殊区域,引四族襄助大业
在上一期问鼎OSPF中,我们介绍了OSPF的各种类型的LSA,OSPF网络依靠各种不同类型的LSA完成LSDB的同步,从而计算出整个网络的拓扑结构。然而,对于OSPF区域,并不每种LSA都是必须有的,有些比较特殊的区域需要有一些特殊的手段进行管理,本期我们详细介绍一下OSPF的特殊区域,以及不同特殊区域里LSA的管理规则,也就是华少与小阿妹商讨的四族自治四个特殊区域的事。
1      OSPF为什么需要划分特殊区域1.1      OSPFStub区域和Totally Stub区域的由来
图1 OSPF的Stub区域和Totally Stub区域
我们来看一下图1所示的网络,OSPF划分了Area 0和Area 2,同时在Area 0内有的ASBR引入了外部路由。通常,为了保证网络的路由可达性,可能把网络的各个角落的路由全都发布进了OSPF,此时虽然各路由设备都能够到达网络的各个角落了,但是如果网络越来越大,设备越来越多,那么每台设备的路由表项就会越来越大,而维护一个大规模的路由表项是需要消耗很多CPU及内存资源的。特别是对于一些边缘区域,设备性能可能比较低,如果也需要维护这么大规模的路由表项的话可能是一种巨大的压力。
从网络优化的角度考虑,我们通常在保证网络可达性的同时尽量减小路由表项的规模,尽量减少网络中LSA报文的泛洪。对于图1所示的网络,Area 2如果作为一个常规区域,那么可能存在Type1、Type2、Type3、Type4、Type5共计5中类型的LSA,但是实际上Area 2中的设备真的需要这么多种类型的LSA吗?对于Area 2中的路由器,无论他们想到达的域外的哪个网络,都必须首先到达到ABR路由器,也就是说这个时候Area 2中的路由器并不需要了解外部网络的细节,它仅需要通过ABR路由器到达外面的世界就可以了。这种情况下,就产生了OSPF的第一种类型的特殊区域——Stub区域。 配置Stub之后,自治系统外部的路由就不会在本区域内传播了,这样就减少了Area 2中LSA数量。
细心的读者可能会问一个问题,如果Area 2中的路由器想进一步减少自己的路由表项的规模呢?仔细分析一下可以看出,对于Area 2中的路由器来说,其实区域间的明细路由它也没必要都了解,仅保留一个出口让Area 2中的路由器的数据包能够出去就足够了。这就产生了OSPF的第二种类型的特殊区域——Totally Stub区域,也叫完全Stub区域。配置了Totally Stub区域以后,既不允许自治系统外部的路由在区域内传播,也不允许区域间路由在区域内传播。这样就能达到进一步减少区域内LSA数量的目的。
1.2      OSPFNSSA区域和Totally NSSA区域的由来
002.PNG
图2 OSPF的NSSA区域和Totally NSSA区域
如图2所示,假设Area2原来作为一个Stub区域运行,但是某一天有个外部网络需要通过Area2接入到这个OSPF网络。也就是需要将自治域外部路由引入并传播到整个OSPF自治域中,此时可以在RTA上将外部路由注入到OSPF域,但是这种配置将使RTA成为ASBR,因此,Area2也就不是Stub区域了。 针对这种场景,OSPF定义了NSSA区域(Not-So-Stubby-Area NSSA) ,为了容易记忆,大家可以把它叫做“不那么Stub区域”,意思是在Stub区域的基础上做了一定的变通(允许引入外部路由了),所以就变得“不那么Stub”了。类似的,如果想进一步减少LSA数量,可以配置成Totally NSSA区域。
2      OSPF特殊区域详解
上一小节我们介绍了OSPF的四种特殊区域的产生背景,但是各位读者是否还是对OSPF特殊区域有点云山雾绕的感觉?没关系,接下来我们结合一个实验,来详细介绍一下OSPF的4种特殊区域的LSA及路由管理规则,同时介绍一下不同区域的缺省路由产生规则。
图3 OSPF特殊区实验网络拓扑
组网如图3 所示:
l  所有设备都配置LoopBack0,地址如图3所示,该地址不在OSPF内发布,只作为OSPF Router ID使用;
l  R4上配置LoopBack1接口地址作为测试网段,在R4上将这个直连路由import进OSPF进程,通过路由策略控制只引入这一条直连路由。

2.1      标准区域
按照上述拓扑,完成关键配置,此时没有划分特殊区域,Area1和Area2都是标准区域,我们看一下标准区域的路由及LSA管理规则。以R1为例,路由表及LSDB如下:
图4 Area1为标准区域的时候R1的IP路由表
从图4可以看到,此时R1的路由表中有OSPF区域间路由,并且有一条自治系统外部路由10.44.44.44/32。
图5 Area1为标准区域的时候R1的LSDB
可以看到,此时R1的LSDB里面有Type1、Type2、Type3、Type4、Type5类LSA。
下面根据上述实验详细讲解一下不同特殊区域的缺省路由发布原则。
2.2      Stub区域
图6 Stub区域的LSA管理规则
Stub区域不允许自治系统外部的路由(Type5 LSA)在区域内传播,也不允许到达ASBR的Type4 LSA在区域内传播。因此这些区域中路由设备的路由表规模以及路由信息传递的数量都会大大减少。这样一来Stub区域内的路由器除了ABR外没有自治系统外部路由,如果它们想到自治系统外部时该怎么办呢?为保证到自治系统外的路由依旧可达,Stub区域的ABR将生成一条缺省路由,并发布给Stub区域中的其他非ABR路由器。
一般情况下,Stub区域位于自治系统的边界,是只有一个ABR的非骨干区域。配置Stub区域的时候需要注意:
l  骨干区域不能配置成Stub区域。
l  Stub区域内不能存在ASBR,因此自治系统外部的路由不能在本区域内传播。
l  虚连接不能穿过Stub区域。
下面我们来通过实验验证一下。配置Area1为Stub区域,需要做一些配置更改,具体如下:


实验效果:
图7 Area1为Stub区域的时候R1的IP路由表
通过图4和图7的对比可以看到,配置Area1为Stub区域以后,R1上自治系统外部路由消失了,取而代之的是一条ABR(R2)自动下发的缺省路由,是Type3 LSA描述的。
图8 Area1为Stub区域的时候R1依靠缺省路由的指引到达AS外部
如图8所示,此时R1上虽然没有了到达10.44.44.44/32的明细路由,但是依然能ping通10.44.44.44/32这个地址,这是因为此时有一条ABR自动下发的缺省路由,这条缺省路由能够指引R1的数据流到达自治系统外部。
图9 Area1为Stub区域的时候R1的LSDB
可以看到,此时Type5 LSA(External)、Type4 LSA(Sum-Asbr)已经消失,取而代之的是一条ABR(R2)自动下发的缺省路由Type3 LSA。此时R1上仅有Type1、Type2、Type3以及Type3缺省路由这几种LSA。
2.3      Totally Stub区域
图10 Totally Stub区域的LSA管理规则
Stub区域能够起到减少区域内路由表项规模的作用,但是这似乎还不够彻底,实际上也可以不关心区域间的路由细节,而仅预留一个到达其他区域的出口即可。这种情况下可以将这个区域配置成Totally Stub区域。
Totally Stub区域既不允许自治系统外部的路由在区域内传播,也不允许区域间路由在区域内传播。区域内的路由设备必须通过ABR学到自治系统外部和其他区域的路由。实现方法是配置Totally Stub区域后,ABR会自动产生一条缺省的Summary LSA(Type3 LSA)通告到整个Totally Stub区域内。这样,自治系统外部的路由和其他区域间的路由都可以通过ABR到达。
现在将Area1配置为Totally Stub区域。将配置修改为如下:


实验效果:
图11 Area1为完全Stub区域的时候R1的IP路由表
通过图7和图11的对比可以看到,Area1为完全Stub区域的时候R1上外部路由和区域间路由消失了,取而代之的是一条ABR(R2)自动下发的缺省路由,是Type3 LSA描述的。
图12 Area1为完全Stub区域的时候R1依靠缺省路由的指引到达AS外部
此时R1上虽然没有了自治系统外部路由,也没有了区域间的路由,但是ABR会自动下发一条缺省路由,用于指引R1的数据流到区域外部或者自治系统外部,所以此时R1仍然能够ping通10.44.44.44这个地址,R1仍然能够全网可达。
图13 Area1为完全Stub区域的时候R1的LSDB
可以看到,此时R1的LSDB里面Type5 LSA(External)、Type4 LSA(Sum-Asbr)、以及描述区域间路由的Type3 LSA都已经消失,取而代之的是一条ABR(R2)自动下发的缺省路由Type3 LSA。
2.4      NSSA区域
图14 NSSA区域的LSA管理规则
NSSA区域允许引入少量通过本区域的ASBR到达的外部路由,但不允许其他区域的外部路由ASE LSA(Type5 LSA)在区域内传播。ABR自动产生一条缺省的NSSA LSA(Type7 LSA),通告到整个NSSA区域内。这样,除了某少部分路由通过NSSA的ASBR到达,其它路由都可以通过NSSA的ABR到达。在ASBR上手动通过命令进行配置,使ASBR产生一条缺省的NSSA LSA(Type7 LSA),通告到整个NSSA区域内。这样,外部路由也可以通过本区域NSSA的ASBR到达。Type7 LSA缺省路由不会在ABR上转换成Type5 LSA缺省路由泛洪到整个OSPF域。
现在将Area2区配置成NSSA区域。将配置修改为如下:


实验效果:
图15 Area2为NSSA区域的时候R3的IP路由表
从图15中可以看到,此时R3的路由表中学习到了一条10.44.44.44/32的自治系统外部路由,这条路由被标记为O_NSSA类型,表示这条路由是由Type7 LSA计算出来的。
图16 Area2为NSSA区域的时候R4的IP路由表
从图16中可以看到,R4上有一条缺省路由并且协议类型为O_NSSA,表示是由Type7 LSA描述的,这条缺省路由是由ABR(R3)自动产生的。
图17 Area2为NSSA区域的时候R4的LSDB
从图17中可以看到,此时R4的LSDB里面存在Type1 LSA,Type2 LSA,Type3 LSA,Type7 LSA,同时R4的LSDB里面存在一条由R3产生的Type7 LSA,描述了一条缺省路由。
对于NSSA区域的ASBR(R4),手动通过命令进行配置,也可以使ASBR也产生一条缺省的NSSA LSA(Type7 LSA)。注意在ASBR上只有当路由表中存在缺省路由0.0.0.0/0,才会产生Type7 LSA缺省路由。
R4的配置修改如下:
#
acl number 2000
rule 5 permit source 10.44.44.44 0
#
ospf 1 router-id 10.4.4.4
import-route direct route-policy RP
area 0.0.0.2
  network 192.168.34.0 0.0.0.255
nssa default-route-advertise
#
route-policy RP permit node 10
if-match acl 2000
#
ip route-static 0.0.0.0 0.0.0.0 NULL0  
//必须路由表中存在缺省路由0.0.0.0/0,才会产生Type7 LSA缺省路由
#
实验效果:
图18 R4作为NSSA区域的ASBR通过nssa default-route-advertise下发缺省路由
可以看到,此时R4的LSDB里面存在两条描述缺省路由的Type7 LSA,一条是ABR(R3)自动产生的,另外一条是NSSA区域的ASBR(R4)手动配置nssa default-route-advertise命令以后产生的。
我们再来看一下此时R2的路由表项及LSDB信息:
图19 Area2为NSSA区域的时候R2的IP路由表
图20 Area2为NSSA区域的时候R2的LSDB
可以看到10.44.44.44/32这条路由在Area0区域被标记为O_ASE路由,表示这条路由在NSSA区域的ABR(R3)进行了Type7 LSA转换成Type5 LSA;但是R2上并没有学习到O_ASE缺省路由,也没有描述缺省路由的LSA,所以Type7 LSA缺省路由不会在ABR上转换成Type5 LSA缺省路由泛洪到整个OSPF域,只会在NSSA区域内部泛洪。
2.5      Totally NSSA区域
图21 Totally NSSA区域的LSA管理规则
Totally NSSA区域既不允许其他区域的外部路由ASE LSA(Type5 LSA)在区域内传播,也不允许区域间路由(Type3 LSA)在区域内传播。区域内的路由器必须通过ABR学到其他区域的路由。实现方法是配置Totally NSSA区域后,ABR会自动产生缺省的Type3 LSA和Type7 LSA通告到整个Totally NSSA区域内。这样,自治系统外部路由和区域间路由都可以通过ABR到达。
现在将Area2区域配置成Totally NSSA区域。将配置修改为如下:

实验效果:
图22 Area2为Totally NSSA区域的时候R4的IP路由表
图23 Area2为Totally NSSA区域的时候R4的LSDB
可以看出,R4上存在一条由Type3 LSA描述的缺省路由,但是R4的LSDB里面存在两条描述缺省路由的LSA,都是ABR(R3)产生的,一条是Type3 LSA,一条是Type7 LSA。
3      OSPF各种特殊区域允许出现的LSA总结
OSPF各种特殊区域允许出现的LSA总结如下表所示

征蛮荒终得大统,出塞外恐再遇佳人
蛮荒殿,朝圣台。
英武小将和清秀小生端站台前,下边立着一众衣饰各异的人。
欧少朝这些不同着装的人躬身一拜,华少亦随之,然后朗声道:“自立少帅军伊始,与华少帅中原逐鹿已三年有余,一路势如破竹,秀美山河尽收囊中。然国无百族不荣,四方内外皆我**上国子民。今幸诸族入我治下,收我万里边疆得大统!”
四族振奋,礼乐齐名。
“愿入左右少帅治下。”四族族长单膝跪地,右臂横于胸前。
“今封东夷族长为Stub区域边陲大将!”
“今封南蛮族长为Totally Stub区域边陲大将!”
“今封西戎族长为NSSA区域边陲大将!”
“今封北青丘族长为Totally NSSA区域边陲大将!”
“慢!”待得听封这最后一位族长时,欧少却被这位族长给打断了话,“呵呵呵呵,左少帅果真是一个英俊倜傥的人儿。此番来,我并不是来受封的,我是想你去见一个人。”
欧少细细打量了一下这个族长,但见她轻纱抚面,碧眼琼鼻,却怎么这么熟悉?
“人?要见得什么样的一个人?”
“呵呵呵呵,去塞外你就知道了,那个让你朝思暮想的人……”说完,她已飞出殿外,踪影难寻。
朝思暮想?
难道是她?

举报本楼

军衔等级:

  中士

注册:2010-7-295
发表于 2015-8-30 21:39:10 |显示全部楼层

【华为原创连载】问鼎OSPF(7)-联手VPN智破环,塞外扬威俱相荣

少年英俊潇洒,仗剑天涯,
结豪侠逍遥江湖,朝生暮醉。
又谁忆起,寒楼高阁红影,夜夜垂泪?
弹指红颜老,郎君可期?
转瞬已白首,伊人何在?
一世风光荣华,到头来,却羡鸳鸯,不羡仙。
富丽堂皇逍遥宫,佳肴琼浆美人伴,左右少帅掉进了红粉窟。
那一日,他们一路追随青丘族长,到了边疆塞外,便被一群人请到了这里。
想那时候那个人见到生人都会羞的躲在师父的背后,现如今却变成这样了么?
舞娘慢慢从大殿中央退下,施施然的从偏殿走出了一众人,中间簇拥着一个面蒙轻纱,美眸慑人心魄,身披华贵貂绒外衣,姿段曼妙的佳人。
“是你?!”欧少诧异不已。
“呵呵,可不是我么?当日路由圣山一别,今日再见,我当称呼你是大战RIP的白衣少年,OSPF,还是图得万里江山的左少帅,欧少帅呢?”佳人声若魔音,柔媚不已。
“当日,便知姑娘必是位贵人,原来不知竟是这样的人物,”欧少恢复以往的泰然自若,“啊不,称呼统管四方私网通信的VPN为姑娘,真是大不敬,还望宫主赎罪。”
“呵呵,真是一如既往的伶牙俐齿。免你大不敬之罪,而且,”VPN那双美眸还挑衅似地像他眨了眨,“不许你叫我宫主,叫我V姑娘。”
“呃,那么……V姑娘,”欧少还了身旁仍在云里雾里的华少一个歉意的眼神,然后道“你叫你的族人找我所为何事呢?”
“愿与我联手么?不过VPN网络可不是那么简单的哦。”
欧少早已了然于胸,遂笑道:“V姑娘可是担心OSPF应用于VPN场景下的环路问题?这我早已有计议。”
路由破环显神威
在上一期问鼎OSPF中,我们介绍了OSPF特殊区域的设立,以及这些特殊区域中可以使用的LSA。从前几期的介绍中,我们知道,OSPF拥有一个最为人津津乐道的能力,就是能够计算出无环的路由。不管是区域内的路由(Intra-Area Route)还是区域间(Inter-Area Route)路由,在OSPF设计之初就考虑到路由环路的问题,所以OSPF各种区域在处理Type1、Type2、Type3、Type4、Type5和Type7 LSA时,能够确保路由无环。
当然,在OSPF多实例场景中,也存在一套避免路由环路的方法,也就是OSPF所说的计议。介绍之前,我们先了解两个概念。
1      OSPF多实例1.1      多实例
BGP/MPLS IP VPN场景中PE和CE之间需要进行路由传递,就要得到各路由协议的支持。由于传统路由器只有一张路由表,为了不影响原来的路由信息,各路由协议必须扩展其功能才能在BGP/MPLS IP VPN场景中使用。
OSPF对其自身协议进行扩展,创立OSPF VPN多实例。支持在BGP/MPLS IP VPN场景的PE和CE之间运行,进行路由的学习和发布。在多实例场景中,路由器上会存在多个独立的路由表,之间的路由信息相互隔离。
1.2      Domain ID
我们知道,BGP/MPLS IP VPN本质是通过MPLS骨干网,将本端PE与CE之间的路由传递到对端PE。这个传递过程不再详细描述,有兴趣的小伙伴可以去搜索第一期华为悦读汇有关BGP/MPLS IP VPN的介绍。这里值得指出的是,PE之间是通过MP-BGP协议传递的路由信息。那这又跟我们这里OSPF多实例有什么关系呢?
从多实例的定义中,PE和CE之间运行路由协议,相互学习路由。其实这里可以使用的路由协议有很多,诸如静态路由、RIP、OSPF、BGP等协议。在OSPF多实例场景中,PE将OSPF路由引入BGP,从而传递到对端PE;当然,对端PE发过来的BGP路由,也会引入OSPF中。这样,在两端的PE设备上,分别存在一个OSPF区域,Domain ID则用于区分这两个区域是否属于同一个OSPF域。如果属于同一个OSPF域,PE则把BGP传来的远端路由通过Type3 OSPF路由发布给CE,否则发布Type5或Type7的OSPF路由。
这里插播一下: PE和CE之间运行路由协议虽然有很多,但是最常用的还是EGBP。那么为什么还要有OSPF VPN多实例呢?也许是因为其他路由协议都支持了,OSPF不能不支持的心理在作祟;也许是网络发展进程中,PE和CE已经习惯使用OSPF了吧。对这一点感兴趣的小伙伴不妨跟帖回复你认为的原因,可能有意想不到的惊喜哟!
2      巧破OSPF多实例路由环路
图1 OSPF多实例典型组网
上图是典型的OSPF多实例组网,从前面的原理我们知道,PE1通过BGP从PE2收到关于CE2的OSPF路由,将这些路由的产生者的地址修改成自己,然后发布相关的Type3、Type5或Type7的OSPF路由给CE1。CE1再向其他区域发布这些路由时,会将PE1作为ASBR,这样就能实现跨越MPLS骨干网的两个私网之间进行路由互通了。
2.1      遇到问题
路由协议最怕的就是产生路由环路。不过OSPF天赋异禀,为保证区域间传递的路由不会产生环路而制定了规则:
1.         所有的非0区域必须与骨干区域直接相连,区域间路由需经由骨干区域中转。
2.         使用SPF算法。
在实践中,OSPF的确达到了无环的目的。以至于一提到OSPF,就会提到OSPF能够计算出无环的路由。
但是,自从加入了OSPF多实例功能之后,由于BGP/MPLS IP VPN网络改变了原有的拓扑结构,使得第一条规则不再有效。而且在跨越了MPLS/IP骨干网之后一般都是Type3、Type5或Type7类型的OSPF路由,这三种LSA实际上在OSPF计算产生路由的时候和距离矢量算法很接近,在某些场景中很有可能产生路由环路。比如下图所示的场景:
图2 OSPF VPN路由环路
PE1上OSPF引入了目的地址为10.1.1.0/24的BGP路由,产生5类或7类LSA发布给CE1,CE1上学到一条目的地址为10.1.1.0/24,下一跳为PE1的OSPF路由,并发布给PE2,这样PE2上就学到一条目的地址为10.1.1.0/24,下一跳为CE1的OSPF路由。
同理,CE1上也会学到一条目的地址为10.1.1.0/24,下一跳为PE2的OSPF路由,PE1上学到一条目的地址为10.1.1.0/24,下一跳为CE1的OSPF路由。
此时,CE1上存在两条等价路由,分别指向PE1和PE2,而PE1和PE2上到10.1.1.0/24的下一跳也都指向CE1,环路就产生了。
2.2      巧计破环
既然产生了环路,总要有个破环方法。要知道,OSPF多实例场景中,PE将路由发送给CE时,使用的是Type3、Type5或Type7类型的OSPF路由。那我们就分别针对这三类路由指定破环之策。
2.2.1        破环良策之一——DN-bit
PE在生成Type3、Type5或Type7 LSA发布给CE时,都将DN位置位(值为1),其他类型LSA的DN位不置位(值为0)。
PE的OSPF多实例进程在进行计算时,忽略DN置位的LSA。这样就防止了PE又从CE学到发出的LSA而引起的环路。
2.2.2        破环良策之二——VPN Route Tag
VPN路由标记(VPN Route Tag),PE根据收到的BGP的私网路由产生的Type5或Type7类型LSA中必须包含这个参数。
当PE发现LSA的VPN路由标记(LSA的Tag值)和自己的一样,就会忽略这条LSA,因此避免了环路。
至此,CE双归属场景下的路由环路的问题消失的无影无踪。
3      破环虽好,偶有误伤
虽然OSPF多实例场景下路由破环获得奇效。不过,待看完下面这个案例,你又有什么样的想法呢?
3.1      案例
图3 MCE组网图
3.1.1        组网需求
如上图所示,某公司需要通过MPLS VPN实现总部和分支间的互通,同时需要通过VPN隔离多种不同的业务。为节省开支,希望分支通过一台MCE设备接入PE(此处仅以其中一个vpna为例说明问题)。
3.1.2        场景描述
1、PE1和PE2是MPLS VPN骨干网。CE1和MCE同属于vpna,通过骨干网进行私网互通。
2、PE1和CE1通过OSPF交互私网路由。
3、PE2和MCE通过OSPF多实例交互私网路由。
4、在PE的OSPF视图下引入BGP路由,发布PE的私网路由给CE或者MCE;在PE的BGP视图下引入该OSPF进程,发布私网路由信息给对端PE。
3.2      关键配置
PE1的关键配置:
#
ip vpn-instance vpna
ipv4-family
  route-distinguisher 100:1
  vpn-target 200:1 export-extcommunity
  vpn-target 200:1 import-extcommunity
#
interface GigabitEthernet0/0/1
ip binding vpn-instance vpna
ip address 10.1.1.2 255.255.255.0
#
bgp 100
peer 2.2.2.2 as-number 100
peer 2.2.2.2 connect-interface LoopBack1
#
ipv4-family vpnv4
  policy vpn-target
  peer 2.2.2.2 enable
#
ipv4-family vpn-instance vpna
  import-route ospf 100
#
ospf 1
area 0.0.0.0
  network 1.1.1.1 0.0.0.0
  network 172.1.1.0 0.0.0.255
#
ospf 100 vpn-instance vpna
import-route bgp
area 0.0.0.0
  network 10.1.1.0 0.0.0.255  
#

PE2的关键配置:
#
ip vpn-instance vpna
ipv4-family
  route-distinguisher 100:1
  vpn-target 200:1 export-extcommunity
  vpn-target 200:1 import-extcommunity
#
interface GigabitEthernet0/0/1
ip binding vpn-instance vpna
ip address 10.2.1.2 255.255.255.0
#
bgp 100
peer 1.1.1.1 as-number 100
peer 1.1.1.1 connect-interface LoopBack1
#
ipv4-family vpnv4
  policy vpn-target
  peer 1.1.1.1 enable
#
ipv4-family vpn-instance vpna
  import-route ospf 100
#
ospf 1
area 0.0.0.0
  network 2.2.2.2 0.0.0.0
  network 172.1.1.0 0.0.0.255
#
ospf 100 vpn-instance vpna
import-route bgp
area 0.0.0.0
  network 10.2.1.0 0.0.0.255
#

CE1的关键配置:
#
ospf 1
area 0.0.0.0
  network 10.1.1.0 0.0.0.255
#


MCE的关键配配置:
#
ip vpn-instance vpna
ipv4-family
  route-distinguisher 100:1
  vpn-target 200:1 export-extcommunity
  vpn-target 200:1 import-extcommunity
#
interface GigabitEthernet0/0/1
ip binding vpn-instance vpna
ip address 10.2.1.1 255.255.255.0
#
ospf 100 vpn-instance vpna
area 0.0.0.0
  network 10.2.1.0 0.0.0.255
#

2.1        故障现象
按照上述配置完成以后发现MCE侧学习不到对端的私网路由,但是存在OSPF的LSDB。
1、MCE侧的VPN实例里面学习不到CE侧的10.1.1.0/24网段的私网路由。
2、CE1上能正常学习到MCE侧10.2.1.0/24网段的私网路由。
3、MCE的OSPF LSDB信息中存在External类型的10.1.1.0网段路由。
3.3      根因分析
由于防环检测机制的存在,所以我们在PE经常会发现存在LSA但路由计算不出来。
特别是在PE和MCE对接的场景下,PE在生成Type3、Type5或Type7 LSA发布给MCE时,都将DN位置位(值为1),其他类型LSA的DN位不置位(值为0)。MCE的OSPF多实例进程在进行计算时,忽略DN置位的LSA。所以就会出现OSPF邻居状态是Full的,也存在LSDB,但是无法计算出路由的现象。
验证一下,检查MCE上这条LSA是否存在DN-Bit。
“E  DN”表示LSA带DN-Bit,正常时候显示“(DC)”。可以确认是由于OSPF的防环机制,导致这个LSA设置DN-Bit标志位,从而导致这条LSA不会参与到路由计算中,所以最终MCE侧学习不到CE侧的10.1.1.0网段的路由。
3.4      解决方法
由于MCE设备并不是PE设备,所以可以不检查DN-Bit而直接计算出所有OSPF路由。
在MCE的OSPF视图下输入vpn-instance-capability simple即可禁止路由环路检测。
上述命令配置完以后,查看MCE上,学习到了CE侧的10.1.1.0网段的路由了。
需要注意的是,这个命令只建议配置在MCE设备上,因为配置这个命令后OSPF将不再能够引入IBGP路由(import from IBGP)。
扬威塞外一白衣,昔日少年耀九天
信马由缰自驰骋,北野茫茫青草天。
“啊!!!!”停缰勒马,仰天长啸。
华少听了那一人的长啸,又似看到了这多年的颠沛流离,这多年的南征北战,这多年少帅军的窘境,都随着这一声长啸,这多年的沉郁都一扫而空。
“啊!!!!”他也跟着放空大啸。
两个疯疯癫癫的人,路过的人都这么认为。管这两个人干什么,新帝登基,去凑凑热闹去。
“发泄好了么,欧少?都等着你呢。”大啸过后,华少脸含笑意。
“这,华少,要不你来当这皇帝好不好,我怕我做不来。”平日风轻云淡的一个人,现在竟然打起了退堂鼓。
“哈哈哈哈,你这说的什么话?我管设备,你管路由,怎么能乱了套呢?你啊,就别矫情了,快些走吧。”
“那……走吧。”

北青丘,白岐宫外。
路由领域登新帝,四方群豪竞相来。
如果有人好奇为什么在这边疆塞外办这么隆重的事儿,那就去问问那柔音媚骨,神秘莫测的女宫主吧。
卯时三刻到,钟鼎齐和鸣。
新帝到。
白衣飘飘,风度翩翩,气象雍容万千。
过广场,平民尽皆跪拜。
上大殿,宾客离席站起。
路由各诸侯垂首微拜。新帝颔首,回礼。
当然,独独缺了RIP不在。
互联网其他众协议再拜首。新帝亦颔首,回礼。
少帅军右少帅拜首。新帝颔首,回礼。
啊,那个整天围着白袍小将的绿衣姑娘也在。
新帝上师微拜首,含笑不语。新帝颔首,回礼。
师父也来了?咦?他旁边的人?莫非是?!那么师妹也来了么?
礼毕。授册印。
老祖端站殿上,朗声宣读,新帝聆听:“阿帕自立三十载,路由各方展宏图。后有白衣一少年,群英会上破空出。先辅网管,助大业成。再联S,立少帅军,统万里江山。今修得正果,特封OSPF成帝,苍天鉴!”
新帝接册印,礼成。
“呵呵呵,也不算太晚,路由新帝登基,我这个宫主怎能不来拜贺呢?”摄人美眸藏轻纱,衣着锦缎尽奢华。
“新帝,你难道不好奇我长什么样子么?”宫主秋波若含春风,众人皆醉,“其实,这轻纱可以摘得。只不过,我曾许过诺,我这轻纱只为倾心之人而揭。你要我揭开吗?”
揭得?揭不得?新帝脑立两小人,来回厮杀,挣扎不已。
“哈哈哈,由不得你了,我看上的人儿,怎能逃出我的手掌心呢?”
轻纱缓缓揭起。
五殿琉璃尽失色,九天玄女妒红尘。

请持续关注问鼎OSPF系列技术贴


举报本楼

军衔等级:

  少将

注册:2006-2-1319
发表于 2015-8-31 10:42:27 |显示全部楼层
啥啥啥,混乱了

举报本楼

军衔等级:

  新兵

注册:2015-9-1
发表于 2015-9-1 16:43:57 |显示全部楼层
受益受益

举报本楼

军衔等级:

  新兵

注册:2015-9-1
发表于 2015-9-1 16:43:59 |显示全部楼层
受益受益

举报本楼

军衔等级:

  新兵

注册:2010-3-28
发表于 2015-9-4 07:57:17 |显示全部楼层
闷声啃贵司HCIE的童鞋表示给楼主跪了…教程神马的应该让LZ这样的人才编写啊。

点评

nanyou2009boy  谢谢您的关注,请持续关注后续OSPF系列技术贴。会有更多实战篇的OSPF技术贴哦  详情 回复 发表于 2015-9-5 14:28

举报本楼

军衔等级:

  中士

注册:2010-7-295
发表于 2015-9-5 14:28:52 |显示全部楼层
ShinyGold 发表于 2015-9-4 07:57
闷声啃贵司HCIE的童鞋表示给楼主跪了…教程神马的应该让LZ这样的人才编写啊。

谢谢您的关注,请持续关注后续OSPF系列技术贴。会有更多实战篇的OSPF技术贴哦

点评

ShinyGold  本人不才,2015年年末的时候,IE攻下来了。重读此帖,仍然回味无穷。  发表于 2016-2-5 22:08

举报本楼

军衔等级:

  中士

注册:2010-7-295
发表于 2015-9-20 08:54:40 |显示全部楼层
问鼎OSPF(8)-千古一帝终大成,路由天下群雄颂(如何规划OPSF网络)
新帝立,群雄服,IGP进入新时代。
与兄弟,入园区,各领风骚数百年。
结佳人,闯私网,再续VPN不了缘。
至此时,终大成,徒留余香与君勉。
前面7篇问鼎OSPF系列技术贴已经跟大家介绍了OSPF的基础知识,例如OSPF的基本运行机制、OSPF邻居建立过程、OSPF的LSA详解、OSPF特殊区域、OSPF防环机制等等。看过这些OSPF基础知识以后您是否想尝试实际规划部署一个OSPF网络呢?在OSPF典型网络是如何规划部署的呢?OSPF在典型网络中是如何应用的呢?本篇问鼎OSPF我们以一个典型OSPF网络规划部署案例来给您介绍OSPF网络规划设计原则及部署注意事项。
1.       OSPF网络规划设计原则
OSPF路由协议在所有内部网关协议中是比较复杂的一种,这种复杂性和OSPF协议的原理密切相关,那么在设计典型OSPF网络的时候我们具体需要考虑哪几方面的问题呢?在本节中将会为您一一介绍。
1.1         保持OSPF网络的稳定性:Router ID的规划
在典型OSPF网络设计和实施中我们需要考虑的第一点,就是Router ID的选择。
这是因为OSPF作为一种链路状态路由协议其计算路由的依据是LSA(链路状态通告),每个运行OSPF的路由器都会发送并泛洪LSA报文到整个网络,这样网络中每个运行OSPF的路由器都会收集到其他设备发送过来的LSA并且放入LSBD(链路状态数据库),然后开始进行SPF(最短路径算法)运算,计算出一棵以自己为根到其他网络的无环树。由此可以看出保持每个路由器LSDB的稳定性是保证OSPF网络稳定的前提。那么在LSDB中对于不同OSPF设备发送来的LSA是如何进行区分的呢,答案就是使用Router ID。如果一个路由器的Router ID发生变化,那么此路由器会重新进行LSA泛洪,从而导致全网OSPF路由器都会更新其LSDB并且重新进行SPF计算,使得OSPF网络发生振荡。因此选择一个稳定的Router ID是OSPF网络设计的首要工作。
了解了Router ID的重要性后,我们来看看一个OSPF路由器是如何选择Router ID的。
路由器的Router ID可以手工配置,如果没有通过命令指定Router ID,系统会从当前接口的IP地址中自动选取一个作为路由器的Router ID。其选择顺序是:优先从Loopback地址中选择最大的IP地址作为路由器的Router ID,如果没有配置Loopback接口,则在接口地址中选取最大的IP地址作为路由器的Router ID。只有当被选举为Router ID的接口IP地址被删除或修改后,才会进行Router ID的重新选举。
在实际工程中,推荐手工指定OSPF路由设备的Router ID。具体做法是首先规划出一个私有网段用于OSPF的Router ID选择。例如:192.168.1.0/24。在启用OSPF进程前就在每个OSPF路由器上建立一个Loopback接口,使用一个32位掩码的私有地址作为其IP地址,这个32位的私有地址即作为该路由设备的Router ID。如果没有特殊要求,这个Loopback接口地址可以不发布在OSPF网络中。
1.2         层次化的网络设计:OSPF区域的规划
OSPF是一个需要层次化设计的网络协议,在OSPF网络中使用了一个区域的概念,从层次化的角度来看区域被分为两种:骨干区域和非骨干区域。骨干区域的编号为0,非骨干区域的编号从1到4294967295。处于骨干区域和非骨干区域边界的OSPF路由器被称为ABR(区域边界路由器)。
实际上OSPF区域的规划也就是把网络中的OSPF路由器做归类的过程。在设计OSPF区域时,我们首先需要考虑的第一点是网络的规模,对于小型的典型网络,例如只有几台路由设备作为核心和汇聚的网络可以考虑仅规划一个骨干区域Area 0。但是在大型的OSPF网络中,网络的层次化设计是必须要考虑的。
对于大型的OSPF网络,一般在规划上都会遵循核心,汇聚,接入的分层原则,而OSPF骨干路由器的选择必然包含两种设备,一种是位于整网核心位置的核心设备,另一种是位于区域核心的汇聚设备,通常都是高端路由设备,例如华为NE系列高端路由器,或者华为S77&97系列高端路由交换机。非骨干区域的设计则是根据地理位置和设备性能而定,如果在单个非骨干区域中使用了较多的低端三层交换产品,由于其产品定位和性能的限制,应该尽量减少其路由条目数量,把区域规划得更小一些或者使用特殊区域。
实际工程中对于非骨干区域的Area编号的规划也是有讲究的,尽量不要使用类似Area1、2、3……这种连续的编号,推荐使用Area 10 、20 、30……这种递增方式,这样主要是考虑提供Area编号上的冗余,在后期网络扩容的时候便于用户增加区域编号。
1.3         非骨干区域的路由表项优化:特殊区域的使用
在问鼎OSPF(6)中我们曾经讲过,特殊区域的使用可以达到优化非骨干区域的路由表项的目的。实际上对于非骨干区域,一般可能存在如下两种诉求需要减少路由表项的规模:
1、  非骨干区域仅有一个ABR做出口,任何访问区域外的流量都要经过这个出口设备,此时其实这个区域内的路由器没必要了解外部网络的细节,仅需要有个出口能够出去即可。
2、  有些时候非骨干区域的设备可能使用了一些较为低端的三层交换机,其产品定位使得其不可能承受过多的路由条目,为了精简其路由条目数量可以采用配置特殊区域的方法进行路由表项的优化。
华为路由器和交换机产品支持OSPF协议中定义四种特殊区域类型:Stub区域,Totally Stub区域,NSSA区域,Totally NSSA区域。各种特殊区域的LSA及路由管理规则在问鼎OSPF(6)中已经有详细的介绍,这里就不再赘述。
在绝大部分的情况下,典型OSPF网络的非骨干区域中都仅仅需要知道缺省路由出口在哪里,因此建议把非骨干区域统一规划成Totally NSSA区域,这样将极大的精简非骨干区域内部路由器的路由条目数量,并且减少区域内部OSPF交互的信息量。对于少数存在特殊需求的网络,请根据实际情况灵活使用几种区域类型。
1.4         骨干区域的路由表项优化:非骨干区域IP子网规划和路由汇聚
由于OSPF骨干区域需要负责区域之间的路由交互,所以骨干区域设备的路由表规模往往会比较大,因此骨干区域的路由表规模同样需要考虑精简和优化的问题。
对于OSPF的非骨干区域来说,使用特殊区域能够精简其内部路由器的路由表,那么对于OSPF骨干区域的路由器来说又是如何优化其路由表的呢?答案就是对非骨干区域使用的IP网段作出合理规划以便于区域边界的路由汇聚。
建议新建OSPF网络能够在前期就作出利于路由汇总的IP网络设计,对于扩建的网络尽量进行IP地址的重新规划,通过区域汇总能精简骨干区域路由器的路由表,减少骨干区域内OSPF交互的信息量。同时,路由汇总以后,单点的链路故障或者网络震荡不至于影响整个网络的路由更新,因此路由汇聚还可以提高网络的稳定性。
1.5         上行流量的引导:OSPF缺省路由的引入和选路优化
对于一个大型OSPF网络来说,很大一部分的业务流量并不在网络内部,而是通往Internet出口,因此缺省路由的设计也是典型OSPF网络的一大设计要点。
在实际的大多数工程案例中,典型网络的出口往往不止一个,如何有效的将出口流量分担到多条链路上就成为了OSPF设计中的一个难点。虽然有很多种手段能够达到分担流量的目的,但是最简单也是最安全的方法是使用OSPF内在的选路机制。因为OSPF路由器对一条路由的优劣衡量是通过计算其cost值来实现的,cost值小的路由会被路由器优先放入路由表。通过调整OSPF接口的cost值可以使得路由器选择不同的链路出口来达到负载分担的目的。
不过在调整cost值之前还有一项必须要做的工作。因为OSPFv2出现的时间较早,没有考虑到带宽的飞速发展,因此缺省情况下,OSPF计算cost值使用的参考带宽为100M,也就是说缺省情况下,OSPF把100M带宽以上的端口统统认为其cost是1。很明显,在网络骨干带宽迈向10T的今天已经显得非常的不合时宜。幸运的是设备提供了更改参考带宽的功能,使用bandwidth-referencevalue命令选择一个合适的参考带宽成为OSPF网络建设中必须要做的一项工作。对于OSPF网络的选路优化,推荐首先选择合适的参考带宽,然后通过调整OSPF接口cost值来实现。
1.6         路由汇总场景下的防环设计:黑洞路由的使用
图1 路由汇总场景下的防环设计:黑洞路由的使用
宇宙中的黑洞被科学家定义为一个连光线都吸食的魔鬼。而在路由器中黑洞路由类似于宇宙中的黑洞,凡是命中黑洞路由的报文都统统被丢弃,而且不向发送者反馈任何差错信息。
黑洞路由的这种巨大魔力使得它在防止路由环路方面有着广泛的应用。在很多场景下路由聚合确实能够做到精简路由,提高网络稳定性的作用,但是任何事物都具有两面性,路由聚合也不例外,路由聚合带来的缺陷就是容易产生路由环路,而黑洞路由可以用来弥补这种缺陷。所以典型OSPF网络设计中,路由聚合和黑洞路由往往是配合使用的,这个我们会在下面的OSPF网络规划部署案例中给出详细的设计方法,请读者继续往下看。
1.7         OSPF网络基本安全:OSPF静默接口的使用
对于一个大型OSPF网络来说,安全性是必须要考虑到的问题。在OSPF网络设计中,通常会禁止将OSPF报文发往用户端,这是为什么呢?这主要是为了防止终端用户窥探OSPF报文信息,因为如果用户能截获OSPF报文,那就意味着他可能知道如何加入此OSPF网络。此时要破坏这个OSPF网络已经是轻而易举的事,例如接入一台路由器到OSPF网络中,并且使得该路由器的OSPF进程处于不稳定的状态中,就会导致OSPF网络发生振荡甚至瘫痪。
在实际工程中,为了保证OSPF网络的安全与稳定,推荐在OSPF网络的边缘设备上使用静默接口的的方式来阻止通往用户侧的OSPF报文。具体做法是在OSPF网络的边缘设备上配置silent-interface命令,用来禁止该接口接收和发送OSPF报文。禁止接口收发OSPF报文后,该接口的直连路由仍可以发布出去,但接口的Hello报文将被阻塞,接口上无法建立邻居关系。这样用户侧就无法窥探到网络中的OSPF报文。
2      OSPF网络设计部署案例
俗话说“纸上得来终觉浅,绝知此事要躬行”。上一节中我们对典型OSPF网络设计的七个基本原则作出了详细说明,下面我们通过一个案例来看看在实际工程中是如何运用这七个基本原则对OSPF网络进行设计和部署的。
图2 典型园区网络的拓扑图
图2是一个典型园区网的拓扑图,可以看到这是一个大型园区网络,核心、汇聚、接入三层分明,有多出口到Internet,网络内部存在双链路冗余,核心、汇聚交换机部署集群保护等。这种大型园区网络,园区出口设备一般选用华为NE系列高端路由器,核心交换机选用华为S9700交换机集群,汇聚交换机选用S7700交换机集群。用户网关部署在汇聚层上,汇聚层作为二层和三层的分界点。
对于这种比较典型的大型园区网络, OSPF的设计与部署工作是怎样一步一步进行的呢?下面将根据上一节提出的七条基本原则逐步进行此网络的设计和部署。
由于上述典型园区网络中核心交换机和汇聚交换机都属于集群系统,因此他们在逻辑上相当于一台设备,多链路捆绑在逻辑上也属于一条链路。由于集群和链路聚合的内容不在本帖的讨论范围内,因此为了简化问题的描述我们把上述网络拓扑经过抽象形成图3所示的逻辑拓扑图,园区网中可能存在很多幢楼,这里我们以3幢为例进行描述。
图3 典型园区网络的逻辑扑图
2.1      保持OSPF网络的稳定性:Router ID的规划
部署OSPF的首要工作就是设计和部署Router ID,一般情况下,使用一个合适的私有IP地址段即可。在此案例中我们选用的Router ID地址段为10.0.0.0/24。
选取完Router ID地址段后,接下来需要做的工作是在每个OSPF设备上创建相应的Loopback接口并配置接口IP为10.0.0.X/32。具体配置以核心交换机S9700集群为例:

命令

含义

[S9700]interface LoopBack 0

创建环回接口0

[S9700-LoopBack0]ip address 10.0.0.3 32

为环回接口0配置32位掩码的IP地址

[S9700-LoopBack0]quit

退出当前视图

[S9700] ospf 1 router-id 10.0.0.3

创建OSPF进程1并设置Router ID为10.0.0.3

注意:如无特殊要求,建议不要在OSPF进程中发布loopback0的接口地址,以减少无用的OSPF信息交互报文
规划Router ID 以后的网络拓扑如图4所示:
图4 规划Router ID 以后的网络拓扑
2.2         层次化的网络设计:OSPF区域的规划
在分配完Router ID后,接下来的工作就是对于整个OSPF网络进行区域划分。对于这种层次分明的网络,OSPF的区域划分是非常容易的,直接把核心和汇聚交换机包含到Area 0,再按照地理位置来区分非骨干区域。唯一需要注意的是非骨干区域Area编号的冗余性,在实际工作中经常被忽视。本案例中我们按照地理位置,把出口路由器和汇聚交换机划分到骨干区域,把每栋楼的汇聚交换机划分为一个非骨干区域,图5是做了Area划分后的OSPF网络拓扑图:
图5 规划区域以后的网络拓扑
具体配置以核心交换机S9700集群的Area 0和Area 10的配置为例:

命令

含义

[S9700]ospf 1

进入OSPF进程视图

[S9700-ospf-1]area 0

进入area 0区域视图

[S9700-ospf-1-area-0.0.0.0]network 10.200.10.0 0.0.0.3

将上行口的网段发布进Area 0

[S9700-ospf-1-area-0.0.0.0]network 10.200.20.0 0.0.0.3

将上行口的网段发布进Area 0

[S9700-ospf-1-area-0.0.0.0]quit

退出当前视图

[S9700-ospf-1]area 10

进入area 10区域视图

[S9700-ospf-1-area-0.0.0.10]network 10.100.10.0 0.0.0.3

将下行口的网段发布进Area 10

从配置命令中可以清楚的看到OSPF区域是以路由器为边界的,例如此拓扑中核心交换机S9700集群上行接口属于Area 0 ,下行接口属于Area 10,也就是说,此路由器跨越了两个区域,是一个区域边界路由器ABR。
注意:在单个区域包含过多的低端路由器或者三层交换机是一种不好的设计,如果出现这种情况应该考虑缩小区域范围。

2.3         非骨干区域的路由表项优化:特殊区域的使用
划分完OSPF网络区域,我们可以看到非骨干区域的路由表项的规模相对较大,而如果非骨干区域的设备性能较低的情况下,用户不希望路由表项规模过大,此时可以考虑特殊区域的运用了。本案例具有很强的代表性,像此类典型网络,推荐非骨干区域一律采用完全NSSA区域 (Totally NSSA 区域)具体拓扑如图6所示:
图6 非骨干区域划分特殊区域以后的网络拓扑
Totally NSSA 区域具体设备配置以Area 10 的S9700集群和S7700-1为例。
S9700集群的关键配置如下:

命令

含义

[S9700]ospf 1

进入OSPF进程视图

[S9700-ospf-1]area 10

进入area 10区域视图

[S9700-ospf-1-area-0.0.0.10] nssa no-summary

ABR设备需要配置nssa no-summary

S7700-1的关键配置如下:

命令

含义

[S7700-1]ospf 1

进入OSPF进程视图

[S7700-1-ospf-1]area 10

进入area 10区域视图

[S7700-1-ospf-1-area-0.0.0.10] nssa

非ABR设备配置nssa即可

下面我们看一下配置Totally NSSA 区域前后,非骨干区域路由表项的优化效果:
图7 非骨干区域优化前S7700-1的路由表
图8 非骨干区域优化后S7700-1的路由表
通过图7与图8的对比可以明显看出,配置了Totally NSSA 区域以后,Area 10的路由表的规模得到了明显的降低,说明在非骨区域通过配置Totally NSSA 区域可以达到降低路由表项规模的作用。
2.4         骨干区域的路由表项优化:非骨干区域IP子网规划和路由汇聚
在非骨区域通过配置Totally NSSA 区域后,非骨干区域内部路由器的路由表得到极大的精简并且减少了区域内部OSPF路由器之间的信息交互量。在骨干区域我们也需要作出适当的操作来达到同样的目的,这就要对非骨干区域使用的IP子网作出合理规划并在ABR(区域边界路由器)进行汇总操作。
在下图中显示了区域10作出合理的IP规划后往区域0通告的路由汇总表项:
图9 通过路由汇总实现骨干区域的路由表项优化
区域路由汇总会抑制明细路由条目的通告,这样区域10的ABR 就只会向区域0 内注入一条汇总路由10.10.0.0/16,这样可以精简骨干路由器路由表项,减少Area 0 的OSPF报文交互量和保证其路由表的稳定。建议在设计OSPF网络时就合理规划IP地址,已方便进行路由汇总。
路由汇总的配置以Area 10的ABR设备S9700集群为例如下:
                                                      

命令

含义

[S9700] ospf 1

进入OSPF进程视图

[S9700-ospf-1] area 10

进入area 10区域视图

[S9700-ospf-1-area-0.0.0.10] abr-summary 10.10.0.0 255.255.0.0

ABR设备进行路由汇总

注意:abr-summary命令只能用在ABR(区域边界路由器)上,区域内部路由器上不要使用此条命令,否则会造成路由表项的错误。
下面我们通过查看路由表项来对比一下路由汇总前后的效果。
图10 路由汇总前骨干区域有用户网段的明细路由
图11 路由汇总后骨干区域仅有用户网段的汇总路由
通过图10和图11的对比可以看出路由汇总之前骨干区域内有用户网段的明细路由,在ABR上做路由汇总以后骨干区域的NE40E-1设备上只有一个16位掩码的汇总的用户网段路由,这样在用户网段很多的情况下通过汇总能在很大程度上精简骨干区域的路由,同时减少了骨干区域和非骨干区域的LSA交互数量,提高了网络的稳定性。

未完待续………………

举报本楼

军衔等级:

  中士

注册:2010-7-295
发表于 2015-9-20 08:56:06 |显示全部楼层
本帖最后由 nanyou2009boy 于 2015-9-20 08:59 编辑

续前节

2.5         上行流量的引导:OSPF缺省路由的引入和选路优化
在第一节的OSPF典型网络规划原则的时候我们曾经提到过,对于一个园区网络,很大一部分流量是流向Internet的,因此对于这种多出口的网络拓扑,引入缺省路由和多出口流量分担是必须要考虑的问题。
引入缺省路由的方式有多种,这里我们建议的做法是在边界路由器上通过OSPF非强制下发缺省路由来实现。
江湖小贴士
一般推荐使用OSPF“非强制”下发缺省路由的方式,即只有边界路由器自身的IP路由表中存在缺省路由的时候才能发布缺省路由,否则就不能发布,之所以这样要求主要是防止在特殊场景下产生环路或者次优路由,这个问题我们会在OSPF番外篇-OSPF的缺省路由综合应用案例中详细讲解,请持续关注。
在本案例中两个边界路由器发布缺省路由以后,对于核心交换机S9700集群来说会收到两条缺省路由,下一跳分别指向两个出口路由器。此时核心交换机S9700集群可以选择其中一条链路作为上行,也可以选择两条上行链路负载分担,具体项目中如何分配流量,请根据实际的网络情况灵活配置。S9700集群的缺省路由和流量的走向如图12所示。
图12 通过缺省路由引导核心交换机S9700集群的上行流量
NE4-E-1和NE40E-2上发布缺省路由的具体配置如下,以NE40E-1为例,NE40E-2上需要做类似的配置。
命令
含义
[NE40E-1] ip route-static 0.0.0.0 0.0.0.0 202.10.10.1
首先在NE40E-1上手工配置一条下一跳指向电信运营商的公网地址的缺省路由
[NE40E-1] ospf 1
进入OSPF进程视图
[NE40E-1-ospf-1] default-route-advertise
发布缺省路由,注意不要携带always参数,即非强制下发缺省路由。

上述配置完成以后,S9700上将会学习到两条等价的缺省路由,此时S9700的上行流量将会采取负载分担的方式进行,详细如图13所示:
图13 S9700集群上有两条等价的缺省路由
如果用户想让S9700上行的两条链路采取主备份的形式,正常情况下走NE40E-1这边上行,当NE40E-1故障的时候流量自动切换到NE40E-2这边。这个需求怎么实现呢?根据第一节的介绍,最简单直接的方法就是使用OSPF自身的选路机制,通过修改cost值来影响S9700集群的选路。
为了实现路由的主备份,可以修改S9700到达NE40-2这条链路的cost,使得S9700到达NE40-2这条链路的cost值大于S9700到达NE40-1这条链路。详细配置如下:
S9700侧的配置如下:
命令
含义
[S9700] interface vlanif  50
进入OSPF接口视图
[S9700-Vlanif50] ospf cost 10
修改该接口的OSPF cost值为10

NE40E-2的配置如下:
命令
含义
[NE40E-2] interface GigabitEthernet  0/0/1
进入OSPF接口视图
[NE40E-2-GigabitEthernet0/0/1] ospf cost 10
修改该接口的OSPF cost值为10

由于缺省情况下百兆带宽以上的链路OSPF的cost默认为1,所以我们将S9700到NE40E-2之间的链路的OSPF cost值修改为10以后,S9700将优选NE40E-1这边的链路作为上行流量的出口,此时S9700的IP路由表中将会仅存在一条指向NE40E-1的缺省路由。详细如图14所示:
图14 S9700集群上有仅有一条缺省路由
江湖小贴士
在做OSPF选路调整时注意:如果需要调整cost值来影响OSPF的选路,则在链路两侧的设备上需要作出同样的cost调整,否则会形成不对称路由,引起网络故障。
2.6         路由汇总场景下的防环设计:黑洞路由的使用
经历了上述5个步骤的规划与部署,这个典型OSPF网络的基本功能已经具备了,而且我们也通过了一些手段进行了路由表项的优化,但是这个网络现在是否还存在问题呢?是否还需要做进一步的优化呢?
答案是肯定的,这个网络中当前是存在一种产生环路的风险的,第一节的规划原则中我们也曾经提到过,路由汇总通常容易产生环路,而黑洞路由通常可以用来和路由汇总相结合来防止路由环路。
下面我们来看一下这个环路是如何产生的。
对于园区网来说,来自内部的网络攻击是很常见的,假设1号楼内的某台主机受到病毒攻击,这种攻击会导致主机扫描访问10.0.0.0网段的IP地址。那么此时就有很大的风险产生环路。假设主机扫描到10.10.50.1这个地址(1号楼实际上不存在这个地址)。
1、  这个数据包将会发送至主机的网关即S7700-1。
2、  S7700-1上不存在这个目的地址的明细路由,所以会匹配默认路由发送至S9700集群。
3、  由于10.10.50.1这个地址在整个园区网中根本不存在,所以数据包到达S9700上以后只能匹配缺省路由发送只NE40E-1。
4、  而NE40E-1上学习到的路由却是S9700通过路由汇总发布出去的,所以会匹配到10.10.0.0/16这条路由,所以数据包又重新发回S9700.
至此S9700和NE40E-1之间的一条环路就形成了,如图15所示。一旦形成路由环路将会严重影响网络的运行,甚至导致整网的瘫痪,所以做路由汇总的场景下,如何防止路由环路是一个必须考虑的问题。
图15 S9700集群和NE40E-1之间形成路由环路
形成环路的主要原因是在S9700集群上把目的地址为一个园区网内不存在的地址的数据包匹配默认路由发送给和骨干区域,同时骨干区域又通过汇总的回程路由回送回来。
因此解决这个环路的方法就是在S9700上阻断目的地址为一个园区网内不存在的地址的数据包,推荐使用的方法就是配置黑洞路由。
详细配置如下:
[S9700] ip route-static 10.10.0.0 255.255.0.0 NULL0
完成这个黑洞路由的配置以后,回程到10.10.0.0这个网段的数据包都会有明细路由引导回到用户网段,如果找不到这个明细路由则证明园区网内不存在这个主机地址,此时即会匹配这条黑洞路由而将数据包丢弃。这样就不会形成环路了。其他区域也需要做跟Area 10类似的配置,即路由汇总的同时做黑洞路由用来防止路由环路的产生。
2.7         OSPF网络基本安全:OSPF静默接口的使用
在网络攻击“道高一尺魔高一丈”的当下,网络的安全也是一个必须要考虑的问题。
对于本案例来说,做完上面6个步骤,实际上整个OSPF网络已经能够正常的运行,但是这个网络存在一个较大的安全漏洞。即用户侧能够接收到OSPF的hello报文,使用Sniffer等网络嗅探工具可以很轻易的获得基本的网络信息,并作出下一步的攻击行为。
为了实现OSPF网络的基本安全,在实际工程中推荐使用静默接口的方式来阻止发往用户的OSPF报文。如图16所示:
图16 使用静默接口的方式来阻止发往用户的OSPF报文
具体配置以Area 10中的S7700-1为例:
命令
含义
[S7700-1] ospf 1
进入OSPF进程视图
[S7700-1-ospf-1] silent-interface vlanif100
将所有用户侧接口设置为静默接口
[S7700-1-ospf-1] silent-interface vlanif200
将所有用户侧接口设置为静默接口
[S7700-1-ospf-1] silent-interface vlanif300
将所有用户侧接口设置为静默接口



江湖小贴士
注意:silent-interface命令会禁止接口接收和发送OSPF报文,一般只会用于用户侧接口上,千万不要应用于OSPF路由器之间的链路,这将导致OSPF邻居无法建立。

至此这个典型OSPF网络就规划部署完毕,我们来做一个总结:
通常一个网络的规划设计需要同时考虑网络的有效性、可靠性、安全性等几个方面。所以在部署一个网络的时候仅实现网络的基本功能只是一个方面,更多的需要考虑如何优化这个网络,如何提高这个网络的有效性、可靠性、安全性等方面的问题。
3      题外话
至此问鼎OSPF系列技术贴的8篇正传已全部完结,不知道本系列技术贴描绘出来的金戈铁马、快意恩仇的网络江湖,有没有唤起读者心中那曾经的一个武侠梦,如白衣少年那样,在通信领域这个沙场上重燃那颗争胜好强的心呢?当然书写本系列技术贴的初衷还是希望读者能够学习这个技术贴的精华—OSPF的技术细节,而后续也还会有更多关于OSPF的典型应用、典型故障处理等方面的介绍,所以也请大家继续关注“问鼎OSPF番外篇”。
好了,最后谢谢大家对OSPF系列技术贴的关注:)

举报本楼

军衔等级:

  新兵

注册:2015-9-6
发表于 2015-9-23 06:07:25 来自手机 |显示全部楼层
食用

举报本楼

军衔等级:

  下士

注册:2005-4-101
发表于 2015-9-28 15:55:49 |显示全部楼层
好文,先马再看~

举报本楼

军衔等级:

  新兵

注册:2015-8-15
发表于 2015-10-2 14:31:50 |显示全部楼层
写的不错,顶一个

-----------华为今年裁员两万

举报本楼

您需要登录后才可以回帖 登录 | 注册 |

Archiver|手机版|C114 ( 沪ICP备12002291号-1 )|联系我们 |网站地图  

GMT+8, 2024-3-19 22:04 , Processed in 1.612279 second(s), 16 queries , Gzip On.

Copyright © 1999-2023 C114 All Rights Reserved

Discuz Licensed

回顶部