目录
所经过的链路出接口cost+目的网络的出接口cost=所有设备出接口cost
DR 和 BDR只在广播型链路中存在,避免LSA过分泛滥。
1.跨设备建立邻居,无关进程号,一样能建立;就如:AR2 G0/0/0(OSPF 2) 和 AR1 G0/0/0(OSPF 1),可以建邻居交换LSA。
一、OSPF技术背景
前几章配置静态路由的时候,我们不难发现,静态路由配置需要考虑下一跳、出接口,以及网络往返来回的配置,配置工作量大。最重要的是,静态路由不能根据拓扑图的变化而做出相应调整。在小型的网络中我们用静态可以解决,但是在一些大企业的网络静态就无法满足我们的需求了。
所以动态路由就能很好的解决这些问题。
1.动态路由协议的分类
按照工作区域分类:IGP(内部网关协议)、EGP(外部网关协议)
按照工作机制和算法分类:距离矢量路由协议、链路状态路由协议
1)距离矢量路由协议
最常见的距离矢量路由协议就是RIP,但是现在已经淘汰了。
缺点:
1)周期性泛洪路由表,占带宽,处理数据时,增加CPU负担。
2)当路由表数据成千上万时,泛洪给其他路由器设备,而且设备资源负载严重
3)因为是周期性,所以在这个周期里,有的设备收到了数据,有的还没来得及收
2)链路状态路由协议
(1)LSA泛洪
与距离矢量路由协议不同的是,链路状态路由协议泛洪的是链路状态(LSA),而不是整张路由表。
链路状态信息:直连链路的状态信息
(2)LSDB组建
LSDB(链路状态数据库):存放LSA信息
LSA信息
(3)SPF计算(最短路径优先)
LSDB同步以后,每台路由器都能感知到整个网络的拓扑,自动断开次优路径,在环形网络中会出现环路,但是SPF计算可以解决这一问题。
以自己为根的、无环的、拥有最短路径的“树”。
(4) 路由表生成
SPF选出最优路径后,加载进自己的路由表中
(并不是有路由就加进去,而是加入最优的路由,先比较协议优先级,相同协议再比较开销)
(5)链路状态路由协议总结
1.建立邻居关系
2.双方交互LSA
3.同步lsdb链路状态数据库
4.计算(整张网络的拓扑、计算无环的路、计算最优的路)
5.最终生成路由表项
二、OSPF (开放式最短路径优先)
1.ospf简介
目前网络中最常见的链路状态路由协议:OSPF、ISIS
2.Area区域
area 0为骨干区域,核心区域
3.Router-ID
在该网络的整个ospf域中,唯一标识一台路由设备。(相当于是这台ospf设备的名字)
Router-ID:全局Router-ID、OSPF的Router-ID
1)全局Router-ID:出厂设备上Router-ID为0.0.0.0。在配置上第一个IP地址后,该Router-ID会自动变成该IP地址。(所以全局Router-ID不会重复,也不可能重复)
2)OSPF Router-ID:如果没有手动配置,则默认使用全局Router-ID;否则,优先使用手动配置的ospf Router-ID。
1-若路由器配了IP地址,则router-id默认为第一个配置的接口ip地址
此时重启ospf进程之后,router-id并没有发生变化。
2-再次修改配置的第一个接口的ip地址,重启ospf进程
那么第一个配置的IP地址,则被刷新,成为最新的ip地址;(不是第一个配置的ip地址了)
而配置的第二个ip地址则成为第一个配置的ip地址
重启ospf进程后,第二个配置的ip地址成为router-id
如果ospf Router-ID配置时,忘记配或者配错了,不要去改。(因为配错了,就只能重启了,而重启就意味着网络会瘫痪一段时间)
*小tips:实际网络中,不要随便关机、重启,正在运行的设备和各种协议进程,因为有的设备重启,关机之后就再也起不来了,就算起来了,在重启过程的时间也就是网络瘫痪的时间,会很长。很有可能进局子。。
4.lookback接口 - 代替PC去测试网络连通性
有些设备不能插网线(也有的设备接口很少),测试网络连通性时,就无法接入PC去ping。就算连接上PC去ping,还需要给PC配置IP地址,给设备配置网关,极为麻烦。
所以lookback接口就可以代替PC去测试网络连通性。
5.度量值cost
1)cost值=参考带宽/实际带宽
=100M/s:1000M/s=0.1 => cost=1
参照带宽默认为100M/s,可以修改,改的是整台设备的参考带宽。当默认带宽改为1500时,1500M/s:1000M/s=1.5 => cost=1
cost只有整数所以会将小数化整。cost<1时,取值为1;cost>1时,取整数部分。所以开销值cost最小为1
可以通过修改整台设备的参考影响ospf的cost;也可以直接修改ospf的cost;
2)OSPF网络的开销值计算方式=
所经过的链路出接口cost+目的网络的出接口cost=所有设备出接口cost(包括自己)
例如
AR4到PC1的开销:走上路cost=5+5+5=15
走下路cost=10+10+5=25
通过SPF算法,算出开销值后,选择最小开销的路径走,也就是说 AR4到PC1会走上路
PC1 回到AR4的开销:走上路cost=10+10=20
走下路cost=5+5=10
通过SPF算法,算出开销值后,选择最小开销的路径走,也就是说 PC1 回到AR4会走下路
*这导致来回路径不一致,在现阶段,可以使用改开销实现都走上面或者下面,在后面的学习,我们可以用各种策略,来实现。
6. ospf协议报文类型
例子:(去餐厅吃饭)
1.hello报文,就是走进餐厅(建立邻居关系)
2.DD报文,就是服务员给了一个菜单(链路状态数据库LSDB摘要信息)
3.LSR报文,就是我点我需要的菜【麻辣香锅】【鱼香肉丝】(请求所缺少的LSA信息)
4.LSU报文,就是服务员向我送来【麻辣香锅】【鱼香肉丝】我的点那些菜(向请求方【我】发送所需要的LSA)
5.LSA报文,我吃完饭付钱结账(对收到的LSA进行确认)
7.ospf三大表项
1)邻居表
display ospf peer(brief)
2)LSDB表
display ospf lsdb
type(LSA的类型)、Linkstate ID(LSA的名字)、AdvRouter (产生该路由的设备名称),仅靠这三个就能确定一条唯一的LSA
3)ospf路由表
专门由ospf计算得出的路由
display ospf routing
8. 邻居关系和邻接关系
邻居关系建立全过程
1)two-way状态
通过hello报文,找邻居,建立邻居关系
AR1发送组播,说“hello,有人嘛?我是1.1.1.1”,AR2收到之后,知道了1.1.1.1的存在,此时是init(单项发现)
AR2回复,说“hello,邻居1.1.1.1你好啊,我是2.2.2.2”,于是AR1通过报文发现,2.2.2.2知道自己了。
于是AR1,又说“你好呀,邻居2.2.2.2,我是1.1.1.1”,于是AR2通过报文发现,1.1.1.1知道自己了,此时为two-way(双向发现)
2)主从选举master/slave ---exstart状态
单纯的选举主(AR2)从(AR1),没有任何LSA的交互
双方通过router-id比较,数值大的为主,小的为从。报文里还带上了自己的随机序列号(AR1带的x,AR2带的y)
3)exchange状态
此时,从先向主发送lsa摘要信息,并且带上主的序列号y;主收到后会回复,序列号y+1;
直到LSA概况信息发完时,LSA变成null,告诉主,发完了;主看到之后,也会回复null,确认LSA收发结束;
4)loading状态
开始请求完整的LSA
双方通过对比对方的LSA摘要信息,请求自己缺少的LSA,发送LSR报文,LSU 报文以及LS ACK报文。
5)FULL 邻接关系
此时双方的LSDB链路状态数据库完全相同。
9.ospf网络类型简介
ospf是基于接口划分的 ,接口决定了ospf的网络类型。
1)broadcast广播型
2)nbma非广播多路访问
3)p2mp点到多点
4)p2p点到点
P2P点到点,就是串口连接的两台设备,链路两端各自只有一台设备,链路中间没有其他设备了。
BMA广播型链路,就是以太网接口将设备相连接,在一个广播域内。
NBMA非广播多路访问,有一个映射表(记录出入接口、和初入接口的ip地址) ,现已淘汰。
P2MP点到多点,就是一根网线,分成两节,接在终端上。(虽然听着很离谱,但真的就这么离谱。。。)
10.DR与BDR
DR 和 BDR只在广播型链路中存在,避免LSA过分泛滥。
因为在广播型链路中,LSA会在广播域内过分泛滥,导致路由器重复收发LSA。
1)DR、BDR、DRother的作用
DR:指定路由器
BDR:备用指定路由器
DRother:除了DR/BDR的路由器;只和DR、BDR建立邻接关系,DRother之间是邻居关系。
DR、BDR要监听两个地址:224.0.0.5(收)、224.0.0.6(发);并且都不具备抢占性;
DRother通过0.6发送新学到的LSA,通过0.5接受来自DR的LSA
2)DR运作过程
为了避免单点故障,DR失效时,默认选举BDR顶替DR;若BDR也失效,则在DRother中继续选举出BDR;
若DR又恢复,DR不会抢占,恢复后就只是个普通的路人甲了
3)DR的选举
1.DR接口的优先级,优先级范围0-255,值越大越优先成为DR
2.优先级相同,则比较router-id ,id值越大越优先
4)优先级最高、routerid最大的不一定是DR!!
因为,管理员手工配置需要时间,可能在配置前两个ospf时,DR和BDR就已经选举完成了。
11.ospf基本配置
ospf是基于接口划分的,欲想建立邻居,就需要将自己接口所处的直连网段宣告出去
[AR3-ospf-1]di th # ospf 1 area 0.0.0.0 network 23.1.1.0 0.0.0.255 宣告AR3的g0/0/1接口的直连网段 network 34.1.1.0 0.0.0.255 宣告AR3的g0/0/0接口的直连网段 #
network 接口所处的直连网段 反掩码
0.0.0.255是反掩码
ospf进程号
ospf进程号隔离不同的ospf进程网络,也就是说ospf1进程的网络与ospf2里的网络是隔离的。
但是ospf进程号不同也可以建邻居
例如:
1)
我将AR2的g0/0/0接口化为ospf 2与 AR1的g0/0/0为ospf 1的建立邻居(state为full),也就说明此时AR1可以和AR2交换LSA,但是交换的是ospf 1网络内的LSA,而AR1 G0/0/0和 G0/0/1之间是不会交换LSA的,因为ospf基于接口划分,ospf 1的LSA不会和ospf 2的LSA产生联系
2)但是,此时如果我们把AR1的G0/0/0接口加入进ospf 2,那么AR1和AR2建立邻居可以交互LSA,也就是说ospf 2里的内容,AR2也将知晓
3)
总结:
1.跨设备建立邻居,无关进程号,一样能建立;就如:AR2 G0/0/0(OSPF 2) 和 AR1 G0/0/0(OSPF 1),可以建邻居交换LSA。
2.本设备,进程号(仅对本地隔离)区分两个不同的ospf网络;就如:AR1 G0/0/0(OSPF 1) 和AR1 G0/0/1(OSPF 2) ,无法建邻居,无法交换LSA,ospf 1永远无法和ospf 2 有任何交互。
思考题
1.BD
DRother之间稳定在two-way;
其他稳定在full;
2.BD