CCNA-第八篇-OSPF
OSPF,最常用的路由协议,他来了他来了
OSPF呢怎么说呢
是一个比较重要而且比较基础的点,出到去外面要是说不会OSPF,那还算啥网络工程师
但是呢,他也不是那么的完全重要.因为很多小地方压根就用不到.但是列你不能不会呀
到了OSPF呢,配置就会逐渐的多那么一点点,就那么一点点,比如啥区域啊,MD5密码
不扯皮了,开干
OSPF
Open shortest path first 开放式最短路径优先协议
ospf呢是公有化协议,不像eigrp是思科私有化的,在任何设备上都可以使用,只要他支持
首先说说更新机制这个问题
EIGRP:触发更新,只有当路由表变动的时候才会触发弥漫更新(DUAL)
OSPF;周期更新+触发更新 周期更新是每30分钟一次
所以OSPF比EIGRP慢,但是这并不代表OSPF就不比EIGRP好,
当然路由协议没有好坏之分,只有不同的网络环境.
但是启动EIGRP的条件很苛刻,只有全思科的网络环境下才可以.
这个条件在大中国,CHINA,比较难,除非是外企.
但是OSPF是公有化的,任何设备只要支持都可以使用
链路状态会对以下信息进行跟踪
1.邻居信息
2.本区域里的所有路由器
3.到达目标网络的的最佳路径(发送给路由表)
Area(区域)
OSPF中对比EIGRP
多了一个区域(Area)
当一个大型网络中,有些地方是不需要接收到全网路由的
比如说,我出口没必要拿到核心的全部路由表吧
所以就有区域的概念,区域是用来划分地方的
比如这个区域干嘛的,那个区域干嘛的.
作用是减少路由表的大小.
但是有一个要求,两条线之间的左右必须处于同一个区域
OSPF中有两种区域
一个呢叫骨干区域
一个呢叫常规区域
但是骨干区域只有一个
但是这个是一个大类
所有的骨干区域成为Area0
例子如下
说白了就是核心区域使用区域0
OSPF一样也是三张表
路由表,拓扑表,邻居表
在OSPF中的拓扑表也叫链路状态数据库(LSDB)
上操作
网络环境如图,从左到右为R1-R4
启动OSPF的几个元素
1,AS启动,启动一个OSPF的进程,编号有效是1-65535,这个没有要求,互联设备之间的进程编号是允许不一样的
2.宣告网段+掩码+区域 //由于这里是初级,所以这一阶段只会讲Area0区域
宣告有两个作用
一,建立邻居关系(宣告直连网段)
二,宣告网段并且发送对方路由表
先来个方便的省事的
这两条命令的作用是一模一样的
只不过,一个是在接口下直接宣告,很方便,而且不容易出错,因为IP和接口已经固定好了
一个是在进程里面宣告网段.同样的宣告,但是要打的东西多一点点.
上面的命令代表着,每个互联的接口同时宣告本接口地址进入OSPF的进程,并且位于区域0(核心区域,同时也叫骨干区域)
不过呢,输入的命令不同,show-run输出的东西也不同
在R1的路由表上已经可以看到已经收到了来自OSPF的其他路由条目.
Router-id
这是个啥呢,这是一个进程标识符
手动加上去的.
如果没有手动加的话
有两个选择条件
一,如果有环回口,则选择最大的环回口
二,如果没有环回口,选择最小的物理口
这个大小指的是什么呢,IP地址,比如最小的就是1.1.1.1
但是,有一点.这个Router-id,可以是不存在的地址
因为他只是一个标识符
但是呢有一个点,在本地网络中凡有启动OSPF的,Router-id不能重复
邻居关系
OSPF也是有hello包滴
每10秒发送一次,40秒得不到回复不会再发
EIGRP呢是5/15,就这里上面OSPF已经比EIGRP慢了一大截
hello包里面包含什么呢?
1.RID
2.hello包
3邻居信息
4.区域
5.拓扑表
6.DR
7.BDR
8.认证密码
9.stub区域
邻居建立的条件有几个呢?
思科官网PPT是有12点,但是我个人感觉挺多废话。
所以总结了以下几点,
1·Route-ID不相同 //自治系统唯一标识符
2.同一个网段也就是基本互通
3.同样的area(区域)
4.同样的发送Hello包/死亡时间,默认值:10/40(S)
5同样的MTU(最大传输单元)
6.同样的认证类型与密码(比如无认证,明文认证,密文认证,邻居需要都一样才可以建立邻居关系)
7.网络类型要一致
8.版本一致,OSPF中有V1.V2.V3。
其中V1是实验室版本,并没有公之于世。V2是IPv4版本,V3是IPv6版本。不可以让V6和V4互通建立邻居,但是V2和V3版本可以同时存在一个路由器/交换机/FW上。
Seceond:OSPF协议号=89,注:端口号与协议号不一样。
自治系统进程编号(AS)号范围:1-65535
在OSPF中,不同的进程号影响不大,但是在EIGRP中和BGP中却影响很大,不同EIGRP进程号无法建立邻居,同样的进程号的BGP为IBGP,不同的进程号的BGP邻居为EBGP。
然后上面的暂时放一放,来讲一个东东,他叫DR/BDR
OSPF中的结构
1.广播结构
2.点对点(P2P)增快速度
路由协议呢,他是一个共享的,比如A-B-C-D是一个环形结构,那就是广播结构
假如1宣告了一个路由条目
那么2收到了,他会发给3,4
3收到了,他会发给2,4
4收到了,他会发给3,4
所以这样就会浪费带宽,这个时候再来个加密解密,就会非常浪费带宽.
这个时候就有了DR/BDR
DR/BDR
DR:指派路由器-皇上
BDR:备份指派路由器-太子
Dhothers-群众
为什么会有太子呢,总有不在的时候吧,万一DR挂了呢?
在这个环境下,其设备收到路由条目,更新只会发给DR和BDR
然后又DR下发给全部设备.这样就只需要一次更新
这个过程叫作组播
组播的地址
224.0.0.5-通用地址,全部人都会监听
224.0.0.6–DR/BDR,只有这两个设备会去监听这个地址
然后drothers的更新的LSA只会发到去224.0.0.6
问题来了,这个DR,BDR怎么来的呢?
选举呗
选举的条件是什么呢?
一.接口的OSPF的优先级
这个优先级,越大越好.可以手动修改, 默认值为1
但是在默认情况下,他们都是1,在没修改的情况下,都是1,那就选不出来DR了.
所以到下一步,对比Router-id,也跟优先级一样,越大越好(所以为什么不能一样)
但是上面的都是理论哈!!!
实际上的顺序是
1.比较优先级
2.谁先启动谁就是DR
3.就没有3了,上面都是扯皮的
如果这个时候新接入一个设备,他的优先级比DR大,也没用.不会改变DR
如果DR挂了,那么BDR就会成为DR.
问题来了,这个BDR怎么来的呢?
BDR
其实很假单滴
在选举DR的时候,次优的就是BDR,由第一就有第二,身下的就都是Dhothers
分清楚DR/BRD是怎么来的了
然后回到那个浪费带宽的问题
他是这样的
当非DR/BDR设备收到路由更新後,它会通过组播发送给DR/BDR.然后再有DR统一下发给OSPF内的所有设备.
Link state Database-链路状态数据库
简称LSDB,他就是OSPF中的拓扑表
先来看个顺序
1.Hello
2.DBD
3.LSR
4.LSU
5.LSACK
过程示意图
1.Hello包,这个不用解释,这是用来建立邻居和维持邻居关系使用的
2.DBD,这个是啥呢,发送镜像的
为啥要发送镜像呢?
举个例子
A-B 都是路由器
假如A有10w条路由,B有9W条路由,其中8W条重复的
总不能更新的时候全部发过去吧,多浪费呀.
所以这个时候A会发送一个镜像.过程称之为DBD
3.LSR,这个呢就是B的选择过程,并且单独发送请求本机没有的,有的就丢弃了.(R其实就是Reqly的意思,请求的意思)
4.LSU.然后这个就是A的回复,他就是实实在在的LSA的更新信息,它的全称是链路状态更新.但是他为什么叫LSU呢,别问,问就是翻译的问题.动词名词,
5.LSACK,B确定收到了,给A一个回复
但是如果这个时候没收到LSACK,那么就会进行重传.会有一个RTO计时器.
所以如此看来,最重要的是4-LSU