ospf ccnp内容
一 link-state protocols
IGP 开放式的最短路径优先协议 公有协议
支持中到大型的网络 spf算法 链路状态协议
1.传送的LSA link status advertisement 链路状态通告 包换拓扑信息
具体包括:网段的前缀 掩码 连接的路由器的哪些接口 直连哪些路由器
LSA分为7中类型
某些包含的是拓扑信息 但是有些包含的是路由信息
2.LSDB lsa的集合 链路状态数据库
对此进行spf 算法 得到spf 树 (基于cost代价)再得出最优的路由 并将其加入到路由表中
3.既支持vlsm 变长掩码 又支持 cidr 路由聚合
4.封装
layer2| ip |ospf| fcs
直接封装到IP报头内 上层协议号为89 eigrp为88
二 link-state data structures
1.neighbor table:
邻接表
2.LSDB
链路状态数据库 既包含拓扑信息 又包含路由信息
3.routing table
路由表
三 link-state routing protocols
1.link-state routers recognize more information about the network than their distance vector counterparts
信息更多 知道每个链路的具体状态连接信息
2.each router has a full picture of the topology in the every area. 每个路由器拥有同一区域内的所有拓扑信息
3.consequently,link-state routers tend to make more accurate decisions.
根据1和2 决策会更精确 主要是避免环路
四 link-sate data structure:network hierarchy
二层区域 基于路由器的接口
transit area -----backbone or area 0 传输区域 或者核心区域或者主干区域 必须存在
regular area-----nonbackbone areas 常规区域 非主干区域 可以不存在
单区域划分时 唯一的区域可以是area0 也可以不是area0
拓扑展示
有利点: a 减少路由表的路由条目的数量 ----汇总以及聚合 rc为area0和area1分别维护不同的LSDB
area0到area1传递域间的路由时用到LSA传递 这时候LSA中包含的不是拓扑信息 而是路由信息
而此路由信息由贝尔曼福特算法得出 此时会将路由汇总 称为域间汇总是重点 另一种汇总时域外 汇总
b 基于域间汇总 多条连续路由汇总成一条汇总路由 当其中一条路由变化时(除非所有这些路由都变 化 才将汇总路由删除)不影响汇总路由条目 也就是不会影响其他区域 拓扑变更 带来的影响 限 制在区域内 不向整网扩散
c 某些特定的LSA 只能在一个区域内进行泛洪 但是由于LSA包含的内容不一定都是一个类型的 所 以 LSA可以分为在区域内传 也可以在区域间传递 还可以在所有ospf域内传递
d 需求 部署ospf时 必须要基于层次化 划分
划分区域能够实现: a 减少路由条目数量 ---优化
b 限制拓扑变更传递的范围 ---优化
c 减少其他区域LSDB中LSA数量 ---优化
层次化的设计就是优化 所以ospf能够适应大的网络 但是单区域的ospf支持的网络范围毕eigrp小 但是分区域后就不同了
五 AREA TERMINOLOGY
名词: backbone 骨干路由器
ABR area border router 区域边界路由器 一个接口属于area0 另一个接口属于area1
六 forming ospf adjacencies
邻接关系的分类
1两台路由器 只要三层直连 就是邻居 即hello能发过来
2完全建立7级ospf邻接关系 才叫 邻接 最后一级邻接关系叫做full级
邻接关系建立 用hello报文 组播 地址为224.0.0.5 常用 但是224.0.0.6为dr和bdr用的 不常用 当交换机收到hello的组播报文时 泛洪 给连接的所有路由器 耗费路由器的cpu资源
3一个MA网段 越庞大 邻接关系越多 资源消耗过大 影响性能 所以出现DR 和BDR
DR designated router 指定路由器
BDR bak designated router 备份指定路由器
邻接关系建立顺序
a DR和BDR建立邻接关系
b DR和其他DROTHERS路由器建立邻接关系
b DR和其他DROTHERS路由器建立邻接关系
c BDR和其他DROTHERS路由器建立邻接关系
d DROTHERS之间只能够达到two-way的邻接关系 不能够达到full的完全邻接关系
4 路由器之间交互更新报文 只有当建立完全的邻接关系的时候
5 一旦邻接关系建立 两台路由器LSDB会包含相同的LSA的信息 即LSDB 相同
6 lsa在区域内泛洪
七 OSPF Calculation
ospf 算法
1.同一个区域内每个路由器有相同的LSDB
2.同一个区域内 收敛之后 每个路由器将自己作为树根
3.最低开销 cost 一条路径的总带宽 是最好的路径
4.将最优的路由条目放到路由表中
八 Link-State data structures:LSA Operation
LSU ----update
LSDB中不存在相同的lsa信息 对于多个相同的lsa信息 接收序列号码较大的lsa信息 sequence number 类似于 VTP里的配置修订号 越大越新 描述新旧程度
发送LSU 既支持周期性发送 30分钟一次 lsa老化时间为60分钟 --aging-time
也支持触发发送
a version v2应用于ipv4
序列号 四个字节 取值范围从0到4亿 (2的32次方-1)
最小的序列号位0x80000001 最大的序列号为0x7fffffff
线性的数字序列 当一台路由器收到最大序列号的lsa后 源路由器向目的路由器再次发送的lsa的序列 号又回到了最小值 如果此时再发送 则目的路由器已有的lsa序列号为最大值 收到最小序列号的lsa 无法更新 此为线性序列号
新方法为环形加线性 (具体看相关资料)
九 OSPF PACKE TYPES
ospf 报文分类
a hello
b database description dbd
c link-state request 请求报文 lsr
d link-state update lsu
e link-state acknowledgment lsack 确认报文
详解
a hello发送周期分为10s和30s两种
hello hold的时间为发送时间*4即40s或120s
b dbd数据库描述报文 包含lsa的报头 即告诉邻居路由器 本地的lsdb中包含哪些lsa信息
同步lsdb过程中如果没有此描述可能会发送重复的lsa 造成资源的浪费导致低效
lsa中除了拓扑或路由信息的载荷外还有lsa的报头也叫lsa的摘要 报头中包含此lsa的标识 从而 避免 发送重复的lsa信息
c 路由器请求邻居有但是本地没有的lsa 以保证lsdb一致 根据交互的dbd 将没有的lsa的报头放在lsr中 表明需要的lsa
d 根据上面的一条 将邻居请求的lsa信息 放在lsu中由本地路由器发送给邻居
lsu包含完整的lsa信息
e lsack为确认机制 由ospf定义的确认机制
ospf定义了两类的确认 一种为显式的确认 另一类为隐式的确认(基于序列号的确认机制)
前者收到一个报文 针对此报文 生成一个单独的确认报文
(只有ospf支持隐士确认)后者收到一个报文 使用相同的报文再发送回来 序列号设置为一致 既传输了信息 又做了确认
1.hello报文 不需要确认
2.dbd报文 需要lsack确认 使用隐式确认 r1---》r2 然后r2用收到的dbd报文和相同的序列号发 给r1
3.lsr报文 显式确认 r1---》r2 然后r2用lsu做确认返回给r1
4.lsu报文 用lsack确认 注意lsu包含多条lsa 而lsack是针对lsa的 所以有多少lsa 就会有多少lsack报 文
5.lsack报文 不需要确认
简述就是5确认4 4确认3 3确认2 2确认2本身 1不需要确认
十 ospf packet header format
v3 可同时用于ipv4和ipv6
b 对应ospf报文的五种类型 从1到5
c 报文长度包括ospf报头在内的长度
d router id 路由器id 1. 手工配置 建议
2.自动配置为 所有up up 的环回扣中选举最大的ip地址
3.物理接口最大的ip地址 状态为up up
e area id 区域id 用于层次化的部署 4字节 可以用阿拉伯数字 也可用点分十进制 必须包含此字段
f check-sum 校验和
g authentication type 认证类型 明文或者密文 分三级 0级不认证 1级为明文认证 2为密文认证
h authentication 秘钥 如果上一个字段是0 即不认证 则此字段无值为空
i data 报文内容 根据五种类型不同 内容也不同
十一 hello报文 重点
其中的*号代表两台路由器 此字段需要设置为一致 才能建立邻接关系
eigrp hello发送周期取决与带宽 >1.54m 为5s/次 <1.54m 为60s/次 ospf hello发送周期取决于 网络类型 而不是带宽 分为10s 和30s
neighbors 字段存储邻居的router id
area id 区域id
router priority MA网段有此概念 点到点网络没有此概念
DR ip address 描述此MA网段 哪个是DR
BDR IP address 描述此MA网段 哪个是BDR
authentication password 认证秘钥
stub area flag 末节区域标记 ospf的非骨干区域里包括多种区域类型
分 为:常规区域 末节区域 完全末节区域 次末节区域 完全次末节区域
十二 邻接关系建立过程
1.down 初始状态 接口被宣告进ospf 没有发送任何报文
2.init 通过接口发送一份hello
3.two-way 通过接口收到一份neighbor字段包含自身rid的hello
4.exstart 交互3个不带lsa报头的dbd 选择MASTER/SLAVE
5.exchange 由master发起的带有lsa报头的dbd信息交互
6.loading 交互lsr lsu 以及lsack实现lsdb的同步
7.full 一旦同步 邻接关系到达full 邻接关系建立完成
(1) init------->two-way
A发送hello报文 neighbor字段为空 链路状态到达init
B收到后发送hello报文 neighbor字段包含A的id
A收到B发过来的hello报文 链路到达two-way状态
对于MA网段 进入到two-way阶段 就开始进行DR和BDR的选举
(2) exstart -------》exchange
b DBD采用隐式确认 主从关系选择根据路由器的router id 决定 谁高谁就是主 因此需要交互三个dbd才 能确定主从关系
在dbd报头中有flag字段 包括三个bit: I M M/S 分别代表init more master/slave
router A发送的第一个DBD:I=1 M=1 M/S=1 即0x7 假设sequence=100 被发送给Router B
router B收到后比较router id 发现自己更大是主 所以发送DBD:I=1 M=1 M/S=1 假设 sequence=200 被发送给router A
router A收到后 发现B是主 自己是从 同时需要给sequence=200的DBD报文做确认
所以DBD:I=0 M=1 M/S=0 =自己是从 即0x2 sequence=200 发送给router B
接下来就由router B带起 DBD的交互 此时DBD会包含lsa的报头
在DBD中存在一个MTU的字段 不影响主从结果 但是会干扰主从关系的过程 如果MTU不一致 可能会 一致卡在exstart state状态 所以MTU尽量一致 如果不一致需要用高级特性调整 以使邻接关系尽快 建立
c 下一个exchange state 就是由主路由器发起的带有lsa报头信息的DBD报文的交互过程 用来彼此告诉对方 本地所拥有的lsa信息 一直到协商完毕
(3)loading state------》full state
a. 在第2步中 的exchange state状态可能出现的情况 路由器A和B之中的LSDB中的lsa数目可能不相同 由 此导致的互相传输的dbd数量不同 举例导致A传输4个dbd 确认的dbd报文可能只有4个 B传输10个dbd 此 时剩余的6个dbd报文需要用lsack来确认 才会出现loading state之前的lsack的交互 即无法隐式确认时只能显式 确认 dbd同步完毕
b. 在loading过程中交互lsr和lsu 一直到lsdb同步
c. 最后到达full的状态
实验:
同一区域内 r1和r2两个路由器ospf通信 路由器进程号可以不同
即 A router ospf 11
B router ospf 22
两个名称不同的进程
a 有用的show命令
show ip ospf interface
show IP int brief
show ip ospf neighbor 其中串口的点到点网段 没有优先级 所以priority=0
show ip protocols
b 模拟优先宣告状况 查看邻接关系建立过程
先关闭serial接口
再开启debug 命令
debug ip ospf packet
debug ip ospf adj 邻接关系状态
c 修改MTU 查看邻接关系状态
r1#interface serial 1/1
ip mtu 1492 1492为改后的值 默认为1500
但是r2的mtu仍然是1500 两端不一致
然后清理ospf进程
clear ip ospf process
通过show ip ospf neightbor命令查看
state 字段的值为exstart 卡在了exstart
可以通过命令无视mtu的设置
ip ospf mtu-ignore 在一端或者两端敲此命令 均能实现
d 修改hello时间和dead时间
hold时间随hello的时间的改变而改变 -----ospf可以 但是eigrp不会改变
在ospf中
IP ospf hello-interval 12 12为hello的时间
show ip ospf interface serial1/1 显示 dead时间变为48
如果时间不一致 则show IP ospf neighbor邻居显示为空 但是状态会停留在init状态 如果只修改dead时间 只能影响wait时间 与dead时间一致不会影响hello时间 原因是可能除4会出小数
e 路由
ospf不自动汇总
r1#show IP route ospf查看路由条目
在上图中 r1中的路由表中应该包含r2的环回口路由 r2-r3网段的路由 和r3的环回口路由
但是在显示结果中 换回口的路由会表现为3.3.3.0/32 掩码为32位 原因是osp会自动将环回口的路由 改变为32位 精确路由条目 而eigrp中不会改变 即为原来设置的3.3.3.3/24 这样针对eigrp可能会 出现路由黑洞 而ospf不会出现
1.ospf中命令
show ip ospf interface loopback0
显示的环回口的描述显示 as a stub host 当做一个末节主机来处理
如果想在ospf中变为原来设置的一样 则需要把网络类型修改为点到点类型
实验验证DR和BDR的选举
#interface loopback 0
#ip ospf network point-to-point
此时不会被当做末节主机处理
f 在MA网段建立OSPF邻接关系时DR和BDR的选举原则
先看1.参与该MA网段的路由器接口的OSPF优先级 越高越好 范围0-255,缺省值为1
再看2.该MA网段所连接的路由器的router id,越高越好
拥有最好属性的DR 拥有次好属性的是BDR 所有其他的是DROTHERS 选举过程持续时间为40s 取决于wait时间 当邻接关系到达two-way状态时 注意从第一到达two-way状态的路由器宣布 开始DR 和BDR的选举 即从此时开始倒计时 40s或者120s 选出后结果不会改变
AAAA 即DR和BDR无法被抢占
所以在不选DR和BDR的网段 效率更高
r1 环回口 1.1.1.1 物理口 100.1.1.1 router -id 1.1.1.1
r2 环回口 2.2.2.2 物理口 100.1.1.2 router -id 2.2.2.2
配置 环回口 3.3.3.3 物理口 100.1.1.3 将接口优先级改为255
以上全部宣告进ospf的进程
查看命令 show ip ospf neighbor
状态在2way状态 等待40s DR和BDR才能选出来 再到达exstart状态
在此例中 r1和r2的接口优先级均为1 所以比较router-id 所以r2的大 所以它是DR r1为BDR
测试改变接口的优先级 DR能否被抢占
命令如下
int fa0/1
ip ospf priority 10 将路由器接口的优先级改为10
查看 show ip ospf neighbor
显示 r2 仍然是DR 所以证明DR选出之后不能改变 BDR无法抢占DR的身份
测试BDR能否被抢占
再添加一台路由器 R3
show ip ospf neighbor 查看结果没变化 r1是BDR r2是DR
r3是DRTOHER
如果此时r2down掉 则r1变为DR 不会因为r3的优先级高而变为DR r3只能是BDR
BBBB 得出结论:DR down掉 原来的BDR会立即变为新的DR 而新的BDR由剩下的所 有DROTHERS之间重新选举出来 这叫做二次选举 不需要等待40s的时间
CCCC DR和BDR属于接口级别的概念 每个MA网段都需要属于自己的DR 和BDR 通过相 同的机制单独选举出来
重要的特性: ospf ma网段接口的ospf优先级如果值为0 代表的不是优先级的最小值 而是该接 口没有资格在这个网段参选DR和BDR 只能成为DROTHER
实验测试 将r1和r2的接口优先级设置为0 看一下只有DR MA网段是否能够正常的运作
r1#IP ospf priority 0 首先进入接口再打此命令
r2#IP ospf priority 0
在r3上 show ip ospf neighbor会显示r1和r2都变为DROTHER
然后show IP route 查看路由是否有变化 发现一切正常
证明 一个MA网段中可以只有DR 而没有BDR
尤其在帧中继中特别有用 ---轴辅型拓扑 hub and spoke 中心节点为DR 不要B DR DR是hub节点 作用收集所有邻居信息再传送到其他邻居 需要连接到所有节点 在 帧中继中只有hub节点连接到所有邻居 spoke节点只能连接到hub 所以只有DR 没有B DR
DDDD 在ethernet环境中建议拥有DR和BDR实现备份 而在FR frame repeater 帧中继环 境中 只能是hub节点称为DR 任何spoke节点都不能称为DR或BDR
EEEE 在MA网段中 如果 DR 和BDR都没有 用实验检测就是所有的路由器接口优先级都设置为0( 基于DDDD条目) 网段内不会有任何的lsa交互 邻接状态只能到达two-way这一级 也就是没有任何ospf路由 存在。
FFFF 一台路由器 运行ospf 只要在一个接口开启了ospf进程,则该接口会立即监听发往224.0.0. 5的组播组流量,而仅当一个节点成为DR或者BDR时,该接口才会同时监听发往224.0.0.5和224.0.0.6的组播组 流量 在一个MA网段内,所有路由器发送给DR和BDR的报文的目的地址都是.6 而DR将LSA整合之后就以. .5的组播地址发送给网段内所有其他的路由器。 在点到点网段没有.6的存在 因为没有DR和BDR
问题 为什么会有.6的组播地址
答案:试想如果没有.6的组播地址 只有.5的地址 在一个域内 所有的路由器都监听.5的组播地址 那么每台路由器发送的lsa信息会被其他所有的路由器所接收 加大占用带宽 浪费cpu资源 也就失去了DR和 BDR存在的意义 而如果有.6的存在 所有的DROTHER路由器将LSA信息发网.6的组播地址 只有DR和BDR
能够收到此LSA信息 减少资源开销 等DR中的LSDB建立完成之后 DR再将所有lsa信息以.5的组播地址发送 出去 DROTHER路由器监听的.5地址会收到此LSA信息 达到同一区域内LSDB同步的目的