cisco路由器Router ID选取:
(1)如果使用router-id命令手工设置,则使用手工设置router-id
(2)如果没有手工设置,路由器选取环回口上loopback,最高IP地址
(3)如果没有配置loopback接口,则选取物理接口上数值最高的IP地址。用作router id的接口不一定需要运行OSPF
使用loopback接口做router id的好处:
*loopback接口比其他物理接口稳定
*网络管理员在设置地址时有自主权
1.Hello协议
目的:
*发现邻居路由器的方法
*在两台路由器称为邻居之前,需要通告这两台路由器必须相互认可的参数
*Hello数据包在邻居路由器之间担当keepalive的角色
*确保邻居路由器之间的双向通信
*在一个广播网络或非广播多路访问网络上选取DR和BDR
Hello时间间隔HelloInterval
宣告OSPF的路由器周期性的从启动OSPF协议的每一个接口上发送Hello数据包
cisco路由器中
*广播型网络缺省Hello时间为10s
*非广播网络缺省Hello时间为30s
*使用命令ip ospf hello-interval更改
路由无效时间间隔RouterDeadInterval
如果一台路由器在路由无效时间间隔内还没有收到来自邻居的Hello数据包,那么它将宣告它的邻居路由器无效
cisco路由器中:
*路由器无效时间间隔的缺省值为Hello间隔的4倍
*使用命令ip ospf dead-interval更改
Hello数据包包含的信息:
*始发路由器的路由ID RouterID
*始发路由器接口的区域ID AreaID
*始发路由器接口的地址掩码
*始发路由器接口的认证类型和认证信息
*始发路由器接口的Hello时间间隔
*始发路由器接口的路由器无效时间间隔
*路由器优先级
*指定路由器DR和备份指定路由器BDR
*标识可选性能的5个标记位
*始发路由器的所有有效邻居的路由ID
当一台路由器从它的邻居路由器收到一个Hello数据包时,将检测如下信息:
区域ID
认证信息
网络掩码
Hello间隔时间
路由无效时间间隔
可选项的数值是否和接收接口上配置的对于值匹配?
双向通信two-way 如果一台路由器收到一个有效的Hello数据包,并在这个Hello数据包中发现自己的路由器ID,则认为双向通信建立成功。
2.网络类型
OSPF定义的网络类型:
*点到点网络point-topoint
*广播型网络broadcast
*非广播多路访问网络NBMA
*点到多点网络poin-to-multipoint
*虚链路virtual links
*点到点网络point-to-point
一对单独的链路
OSPF的数据包的目的地址为224.0.0.5,此组播地址称为AllSPFRouter
*广播型网络broadcast
以太网一类的网络
选举DR和BDR。
始发于DR,BDR的Hello数据以组播方式发送到224.0.0.5地址,携带这些数据包的数据帧的目标MAC地址为0100.5E00.0005。
其他所有路由器都将以组播方式发送链路状态更新数据包和链路状态确认数据包,发送地址为224.0.0.6,MAC地址为0100.5E00.0006
*非广播多路访问网络NBMA
在NBMA上选取DR和BDR,所有OSPF数据包以单播方式发送
*点到多点网络point-to-multipoint
不需要选取DR和BDR,OSPF数据包以单播方式发送
*虚链路virtual links
虚链路上OSPF数据包是以单播方式发送
3.指定路由器和备份指定路由器
指定路由器作用
*描述这个多路访问网络和OSPF区域内其余与其相连的路由器
*管理这个多路访问网络上的泛洪扩散过程
DR,BDR选取过程:
。。。。。。。。
4.OSPF接口
(1)OSPF接口数据结构
show ip ospf interface
路由器接口数据接口信息说明如下:
IP地址和掩码IP Address and Mask
路由器接口配置的IP地址和掩码,始发于这个接口的OSPF数据包把这个地址作为源地址
区域ID Area ID
接口所在区域,始发于这个接口的OSPF数据包将使用这个区域ID
进程ID ProcessID
cisco特有属性,进程ID本地有效,使用进程ID区分不同的OSPF进程
路由器ID RouterID
网络类型 Network Type
代价Cost
从该接口发送出去的数据包的出站接口代价,使用ip ospf cost
InfTransDelay
LSA从路由器的接口发送后经历的时间,以秒数计算
状态 state
接口功能状态
路由器优先级Router Priority
范围为0--255,用来选择DR和BDR的八位无符号整数
指定路由器DR
对于和路由器接口相连的网络的指定路由器,路由器将同时记录下指定路由器的router id和它与这个共享网络相连接的接口地址信息
备份指定路由器BDR
对于和路由器相连的网络的BDR,路由器也将同时记录下指定路由器的router id和它与这个共享网络相连接的接口地址
Hellointerval
接口上传输两个hello数据包之间的周期性时间间隔,以秒s表示
cisco路由器在广播网络上缺省为10s,非广播网络为30s
RouterDeadInterval
在宣告邻居路由器无效之前,本地路由器从与一个接口相连接的网络上侦听到来自于邻居路由器的一个Hello数据包所经历的时间,以秒来计数
cisco缺省为HelloInterval的4倍
等待计时器Wait Timer
在开始选取DR,BDR之前,路由器等待邻居路由器的Hello数据包通告DR和BDR的时长,等待计数器的时长就是RouterDeadInterval的时长
RxmtInterval
在没有得到确认的情况下,路由器重传OSPF数据包将要等待的时间长度,以秒来表示。
cisco缺省时间为5s
Hello计时器Hello Timer
初始值为HelloInterval设置
邻居路由器Neighboring Router
和这个接口相连的网络上有效邻居路由器的列表
Autype
网络上使用的认证类型
OSPF认证类型:Null,简单口令,加密认证(MD认证)
认证密钥
如果在路由器上开启加密认证方式,认证密钥就是一个消息摘要密钥,加密认证允许路由器的一个接口上配置多个密钥
(2)OSPF接口状态机
OSPF接口状态:失效,点对点,等待,DR,备份,DRother,loopback
*失效Down
初始化的接口状态,
*点到点
适用于点到点,点到多点,虚链路等网络类型。
*等待waiting
适用于广播型,NBMA,
*指定路由器DR
5.OSPF邻居
成功建立一个邻接关系,需要经历如下状态:
*邻居路由器发现阶段
*双向通信阶段
当两台互为邻居的路由器在它们的Hello数据包中都互相列出了它们对方的路由器ID,路由器认为双向通信完成
*数据库同步阶段
路由器之间将进行数据库描述,链路状态请求,链路状态更新,链路状态确认数据包。
执行这一步骤的目的是使其中一台邻居路由器称为主路由器master,另一台路由器成为从路由器slave,主路由器控制数据库描述数据包的信息交换
*完全邻接状态
(1)邻居数据结构
邻居路由器ID Neighbor ID
邻居ID地址 Neighbor IP address
指和网络相连的邻居路由器的接口IP地址
区域ID AreaID
为形成邻居关系,路由器收到Hello数据包中的区域ID必须和路由器接收接口配置的区域ID要匹配
接口Interface
指与邻居路由器所在网络相连的接口
邻居优先级 Neighbor Priority
邻居路由器的优先级,在邻居路由器的Hello数据包中通告
状态State
从本地路由器看到邻居路由器的功能状态
指定路由器DR
备份指定路由器BDR
PollInterval
只用于NBMA网络上相关的邻居路由器
cisco缺省值为120s
邻居路由器可选项Neighbor option
失效计时器Inactivity Timer
(2)邻居状态机
*失效状态 Down
*尝试状态Attempt
仅适用于NBMA网络上的邻居,在NBMA上邻居路由器是手工配置。
*初始状态Init
表明在RouterDeadInterval的时间里路由器收到来自邻居路由器的Hello数据包,但双向通信仍然没有建立
*双向通信状态 2-way
表明本地路由器已经在来自邻居路由器的Hello数据包的邻居字段中看到它自己的邻居ID
*信息交换初始状态 Exstart
本地路由器和邻居路由器建立主从关系,确认数据库描述数据包的序列号。具有最高路由器ID的邻居路由器将成为主路由器
*信息交换状态 Exchange
本地路由器将向邻居路由器发送可以描述它整个链路状态数据库信息的数据库描述数据包
本地路由器也会发送请求数据包给邻居路由器,请求最新的LSA
*信息加载状态 Loading
本地路由器将会向邻居路由器发送链路状态请求数据包,请求最新的LSA通告
完全邻接状态Full
(3)建立一个邻接关系
在一个邻接关系的创建过程中,OSPF使用以下3种数据包类型
数据库描述数据包 类型2
链路状态请求数据包 类型3
链路状态更新数据包 类型4
数据库描述数据包中有3个标记位用来管理邻接关系的建立过程
I位,初始位 Initial bit
当需要指明所发送的是第一个数据库描述数据包时,该位设置为1
M位,后继位 More bit
指明所发送的还不是最后一个数据库描述数据包时,该位设置为1
MS位 主从位Master/Slave bit
当数据库描述数据包始发于一个主路由器时,该位设置为1
LSA的确认
显式确认
确认收到包含这个LSA头部的链路状态确认数据包
隐式确认
确认收到包含这个LSA的相同实例的更新数据包