用于内网!不能宣告连接ISP的网段
一. 概念
使用范围:IGP
协议算法特点: 链路状态型路由协议,SPF算法
协议是否传递网络掩码:传递网络掩码
协议封装:基于IP协议封装,协议号为 8
OSPF 特点
OSPF传递路由信息,也传输拓扑信息,即LSA
1.OSPF 是一种典型的链路状态型路由协议
2.传递信息称作LSA,LSA 链路状态通告,包含路由信息和拓扑信 息。
路由LSA:描述本路由器上接口的路由信息
拓扑LSA:描述路由器之间的连接状态
常见LSA有6种
路由信息:有掩码
拓扑信息:无掩码,是否传拓扑,看他是点对点还是MA
距离矢量型路由协议:发一次信息,更新一次路由表
链路状态型路由协议:把所有信息收集到一起再计算出所有的最优路径
3.更新方式: 触发更新+30分钟的链路状态刷新
触发更新—网络结构稳定的时候不发数据,网络结构产生变化(网段数量或信息变化,接口状态变化等)时发数据
4.更新地址: 组播和单播更新,(不支持广播肯定也不支持组播)
组播地址: 224.0.0.5(ALL SPF router)
224.0.0.6 (ALL DR router)
224.0.0.x:本地链路组播,给各种协议使用的,TTL都=1(即只在两个直连的路由)但是rip 224.0.0.9,思科中TTL=2,
成为DR后,才会接受目标224.0.0.6的LSA信息
目标为224.0.0.5 的LSA信息是发给所有启动ospf协议的路由器
DR,BDR:是一个接口!
5.支持路由认证
6.支持手工汇总
拓扑信息不能汇总,内部的LSA包括路由信息及拓扑信息,所以不能进行汇总
7.支持区域划分
8.OSPF 比较消耗设备资源
eigrp:距离矢量,500路由器以下这个好
ospf:500以上路由器好
ospf较于RIP优势及 RIPV2与OSPFV2异同
数据量:单个:RIP少;整体:OSPF少,因为rip每三十秒会再次共享路由表,很占用资源
OSPF没有v1
V2的相同点:
基于拓扑是为了防环
拓扑更新量太大所以区域划分,即:同一个区域内使用OSPF协议,
两个区域连接的那个路由器使用RIP协议(dv的协议),区域之间用RIP(dv的协议)共享路由表
ABR:同时处理两个区域
区域划分
区域划分的意义: 信息量很大,1.减少LSA的数量 2.减少LSA的传播范围
因为ospf是LS,所以不管距离多远,这两个路由器要互相知道对方的存在,有些距离太远了,所以采用了区域划分
rip这种DV,是路由器之间互相传递路由表,所以没必要知道有那么远的路由存在
两个区域连接的那个路由器使用RIP协议的方式:共享路由表(dv的协议),区域之间用RIP(dv的协议)共享路由表
区域的划分是基于接口的(链路的)(接口得在同一区域)
区域的标记:使用了32个二进制 1.十进制 2.类似于IP地址 A.B.C.D
区域的分类:
骨干区域: 区域标记为0或0.0.0.0
非骨干区域:区域标记不等于0或0.0.0.0
区域设计原则: 向日葵型网络结构
1.OSPF网络中必须存在并唯一的骨干区域(单区域除外)
2.若存在非骨干区域,非骨干区域必须与骨干区域直接相连
OSPF中路由器的角色:
骨干路由器:
非骨干路由器:
ABR:区域边界路由器,能够产生3类LSA的路由器
ASBR:自治系统边界路由器(能把非ospf的路由引入到ospf中),能够产生5类或7类LSA的路由器
数据包
OSPF 消息数据包
Hello DBD LSR LSU LSACK
除了hello包都有确认重传机制(hello包是周期发送的)
hello: 周期性发送,周期时间10s或30s(根据不同的网络类型默认 10s或30s)
目的:建立并维持OSPF 邻居关系(邻居关系建立之后充当 保活包功能)
DBD:数据库描述数据包;
1.主从选举DBD: 比较双方的router-id ,router-id大的一方为主 (master ),小的一方为从 (slave);主用于控制LSA的交互
通过序列号隐式确认
2.携带LSA头部信息的DBD
LSR: 链路状态请求,按照DBD中报文的未知LSA头部进行请求。通过LSU确认
LSU:链路状态更新,携带LSA信息。通过LSACK确认
LSACK:链路状态确认,隐式确认
全网唯一:这个OSPF区域内的ID不重复,不同区域之间可以重复(不同区域之间用dv的协议)
RID自动生成:选择环回地址(没有环回就用接口的)中数值最大的;也可以手工配置
二. OSPF的状态机
类似于TCP的三次握手,第二个包完后,A变为Two-Way状态,B还是init状态,
第三个包(A给B的包),B变为Two-Way状态
Two-Way:双向通讯
条件匹配:DR,BDR选举
条件匹配成功后进入Exstart状态
主从关系:根据DBD包选举(exstart的DBD包没有摘要信息,只进行选举)
根据routeID的大小决定(主从关系),谁先进入下一个状态(Exchange State),
发送摘要信息(目录)
选举主从完后进入Exchange State状态
Exchange State状态发的是摘要信息(目录)
邻居:只有hello包,邻接:除了hello包还有数据库目录的同步
OSPF 邻居状态机制
Down、 init 、 attempt(尝试 过渡) 、 two-way 、 exstart 、 exchange 、loading 、full
停留在 two-way:没选举出DR
exstart:MTU协商失败
Loading:同步不了LSA
Init ---初始化状态,一旦开始发送hello报文,进入初始化状态。
Two-way---双向通信状态(邻居状态),接收到包含自己router-id 的对方hello报文。
邻居关系建立条件:
1.router-id 必须不同
2.area ID 相同
3.认证: 认证类型 (不认证=0 明文认证=1 MD5=2) 认证数据
4.hello时间,dead时间必须一致
5.特殊区域标识一致(E(外部路由位)=1 ; N(NSSA外部路由 位)=0 P=0)
6.MA网络中,网络掩码必须一致
7.必须同时使用单播或组播更新(单播和组播只能用一种)
8.更新源检测(双方的IP地址必须在同一网段)
成为DR后,才会接受目标224.0.0.6的LSA信息
目标为224.0.0.5 的LSA信息是发给所有启动ospf协议的路由器
DR,BDR:是一个接口!
邻居状态下(two-way): MA的网络中会选举DR(指定路由器) BDR(备份指定路由器),选完之后等40秒,看还有没有要参选的
DR选举: 1.比较优先级 (范围:0-255,默认优先级为1 ,越大越 优)
2.比较各自的router-id,越大越优
注意:1.DR抢占是关闭的 2.DR是一个接口概念 3.优先级范围 0-255,数字为0代表不参与选举 4.先选举BDR ,再升级为DR
谁先设置优先级谁就是DR(此时没有更高的优先级)后面加了个更高的优先级的路由,那么他会成为BDR,不是DR,因为此时主从关系已经完成选举,又不能抢占,所以先设置优先级就是DR,设备重启后就会重新选举
非抢占:最大选举时间40s,后面再加路由器,如果他的RID大(或优先级大)也不会成为DR,成为小弟
实际上没有DR的选举,只选BDR,BDR选出来后,他发现没有DR,那么他就会成为DR,之后发现没有BDR,进行BDR选举,发现有了DR,就老实的当BDR
主从选举:发生在exstart状态, 通过双方的router-id进行比较, router-id大的一方为主。 发送的主从选举DBD,
DBD中包含了MTU值(默认思科直接启用,华为中默认不包含MTU,可以使用命令 激活传递MTU值的功能,若双方的MTU值不值则卡在exstart 状 态)。
Exstart---预启动状态,一旦开始发送主从DBD,则进入预启动状 态。
Exchange ---预交换,主从选举完成,则发送携带LSA头部信息的 DBD,进入预交换状态,会发送LSR数据包。(但是没有LSU)
LSA头部信息:即路由表信息摘要(目录)(用于去掉双方重复的路由信息后去学习路由)
Loading ---加载状态,一旦发送LSU数据包,进入了加载状态,进行 大量LSA的学习。
Full ---邻接状态。双方LSA同步(双方LSA全部学习)
三. OSPF的工作过程
邻居表->数据库表->路由表
四. 配置
ospf开销值的运算
参考带宽/真实带宽 : 小于1取1,大于1 的小数去掉小数部分
参考带宽默认为100
华为:环回开销值默认为0
RID
启用OSPF 并指定router-id
Router-id : 路由器标识符,用于标识本路由器在OSPF网络中的唯一 性
OSPF router-id 选举规则:1.手工指定最优先 2.选举所有逻辑中IP地 址最大的 3.选举所有物理接口IP地址最大的
华为中: 若以上三点都不满足,则可以创建router-id 为0.0.0.0 ;在 使用逻辑或物理接口IP地址时,接口可以是关闭状态;若一台路由器启用了多个 OSPF进程,不同进程可以使用相同的router-id(不推荐);
思科中:若以上三点都不满足,则无法启用OSPF;在使用逻辑或物 理接口时,接口必须双 up ,该接口可以不通告进入OSPF中;同一路由器上多个 OSPF进程必须router-id必须不同;
五. 扩展配置
条件匹配
MA:虽然只有两个路由,但是他中间还能再加路由,交换机,这也是MA
串线:点到点
大优:数值越大,优先级越高
DR/BDR选举规则
进入接口修改优先级
非抢占:最大选举时间40s,后面再加路由器,如果他的RID大也不会成为DR,成为小弟
区域认证:
手工汇总
路由表汇总:汇总只能在ABR上汇总,命令:把某个区域的网段汇总为一条,写掩码,即:ABR路由器去某个区域只有一条路由
区域内(不是ABR)的路由器,是不能汇总的,即不能把两个环回汇总为一个网段,区域内的路由表很详细,有1.0/25和2.0/25,到ABR就可以汇总为1.0/24
因为区域之间用路由表共享,当某个环回失效后,别的区域不知道(因为用的汇总网段),还会继续发,造成资源浪费,如果把区域汇总了,我不知道他在不在,但是ABR知道(写的具体IP)
沉默接口,加快收敛
缺省路由
只用在边界路由上设置,然后根据动态路由给所有的路由器
加always:自身没有缺省,强制下发
不加always:自身有,然后去下发给所有路由
下发缺省完后,ABR自身是没有缺省的,所以要自己写一条静态,指向ISP
六. ospf各个包和字段分析
hello包:
version:版本
Message Type:包的类型
Packet Length:包的大小
Source ospf Router:自己的RID
Area ID:自己所属的区域
Packet Checksum:校验和
Auth Type:认证类型,null代表 0(二进制)没有认证,数字1 代表 明文,数字2 代表 md5认证
Auth Data:认证数据,type为1 写的是明文密码,type为2 他就是密码的md5 值
options:
NP:N代表是否支持七类LSA,P代表是否支持七转五LSA
E:代表是否支持五类LSA
如果两个路由器要建立ospf邻居关系, N位与E位必须保持一致
5.特殊区域标识一致(E(外部路由位)=1 ; N(NSSA外部路由 位)=0 P=0)
Hello Interval :hello间隔时间 图中是10秒
Router Priority :优先级
Router Dead Interval:死亡时间 默认40秒
DR:选出的DR是谁(RID)
BDR:选出的BDR是谁(RID)
Active Neighbor:对方的RID(和谁进行邻居关系匹配),也可能有多个RID(收到其他的hello包)
这有值代表这个包已经是第二个hello包了
开始的时候这个字段的值为0
当我收到对方发的包里的Active Neighbor是我自己的RID,这时我就知道可以匹配,就进入to-way状态
DBD包:
MTU:为0,华为默认不携带MTU值,设置改为携带,默认为1500字节
双方进行MTU协商。MTU必须保持一致,不一致会卡在exstart状态
I:初始化位,如果时第一个包,置为1,是第二个或更多的包,置为0
M:为1 代表还有更多的DBD包
MS:主从位,为1 代表我是主,为 0 代表我是从,没选DR之前都认为自己是主
DD Sequence:序列号,如果你是主,那么我会把从的(我的)序列号变为主的序列号(代表我认可你是主了)这是隐式确认(序列号一样就代表书收到了),主的序列号自动增长(+1)
DBD包中出现 LSA Header(目录)代表进入exchange状态
LSR: 链路状态请求,按照DBD中报文的未知LSA头部进行请求。
Link State Request:根据之前的路由摘要信息,请求一些我没有的路由信息
LSU:链路状态更新,携带LSA信息。
意思就是,你之前请求的LSA我给你发(加载阶段,之前是请求,exchange状态)
LSACK:链路状态确认,把之前的头部再发一遍
通过DBD包双方都获取了路由目录,2给1发路由信息,根据重传列表,发送一条LSU,1收到了,在请求列表中删除这一条,同时发送LSACK表示收到了,2收到LSACK就会从重传列表中删除这一条
这个过程相互的
当自己的请求列表和重传列表都空了之后就进入full状态
OSPF三张表:
1.OSPF 邻居表
查看OSPF邻居表
括号里的接口是自身的接口
mode:谁是主,Nbr is Master 邻居是主
Retrans timer interval:重传计时器
Neighbor … :邻居关系建立时间
Authentication … :是否做了认证 0 没有做,1 做了
2.LSDB表(链路状态数据库)存放LSA
查看LSBD的摘要信息:
这个看到的是目录
Router代表一类,Network代表二类,sum-net代表三类
LinkState ID:链路状态标识符
Advroute:该LSA是由谁产生的
Age:LSA的老化时间(LSA存活时间,一般不超过1800秒),3600秒彻底删除
Sequence:序列号
这个就能看到所有的一类
这是所有的二类
3.OSPF 路由表:
ospf能够识别路由的环回与物理接口 ,一旦识别为环回接口,他就认为你这个路由底下就一个用户,所以在路由表中直接写32位掩码,把地址写死了
改接口(华为),这样就不会是32位掩码了