OSPF协议总结OSPF的五个包:1.Hello:9项内容,4个必要2.DBD:数据库描述数据包(主要描述始发路由器数据库中的一些或者全部LSA信息),主要包括接口的MTU,主从位MS,数据库描述序列号等);3.LSR:链路状态请求数据包(查看收到的LSA是否在自己的数据库,或是更新的LSA,如果是将向邻居发送请求);4.LSU:链路状态更新数据包(用于LSA的泛洪扩散和发送LSA去响应链路状态请求数据包);5.LSACK:链路状态确认数据包(用来进行LSA可靠的泛洪扩散,即对可靠包的确认)。Hello包作用:1.发现邻居;2.建立邻居关系;3.维持邻居关系;4.选举DR,BDR5.确保双向通信。Hello包所包含的内容:路由器idHello&Dead间隔*区域id*邻居DRBDR优先级验证*末节区域*注:1.“*”部分全部匹配才能建立邻居关系。2.邻居关系为FULL状态;而邻接关系是处于TWO-WAY状态。Hello时间间隔:在点对点网络与广播网络中为10秒;在NBMA网络与点对多点网络中为30秒。注:保持时间为hello时间4倍虚电路传送的LSA为DNA,时间抑制,永不老化.OSPF的组播地址:DR将使用组播地址224.0.0.5泛洪扩散更新的数据包到DRothersDRothers使用组播地址224.0.0.6发送更新数据包组播的MAC地址分别为:0100.5E00.0005,0100.5E00.0006OSPF的包头格式:|版本|类型|长度|路由器ID|区域ID|验证和|验证类型|验证|数据||1byte|1|2|4|4|2|2|8|variance|OSPF支持的验证类型:OSPF支持明文和md5认证,用Sniffer抓包看到明文验证的代码是“1”,md5验证的代码是“2”。OSPF支持的网络类型:1.广播2.非广播3.点对点(若MTU不匹配将停留在EX-START状态)4.点对多点5.虚电路(虚电路的网络类型是点对点)虚链路必须配置在ABR上,虚链路的配置使用的命令是areatransit-area-idvirtual-linkrouter-id虚链路的Metric等同于所经过的全部链路开销之和DR/BDR选举:1.优先级(0~255;0代表不参加选举;默认为1);2.比较Router-id。次者为BDR。在Point-to-Point,Point-to-Multipoint(广播与非广播)这三种网络类型不选取DR与BDR;Broadcast,NBMA选取DR与BDR。先启动OSPF进程的路由器会等待一段时间,这个时间内你没有启动其它路由的OSPF进程的话,第一台路由就认为自己是DR,之后再加进来的也不能在选举了,这个等待时间叫做WaitTimer计时器,CISCO规定的WaitTimer是40秒。这个时间内你启动的路由是参与选举的,所以真实工作环境中,40秒你大概只启动了两台,DR会再前两台启动的路由中产生,工作一段时间以后,活的最久的路由最有可能成为DROSPFoverFRAME-RELAY的配置:(1)NBMA:在HUB上指定邻居;SPOKE上设置优先级为0。(2)P-TO-P:接口下配置命令ipospfnetworkpoint-to-point。(3)P-TO-MULTP:接口下配置命令ipospfnetworkpoint-to-multipoint。按需电路配置:接口下配置命令ipospfdemand-cricuit。孤立区域问题解决:1.虚电路(虚电路穿过的区域一定是标准区域,标准区域一定是全路由的)2.隧道3.多进程重分发注:如果中间间隔区域为stub区域,则只能用隧道解决.OSPF分区域的原因:1.LSA数据过大,造成带宽负载过大。2.计算全网拓扑,对cup要求过高。3.数据库过大,对内存要求过高。OSPF的区域类型:骨干:LSA:12345标准:LSA:12345stub:LSA123nssa:LSA12377(default)AREA1NSSADEFAULTINFORMATION-ORIGINATE(ABR上产生默认路由LSA7)total-stub:12一条默认3total-nssa:127一条默认3LSA的类型:类型1:路由器链路信息内容包括:路由器链路Router-id;接口地址;接口网络;接口花费可使用showospfdatabaserouter命令查看。类型2:网络链路信息由DR通告,如果是点对点的网络类型,没有LSA2类型3、4:汇总链路(都是ABR通告)3号通告ospf区域间信息4号通告asbr的router-id信息(通告nssa区域的abr)类型5:通告外部路由类型7:nssa区域外部路由类型11:用于打标签类型代码类型名称描述1路由器LSA每台路由器都会产生,在区域内泛洪2网络LSADR产生,在区域内泛洪3网络汇总LSAABR始发,在整个OSPF域中泛洪4ASBR汇总LSAABR始发,在整个OSPF域中泛洪5AS外部LSAASBR始发,在整个OSPF域中泛洪6组成员LSA标识OSPF组播中的组成员,不做讨论7NSSA外部LSAASBR始发,8外部属性LSA没有实现9OpaqueLSA(本地链路范围)用于MPLS流量工程,不做讨论10OpaqueLSA(本地区域范围)11OpaqueLSA(AS范围)OSPF邻居建立过程:A-------------------------BdowninitB收到A发来hello进入init状态twowayhello4个“*”匹配,选举DRBDR;A在hello中发现自己的Router-id;exstart交换DBD;确立主从关系(多路访问Router-id高为主,低为从;串行接口下接口地址大的为主)exchange交换数据DBD(主的先发)loading交换完整数据包LSRLSUfull注:每个LSA由序列号确认为最新的更新。当路由器收到LSA之后的处理过程:(1)如果数据库有这样的,再查看序列号,如果序列号相同,忽略这条LSA;如果序列号偏大,将其转到数据库,并进行SPF,更新路由表;如果序列号偏小,将一个包含自己的LSA新信息发送给发送方。(2)如果数据可没有这样的,将其加到数据库表,并发一个ACK返回,并运行SPF,更新路由表。‘OSPF的Metric值:Cost=10的8次方/带宽,简便记做100Mb/带宽值。Metric值是由cost值逐跳累加的。环回口的路由,掩码为/32,既我们所说的“主机路由”。在实际应用中,环回口以32位的居多,用作ospf的管理接口。但是如果你想让环回口模拟一个网段,我们可以通过以下配置来消除。R1(config)#intloopback0R1(config-if)#ipospfnetworkpoint-to-point环回口只能配置成point-to-point这种类型,不可以配置成其它的类型。其他:1.当一个路由器既是ABR又是ASBR时为了不让巨量外部路由分发进nssa区域使用命令:area1nssano-redistributiondefault-informationoriginate2.配置命令showipospfdatabaserouter用来查询拓扑3.一个路由器在理论上支持65535个OSPF进程,在实际环境中一个路由器可支持的OSPF进程数量与其可用物理接口数量相等。(这个我对老师说的有疑问,如果我启用了很多环回口,每个环回口一个区域不可以吗?)OSPF汇总在OSPF骨干区域当中,一个区域的所有地址都会被通告进来。但是如果某个子网忽好忽坏不稳定,那么在它每次改变状态的时候,都会引起LSA在整个网络中泛洪。为了解决这个问题,我们可以对网络地址进行汇总。Cisco路由器的汇总有两种类型:区域汇总和外部路由汇总。区域汇总就是区域之间的地址汇总,一般配置在ABR上;外部路由汇总就是一组外部路由通过重发布进入OSPF中,将这些外部路由进行汇总。一般配置在ASBR上。区域汇总:areaarea-idrangeip-addressmask外部路由汇总:summary-addressip-addressmask我设计的两个试验,把几个知识点串起来试验一用一个试验总结一下ospfover桢中继的时候,OSPF几种网络类型的差别。封装好FR,DEBUG看到的几种情况情况一:两边只起了OSPF进程,其它全部默认这种情况下邻居需要手动配置!R2(config)#routerospf10R2(config-router)#neighbor12.1.1.3选举了DR,BDRhello的间隔是30sOSPF的数据包是单播传送的。情况二:两边的网络类型改为Broadcast(命令接口下ipospfnetworkbroadcast)这种网络类型下是不需要手动配置邻居关系有DR与BDR的选举。Hello时间间隔为10s。使用224.0.0.5这个组播地址传送数据包。情况三:网络类型改为Point-to-Point(命令接口下ipospfnetpoint-to-point)不需要手动指定邻居没有DR/BDR的选举Hello时间间隔为10s使用224.0.0.5这个组播地址传送数据。情况四:Point-to-Multipoint(命令接口下ipospfnetworkpoint-to-multipoint)不需要手动指定邻居没有DR和BDR的选举Hello时间间隔为30s以224.0.0.5这个组播地址发送数据情况五:非广播的Point-to-Multipoint(命令接口下ipospfnetworkpoint-to-multipointnon-broadcast)邻居需要手动指定,但是邻居只要在一边指定即可。没有DR和BDR的选取Hello时间间隔为30s使用单播传送OSPF数据列出一张表,方便看网络类型邻居自动发现有无DR选举Hello间隔传输方式默认否有30s单播Broadcast是有10s组播Point-to-Point是无10s组播Point-to-Multipoint是无30s组播Point-to-Multipoint(非广播)否,单边指即可无30s单播试验二OSPF的认证总结:OSPF的认证有2种类型(不验证也算的话是3种),使用DEBUG可以看到type0表示无认证,type1表示明文认证,type2表示MD5认证。明文认证发送密码进行认证,而MD5认证发送的是报文摘要。OSPF的认证可以在链路上进行,也可以在整个区域内进行认证。另外虚链路同样也可以进行认证。同样也是分情况来讨论。情况一:R1和R2明文验证R1(config)#ints1/0R1(config-if)#ipospfauthentication(启用认证)R1(config-if)#ipospfauthentication-keycisco(配置密码)不配置R2的话通过debug工具我们可以看到如下信息:*Aug1522:51:54.275:OSPF:Rcvpktfrom10.1.1.2,Serial1/0:MismatchAuthenticationtype.Inputpacketspecifiedtype0,weusetype1这里的type0是指对方没有启用认证,type1是明文认证。在R2上配置认证,使得邻居关系恢复。R2(config)#ints1/0R2(config-if)#ipospfauthenticationR2(config-if)#ipospfauthentication-keycisco*Aug1522:54:55.815:%OSPF-5-ADJCHG:Process10,Nbr1.1.1.1onSerial1/0fromLOADINGtoFULL,LoadingDone情况二:在R2和R3的串行链路上进行MD5认证的:R2(config)#ints1/1R2(config-if)#ipospfauthenticationmessage-digest(定义认证类型为MD5)R2(config-if)#ip