OSPF三步曲之一基础篇
 
 
 ospf协议号是 89,也就是说在 ip包的 protocol中是 89,用 ip包来传送
数据包格式:
OSPF路由协议的数据包中,其数据包头长为 24个字节,包含如下 8个字段:
* Version number-定义所采用的 OSPF路由协议的版本。
* Type-定义 OSPF数据包类型。OSPF数据包共有五种:
* Hello-用于建立和维护相邻的两个 OSPF路由器的关系,该数据包是周期性地发送的。
* Database Description-用于描述整个数据库,该数据包仅在 OSPF初始化时发送。
* Link state request-用于向相邻的 OSPF路由器请求部分或全部的数据,这种数据包是
在当路由器发现其数据已经过期时才发送的。
* Link state update-这是对 link state请求数据包的响应,即通常所说的 LSA数据包。
* Link state acknowledgment-是对 LSA数据包的响应。
* Packet length-定义整个数据包的长度。
* Router ID-用于描述数据包的源地址,以 IP地址来表示,32bit
* Area ID-用于区分
OSPF数据包属于的区域号,所有的 OSPF数据包都属于一个特定的 OSPF区域。
* Checksum-校验位,用于标记数据包在传递时有无误码。
* Authentication type-定义 OSPF验证类型。
* Authentication-包含 OSPF验证信息,长为 8个字节。
FDDI或快速以太网的 Cost 12M串行链路的 Cost 4810M以太网的Cost 10等。
所有路由器会通过一种被称为刷新(Flooding)的方法来交换链路状态数据。
Flooding是指路由器将其 LSA数据包传送给所有与其相邻的 OSPF路由器,相邻路由器根据其接收到的链路状态信息更新自己的数据库,并将该链路状态信息转送给与其相邻的路由器,直至稳定的一个过程。
当路由器有了一个完整的链路状态数据库时,它就准备好要创建它的路由表以便能够
转发数据流。CISCO路由器上缺省的开销度量是基于网络介质的带宽。要计算到达目的地
的最低开销,链路状态型路由选择协议(比如 OSPF)采用 Dijkstra算法,OSPF路由表中最多保存 6条等开销路由条目以进行负载均衡,可以通过"maximum-paths"进行配置。
如果链路上出现 fapping翻转,就会使路由器不停的计算一个新的路由表,就可能导致路由
器不能收敛。路由器要重新计算客观存它的路由表之前先等一段落时间,缺省值为 5 秒。在 CISCO配置命令中 "timers spf spf-delay spy-holdtime"可以对两次连续 SPF计算之间的最短时间(缺省值 10秒)进配置。
 路由器初始化时 Hello包是用 224.0.0.5广播给域内所有 ospf路由器,选出 dr
在用 224.0.0.6 drbdr建立邻接。
 dr 224.0.0.5广播给 drother lsa bdr也是 drother 224.0.0.6广播 lsa dr bdr
dr是在一个以太网段内选举出来的,如果一个路由器有多个以太网段那么将会有多个 dr选举;DR的选择是通过 OSPF Hello数据包来完成的,在 OSPF路由协议初始化的过程中,会通过 Hello数据包在一个广播性网段上选出一个 ID最大的路由器作为指定路由器 DR(如果设置优先级的话那么首先看优先级,优先级为 0不参加举)并且选出 ID次大的路由器作为备份指定路由器 BDRBDR DR发生故障后能自动替代 DR的所有工作然后重新选择 BDR。当一个网段上的 DR BDR选择产生后,该网段上的其余所有路由器都只与 DR BDR建立
相邻关系。见下图OSPF三步曲之一基础篇_职场
 
 OSPF三步曲之一基础篇_ospf_02
图二、没有选举DR时的邻接关系                  图三、选举DR后时的邻接关系
 
DR的选举过程:这里可以以选举村长为例
OSPF三步曲之一基础篇_休闲_03
选举的时候用 hello包中的 dr字节来标识,开始的时候都是标识的自己,一旦选
举出一个 dr来那么即使后来再有优先级更高的进来也不重新选举(因为一旦重
新选举那么所有的邻接关系都要重新建立)
ospf启动的过程:
OSPF三步曲之一基础篇_休闲_04
 
 
down
init发送       hello224.0.0.5dr字段为全零(因为还没有选出 DR),
单通状态,我能收到对端的 hello报文,但对方没有收到我的报
文,怎么知道对端有没有收到我的报文呢,通过 Neighbors Seen
2way          2 ospf路由器从 hello中发现互相的 router id(本地路由器最大
ip,一般是 loopback)建立邻接在这个阶段已经知道谁是 dr
exstart          预启动状态,ospf路由器建立主从关系(看谁的 routerid大)然后协商一个序列号(因为 ip是不可靠的传输采用确认+超时重传就可以)准备传送,头两个 dd报文为空,不包含 lsa的数据
Router 1
DD seq=x,I=1,M=1,MS=1
I是第一个报文
M more表示还有后续报文
MS是表示 Router 1 Master
 
Router 2
DD seq=y,I=1,M=1,MS=1
I是第一个报文
M more表示还有后续报文
MS是表示 Router 2 Master
 
究竟谁是 master呢,就会选一个 router id大的作为 master
谁当了 master序列号就用谁生成的那个数,在这里应该
Router 2 y dr开始交换数据,master先发送
Exchange      lsdb报文,此报文只是一个 index(如同一本书的目录)不包含实际的路由数据, slave也发送报文,看谁的序列号高,序列高的数据新,相邻路由器可以根据数据库描述数据包的序列号与自身数据库的数据作比较,若发现接收到的数据比数据库内的数据序列号大,则相邻路由器会针对序列号较大的数据发出请求,并用请求得到的数据来更新其链路状态数据库。
Router 1先发送 dd报文序列号用 master的并且 MS字段为 0
Router2回应报文把序列号加 1表示已经收到了刚才的 dd报文并且也包含自己的
dd报文,下一个 Router 1 dd报文还用 y1来表示因为 slave无权把序列号加 1。如果
dd报文中的 M0那么表示 dd报文发送结束
 loading       装入状态,如果新加入的路由器的从 dd报文中看出那个是自己
需要的路由数据,则发送 lsr报文,请求发送数据,对端发送 lsu报文,此报文包含所需的全部数据。
Full           收到 lsu报文后发送确认,完成充满状态。
 
hello ttl值是 1,在以太网中每
10秒发送一次,而且不穿过路由器,通常 ospf协议报文的 ttl都是 1(虚连接除外)
link status flood整个 area(麦子说 flood是由区域内所有路由器接力完成)
一个 dd报文可以含有很多个 lsa的头部信息
init――――loading是路由器第一次交换信息的时候才出现,到了
full以后如果在有路由变化那么就只发送 lsu
OSPF三步曲之一基础篇_ospf_05
邻居状态机(灰色为可以长期存在的状态,白颜色为短暂状态)
2way 2 drother之间可以有这种状态
 
OSPF五种协议报文:
 
OSPF三步曲之一基础篇_网络_06
 
lsa 类型
type 1又被称为路由器链路信息数据包(Router Link),所有的 OSPF路由器都
会产生这种数据包,用于描述路由器上联接到某一个区域的链路或是某一端口的
状态信息。路由器链路信息数据包只会在某一个特定的区域内广播,而不会广播
至其它的区域。
在类型 1的链路数据包中,OSPF路由器通过对数据包中某些特定数据位的设定,
告诉其余的路由器自身是一个区域边界路由器或是一个 AS边界路由器。并且,类型 1的链路状态数据包在描述其所联接的链路时,会根据各链路所联接的网络类型对各链路打上链路标识,Link ID。表一列出了常见的链路类型及链路标识。
 
链路                  具体描述链路标识                       链路标识
 
类型
1               用于描述点对点的网络                     相邻路由器的路由器标识
2             用于描述至一个广播性网络的链路              DR的端口地址
3            用于描述至非穿透网络,即 stub网络的链路          stub网络的网络号码
4             用于描述虚拟链路                           相邻路由器的路由器标识
OSPF三步曲之一基础篇_休闲_07
链路类型 31 0或者 Stub网络)的链路状态描述――link id10.0.0.0 /网段/
data:255.0.0.0 /掩码
type:StubNet (3) /类型/
metric:50 /度量/
链路类型 1(点对点)的链路状态描述,首先要描述一下接口的路由信息:
link id:20.0.0.0 /网段/
data:255.0.0.0 /掩码/
type:StubNet(3) /类型/ 此处还是 3,因为 ppp类型分成 2部分,首先把它想象成
一个 10也就是类型 3的网络这么做是为了描述接口的
路由,20.0.0.0,第二步在描述对端连接的那台路由器
metric:5 /度量值/
对对端路由器的描述:
link id:2.2.2.2 /对端 RouterID/
data:20.0.0.2 /对端路由器的接口地址/
type:Router (1) /类型/
metric5
对帧中继(点对多点)链路状态的描述:首先也是先描述接口网段的路由
link id:40.0.0.1 /网段/描述的是自己的接口地址,不是网段
data: 255.255.255.255 /掩码/
type:StubNet3 /类型/此处还是描述成 1 0的网段
metric: 5 /度量值/
link id: 3.3.3.3 /对端 routerF id/因为是连接多点的,所以有多段描述
data:40.0.0.1 / router F相连的接口地址/
type:Router(1) /类型/
 metric:5 /度量值/
link id:4.4.4.4 /对端
routerE id/
data:40.0.0.1 / router E相连的接口地址/ 此处描述的是 routerA的接口地址,
并不是 Router E的接口地址,没关
系因为点对多点连接的接口地址
都在一个子网内
type:Router(1) /类型/
metric:5 /度量值/
对广播型网络链路状态的描述:不描述接口网段的路由了
link id:30.0.0.3 /网络中 DR的接口地址/
data:30.0.0.1 /本接口的地址/
type:TransNet(2) /类型/
metric:50 /花费/
每个路由器只生成这些信息,缺少的信息有 dr补齐,这样会节省很多的描述信息,如果不是的话假如这里有 100台路由器那么得生成 100段描述信息。 DR会单独生成一条(也就是说不管 drother有多少条)lsatype 2)描述掩码和
这个网段中有那些路由器
/DR(6.6.6.6)生成的 lsa/
Net mask:255.255.255.0
Attached 30.0.0.1 router
Attached 30.0.0.2 router
Attached 30.0.0.3 router
以上的这些描述信息还要加上 lsa的头(head
type:Router /lsa的类型/此处的 Router表示是 lsa类型 1
ls id:1.1.1.1 /lsa的标识/
adv rtr: 1.1.1.1 /生成该 lsa的路由器/表示这条 lsa是谁生成的
ls age:4 /本条  lsa的老化时间/每隔 1秒这个数字会涨 1
len: 108 /lsa的长度/
seq#:80000001 /lsa序列号/
link count:7 / lsa中包含的连接个数/
此时 RouterA路由器完成自己周边链路状态的描述
flood lsdb后就要用 spf生成路由表了,见下图:(以 Router A为例)
OSPF三步曲之一基础篇_职场_08
首先每个路由器都已自己为根计算路由,以 Router a为例它把每一个 lsa打开,分析每一段,碰到 StubNet这种类型的 lsa就知道这是描述的一条网段路由,于是就直接加到路由表中比如上图中的 10.0.0.0 20.0.0.0就直接加到路由表中不过这两条是本路由器直接相连的网段所以意义不大,那么看第三段,这段描述的是一个点对点的类型,路由器看到这段就会先停止计算,它会去找 RouterB生成的 lsa(因为这段描述的到 router b的点对点连接)因为每个 lsa都有 router idadv id)路由器就会以 2.2.2.2为关键字检索就会找到 router b lsa,找到以后在打开看它有什么信息,router b中有一个直连网段 50.0.0.0,这个网段对于 router a是未知的,所以就加入路由表中下一跳就指向 20.0.0.2(因为此 lsa Router b告诉我的)Metric值相加 50555,这样这条路由就完全加入到路由表中了。如果 Router B lsa中还连着一个 Router W,那么路由器还继续去找 Router W lsa找到后在继续算 Router w的路由(因为是 RouterB连接的 RouterW下一跳还是 RouterBMetric在相加)。 RouterA通过递归和回朔算完所有的 lsa的路由,所有的路由都是从每个 router lsa StubNet这种网络中得出路由的,因为 StubNet才是描述接口网段的路由,才是我们最终需要的路由信息,那么 TypeRouter只是描述的是下一跳地址。
OSPF三步曲之一基础篇_ospf_09
 
每台路由器都有义务描述自己周边的链路状态(包括自己直连的路由器)见上图
每台路由器把周边的链路状态都发送到整个 area,这样,所有的路由器都存有一张同样的 lsdb信息,在由这个库算出来 spf路由。
 
当一台路由器的连接的某一个网段发生故障,那么就会产生一个 lsa flood到整个区域,所有的路由器都要在计算一边 spf路由,因为路由器不知道这条 lsa会影响那个路由,所以要重新把所有的 lsdb重新计算一遍,耗时并且占 cpu
 
type 2 DR发送,指定路由器产生用于描述所处的网段的链路数据包 network link,该数据包里包含在该网段上所有的路由器,包括指定路由器本身的状态信息
指定路由器 DR只有在与至少一个路由器建立相邻关系后才会产生网络链路信
息数据包,在该数据包中含有对所有已经与 DR建立相邻关系的路由器的描述,包括 DR路由器本身。类型 2的链路信息只会在包含 DR所处的广播性网络的区域中广播,不会广播至其余的 OSPF路由区域。
 
type 3 4类型 3和类型 4的链路状态广播在 OSPF路由协议中又称为总结链路信息数据包(Summary Link),该链路状态广播是由区域边界路由器或 AS边界路由器产生的。Summary Link描述的是到某一个区域外部的路由信息,这一个目的地地址必须是同一个 AS中。Summary Link也只会在某一个特定的区域内广播。类型 3与类型 4两种总结性链路信息的区别在于,类型 3是由区域边界路由器产生的,用于描述到同一个 AS中不同区域之间的链路状态;而类型 4是由 AS边界路由器产生的,用于描述不同 AS的链路状态信息。
Type 3类型的特点是每一条 type 3 lsa都对应一条路由
值得一提的是,只有类型 3 Summary Link才能广播进一个残域,因为在一个残域中不允许存在 AS边界路由器。残域的区域边界路由器产生一条默认的 Summary Link对域内广播,从而在其余路由器上产生一条默认路由信息。采用 Summary Link可以减小残域中路由器的链路状态数据库的大小,进而减少对路由器资源的利用,提高路由器的运算速度。
OSPF三步曲之一基础篇_休闲_10
 
abr会把各端口所属的各个区域的 lsa type 1阻断,如:type:Router1)的 lsa
那上图中 area3如何知道 area 0 中的路由呢,abr会把 area 0中所有的路由信息,比如有 100条路由,会以 100 type 3类型的 lsa发送到 area 3中并且下一跳是 abr本身。这样可以减少 lsa的容量,如果 area 0 中有一条路由 down了,那么在 area3 中直接可以把这条路由删掉就可以了,不用像以前那样重新计算
 
在区域间的路由器上不再描述链路状态而是采用 dv算法
 
type 5类型 5的链路状态广播称为 AS外部链路状态信息数据包。类型 5的链路数据包是由 AS边界路由器产生的,用于描述到 AS外的目的地的路由信息,该数据包会在 AS中除残域以外的所有区域中广播。一般来说,这种链路状态信息描述的是到 AS外部某一特定网络的路由信息,在这种情况下,类型 5的链路状态数据包的链路标识采用的是目的地网络的 IP地址;在某些情况下,AS边界路由器可以对 AS内部广播默认路由信息,在这时,类型 5的链路广播数据包的链路标识采用的是默认网络号码 0.0.0.0
 External 外部路由又分成了 External 1 2 两种情况
1:把外部进来的路由传进来 cost area中要叠加的(一般情况)
  2:进来的时候 cost是多少那么就一直是多少,不管经过多少路由器(负载均衡时用)
OSPF三步曲之一基础篇_职场_11
 
type 4类型只是描述如何到达 asbr,见上图
网段写的是 asbr router id,下一跳指向
abr 为什么不把它当成 type 3那样处理呢?直接生成 type 3的路由信息
因为是避免自环,因为外部路由是不可靠的,所以第五类的路由的优先级不一样,
这些路由在路由表中标识出 ase,优先级很低
 
LSA都有有它自己的老化计时器,承载在 LS寿命域内。缺省值为 30分钟
 
 
Lsa的分类
OSPF三步曲之一基础篇_职场_12
 
 

 
区域的类型:
 
1backbone骨干域
 
OSPF三步曲之一基础篇_职场_13
每一个区域都有着该区域独立的网络拓扑数据库及网络拓扑图。对于每一个区域,其网络拓扑结构在区域外是不可见的,同样,在每一个区域中的路由器对其域外的其余网络结构也不了解。这意味着 OSPF路由域中的网络链路状态数据广播被区域的边界挡住了,这样做有利于减少网络中链路状态数据包在全网范围内的广播,也是 OSPF将其路由域或一个 AS划分成很多个区域的重要原因。
OSPF三步曲之一基础篇_职场_13
 
 
骨干域传播域间路由
 
OSPF路由协议中存在一个骨干区域(Backbone),该区域包括属于这个区域的网络及相应的路由器,骨干区域必须是连续的,同时也要求其余区域必须与骨干区域直接相连。骨干区域一般为区域 0,其主要工作是在其余区域间传递路由信息。所有的区域,包括骨干区域之间的网络结构情况是互不可见的,当一个区域的路由信息对外广播时,其路由信息是先传递至区域 0(骨干区域),再由区域 0将该路由信息向其余区域作广播(见上图)
 
如果骨干网不连续要设置虚链路解决(见下图)
OSPF三步曲之一基础篇_职场_15
 
2stub 末端域
 
OSPF路由协议的链路状态数据库中,可以包括 AS外部链路状态信息,这些信息会通过 flooding传递到 AS内的所有 OSPF路由器上,如果配置成末端域就不接收这类信息,不接收 type 5类型的路由信息,怎么访问外部网络呢?由 abr产生一条默认路由,因为 abr知道所有的路由信息,stub路由把不知道的包都给 abr就可以了外部的 type 5进来由 abr直接变成一条缺省路由了
针对末端域还有两点需要注意:一是末端域中不允许存在虚拟链路;二是末端域中不允许存在 AS边界路由器。
 Hello包中有 stub 字段
3Totally stub 完全末端
只接收 type1 2 type3 也不接收,接收 abr的一条默认路由,
要配置 stub区域要把域中所有的路由器都配置成 stub
 所有的域间的路由信息都要经过 area 0来传递
对于普通的路由器原始发出的 lsa都是 type 1类型的,到了 abr之后传到 area 0中就变成 type 3了,如果 abr同时又是个 asbr外面连的是 rip它就会产成一个 type5
传到任何域也是 type5 分成 E1 E2
 stub不接收 type 5 abr来判断下面是 stub就会产成一条缺省路由
abr中配置成完全末端(配 no summary)就会产成一条缺省路由了,其他路由器还是配成 stub域就可以了
OSPF的接口和路由器的分类
 
OSPF三步曲之一基础篇_ospf_16
为什么说 ospf是没有自环的:
 
OSPF三步曲之一基础篇_职场_17
 
 
Virual Link 虚拟连接
应该所有的 area都要和 backbone相连(为了防止环路)不和主干相连的
area传递路由信息也要经过 area 0来穿过阻挡它和主干相连的域
 
在下图所示的例子中,区域 1与区域 0并无物理相连链路,我们可以在路由器
A及路由器 B之间建立虚拟链路,这样,将区域 2作为一个穿透网络(Transit-network),路由器 B作为接入点,区域 1就与区域 0建立了逻辑联接。
 
OSPF三步曲之一基础篇_职场_18
汇总路由:把内部域的路由汇聚发到主干域,这样当内部路由 flapping的时候不
影响外面
 
nbma网络中的 ospf
NBMA网络是指那些能够支持多台(两台以上)路由器但不具有广播能力的网
络。
帧中继、ATM X.25都是 NBMA网络的例子
如果 serial口是配置的物理端口,也就是说没有配置子接口,默认是 nbma模式,不支持广播,因为广播或多播地址是无法映射到 2层的 dlci号的。
可以用
show ip ospf int s0 看接口的 network type nbma
 
如果 3台路由器 r1 r2 r3
 
r3是帧中继交换机,则r3必须成为 dr,用静态 neighbor指定和 r2r1建立邻接,
因为 r1 r2的信息通过 r3
发送,可讲 r2 r1优先级设成 0,不进行 dr的选举。
 
NBMA拓朴结构上缺省 OSPF hello间隔和 down机间隔为 30秒和 120
下表是在各类拓朴结构上缺省 OSPF hello间隔和 down机间隔
OSPF环境                Hello间隔         Down机判定间隔
广播                     10               40
点对点                   10               40
NBMA                   30               120
OSPF NBMA拓朴结构中以两种正式模式之一运作:
l非广播多路访问
l点对多点
 
NBMA拓朴结构中配置路由器时,通常采用子接口
可以通过下面的命令来创建子接口:
iterface serial number.subinterface-number {multpiont | point-to-point}
 
在大型网络中,采用点对多点模式可以减少完全连通所必需的 PVC数量
点对多点有以下属性
不需要全互连的网络
不需要静态邻居配置
使用一个 IP子网
复制 LSA数据包
 
NBMA拓朴结构上的 OSPF小结
NBMA全互连邻居必须属于同一子网号人工配置选举 DR/BDRRFC
广播全互连邻居必须属于同一子网号自动选举 DR/BDRCisco
点对多点部分互边或星型邻居必须属于同一子网号自动,没有 DR/BDRRFC
点对多点非广播部分互边或星型邻居必须属于同一子网号手工配置没有
DR/BDRCisco
点对点通过子接口的部分互连或星型各子接口属于不同的子网自动,没有
DR/BDRCisco
在点对点拓朴结构中的 OSPF运行:
 
在点对点网络上,路由器通过向多目组播地址来检测它的邻居。不用进行选取举,
因为点对点上没有 DR BDR的概念,在 NBMA拓朴结构上缺省 OSPF hello间隔和 down机间隔为 10秒和 40
OSPF Point-to-Multipoint, Nonbroadcast
The following example illustrates a point-to-multipoint network with nonbroadcast.
 
interface Serial0
ip address 10.0.1.1 255.255.255.0
ip ospf network point-to-multipoint non-broadcast
encapsulation frame-relay
no keepalive
frame-relay local-dlci 200
frame-relay map ip 10.0.1.3 202
 
frame-relay map ip 10.0.1.4 203
frame-relay map ip 10.0.1.5 204
no shut
!
router ospf 1
network 10.0.1.0 0.0.0.255 area 0
neighbor 10.0.1.3 cost 5
neighbor 10.0.1.4 cost 10
neighbor 10.0.1.5 cost 15
 
The following is the configuration for the router on the other side:
 
interface Serial9/2
ip address 10.0.1.3 255.255.255.0
encapsulation frame-relay
ip ospf network point-to-multipoint non-broadcast
no ip mroute-cache
no keepalive
no fair-queue
frame-relay local-dlci 301
frame-relay map ip 10.0.1.1 300
no shut
!
router ospf 1
network 10.0.1.0 0.0.0.255 area 0
 
The output shown for neighbors in the first configuration above looks like this:
 
Router# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
 
4.1.1.1 1 FULL/ - 00:01:52 10.0.1.5 Serial0
3.1.1.1 1 FULL/ - 00:01:52 10.0.1.4 Serial0
2.1.1.1 1 FULL/ - 00:01:52 10.0.1.3 Serial0
OSPF Point-to-Multipoint, Broadcast
The following example illustrates a point-to-multipoint network with broadcast.
 
interface Serial0
ip address 10.0.1.1 255.255.255.0
encapsulation frame-relay
ip ospf cost 100
ip ospf network point-to-multipoint
 
frame-relay map ip 10.0.1.3 202 broadcast
frame-relay map ip 10.0.1.4 203 broadcast
frame-relay map ip 10.0.1.5 204 broadcast
frame-relay local-dlci 200
 
!
 
router ospf 1
network 10.0.1.0 0.0.0.255 area 0
neighbor 10.0.1.5 cost 5
neighbor 10.0.1.4 cost 10
 
The configuration of the neighbor at 10.0.1.3 is:
 
interface $core2s2
ip address 10.0.1.3 255.255.255.0
ip ospf network point-to-multipoint
encapsulation frame-relay
frame-relay local-dlci 301
frame-relay map ip $core7s0_ip 300 broadcast
no shut
 
!
router ospf 1
network 10.0.1.0 0.0.0.255 area 0
 
The output shown for neighbors in the first configuration above looks like this:
 
Router# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
 
4.1.1.1 1 FULL/ - 00:01:50 10.0.1.5 Serial0
3.1.1.1 1 FULL/ - 00:01:47 10.0.1.4 Serial0
2.1.1.1 1 FULL/ - 00:01:45 10.0.1.3 Serial0
The route information in the first configuration above looks like this:
 
Router# show ip route
 
Codes: C -connected, S -static, I -IGRP, R -RIP, M -mobile, B -BGP
D -EIGRP, EX -EIGRP external, O -OSPF, IA -OSPF inter area
N1 -OSPF NSSA external type 1, N2 -OSPF NSSA external type 2
E1 -OSPF external type 1, E2 -OSPF external type 2, E -EGP
i -IS-IS, L1 -IS-IS level-1, L2 -IS-IS level-2, * -candidate default
U -per-user static route, o -ODR
 
Gateway of last resort is not set
 
C 1.0.0.0/8 is directly connected, Loopback0
 10.0.0.0/8 is variably subnetted, 4 subnets, 2 masks
O 10.0.1.3/32 [110/100] via 10.0.1.3, 00:39:08, Serial0
C 10.0.1.0/24 is directly connected, Serial0
O 10.0.1.5/32 [110/5] via 10.0.1.5, 00:39:08, Serial0
O 10.0.1.4/32 [110/10] via 10.0.1.4, 00:39:08, Serial0
 
OSPF路由协议验证
OSPF数据交换的验证是基于每一个区域来定义的,也就是说,当在某一个
区域的一个路由器上定义了一种验证方式时,必须在该区域的所有路由器上定义
相同的协议验证方式。另外一些与验证相关的参数也可以基于每一个端口来定
义,例如当采用单一口令验证时,我们可以对某一区域内部的每一个网络设置不
同的口令字
OSPF路由协议的定义中,初始定义了两种协议验证方式,方式 0及方式
1,分别介绍如下:
 
验证方式 0:采用验证方式 0表示 OSPF对所交换的路由信息不验证。在
OSPF的数据包头内 64位的验证数据位可以包含任何数据,OSPF接收到路由数据后
对数据包头内的验证数据位不作任何处理。
验证方式 1:验证方式 1为简单口令字验证。这种验证方式是基于一个区域内的每一个网络来定义的,每一个发送至该网络的数据包的包头内都必须具有相同的 64位长度的验证数据位,也就是说验证方式 1的口令字长度为 64bits,或者为 8个字符。
 
OSPF经验总结
SH  IP  OSPF  NEI 可查看路由器邻居状态,正常应为 full
注意子网掩码的反码要写对
注意所有的端口起来时才可以加 OSPF路由 area域一定要相同
注意 hello(默认 10秒)和 dead(默认 40秒)时间要两端匹配
ospf如果 2个路由器其中一台是 abr,路由器端口设置了 area 10 stub no-summary 那么互连的另一个路由器也要设置,不然端口 down不邻接
 
在单个区域内配置 OSPF
 
要配置 OSPF,我们必须执行以下步聚:
l通过"router ospf process-id"全局配置命令在路由上启动
OSPF进程 process-id是一个内部编号
l通过"network area"路由器配置命令来标识路由器上哪些 IP网络号是 OSPF网络的一部分。
network address wildcard area area-id
要确认路由器的
ID可以输入:show ip ospf interface 命令
修改路由器的优先级:router(config)#ip ospf priority number
number 1~255的数,缺省是`10表示不能被选举为 DR BDR
修改链路开销要通过"ip ospf cost cost"命令覆盖分配给一个 OSPF接口的缺省开销值
要控制 OSPF如何计算接口缺省度量值(开销)可以使用 "auto-cost refence-bandwidth"
在接口配置模式下输入"ip ospf network"命令来指定 OSPF网络模式配置
互连多个 OSPF区域
 
为了解决最短路径优先(SPF)算法的频繁计算、大型路由表、大型链路状态表,
OSPF被设计为可将大型网络分成多个区域的能力也被称为体系化路由。体系化
路由使我们能够将大型网络(自治系统)分成被称为区域的小网络
 
OSPF的体系化拓朴结构有以下优点:
SPF计算频率降低
更小的路由表
链路状态更新(LSU)负荷降低
 
OSPF路由器类型如下:
内部路由器
主干路由器
区域边界路由器(ABR
自治系统边界路由器(ASBR
 
区域的类型
标准区域
主干区域
未节区域
完全未节区域
次未节区域
 
数据包是怎样穿过多个区域的:
如果数据包的目的地是本外的一个网络,那么它将被区域内部路由器转发到目的
地内部路由器;
如果数据包的目的地是本区域外的一个网络,那么它必须经过下面的路径
------数据包从源网络到一个 ABR
------ABR将数据包通过主干区域外发送到目的地网络 ABR
------目的地 ABR将数据包转达发到域内的目的地网络
虚拟链路有两个条件:
它必须被建立在边接着一个共同区域的两个 ABR之间
这两台 ABR其中一台必须连接着主干区域
 
路由器上没有用来激活 ABR ASBR的功能的特殊命令。路由器通过它所连接
区域的情况来承担这个角色,OSPF的基本配置步骤如下:
在路由器上启用 OSPF
router(config)#router ospf process-id
指明将路由器上的哪些 IP网络作为 OSPF的一部分
router(config-router)#network address wildcard-mask area area-id
(任选项)如果路由器有一个接口连接着一个非 OSPF网络,那么还要执行相应
的配置步骤。
要进一步减少路由表的数量,我们可以创建一个完全未节区域,这是 CISCO的一种专有的特性。
 
 
Router ospf 200
用进程 ID 200启用 OSPF
network 10.X.X.X 0.0.0.0 area 0
指定运行 OSPF的接口和它们的区域
area x range 192.168.X.0 255.255.255.0
归纳地址
area X stub [no-summary]
将一个区域配置为一个未节或完全未节区域
area x virtual-link 192.168.x.49
创建一条 OSPF虚拟链路
area x nssa
将一个区域配置为一个次未节区域(NSSA
summary-address 172.16.0.0 255.255.0.0
将外部地址归纳发布到 OSPF
show ip ospf
显示有关 OSPF路由进程的一般信息
show ip ospf neighbor
显示有关 OSPF邻居信息
show ip ospf database
显示 OSPF链路状态数据库中的条目
show ip ospf interface
显示有关一个接口的具体 OSPF信息
show ip ospf virtual-links
显示 OSPF虚拟链路的状态
debug ip ospf adj
显示涉及建立或拆除一个 OSPF毗邻关系的事件