进行后以上设置后,该单位局域网中的机器就可以与省政府通信。
好了,现在该单位与省里面可以正常通讯了,但是我们的活还没有开头呢,如何才能让这13台华为路由器启动OSPF呢?
本来考虑是让BAY1150交换机把它上面的静态路由发布出去,但是几次尝试都失败了,于是还是要从华为路由器路由器本身入身,先从该单位的华为路由器入手,该路由器是连接在BAY1150交换机的一个端口上的。照着电信给的参数配置。区域就用0.0.0.0,打电话给华为8008302118,得到了一份OSPF配置手册,最后是这样配置的:
conf
router ospf en
inter e0
ip ospf enable area 0.0.0.10
inter e1
ip ospf enable area 0.0.0.10
这样写完以后,在该路由器上执行show ip route命令就可以看到学习到很多的路由了,说明在该路由器上OSPF启动成功了。下面县区的12个路由器是通过交换机连接到这台路由器上的,依着葫芦画瓢,在这12台路由器上也是这样写,启动了OSPF后,再执行show ip route,就可以看到学习到很多的路由,说明OSPF也已经在正常工作了。但是即使配完了,心里面还是没底,一是这毕竟这是我第一次配置OSPF,没有相关的工作经验,第二,华为给的那份配置文档,我并没有全部看完,一来是大部分看不懂,二来是该单位已经管了好几顿钣了,老板没说话,下面的小兵已经开始不耐烦了,我们得赶快撤了,没有时间再详细研究OSPF,检验我们的OSPF是否配置正确,只能通过实际运行的情况来看了。
配完后,回来单位,头说,配好了,下面县区怎么配的,什么,启用了OSPF,通了,不是说不启用OSPF吗,不启用OSPF不通啊,就是让他不通。我靠,让他不通你让我过去干什么?后来我学习了项目管理,课堂上老师讲到,有时候项目也是一个政府策略,比如就是想让一个项目经理离开,就给他安排一个不可能的任务……。
以上话题就此打住,在配完OSPF后一段日子里,我心里面老是忐忑不安,是不是出现什么问题了呢?刚过去的一段时间,还没什么动静,过了一个多月吧,该单位的小T就陆续给我打电话,说是OSPF会自动生效,即router ospf enable这条命令自动就没有了。当然从县里往省里就无法通讯了。刚开始的时候,我以为是县里面的数据量小,而且使用不频繁,就造成了OSFP失效了。因为放在市里面的那台路由器就没有问题。以后,不同的县区都出现了这个问题,我也只好敷衍着,让该公司的小T通过远程登录到出现故障的路由器上去手工启动OSPF,华为给的OSPF也懒的看,反正能用就行。在这期间还出现一个奇怪的现象,即某些县区如金乡,他们与市区也无法正常通讯,当出现这样的问题,我只好到现场去了。结果问题是这样解决的,我带着笔记本去,笔记本当然不能设成跟路由器端口地址一样的IP地址了,所以就用了一个12.12.12.200,这样直接接在光纤收发器下面,通,说明物理线路没有问题。再把线接回到路由器,从路由器上又不通了,最后把路由器相应端口的地址改成跟我的笔记本刚才设的那个地址一样,通,OSPF工作正常,好了!这样的事情我也遇到了两三次。
直到前一段时间,我们的传输网坏了,等传输网修好,却发现县区里面的路由器都无法与省里面通讯了。我先到中区去看了一下,没查出问题。跟市里面可以正常通讯,说明物理线路没有问题,router ospf enable也没有失效,那么到底是那儿的问题呢,我又去了市里该单位的机房,在机房看了半天配置,也没有发现有什么问题,总之就是该单位的那台华为2631路由器的OSPF没有问题,能够学习到一堆的路由,但是下面县区的路由器就无法通过OSPF学习到到省里面的路由,有的路由器只能通过OSPF学习到县区里面的一些路由。一上午也没看出什么门道,就回去了,到下午的时候,抱了破釜沉舟的决心去了该单位的机房,把华为发过来的文档看了又看,也不管是不是会影响到业务了,在市、县、区的路由器上配来配去,改来改去:华为的文档有关的内容如下:
OSPF的配置任务列表如下:
l 配置路由器的ID号
l 启动OSPF
l 指定接口与区域号
l 配置OSPF的接口网络类型
l 配置接口发送报文的花销
l 指定NBMA接口的邻居
l 设置接口在选举DR时的优先级
l 设置发送Hello报文的时间间隔
l 设置相邻路由器的失效时间
l 设置邻居路由器重传LSA时间间隔
l 设置LSA传输延迟时间
l 配置OSPF的STUB区域
l 配置OSPF的NSSA区域
l 配置OSPF区域间路由聚合
l 创建与配置虚连接
l 配置OSPF报文的认证
l 配置OSPF引入其它协议的路由
l 配置OSPF接收外部路由的参数
l 配置OSPF协议的优先级
l 配置OSPF路由过滤(其实这次用不了这样多)
1.1.1 配置路由器的ID号
路由器的ID号是一个32比特的无符号整数,为点分十进制格式,它是路由器所在自治系统中的唯一标识。用户必须配置路由器ID号。手工配置路由器的ID时,必须保证自治系统中任意两台路由器的ID都不相同。通常的做法是将路由器的ID配置为与该路由器某个接口的IP地址一致。(对啊,如果不手工写的话,路由器的IP地址就作为ID号)
请在全局配置模式下进行下列配置。
配置路由器的ID号
操作 命令
配置路由器的ID号 router id router-id
取消路由器的ID号 no router id
缺省情况下,系统不运行OSPF协议。(这个我已经做过了)
1.1.3 指定接口所在的区域
OSPF将自治系统进一步划分成不同的区域(Area),区域是在逻辑上将路由器划分为不同的组。一些路由器会属于不同的区域(这样的路由器称作区域边界路由器ABR),但一个网段只能属于一个区域, 或者说每个运行OSPF的接口必须指明其所属的特定区域。区域用区域号area-id(是一个32比特的标识符)来标识。为使OSPF正常工作,属于一个特定区域所有路由器接口的area-id必须一致,不同区域间可通过区域边界路由器ABR(Area Border Router)来传递路由信息。
另外,在同一区域内所有路由器各项参数的配置应该保持一致。因此,在配置同一区域内的路由器时,应该注意大多数配置数据都应该以区域为基础来统一考虑,错误的配置可能会导致相邻路由器之间无法相互传递信息,甚至导致路由信息的阻塞或者自环。
请在接口配置模式下进行下列配置。
指定接口所在的区域
操作 命令
指定接口所在的区域 ip ospf enable area area-id
取消接口所在的区域 no ip ospf enable area area-id
缺省情况下,未指定接口所属的区域。
OSPF启动后,还必须指定特定接口运行OSPF协议及该接口所在的区域。(在本例中,我们使用的是0.0.0.10)
1.1.4 配置OSPF接口的网络类型
OSPF协议计算路由是以本路由器邻居网络的拓扑结构为基础的。每台路由器将自己邻居的网络拓扑描述出来,传递给其它所有的路由器。
OSPF根据接口封装链路层协议的不同类型,将网络分为下列几种类型:
l 当链路层协议是Ethernet时,OSPF缺省认为网络类型是broadcast。
l 当链路层协议是帧中继、HDLC、X.25时,OSPF缺省认为网络类型是NBMA。
l 没有一种链路层协议会被缺省的认为是point-to-multipoint类型,通常在NBMA类型的网络不是全连通的情况下,将其手工修改为point-to-multipoint。
l 当链路层协议是PPP、LAPB时,OSPF缺省认为网络类型是Point-to-point。
NBMA(Non-Broadcast Multi-Access)是指非广播、多点可达的网络,比较典型的有X.25、HDLC和帧中继。可通过配置轮询间隔来指定该接口在与相邻路由器构成邻居关系之前发送轮询Hello报文的时间周期。
在没有多址访问能力的广播网上,可将接口配置成nonbroadcast类型。
若在NBMA网络中并非所有路由器之间都直接可达时,可将接口配置成 point-to-multipoint类型。
若该路由器在NBMA网络中只有一个对端,则也可将接口类型改为 point-to-point类型。
NBMA网络与点到多点网络类型之间的区别:
l 在OSPF协议中NBMA是指那些全连通的、非广播、多点可达的网络;而点到多点的网络,则并不需要一定是全连通的。
l 在NBMA网络中要选举DR与BDR;而在点到多点网络中,无需选举DR与BDR。
l NBMA是一种缺省的网络类型,如果链路层协议是X.25、帧中继等,OSPF会缺省认为该接口的网络类型是NBMA(不论该网络是否全连通);而点到多点不是缺省的网络类型,没有哪种链路层协议会被认为是点到多点,点到多点必须是由其它的网络类型强制更改的。最常见的做法是将非全连通的NBMA改为点到多点的网络。
l NBMA网络单播发送报文,需要手工配置邻居;而在点到多点的网络中,发送报文的方式是可选的,即可单播发送报文,又可组播发送报文。
请在接口配置模式下进行下列配置。
配置OSPF接口的网络类型
操作 命令
配置OSPF接口的网络类型 ip ospf network-type { nonbroadcast | point-to-multipoint | point-to-point }
删除OSPF接口指定的网络类型 no ip ospf network-type { nonbroadcast | point-to-multipoint | point-to-point }
当为接口指定了新的网络类型后,原有的网络类型将自动取消。(我们用的是以太网,所以接口类型为broadcast,也不用手工指定,系统自己判断出来了。
1.1.5 配置接口发送报文的花销(这个我也没有配)
用户可配置接口发送报文的花费值,否则OSPF会根据当前接口的波特率自动计算发送报文的花费。
请在接口配置模式下进行下列配置。
配置接口发送报文的花销
操作 命令
配置接口发送报文的花费值 ip ospf cost cost
恢复接口发送报文花费缺省值 no ip ospf cost
缺省情况下,未指定NBMA接口的邻居。
配置NBMA接口邻居时,需要下列事项:
l 邻居之间配置的Hello-interval和Dead-interval必须一致。
l 邻居之间配置的链路类型必须一致。
l 邻居所属区域号必须一致。
l 邻居所属区域的认证方式(同为明文或MD5)、认证密码以及key-id都必须一致。
l 邻居所属区域配置的Stub属性必须一致。
1.1.7 设置接口在选举DR时的优先级(这个很重要,我在这里说一下吧。这次为什么会出现县区的路由器无法学习到省里面的路由,就是由于指定了错误的路由器DR,DR看一下下面的解释,同一网段内的所有路由器都只将路由信处发送给DR,由DR将该网段的链路状态广播出去,这样就大大减少多址访问网络上各路由器之间邻居关系的数量。我在中区的路由器上执行show Ip osfp时看到DR路由器为梁山的路由器,而这个时候梁山的路由器与市里面的路由器确实是不通的,原因后来也找到了,还是需要将梁山端路由器的IP地址换一个,但是现在由于梁山与济宁不通,造成了其它的路由器无法通过梁山的路由器将路由信息发布出去,所以也就无法通过OSPF学习到其它网段的路由了。解决的方法是将其它的路由器作一个重启,重启的过程会重新选取DR路由器,选择了一个其它的路由器,这个路由器可以与济宁端路由器正常通讯,所以其它的路由器可以通过它将路由信息发布出去,所以也可以通过它学习到其它网段的路由信息,也可以访问到省里面的网络了。这个问题就到此结束,因为快下班了)
对于多点接入网络,即NBMA和broadcast类型网络,需要手工建立接口之间的邻居关系,但当网络内有上百台路由器,邻居关系的建立将占用很大的系统资源。为解决这一问题,OSPF定义了“指定路由器DR”(Designated Router),同一网段内的所有路由器都只将路由信息发送给DR,由DR将该网段的链路状态广播出去,这样就大大了减少多址访问网络上各路由器之间邻居关系的数量。
路由器接口的优先级决定了该接口在选举“指定路由器”时所具有的资格,优先级高的在选举权发生冲突时首先考虑。
DR不是人为指定的,而是由本网段中所有的路由器共同选举出来的。本网段内Priority>0的路由器都可成为“候选人”。在所有“自称”为DR的路由器中,选取优先级值最大的当选本网段的DR;选票就是Hello报文,每台路由器将自己选出的DR写入Hello报文后,发给该网段上的每台路由器。当位于同一网段的两台路由器同时自称自己是“指定路由器”(DR)时,就选择优先级值较大的作为本网段的DR;若优先级值也相同,则选择Router ID大的路由器将作为本网段的DR。
若DR因某种故障而失效,必须重新选举DR,但这需要较长的时间,在这段时间内,路由的计算是不正确的。为了缩短这个过程,OSPF提出了备份指定路由器(Backup Designated Router)的概念。也就是说:BDR实际上是DR的一个备份。在选举DR的同时也选举出BDR,BDR也和本网段内的所有路由器建立邻居关系并交换路由信息。当DR失效后,BDR会立即成为DR,由于不需要重新选举,并且邻居关系也事先已建立,所以这个过程是非常短暂的。当然这时还需再重新选举出一个新的BDR,虽然一样需要较长的时间,但已不会影响到路由的计算。人们一般将既不是DR,也不是BDR的路由器统统称为DROther。
接口在选举DR时,需要注意的是:
网段中的DR不一定就是priority值最大的那台路由器;BDR也不一定就是priority第二大的路由器。若一台路由器未与其它路由器建立邻居关系,即使它的priority值最大,也不会成为该网段中的DR。
DR是针对某个网段中的路由器接口而言的,所以该路由器在一个接口上可能是DR,在另一个接口上可能是BDR,或者是DROther。
只有在接口类型为NBMA和broadcast时才会选举DR,在点到点或是点到多点类型的接口上,不需要选举DR。
请在接口配置模式下进行下列配置。
设置接口在选举DR时的优先级
操作 命令
设置接口在选举“指定路由器”时的优先级 ip ospf priority value
恢复接口在选举“指定路由器”的优先级的缺省值 no ip ospf priority
缺省情况下,接口在选举DR时的优先级为1,取值范围为0~255。
1.1.8 设置Hello报文发送的时间间隔(这个也没有设)
Hello报文被周期性地被发送至邻居路由器,用来发现与维持OSPF邻居关系、以及在NBMA和broadcast网络中选举DR与BDR。当一台路由器刚启动后,它只向优先级大于0(那些有可能被选举为DR,BDR的路由器)的邻居点发送Hello报文。当网段中的DR,和BDR被选举出来后,由DR和BDR向所有的邻居发送Hello报文建立邻居关系。用户可配置发送Hello报文的时间间隔Hello-interval。Hello-interval值越小,网络的变化将越快地被其邻居路由器发现。
在NBMA和点到多点的网络上,当邻居失效后,将按轮询时间间隔Poll-interval定期地发送Hello报文。用户可配置轮询时间间隔Poll-interval以指定该接口在与相邻路由器构成邻居关系之前发送Hello报文的时间间隔。轮询时间间隔Poll-interval值至少应为Hello-interval值的3倍。
请在接口配置模式下进行下列配置。
设置Hello报文发送的时间间隔
操作 命令
配置接口发送Hello报文的时间间隔 ip ospf hello-interval seconds
恢复接口发送Hello报文时间间隔的缺省值 no ip ospf hello-interval
配置在NBMA与点到多点网络上发送轮询Hello报文的时间间隔 ip ospf poll-interval seconds
恢复发送轮询Hello报文间隔的缺省值 no ip ospf poll-interval
缺省情况下,point-to-point接口发送Hello报文时间间隔为10秒; point-to-multipoint、nonbroadcast接口发送Hello报文时间间隔为30秒;取值范围为1~255秒。接口缺省发送轮询Hello报文时间间隔为120秒,取值范围为0~255秒。
需要注意的是:同一网段上的路由器接口配置的Hello-interval必须相同。
1.2 OSPF的监控和维护
请在除普通用户模式之外的所有模式下执行show命令,请在特权用户模式下执行debug命令。
OSPF的监控和维护
操作 命令
显示OSPF主要信息 show ip ospf
显示OSPF外部路由信息 show ip ospf ase
显示OSPF 统计信息 show ip ospf cumulative
显示OSPF连接状态数据库信息 show ip ospf database [ retranse ]
显示OSPF错误信息 show ip ospf error
显示OSPF接口信息 show ip ospf interface interface-type interface-number
显示OSPF LSA数据库的详细信息 show ip ospf lsa [ router_lsa | net_lsa | sumnet_lsa | asbr_lsa | external_lsa | adv_rtr | self_originate | ls_id ] [ area area-id ]
显示OSPF邻居点信息 show ip ospf neighbor
显示OSPF下一跳信息 show ip ospf nexthop
显示OSPF路由表信息 show ip ospf routing
显示OSPF虚连接信息 show ip ospf virtual-links
打开OSPF调试信息开关 debug ip ospf { event | packet | lsa | spf }
这些命令是非常有用的,我就是通过show ip osfp发现了DR路由器选择了错误的路由器,才最终排除了故障。
至此,我总算是系统的看了OSPF的文档,也算是解决了一个大问题,记得以前学CCNA时,有个说法,NA的工程师配置成功了OSFP,都会欣喜若狂,很有成就感,看来应用到我身上也很合适。
下面,就有一点小尾巴了,就是DR路由器不希望这些路由器自动选择,而是我手工指定,方法是用ip ospf priority value这个命令来实现,我先将济宁路由器的值改为2,存盘,然后重启济宁和原来定义DR的那台路由器,重启后发现DR路由器已经定为济宁路由器了。