OSPF(Open Shortest Path First)开放式最短路径优先协议02

 OSPF邻居:

OSPF路由器需要邻居路由器在几种状态间转换,然后会到达FULL
失效状态(down):一个会话的初始状态,除了在NBMA网络中,其他类型的网络不会发送hello包给那些失效的邻居路由器。如果邻居状态转到了失效状态,路由器将会清空链路状态重传列表,数据库摘要列表和链路状态请求列表
尝试状态(Attempt):仅适用于NBMA网络,如果具有DR选举资格的路由器连接其他路由器的接口变为active的时候(本地接口),这台路由器会把邻居路由器的状态转换到Attempt状态,使用hello间隔代替Pollinterval向邻居发送hello包.因为他无法动态的去发现邻居
初始状态(init):表明在最近的deadinterval中收到了来自邻居路由器的hello包,双向通信依然没有建立,路由器会在hello包的邻居字段中包含,在此状态或者更高状态下,所有学习到的所有邻居RID,如果是第一个hello包,为空(接收到的hello中有RID)
双向通信状态(2-way):表示本地路由器从来自邻居的hello包的邻居字段中看到了自己的RID。意味着双向通信建立成功,在MA网络中,路由器只有在此状态或者更高的状态中才有资格参与DR/BDR选举,如果在init状态下从邻居收到数据库描述报文,也可使本地路由器直接进入2-way状态
信息交换初始状态(ExStart):本地路由器和他的邻居将在这一状态下建立主/从关系,确定数据库描述数据包的序列号,为后面的DBD交换做准备。具有最大RID的路由器为主路由器
信息交换状态(Exchange):本地路由器将向他的邻居路由器发送数据库描述包,此状态下,也会发送链路状态请求数据包给邻居,用来请求LSA
信息加载状态(Loading):本地路由器向他邻居路由器发送链路状态请求,用来请求最新LSA,虽然在Exchange状态发现了新的LSA,但是本地路由器还没有收到这些LSA
完全邻接状态(full):路由器建立起完全的邻接关系
 
邻居建立过程:

互相发送HELLO包来协商一些参数。

OSPF会周期性的从启用OSPF的接口上发送HELLO包,OSPF启动之初,就进入了INIT状态。直到从邻居的HELLO包中看到了自己的RID,才会将邻居的状态转为2-WAY

发送第一个DBD报文,来协商主从关系(是空的DBD报文,仅仅用来协商主从关系)

R1:

R2:

协商过主从关系以后,状态就从Exstart转到Exchange,并且开始交互剩下的DBD报文:

DBD报文间用序列号进行确认,主发送的序列号递增,从序列号跟随主序列号,来进行确认。这算一种隐性的确认方法。

从邻居收来的DBD报文中会携带LSA头部信息,如果有本地没有的,或更新的LSA,将他放入我自己的链路状态请求列表,然后去发送LSR来请求这条LSA的完整信息。直到自己的链路状态请求列表为空。

有可能在交互DBD的中间,Exchange状态的时候,就开始发送了LSR,来请求LSA的信息。LSR只包含被请求LSA的头部信息。

在Exchange状态下,如果LSU和LSR的交互完成了,则直接转到FULL状态,如果还有,则转到Loading状态。

接收到LSR的路由器,会返回一个LSU,包含被请求的LSA的详细信息。

MA网络和其他网络的区别,1.需要选举DR/BDR,建立完整的FULL状态最少40S,wait time:在开始选举DR和BDR之间,路由器等待邻居路由器的Hello数据包通告DR和BDR的时长。

并不是先启动OSPF进程的路由器就是DR,而是有一个时间间隔让路由器来等待其他路由器,在这个时间间隔内,路由器相互监听Hello包中的DR和DBR字段中的信息,并且服从优先级原则,可以这样认为——选举是公平的。(要充分考虑是否真实情况40S内一个MA网络的OSPF能跑完)

R1先启动OSPF,40S以后,R2启用OSPF。看DR/BDR的选举

(config-router)#do show ip os int f0/0

FastEthernet0/0 is up, line protocol is up 

  Internet Address 12.0.0.1/24, Area 0 

  Process ID 1, Router ID 1.1.1.1, Network Type BROADCAST, Cost: 1

  Transmit Delay is 1 sec, State DR, Priority 1 

  Designated Router (ID) 1.1.1.1, Interface address 12.0.0.1

  Backup Designated router (ID) 2.2.2.2, Interface address 12.0.0.2

 

DR/BDR的选举规则,先选举BDR,然后这个BDR成为DR,再选出一个BDR。(因为所有路由器在开始的时候并没有声明自己是DR/BDR,优先级又一样,故RID大的成为BDR,然后这个BDR成为DR,再重新找一个RID次大的,成为BDR)

如果是串口,默认是点到点的网络类型,是不需要选举DR/BDR的。邻居建立的方式差不多,只是不需要等待40S那么长时间。

DR/BDR指的是一个接口的概念,虚链路也是指的接口。

 

注:所谓的隐式确认和显式确认,隐式确认指的是DBD的确认和LSR的确认,这两个确认是和Retransmit计时器有关的。显式确认只有LSAck。

OSPF接口:
OSPF协议通过路由器的接口来了解链路信息,分清接口和链路的概念。
观察接口结构
R1#show ip ospf interface serial 1/0
Serial1/0 is up, line protocol is up 
  Internet Address 12.0.0.1/24, Area 0 
  Process ID 1, Router ID 1.1.1.1, Network Type POINT_TO_POINT, Cost: 64
  Transmit Delay is 1 sec, State POINT_TO_POINT,
  Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
    oob-resync timeout 40
    Hello due in 00:00:08
  Index 1/1, flood queue length 0
  Next 0x0(0)/0x0(0)
  Last flood scan length is 1, maximum is 1
  Last flood scan time is 0 msec, maximum is 0 msec
  Neighbor Count is 1, Adjacent neighbor count is 1 
    Adjacent with neighbor 2.2.2.2
  Suppress hello for 0 neighbor(s)
Internet Address:此接口所配置的ip/mask
Area 0:指定的区域ID,始发这个接口的OSPF数据包使用这个区域ID
Process ID:进程ID,CISCO私有,依靠这个CISCO来在同一设备中使用多个OSPF进程,仅仅本地有效
Router ID:路由器ID,选举规则见LS协议最后一节
Network Type:和接口相连的网络类型:广播,点到点,点到多点,NBMA,虚链路等。
Cost:发出数据包的出站代价,即数据层面的出接口,控制层面的入接口。
OSPF带宽计算规则:10的8次方/接口带宽,这样会有一个问题凡是大于100M的,cost都为1.无法衡量出不同链路的带宽
使用auto-cost reference-bandwitch修改分母
InfTransDelay=Transmit Delay :LSA从接口发送经历的时间,LSA发出后会引发此参数不断变大 cisco中默认是1S 
ip ospf transmit-delay来更改
因为网络类型关系,没有DR/BDR的显示
Wait 40:在serial 口中没有意义,表示的是在开始选取DR/BDR之前,路由器等待邻居路由器的HELLO数据包通告DR/BDR的时长。
Retransmit:在没有得到确认的情况下,重传OSPF数据包等待的时间长度,ip ospf retransmit-interval更改
neighbor:只有建立邻接关系的路由器才会在此有显示。
如果开启认证,此命令最后输出也会有显示。如果没有使用或使用了null认证,则不会显示。
 
每台路由器都会维护一个邻居数据结构表:
R1#show ip ospf neighbor 2.2.2.2
 Neighbor 2.2.2.2, interface address 12.0.0.2
    In the area 0 via interface FastEthernet0/0 
    Neighbor priority is 1, State is FULL, 6 state changes
    DR is 12.0.0.2 BDR is 12.0.0.1
    Options is 0x52
    LLS Options is 0x1 (LR)
    Dead timer due in 00:00:36
    Neighbor is up for 00:00:59
    Index 1/1, retransmission queue length 0, number of retransmission 1
    First 0x0(0)/0x0(0) Next 0x0(0)/0x0(0)
    Last retransmission scan length is 1, maximum is 1
    Last retransmission scan time is 0 msec, maximum is 0 msec
Neighbor :邻居路由器的RID
interface address:邻居路由器的IP地址
areaID:收到的hello包中的areaID需要和接收hello包接口的areaID一致,保证互为邻居路由器
 interface :本地通过哪个接口连接到这个邻居
state:从本地看邻居的状态,此输出来看是full
DR/BDR:DR/BDR的IP地址,包含在hello包中的DR/BDR字段
Dead timer:收到hello会刷新此计时器
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章