OSPF路由原理——邻居建立过程抓包演示

**OSPF路由原理——邻居建立过程抓包演示 **

一,知识预备

1.OSPF通告网络时通配符掩码如何写?

在通告网络时用命令network [network-address] [wildcard-mask] area [area-id]
这个 [wildcard-mask] 就是通配符掩码
直接举例
例1:network 4.4.4.4 0.0.0.255 area 0
将ip和通配符掩码单独拿出来再转换到二进制

00000100 00000100 00000100 00000100 (ip)
00000000 00000000 00000000 11111111 (通配符掩码)

通配符为0的为固定位,为1的为可变位,IP的后8位可变,前24位固定不变
即IP为 00000100 00000100 00000100 XXXXXXXX 的都在通告范围内
该路由器IP为“4.4.4.1~254“的接口都被配置进该区域(4.4.4.0和4.4.4.255排除)

例2:network 10.1.1.0 0.0.0.15 area 0
转换到二进制

00001010 00000001 00000001 00000000 (ip)
00000000 00000000 00000000 00001111(通配符掩码)

通告范围为 00001010 00000001 00000001 0000XXXX(10.1.1.1~15)

2.网络类型

OSPF网络类型

网络类型选举DRHello间隔Dead间隔
广播多路访问(broadcase)10秒40秒
非广播多路访问(non-broadcase NBMA)30秒120秒
点到多点(point-to-multipoint)30秒120秒
点到点 (point-to-point)10秒40秒

查看接口网络类型

在这里插入图片描述
内容分析

  show ip ospf interface s1/1 //命令
  Serial1/1 is up, line protocol is down    
//接口up                     链路down
  Internet Address 1.1.1.1/8, Area 0 
//           接口ip     掩码长度 所在区域
  Process ID 1, Router ID 1.1.1.1, Network Type POINT_TO_POINT, Cost: 64
//      进程id         路由器id                网络类型          度量值
  Transmit Delay is 1 sec, State DOWN

  Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
//                        Hello间隔    dead间隔
  oob-resync timeout 40

3.DR/DBR选举

时间:邻居关系在two-way之后
选举规则(大的优先)

  1. 接口优先级(默认为1 )
  2. Router-id
  3. 路由器loopback的IP
  4. 物理接口IP

修改接口优先级(接口模式下)

R1(config-if)#ip ospf priority 222  //将接口优先级修改为222     

思科特有:当优先级为0时不参加DR/BDR的选举。

OSPF区域类型

  • 主干区域(骨干区域)连接各个区域的中心,就是area 0

  • 标准区域 就很普通

  • 末节区域(stub area)不接受外部自治系统的路由信息

  • 次末节区域 (not-to-stubby nnsa)接收7类LSA,ABR负责把7类LSA转换成5类LSA。

  • 完全末节区域 (totally stubby area)cisco特有:不接受外部自治系统路由,自治系统内其他区域路由的汇总。

OSPF LSA类型(常用的有6种)

类型名称路由代码产生者描述
1Router LSAO所有路由器描述路由器上连接到某一个区域的链路或者某一个接口的状态信息。只在区域内扩散。链路状态ID为本路由器ID
2Network LSAODR描述一个多路访问网络和与之相连的所有网络,区域内扩散,链路状态ID为DR接口IP
3Network summary LSAO IAABR将区域内的网络通告给OSPF自治系统中的其他区域,链路状态ID为目标网络的地址
4ASBR summary LSAO IAABR描述ABSR的可达性,链路状态ID为ABSR路由器的ID
5Autonomous system external LSAO E1 或 O E2ABSR含有自治系统外的路由信息,链路状态为外部网络的地址
7NSSA External LSAO N1 或 O N2ABSRABSR产生的关于NSSA的信息,区域扩散,ABR可以将7类LSA转换为5类LSA,链路状态为外部网络的地址

5类LSA有E1,E2俩类型,E2类型在OSPF区域内传播不修改度量(Cost)值,E1会计算后添加度量值,默认是E2.
路由器写表时优先写类型为 O 的路由,尽管类型为 O IA 的路由度量值第也优先写O类的路由

简单了解OSPF数据包类型

前提知识:

  • LSDB 描述路由器的路由表数据库
  • LAS 描述单条路由表
  1. Hello包
    建立和维护OSPF关系。

  2. DBD数据包(DataBase Description)
    包含发送路由器的链路状态数据库的简略列表
    (DBD包有3个字节用来选举主从路由器 ——flag字段:由3个bit构成“I,M,MS”
    I:初始位,第一个DBD包表示为1,后续为0。
    M:后继位,最后一个DBD包为0,其余为1。
    MS:主从位,1表示为主路由器,0表示为从路由器)

  3. LSR数据包(Link-State Request)
    向其他路由器请求对方有,自己没有的LSA。

  4. LSU(Link-State Update)
    回复LSR,包含一个或多个LSA。

  5. LSAck(Link-State Acknowledgement)
    包含自己LSDB的简略信息,发送给其他路由器对比是否相同。

OSPF邻居到邻接

1. Down(接口关闭状态)
此阶段与邻居没有交流
2. Init
收到对方的Hello包,但是邻居列表中没有自己路由器ID。(当路由器收到Hello包后将对方ID写进自己邻居表内)
3. Two-way
对方经过Hello包交互后成为邻居(邻居表都有对方)
此阶段进行DR/BDR选举(若不需要选举,直接进入下一状态)
4. Exstatr
发送DBD包,确定DBD序列号,确定主从关系(路由器ID高的为主)
(思科特有:两端接口MTU要相同)
5. Exchange
发送DBD(只带有LSA的报头)告诉对方自己的拥有的路由
6. Loading
确认缺少的LSA后,发送LSR请求自己需要的LSA,并根据对方的LSR发送对方请求的LSA,即发送LSU。
接收LSU后将LSA写表。
最后再发送一个LSAck,LSAck包含自己的LSDB信息,并且比对对方的LSAck,当LSDB同步后进入下一状态。
7. Full
进入Full状态后如果没有状态变化,默认30分钟自动更新一次状态

二,实验环节,感受OSPF建立邻居过程

实验平台在Win10下进行。使用GNS3,路由器使用3725,抓包工具为Wireshark。

搭建两台路由器使用接口f0/0连接(f0/0默认是广播多路,方便演示DR选举)

在这里插入图片描述
配置如下

R1
R1#configure terminal 
R1(config)#interface loopback 0
R1(config-if)#ip address 1.1.1.1 255.255.255.0
R1(config-if)#exit
R1(config)#int f0/0
R1(config-if)#ip address 12.1.1.1 255.255.255.0
R1(config-if)#no shutdown 
R1(config-if)#exit 
R1(config)#router ospf 1
R1(config-router)#network 1.1.1.1 0.0.0.0 area  0
R1(config-router)#network 12.1.1.1 0.0.0.0 area  0

R2
R2#configure terminal 
R2(config)#interface loopback0
R2(config-if)#ip address 2.2.2.2 255.255.255.0
R2(config-if)#exit 
R2(config)#interface f0/0
R2(config-if)#ip address 12.1.1.2 255.255.255.0
R2(config-if)#exit 
R2(config)#router ospf 1
R2(config-router)#network 2.2.2.2 0.0.0.0 a 0
R2(config-router)#network 12.1.1.2 0.0.0.0 a 0

两端路由已配置完毕(R2的接口还没开启)。
开启对线路的抓包

在这里插入图片描述

可以看到每隔10秒就有一个源ip为12.1.1.1(R1)的路由在发送目的IP为224.0.0.5的OSPF Hello包,长度为90字节。
此时R1为InitR2为Down

开启R2的端口
页面会反馈信息:
*Mar 1 00:04:58.107: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.1 on FastEthernet0/0 from LOADING to FULL, Loading Done
(表示与F0/0接口关系到Full)

看下抓包:对OSPF进行筛选,观察过程
在这里插入图片描述

观察分组号16的Hello包,邻居表中有对方ID
在这里插入图片描述

R2收到后写表,邻居表都有对方,状态到Two-way
第一个DBD包分组17(I,M,MS都为1)还没选出主从默认MS位为1
在这里插入图片描述
经过俩都收到对方DBD后,DR就能确定了,R2发了一个Hello包(分组19)
在这里插入图片描述
翻车,DR是R1。路由器没配优先级默认是1,router-id也没配,环回接口R2(2.2.2.2)大于R1(1.1.1.1),所以理应R2为DR,留个眼

进入Exstart状态
R1,R2各发两个DBD(20-23)

在这里插入图片描述
前两个更正了I位和MS位并且带有LSA的头部(如分组20)
在这里插入图片描述
后两个将M位置0(最后一个DBD)
在这里插入图片描述
进入Loading状态:
发送LSR请求(分组24,25)
在这里插入图片描述
发送LSU(LSU才发送完整的LSA)
在这里插入图片描述
加表后发送LSAck (分组号34,35)
R2广播的LSAck中有产生一条2类LSA(2类LSA由DR产生,组播给域内其他路由器)
在这里插入图片描述
LSAck对比无误后进入Full状态。实验完毕。
补充:前面DR选举给了R1原因不明,把线路断了等邻居表超时(40秒)挂掉再连接上就好了

总结:本文主要讲的内容有通配符,DR选举,网络类型,区域类型,LSA类型,OSPF数据包类型,邻居建立过程。

文章为本人学习笔记及经验,如有表达不恰或者错误请谅解。欢迎各位路人甲反馈。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值