1、OSPF 协议总结-By Joe2建立邻居关系;3维持邻居关系;4选举 DR,BDR5确保双向通信。Hello 包所包含的内容:路由器 idHello 0 代表不参加选举 ;默认为 1);2比较 Router-id。次者为 BDR。在 Point-to-Point, Point-to-Multipoint(广播与非广播 )这三种网络类型不选取 DR与 BDR; Broadcast, NBMA 选取 DR 与 BDR。先启动 OSPF 进程的路由器会等待一段时间,这个时间内你没有启动其它路由的 OSPF 进程的话,第一台路由就认为自己是 DR,之后再加进来的也不能在选举了,这个等待时间叫做 Wa
2、it Timer 计时器,CISCO 规定的 Wait Timer 是 40秒。这个时间内你启动的路由是参与选举的,所以真实工作环境中,40 秒你大概只启动了两台,DR 会再前两台启动的路由中产生,工作一段时间以后,活的最久的路由最有可能成为 DROSPF over FRAME-RELAY 的配置:(1) NBMA : 在 HUB 上指定邻居;SPOKE 上设置优先级为 0。(2) P-TO-P: 接口下配置命令 ip ospf network point-to-point。(3) P-TO-MULT P:接口下配置命令 ip ospf network point-to-multipoint。
3、按需电路配置:接口下配置命令 ip ospf demand-cricuit。孤立区域问题解决:1虚电路 (虚电路穿过的区域一定是标准区域,标准区域一定是全路由的)2隧道 3多进程重分发注:如果中间间隔区域为 stub 区域,则只能用隧道解决.OSPF 分区域的原因:1LSA 数据过大,造成带宽负载过大。2计算全网拓扑,对 cup 要求过高。3数据库过大,对内存要求过高。OSPF 的区域类型:骨干: LSA:1 2 3 4 5标准: LSA:1 2 3 4 5stub: LSA1 2 3nssa: LSA1 2 3 7 7(default) AREA 1 NSSA DEFAULT INFORMA
4、TION-ORIGINATE(ABR 上产生默认路由 LSA 7)total-stub: 1 2 一条默认 3total-nssa: 1 2 7 一条默认 3LSA 的类型:类型 1: 路由器链路信息内容包括:路由器链路 Router-id; 接口地址; 接口网络; 接口花费可使用 show ospf database router 命令查看。类型 2: 网络链路信息由 DR 通告,如果是点对点的网络类型,没有 LSA2类型 3、4:汇总链路(都是 ABR 通告)3 号通告 ospf 区域间信息4 号通告 asbr 的 router-id 信息(通告 nssa 区域的 abr)类型 5: 通告
5、外部路由类型 7: nssa 区域外部路由类型 11: 用于打标签类型代码 类型名称 描述1 路由器 LSA 每台路由器都会产生,在区域内泛洪2 网络 LSA DR 产生,在区域内泛洪3 网络汇总 LSA ABR 始发,在整个 OSPF 域中泛洪4 ASBR 汇总 LSA ABR 始发,在整个 OSPF 域中泛洪5 AS 外部 LSA ASBR 始发,在整个 OSPF 域中泛洪6 组成员 LSA 标识 OSPF 组播中的组成员,不做讨论7 NSSA 外部 LSA ASBR 始发,8 外部属性 LSA 没有实现9 Opaque LSA(本地链路范围)10 Opaque LSA(本地区域范围)11
6、 Opaque LSA(AS 范围)用于 MPLS 流量工程,不做讨论OSPF 邻居建立过程:A-Bdown init B 收到 A 发来 hello 进入 init 状态two way hello 4 个“*”匹配,选举 DR BDR ;A 在 hello 中发现自己的Router-id;exstart 交换 DBD;确立主从关系(多路访问 Router-id 高为主,低为从; 串行接口下接口地址大的为主)exchange 交换数据 DBD (主的先发)loading 交换完整数据包 LSR LSUfull注:每个 LSA 由序列号确认为最新的更新。当路由器收到 LSA 之后的处理过程:(1
7、)如果数据库有这样的,再查看序列号,如果序列号相同,忽略这条LSA;如果序列号偏大,将其转到数据库,并进行 SPF,更新路由表;如果序列号偏小,将一个包含自己的 LSA 新信息发送给发送方。(2)如果数据可没有这样的,将其加到数据库表,并发一个 ACK 返回,并运行 SPF,更新路由表。 OSPF 的 Metric 值:Cost=10 的 8 次方/ 带宽,简便记做 100Mb/带宽值。Metric 值是由 cost 值逐跳累加的。环回口的路由,掩码为/32,既我们所说的“主机路由”。在实际应用中,环回口以 32 位的居多,用作 ospf 的管理接口。但是如果你想让环回口模拟一个网段,我们可以
8、通过以下配置来消除。R1(config)#int loopback 0R1(config-if)#ip ospf network point-to-point环回口只能配置成 point-to-point 这种类型,不可以配置成其它的类型。其他:1当一个路由器既是 ABR 又是 ASBR 时为了不让巨量外部路由分发进 nssa 区域使用命令:area 1 nssa no-redistribution default-information originate2配置命令 show ip ospf database router 用来查询拓扑3一个路由器在理论上支持 65535 个 OSPF 进程
9、,在实际环境中一个路由器可支持的 OSPF进程数量与其可用物理接口数量相等。 (这个我对老师说的有疑问,如果我启用了很多环回口,每个环回口一个区域不可以吗?)OSPF 汇总在 OSPF 骨干区域当中,一个区域的所有地址都会被通告进来。但是如果某个子网忽好忽坏不稳定,那么在它每次改变状态的时候,都会引起 LSA 在整个网络中泛洪。为了解决这个问题,我们可以对网络地址进行汇总。Cisco 路由器的汇总有两种类型:区域汇总和外部路由汇总。区域汇总就是区域之间的地址汇总,一般配置在 ABR 上;外部路由汇总就是一组外部路由通过重发布进入 OSPF 中,将这些外部路由进行汇总。一般配置在 ASBR 上。
10、区域汇总:area area-id range ip-address mask外部路由汇总:summary-address ip-address mask我设计的两个试验,把几个知识点串起来试验一用一个试验总结一下 ospf over 桢中继的时候,OSPF 几种网络类型的差别。封装好 FR,DEBUG 看到的几种情况情况一:两边只起了 OSPF 进程,其它全部默认 这种情况下邻居需要手动配置!R2(config)#router ospf 10R2(config-router)#neighbor 12.1.1.3选举了 DR,BDRhello 的间隔是 30sOSPF 的数据包是单播传送的。情
11、况二:两边的网络类型改为 Broadcast(命令接口下 ip ospf network broadcast)这种网络类型下是不需要手动配置邻居关系有 DR 与 BDR 的选举。Hello 时间间隔为 10s。使用 224.0.0.5 这个组播地址传送数据包。情况三:网络类型改为 Point-to-Point(命令接口下 ip ospf net point-to-point)不需要手动指定邻居没有 DR/BDR 的选举Hello 时间间隔为 10s使用 224.0.0.5 这个组播地址传送数据。情况四:Point-to-Multipoint(命令接口下 ip ospf network poin
12、t-to-multipoint)不需要手动指定邻居没有 DR 和 BDR 的选举Hello 时间间隔为 30s以 224.0.0.5 这个组播地址发送数据情况五:非广播的 Point-to-Multipoint(命令接口下 ip ospf network point-to-multipoint non-broadcast)邻居需要手动指定,但是邻居只要在一边指定即可。没有 DR 和 BDR 的选取Hello 时间间隔为 30s使用单播传送 OSPF 数据列出一张表,方便看网络类型 邻居自动发现 有无 DR 选举 Hello 间隔 传输方式默认 否 有 30s 单播Broadcast 是 有 1
13、0s 组播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 明
14、文验证R1(config)#int s1/0R1(config-if)#ip ospf authentication(启用认证)R1(config-if)#ip ospf authentication-key cisco(配置密码)不配置 R2 的话通过 debug 工具我们可以看到如下信息:*Aug 15 22:51:54.275: OSPF: Rcv pkt from 10.1.1.2, Serial1/0 : Mismatch Authentication type. Input packet specified type 0, we use type 1这里的 type0 是指对方没有
15、启用认证, type1 是明文认证。在 R2 上配置认证,使得邻居关系恢复。R2(config)#int s1/0R2(config-if)#ip ospf authenticationR2(config-if)#ip ospf authentication-key cisco*Aug 15 22:54:55.815: %OSPF-5-ADJCHG: Process 10, Nbr 1.1.1.1 on Serial1/0 from LOADING to FULL, Loading Done情况二:在 R2 和 R3 的串行链路上进行 MD5 认证的:R2(config)#int s1/1R2
16、(config-if)#ip ospf authentication message-digest(定义认证类型为 MD5) R2(config-if)#ip ospf message-digest-key 1 md5 cisco(定义 key 和密码)R3(config)#int s1/0R3(config-if)#ip ospf authentication message-digest R3(config-if)#ip ospf message-digest-key 1 md5 cisco情况三:增加 R2 和 R3 上串行链路的 MD5 认证的密码:在 R2 原有的配置上加上下面这条命
17、令:R2(config-if)#ip ospf message-digest-key 2 md5 openlabR2#sho ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface3.3.3.3 0 FULL/ - - 11.1.1.2 OSPF_VL01.1.1.1 1 FULL/BDR 00:00:34 21.1.1.1 FastEthernet0/01.1.1.1 0 FULL/ - 00:00:37 10.1.1.1 Serial1/03.3.3.3 0 FULL/ - 00:00:31 11.1.1.2 S
18、erial1/1邻居关系没有丢失。增加新的密码钥匙,然后在将原来的密码删除,候邻居关系不受影响。情况四:在 Area0 上进行区域认证(以前没做过吧)R1(config)#router ospf 10R1(config-router)#area 0 authentication还没有写下一步,就是刚启用,还没设置密码,邻居就 down 掉了同样,R2 上启用一下,邻居就恢复或者都设置相同的密码也可以。 情况五:Area0 上进行区域认证以后。R2#clear ip ospf pro 清进程,A2 区域的学不到邻居了。R3 是通过虚链路连接到骨干区域的。因为 virtual-link 属于 Ar
19、ea0,因此在 R2 配置完成 Area0区域认证后,R3 也需要相应的配置。R3(config)#router ospf 10R3(config-router)#area 0 authentication这样就可以了情况六:单纯的虚链路的认证(这个以前也没做过吧)明文认证,MD5 认证。配置命令如下:明文:R2(config-router)#area 1 virtual-link 3.3.3.3 authentication-key ciscoR3(config-router)#area 1 virtual-link 2.2.2.2 authentication-key ciscoMD5:R
20、2(config-router)#area 1 virtual-link 3.3.3.3 authentication message-digestR2(config-router)#area 1 virtual-link 3.3.3.3 message-digest-key 1 md5 ciscoR3(config-router)#area 1 virtual-link 2.2.2.2 authentication message-digestR3(config-router)#area 1 virtual-link 2.2.2.2 message-digest-key 1 md5 cisco另外通过实验知道虚链路在建立起来后是 DNA LSA(不老化 LSA),所以如果没有重启 OSPF 进程的话 ,即使一端配置了认证,虚链路也是不会断开的。后面是 sniffer 抓得包Hello 包Lsu 包LSACK 包上面是一般情况,下面是明文验证的几个包HelloDBDLSRLSULSACK下面是 MD5 加密认证得包HelloDBDLSRLSULSACK