一、了解OSPF基础
OSPF协议基础
大型网络的变化:
RIP缺陷:
路由协议原理上分类:
工作范围上分类:
AS自治系统:
二、了解OSPF邻居建立过程
OSPF三部曲:
一、邻居建立过程(阶段一)
项目建议:
Hello报文:
Hello发送规则:
Hello包:
hello包中影响邻居关系的因素:(任何情况下)
OSPF邻居建立包文交互过程
OSPF可靠性机制:
链路状态数据库同步(Hello建立邻居到2-way,阶段二)
OSPF的LSDB同步:
ExStart预启动状态:
Exstart(OSPF七级邻居关系4):
Exchange(OSPF七级邻居关系5):
Loding状态(OSPF七级邻居关系6):
Full(OSPF七级邻居关系7):
为什么要同步?
三、OSPF报文类型
OSPF报文类型:
摘要信息:
设计好处:
OSPF工作在哪一层?
OSPF报文功能需求:
四、OSPF-LSA和链路类型
LSA的头部:
OSPF邻居状态机:
OSPF的度量值:
OSPF-LSA:
1、Router LSA(1类LSA):
四种链路类型:
(1)、stubnet:
(2)、transnet:
(3)、P2P:
(4)、vlink:
链路的网络类型(四种):
MA网络中的问题:
为了解决MA网络问题:
OSPF邻居表:
五、OSPF多区域
单区域OSPF配置:
单区域问题(划分区域的原因):
区域划分:
ABR区域边界路由器:
区域间的路由如何计算?
区域间路由计算方法:
避免区域间路由环路:
2、3类LSA传递规则:
六、Vlink虚链路
Vlink虚链路:
虚链路实验:
七、OSPF外部路由
OSPF外部路由:
五类LSA:
八、OSPF特殊区域
OSPF特殊区域及其他特性:
OSPF的LSA问题:
解决LSA问题的方法:
OSPF特殊区域
特殊区域不足:
Stub区域(末节区域):
Totally Stub区域(完全末节区域):
NSSA区域:
Totally NSSA区域:
LSA总结:
九、OSPF区域间汇总和外部路由汇总
特殊区域的局限性在哪里?
特殊区域不使用,减少LSA还有没有其他方法?
区域间路由汇总和外部路由汇总:
1、区域间路由汇总:
2、外部路由汇总
十、OSPF更新机制和协议认证
OSPF更新机制
1、周期性更新(反应网络的实时状态):
2、触发更新:
OSPF协议认证
什么是数据安全?
OSPF认证方式:
1、区域认证:
2、接口认证:
认证模式:
1、不认证:默认情况下。
2、明文认证:
3、MD5认证:
学习目标:
1、了解OSPF基础
2、了解OSPF邻居建立过程
3、OSPF报文类型
4、OSPF-LSA和链路类型
5、OSPF多区域
6、Vlink虚链路
7、OSPF外部路由
8、OSPF特殊区域
9、OSPF区域间汇总和外部路由汇总
10、OSPF更新机制和协议认证
由于RIP是基于矢量算法的路由,在大型网络中存在收敛慢、度量值不科学、可扩展性差等问题被淘汰了。
IETF提出了SPF算法(数学算法,最短路由优先算法),OSPF基于SPF算法开发而来的一种链路状态协议,多厂家都能支持OSPF协议,部署在大型网络中,弥补了RIP的不足。
‘路由中OSPFv2、BGP、MPLS三大基石。
OSPFv3、ISIS、EVPN、SR、TE。
1、网络规模大
2、网络可靠性提高(收敛需要毫秒级)
3、网络异构化趋势加剧
1、逐跳收敛很慢,故障恢复时间长
2、传闻路由,缺少对全局网络的了解,去往目的地都是听其他路由器"来说",基于传闻的协议。
3、跳数作为度量值,有效15跳(受限当时网络技术影响,基本都2M网络,现在带宽很大,不同链路区别很大)。
4、最大开销15跳(经过15台路由)
1、距离矢量协议:收到路由信息自己计算完结果,再发别人。
RIPv1、RIPv2、IGRP(cisco私有)
2、链路状态协议:把路由信息传递,收到路由信息再自己进行计算。
OSPFv2、OSPFv3、ISIS
3、路径矢量路由协议:BGP
4、混合型路由协议(高级距离矢量):EIGRP
技术上定义:运行相同的IGP协议的设备所组成的网络。
1、内部网关路由协议:实现AS内部互联互通的路由协议(RIPv1、RIPv2、IGRP、OSPFv2、OSPFv3、ISIS、EIGRP)。
2、外部网络路由协议:实现AS之间互联互通的路由协议(BGP)。
OSPF链路状态协议(属于传输层协议)
1、路由信息的传递与路由计算分离
2、基于SPF算法
3、以“累积链路开销”作为选路参考值
阶段一:建立邻居关系(一切的开始)
阶段二:进行链路状态数据库的同步(LSDB一致)
阶段三:运行SPF算法,计算路由
Router ID:自治系统中唯一标识一台运行OSPF的路由器(Router ID跟IP地址没有任何关系,只是结构相同·)。
默认OSPF的Router ID如何确定?
1、默认使用路由器全局的Router ID作为协议的Router ID。
2、默认情况下,设备配置的第一个IP地址就是全局的Router ID。
3、允许管理员手动全局配置Router ID(修改全局Router ID后,协议的Router ID需要重置协议才会改变)。
4、允许管理员单独手动配置/修改协议的Router ID,优先级最高(修改协议Router ID后,协议的Router ID需要重置协议才会改变)。
1、一般项目上通常使用loopback接口地址作为全局或协议的Router ID,方便网络管理。
2、协议Router ID的变更,生效需要重启进程,会导致邻居关系中断,网络产生振荡,一般网络不会频繁变更Router ID。
思科设备运行OSPF是手动配置优先级最高,没手动选择loopback口的IP做为Router ID,如果loopback没配置IP就选择物理口最大的IP地址作为Router ID。
OSPF报文
1、邻居发现:自动发现邻居路由器。
2、邻居建立:完成Hello报文中参数协商,建立邻居关系。
3、邻居保持:通过keepalive机制,检测邻居运行装置。
1、凡是加入到OSPF协议的接口都会主动发送Hello报文(环回口/隧道口除外)
2、Hello接口源地址为接口IP地址,目的地址为组播224.0.0.5
@在点到点、广播型链路每隔10秒周期性发送,邻居失效时间默认为Hello间隔的4倍(4倍Hello时间收不到邻居Hello断掉邻居关系,并重新计算路由)
@在NBMA、点到多点链路每隔30秒发送
OSPF封装在IPv4包头中,协议号为89
1、版本号:OSPF的版本
2、报文类型:1是hello包、2的DD报文、3是LSU、4是LSR、5是LSACK
3、报文长度
4、Router ID:路由的OSPF的Router ID
5、区域ID:描述发送hello报文接口所属区域
6、认证类型和认证数据:
Auth Type:0代表空认证(不认证)、1代表明文认证、2代表MD5认证
Auth Data:明文密码、密文MD5值
7、network mask:发送hello的接口子网掩码
8、hello时间:hello发送周期
9、Opthin中N和E位:
10、router priorit路由器优先级:默认是1,用于选举DR/BDR
11、dead interval:邻居失效时间
12、DR:链路上DR路由器的接口IP地址
13、BDR:链路上BDR接口路由器的IP地址
如果是P2P、P2MP,DR/BDR值为0,不选举DR/BDR。
1、Router-ID不能冲突
(1)、Router ID冲突会导致ExStart状态中第一次交互DD报文主从选举没法进行(主从选举比Router ID大小)
2、区域ID要一致
3、认证类型要一致
4、认证数据要一致
5、Hello间隔要一致
6、Hello失效间隔要一致
7、N、Ebit取值要一致
以上七个条件是OSPF任何情况下都要同时满足建立邻居的条件
遗忘曲线、给别人讲
1、Down(OSPF七级邻居关系1):路由器没有发现邻居,接口没有收到任何邻居的Hello包,但不影响自己发Hello包(发的Hello包不携带邻居的router id)。
2、Init(OSPF七级邻居关系2):初始化,收到邻居的Hello包,能感知到链路上存在其他运行OSPF的路由器(第一次握手,收到了邻居Hello,但是在邻居的Hello包没有发现自己,单向发现)。
3、2-way(OSPF七级邻居关系3):hello参数协商后携带邻居router id发送Hello包(双向发现)。
实际3个包就到2-way了(3次握手):
1、3次握手建立双向邻居关系,避免单边的邻居建立。
1和2选出了主从,3、4、5进行DD摘要的交互,从路由器发送DD报文摘要使用主路由器的序列号发送,主发DD序列号+1做确认和传递自己的DD报文,从再使用主发的序列号+1作为自己DD报文的结束(+1就是可靠性的体现)。
从没有资格对序列号+1(被动地位),只能使用主的序列号发送DD报文。
进入到2-way状态后,开始进行LSDB的同步
通过发送DD报文进行主从选举,发送不携带LSA的DD报文。
DD报文2种:
1、不携带LSA(链路状态)摘要信息的DD报文(主从选举)。
2、携带LSA(链路状态)摘要信息的DD报文。
DD报文中I、M、MS三个bit位(状态的表达)和DD sequence序列号
I:为0代表不是第一次发DD报文,1是第一次发DD报文。
M:为0代表DD报文发完了,1代表不是最后一个DD报文还要发。
MS:为1代表是master主路由器,为0代表是slave从路由器。
R1和R2第一次DD报文I、M、MS都一样,协商主从(Router ID大的做Master主路由器),协商完再做同步
交换不携带摘要信息的DD报文,完成主从选举,进入Exchange状态。
将自身LSDB中所有LSA的摘要通过DD报文进行交换(实现LSDB同步)。
LSA摘要就是描述路由的头部。
DD报文(LSDB的目录)中LSA的摘要就是每一条LSA的头部信息
摘要的用途:(实现LSDB同步,同步设计的字段、字段的含义、同步的规则)
1、唯一的标识一条LSA,由Type、Ls id、adv router三个参数唯一标识一条LSA(通过识别LSA判断自己是否缺少LSA,LSA差异)
(1)、Type类似:表面LSA的种类。
(2)、LS ID链路状态ID:LSA的名字,Ls ID的取值由Type决定。
(3)、Adv Router:产生这条LSA路由器的Router ID。
2、用于判断LSA的新旧(通过LSA的sequence序列号、checksum校验合、Ls Age老化时间判断新旧程度,旧的被新的替换掉)
(1)、sequence number:序列号越大越新,起始值0x80000001,最大值0x7FFFFFFF。
(2)、checksum校验和:越大越新
(3)、LS Age老化时间:等于3600s最新。
(4)、如果LS Age都不等于3600s,则判断LS Age差值,如果大于900s则LSA Age小的新,如果小于/等于900s则认为相同。
所谓的LSDB同步就是邻居之间最终拥有相同的LSA的信息,以及这些LSA的新旧程度一致。
1、Type类似:表面LSA的种类。
2、LS ID链路状态ID:LSA的名字,Ls ID的取值由Type决定。
3、Adv Router:产生这条LSA路由器的Router ID。
4、sequence number:序列号越大越新,起始值0x80000001,最大值0x7FFFFFFF。
5、checksum校验和:越大越新
6、length:长度
为什么同步,同步的规则:
DD报文(就是一本书的目录)的设计就是为了加快收敛速度,节省设备资源。
从路由器携带DD摘要信息使用主路由器的序列号(主路由器决定从路由器发送DD报文的序列号,让DD报文传输有可靠的传输机制),主路由器收到从路由器发自己DD的摘要会把序列号+1(1、从使用主的序列号发DD做缺认,确定你从路由器身份。2、同时把自己的DD报文发给对方)。
从路由器
主路由器
从再回使用主的序列号
最后一个DD报文
主路由器发最后一份DD:
从路由器要发一份空的做最后确认
从的DD报文(最后做确认)
1、DD seq = x i = 0 More = 1 ms = 0 LSA1 头部、LSA2头部、LSA3头部
3、DD seq = x+1 i = 0 More = 1 ms = 0 LSA4头部、LSA5头部
5、DD seq = x+2 i = 0 More = 0 ms = 0 LSA6头部
7、DD seq = x+3 i = 0 More = 0 ms = 0 null(告诉主路由器最后发的收到了,做一个最后确认收尾)
主的DD报文(最后一个DD报文)
2、DD seq = x+1 i = 0 More = 1 ms = 1 LSA1 头部、LSA2头部、LSA3头部
4、DD seq = x+2 i = 0 More = 1 ms = 1 LSA4头部、LSA5头部
6、DD seq = x+3 i = 0 More = 0 ms = 1 LSA6头部
通过LSR中携带DD摘要的LSA标识,发给对方请求这条LSA,对方收到LSR的请求会把对应的LSA明细通过LSU发过去(收到LSR、LSU做交换)。
R2的LSR请求,LSA头部
R1通过LSU更新完整条目给R2
收到DD报文判断对方DD中摘要是自己需要的(没有或对方新)就会发DD报文携带LSR请求自己需要的LSA。
不管谁最后发DD,总要有一个人最后做确认收尾。
对LSU做确定发LS ACK,同步了LSA,最终LSDB同步(到达Full)。
LS ACK:对收到的LSU中的LSA做确认(不是对LSU确认,信息确认,不是报文确认):
R2的LSU:
R1的LSA ACK对收到之前的LSU做确认:
1、什么是同步:LSDB要一样。
2、如何做才能同步:通过LSR、LSU、LS Ack实现。
DD、LSR、LSU、LSAck报文都包含那些信息?这么设计有什么好处?
DD报文携带LSDB中所有LSA的摘要信息,摘要信息有哪些?
1、唯一的标识一条LSA,由Type、Ls id、adv router三个参数唯一标识一条LSA(通过识别LSA判断自己是否缺少LSA,LSA差异)
(1)、Type类型:表面LSA的种类。
(2)、LS ID链路状态ID:LSA的名字,Ls ID的取值由Type决定。
(3)、Adv Router:产生这条LSA路由器的Router ID。
2、用于判断LSA的新旧(通过LSA的sequence序列号、checksum校验合、Ls Age老化时间判断新旧程度,旧的被新的替换掉)
(1)、sequence number:序列号越大越新,起始值0x80000001,最大值0x7FFFFFFF。
(2)、checksum校验和:越大越新
(3)、LS Age老化时间:等于3600s最新。
(4)、如果LS Age都不等于3600s,则判断LS Age差值,如果大于900s则LSA Age小的新,如果小于/等于900s则认为相同。
LSR报文写到LSA的标识Type、Ls id、adv router。
LSU携带LSA的头部以及链路状态。
LSACK是LSA的摘要信息。
DD实现LSDB核对,按需同步LSA,提高邻居速度,节省设备资源。
OSPF邻居建立的可靠性提现。
由于OSPF是被IP协议直接封装的路由协议,IP协议不具备可靠性机制。
OSPF协议需要自己建立一套可靠性机制,保障邻居能成功同步。
1、三次握手形成two-way。
2、DD报文序列号+1机制,隐式确认(对报文做确认)。
显示确认:会单独针对报文发确认包。
隐式确认:发包通过序列号+1回复上个包收到了。
3、LSAck对LSA的确认,不是对LSU的确认(不是对LSU确认,信息确认,不是报文确认)。
OSPF被IP协议封装,工作在网络层之上的一种路由协议(地位跟传输层持平,IP|OSPF、IP|TCP、IP|UDP,不好说OSPF是传输层)。
OSPF协议报文头部:DD、LSR、LSU、LSAck都有这个头部
1、邻居发现与保持:通过Hello机制实现。
2、LSA同步:双方互相发送LSA,完成同步,同时同步速度更快,占用资源更少,通过DD报文。
3、可靠性:确保LSA同步过程可靠性,DD报序列号+1,LSAck的确认。
1、LS Age:老化时间。
2、Options:可选项。
3、LS Type:LSA的类型。
4、Link State ID:LSA的名字,Ls ID的取值由Type决定。
5、Advertising Router:LSA的产生者。
6、LS sequence number:序列号。
7、LS checksum:校验和。
8、Length:长度。
1、链路开销:接口开销(默认环回口开销为0,能改)。
OSPF通过带宽计算开销,100M/带宽(serial链路带宽2.048)=48
只取整数位
100/1000 小于0取1,大于0取整数位,100/10000也是1,千兆和万兆值一样,比跳数了。
(1)改OSPF参考带宽(针对OSPF进程下所有接口生效)
改带宽命令(整个AS都要改):
(2)、改接口带宽(针对接口生效)
2、路径开销:到目的网段路径的开销,就是链路出接口开销的累加和。
路径两端开销不一致会导致报文来回路径不一致(对用户来说不会有任何问题,会造成故障分析难度增加,安全上看如果中间有安全设备会导致被拦截)。
每台运行OSPF的路由器都会产生,用于描述路由器自身加入到OSPF进程的直连链路状态。
描述直连链路的时候,通过四种链路类型:
任何一种链路类型都由这三个参数描述link id、data、mctric。
描述路由器直连网络号,link id、data、mctric。
link id:直连网络号。
data:子网掩码。
mctric:自身到直连网络OSPF的cost开销。
描述广播型/NBMA链路上的(伪节点)邻居。
link id:伪节点的router id,由DR的接口地址充当伪节点的router id。
data:自身和伪节点相连的接口IP。
mctric:到伪节点的开销。
这条链路的伪节点为10.1.234.2,但是DR≠伪节点,是链路本身的算法抽象了虚拟的伪节点,借用DR接口地址充当Router ID(每一条广播链路都会选DR,接口地址充当伪节点的Router ID)。
描述P2P或P2MP链路上的(实节点)邻居。
link id:邻居的router id。
data:和邻居相连的接口地址。
mctric:到邻居的开销。
描述虚链路上的(实节点)邻居。
link id:虚链路上邻居的router id。
data:和vlink邻居相连的接口地址。
mctric:到邻居的开销。
transnet、p2p、virtual共同点是用来描述邻居的,都可以叫拓扑信息(根据信息描述整个网络)。
stubnet网络(路由)信息,描述网络号和掩码。
先画树,再画叶,开枝(拓扑信息)散叶(路由信息)。
1、p2p:ppp、hdlc
2、p2mp:手动配置
3、BRO:ethernet、fddi
4、NBMA:ATM、Fr(帧中继 )
默认接口的链路层协议决定链路的网络类型,但是也可以被管理员手动修改。
主从选举是lsdb同步的时候发生的事情(解决两台路由器LSDB同步dd报文的可靠性问题),伪节点是算法上用DR接口ip地址充当伪节点的router id(解决算路由的时候,为了简化拓扑结构,从而虚拟化出的一个节点,避免多路访问描述复杂),DR/BDR
网络中多台设备互相建立邻居,泛洪信息导致重复的信息在网络中一直传递(n*(n-1)/2,n是网络中路由器的数量,个邻接关系泛洪 ,重复的LSA泛洪造成资源浪费)。
选出DR/BDR减少full的邻居关系,降低重复的LSA数量,优化网络。
MA多路访问:BRO/NBMA链路都属于MA的类型。
默认情况下OSPF协议在BRO/NBMA型网络会自动进行选举DR。
每条BRO/NBMA型都会进行DR/BDR的选举:
1、比较接口的优先级,默认等于1,取值范围0-255(比大)。
2、比较router id(比大)。
router id相同会导致主从选举问题和1类LSA识别问题。
3、DR/BDR不可被抢占。
4、其他路由器为DRother。
5、接口优先级等于0,代表只能是DROther,没有资格进行DR/BDR选举。
P2P/P2MP的链路上不会进行DR/BDR的选举,直接建立FULL的邻接关系。
224.0.0.5代表所有运行OSPF协议的路由器。
224.0.0.6代表BRO/NBMA链路上的DR/BDR。
DR失效,判断是否存在BDR,如果有BDR,则BDR成为新的DR,重新选举BDR(BDR可选可不选)。
DRother只建立邻居到2-way,所有DRother和DR/BDR建立邻接Full的关系。
DR/BDR的组播组地址224.0.0.6,DRother把LSU(状态通告)通过224.0.0.6发给DR/BDR,DR再通过224.0.0.5发给其他DRother。
DR/BDR同时监听224.0.0.5和224.0.0.6。
DRother只监听224.0.0.6。
DR/BDR彼此不当一回事,但是DROther要关注哪个是DR/哪个是BDR。
wait time:DR/BDR选举时间,一般是hello时间的4倍。
邻居的Router ID
邻居和我相连的接口IP:
和邻居的状态:
DD报文主从选举(预启动状态):
优先级(选DR/BDR用):
DR和BDR:
邻居死亡时间:
重置OSPF进程:
R1的1类LSA
顺藤摸瓜,自身1.1.1.1连着2.2.2.2,R1通过1类LSA找到R2
1类LSA对应的P2P的link-ID一定有一条匹配的1类LSA
R1针对2.2.2.2的1类LSA:
Transnet:用于描述连接着伪节点,而如何描述伪节点连着哪些节点呢?
摸到伪节点后,顺着1类LSA的线索断掉了,此时需要找2类LSA解决伪节点问题,2类LSA由DR产生,描述伪节点连接着哪些节点
R1的2类LSA,DR接口充当2类LSA名字:
查看3.3.3.3和4.4.4.4的1类LSA
这个时候看3的1类LSA:发现3没有其他的藤了
这个时候看4的1类LSA:
R1再画叶子路由:stubnet的
R2的叶子:
伪节点的叶子(2类的链路状态ID与子网掩码):
DR的IP地址和DR的子网掩码与运算得出叶子网络,10.1.2.234.0/24
R3的叶子:
1、2类既描述拓扑,也描述路由。
通过1类、2类LSA计算出的路由信息为区域内路由,通过SPF算法计算出的路由,100%避免路由环路(因为不管实节点还是伪节点,都只能在树上出现一次)。
IGP协议的Network:控制将自己哪些直连链路加入到协议进程中,两种方法:
1、network 直连网络的网络号 反掩码(配置少,不精确宣告接口,太麻烦得算,多网段还是得用这个)
2、network 接口IP地址 0.0.0.0(精确)
如果一个区域规模很大,设备数量多,链路数量多,会有什么问题?
1、树的规模较大,SPF算法会消耗更多的CPU资源。
2、任何链路状态发生改变, 产生的1类2类的更新后需要在整个区域内泛洪传递。
3、当网络不稳定,整个区域所有路由器都要参与SPF的重新计算,发生故障可能性会增加。
1、将网络划分成两层的区域结构,骨干区域(area 0区域)/非骨干区域(非area0),区域内发生变化,只能影响变化的区域,不影响其他区域。
2、area 0 有且只有一个,并且要连续。
3、非骨干区域一定要和骨干区域直连相连,骨干区域area0是花蕊,非骨干区域的靠在花蕊旁的花瓣。
1、连接多个区域,至少有一个活动接口属于area 0的路由器。
2、配置了vlink虚链路的路由器。
IR区域内部路由器:
1、所有接口都属于同一个区域的路由器。
由ABR将自身直连区域的区域内路由(1/2类计算的路由)转换成其他直连区域的3类LSA,完成区域间路由的计算。
ABR把区域内明细路由转换为三类LSA进行区域间传递。
三类LSA:Sum-Net,纯粹的路由信息(1、2类LSA是拓扑信息)
Cost = 自身到ABR的开销 + ABR到路由的开销。
Next-Hop = 自身到ABR的下一跳,根据到ABR的APF树进行计算。
ABR转发3类LSA会改写Adv router为自身的router id,开销也会重新计算,3类LSA只能在产生区域内泛洪,转发其他区域会针对该区域重新生成3类LSA。
SPF在区域间是一种距离矢量算法。
区域间防环:所有非骨干区域流量,都得通过骨干区域传输,这样可以避免区域间环路。
区域间路由如何计算?
1、由ABR将自身直连区域内的区域路由器转换为其他直连区域的3类LSA,完成区域间路由的计算。
2、ABR将区域0中的3类LSA转化为其他骨干区域的3类。
区域间环路的产生:(真实这样设计不会有环路)
1、骨干区域与非骨干区域,所有非骨干区域都要和骨干区域相连,骨干区域只能有一个,非骨干区域都要通过骨干区域中转。
(1)、不是ABR就不能产生3类LSA。
(2)、从骨干区域传来的3类LSA不能再传回骨干区域。
不规则OSPF区域设计解决方案,Vlink
1、创建了vlink的路由器都会成为ABR。
2、vlink永远是属于area 0的链路。
3、vlink不能在area 0创建,只能在非骨干区域创建,只能跨越一个非骨干区域(可以一步一步跳)。
4、特殊区域不能创建虚链路。
5、用于修复不连续的骨干区域。
6、将非骨干区域和骨干区域直接相连。
7、能不用就别用(能按规则设计就别乱搞,增加网络复杂性,故障排错很麻烦,除非是没办法了)。
8、做area 0的备用链路:
区域0上边链路down了,导致有两个区域0,可以事先A和B通过vlink在area 1中建立一条虚链路,当做备用链路来用。
对端的router id
做完后,AR2是ABR了
R7带源ping:
思考题:
1、一条Network-Summary-LSA可以描述多条路由吗?
一条3类LSA只能描述一条路由,区域间路由多的话,做区域间路由汇总。
2、OSPF如何避免区域间环路?
(1)、区域0有且只有一个,并且连续。
(2)、非骨干区域要和骨干区域直接相连,非骨干区域直接想要通,必须经过ABR,保证网络架构无环,星型架构。
(3)、区域间水平分割,从该区域传递到其他区域的路由不允许再传回本区域。
企业需要和外部访问,不同企业网络之间存在互相访问。
外部路由引入:将其他协议的路由或OSPF其他进程的路由引入到OSPF协议进程中。
import route static 将执行该命令路由器的路由表中活动的静态路由引入OSPF进程中
外部路由,5类LSA:
FA转发地址
链路状态协议的最大特点:谁产生谁负责,其他路由器无权更改非自身产生的链路状态。
外部路由计算的规则:
1、和ASBR在同一个区域的路由如何计算外部路由?
cost = 自身到ASBR的开销 + 引入时开销
Next-hop = 自身到ASBR的下一跳
2、和ASBR不在同一个区域的路由如何计算外部路由?
4类LSA,属于路由信息,和ASBR同一个区域的ABR产生,描述自身到ASBR的开销,link id是ASBR的router id,adv router是ABR的router id。
cost = 1类得到自己到ABR的开销(SPF) + 4类得到ABR到ASBR的开销 + 5类外部路由本身的开销
Next-hop = 自身到ASBR的下一跳(根据4类算出,就是自到自己ABR的开销)
3类LSA描述的是到一个网络的开销。
4类LSA描述的是到一个节点的开销。
凡是没有描述邻居信息的都是路由信息!!!
外部路由类型:默认是OE 2
引入外部路由时在路由表中忽略AS内部路径的开销,仅显示引入时的开销。
1、OE 1:路由表中始终显示引入时的开销和内部路径开销之和(cost值是AS内部开销值 + AS外部开销值)。
2、OE 2:cost值是外部开销值。
外部路由选路:5类、7类
外部路由O E 1永远优于OE 2。
都是cost-type 1:选择cost小的,如果相同就负载分担,路由上的选路方式。
都是cost-type 2:优先比较引入时的开销(选小),不关注AS内部开销,管理意义上的选路方式,引入时开销一样,比较AS内部开销(选择到ASBR近的),如果内部开销也一样就负载分担。
路径优化(OSPF自动的路径优化):去往8.0路由下一跳是1.8,外部路由会携带FA转发地址,如果R6发现FA转发地址,是通过自己的直连路由可达,本地有这条路由就会把这条路由的下一跳用为FA地址。
FA转发地址(直连环境下):
这条FA地址确定的方法就是自己去往目的网络的下一跳,ASBR会把自己去往外部路由的下一跳作为这条外部5类LSA的FA地址传进去,内部路由器发下这条5类LSA携带有FA转发地址,并且FA转发地址是自己直连路由可达,那么就直接把转发地址作为这条5类LSA的下一跳。
当OSPF路由器计算外部路由时,5类LSA携带FA转发地址时,如果发现自身有存在FA转发地址的直连路由,则将这条外部路由的下一跳地址直接设置为FA地址(FA直连环境下)。
FA转发地址什么时候产生?(IE中具体说明)
type ase
ls id 外部路由的网络号
adv router ASBR router id
network mask 外部路由的子网掩码
metric 1
cost-type 2
fa 0.0.0.0
tag 1
四类LSA:由ASBR所在区域的ABR产生
area 10产生了一条5类LSA,4类LSA是R2在area 0区域产生,来告诉其他区域ASBR在哪以及开销的计算。
OSPF需要维护区域内(1、2类LSA完成计算)、区域间(3类完成计算)、外部路由(5类完成计算,4类辅助)。
LSDB中需要维护大量的LSA,消耗设备资源。
通过OSPF特殊区域进步一减少LSA数量和路由表规模。
1、减少特殊区域中LSA的数量!!!
2、减少路由表的规模!!!
3、保证网络能通!!!
1、会产生次优路径
2、不能建立vlink
3、area 0不能是特殊区域
1、不允许5类LSA在该区域泛洪。
2、该区域不产生4类LSA。
3、该区域的ABR会产生一条3类的默认路由(默认是1,cost可以改,多条3类缺省用来控制选路,开销一样负载分担),用于访问外部网络。
4、区域视图下default-cost 修改缺省路由开销。
5、不能有ASBR,不允许引入外部路由。
6、DD报文同步的时候,故意隐瞒5类LSA,仅是跟你同步我想和你同步的内容,所以ABR Stub有5类LSA,Stub没有5类,邻居关系是Full。
hello报文中option中E、N bit:
E = 0 代表不进行5类LSA同步,E = 1 代表需要同步5类LSA。
N = 0 代表不进行7类LSA同步,N = 1 代表需要进行7类LSA同步。
E = 1 ,N = 0代表普通区域
E = 0 ,N = 0代表Stub/Totally Stub区域
E = 0, N = 1代表NSSA/Totally NSSA区域
E = 1, N = 1不存在这种组合
五类LSA很多:
配置Stub区域:区域内所有路由器都要敲,这个时候邻居关系会重新建立
会过滤4、5类LSA,并且下发一条3类默认指向ABR:
实验:
ABR和区域内路由器敲stub:
Stub之前:
stub之后:
1、不允许5类LSA在该区域泛洪。
2、该区域不产生3、4类LSA。
3、该区域的ABR会产生一条3类的默认路由(默认是1,cost可以改,多条3类缺省用来控制选路,开销一样负载分担),用于访问外部网络。
4、区域视图下default-cost 修改缺省路由开销。
5、DD报文同步的时候,故意隐瞒5类LSA,仅是跟你同步我想和你同步的内容,所以ABR Stub有5类LSA,Stub没有5类,邻居关系是Full。
6、不能有ASBR,不允许引入外部路由。
stub的时候:
Totally Stub之后:
1、允许本区域的ASBR引入外部路由,以7类LSA的形式存在。
2、不允许其他区域ASBR产生的5类LSA泛洪,不产生4类LSA。
3、NSSA区域的ABR产生一条7类缺省路由,用于访问其他区域引入的外部路由。
4、7类LSA只能在NSSA区域内泛洪。
5、NSSA区域的ABR会把7类LSA转换为5类LSA泛洪到其他区域(如果有多个ABR,比较router-id,大的做转换者,只需要一个转换者)。
7类LSA在路由表中标识为O-NSSA:
R1-------------R2---------------R3---------R4
------area 1----------area 0-------area 2------
R4在NSSA区域引入7类外部,R3以转换者的身份把7类LSA转换成5类LSA进行传递,5类LSA到R2后,R2会针对这个5类LSA产生一条4类LSA,连同收到的5类LSA(5类LSA传递ADV router不会改变,需要4类来计算到5类ASBR的开销【4类就是描述自己到ASBR的开销】),传递到area 1,4类LSA来辅助R1计算这条5类LSA的路由。
NSSA区域ABR【转换者】会选择性的把7类LSA转换为五类,什么时候会这样(特殊场景)?
R3是区域的ABR,同时也是NSSA的ABR、ASBR,转换7类发NSSA区域,转换5类发area 0区域,下边的ABR就没必要再做7转5的转换。
指定转换者路由器角色命令:
1、允许本区域的ASBR引入外部路由,以7类LSA的形式存在。
2、不允许其他区域ASBR产生的3类、5类LSA泛洪,不产生4类LSA。
3、NSSA区域的ABR产生一条3类和7类的缺省路由,用于访问其他区域区域间路由【3类LSA】和其他区域引入的外部路由【7类LSA】(优先使用3类的缺省指导报文转发)。
4、7类LSA只能在NSSA区域内泛洪。
5、NSSA区域的ABR会把7类LSA转换为5类LSA泛洪到其他区域(如果有多个ABR,比较router-id,大的做转换者,只需要一个转换者)。
敲完nssa no-import route no-summary,会使路由器不产生7类到内部,只产生五类到外部,Totally NSSA区域内路由器的路由表会更优化(OSPF优化技术)。
7类LSA:
面试题:
交换机对于源目IP都是组播的数据包如何处理?
一般情况都是源是单播,目的是组播,华为不同型号交换机有的收到这样的数据包直接丢弃,有的会进行转发。
特殊区域,能不能增强特殊区域的稳定性?
可以,通过缺省路由访问外部网络,外部路由明细变化不会影响缺省路由。
4类除了ASBR区域,其他区域每台ABR都会产生。
1、产生次优路径
2、不能有vlink
1、路由汇总
(1)、只能在ABR上做
(2)、只能对直连区域的路由做汇总
(3)、汇总路由的开销继承明细路由中开销最大的(华为继承大的,思科继承小的)
(4)、明细路由全部失效,汇总路由才会失效。
(6)、如果区域有多个ABR,所有ABR都要执行汇总,否则失去汇总效果(不然明细就进来了)。
汇总前:
汇总后:
手动更改汇总路由的开销:
汇总但是不通告,能做到路由过滤,不会产生这条汇总的3类LSA:
(1)、只能在ASBR上执行。
(2)、汇总路由的开销类型继承明细路由的开销类型,如果明细路由开销类型不一致,则开销类型为O E2。引入外部路由类型为O E1,汇总就是O E1,引入外部路由类型为O E2,汇总就是O E2,引入外部路由类型有O E1和O E2两种,汇总后是O E2(默认是O E2)。
(3)、NSSA区域的外部路由汇总,可以在ABR也可以在ASBR。
默认开销是2(引入外部路由的开销是1,做了汇总+1):
LSA比较新旧:
1、seq序列号越大越新
2、chksum校验和越大越新
3、ls age老化时间 = 3600最新,ls age差值大于900s,ls age小的新,ls age差值小于900s,一样新。
LSA更新机制:3600s没更新就会在LSDB中删除
默认情况下,产生这条LSA的路由器会每隔1800s(原来序列号+1,校验和重新计算、老化时间置零),会更新自身产生的LSA。
当产生这条LSA的的路由,发现这条LSA的状态发生了变化(邻居发生变化、开销发生变化、网络号/掩码发生变化、tag、type) ,会产生触发更新(原来序列号+1,校验和重新计算、老化时间置零),发生LSU在邻居之间进行同步。
产生LSA的路由器,要删除该LSA,会在序列号不变、校验和不变的情况下,ls age老化时间置位3600s,然后LSU更新出去,其它路由器收到后同步删除掉。
OSPF协议认证:保护协议报文的安全性
1、数据机密性:只有通信双方可以看懂数据内容,其他任何人都无法了解数据内容,通过加密实现。
2、数据完整性:数据无法被伪造或者篡改,通过散列算法实现。
3、数据不可抵赖性:不能否认你做过/没做过。
路由协议认证,只能实现数据完整性保护。
安全隐患:
1、通过接入非法设备,注入非法路由,使财务部和Database通信的流量经过非法设备,被获取。
在属于这个区域的接口上启用认证。
使用MD5做认证
仅在该接口上启用认证。
3、接口认证优先于区域认证:接口认证灵活性更高。
认证类型取值为0,代表不认证,认证数据用0填充
密码一致就认为通过,则认为认证通过,auth type 1,无法实现数据完整性保护。
数学上是一种哈希函数,
(1)、不可逆:无法通过哈希值反推出原始数据。
(2)、雪崩效应:原始数据任何bit被修改,得到的hash值和原始的hash存在很大区别。
(3)、不定长输入,定长输出:MD5为128bit(16字节,16*8=128bit),SHA为160bit。
auth crypt req:防重放攻击,每次收到只能越来越大。
4、加强版HMAC-MD5(仅在华为设备之间支持)
5、配置要求:Key id一致,秘钥Key一致,认证才能成功,认证模式要一致(一边区域认证MD5,一边接口认证MD5,只要认证模式一样就行)。
网络安全、信息安全(懂编程、懂操作系统)、信息安全管理,存储(不是所有公司都会用),华为数通、安全、存储、云计算,大数据、人工智能比较窄路(数学出生,数学不好没必要搞)
安全是建立在信任的前提上,两把秘钥、Key ID要一致,数据和秘钥做hash哈希计算,发给对方,对方提取原始数据和本地秘钥做hash,算出结果一致认为认证成功(MD5是不会传递密码的)。