第一篇:ospf学习心得
OSPF(open shortest path first)开放式最短路径协议已经成为网络中非常重要的一员,涉及到OSPF的RFC(包括草案等)有58个,这从正面说明了其重要性。
我们为什么用OSPF
每样事物的诞生都有其缘由,同样的,每种网络中的协议的存在都是有其原因的,不管它是否有很多的缺陷,或者是很不好使用,存在即合理这话应牢牢刻在脑中的。
OSPF是一种公有的链路状态协议,既然公有,那就说明了是各个厂商都会支持的,相对那些私有的路由协议(其实就那IGRP和EIGRP了,其实EIGRP很强大的,cisco的研发人员真的强)来说这是一个极大的优势;其次,它是基于IP的链路状态路由协议,链路状态的另外一个代名词就是无循环了,因为每一个OSPF的成员都有它所处区域的所有成员的LSA(这里可以看出为啥一直强调LSA的传播不允许受到阻碍了),然后根据已有的LSA通过迪杰克斯拉算法得出了它所处区域的拓扑。
从OSPF协议包的角度来说,网络规模是没有任何限制的,但是这个优点只是相对来说,因为迪杰克斯拉算法(以下称为SPF算法)所耗用的CPU资源是比较巨大的,并且对于一个OSPF路由器来说,它所要维护的链路状态数据库的规模是随着区域的大小指数型上升的,因此,OSPF引进了一个非常重要的概念——区域,区域的加盟,使得OSPF的扩展性得到了极大的提高(有另外中夸张的说法,OSPF没有区域还不如一个RIPv2)。基于对OSPF设备的压力,一个区域的OSPF节点数推荐为30-200(一般设计小于50),区域有几个很重要的特点:路由器只与同一区域的路由器去分享LSA,去同步LSDB;拥有更小的LSDB以及更少的LSA的洪泛(即blooding);大多数的洪泛都只限于单个区域。
OSPF另外一个不算优点的优点--VLSM CIDR,即变长子网划分,就是说掩码决定网络,其实大多路由协议都能够做到这一点;相对距离矢量路由协议来说,OSPF减少了对设备和链路的带宽压力,相对距离矢量的定时更新机制,OSPF采取了更为灵活的方式--出发更新和定期的hello包,一个用来确定邻居还活着的,一个用来处理突发事件;OSPF的收敛速度是很快的,通过各种计时器的调节使其的收敛时间能够到达ms级别。
OSPF的协议包
OSPF的设计之初就是为TCP/IP协议簇服务的,因此它是IP封装的,它不支持appletalk网络,不支持IPX,也不支持CLNP等网络(相对IS-IS来说,这是一个劣势了)。它使用了IP协议号89,因此它是三层的协议。在广播环境的网络(如以太网)下,它的协议包的目标IP是224.0.0.5(所有运行OSPF协议的路由器均会接收),或者是224.0.0.6(这是给DR和BDR的),源IP若没有特殊指定,自然就是协议包出口的IP了。
OSPF的PDU(protocol data unite协议数据单元,即协议包了)有五种:hello包,DBD包(database description数据库描述包),LSR(link state request链路状态请求包),LSU(link state update链路状态更新包)和LSACK(link state acknowledge链路状态确认包)。听俺一一道来各种包的作用。
hello包:发现邻居;协商邻居参数;维持邻居关系(通过定时打招呼实现,反正包小嘛,对链路压力也不大);确保邻居路由器的双向通信(在邻居给自己的hello包中发现了自己的router ID);在MA(Multiaccess多路访问)网络(可以理解为广播型网络了,以太网啥的,不过那啥NBMA也属于的)中选择DR和BDR。每台OSPF路由器在起来时首先干的事情就是发hello包,看还有谁是一伙的了,通过hello包,志同道合(即运行OSPF的路由器)的互相联系下,通过互相打招呼,大家开始拉帮结派了,凭着以下几个共同点:area id,即区域ID,;认证,OSPF的协议结构中有一个认证的概念,包括认证的方式和口令(一种简单的明文口令,还有种可以用MD5哦);掩码(其实这个的检测并不像书上说的那样),在一个网段就好了;hello interval,hello包的间隔,这个没得说,大家打招呼时间不一致,会引起保持时间的不一致从而引起邻居表震荡;保持时间,即在一段时间内未收到邻居hello包,等多久宣告该邻居无效的时间,也叫做路由器无效间隔时间,保持时间的不一致同样会造成邻居表的震荡(其实缺省来说,一般是4个hello interval);可选项,即option值,一些特殊的可选性能的支持。hello包的源目标IP是随着网络的不同而不同的,在最广泛使用的以太网中,自然目的IP是组播地址,224.0.0.4和224.0.0.5;点对点类型的网络中,很奇怪的是,用的目标地址也是组播地址(觉得奇怪是因为在点对点中这条路过去就是你,没有任何人了,用单播岂不简单得多,有待研究);NBMA中用单播地址,这个能够理解,毕竟帧中继网络复杂程度比较高,过多的映射会很痛苦;点到多点,既然点到多点是人为创造的点到点的集合,自然也是组播了;虚链路中,单播,又是人为弄出来的,这个多在分裂区域使用,毕竟用虚链路虽然降低了效率,但总比分裂的区域要好。
DBD包,有些叫做DDP,有些叫DD。其实大家所说的都一样,都是指database description packet数据库描述包了。数据库描述包在邻接关系的形成过程中占据了非常重要的地位。顾名思义,既然叫做数据库描述包,自然它发出去时自然要带上自己数据库中的LSA,但是如此一来,可能存在的浪费就很多了,说不定大家数据库拥有的LSA都差不多,你这一全带出去,对链路压力啥的就大了,所以它只把数据库中的LSA头部带了出去,让人家去对比,看看少了哪些LSA或者哪些LSA已经不是最新的了,其主要目的就达到了。不过在此之前,DBD包的另外一功能:选举主从路由器(其实也是为了可靠的交换LSA头部而来)。因为要开始交换信息了,但是OSPF使用的IP并不是可靠的,所以必须要靠OSPF自己解决可靠性问题了。这时候,DBD包中的数据库描述序列号就开始起作用了,类似TCP中序列号的作用。如此一来,选个主从就是相对简单的解决方法了,由主决定(呵呵)。其中有几个置位需要了解下:I位(Initial初始位),我总要告诉别人我发的是啥包啊,不然等人看完了才知道岂不是浪费了,第一个DBD包I位置位为一;M位(More后继位),其实这个就是仿效IP数据结构中标记位的MF(more fragment更多的分片),置一时就是说后头还有DBD包;MS位(master slave主从位),前边说的住就置一了。
LSR包,link state request链路状态请求包,应该说是LSA的请求包。上边的DBD完成了让大家互相了解所欠缺的LSA,既然我的LSA不是最新的或者干脆没有,那么自然要去问有的人要了。发一张单子出去,请求的LSA列表在上头,请求的那些LSA有三个东东:link state type链路状态的类型,其实就是说LSAn(n是1到7除了6)了;link state ID链路状态ID,这个在不同网络是不同的,基本是子网信息,邻居的路由器ID等;advertising router这里装的是产生这个LSA的router ID。
LSU包,link state undate链路状态更新包。这没得说,一边要,一边给咯,要不然这个OSPF不死翘翘。当然,在网络变化的时候也会产生的。
LSACK,link state acknowledge链路状态确认包。这个是保证可靠性的,自然要来。
在LSU中的LSA的传输中有两种方式保证其传输的包的可靠性:隐式和显示。显式自然是收到了你的关于这个LSA的LSACK了;隐式即在接下来的发过去的LSR更新包中并没有出现这条LSA的请求信息。
OSPF的操作概述
第一步:OSPF的路由器从所有的OSPF接口发送hello包,主要目的是形成邻居,在互相都收到了hello包后,形成了邻居。
第二步:通过DBD,LSR,LSU形成邻接关系。其实说白了,邻接关系是一种虚拟的点对点链路,看看邻居表里头邻居的那些个数据就知道了。这个是与二层链路性质有关的。
第三步:路由器互相交换LSA(接口,邻居路由器,链路状态)。
第四步:LSA的同步。同一区域内OSPF的路由器中的LSDB完全一致,因此就有了区域内LSA的洪泛不能受到任何阻碍这句话,这个自然,不一致会出大问题的。
第五步:以自己为根算一个SPF路径,占资源比较严重的事来了,SPF占用资源是比较大的。
第六步:根据SPF路径构建路由表。
完全按照自己的想法来写了,哪位高人指出错误,不胜感激
接口的状态
在OSPF路由器上,接口有以下几种状态:
Down状态:最初状态,这时并不是说接口是down的,只能说,这个接口没有启用OSPF罢了,专业名词叫做非功能状态,没有任何协议包传送,;
Point-to-point状态:这个状态仅仅在点到点网络环境才会出现,当然,点到多点和虚链路自然也是,性质一样,此状态的接口,一旦形成了邻居就自然形成邻接关系。
Loopback状态:自己设置的。
以下四个状态是在MA网络中才会有的:
Waiting状态:广播网络中,NBMA。确定DR,BDR之前的状态。DR状态:说明在当前的这台OSPF路由器上这个接口为DR。Backup状态:当前这台OSPF路由器的此接口为BDR。
DRother状态:这台OSPF路由器的此接口非DR,非BDR。
说完了自己接口的状态,自然就开始说与邻居的状态了
首先的状态仍然是down状态:没有收到邻居的hello包,自己发了一堆,那人没反应,自然就是down了,其实应该说是在与其形成邻居后,那人没有反应了,才叫做down。
Attempt状态:这个状态仅仅适用于NBMA网络,邻居的关系也需要手工的配置,按照poll interval发送hello包。
Init状态:收到了邻居的hello包,但是在邻居hello包的邻居列表中没有看到自己的routerID。
2-way状态:在邻居的hello包中看到了自己的routerID,当然,有可能自己看来是2-way状态,但在邻居看来却是Init状态,这个与延迟等有关。
Exstart状态:准启动状态,此状态中建立master/slave关系,并且确定了DBD包中的序列号。
Exchange状态:交换状态,交换LSDB中LSA摘要信息的状态,通过互相交换发送DBD包,严格来说,这个状态已经发送了LSR包。
Loading状态:此时是交换LSDB中LSA的状态,通过互相发送LSR,LSU,LSACK实现。
Full状态:大家LSDB达到了同步。OSPF路由器与邻居的关系
首先自然是通过互相发送hello包,发现OSPF邻居;其次,实现双向通讯,其实不过是要在对方发过来的hello包中的邻居列表发现自己的routerID罢了;再次,LSDB的同步,邻居建立成了,自然要向邻接的方向发展,通过DBD,LSR,LSU来同步LSDB;最后,达到full adjacency,即达到了邻接。
其实应该好好说说数据结构的,但是书上有,还是觉得应该说下
DR(Designated Router):在一般网络中这个名词的使用频率是很高了,大多数用的都是以太网,自然,MA中的典型代表。在多路访问的网络中,广播网络环境中。在OSPF路由器的数量不是很多的情况下,形成full mesh的全邻接关系其实也没啥,因为邻接的邻居不多,消耗的资源以及对带宽的压力也不多。但对于有较多节点的网络中,过多的邻接关系会给链路造成极大的压力,对设备本身也会造成很大的压力。想想看,偌大一个网络,充斥着无数224.0.0.5的组播包会怎么样,这还不包括后头那一堆子更新包。所以这时候要选个头出来了,大家都跟它建立邻接,与它同步LSDB,如此一来,整个网络的邻接关系呈指数级减少了。对于管理以及做相应策略来说,也轻松了很多。BDR(Backup Designated Router):这个存在的目的就是防止单点故障了,虽然DR挂了后,网络收敛会再次选举,但是这要时间啊,于是,这个副统领就出来了。同样它也也跟所有人建立了邻接关系,LSDB啥的也同步好了,只是不吭声,等大哥死了后,它就上位了。主干路由器:位于主干区域的路由器,至少有一个接口连接到了区域0。这些路由器采用与内部路由器相同的程序步骤和算法来维持OSPF路由的选择信息。这个区域0是与其他区域的转接区域。ABR(Area Border Router)区域边界路由器:这类路由器的任务比较艰巨,连接到多个区域接口的路由器。这些路由器为它们所连接的每一个区域都维护了单独的LSDB,并且路由那些去往或者来自其他区域的数据流。ABR是区域的出口,那些目的地是其他区域的路由选择信息之能够通过自己这个区域的ABR才能到达。ABR归纳了LSDB以后,会把它发往主干区域。主干区域的ABR将会把这些信息发送到它们相连的所有其他的区域。它的作用有点类似一个网段中的网关了,不过是那种有HSRP的,因为一个区域可能有很多的ABR。当然了,一般如果没有设计错误的话,ABR的连接的一个区域肯定是区域0的。ASBR(英文名难写)自治系统边界路由器:它就是到外部网络的出口了,它有一个接口是到外部网络去的,有一个接口是OSPF域内的接口。这些路由器能够引入(就是重发布了)非OSPF得网络信息到OSPF网络,或者把OSPF的网络信息给外头。
标准区域:单个OSPF区域。能够接收域内的链路更新,域间的路由汇总和外部的路由。主干区域:也叫做转接区域,当它连接到多个区域时,它是所有区域所连接的中心。其实主干区域就是我们说的区域0了。所有其他区域都必须连接到这主干区域来交换信息并且路由信息。其实在区域间传递路由时,OSPF的行为是距离矢量的,主干区域的存在避免了循环的可能。
存根区域:也叫桩区域(stub area),不接收本身AS(OSPF网络)以外的路由信息的一种区域,如果它要路由到AS外的网络,就会使用缺省路由了。
完全存根:不接受外部AS路由或者来自AS内其他区域的汇总路由的区域。一旦需要路由到非本区域的网络,那么就使用缺省路由了。
次存根(NSSA):接收有限数量的外部路由。数量限于那些所需的提供区域间连接的路由。其实以上几种区域的表现就是LSA的不同表现罢了。
邻居与邻接的问题
在继续之后的话题前,觉得应该好好说一下邻居与邻接的问题。其实在之前协议包的介绍时就已经说过部分了,今天算是补全了。
OSPF路由器为了形成邻居关系而互相发送hello包,或组播或单播,只是不同网络环境采取的不同方式罢了。形成邻居需要验证的几个参数在hello包的介绍中已经说了,略微提下:area ID;认证;掩码;hello interval;保持时间;option值。
邻居关系形成了,对于点对点网络和以太网,接下来操心的事情就是邻接关系的形成了。但对于NBMA网络来说(它很牛B),要操心的事情才刚开始。
在点到点和点对多点网络环境下是不需要管邻接的,只要成为了邻居自然就成为了邻接。想想看,对于我的这个接口,除了我就你了,不和你邻居还能跟谁邻居,不和你邻接那邻居还有啥意义啊,呵呵。
在广播型网络中,其实就是说在以太网中,组播和广播地址都有它们对应的MAC地址,所以二层封装不存在问题,要解决的就是邻接问题了。
对于NBMA网络来说,又稍微的不同了,谁叫人家牛B呢,因为是非广播类型,所以二层封装有问题。并且,它也是MA网络,所以它要选DR和BDR。
要记住的是,在MA网络中,会自动的去选举DR,BDR,为了便于控制,自然我们去干涉它的选举比较好。
要求真的很低,大家顶下贴就可以了,如果觉得我写得很差,尽可以提出来,有问题大家可以一起讨论,不过唱独角戏真的很难过。
为什么需要多区域
相信对于区域的理解是比较令人头疼的,因为每种特殊区域里头都被看似乱七八糟的LSA充斥着。应该牢记的一句话是:LSA的可靠洪泛在一个纯粹的OSPF网络中不允许受到阻碍。其目的是LSDB完全一致,再之后产生的结果是,大家都以自己为根生成了一棵树,并且树的样子是一样的,树的样子一样,也就是路由一致了。LSA不受阻碍的洪泛原因也就出来了,在OSPF路由器没有收到区域内所有的LSA时,它不会运行SPF算法来计算出路由,因为没有得到自己所在区域内所有LSA前,它对网络的拓扑就有缺失,而它的缺失很有可能就造成了循环了。
扯远了,回到话题。随着OSPF路由器的数目激增,问题出来了,维护巨大的LSDB所需要的内存以及运行SPF算法对CPU的巨大压力;巨大的细化路由不能汇总导致查找路由表已经转发的速度急剧下降(不能汇总的路由之前说了,我们没法干涉);LSA洪泛所引起的动荡变化将席卷整个网络而无法被压制(牵一发而动全身)。
如此一来,我们需要做的事情是减小OSPF路由器保持的LSDB,汇总以及压制动荡。其实归根结底就是一句话,想让LSA受控,我们只能隔离了,而后区域应运而生。所以要记住的是,区域间的行为已经不是链路状态而是距离矢量路由协议的行为了。而为了防止出现循环,就出现了所有区域必须连接到区域0这条定义性质的规定。如此一来,就像是大家分团抱一起,尔后由一个或几个强大点的角色做边界,用来隔离LSA洪泛的范围以及将LSA以受控的形式传播出去。
区域有以下的几个特点:OSPF路由器只跟同一区域下的OSPF路由器去分享链路,去同步链路状态;更小的LSDB,更少的LSA的洪泛,之前区域设计的主要目的达成;大多数的洪泛仅仅局限于单个区域,不可能不与外头通信,有通信自然要与外头交换信息,只是这时出去的LSA是已经被控制了的。
其实从根本意义来说,OSPF不过是种应用罢了。不同的是它建立在IOS(对CISCO来说)基础上。那一台台路由器交换机和防火墙都是装了系统的类似PC的东西,它们有CPU(防火墙稍微有些不同了),有内存,有flash卡,等等。少了的东西不过输入输出设备了,但是当我们的本本连上时,一台类似PC结构的东西就成立了。这样想吧,我们PC上的office知道用,为啥就不会用IOS上的OSPF呢。觉得脑中应该把OSPF当作一种IOS的应用,那些网络设备是用来传递数据的,OSPF不过是一种让我们以优化的方法传递数据的方式了。其实不光是OSPF,其他协议都一样,只是应用罢了,虽然这应用可能对我们来说有些复杂。万变不离其宗,其实设备间协议的交流倒有些类似PC的交流了。网络设备间要协同合作,首先要给它们一种语言了,那就是现在的各种协议了,各自有各自的任务,但其最终的目的还是转发数据,所有的技术,围绕的就是更好的更快的更安全的转发数据。把那些技术从这一层面考虑,那么会发现,其实那些协议不是很难。
协议的产生很简单,就是为了更好的服务数据传输。比如说OSPF,链路状态路由协议,出现的目的很简单,它对大网络的适应能力比rip之类的强,而且付出的代价并不高,路由协议干嘛的,传递路由嘛,传递路由干嘛,让路由器为数据选路,转发数据。再比如说,MPLS,标签转发,很热的,出现也很简单,拥有稍逊于ATM的传输速度但相对很低廉的实施成本,通过传递标签,生成类似路由表的标签转发表,通过标签转发,速度提升是不言而喻的,技术都是互相学习的,互用所长补其短,每项技术都有其优点有其缺陷。
既然协议是语言,那么自然有其语法,语义,时序。三者缺一不可,就像是人类说话的话语般,每句话都有其顺序,都有其格式,对其相同的字有相同的理解。而协议中交流就是通过协议包了,整个网络充满着各式的协议包,大家互相交流,传递着各种协议的信息。
LSA 前边说了一大堆,绝大多数都是与LSA有关的。LSA作为理解OSPF中最为重要的一个部分,是很需要好好理解的。LSA的具体说明其实路由卷一里头有,所以下边只会粗略的说下了。
了解一种包最简单的方法无外乎研究其数据结构,LSA包的头部中需要注意的几个参数:
类型,链路状态ID和通告路由器,它们三者唯一识别每个LSA,、只是通过这三项在LSDB中识别出一个LSA,仅仅是识别出,通过老化时间,序列号和校验和识别了一个LSA的最新实例,也就是说要确认一个LSA是否是最新的,需要通过以上六项实现。而LSR的包里头包含的东西就是前三项:类型,链路状态ID和通告路由器了。
区域决定LSA,一个区域内能够洪泛着的LSA能否到达其他区域,这一切是在我们控制下的,我们的配置决定了这个区域中拥有哪些LSA。不过为了真正理解OSPF,希望能够从LSA的角度来看,也就是说认为LSA决定了这个区域是什么区域。
LSA总共有11种,编号自然是1至11号,其中常用的就是1到5再加上7了。6和8 偶尔得用,前者用于组播OSPF里头,8是用在bgp里头的东西了。
不同的路由器产生不同的LSA,并且对各种LSA的处理方式也不同,其实说到底,我们是能够控制除了LSA1,LSA2以外所有LSA的,但是是在特定的路由器(其实说白了就是ABR,ASBR了)上才能够控制,因为其他LSA都是它们产生的,只能控制产生,不能控制其洪泛范围,这点再次强调,否则很容易出现意想不到的事情。
至此基础理论基本完结,准备开始贴配置了。
本来都完全死心了
感谢楼上
呵呵
OSPF高级特性
很多协议都有其所谓的高级特性,其实这些高级特性不见得有多高级,多数不过是一些更加细化的名词解释,一些负载均衡的使用等等。下边就开始名词解释了。
NBMA下的OSPF,这个环境应该说是最绕人的一个环境,如果能够在这里头把OSPF给绕清楚,那么其他的几个环境的了解不过是探囊取物罢了。
NBMA环境之所以复杂,就是其名字的分开处理的集合比较复杂了。
首先,MA:有了一个MA,那么OSPF就要选择DR,BDR了。
其次,NB:这一点又不能保证所有路由器都能正常接收hello包,由此导致的不能自动发现所有邻居。
那么,针对NBMA的解决方法就不外乎以下几个了:
适应NBMA环境;让NBMA支持广播;修改网络类型,不选举DR,BDR。在卷一里头有详细的说明,这里就不仔细说了,反正绕来绕去就是上边三种方法之一的实现。
OSPF数据流量类型:区域内,区域间,外部。这名词没啥解释的。
虚链路是应用在区域分裂时的。其定义:通过非骨干区域连到骨干区域的一条链路。虚链路实施的几条规则:首先它必须在ASBR上配置,这个毋庸置疑,ASBR本身用来连接区域0与其他区域的;其次虚链路穿过的区域必须有完整的路由表,这点也自然,在转发路由器看来,虚链路的数据包跟正常的数据包没啥两样;虚链路穿过的区域不能是stub区域,不然stub区域还叫啥stub区域了,这么多出口;虚链路只是一种临时的修补措施,不能长期施行;通过冗余设计来避免使用虚链路,所以说,良好的设计很重要。
按需链路上的OSPF,按需链路是种比较特殊的链路,因为这链路是按时间收费的,所以hello包和LSA被压制了。Hello包在按需链路下的作用很简单,仅仅用于启用按需链路,并且LSA在正常情况下不会老化。协议自主启用连接的情况:LSA的option改了;收到LSA的Age为MaxAge的新的实例;LSA头部长度改变;LSA内容发生变化。
最后一节,写完后下次就贴配置了。
OSPF网络设计
其实这是一个大块了,市面上根本就有本设计指南,所以这里也不过捡些东西说说了。其实网络设计就围绕那么几个东西来:可用性,可靠性,可扩展性,其实还有个东西-可控性,我们自己设计的东西都不在我们的控制范围,那还做啥呢。
有几条原则(啰七八嗦一堆,实际上大家对着上头的那几个什么性来看就好了):
1.要记住OSPF是围绕区域0构建的,因为从OSPF区域间的路由传递看来,其行为是从自己路由表中拿出来给别人,这样一来,就成为了距离矢量路由协议的标准行为,实际上是违背了链路状态的原则的:我的这些路由是你给我的,而不是我通过LSA算出来的。由此一来,循环的存在的可能性就不可避免了,所以采取了措施去避免循环:区域0的建立,所有区域都连在区域0上,区域0拥有全局2.3.4.5.路由,那么循环自然就不会存在了。
一般来说是以业务或者地理位置为单位来划分区域的,划分区域的可谓一举多得,之前说的区域一大堆好处自然,随后还有类似vlan的隔离,不过这隔离倒是高了一档次,在路由层面隔离了。业务模型决定了流量的模型,特殊区域的存在使得业务的控制更加精确。Cost值的控制在此逐渐体现其作用了,在大带宽的环境下,各厂商自己算的cost已不再能清晰的指引数据走不同的路了,此般,cost只能我们自己手工定义了,我们才是网络的控制者,让它自己折腾不定会成啥样。特殊链路的存在,其实说白了就是NBMA了,这些链路需要好好的注意下。路由器ID应该好好的规划下,别到时候找台设备都需要通过一堆的show命令才能找到。ABR,ASBR最好都有链路的冗余,冗余不管啥技术出来总是要关心的,但要记住的是冗余细分下来倒是分为了主备和负载均衡,这个需要自己去斟酌了。IP地址的规划不能乱来了,最好能够以区域为单位来划分,一般说最好整个公司对外是呈现一个网络号,自然就要划分子网了,其实现在对外都那么几个公有IP了,所以就随自己喜好去规划IP了。其实就是一句话,便于汇总,压制动荡,稳定性(个人认为稳定性是属于可靠性的,呵呵)。引入外部路由的问题一向都是需要注意的,要记住一条通用的规则,只有小的网络重发布到大的网络,大的只能以汇总的形式通告小的。不然随意想想,一个偌大的BGP来个上w条路由到OSPF中,OSPF岂不撑死。
觉得路由汇总和地址的汇聚应该要好好说说。首先要明确的是,链路状态路由协议不能在任意路由器上汇总,前边说得很清楚了;OSPF是通过控制洪泛来隐藏拓扑结构的,这条说起来也很简单,如果LSA能够到达每一个角落,那么任何一台路由器都有整个网络的拓扑了,通过ABR来确定洪泛的范围,来控制路由的汇总和地址的汇聚(其实差不多了);其实之前说的控制网络这个问题并不是简单的事情,网络的复杂性由此体现了,不论怎样设计,还是有很多东西在我们的控制以外,从一定角度来证明了网络的复杂。
第二篇:OSPF协议优缺点
OSPF协议优缺点
与RIP协议不同,OSPF将一个自治域再划分为区,相应地即有两种类型的路由选择方式?当源和目的地在同一区时,采用区内路由选择;当源和目的地在不同区时,则采用区间路由选择?这就大大减少了网络开销,并增加了网络的稳定性?当一个区内的路由器出了故障时并不影响自治域内其他区路由器的正常工作,这也给网络的管理?维护带来方便?
(1)OSPF协议主要优点
OSPF协议主要优点如下:
快速收敛?OSPF是真正的LOOP-FREE(无路由自环)路由协议?源自其算法本身——链路状态及最短路径树算法,OSPF收敛速度快,能够在最短的时间内将路由变化传递到整个自治系统?
区域划分?提出区域(Area)划分的概念,将自治系统划分为不同区域后,通过区域之间的对路由信息的摘要,大大减少了需传递的路由信息数量,也使得路由信息不会随网络规模的扩大而急剧膨胀?
开销控制?将协议自身的开销控制到最小?目的如下所示:
用于发现和维护邻居关系的是定期发送的不含路由信息的hello报文,非常短小?包含路由信息的报文是触发更新的机制,而且只有在路由变化时才会发送?但为了增强协议的健壮性,每1800秒全部重发一次?在广播网络中,使用组播地址(而非广播)发送报文,减少对其他不运行OSPF的网络设备的干扰?
在各类可以多址访问的网络中(广播型网络和非广播型多路访问),通过选举DR(指定路由器),使同网段的路由器之间的路由交换(同步)次数由O(N×N)次减少为O(N)次?
OSPF协议提出STUB区域的概念,使得STUB区域内不再传播引入的ASE路由?
在ABR(区域边界路由器)上支持路由聚合,进一步减少区域间的路由信息传递?
在点到点接口类型中,通过配置按需播号属性(OSPF over On Demand Circuits),使得OSPF不再定时发送hello报文及定期更新路由信息?只在网络拓扑真正变化时才发送更新信息?
路由可信?通过严格划分路由的级别(共分4级),提供更可信的路由选择?
安全性高?良好的安全性,OSPF支持基于接口的明文及MD5 验证?
适应性广?OSPF适应各种规模的网络,最多可达数千台?
(2)OSPF协议主要缺点
OSPF协议主要缺点如下:
配置相对复杂?由于网络区域划分和网络属性的复杂性,需要网络分析员有较高的网络知识水平才能配置和管理OSPF网络?
路由负载均衡能力较弱?OSPF虽然能根据接口的速率?连接可靠性等信息,自动生成接口路由优先级,但在通往同一目的的不同优先级路由中,OSPF只选择优先级较高的转发,不同优先级的路由中,不能实现负载分担?只有相同优先级的,才能达到负载均衡的目的,不像EIGRP那样可以根据优先级不同,自动匹配流量?
第三篇:华为OSPF总结
华为OSPF总结 OSPF基本概念
1.1 拓扑和路由器类型
OSPF整体拓扑
OSPF把自治系统划分成逻辑意义上的一个或多个区域,所有其他区域必须与区域0相连。路由器类型
区域内路由器(Internal Router):该类设备的所有接口都属于同一个OSPF区域。
区域边界路由器ABR(Area Border Router):该类路由器可以同时属于两个以上的区域,但其中一个接口必须在骨干区域。ABR用来连接骨干区域和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。
骨干路由器(Backbone Router):该类路由器至少有一个接口属于骨干区域。所有的ABR和位于Area0的内部路由器都是骨干路由器。 自治系统边界路由器ASBR(AS Boundary Router):与其他AS交换路由信息的路由器称为ASBR。ASBR并不一定位于AS的边界,它可能是区域内路由器,也可能是ABR。只要一台OSPF路由器引入了外部路由的信息,它就成为ASBR。
拓扑所体现的IS-IS与OSPF不同点
在OSPF中,每个链路只属于一个区域;而在IS-IS中,每个链路可以属于不同的区域; 在IS-IS中,单个区域没有骨干与非骨干区域的概念;而在OSPF中,Area0被定义为骨干区域;
在IS-IS中,Level-1和Level-2级别的路由都采用SPF算法,分别生成最短路径树SPT而在OSPF中,只有在同一个区域内才使用SPF算法,区域之间的路由发布还是距离矢量算法,区域之间的路由需要通过骨干区域来转发。
1.2 OSPF网络类型,DR,BDR介绍
OSPF支持的网络类型
点到点P2P类型:当链路层协议是PPP、HDLC时,缺省情况下,OSPF认为网络类型是P2P。在该类型的网络中,以组播形式(224.0.0.5)发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。 点到多点P2MP 类型(Point-to-Multipoint):没有一种链路层协议会被缺省的认为是Point-to-Multipoint 类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将非全连通的NBMA改为点到多点的网络。在该类型的网络中以组播形式(224.0.0.5)发送Hello报文,以单播形式发送其他协议报文(DD报文、LSR报文、LSU报文、LSAck报文)。 NBMA类型(Non-broadcast multiple access):当链路层协议是ATM时,缺省情况下,OSPF认为网络类型是NBMA。在该类型的网络中,以单播形式发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文)。 广播类型(Broadcast):当链路层协议是Ethernet、FDDI时,缺省情况下,OSPF认为网络类型是Broadcast。在该类型的网络中,通常以组播形式发送Hello报文、LSU报文和LSAck报文。其中,224.0.0.5的组播地址为OSPF路由器的预留IP组播地址;224.0.0.6的组播地址为OSPF DR的预留IP组播地址。以单播形式发送DD报文和LSR报文。
在至少含有两个路由器的广播型网络和NBMA网络都有一个指定路由器(DR)和一个备份指定路由器(BDR)DR/BDR的作用 减少邻居关系的数量,从而减少链路状态信息和路由信息的次数。Drother只与DR/BDR建立完全邻接关系。DR与BDR之间建立完全邻接关系。 DR产生网络LSA来描述NBMA网段或者广播网段信息。DR/BDR选举规则
DR/BDR由OSPF的Hello协议选举,选举是根据端口的路由器优先级(Router Priority)进行的。
如果Router Priority被设置为0,那么该路由器将不允许被选举成DR或者BDR。
Router Priority越大越优先。如果相同,Router ID大者优先。
DR/BDR不能抢占。
如果当前DR故障,当前BDR自动成为新的DR,网络中重新选举BDR;如果当前BDR故障,则DR不变,重新选举BDR。ISIS DIS与OSPF DR/BDR的不同点
在IS-IS广播网中,优先级为0的路由器也参与DIS的选举,而在OSPF中优先级为0的路由器则不参与DR 的选举。
在IS-IS广播网中,当有新的路由器加入,并符合成为DIS的条件时,这个路由器会被选中成为新的DIS,原有的伪节点被删除。此更改会引起一组新的LSP 泛洪。而在OSPF中,当一台新路由器加入后,即使它的DR 优先级值最大,也不会立即成为该网段中的DR。
在IS-IS广播网中,同一网段上的同一级别的路由器之间都会形成邻接关系,包括所有的非DIS路由器。
1.3 OSPF报文类型
Hello报文:用于建立和维持邻居关系
DD报文:描述本地LSDB的摘要信息,用于两台路由器进行数据库同步
LSR报文:用于向对方请求所需的LSA路由器只有在OSPF邻居双方成功交换DD报文后才会向对方发出LSR报文
LSU报文:用于向对方发送其所需要的LSA LSAck报文:用来对收到的LSA进行确认 OSPF报文概述
OSPF报文直接运行于IP之上,IP协议字段号为89。OSPF有五种报文类型,但是OSPF报文头部格式都是相同的。
除Hello报文外,其它的OSPF报文都携带LSA信息。1.3.1 OSPF报文头部信息
所有的OSPF报文使用相同的OSPF报文头部 Version :OSPF协议号,应当被设置成2。Type:OSPF报文类型,OSPF共有五种报文。
Packet length:OSPF报文总长度,包括报文头部。单位是字节。Router ID:生成此报文的路由器的Router ID。Area ID:此报文需要被通告到的区域。
Checksum:是指一个对整个数据包(包括包头)的标准IP校验和。AuType:验证此报文所应当使用的验证方法。
Authentication:验证此报文时所需要的密码等信息。
1.3.2 Hello报文格式
Network Mask:发送Hello报文的接口的网络掩码。HelloInterval:发送Hello报文的时间间隔。单位为秒。
Options:标识发送此报文的OSPF路由器所支持的可选功能。
Router Priority:发送Hello报文的接口的Router Priority,用于选举DR和BDR。
RouterDeadInterval:宣告邻居路由器不继续在该网段上运行OSPF的时间间隔,单位为秒,通常为四倍HelloInterval。Designated Router:发送Hello报文的路由器所选举出的DR的IP地址。如果设置为0.0.0.0,表示未选举DR路由器。
Backup Designated Router:发送Hello报文的路由器所选举出的BDR的IP地址。如果设置为0.0.0.0,表示未选举BDR路由器。
Active Neighbor:邻居路由器的Router ID列表。表示本路由器已经从该邻居收到合法的Hello报文。
1.3.3 DD报文格式
接口MTU:是指在数据包不分段的情况下,始发路由器接口可以发送的最大IP数据包大小。当在虚连接时,该在段为0x0000。 Option:同hello报文。
I位:当发送的是一系列DD报文中的第一个数据包时,该为置位为1。后续的DD报文将该位置位0。
M位:当发送的数据包还不是一个系列DD报文中的最后一个数据包时,该值置为1。如果是最后一个DD报文,则将该为置为0。
MS位:在数据库同步中,主要用来确认协商过程中的序列号。 DD Sequence Number:DD的序列号报文,4byte LSA头部信息。
1.3.4 LSR报文格式
Link State Type:用来指明LSA标识是一个路由器LSA、一个网络LSA还是其他类型的LSA。
Link State ID:不同类型LSA该字段意义不同。
Advertising Router:始发LSA通告的路由器的路由器ID。
1.3.5 LSU报文格式
Number of LSA:指出这个数据包中包含的LSA的数量。 LSA:明细LSA信息
1.3.6 LSAck报文格式
Header of LSA:LSA头部信息。
1.3.7 LSA头部信息
除Hello报文外,其它的OSPF报文都携带LSA信息。
LS age:此字段表示LSA已经生存的时间,单位是秒。
Option:该字段指出了部分OSPF域中LSA能够支持的可选性能
LS type:此字段标识了LSA的格式和功能。常用的LSA类型有五种。 Link State ID:根据LSA的不用而不同。
Advertising Router:始发LSA的路由器的ID。
Sequence Number:当LSA每次新的实例产生时,这个序列号就会增加。这个更新可以帮助其他路由器识别最新的LSA实例。
Checksum:关于LSA的全部信息的校验和。因为Age字段,所以校验和会随着老化时间的增大而每次都需要重新进行计算。 Length:是一个包含LSA头部在内的LSA的长度。
1.4 LSA类型和区域内路由计算与描述
Router-LSA(Type1)
路由器产生,描述了路由器的链路状态和开销,本区域内传播
Network-LSA(Type2)
DR产生,描述本网段的链路状态,本区域内传播
Network-summary-LSA(Type3)
ABR产生,描述区域内某个网段的路由,区域间传播(除特殊区域)
ASBR-summary-LSA(Type4)
ABR产生,描述到ASBR的路由,OSPF域内传播(除特殊区域)
AS-external-LSA(Type5)
ASBR产生,描述到AS外部的路由,OSPF域内传播(除特殊区域)
NSSA LSA(Type7)
由ASBR产生,描述到AS外部的路由,仅在NSSA区域内传播。
区域内路由的计算只涉及到router-lsa和network-lsa 也只有router-lsa和network-lsa参与ospf路由计算
1.4.1 描述拓扑结构
1.4.2 Router-LSA Router-LSA必须描述始发路由器所有接口或链路。区域内路由计算用到router-lsa [Q5]display ospf lsdb router self-originate
OSPF Process 1 with Router ID 5.5.5.5 Area: 0.0.0.1 Link State Database Type : Router Ls id : 5.5.5.5 Adv rtr : 5.5.5.5 Ls age : 194 Len : 48 Options : ASBR E seq# : 80000007 chksum : 0xacb8 Link count: 2 * Link ID: 4.4.4.4 Data : 45.0.0.5 Link Type: P-2-P Metric : 1562 * Link ID: 45.0.0.0 Data : 255.255.255.0 Link Type: StubNet Metric : 1562 Priority : Low
Link State ID:是指始发路由器的路由器ID。
V:设置为1时,说明始发路由器是一条或者多条具有完全邻接关系的虚链路的一个端点。
E:当始发路由器是一个ASBR路由器时,该为置为1。 B:当始发路由器是一个ABR路由器时,该为置为1。 Link count:表明一个LSA所描述的路由器链路数量。
Link Type:置为1表示点到点连接一台设备;置为2表示连接一个transit网络,可以理解为广播网络;置为3表示连接subnet网络,一般该地址为环回口地址;置为4表示虚链路。
Link ID:Link Type置为1表示邻居路由器的路由器ID;Link Type置为2表示DR路由器的接口的IP地址;Link Type置为3表示IP网络或子网地址;Link Type置为4邻居路由器的路由器ID。
Link Data:Link Type置为1表示和网络相连的始发路由器接口的IP地址;Link Type置为2表示和网络相连的始发路由器接口的IP地址;Link Type置为3网络的IP地址或子网掩码。 P2P链路:描述到邻居连接 Transit链路:描述到DR的连接
Stub链路:描述子网,没有邻居(loopback或者只有一个以太网链路) V-link链路:描述虚链路点到点链路 ToS,暂不支持。
Metric:是指一条链路或接口的代价。
1.4.3 Network-LSA
DR产生,BDR不会产生Network-LSA [Q2]display ospf lsdb network self-originate
OSPF Process 1 with Router ID 2.2.2.2 Area: 0.0.0.0 Link State Database Type : Network Ls id : 10.0.0.2 Adv rtr : 2.2.2.2 Ls age : 393 Len : 36 Options : E seq# : 80000006 chksum : 0x9088 Net mask : 255.255.255.0 Priority : Low Attached Router 2.2.2.2 Attached Router 3.3.3.3 Attached Router 4.4.4.4
Link State ID:是指DR路由器接口上的地址。
Network Mask:指定这个网络上使用的地址或者子网的掩码。
Attached router:列出该多路访问网络上与DR形成完全邻接关系且包括DR本身的所有路由器的路由器ID。
1.4.4 Network-summary-LSA(ABR产生)
[Q4]display ospf lsdb summary Type : Sum-Net Ls id : 45.0.0.0 Adv rtr : 4.4.4.4 Ls age : 425 Len : 28 Options : E seq# : 80000003 chksum : 0xde1f Net mask : 255.255.255.0 Tos 0 metric: 1562
Priority : Low
Link State ID:对于3类LSA来说,表示所通告的网络或子网的IP地址。对于4类LSA来说表示所通告的ASBR路由器的路由器ID。
Network Mask:对于3类LSA来说,表示所通告的网络的子网掩码或者地址。对于4类LSA来说,该字段没有实际意义,一般置为0.0.0.0。 Metric:直到目的地址的路由的代价。
Network-summary-LSA 在区域间传递,区域间路由是矢量的,那么矢量的路由需要防止环路
防止环路方法如下:(1)ABR不能从非骨干区域接收类型3LSA(2)Downbit防环
1.4.5ASBR-summary-LSA(ABR产生)1.4.6 AS-external-LSA(ASBR产生)
[Q4]display ospf lsdb ase OSPF Process 1 with Router ID 4.4.4.4 Link State Database Type : External Ls id : 55.55.55.0 Adv rtr : 5.5.5.5 Ls age : 2341 Len : 36 Options : E seq# : 80000002 chksum : 0xa273 Net mask : 255.255.255.0 TOS 0 Metric: 1 E type : 2 Forwarding Address : 0.0.0.0 Tag : 1 Priority : Low
Link State ID:目的地的IP地址。
Network Mask:指所通告的目的地的子网掩码或地址。
E type:用来指定这条路由使用的外部度量的类型。如果该E bit设置为1,那么度量类型就是E2;如果该E bit设置为0,那么度量类型就是E1。 Metric:指路由的代价。由ASBR设定。 Forwarding Address:是指到达所通告的目的地的数据包应该被转发到的地址。如果转发地址是0.0.0.0,那么数据包将被转发到始发ASBR上。 External Route Tag:标记外部路由。1.4.7 NSSA LSA(ASBR产生)
[Q5]display ospf lsdb nssa self-originate
Type : NSSA Ls id : 55.55.55.0 //目的网段的网络地址 Adv rtr : 55.55.55.55 Ls age : 66 Len : 36 Options : NP seq# : 80000001 chksum : 0x8390 Net mask : 255.255.255.0 TOS 0 Metric: 1 E type : 2 Forwarding Address : 45.0.0.5 Tag : 1 Priority : Low
Forwarding Address:如果网络一台NSSA ASBR路由器和邻接的自治系统之间是作为一条内部路由通告的,那么这个FA就是这个网络的下一跳地址。如果网络不是作为一个条内部路由通告的,那么这个FA地址将是NSSA ASBR路由器的路由器ID。
1.4.8 区域内路由计算SPF过程
1.5
Option字段
Option可选字段出现在每一个Hello数据包、DD和每个LSA中的。 Option字段允许路由器和其他路由器进行一些可选性能的通信。
Option字段解释:
DN:用来避免在MPLS VPN中出现环路。当3类、5类和7类LSA中设置了DN位之后,接收路由器就不恩能够在它的OSPF路由计算中使用该LSA。 O:该字段指出始发路由器支持Opaque LSA(类型
9、类型10和类型11)。 DC位:当始发路由器支持按需链路上的OSPF的能力时,该位将被设置。 EA:当始发路由器具有接收和转发外部属性LSA的能力时,该位被置位。 N位:只在Hello数据包中。N=1表明路由器支持7类LSA。N=0表明该路由器将不接收和发送NSSA LSA。
P位:只用在NSSA LSA。该位将告诉一个非纯末节区域中的ABR路由器将7类LSA转换为5类LSA。 MC位:支持MOSPF。
E位:当始发路由器具有接收OSPF域外部LSA的能力时,该位置位。在所有5类LSA和始发于骨干区域以及非末节区域的LSA中,该位置为1。而始发与末节区域的LSA中,该位置为0。如果Hello报文中该位表明一个接口具有接收和发送5类LSA的能力。 MT位:表示始发路由器支持多拓扑OSPF。OSPF邻居和邻接关系
2.1 邻居关系建立
邻居状态建立:
Down:这是邻居的初始状态,表示没有从邻居收到任何信息。
Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中,表示尚未与邻居建立双向通信关系。在此状态下的邻居要被包含在自己所发送的Hello报文的邻居列表中。 2-Way:在此状态下,双向通信已经建立,但是没有与邻居建立邻接关系。这是建立邻接关系以前的最高级状态。如果网络为广播网络或者NBMA网络则选举DR/BDR。
在形成邻居关系过程中,需要对Hello报文携带的参数进行协商: 如果接收端口的网络类型是广播型,点到多点或者NBMA,所接收的Hello报文中Network Mask字段必须和接收端口的网络掩码一致,如果接收端口的网络类型为点到点类型或者是虚连接,则不检查Network Mask字段; 所接收的Hello报文中的Hello和Dead字段必须和接收端口的配置保持一
致;
所接收的Hello报文中的认证字段需要一致;
所接收的Hello报文中的Options字段中的E-bit(表示是否接收外部路由信息)必须和相关区域的配置保持一致。 所接收的Hello报文中的区域字段必须一致。
2.2 邻接关系建立
邻接状态建立:
邻居状态机变为ExStart以后,R1向R2发送第一个DD报文,在这个报文中,DD序列号被设置为552A(假设),Initial比特为1表示这是第一个DD报文,More比特为1表示后续还有DD报文要发送,Master比特为1表示R1宣告自己为主路由器。
邻居状态机变为ExStart以后,R2向R1发送第一个DD报文,在这个报文中,DD序列号被设置为5528(假设)。由于R2的Router ID比R1的大,所以R2应当为主路由器,Router ID的比较结束后,R1会产生一个NegotiationDone的事件,所以R1将状态机从ExStart改变为Exchange。 邻居状态机变为Exchange以后,R1发送一个新的DD报文,在这个新的报文中包含LSDB的摘要信息,序列号设置为R2在第二步里使用的序列号,More比特为0表示不需要另外的DD报文描述LSDB,Master比特为0表示R1宣告自己为从路由器。收到这样一个报文以后,R2会产生一个NegotiationDone的事件,因此R2将邻居状态改变为Exchange。
邻居状态变为Exchange以后,R2发送一个新的DD报文,该报文中包含
LSDB的描述信息,DD序列号设为5529(上次使用的序列号加1)。
即使R1不需要新的DD报文描述自己的LSDB,但是做为从路由器,R1需要对主路由器R2发送的每一个DD报文进行确认。所以,R1向R2发送一个新的DD报文,序列号为5529,该报文内容为空。
邻居状态变为Loading之后,R1开始向R2发送LS request报文,请求那些在Exchange状态下通过DD报文发现的,而且在本地LSDB中没有的链路状态信息。
R2收到LS Request报文之后,向R1发送LS Update报文,在LS Update报文中,包含了那些被请求的链路状态的详细信息。R1收到LS Update报文之后,将邻居状态从Loading改变成Full。
R1向R2发送LS Ack报文,确保信息传输的可靠性。LS Ack报文用于泛洪对已接收LSA的确认。
2.3 邻居关系状态机
2.4 邻接关系状态机
2.5 总结OSPF邻接建立状态变换和用途
1.5.1 Init状态
当路由器收到邻居发送来的hello报文就将状态变换成init状态,Init状态也说明路由器是可以收到邻居的hello消息的,也说明路由器和邻居之间至少二层是互通的。1.5.2 TwoWay状态
a,检查如下参数是否一致, 在p2p与MA之间有什么不同 如果接收端口的网络类型是广播型,点到多点或者NBMA,所接收的Hello报文中Network Mask字段必须和接收端口的网络掩码一致,如果接收端口的网络类型为点到点类型或者是虚连接,则不检查Network Mask字段; 所接收的Hello报文中的Hello和Dead字段必须和接收端口的配置保持一致;
所接收的Hello报文中的认证字段需要一致;
所接收的Hello报文中的Options字段中的E-bit(表示是否接收外部路由信息)必须和相关区域的配置保持一致。 所接收的Hello报文中的区域字段必须一致。P2P不需要建立邻接,MA需要建立邻接
b,用途?
当路由器和邻居之间建立双向通信就变成TwoWay状态,或者说当路由器收到邻居发送过来的hello报文发现自己在对方的邻居列表中就变成TwoWay状态。
c,DR选举和抢占,wait计时器就是dead time计时器,在这个时间里面,如果路由器接收到的hello报文中有DR和BDR就不进行DR选举
1.5.3 Exstart状态
通过检查router-id,DBD主从选举,router-id大的成为主,小的成为从 1.5.4 Exchange状态
检查ls age和sequence,同步DBD 1.5.5 Loading状态
发送LSR请求 1.5.6 FULL状态
发出的LSR全部收到应答
检查DBD完全一样 已经同步了LSDB OSPF中DR,BDR选举 OSPF特殊区域和外部路由
Ospf特殊区域为stub和nssa 引入外部路由不建议引入直连的路由而采用network+silent方式引入直连路由。
4.1 Stub区域
OSPF可以将特定区域配置为Stub和Totally Stub区域。Stub区域是一些特定的区域,Stub区域的ABR不传播它们接收到的自治系统外部路由,在这些区域中路由器的路由表规模以及路由信息传递的数量都会大大减少。Stub区域是一种可选的配置属性,但并不是每个区域都符合配置的条件。通常来说,Stub区域位于自治系统的边界,是那些只有一个ABR的非骨干区域。为保证到自治系统外的路由依旧可达,该区域的ABR将生成一条缺省路由,并发布给Stub区域中的其他非ABR路由器。Stub区域 骨干区域不能配置成Stub区域。
如果要将一个区域配置成Stub区域,则该区域中的所有路由器都要配置Stub区域属性。
Stub区域内不能存在ASBR,即自治系统外部的路由不能在本区域内传播。 虚连接不能穿过Stub区域。
Stub区域不允许自治系统外部的路由(Type5 LSA)在区域内传播。 区域内的路由器必须通过ABR学到自治系统外部的路由。实现方法是ABR会自动产生一条缺省的Summary LSA(Type3 LSA)通告到整个Stub区域内。这样,到达自治系统的外部路由就可以通过ABR到达。Totally Stub区域
Totally Stub区域既不允许自治系统外部的路由(Type5 LSA)在区域内传播,也不允许区域间路由(Type3 LSA)在区域内传播。
区域内的路由器必须通过ABR学到自治系统外部和其他区域的路由。 ABR会自动产生一条缺省的Summary LSA(Type3 LSA)通告到整个Stub区域内。
Stub区域的E-bit被置位
实例
Q1和Q2所在的area 2为stub或者是stub totally
4.2 NSSA区域
NSSA区域能够将外部路由引入并传播到整个OSPF自治域中,同时又不会学习来自OSPF网络其它区域的5类LSA 包括NSSA和Totally NSSA OSPF规定Stub区域是不能引入外部路由的,这样可以避免大量外部路由对Stub区域路由器带宽和存储资源的消耗。对于既需要引入外部路由又要避免外部路由带来的资源消耗的场景,Stub区域就不再满足需求了。因此Stub区域的变形——NSSA区域就产生了。7类LSA 7类LSA是为了支持NSSA区域而新增的一种LSA类型,用于描述引入的外部路由信息。
7类LSA由NSSA区域的自治域边界路由器(ASBR)产生,其扩散范围仅限于边界路由器所在的NSSA区域。
NSSA区域的区域边界路由器(ABR)收到7类LSA时,会有选择地将其转化为5类LSA,以便将外部路由信息通告到OSPF网络的其它区域。 缺省路由也可以通过7类LSA来表示,用于指导流量流向其它自治域。为了将NSSA区域引入的外部路由发布到其它区域,需要把Type-7 LSA转化为Type-5 LSA以便在整个OSPF网络中通告。
option字段P用于告知转化路由器该条7类LSA是否需要转化。 进行转化的是NSSA区域中Router ID最大的区域边界路由器(ABR)。 只有P置位并且Forwarding Address不为0的Type-7 LSA才能转化为Type-5 LSA。Forwarding Address用来表示发送的某个目的地址的报文将被转发到Forwarding Address所指定的地址。
满足以上条件的缺省7类LSA也可以被转化。
区域边界路由器ABR产生的7类LSA不会置位P-bit。注意事项
在NSSA区域中,可能同时存在多个边界路由器。为了防止路由环路产生,边界路由器之间不计算对方发布的缺省路由。
NSSA和Totally NSSA NSSA区域允许引入少量通过本区域的ASBR到达的外部路由,但不允许其他区域的外部路由ASE LSA(Type5 LSA)在区域内传播。即到达自治系统外部的路由只能通过本区域的ASBR到达。
Totally NSSA区域既不允许其他区域的外部路由ASE LSA(Type5 LSA)在区域内传播,也不允许区域间路由(Type3 LSA)在区域内传播。实例
Area 1为nssa区域
引入外部路由55.55.55.0/24
[Q4] ospf 1 router-id 4.4.4.4 area 0.0.0.0 network 10.0.0.0 0.0.0.255 area 0.0.0.1 network 45.0.0.0 0.0.0.255 nssa default-route-advertise no-summary [Q4]display ospf lsdb Area: 0.0.0.1 Type LinkState ID AdvRouter Age Len Sequence Metric Router 4.4.4.4 4.4.4.4 25 48 80000004 1562 Router 55.55.55.55 55.55.55.55 2207 48 80000003 1562 Router 5.5.5.5 5.5.5.5 28 48 80000005 1562 Sum-Net 0.0.0.0 4.4.4.4 30 28 80000001 1 NSSA 0.0.0.0 4.4.4.4 27 36 80000003 1 NSSA 55.55.55.0 55.55.55.55 2228 36 80000001 1 NSSA 55.55.55.0 5.5.5.5 1209 36 80000001 1 NSSA 45.0.0.4 55.55.55.55 2228 36 80000001 1 NSSA 45.0.0.0 55.55.55.55 2228 36 80000002 1 //Q4为NSSA的ABR,向nssa区域通告一条3类lsa的默认路由和一条NSSA的默认路由,这是因为有参数default-route-advertise和 no-summary [Q5] ospf 1 router-id 5.5.5.5 import-route direct route-policy 1111 area 0.0.0.1 network 45.0.0.0 0.0.0.255 nssa
[Q5]display ospf lsdb Area: 0.0.0.1 Type LinkState ID AdvRouter Age Len Sequence Metric Router 4.4.4.4 4.4.4.4 229 48 80000004 1562 Router 55.55.55.55 55.55.55.55 2409 48 80000003 1562 Router 5.5.5.5 5.5.5.5 230 48 80000005 1562 Sum-Net 0.0.0.0 4.4.4.4 234 28 80000001 1 NSSA 55.55.55.0 5.5.5.5 1411 36 80000001 1 NSSA 0.0.0.0 4.4.4.4 231 36 80000003 1 NSSA 55.55.55.0 55.55.55.55 2430 36 80000001 1 NSSA 45.0.0.4 55.55.55.55 2430 36 80000001 1 NSSA 45.0.0.0 55.55.55.55 2430 36 80000002 1
[Q4]display ospf lsdb ase self-originate Type : External Ls id : 55.55.55.0 //Q4将NSSA lsa装换成external lsa发布 Adv rtr : 4.4.4.4 Ls age : 752 Len : 36 Options : E seq# : 80000001 chksum : 0xf9ee Net mask : 255.255.255.0 TOS 0 Metric: 1 E type : 2 Forwarding Address : 45.0.0.5 Tag : 1 Priority : Low
4.3 外部路由和forwarding address Forwarding Address用来表示发送的某个目的地址的报文将被转发到Forwarding Address所指定的地址。
R1和R9连接在一起属于区域area 1,R8属于ospf外部路由器,R1上引入一条静态的路由,这条静态的路由指向R8连接的网段8.8.8.0/24,由于在R1上引入的外部路由会通告给AREA 1中的R9,那么也就是告诉R9去往网段8.8.8.0/24的路径要经过R1(图中蓝线的路径箭头),然而R9和R8之间是通过交换机直连的,R9直接通过交换机去8.8.8.0/24网段(图中红线的路径箭头)要比ospf通告的要优先一些,那么这时就造成了次优路径。
解决这种次优路径的方法就是引入forwarding address,直接告诉R9去往8.8.8.0/24网段的下一条是R8的接口g0/0/0。
开启forwarding address功能时要满足如下条件
(1)引入的外部路由,其对应的出接口开启了ospf(network命令)(2)引入的外部路由,其对应的出接口没有开启了silent-interface(3)引入的外部路由,其对应的出接口是网络类型broadcast或者nbma 如下为R1,R8,R9的配置和测试
R1上的配置:
[R1]interface GigabitEthernet0/0/1 ip address 19.0.0.1 255.255.255.0 # interface GigabitEthernet1/0/0 ip address 100.0.0.1 255.255.255.0 # ospf 1 router-id 10.0.1.1 import-route static area 0.0.0.0 authentication-mode simple plain huawei network 10.0.1.1 0.0.0.0 network 10.0.123.1 0.0.0.0 area 0.0.0.1 network 19.0.0.0 0.0.0.255 network 100.0.0.0 0.0.0.255 //要将出接口宣告进ospf # ip route-static 8.8.8.0 255.255.255.0 GigabitEthernet1/0/0 100.0.0.8
R9配置:
[R9]interface Ethernet0/0/1 ip address 100.0.0.9 255.255.255.0 # interface GigabitEthernet0/0/0 ip address 19.0.0.9 255.255.255.0 # ospf 1 router-id 9.9.9.9 area 0.0.0.1 network 19.0.0.0 0.0.0.255 network 100.0.0.0 0.0.0.255 //要将出接口宣告进ospf R8配置
[R8]interface GigabitEthernet0/0/0 ip address 100.0.0.8 255.255.255.0 # interface LoopBack0 ip address 8.8.8.8 255.255.255.0 # ip route-static 0.0.0.0 0.0.0.0 GigabitEthernet0/0/0 100.0.0.1 #
R1上的外部路由通告
[R1]display ospf lsdb ase self-originate
OSPF Process 1 with Router ID 10.0.1.1 Link State Database Type : External Ls id : 8.8.8.0 Adv rtr : 10.0.1.1 Ls age : 1588 Len : 36 Options : E seq# : 80000001 chksum : 0x3709 Net mask : 255.255.255.0 TOS 0 Metric: 1 E type : 2 Forwarding Address : 100.0.0.8 //告诉其他的路由器的去往8.8.8.0/24的下一跳是100.0.0.8 Tag : 1 Priority : Low
R9上正好下一条是100.0.0.8 [R9]display ip routing-table Destination/Mask Proto Pre Cost Flags NextHop Interface
8.8.8.0/24 O_ASE 150 1 D 100.0.0.8 Ethernet0/0/1
4.4 NSSA和forwarding address NSSA中Forwarding Address的处理
对于NSSA区域中ASBR产生的7类LSA,如果需要转换为5类LSA发布到其他OSPF区域,那么FA必须要填写非零的IP地址
对于7类LSA中FA的填写分为两种情况:
1.如果发布该7类LSA的ASBR满足上文提到的非零FA填写规则,那么就按照该 规则填写。
2.如果发布该7类LSA的ASBR不满足上述条件,那么需要从该路由器上启用OSPF 协议的接口中选择一个进行填写。
对于情况2虽然RFC3101对FA的填写进行了要求,但是并未明确如何填写该FA。在某些组网环境中由于该FA地址的填写不当,有可能会产生次优路由。考虑如下组网:
Router A、Router B、Router C形成NSSA区域,Router A引入外部路由Route a,通过7类LSA通告给Router B和Router C,因为RFC并未明确要求这种情况下该7类LSA中的FA如何填写,Router A可能会选择Int 1的IP地址填写FA,那么对于Router C来讲,到达Int 1有两条路径,一条是通过RouterA到达路径 Cost为100,另一条是通过Router B到达路径Cost为80,因此Router C将选择通过Router B的路径,很明显它实际上选择了一条次优路径。
如果在填写FA时,使用Loopback接口地址进行填写,可以解决上述问题。
实例:
Q5引入外部路由之后由router-id最大的ABR将Type 7类型的lsa转换成外部路由Type 5,这本例中Q4的router-id比Q3大,所以由Q4将Type 7类型的lsa转换成外部路由Type 5。
Q5产生type 7外部路由forwarding address为5.5.5.5
4.5 外部路由选路规则和forwarding address OSPF如何维护LSDB 5.1 LSA的新旧比较
(1)当网络拓扑发生变化时,lsa的序列号会+1,比较序列号,序列号越大越优先
(2)序列号相同,比较老化时间,越小越优先 采取的措施是泛红,回馈,丢弃。
5.2 checksum校验和 5.3 计时器
60分钟刷新删除陈旧的LSA 30分钟泛红自己的LSA 5.4 更改lsa规则
自己更改自己,别人不能更改,否则lsa破坏风暴。6 OSPF选路规则
OSPF路由聚合
OSPF扩展特性
8.1 virtual-link详解
8.2 认证
认证分类
接口认证 区域认证
认证方式
Null Simple MD5 HMAC-MD5 当两种验证方式都存在时,优先使用接口验证方式。
8.3 Database Overflow 数据库超限
限制非缺省外部路由数量,避免数据库超限
通过设置路由器上非缺省外部路由数量的上限,来避免数据库超限。OSPF网络中所有路由器都必须配置相同的上限值。这样,只要路由器上外部路由的数量达到该上限,路由器就进入Overflow状态,并同时启动超限状态定时器(默认超时时间为5秒),路由器在定时器超过5秒后自动退出超限状态。OSPF Database Overflow过程
进入Overflow状态时,路由器删除所有自己产生的非缺省外部路由。 处于Overflow状态中,路由器不产生非缺省外部路由,丢弃新收到的非缺省外部路由且不回复确认报文,当超限状态定时器超时,检查外部路由数量是否仍然超过上限,如果超限则重启定时器,如果没有则退出超限状态。
退出Overflow状态时,删除超限状态定时器,产生非缺省外部路由,接收新收到的非缺省外部路由,回复确认报文,准备下一次进入超限状态。
8.4 Demand circuit(DC按需链路)缺省路由
普通区域
ASBR上手动配置产生缺省5类LSA,通告到整个OSPF自治域(特殊区域)
Stub区域
ABR自动产生一条缺省3类LSA,通告到整个Stub区域内
Totally Stub区域
ABR自动产生一条缺省3类LSA,通告到整个Stub区域内
NSSA区域
在ABR手动配置产生一条缺省7类LSA,通告到整个NSSA区域内 在ASBR手动配置产生一条缺省7类LSA,通告到整个NSSA区域内
Totally NSSA区域
ABR自动产生一条缺省3类LSA,通告到整个NSSA区域内
OSPF缺省路由通常应用于下面两种情况 由ABR发布缺省3类LSA,用来指导区域内路由器进行区域之间报文的转发。
由ASBR发布缺省5类LSA,或者缺省7类LSA,用来指导自治系统(AS)内路由器进行自治系统外报文的转发。注意事项
当路由器无精确匹配的路由时,就可以通过缺省路由进行报文转发。由于OSPF路由的分级管理,3类缺省路由的优先级高于5和7类缺省路由。 如果OSPF路由器已经发布了缺省路由LSA,那么不再学习其它路由器发布的相同类型缺省路由。即路由计算时不再计算其它路由器发布的相同类型的缺省路由LSA,但数据库中存有对应LSA。 外部缺省路由的发布如果要依赖于其它路由,那么被依赖的路由不能是本OSPF路由域内的路由,即不是本进程OSPF学习到的路由。因为外部缺省路由的作用是用于指导报文的域外转发,而本OSPF路由域的路由的下一跳都指向了域内,不能满足指导报文域外转发的要求。不同区域的缺省路由发布原则 普通区域
• 缺省情况下,普通OSPF区域内的OSPF路由器是不会产生缺省路由的,即使它有缺省路由。
NSSA区域
• 如果希望到达自治系统外部的路由通过该区域的ASBR到达,而其它外部路由通过其它区域出去。则必须在ABR上手动通过命令进行配置,使ABR产生一条缺省的7类LSA,通告到整个NSSA区域内。这样,除了某少部分路由通过NSSA的ASBR到达,其它路由都可以通过NSSA的ABR到达其它区域的ASBR出去。
• 如果希望所有的外部路由只通过本区域NSSA的ASBR到达。则必须在ASBR上手动通过命令进行配置,使ASBR产生一条缺省7类LSA,通告到整个NSSA区域内。这样,所有的外部路由就只能通过本区域NSSA的ASBR到达。
• 上面两种情况使用相同的命令在不同的视图下进行配置,区别是在ABR上无论路由表中是否存在路由0.0.0.0,都会产生7类LSA缺省路由,而在ASBR上只有当路由表中存在路由0.0.0.0时,才会产生7类LSA缺省路由。
• 7类LSA缺省路由不会在ABR上转换成Type5 LSA缺省路由泛洪到整个OSPF域。
Totally NSSA区域
• 区域内的路由器必须通过ABR学到其他区域的路由。
一、OSPF缺省路由通常应用于下面两种情况:
1.由区域边界路由器(ABR)发布(三类缺省SUMMARY LSA), 用来指导区域内路由器进行区域之间报文的转发。
2.由自治系统边界路由器(ASBR)发布(五类外部缺省ASE LSA,或者七类外部缺省NSSA LSA),用来指导OSPF路由域内路由器进行域外报文的转发。
当路由器无精确匹配的路由时,就可以通过缺省路由进行报文转发。由于OSPF路由的分级管理,三类缺省路由的优先级要高于五/七类路由。
(注:不同的OSPF进程认为属于不同的OSPF路由域)
(注:VRP V3具体区分五/七类路由OSPF-ASE、OSPF-NSSA,VRP V5对五/七类LSA都生成OSPF-ASE路由)
二、OSPF缺省路由的几个基本原则:
1.如果OSPF路由器已经发布了缺省路由LSA,那么不再学习其它路由器发布的相同类型缺省路由(即路由计算时不再计算其它路由器发布的相同类型缺省路由LSA)。
原因主要有以下两点:
a 本路由器自身已经具有对外的出口,所以不需要学习其它路由器发布的缺省路由。
b 如果学习其它路由器发布的缺省路由,就会形成缺省路由的下一条相互指向,造成路由环路。
2.OSPF路由器只有具有对外的出口时,才能够发布缺省路由LSA。
a 因此对于区域边界路由器(ABR),一旦失去跟骨干区域的连接(骨干区域没有FULL邻居),那么就要停止发布缺省路由。这主要用于解决当区域存在多个出口的ABR时,此时可以通过别的ABR出口继续转发报文。
b 因此对于自治系统边界路由器(ASBR),一旦失去对外的连接(例如依赖的外部路由消失),那么就要停止发布缺省路由。这主要用于解决当OSPF路由域存在多个出口的ASBR时,可以通过别的ASBR出口继续转发报文。
3.外部缺省路由的发布如果依赖于其它的路由,那么被依赖的路由不能是本OSPF路由域内的路由(即不是本进程OSPF学习到的路由)。
因为,外部缺省路由要用于指导报文的域外转发,而本OSPF路由域的路由下一条都指向了域内。
三、OSPF各种缺省路由情况具体分析
a外部缺省路由不能通过引入或者转换产生,是由命令指定产生的。
b路由器一旦发布外部缺省路由,就是ASBR路由器。
c只有区域边界路由器(ABR)才能发布三类缺省路由。
1. STUB AREA的TYPE3 缺省路由
ABR路由器发布,传播范围为本STUB区域。
根据基本原则1、2:
a 当存在骨干区域的FULL邻居时,需要发布缺省路由。同时不学习其它路由器发布的三类缺省路由LSA(此时,根据RFC2328路由计算使用骨干区域SUMMARY LSA,所以不会学习到其它路由器发布到STUB区域的三类缺省路由LSA)。
b当不存在骨干区域的邻居或者骨干区域邻居DOWN时,需要取消发布缺省路由。同时学习其它路由器发布的三类缺省路由LSA(此时,路由计算使用各个非骨干区域SUMMARY LSA)。
对于PE路由器,不需要判断骨干区域是否有FULL邻居。始终发布缺省路由,同时不学习其它PE路由器发布的缺省路由LSA(通过DN比特实现)。
(注:PE路由器,VRP V3会生成骨干区域,VRP V5不生成骨干区域)
2. NSSA AREA的TYPE3 缺省路由
ABR路由器配置NO-SUMMARY后发布,传播范围为本NSSA区域。
其它规格同STUB AREA的TYPE3 缺省路由。
3. DEFAULT-ROUTE-ADVERTISE SUMMARY的TYPE3 缺省路由
只有是PE路由器时才发布缺省路由。同时不学习其它路由器发布的缺省路由LSA(需要通过DN比特实现)。
(注:此命令只存在于VRP V5 OSPF。)
4. DEFAULT-ROUTE-ADVERTISE ALWAYS的TYPE5 缺省路由
始终发布缺省路由,同时不学习其它路由器发布的缺省路由LSA。
不能根据外部连接的变化动态调节缺省路由的发布和删除,实际应用不太灵活。
5. DEFAULT-ROUTE-ADVERTISE的TYPE5 缺省路由
只有路由表中存在活跃的缺省路由时(不是本OSPF进程学习到的路由),才会发布缺省路由LSA。
如果OSPF路由器已经发布了五类外部缺省路由LSA,那么不再学习其它路由器发布的五类外部缺省路由。(这点VRP V3也没有实现)
6. DEFAULT-ROUTE-ADVERTISE ROUTE-POLICY的TYPE5 缺省路由
只有ROUTE-POLICY匹配时,才会发布缺省路由LSA。
如果OSPF路由器已经发布了五类外部缺省路由LSA,那么不再学习其它路由器发布的五类外部缺省路由。
7. NSSA AREA DEFAULT-ROUTE-ADVERTISE的TYPE7 缺省路由
当是区域边界路由器(ABR)(且存在骨干区域的FULL邻居)时,发布七类外部缺省路由(P标志设0)。同时不学习其它路由器发布的七类外部缺省路由 LSA。这条缺省路由的作用是指导NSSA区域的报文通过骨干区域向外转发(由于NSSA区域不学习ASE LSA)。
当不是区域边界路由器 时,只有路由表中存在活跃的缺省路由时(不是本OSPF进程学习到的路由),才会发布缺省路由LSA(P标志设1)。同时不学习其它路由器发布的七类外部 缺省路由LSA。这条缺省路由的作用是指导NSSA区域的报文通过本ASBR路由器直接向外转发(这种情况在实际应用中并不多见)。
第四篇:OSPF知识点总结
OSPF四种网络类型:
Broadcast:一般为以太网,组播发送协议报文,选举DR、BDR NBMA:FR、ATM等链路层协议;虽然跨接口,但是都在同一网段
Point-to-Point:PPP,不选举DR/BDR,把两端端口的类型配置为P2P方式,可以加快协议收敛,因为不需要再选举DR/BDR了
Point-to-Multipoint:手动改成的,多播hello包自动发现邻居,不选DR/BDR
OSPF五种网络交互报文:
Hello报文:发现及维持邻居关系,选举DR,BDR 周期性发给邻居路由器,使用组播224.0.0.5,DR/BDR使用组播224.0.0.6;间隔时间:广播网络10s,dead-timer40s;点到点30s。
DD报文:本地LSDB的摘要
内容包括LSDB中每条LSA的摘要;用来确定Exchang阶段的主从关系(空DD报文)。 LSR报文:向对端请求本端没有或对端的更新的LSA 包括本端向对端申请的LSA的摘要 LSU报文:向对方发送其需要的LSA 内容是多条LSA(完整内容)
LSAck报文:收到LSU之后,进行确认(是对LSA的确认)内容是多条LSA的报文头
OSPF七种协议状态:
Down:这是邻居的初始状态,表示没有从邻居收到任何信息。在NBMA网络上,此状态下仍然可以向静态配置的邻居发送Hello报文,发送间隔为PollInterval,通常和RouterDeadInterval间隔相同。
Attempt:此状态只在NBMA网络上存在,表示没有收到邻居的任何信息,但是已经周期性的向邻居发送报文,发送间隔为HelloInterval。如果RouterDeadInterval间隔内未收到邻居的Hello报文,则转为Down状态。Init:在此状态下,路由器已经从邻居收到了Hello报文,但是自己不在所收到的Hello报文的邻居列表中,表示尚未与邻居建立双向通信关系。在此状态下的邻居要被包含在自己所发送的Hello报文的邻居列表中。2-WayReceived:此事件表示路由器发现与邻居的双向通信已经开始(发现自己在邻居发送的Hello报文的邻居列表中)。Init状态下产生此事件之后,如果需要和邻居建立邻接关系则进入ExStart状态,开始数据库同步过程,如果不能与邻居建立邻接关系则进入2-Way。2-Way:在此状态下,双向通信已经建立,但是没有与邻居建立邻接关系。这是建立邻接关系以前的最高级状态。
1-WayReceived:此事件表示路由器发现自己没有在邻居发送Hello报文的邻居列表中,通常是由于对端邻居重启造成的。
ExStart:这是形成邻接关系的第一个步骤,邻居状态变成此状态以后,路由器开始向邻居发送DD报文。主从关系是在此状态下形成的;初始DD序列号是在此状态下决定的。在此状态下发送的DD报文不包含链路状态描述。
Exchange:此状态下路由器相互发送包含链路状态信息摘要的DD报文,描述本地LSDB的内容。Loading:相互发送LS Request报文请求LSA,发送LS Update通告LSA。Full:两路由器的LSDB已经同步。
DR选举:
1,首先参选的各方都要进入2-way阶段,具有选举资格的路由器列入列表(若无具有选举资格的则停留在2-way状态);
2,Hello报文做选票(在Hello报文中标出自己所认为的DR),所有路由器刚开始都认为自己是DR,也都认为自己是BDR;
3,优先级最大当选,优先级相同,则router id(loopback地址)最大当选。先选举BDR,再选DR(华为设备刚好相反)
4,选举成功后,新加入路由器,不重新选举。(最先初始化的两台路由器成为DR和BDR)
DD字段解释:
Interface MTU:在不分片的情况下,此接口最大可发出的IP报文长度。
I(Initial):当发送连续多个DD报文时,如果这是第一个DD报文,则置为1,否则置为0。
M(More):当发送连续多个DD报文时,如果这是最后一个DD报文,则置为0。否则置为1,表示后面还有其他的DD报文。
MS(Master/Slave):当两台OSPF路由器交换DD报文时,首先需要确定双方的主从关系,Router ID大的一方会成为Master。当值为1时表示发送方为Master。
DD Sequence Number:DD报文序列号,由Master方规定起始序列号,每发送一个DD报文序列号加1,Slave方使用Master的序列号作为确认。主从双方利用序列号来保证DD报文传输的可靠性和完整性。注:在Master/Slaver选举中,RID大者优先。
OSPF报文头:
OSPF直接运行于IP协议之上,使用IP协议号89。所有的OSPF报文使用相同的OSPF报文头部。Version #:
OSPF协议号,应当被设置成2。Type:
OSPF报文类型,OSPF共有五种报文。TYPE类型:5种类型Hello,DD,LSR,LSU和LSAck。Packet length:
OSPF报文总长度,包括报文头部。单位是字节。Router ID:
生成此报文的路由器的Router ID。Area ID: 此报文所属的区域。AuType:
验证此报文所应当使用的验证方法。AuType:0无需认证,1明文认证,2密文认证,4保留 Authentication:
验证此报文时所需要的密码等信息。
LSA报文头:
每个LSA头部都20个字节。
每个LSA由LS Type,Link State ID以及Advertising Router三个值来唯一区分; 通过LS老化,LS序列号以及LS校验和来识别哪个LSA是最新的。多种OSPF报文可以携带LSA。LS age:
此字段表示LSA已经生存的时间,单位是秒。LS type:
此字段标识了LSA的格式和功能。Link State ID:
此字段是该LSA所描述的那部分链路的标识。例如Router ID等。Advertising Router:
此字段是产生此LSA的路由器的Router ID。LS sequence number:
此字段用于检测旧的和重复的LSA。
LS type,Link State ID和Advertising Router的组合共同标识一条LSA。
七种LSA报文解读(重点):
Router-LSA 由每个路由器生成,描述了路由器的链路状态和花费,传递到整个区域(type1)
--区域内各个路由器生成关于自己各个接口所连网段的链路状态信息,并发送给本区域的DR和BDR,由DR对这些信息进行汇总。
1、描述区域内部与路由器直连的链路的信息(包括链路类型,Cost等)
2、所有链路信息放在一个LSA里进行描述
3、Type1 LSA只在区域内部扩散
4、LSA中会标识路由器是否是ABR(Bbit置位),ASBR(E比特置位)或者是Vlink(V比特置位)的端点
5、LSA中会标识路由器所支持的Option功能标记(如E)Network-LSA 由DR生成,描述了本网段的链路状态,传递到整个区域(type2)
--DR汇总各个路由器所发的LSA,汇总后发给区域内的各个路由器。列出区域内每个网段的信息及该网段上所连路由器的地址。
1、描述TransNet(包括Broadcast和NBMA网络)网络信息
2、由DR生成,描述其在该网络上连接的所有路由器以及网段掩码信息
3、Type 2 LSA只在区域内部扩散
4、Type 2 LSA的意义在于:发现拓扑以及进行SPF计算时,整个Multi-Access网络会浓缩成一个节点(伪节点)
5、OSPF路由器根据type1和type2计算出区域内的路由,满足负载均衡条件就可以生成等价路由。
Net-Summary-LSA 由ABR生成,描述了ABR到某区域外AS内的某一网段的路由的费用,传递到自己区域内,供其它路由器计算最佳路由(type3)
--通告某一区域的某个网段以及ABR到该网段的花费(包括通告该路由的路由器),可对路由信息进行汇总。
1、由ABR生成,将所连接区域内部的链路信息以子网的形式扩散到邻区域,会扩散到邻区域所有路由器;路由器根据type3计算区域间路由,下一跳指向发布type3的路由器的routerid,最终根据区域内路由迭代出直连路由,如果区域内路由到该routerid是负载均衡的,那么就能生成等价路由;
2、Type3 LSA实际上就是将区域内部的Type1(lsid为主机地址)/Type2(lsid为网段地址)的信息收集起来以路由子网的形式扩散出去,这就是Summay LSA中Summay的含义(注意这里的summary与路由聚合没有关系)每个接口网段生成一个Type3 LSA ???
3、ABR收到来自同区域其它ABR传来的Type3 LSA(不一定是另外一个区域的,只要是自己没有生成的)后重新生成新的Type3 LSA(Advertising Router改为自己)后继续在整个OSPF系统内扩散,Type3 LSA的扩散本质上属于DV行为;
4、ABR收到的Type3 LSA与自己生成的相同,此LSA不做计算(避免环路)
注:针对Type3LSA,生成路由的规则:自己是ABR,会首先针对这个区域生成相应的Type3,此时收到其它ABR发过来Type3 LSA:a)如果是相同的Type3(即自己已经生成了),则只保留、不生成路由,也不生成新的Type3,因为区域内路由优先于区域间路由;b)如果没有生成过,则重新生成一个新的Type3,继续传递,同时生成路由,指向原ABR。
自己非该区域的ABR,收到多个ABR生成的Type3,则分别生成区域间路由参与竞争,如果cost相同,就可以进行负载均衡了。
注意路由器与ABR出现多条直连链路的情况,多个OSPF邻居都可以建立,每个邻居关系也会收到type3,但由于生成的type3都一样,所以实际上只看到一个,不过计算出来的区域间路由,则可能是多条路由迭代的??????
5、如果Type3 LSA来自不同的AREA,那么即使cost相同,也不会形成负载均衡,我司设备的实现是:最新到来的Type3 LSA最终生效,包括最后配置的,及最近undo shutdown的。解决方法:创建vlink,使骨干区域的路由可以以Type1 LSA方式引入路由器,从而达到负载均衡的目的。type5路由被认为都是来自area0的,所以不受该规则影响。
6、如果是ABR,那么其对于type3/4路由,就只学习从骨干区域过来的type3/4路由(张延新),从非骨干区域邻居传递过来的type3/4路由,只要其认为自己还是ABR,就不会学习。如果area 0内存在处于FULL的邻居,则该area0不能通过非骨干区域的type3 LSA学习路由。否则可以。(顾德访)注:ABR的判断原则:配置了包括骨干区域的多个区域,且骨干区域内至少有一个端口的OSPF邻居状态处于FULL状态。其通过在其type1报文中置位相应位,告知同区域邻居其地位。
Asbr-Summary-LSA 由ABR生成,描述了到ASBR的路由,传递到相关区域(type4)---路由信息 --若某个区域存在一个ASBR,则发布一条type4报文指出该ASBR的router id以及ABR到该ASBR的花费。
1、由ABR生成,格式与Type3相同,描述的目标网络是一个ASBR的RouterID
2、Type4 LSA的触发条件为:ABR收到一个Type5 LSA
3、Type4 LSA的意义在于让区域内部路由器知道如何到达ASBR(Type5 LSA是在整个OSPF系统内扩散的,Advertising Router始终为ASBR)
4、每个ABR在收到type5时都会在各个区域生成一个type4。
5、自己就是asbr的话,不会生成指向自己的type4;
AS-External-LSA 由ASBR生成,描述了到AS外部的路由,传递到整个AS(STUB区域除外)(type5)--引入的外部路由网段及ASBR到该网段的花费,另外还有公布的FA,即下一跳地址(若为0.0.0.0则表示为本ASBR)
1、由ASBR生成,描述OSPF系统外部的路由信息,一般为引入的其他协议的路由;
2、Type5 LSA一旦生成,将在整个OSPF系统内扩散(Stub Total-Stub NSSA Totally-NSSA除外),不同ASBR生成的相同的外部路由Type5将会在domain内共存(我司的做法);
3、Type5 LSA携带Tag信息(我司默认为1)该参数不用于路由计算,其意义在于对于外部路由可以据此参数进行路由策略的制定(类似于BGP中的Community)
4、Type5 LSA以两种方式在OSPF Domain内扩散(默认为E2):类型1(E置位为0)需要把外部花费与内部花费叠加;类型2只要关注外部花费即可。
5、Type5 LSA中的Forwading Address地址分非0和全0两种情况。
6、路由器收到Type5 LSA后,如果本地没有生成相同的Type5,则会照单全收,根据每个Type5结合Type4计算外部路由;如果路由表中有一条优先级值大于150的相同前缀的非OSPF路由,则会计算收到的Type5LSA,同时把优先级为150的O-ASE路由放入总路由表,然后撤销本地生成的Type5LSA(因为OSPF引入路由是看该路由是否加入到了总路由表,而该非OSPF的路由由于竞争不过O-ASE路由而被撤销);如果路由表中有一条优先级值小于150的相同前缀的非OSPF路由,则计算收到的Type5LSA,存放于OSPF路由表,但不会放入全局路由表(因为O-ASE的优先级低于这个非OSPF路由,同时如果OSPF还是会引入该路由而产生Type5)
7、OSPF引入其它协议路由的条件是:该路由已经通过竞争加入到全局路由表了。
注:路由器根据Type5指示的外部路由,然后基于每个type4,会分别生成一条OSPF路由(我司的方案是如果多个ASBR生成相同的Type5,则每个ASBR都是Originator),计算出来的路由,只要满足负载均衡条件,且小于配置的最大配置负载均衡数,生成路由参与整路由表的计算,不过如果asbr指示的路由就不均衡的话,那么就会选出最优的asbr,来计算ase路由。下一跳根据Forwading Address进行计算。如果为全0,则根据type4指示的ASBR进行迭代计算;
如果非全0:1)在收到Type5的OSPF域内路由器上,如果FA为非0,根据FA地址查找路由表,若有匹配的OSPF内部路由(区域内或者区域间),则以此FA地址作为出口计算外部路由;否则将认为此Type5 LSA无效;2)我司设备查找OSPF路由表(Display ospf routing-table)思科查找全局路由表
3)在OSPF路由表中只要能查找到对应的OSPF内部路由即可(无须最长匹配)思科在进行路由查找时遵循最长匹配的原则。已证实。
8、如果路由器上在不同area计算的外部路由cost相同,那么也无法形成负载均衡,而是根据协议会选择area id大的路由。不对,已证实,老苗的文档
NSSA External LSA 由ASBR生成,作为nssa区域内的路由器引入外部路由时使用(type7)
--在NSSA的ABR将NSSA内部产生的Type 7类型的LSA(P位置1)转化为Type 5类型的LSA再发布出去,并同时更改LSA的发布者为ABR自己
标记:N:NSSA P:Propagation(通知ABR路由器转换此LSA并继续扩散),NSSA ABR(R2)收到Type7 LSA后自动转换成Type5 LSA。对于做转换作用的abr,一个区域只能有一个,通过竞争选择出来。在7类lsa进行聚合时,无论聚合前lsa的FA地址是否相同,聚合后lsa的FA地址规则如下:
1、如果在nssa区域内使能了loopback接口,则优先选择loopback接口地址为FA地址,如果使能了多个loopback接口则优选接口地址大的为FA地址。如果此时去使能loopback接口,则选择在nssa区域内接口地址最大的网段地址为FA地址
2、如果没有使能loopback接口,则按照display cu的顺序选择首先在nssa区域使能ospf的接口地址作为FA地址
3、如果聚合后的lsa的FA地址已经选择了最大的接口地址,此时将最大的接口地址undo,则会选择次大的接口地址,以此类推,但是如果重新network一个更大的接口IP地址,那么不会重选,如果重新network一个更大的loopabck地址,会重选。
NSSA的FA地址肯定为非0.0.0.0(一般为ASBR的loopback接口),ABR将type7转换为type5时,不会改变FA,所以area0内只要到这个FA的路由均衡,就能实现负载均衡。已实验证实
注意:Type7 LSA携带FA的原则(在生成该ASE的ASBR上)需要转换的Type7 LSA(P-bit置1)必须携带非零FA,转换为type5 LSA时FA不变,满足前面type5 LSA对应条件时,type7 LSA携带FA为该路由的直接下一跳地址;否则,RFC1587规定任选一个使能OSPF的接口地址作为FA。RFC3101做了进一步的限定,建议选择顺序如下: 优选使能OSPF的Loopback接口地址
选择使能OSPF的stub接口(无邻居的接口)地址 选择使能OSPF的其它接口地址 等值路由形成的基本条件:
1、路由类型一致、cost相同
2、所属区域一样(外部路由无此限制)
3、直接下一跳不同
4、E2外部路由还需要到ASBR/FA的路径等值(Cisco的实现无此限制)
FA的填充规则:
1)Ase Lsa:
当ASBR引入外部路由,并且ospf在被引入路由的下一跳的接口上enable,并且ASBR的下一跳接口的网络类型被定义为broadcast或nbma,FA被填写成非0;其他P-to-P或者P-to-MP或者passive接口都填0。2)NSSA if(loopback被使能到相同的NSSA区且接口UP){loopback被填充为FA} else{当ASBR引入外部路由,并且ospf在被引入路由的下一跳的接口上enable,并且ASBR的下一跳接口的网络类型被定义为broadcast或nbma,,FA被填写成非0;其他第一个被使能到NSSA区域的接口} 注:NSSA的FA地址优选本区域内network的loopback地址,如果没有,则在network的实际接口地址中选择地址较小的一个作为FA来填充。但是就是不会为全0
OSPF的type5路由的的FA地址为非0的条件:
1、该ASE的下一跳逻辑路由为OSPF内部路由或本地启用OSPF的直连网段路由;
2、下一跳对应的路由的出接口为广播链路或NBMA,且该接口为非silent接口;
3、下一跳对应路由的直接下一跳地址落在OSPF协议中network发布的网络地址范围内(新版本不再检查该规则)
满足上述三个条件,则生成的FA地址为该路由的直接下一跳地址,除非FA对应的接口down或去使能OSPF,否则LSA不会因为其他接口使能OSPF而更新。
OSPF各种区域解读(重点):
Transit区域:主要负责IP包的传输,互联OSPF其它区域,可以接收Summary LSA和External LSA,会转发来自骨干区域的所有LSA。
注:当一个网段上没有发现其他ospf路由器(譬如没有其他hello报文)时,被识别为一个stubnet网络。一旦邻居起来了,开始发hello时,网络就变为transit网络了。
STUB区域:允许学习type3 LSA;但拒绝type5 LSA(接收一条Default LSA作为Type3 LSA用以弥补)stub 所有与骨干区域相连的abr会向stub区域发布一条type3的缺省路由,然后按照type3的选路规则进行路由计算,多个abr的话,就有可能产生多条缺省路由,如果满足负载均衡条件的话。不过当其中一个abr收到其它abr的type3缺省路由,是不会去使用的,也不会生成缺省路由。(因为相同的type3,自己不使用) Total Stub区域:拒绝具体的type3,拒绝所有的type5(接收一条Default LSA作为Type3用来弥补)stub no-summary 规则同stub区域,只是total stub区域的路由器也不会接受type3路由。
NSSA区域:允许学习type3(可以配置只接收一条缺省type3),拒绝所有引入的type5,可以由域内的ASBR引入type7路由(并置P为1),到达ABR后,由于转换成type5发布出去。(若是ABR产生的type7,则P置0,则不会被其它ABR转换成type5)nssa [ default-route-advertise ]
1、NSSA区域一旦生成,ASBR 将以Type7 LSA的方式向OSPF注入外部路由信息,该信息只能在NSSA区域内部扩散
2、当Type7 LSA抵达NSSA的ABR时,ABR会扮演Translator功能将Type7 LSA自动转换成Type5 LSA继续在OSPF Domain中扩散,同时将adv修改为自己。
3、如果NSSA中存在两个以上ABR,将进行Translator的竞选,RID高者胜出,然后nssa区域的type7都会由该专职ABR转换为type5,由于一个type7只需要转换为一个type5,所以一个区域只需要一个translater即可。然后路由器结合type4,利用这些type5计算路由,所以是有可能计算出等价路由的。
4、当NSSA的ABR同时作为ASBR时,默认情况下会同时生成Type7 LSA(扩散到NSSA中,不会携带P-Propagation标识)和Type5 LSA扩散到NSSA外;若不希望Type7 LSA扩散到NSSA中(NSSA中有专职的ASBR),在ABR/ASBR上配置参数no-import-route,此时只会产生type5 LSA。
Total Nssa区域:只接收type7类路由 nssa [ default-route-advertise ] [ no-import-route ] no-summary
1、NSSA ABR会自动生成默认路由并以Type3 LSA的方式注入到Totally-NSSA中;
2、拒绝type3、type5类路由。
路由优选原则:
区域内和区域间路由描述的是自治系统内部的网络结构;外部路由则描述了应该如何选择到自治系统以外目的地的路由。
第一类外部路由是指接收的是IGP路由(例如RIP,STATIC),由于这类路由的可信程度高一些,所以计算出的外部路由的花费与自治系统内部的路由花费的数量级是相同的并且和OSPF自身路由的花费具有可比性,即到第一类外部路由的花费值=本路由器到相应的ASBR的花费值+ASBR到该路由目的地址的花费值。
第二类外部路由是指接收的是EGP路由,由于这类路由的可信度比较低,所以OSPF协议认为从ASBR到自治系统之外的花费远远大于在自治系统之内到达ASBR的花费。所以计算路由花费时将主要考虑前者,即到第二类外部路由的花费值=ASBR到该路由目的地址的花费值。如果该值相等,再考虑本路由器到相应的ASBR的花费值。路由优选顺序(从高到低): 1 区域内路由:优选cost小的 2 区域间路由:优选cost小的 3 第一类外部路由(E1 N1):
优选cost小的;
cost相同时,按照RFC1587优选type5 LSA、次选P-bit置1的type7 LSA(目前VRP的实现)
cost相同时,按照RFC3101优选P-bit置1的type7 LSA、次选type5 LSA、最次选Router-ID大的P-bit置0的type7 LSA 4 第二类外部路由(E2 N2)优选cost小的;
cost相同时,优选到ASBR/FA路径短的
cost相同,到ASBR/FA路径也相同时,按照RFC1587优选type5 LSA、次选P-bit置1的type7 LSA(目前VRP的实现)
cost相同,到ASBR/FA路径也相同时,按照RFC3101优选P-bit置1的type7 LSA、次选type5 LSA、最次选Router-ID大的P-bit置0的type7 LSA OSPF外部路由优选(描述同一条路由的1或多条相同类型的type5/type7间LSA):RFC1583compatible使能(兼容OSPFV1规则)
1、计算、确定到每条LSA对应的ASBR/FA的内部最优路径:先针对每条LSA确定OSPF内部路径 FA非0,选择匹配FA地址的最优OSPF内部路由(IA或ia)FA为0,需要计算到ASBR的内部最优路径 优选到ASBR/FA cost最小的路径
到一条LSA对应的ASBR/FA存在多条等值路径时
优选Area ID大的路径 //这条专指到同一个LSA指示的ASBR的通过不同区域的路由,来自不同区域的不同LSA不检查该条规则
同区域时可以形成到ASBR/FA的等值路径
2、计算每条LSA对应的完整路径的整体cost,优选整体cost最小的路径:结合第一条计算出来的OSPF内部路由,再计算整体cost进行比较
Type1且FA为0:LSA中metric+到ASBR的内部最优路径开销
Type1且FA非0:LSA中metric+匹配FA地址的最优OSPF内部路由的cost Type2:LSA中metric;相同时优选到ASBR/FA最短的路径
3、优选整体cost最小的完整路径
多条LSA对应的路径整体cost相同(type2时到各条LSA对应的ASBR/FA的路径cost也相同)时 按照RFC1587优选type5 LSA、次选P-bit置1的type7 LSA(目前VRP的实现)
按照RFC3101优选P-bit置1的type7 LSA、次选type5 LSA、最次选Router-ID大的P-bit置0的type7 LSA 存在多条等值最短路径时形成等值路由(一条LSA可能形成多条等值路径)
RFC1583compatible去使能(RFC2328 OSPFV2规则,不兼容RFC1583 OSPFV1规则)在该标准中增加到ASBR的路径的优先级属性,并在各种规则前面进行比较
1、计算、确定到每条LSA对应的ASBR/FA的内部最优路径 FA非0,选择匹配FA地址的最优OSPF内部路由(IA或ia)FA为0,需要计算到ASBR的内部最优路径
最优选非骨干区的区域内部路径(Cisco实现与RFC2328不一致,刚好相反)
骨干区区域内部路径与区域间路径优先级相同 解释:对到ASBR的路径赋予优先级属性,非骨干区域内路径优先级最高,其次是骨干区域内路径和区域间路径的优先级相同并次之 存在优先级相同的多条路径时,继续比较路径的cost,优选cost小的 存在同优先级的多条等值路径时 优选Area ID大的路径
同区域时可以形成到ASBR/FA的等值路径
2、基于每条LSA的内部最优路径的优先级对LSA进行筛选,仅路径优先级高的LSA进入第3步计算。比1583使能多了一步,即在比较整体cost前,先比较路径优先级,入选才继续比较 最优选非骨干区的区域内部路径
骨干区区域内部路径与区域间路径优先级相同
3、计算每条LSA对应的完整路径的整体cost,优选整体cost最小的路径 Type1且FA为0:LSA中metric+到ASBR的内部最优路径开销
Type1且FA非0:LSA中metric+匹配FA地址的最优OSPF内部路由的cost Type2:LSA中metric;相同时优选到ASBR/FA最短的路径
4、优选整体cost最小的完整路径
多条LSA对应的路径整体cost相同(type2时到各条LSA对应的ASBR/FA的路径cost也相同)时 按照RFC1587优选type5 LSA、次选P-bit置1的type7 LSA(目前VRP的实现)
按照RFC3101优选P-bit置1的type7 LSA、次选type5 LSA、最次选Router-ID大的P-bit置0的type7 LSA 存在多条等值最短路径时形成等值路由(一条LSA可能形成多条等值路径)
OSPF快收敛:
1、邻居的hello和dead间隔时间,命令为 ospf timer hello interval
2、设置SPF计算间隔,spf-schedule-interval { interval1 | millisecond interval2 },(缺省5秒),缩短两次SPF算法运行的间隔时间来加快收敛。
3、配置LSA的更新时间间隔,命令lsa-originate-interval 0,指定LSA的更新时间间隔为0来取消LSA的更新时间间隔,使得拓扑或者路由的变化可以立即通过LSA发布到网络中
4、配置LSA被接收的时间间隔,命令为lsa-arrival-interval 0,指定LSA被接收的时间间隔为0,使得拓扑或者路由的变化能够立即被感知到。
5、减少接口传送LSA的延迟时间,命令为ospf trans-delay interval OSPF目前不支持I-SPF,PRC以及智能定时器等快收敛手段,只能通过调整部分参数来达到快速收敛的目的。具体可以调整的参数如下:
1、调整OSPF协议SPF计算的间隔,命令为:spf-schedule-interval { interval1 | millisecond interval2 },设置SPF计算间隔。
默认的SPF计算间隔为5s,用户可以配置的范围包括两个档次,可以配置秒级间隔,即1s~10s,也可以配置毫秒级间隔,范围为1ms~10000ms,配置时应根据网络规模以及稳定情况进行调整。IGP快收敛设计到多个方面的优化,不宜仅将计算间隔调的过小,避免产生不必要的震荡。
2、调整OSPF协议LSA产生的间隔,命令为:lsa-originate-interval 0,配置LSA的更新时间间隔。缺省情况下,LSA的更新时间间隔为5秒。OSPF协议规定LSA的更新时间间隔5秒,是为了防止网络连接或者路由频繁动荡引起的过多占用网络带宽和路由器资源。在网络相对稳定、对路由收敛时间要求较高的组网环境中,可以指定LSA的更新时间间隔为0来取消LSA的更新时间间隔,使得拓扑或者路由的变化可以立即通过LSA发布到网络中,从而加快网络中路由的收敛速度
3、调整LSA被接受的时间间隔:命令为:lsa-arrival-interval 0,配置LSA被接收的时间间隔。缺省情况下,LSA被接收的时间间隔为1秒。在网络相对稳定、对路由收敛时间要求较高的组网环境中,可以指定LSA被接收的时间间隔为0,使得拓扑或者路由的变化能够立即被感知到。
调整OSPF协议广播链路或NBMA链路上的接口类型:OSPF协议在广播或者NBMA链路上会首先选举DR,和BDR设备,然后其它的DR other路由器和DR,BDR之间建立邻接关系,DR和BDR之间也建立邻接关系。
4、为了提高链路上邻居建立的速度,我们可以将背靠背连接两台路由器的广播或者NBMA链路调整OSPF的链路类型为P2P。具体命令为:ospf network-type p2p。
OSPF附录E问题:
为什么在OSPF中引入的两条路由不能同时发布:
这个是VRP3.0的历史遗留问题,不支持附录E。实际上一般情况下静态路由都可以正确发布的,但对于类似于RFC 2328 Appendix E情况,由于OSPF type 5 LSA的ID是以这些网段的地址来标识的,每一类型的LSA是以Adv RID即产生该LSA的路由器ID、LS Type以及LS ID即所承载的网段的网络地址这三个信息的组合作为其关键值进行区分的。所以同一台路由器产生的或者引入外部路由而生成的这些LSA,对于那些网段地址一样、而掩码信息不一样的路由,路由器认为是同一条LSA,后发布的路由将会直接扔掉。例如对于静态路由172.16.0.0/16和172.16.0.0/24的引入将只会生成一个LSA,其中必有一条路由因不能引入而被丢弃。先发布的LSA一直生效。如果掩码短的生效就不会有问题,因为包含掩码长的路由了。
对于此种情况,在开局过程中应尽量规避。对于无法避免的情况提供以下解决规避措施:
(1)先发布短掩码的路由,这样长掩码的路由虽然丢失,但是其他路由器转发数据包时会最长匹配到短掩码的路由,报文送到此路由器后,再根据最长匹配查找长掩码的路由进行转发。(2)发布更短掩码的路由时,先删除长掩码路由,然后再按照短长掩码顺序network(3)network通告完短掩码路由后,reset ospf process 例:OSPF协议是一种基于链路状态的路由协议,其路由计算是基于链路状态LSA的。当路由器引入静态路由时,通过生成相应的第5类LSA进行洪泛,以此向其他路由器传递拓扑信息。第5类LSA是以对应网段的IP地址来标识的,并协同产生该LSA的路由器ID、LSA的序列号三个信息的组合作为其关键值进行唯一性标识,不关心路由的掩码信息。
在本次案例中,在S8016原来配置一条静态路由222.240.223.0/25,生成了一条第5类LSA往NE80E洪泛;当再配置第二条静态路由222.240.223.0/24时,由于网段IP地址相同,不再生成重复的LSA。这时删除原来的222.240.223.0/25的静态路由,由于刷新机制的问题,OSPF模块不重新为后来的静态路由生成ASE_LSA,而导致路由无法传播。附录E提供的解决方法
最短掩码的路由产生的LSA的LS ID=网络地址 其它路由产生的LSA的LS ID=网络广播地址 兼容效果:
具备附录E功能的路由器可以发布附录E的LSA,也能处理附录E的LSA;不具备附录E功能的路由器不能发布附录E的LSA,但是能处理附录E的LSA。满足附录E的效果:
ip route-static 7.7.0.0 255.255.0.0 NULL0 ip route-static 7.7.0.0 255.255.255.0 20.20.20.2 哪个先发布无所谓,掩码长的ase的ls id对应掩码0的部分会以1填充。disp ospf lsdb ase Type : External Ls id : 7.7.0.255 Adv rtr : 5.5.5.5 Ls age : 9 Len : 36 Options : E seq# : 80000001 chksum : 0xb8f5 Net mask : 255.255.255.0 TOS 0 Metric: 1 E type : 2 Forwarding Address : 0.0.0.0 Tag : 1 Type : External Ls id : 7.7.0.0 Adv rtr : 5.5.5.5 Ls age : 9 Len : 36 Options : E seq# : 80000002 chksum : 0xb6f6 Net mask : 255.255.0.0 TOS 0 Metric: 1 E type : 2 Forwarding Address : 0.0.0.0 Tag : 1
缺省路由的下发方法(重点):
一、Ospf通过两种命令引入缺省路由: default-route-advertise 和default-route-advertise always,配置命令后ospf会产生一条5类lsa向其他路由器泛洪这条缺省路由,由于这条命令不是在特定area视图中配置的,所以产生的type5会引入到所有area(stub、nssa除外)。
缺省情况下,普通OSPF区域内的OSPF路由器是不会产生缺省路由的。当网络中缺省路由是通过其他路由协议产生或其他OSPF进程时(该缺省路由是活跃的,且本ospf进程及ibgp路由),为了能够将缺省路由通告到整个OSPF域中,必须在ASBR上手动通过命令default-route-advertise [ always ]进行配置,如果没有缺省路由,需要在default-route-advertise命令后加上always参数。配置了permit-calculate-other参数的ME设备仍然计算来自于其他ME设备的缺省路由。
注意:完全处于nssa区域的路由器,即使配置了default-route-advertise always,也不会生成type5缺省路由,只能使用nssa default-route-advertis命令,还要依赖总路由表中有已经生效的缺省路由。原则就是OSPF视图下default-route-advertise命令就是创建type5缺省路由的,而type5路由会受到各种规则限制。nssa default-route-advertise命令就是创建type7缺省路由的(携带P标识),受相应规则限制。
二、内部缺省路由(三类lsa):当ospf区域为stub ,totally stub ,totally nssa 区域时(注意没有nssa区域),与骨干网相连的ABR路由器会产生一条3类lsa,向非骨干区域内通告一条缺省路由。ABR自动下发type3类似的缺省路由,但互相不学习其他ABR发布的缺省路由。当然不同区域缺省路由的功能时不一样的:
1、Stub区域内传播1,2,3类LSA。并不知道外部引入的路由。缺省路由的目的时通过ABR去往外部网络。
2、Totally stub区域内只能传播1,2类LSA,只知道自己区域内的路由,外部一切信息都无法感知。这时缺省路由是通往外部的唯一桥梁。
3、Totally NSSA与NSSA区域的区别仅在于前者不允许区域间路由即Type3 Network Summary LSAs注入。区域内的路由器通过ABR知道其他区域的路由。ABR会自动产生一条Link State ID为0.0.0.0,网络掩码为0.0.0.0的Summary LSA(Type3 LSA)通告到整个nssa区域内。
三、nssa区域(非total nssa默认不会发布缺省路由)可以在abr上配置nssa default-route-advertise命令,来向nssa区域发布一条type7的缺省路由(注意是只向nssa区域发布,是否需要本地存在一条缺省路由,要看发布路由器的角色是ASBR还是ABR)。如果nssa的abr在ospf视图中直接配置default-route-advertise命令,则同第一条,发布一个type5的缺省路由,该路由无法进入nssa区域。所以如果向nssa区域注入缺省路由,必须使用nssa default-route-advertise命令注入type7缺省路由,或配置为total nssa区域来默认注入type3缺省路由。
在NSSA ABR或者NSSA ASBR上通过命令NSSA default-route-advertise以Type 7 LSA方式注入默认路由到NSSA中:
1、ASBR上必须拥有默认路由(生成的Type7 LSA携带P标识)
2、ABR上可以没有默认路由(生成的Type7 LSA不携带P标识)
注:OSPF路由器已经发布了缺省路由LSA,如果收到了其它OSPF路由器发布的相同类型缺省路由LSA(能够进入LSDB),但收到的默认路由LSA不会参与SPF计算。
VRP5.x:发布缺省路由时不学习本进程其它路由器发布的默认路由,IBGP缺省路由不满足非强制下发条件
LSA的过滤手段:
OSPF的过滤有两种,一种是对路由表的过滤,这种方式只对配置过滤的路由器起作用,不能阻止LSA的泛洪,因此也不能影响其他路由器生成路由,filter-policy import(VRP)/distribute-list in(IOS);另一种是对LSA的过滤,这种方式其实并不是对LSA过滤,只是阻止LSA的生成,没有了LSA,相应也会影响其他同区域或同自治域的路由器。
对路由表的过滤,适用所有运行OSPF的路由器;其他命令都是阻止LSA的生成,只能过滤原本应该是本路由器产生的LSA,这种过滤只能在LSA生成者上做过滤,ASBR是ASE/NSSA LSA的生成者,ABR是SUMMARY LSA的生成者,NSSA区域的ABR是NSSA转ASE的生成者,所以我们很容易想到这种方式的过滤只能在ABR,ASBR和NSSA区域的ABR上。
OSPF中6种过滤方式:
1、filter-policy import(OSPF)
只能用来过滤OSPF有效路由表里的路由,并不能阻止LSA的泛洪。(除此之外,以下的过滤方式均是对LSA的过滤),被过滤的路由在路由表中为inactive状态。对接收的OSPF区域内、区域间和自制系统外部的路由进行过滤。
对应IOS命令为Router(config-router)# distribute-list 1 in/distribute-list prefix 1 in
对应Junos命令为import policy。IOS并不认为这是一种真正的OSPF过滤。R1路由器上配置两条静态路由,然后import到ospf中。ip route-static 11.11.11.11 255.255.255.255 NULL0 ip route-static 111.111.111.111 255.255.255.255 NULL0 查看R2的路由表
2、filter-policy export[acl/ip-prefix]/import-route(OSPF)[route-policy] 该命令用来在ASBR上对ASE/NSSA过滤,可以对本台路由器引入而产生的ASE/NSSA LSA做过滤,过滤彻底,所有OSPF域的路由器将不会收到被过滤的ASE/NSSA LSA。
对应IOS命令为Router(config-router)#distribute-list x out [rip]/ redistribute rip route-map
在R1上配置filter-policy export的策略,拒绝11.11.11.11/32的lsa进入到ospf中。ospf 1 filter-policy ip-prefix huawei export //阻止引入路由生成ase的lsdb import-route static ip ip-prefix huawei index 10 deny 11.11.11.11 32 ip ip-prefix huawei index 20 permit 0.0.0.0 0 less-equal 32 配置后在R1上查看lsdb,发现已经没有了11.11.11.11/32的ase lsa。[R1]dis ospf lsdb OSPF Process 1 with Router ID 111.111.111.111 Type LinkState ID AdvRouter Age Len Sequence Metric External 111.111.111.111 1.1.1.1 10 36 80000001 1 R2、R3也同样没有了11.11.11.11/32的ase lsa,当然也无法计算出路由来。
3、asbr-summary not-advertise(OSPF)
该命令用来在ASBR上可以对自身产生的ASE/NSSA做过滤,阻止本路由器产生符合特定条件的ASE/NSSA,以及在NSSA区域的ABR上可以对7转5的LSA做过滤,阻止本路由器根据NSSA产生符合特定条件的ASE。对应IOS命令为Router(config-router)#summary-address 10.0.0.0 255.255.25.0 no advertise
NSSA区域的ABR可以在ABR上对Type7转5的LSA进行二次过滤
在R1上配置[R1-ospf-1]asbr-summary 11.11.11.11 255.255.255.255 not-advertise //阻止asbr发布type5的lsdb,或阻止nssa的abr转换type7的lsdb 解释:对路由进行聚合后,可以阻止明细路由发布,同时由于配置了not-advertise参数,所以聚合路由也不会被发布了,于是达到了过滤效果。
配置后,查看R1的lsab发现已经没有了11.11.11.11/32的ase lsa,其他路由器也没有11.11.11.11/32的ase lsa,同样无法计算出路由,过滤彻底。[R1-ospf-1]dis ospf lsdb AS External Database Type LinkState ID AdvRouter Age Len Sequence Metric External 111.111.111.111 1.1.1.1 142 36 80000001 1 对于在ABR上配置7转5时过滤时需要注意以下特性:
ABR全局路由表中只有存在FA地址的路由时,才会将nssa-external转换成external lsa,其他路由器收到这个external的lsa后,还要检查是否有到达fa地址的路由,如果没有,不会参与计算,所以在ABR上如果对fa地址路由(该种过滤无法通过配置suppress-fa来搞定,因为在ABR上根本没有执行nssa-external转external)或lsa进行过滤,都会导致骨干区其他路由器无法计算该路由。如果确实需要进行过滤,那么需要在ABR上配置R2(config-router)#area 100 nssa translate type7 suppress-fa命令。
在上图的组网中,如果想在ABR上做Area 2区域的ASBR地址的LSA过滤,(我司VRP5命令为area视图下abr-summary 100.0.15.0 255.255.255.0 not-advertise,此时在ABR上仍旧有ASBR FA地址的路由和nssa-external路由,该路由器也会将nssa-external lsa转换成external lsa,其他路由器也有external的lsa,但由于没有FA地址的路由,因此该external lsa不会参与计算,无法生成路由)或者(配置distribute-list in过滤掉FA的路由,此时ABR的路由表上由于没有asbr FA地址的路由,也算不出来nssa-external的路由,同时ABR不会将nssa-external转换成external,这样其他路由器根本都不会再有external的lsa),那么会导致Area0的路由器无法到达AS1的网络,因为Area 2中ASBR的地址被写进了Type 7 LSA的FA中,没有到达这个FA地址的路由,Area0中的路由器无法使用这些Type5(7转5)的LSA计算路由。
注:主要原因是在ABR上将FA地址的LSA聚合了,导致Area0中没有这个FA地址路由无法迭代。配置命令:Router(config-router)# area 10 nssa translate type7 suppress-fa 我司目前VRP5.5仍不支持此特性, VRP5.6版本开始支持该特性;Cisco在12.2(15)T版本之后提供此特性。注:在我司VRP5.6之前有一种解决方案,如果在ABR上配置了abr-summary not-advertise对ASBR的路由做了过滤,那么可以在ABR上配置asbr-summary对ase路由进行一次聚合,这样FA地址会改为0,就不会再去查FA地址,保证网络可通。(asbr-sunmary x.x.x.x聚合的网段可以和原来的网段一致,这样也能够发布ase路由,并将FA置0)
4、filter import(area视图)[acl/ip-prefix/route-policy] 该命令用来在ABR上作summary lsa过滤,如果是骨干区域(非骨干区域),就防止从其他非骨干区域(骨干区域)转换到该区域符合特定条件的summary lsa生成,过滤彻底。
对应IOS命令为Router(config-router)# area area-id filter-list prefix prefix-list-name in filter export(area视图)[acl/ip-prefix/route-policy] 命令用来在ABR上作summary lsa过滤,如果是骨干区域(非骨干区域),就阻止从该区域转换到其他非骨干区域(骨干区域)符合特定条件的summary lsa生成,过滤彻底。
对应IOS命令为Router(config-router)# area area-id filter-list prefix prefix-list-name out
配置summary lsa过滤前,在R3上查看summary lsa的条目:
5、abr-summary not-advertise(area)用来在ABR上summary lsa做过滤,如果是骨干区域(非骨干区域),就防止从该区域转换到其他非骨干区域(骨干区域)符合特定条件的summary lsa生成,类似filter-policy export(area)命令的作用,但又有点区别,该命令只对本区域的区域内路由作过滤不对区域间路由做过滤。(原因是:这条命令是聚合命令,目前我们VRP和IOS的聚合命令的实现是只对本区域的路由做聚合而不对区域间路由做聚合,所以说abr-summary not-advertise这条命令实际只是对本区域的区域内路由起过滤作用。)
对应IOS命令为:Router(config-router)#area 10 range 1.1.1.0 255.255.255.0 no-advertise 在R2上配置abr-summary过滤1.1.1.1/32的summary lsa。
[R2-ospf-1-area-0.0.0.100]abr-summary 1.1.1.1 255.255.255.255 not-advertise //阻止abr生成type3的lsdb(只限本区域的type3,如果是转发其它区域的type3就不行了)配置后在R3上查看lsa,发现已经没有了1.1.1.1的lsa信息。
6、ospf filter-lsa-out 该命令用来在广播、NBMA、P2P以及P2MP网络中,配置对特定OSPF接口出方向的LSA进行过滤。有以下参数: all:对所有的LSA(除了Grace LSA)都进行过滤。summary:对Network Summary LSA(Type3)进行过滤。acl acl-number:指定基本访问控制列表编号。整数形式。ase:对AS External LSA(Type5)进行过滤。nssa:对NSSA LSA(Type7)进行过滤。
通过对特定OSPF接口出方向的LSA进行过滤可以不向邻居发送无用的LSA,从而减少邻居LSDB的大小,提高网络收敛速度。
当两台路由器之间存在多条链路时,通过配置本地路由器可以在某些链路上过滤LSA的传送,减少不必要的重传,节省带宽资源。
在P2MP网络中配置对指定邻居发送的LSA进行过滤时,需要使用filter-lsa-out peer命令。
路由聚合(重点):
在ABR上,通过命令abr-summary x.x.x.x对区域间路由(Type3 LSA)进行聚合,可通过命令advertise配置该聚合路由是否发布。
1、不能跨区域聚合(不能企图聚合来自其它ABR的Type3 LSA,在OSPF中,每个路由器均没有资格去处理其它路由始发的LSA)
2、聚合路由可以跨区域传输(每经过一个区域AdvRouter会发生改变)注意:进行type3类路由聚合时,区域内必须至少有一条在聚合的路由范围内的明细路由在OSPF中使能了,聚合路由才能生效。聚合后,明细路由就不再发布了。相同网络前缀,不同掩码的聚合路由,掩码更长的生效,短掩码的消失???
向本区域也发布一条聚合路由,并且adv都是原router,不管是哪个abr进行的聚合???可能是转换另一个abr聚合的type3得来的。
在ASBR上,通过命令asbr-summary x.x.x.x对外部路由(Type5 LSA Type7 LSA)进行聚合,原则同上。注:NSSA的ABR(Translator)收到的Type7 LSA转换成Type5 LSA后,能够对生成的Type5 LSA进行聚合再扩散出去,所以在NSSA区域中路由存在二次聚合的机会配置了路由聚合后,可以通过手工配置与聚合路由相同前缀/掩码的黑洞路由来避免路由环路。注意ase路由聚合后,FA就统一变成了全0了,下一跳就直接指向做聚合的这台ABR了。OSPF路由聚合:
1、OSPF内部路由和外部路由的聚合是独立进行的
2、OSPF内部路由聚合(只能在ABR上进行): abr-summary 20.0.0.0 255.255.255.0 仅能聚合ABR发给其它区域的本区域内部路由(即谁产生的路由,谁负责聚合,其他ABR发布的type3本地仅能修改adv后转发),聚合路由LSA的metric=最差明细路由cost 加上no-advertise参数可以实现type3 LSA过滤
注意聚合后,该聚合路由所涵盖的type3的明细路由就不再发布了,目前没有机制可以使明细路由发布。多ABR区域注意聚合的一致性(否则可能导致流量一边倒)
3、外部路由聚合(只能在ASBR上进行): asbr-summary 10.0.0.0 255.255.0.0 仅能聚合本地引入的外部路由(本ASBR产生的type5才能在发布时进行操作,也就是聚合)加上no-advertise参数可以实现type5/type7 LSA过滤
NSSA区域Translator ABR可以(且只能由translator执行)聚合整个区域NSSA路由。但注意聚合后FA丢失,可能造成回程流量一边倒。聚合路由属性:
聚合路由的类型(E1/E2)及cost值与最差明细路由相同(ciso选最优的)聚合路由类型为E1时,LSA metric=最差明细路由LSA metric 聚合路由类型为E2时,LSA metric=(最差明细路由LSA metric)+1
路由收敛优先级: 收敛优先级的顺序由高到低为critical > high > medium > low。
prefix-priority配置OSPF路由的收敛优先级。该命令根据指定的IP前缀列表名来配置OSPF路由的收敛优先级,仅在公网上配置有效。
缺省情况下,公网OSPF主机路由的收敛优先级为medium,直连路由的收敛优先级为high,静态路由的收敛优先级为medium,其他协议(如BGP、RIP等)路由的收敛优先级为low。私网中OSPF 32位主机路由统一标识为medium。表现就是优先处理(包括计算和泛洪LSA、同步LSDB等动作)优先级级别较高的LSA,从而加速这部分路由的收敛速度。
prefix-priority命令用来配置IS-IS路由的收敛优先级,该命令仅在公网生效。
缺省情况下,IS-IS 32位主机路由的收敛优先级为medium,其他IS-IS路由的收敛优先级为low。Level-2 IS-IS路由的收敛优先级高于Level-1 IS-IS路由的收敛优先级。
如果一条路由符合多个收敛优先级的匹配规则,则这些收敛优先级中最高者当选为路由的收敛优先级
第五篇:网络工程师ospf总结
LSA类型》》》
LSA-1(沿途累加metric值)
LSA-2
(不累加)
LSA-3
区域间 OIA
LSA-4
(帮助5类查找定位Asbr的位置)
LSA-5
OE1/2
OSPF的特殊区域类型》》》
(因为LSA类型条目过多,使用ospf特殊区域类型限制LSA的传播范围)
1.stub area 末节区域
does not accept externall LSA(不接收4、5类LSA)
另外在EIGRP中某路由被置为stub后其不会接收查询包
2.totally stubby area绝对末节区域
does not accept external or summary(不接收4、5类、3类LSA)
3.配置stub and totally stub 区域的规则条件:
有单个或者多个ABR存在(即存在多区域);
某区域被配置为特殊区域则该区域中所有路由器都要配置成相同类型的特殊区域类型;
该区域不能有ASBR;
该区域不能为主干区域 即area 0;
该区域不能有虚链路virtual link 通过;