数据包格式单田芳书场
ospf 学习笔记
作者:⼩宝
e-mail:gyong_1223@www.doczj/doc/46a28d2ab4daa58da0114a82.html
qq:1520619 ospf协议号是89,也就是说在ip包的protocol中是89,⽤ip包来传送
数据包格式:
在OSPF路由协议的数据包中,其数据包头长为24个字节,包含如下8个字段:
* V ersion number-定义所采⽤的OSPF路由协议的版本。
* Type-定义OSPF数据包类型。OSPF数据包共有五种:
* Hello-⽤于建⽴和维护相邻的两个OSPF路由器的关系,该数据包是周期性地发送的。
* Database Description-⽤于描述整个数据库,该数据包仅在OSPF初始化时发送。
* Link state request-⽤于向相邻的OSPF路由器请求部分或全部的数据,这种数据包是在当路由器发现其数据已经过期时才发送的。
* Link state update-这是对link state请求数据包的响应,即通常所说的LSA数据包。
* Link state acknowledgment-是对LSA数据包的响应。
* Packet length-定义整个数据包的长度。
* Router ID-⽤于描述数据包的源地址,以IP地址来表⽰,32bit
* Area ID-⽤于区分OSPF数据包属于的区域号,所有的OSPF数据包都属于⼀个特定的
OSPF区域。
* Checksum-校验位,⽤于标记数据包在传递时有⽆误码。
* Authentication type-定义OSPF验证类型。
* Authentication-包含OSPF验证信息,长为8个字节。
FDDI或快速以太⽹的Cost为1,2M串⾏链路的Cost为48,10M以太⽹的Cost为10等。
所有路由器会通过⼀种被称为刷新(Flooding)的⽅法来交换链路状态数据。Flooding是指路由器将其LSA数据包传送给所有与其相邻的OSPF路由器,相邻路由器根据其接收到的链路状态信息更新⾃⼰的数据库,并将该链路状态信息转送给与其相邻的路由器,直⾄稳定的⼀个过程。
当路由器有了⼀个完整的链路状态数据库时,它就准备好要创建它的路由表以便能够
转发数据流。CISCO路由器上缺省的开销度量是基于⽹络介质的带宽。要计算到达⽬的地的最低开销,链路状态型路由选择协议(⽐如OSPF)采⽤Dijkstra算法,OSPF路由表中最多保存6条等开销路由条⽬以进⾏负载均衡,可以通过"maximum-paths"进⾏配置。
如果链路上出现fapping翻转,就会使路由器不停的计算⼀个新的路由表,就可能导致路由器不能收敛。路由器要重新计算客观存它的路由表之前先等⼀段落时间,缺省值为 5 秒。在CISCO配置命令中"timers spf spf-delay spy-holdtime"可以对两次连续SPF计算之间的最短时间(缺省值10秒)进配置。
路由器初始化时Hello包是⽤224.0.0.5⼴播给域内所有ospf路由器,选出dr后在⽤224.0.0.6和dr,bdr建⽴邻接。
dr⽤224.0.0.5⼴播给drother lsa
闰年有多少天
bdr也是
drother⽤224.0.0.6⼴播lsa给dr和bdr
dr是在⼀个以太⽹段内选举出来的,如果⼀个路由器有多个以太⽹段那么将会有多个dr选举;DR的选择是通过OSPF的Hello
数据包来完成的,在OSPF路由协议初始化的过程中,会通过Hello数据包在⼀个⼴播性⽹段上选出⼀个ID 最⼤的路由器作为指定路由器DR(如果设置优先级的话那么⾸先看优先级,优先级为0不参加选举)并且选出ID次⼤的路由器作为备份指定路由器BDR,BDR 在DR发⽣故障后能⾃动替代DR的所有⼯作然后重新选择BDR。当⼀个⽹段上的DR和BDR选择产⽣后,该⽹段上的其余所有路由器都只与DR及BDR建⽴
相邻关系。见下图
DR的选举过程:这⾥可以以选举村长为例
选举的时候⽤hello包中的dr字节来标识,开始的时候都是标识的⾃⼰,⼀旦选举出⼀个dr来那么即使后来再有优先级更⾼的进来也不重新选举(因为⼀旦重新选举那么所有的邻接关系都要重新建⽴)
ospf启动的过程:
down
init发送hello(224.0.0.5)dr字段为全零(因为还没有选出DR),单通状态,我能收到对端的hello报⽂,但对⽅没有收到我的报
⽂,怎么知道对端有没有收到我的报⽂呢,通过Neighbors Seen
看
2way2个ospf路由器从hello中发现互相的router id(本地路由器最⼤ip,⼀般是loopback)建⽴邻接
在这个阶段已经知道谁是dr了
exstart预启动状态,ospf路由器建⽴主从关系(看谁的routerid⼤)然后协商⼀个序列号(因为ip是不可靠的传输采⽤确认+超时重传
就可以)准备传送,头两个dd报⽂为空,不包含lsa的数据
Router 1:
DD seq=x,I=1,M=1,MS=1
I是第⼀个报⽂
M是more表⽰还有后续报⽂
幼儿园安全工作计划MS是表⽰Router 1是Master
Router 2:
DD seq=y,I=1,M=1,MS=1
I是第⼀个报⽂
M是more表⽰还有后续报⽂
MS是表⽰Router 2 是Master
究竟谁是master呢,就会选⼀个router id⼤的作为master
谁当了master序列号就⽤谁⽣成的那个数,在这⾥应该是Router 2的y
exchange和dr开始交换数据,master先发送lsdb报⽂,此报⽂只是⼀个index(如同⼀本书的⽬录)不包含实际的路由数据,slave也发
送报⽂,看谁的序列号⾼,序列⾼的数据新,相邻路由器可以根
据数据库描述数据包的序列号与⾃⾝数据库的数据作⽐较,若发
现接收到的数据⽐数据库内的数据序列号⼤,则相邻路由器会针
对序列号较⼤的数据发出请求,并⽤请求得到的数据来更新其链
路状态数据库。
Router 1先发送dd报⽂序列号⽤master的并且MS字段为0
Router2回应报⽂把序列号加1表⽰已经收到了刚才的dd报⽂并
且也包含⾃⼰的dd报⽂,下⼀个Router 1的dd报⽂还⽤y+1
来表⽰因为slave⽆权把序列号加1。如果dd报⽂中的M=0
那么表⽰dd报⽂发送结束
loading装⼊状态,如果新加⼊的路由器的从dd报⽂中看出那个是⾃⼰需要的路由数据,则发送lsr报⽂,请求发送数据,对端发送lsu
报⽂,此报⽂包含所需的全部数据。
full 收到lsu报⽂后发送确认,完成充满状态。
hello包ttl值是1,在以太⽹中每10秒发送⼀次,⽽且不穿过路由器,通常ospf 协议报⽂的ttl都是1(虚连接除外)
link status包flood整个area(麦⼦说flood是由区域内所有路由器接⼒完成)⼀个dd报⽂可以含有很多个lsa的头部信息
从init――――loading是路由器第⼀次交换信息的时候才出现,到了full以后如果在有路由变化那么就只发送lsu
好句大全邻居状态机(灰⾊为可以长期存在的状态,⽩颜⾊为短暂状态)
化妆品品牌排行榜2-way为2个drother之间可以有这种状态
OSPF五种协议报⽂:
混动车lsa 类型
type 1⼜被称为路由器链路信息数据包(Router Link),所有的OSPF路由器都会产⽣这种数据包,
⽤于描述路由器上联接到某⼀个区域的链路或是某⼀端⼝的状态信息。路由器链路信息数据包只会在某⼀个特定的区域内⼴播,⽽不会⼴播⾄其它的区域。
在类型1的链路数据包中,OSPF路由器通过对数据包中某些特定数据位的设定,告诉其余的路由器⾃⾝是⼀个区域边界路由器或是⼀个AS边界路由器。并且,类型1的链路状态数据包在描述其所联接的链路时,会根据各链路所联接的⽹络类型对各链路打上链路标识,Link ID。表⼀列出了常见的链路类型及链路标识。
具体描述链路标识链路
类型
1 ⽤于描述点对点的⽹络相邻路由器的路由器标
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论