ospf rip eigrp
分类 IGP 无类 链路状态 IGP 无类 距离矢量 IGP 无类 混合
封装 IP 89 udp520 IP 88
更新地址 224.0.0.5-6 224.0.0.9 224.0.0.10 也可以neighbor指单播
更新方式 定时(30分)完整 完整(30秒定时触发 增量 触发
老化(60分)触发
AD 110 120 汇总5 外部170 内部90
度量 带宽 跳数 5个K值(默认带宽 延时)
##########################################################################################
◆LSA 分为7类
链路状态协议传递的不是路由,而是LSA(链路状态描述信息)包括路径和拓扑。
- 一个区域内的LSA是同步,一致的。
- LSA放到LSDB,同步后运行SPF算法形成SPF树,根据SPF树生成路由表
◆链路状态协议的结构
- 邻居表 通过hello包形成和维护
邻居数据库
包含自己承认的邻居名单
- 拓扑表
LSDB
包含所有路由器及其所连接的网络;对比eigrp只有邻居通告的路由信息
同一区域内LSDB内容同步
- 路由表
转发数据库
达到目的的最佳路径列表
◆链路状态协议的结构:去适应大型网络,隔离大量的LSA泛洪
网络分层
- 链路状态协议需要对网络分层
- 层次包括 2层:骨干 区域 0。。 传递路由
非骨干区域 。。 接入终端 路由汇总给骨干。
◆区域特点:
- 减少路由条目 手动汇总
- 拓扑变化只影响自己的区域
- LSA在自己区域泛洪
- 层次化设计
◆区域术语:
非骨干区域必须和骨干区域相连,防环;区域之间类似于距离矢量的方法来选路,通过骨干区 域知道非骨干区域
ABR 区域边界路由器,即连接区域0和非骨干区域的路由(连接非骨干区域的路由器不能称为 ABR)一个路由器同时属于两个区域,属于不同区域的是接口。对比BGP一个路由器只能属 于一个区域
ASBR 把外部路由重分布到ospf内的路由器 除了特殊区域 ofpf stub
OSPF 邻居 :
hello更新时间10秒,死亡时间40秒 前提- 点到点网络和广播
hello更新时间40秒,死亡时间120秒 前提- NBMA ;点到多点;点到多点非广播
路由器交换hello信息建立邻居
hello包内容:hello & dead 时间必须一致
area ID 必须一致
认证密码 必须一致
stub 区的flag 字段 普通区域和stub不能称为邻居
接口MTU 必须一致 ,除非配置接口忽略MTU.ip ospf mtu ignor
MA网络中,接口掩码必须一致。
帧中继网络,隔离组播也会无法形成邻居关系
ACL过滤数据包 导致无法建立邻居
除此之外还包含 router ID唯一标识路由器;neighbor;
邻接:邻接关系同步LSA .。邻居关系,不同步LSA
是否形成邻接 由OSPF网络类型决定的
- 点到点广域网
邻居之间形成完全邻接状态
- 局域网链路
与DR BDR 形成完全邻接状态 MA网络
点到多点 点到多点非广播 相邻设备形成邻接关系
与其他路由器只形成邻居关系,双向状态Drothers
- 路由更新和拓扑信息只在形成邻接关系的路由器之间传递
- 一旦形成邻接,将同步LSA
- LSA将在一个区域内泛洪
◆OSPF算法 SPF算法
10~8 / 接口带宽(路由入方向的接口) 单位 bps 例如100M链路的cost值就是1
◆LSA 序号
- 每个LSA 在LSDB中都有一个序号
- 序号编排方案是一个4字节的数字,从0X80000001 到 0X7FFFFFFF
- 每隔30分 路由的LSA泛洪一次,保证数据库同步,每次泛洪,序号 +1
- 最终,一个LSA会从 0X7FFFFFFF 循环回 0X80000001。若发生这种情况,这个LSA会被始发路由 器将老化时间设置为60分,并从LSDB中清除。
- 当路由器遇到两个一样的LSA,必须确定哪个最新,即序号高的最新。
◆LSA序号和生存时间
查看LSA序号 :show ip ospf database
◆链路状态协议的结构:LSA
路由器收到一条LSA,如何判断本地是否已经存在这条LSA?
通过LSA头部信息,包括3个信息,完全一致才是同一条LSA
show ip ospf database
1,类型 1--7类: router--1类
2,通告路由器: ADV ROUTER
3,LSA名字: Link-ID
判断一条LSA是否是最新的,出来用序号区别外,还可以用老化时间和校验和区分!!
############################################################################################################# OSPF 包类型 ####################
HELLO 建立和维持邻居关系 网络类型决定10秒还是30秒
DBD LSA的头部消息 6个消息 3个区分是否同一个LSA. ; 3区别是否是最新的LSA
LSA类型,通告路由器,link-ID; 序号生存时间 校验和
link-state request 也是LSA头消息
link-state update 完整LSA消息
link-state ACK
其中只有LSU需要ACK确认
LSU 来确认 LSR
DBD 自己确认自己
OSPF 包头格式
version number |
type |
packet length |
router ID |
area ID |
check sum |
authentication type |
authentication | date |
version v2--IPv4; v3--IPv6
type 1-5 5种包类型
routerID 标识路由器
area-ID 基于接口。。。。ISIS 区域基于路由器
校验和 确定包么有被篡改
认证类型 0:不认证,默认 1:明文 2:MD5
authentication 根据类型 空 密码 散列值
DATE 若是DBD:本地所有的LSA头
LSR:想要的LSA头
LSU:完整LSA
ACK:收到的LSA头
hello包:包括内容
router ID
★ hello dead 时间
neighbor 收到的hello包含自己routerID
★ areaID
router priority
DR IP address
BDR IP address
★ authentication password
★ stub area flag
◆ OSPF路由器ID
- 每个运行ospf的路由器都有一个routerID
- 在LSDB中,通过routerID识别不同路由器
- 默认,routerID是路由器活动接口IP最高的
- 若配置loop back 则他将成为routerID,若有多个loop back 则选IP最高的
- 配置 进程下 router-ID x.x.x.x
- 建议用loop back 口做routerID
routerID 配置多少就是多少 没配置 就是loop back IP 最大的 没有loop back就选活动接口IP最大的
改变routerID 要重启进程才能生效clear IP ospf process ;这个过程会重新收敛,会造成断网。
routerID相同将不能形成邻居关系。不相邻路由器,或不同区域路由器routerID一样可以建立邻居但会影响路由传递。
◆DR BDR选举
- 利用组播交换hello (优先级字段)
- 优先级最高当选DR,次高为BDR
- 优先级相同,用routeID比较
◆优先级
- 接口下 命令 ip ospf priority number
- 不同接口可能被分配不同值
- 默认 1 。范围 0 - 255
- 优先级为 0 将永远不参与DR BDR选举
- 一个路由器不是DR 或BDR,就是DRother
- DR BDR 非抢占,但可以设置为 0 主动弃权,同时BDR变为DR,不会出现更高优先级的成为DR,剩 下的选举BDR
- 选举时间40秒
◆ DR/BDR选举完成后,DRrother只和DR、BDR形成邻接关系。
所有路由器组播hello包到地址224.0.0.5 以便他们能跟踪其他邻居的信息,即DR将泛洪LSU到 224.0.0.5
Drother 只组播LSU到all drother地址224.0.0.6。只有DR BDR监听这个地址
所有Drother泛洪 LSU 到224.0.0.6,这个地址只有DR BDR能接收,Drother将丢弃这个组播地址,然后DR 泛洪 LSU 到224.0.0.5,这个地址所有路由器都能收到 ,这样DR BDR和所有drother的通信。
当有链路断了 泛洪老化时间为3600秒 序号+1的LSA
当DR当掉,BDR不存在情况下 ,Drother发的更新,其他路由器需要40秒dead时间才能知道,所以Drother需要40秒才能收敛
在有BDR的情况下,Drother的更新224.0.0.6也会被BDR收到,当BDR 4秒没收到DR关于DRother的更新,BDR就会接替DR,泛洪224.0.0.5。所以其他路由器只需4秒就能收敛。
########################################################################################
◆ 过程
172.16.5.1 172.16.5.3
RA-----------down state---------RB
-----hello 224.0.0.5-->RB->init state
<----单播包含RA的信息----- 触发更新
two-way state---单播包含RB的信息-》RB 也进入two-way state
two-way state 使用HELLO中的优先级字段后routerID选举DR BDR 40秒时间,所以two-way会卡40 秒,如果不需要选DR BDR 就瞬间进入下一状态。
exstart state
选举master,master不一定是DR,因为DR使用优先级选举,master使用routerID
使用DBD报文中的routerID
RA/|\----------I will start exhange 携带自己routerID------------->RB
<--NO,I will start exchange 携带自己routerID(地址高于RA)--
Exchange state
<-------------here is a summary of my LSDB------------------
-------------here is a summary of my LSDB------------------>
Loading state相互请求自己所需
LSR ----------RA需要的路由------------->
<---------RA需要的路由-------------LSU
LSACK---------------------------------->
FULL state 然后运行SPF生成路由表
DBD报文,如何实现自己确认自己?
DBD字段包括3位
init是否是初始 more是否有后续报文 master是否是主
第一个DBD的flag字段3位都为1 即flag=7,随机生成一个序号。对端也是发送flag=7的DBD
比较routerID后 用对端序号发给对端 flag= 2.对端收到200的序号
对端发送序号位201 flag=3 ,直到主传到最后一个报文时 flag = 1
确认完成!!!
待续!!!