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
 
拓扑展示
OSPF 提升 一 ----基础-LMLPHP
有利点: 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建立邻接关系
bDR和其他DROTHERS路由器建立邻接关系
cBDR和其他DROTHERS路由器建立邻接关系
dDROTHERS之间只能够达到two-way的邻接关系    不能够达到full的完全邻接关系
4路由器之间交互更新报文     只有当建立完全的邻接关系的时候
5一旦邻接关系建立       两台路由器LSDB会包含相同的LSA的信息   即LSDB  相同
6lsa在区域内泛洪
 
七OSPF Calculation
ospf 算法
1.同一个区域内每个路由器有相同的LSDB
2.同一个区域内   收敛之后     每个路由器将自己作为树根
3.最低开销  cost    一条路径的总带宽    是最好的路径
4.将最优的路由条目放到路由表中
八Link-State data structures:LSA Operation   
LSU   ----update
LSDB中不存在相同的lsa信息    对于多个相同的lsa信息    接收序列号码较大的lsa信息    sequence number   类似于VTP里的配置修订号     越大越新    描述新旧程度
OSPF 提升 一 ----基础-LMLPHP

发送LSU   既支持周期性发送   30分钟一次          lsa老化时间为60分钟    --aging-time

也支持触发发送

序列号四个字节    取值范围从0到4亿     (2的32次方-1)
最小的序列号位0x80000001        最大的序列号为0x7fffffff
线性的数字序列    当一台路由器收到最大序列号的lsa后    源路由器向目的路由器再次发送的lsa的序列号又回到了最小值    如果此时再发送   则目的路由器已有的lsa序列号为最大值   收到最小序列号的lsa无法更新    此为线性序列号
 
新方法为环形加线性    (具体看相关资料)
 
九OSPF PACKE TYPES
ospf 报文分类
a hello
bdatabase descriptiondbd
clink-state request请求报文   lsr
dlink-state updatelsu
elink-state acknowledgment             lsack   确认报文
 
详解
a hello发送周期分为10s和30s两种
hello hold的时间为发送时间*4即40s或120s
bdbd数据库描述报文 包含lsa的报头  即告诉邻居路由器  本地的lsdb中包含哪些lsa信息  
同步lsdb过程中如果没有此描述可能会发送重复的lsa   造成资源的浪费导致低效
lsa中除了拓扑或路由信息的载荷外还有lsa的报头也叫lsa的摘要    报头中包含此lsa的标识   从而 避免发送重复的lsa信息
c路由器请求邻居有但是本地没有的lsa   以保证lsdb一致   根据交互的dbd    将没有的lsa的报头放在lsr中表明需要的lsa  
d根据上面的一条 将邻居请求的lsa信息 放在lsu中由本地路由器发送给邻居
lsu包含完整的lsa信息
elsack为确认机制由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确认33确认2  2确认2本身1不需要确认
十ospf packet header format
OSPF 提升 一 ----基础-LMLPHP

aversion     v2应用于ipv4

v3  可同时用于ipv4和ipv6
b对应ospf报文的五种类型  从1到5
c报文长度包括ospf报头在内的长度
drouter id 路由器id   1.  手工配置      建议
2.自动配置为 所有up up 的环回扣中选举最大的ip地址
3.物理接口最大的ip地址    状态为up  up
 
earea id 区域id   用于层次化的部署   4字节    可以用阿拉伯数字    也可用点分十进制    必须包含此字段
fcheck-sum   校验和
gauthentication type   认证类型   明文或者密文   分三级    0级不认证    1级为明文认证      2为密文认证
hauthentication      秘钥   如果上一个字段是0   即不认证   则此字段无值为空
idata报文内容  根据五种类型不同  内容也不同
 
十一hello报文   重点
OSPF 提升 一 ----基础-LMLPHP
其中的*号代表两台路由器  此字段需要设置为一致   才能建立邻接关系

eigrp   hello发送周期取决与带宽    >1.54m    为5s/次        <1.54m   为60s/次

ospf hello发送周期取决于 网络类型   而不是带宽   分为10s      和30s
neighbors字段存储邻居的router id
area id区域id
router priorityMA网段有此概念      点到点网络没有此概念
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
 
OSPF 提升 一 ----基础-LMLPHP
A发送hello报文   neighbor字段为空        链路状态到达init
        B收到后发送hello报文  neighbor字段包含A的id       
A收到B发过来的hello报文 链路到达two-way状态   
 
对于MA网段     进入到two-way阶段   就开始进行DR和BDR的选举
 
(2)exstart -------》exchange 
OSPF 提升 一 ----基础-LMLPHP

a开始发送DBD报文       此为建立邻居开始第一个DBD     称为first  dbd     不包含任何的lsa报头路由器之间会双向交互两个到三个DBD  目的是选举一个关系  --------主从关系----- master/slave      用来发起接下来的DBD的交互

bDBD采用隐式确认        主从关系选择根据路由器的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
OSPF 提升 一 ----基础-LMLPHP

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的状态

实验:
 
OSPF 提升 一 ----基础-LMLPHP
 
 同一区域内   r1和r2两个路由器ospf通信    路由器进程号可以不同
即   A    router ospf 11     
Brouter 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 serial1/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中变为原来设置的一样   则需要把网络类型修改为点到点类型

#interfaceloopback 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的网段 效率更高
OSPF 提升 一 ----基础-LMLPHP

实验验证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

以上全部宣告进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
OSPF 提升 一 ----基础-LMLPHP

配置    环回口 3.3.3.3     物理口   100.1.1.3        将接口优先级改为255

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 不要BDRDR是hub节点 作用收集所有邻居信息再传送到其他邻居 需要连接到所有节点 在帧中继中只有hub节点连接到所有邻居 spoke节点只能连接到hub 所以只有DR 没有BDR
 
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同步的目的
05-21 03:07