路由协议
作用:用于路由设备学习非直连路由;
动态路由协议:使路由设备自动学习到非直连路由;
分类:
按照算法分类:
1、距离矢量路由协议;(RIP、BGP)
只交互路由信息,不交互拓扑信息,运行距离矢量路由协议的路由器,只关心目的网段如何到达,无法得知网络结构;
拓扑信息:用于描述网络结构的信息(如接口带宽、接口类型等)
路由信息:目的网段以及掩码;
2、链路状态路由协议;(ospf、isis)
既交互路由信息,也交互拓扑信息,运行链路状态路由协议的路由器,可以得出全网的网络结构,并且计算出去往目的网段的最优路由,进行访问;
按照工作范围分类:
1、IGP(内部网关协议)-ospf、isis;
工作在一个AS内的动态路由协议,实现AS内部的互通;
会周期更新路由(ospf 1800s/次,超时时间为3600s;isis 900s/次 超时时间1500s)
2、BGP(边界网关协议)
工作在AS之间,实现AS之间的互通;
不会周期更新路由,只会触发式更新;
AS(自治系统/路由域)
定义:运行相同路由协议,具有相同管理规则的区域(一般为一个企业网);
按照传递路由时是否携带掩码分类:
1、有类路由协议
路由传递时,无需携带掩码,对端收到后,根据网段的类别,自动生成掩码;
2、无类路由协议(ospf、isis、BGP)
传递路由时,会携带掩码
——————————
ospf(开放式最短路径优先协议)
分类:链路状态路由协议、IGP、无类;
工作过程:
1、建立ospf邻居关系;
2、建立ospf邻接关系(同步LSDB);
LSDB(链路状态数据库):每台运行了ospf的路由器都会有一个LSDB,里面会携带自身的LSA;
LSA(链路状态通告信息):携带自身的路由信息以及拓扑信息;
同步LSDB:邻居双方相互发送LSA,直至双方的LSDB完全一致,既包含自身的LSA,也包含对方的LSA;
3、每台ospf路由器都会根据同步完成的LSDB,进行spf计算,得出全网网络结构,算出去往每个目的网段的最优路由,放进路由表;
报文:
结构:ospf层——网络层——数据链路层
ospf工作在网络层,协议号为89;
报文发送方式:组播发送,组播地址224.0.0.5(所有ospf路由器均可以接收)、224.0.0.6(只有DR/BDR可以接收)
ospf层:ospf头部+报文详细信息;
其中ospf头部所有ospf报文都会携带,并且携带内容一致;
报文的详细信息:不同报文类型,携带不一致;
ospf头部详细信息:
1、版本:v2/v3,分别工作在ipv4/v6环境;
2、router id(发送端)
格式大小:跟ip地址完全一致;
作用:唯一标识一台ospf路由器(不能冲突)
获取方式:
(1)手工配置
[R1]ospf 1 router-id 1.1.1.1 //创建并且进入ospf进程1,并且指定router id为1.1.1.1
修改router id后,需要重启ospf进程才能使新的router id生效;
<R1>reset ospf process //重启ospf进程;
(2)如果没有手工指定,则会自动进行选举;
选举规则:先在loopback接口中,选择最大的一个作为router id;
如果没有配置loopback口,则在物理接口中选最大的一个作为router id;
在实际设备中,会选择最先启动的接口ip作为router id;
3、区域id(area id)
标识发送ospf报文的接口属于哪一个区域;
区域分类:骨干区域(area id=0):必须要有
非骨干区域(area id=/=0):可有可无
普通区域、特殊区域(stub、totally stub、nssa、totally nssa);
区域划分:
基于接口进行划分;
划分规则:
(1)骨干区域必须要有,有且仅有一个;
(2)非骨干区域必须围绕着骨干区域建立,非骨干区域之间的互通,必须经过骨干区域;
4、认证信息:默认为空,如果配置了,两端需要认证通过才能建立ospf邻居;
分类:
1、hello报文
作用:用于发现、建立、维护ospf邻居(10s/次相互发送hello报文维持邻居),并且可以感知邻居的离开(超时时间为hello时间的4倍,默认为40s);
携带内容:
(1)掩码:标识发送hello报文的端口的掩码;
(2)hello时间/超时时间
(3)DR优先级、DR与BDR的ip地址;
(4)活跃邻居列表:携带hello报文的发送者的邻居router id;
(5)option位:用于标识区域类型;
E=1 N=0 普通区域
E=0 N=1 NSSA、totally NSSA
E=0 N=0 STUB、totally STUB
2、DD(数据库描述报文)
作用:携带自身LSDB中所有LSA的摘要信息,用于告知邻居,自身的LSDB中包含哪些LSA;
携带内容:
(1)MTU:代表接口发送的最大的数据单元,默认位1500B;
(2)flags:
I:代表该DD报文,是否为本设备发送的第一份DD报文;
M:用于标识该设备后续是否还有DD报文需要发送;
MS:代表该DD报文的发送端,是否为主设备;
(3)序列号;
3、LSR(LSA请求报文)
作用:携带自身需要获取的LSA的摘要信息,用于在收到DD报文后,向邻居请求自身缺少的LSA;
4、LSU(LSA更新报文)
作用:携带LSA的详细信息,用于回应LSR的请求;
5、LSACK(LSA确认报文)
作用:携带LSA的摘要信息,用于在收到LSU报文后,进行回复,确认收到;
ospf邻居状态机(详细的工作过程)
1、down
ospf路由器刚运行的状态,在该状态下代表ospf路由器没有收到任何的ospf报文,但可以发送hello报文进行邻居发现;
2、init
ospf路由器收到hello报文,并且该hello报文的邻居列表不包含自身的router id,则进入该状态;
3、2-way
ospf路由器收到hello报文,并且该hello报文的邻居列表包含自身的router id,则进入该状态;
当双方都进入2-way状态,则ospf邻居关系建立完成;
会进行DR/BDR的选举,选举完成后进入下一个状态;
4、exstart
邻居双方会相互发送不携带lsa摘要信息的DD报文(空DD),用于确保后续同步LSDB过程的可靠性;
携带内容:MTU、m=1、i=1、ms=1、序列号(随机生成)
作用:1、用于选举主从路由器;
选举规则:router id大的为主;
2、协商MTU,如果不一致,则邻接关系无法建立,停留在exstart状态;
3、确定序列号,以主的序列号为准;
5、exchange
邻居双方相互发送携带自身LSA摘要信息的DD报文,用于告知对端自身的LSDB中含有哪些LSA;
过程:
(1)由从先发出DD报文,其中序列号,为主设备在exstart发送的DD报文的序列号;
(2)主设备收到从设备的DD报文后,自身需要发出的DD报文的序列号,为从设备发出的DD报文的序列号+1;
(3)从设备收到主设备发送的DD报文,自身需要发出的DD报文的序列号等于主设备发送的DD报文中的序列号
(4)双方发送的DD报文中的M位均为0时,代表双方的LSA摘要信息全部发送完成,进入下一个阶段;
6、loading
邻居双方相互发送LSR、LSU、LSACK报文进行LSDB的同步;
5s重传机制:如果ospf路由器发送LSR、LSU后,没有收到对应的回应,则会将该报文重新发送,5s/次;
当重传列表为空时,代表本设备没有需要请求的以及发送的LSA,则进入FULL状态;
7、full
进入该状态,说明邻接关系建立完成,开始计算路由;
DR/BDR
DR:指定路由器,一个网段中有且只有一个;
BDR:备份指定路由器,一个网段中有且只有一个;
DRother:一个网段中可以有0到多个;
作用:减少ospf邻接关系的数目,从而减少网络中报文交互的数目,从而节省链路资源;
原理:DR可以跟所有路由器建立邻接关系;
BDR可以跟所有路由器建立邻接关系;
DRother之间无法直接建立ospf邻接关系,它们之间会停留在邻居关系的状态,但可以通过DR/BDR完成LSDB的同步;
选举:
选举状态:2-way
选举报文:hello报文
选举规则:
(1)比较DR优先级,越大越优;(默认为1,可调范围0~255,其中0代表不参与选举)
(2)比较router id,越大越优;
特点:
1、不抢占:一旦网络中的DR/BDR确定,则除非它们故障,否则地位都不会改变;
2、有备份:BDR作为DR的备份,一旦DR故障,BDR马上成为DR;
选举时间:等待时间(wait time),默认为120s
等待时间选举过程:
1、当ospf路由器刚启动,就会开始计时,在等待时间计时结束前,该路由器不会参与DR/BDR选举,并且如果在此过程中收到hello中DR/BDR有携带ip地址,则直接承认它们的地位;
2、当等待时间计时结束后,才会开始进行选举,并且将自己的ip地址填充进hello报文的DR字段中进行发送;
优先级最大的ospf路由器,一定为DR——x
最先启动的ospf路由器,一定为DR——√
网络中必须有DR,但不一定有BDR;
interface GigabitEthernet0/0/0
ospf dr-priority 2 //修改接口的dr优先级为2
基础配置
1、创建并且进入ospf进程,指定router id
[R1]ospf 1 router-id 1.1.1.1 /只有第一次创建进程时,需要指定router id,后续再进入无需指定
2、进入区域视图(以区域0为例)
[R1-ospf-1]area 0
3、宣告网段
[R1-ospf-1-area-0.0.0.0]network 10.1.12.0 0.0.0.255 //以网段的方式进行宣告,网段后需要接反掩码(255.255.255.255-掩码得出);
network 10.1.12.2 0.0.0.0 //以接口ip的方式宣告(精确宣告)
**只能宣告自身的直连网段;
display ospf brief //查看ospf摘要信息,其中包含router id、hello时间、DR信息;
display ospf peer brief //查看ospf邻居
开销
ospf开销=接口参考带宽/实际带宽;
越小越优;
GE/E——1
点到点链路——48
interface GigabitEthernet0/0/0
ospf cost 2 //修改接口开销为2
网络类型
作用:用于使ospf适应不同的底层链路;
底层链路 是否选举DR/BDR hello时间/超时时间 报文发送方式
广播型网络(MA) 以太网链路 选 10s/40s 组播发送:hello报文、LSACK、LSU;单播发送:DD、LUR
P2P 点到点链路 不选举 10s/40s 所有报文均为组播
NBMA 帧中继网络 选 30s/120s 所有报文均为单播
P2MP 无(需要手动调整) 不选举 30s/120s 组播:hello,其余报文均为单播
P2P网络不选举DR/BDR的原因:
P2P网络一般只有两端的两台设备,如果选举的话,一台为DR、一台为BDR,都会建立邻接关系,因此在P2P网络中选举DR/BDR,无法减少邻接关系的数目,并且还需要消耗选举的时间以及开销,因此没有必要选举;
因此一般P2P网络ospf邻居的建立时间会快于广播型网络;
针对只有两台设备相连的以太网链路,可以将其ospf的网络类型修改为P2P,无需选举DR/BDR,加快邻居关系建立的速度;
interface GigabitEthernet0/0/1
ip address 10.1.24.2 255.255.255.0
ospf network-type p2p //修改接口的网络类型为P2P;
邻居关系:
1、广播型网络:能跟P2P建立、修改hello时间一致后可以跟P2MP建立邻居关系;
2、P2P:可以跟广播型网络建立,修改hello时间一致后可以跟P2MP建立邻居关系;
ospf认证
作用:提高ospf网络的安全性;
原理:只有认证通过才能建立ospf邻居关系;
认证通过:认证类型以及用户名、密码要一致;
认证方式:
接口认证:配置在接口下;
区域认证:配置在区域下;
认证类型:
明文认证(simple)
特点:配置时只需要指定密码;
抓包时可以看得见密码;
直接根据密码进行认证,密码一致则通过;
认证过程简单、节省报文空间,安全性差;
密文认证:(MD5、keychain)
特点:配置时需要指定key id以及密码;
抓包时可以看不见密码;
根据hash值(通过key id、密码以及加密序列号进行hash计算得出)进行认证,密码一致则通过;
认证过程复杂,安全性高;
配置参数:
plain:查看配置时可以看见密码;
cypher:查看配置时无法看见密码;
配置:
interface GigabitEthernet0/0/0
ospf authentication-mode simple plain huawei //接口下配置明文认证,密码为huawei
ospf 1 router-id 2.2.2.2
area 0.0.0.0
authentication-mode simple cipher huawei //区域下配置明文认证,密码为huawei
interface GigabitEthernet0/0/0
ospf authentication-mode md5 1 plain huawei //接口下配置密文认证,key id为1,密码为huawei
当一个区域下配置了认证,同时接口下也配置了认证,则该接口以接口配置的认证为准;
keychain认证:
定义:一个keychain由多个key id以及对应的密码组成,可以在不同的时间,使用不同的key id以及密码,提高网络的安全性;
配置
[R3]keychain 1 mode periodic daily //创建钥匙串,设置认证的模式为周期,周期为按天;
key-id 1 //创建key id 1
key-string plain huawei //设置密码为huawei
send-time daily 00:00 to 12:00 //在每天的0点到12点,使用key id 1,密码huawei进行认证;
receive-time daily 00:00 to 12:00
key-id 2
key-string plain huawei
send-time daily 12:01 to 23:59
receive-time daily 12:01 to 23:59
interface GigabitEthernet0/0/0
ospf authentication-mode keychain 1 //接口或者区域下调用;
LSA
LSA摘要信息:唯一标识一份lsa;
ls type:代表lsa的类型;
ls id;链路状态id,不同类型的lsa,代表含义不一样;
adv router:产生该lsa的设备的router id;
单区域:使用1、2类lsa;
在一个区域内,最终所有该区域的ospf路由器都会同步LSDB;
lsa-1
route lsa
所有的ospf路由器都会产生(仅产生一份);
传递范围:一个区域内;
防环:SPF算法;
摘要:
ls id:产生该LSA的设备的router id;
adv router:产生该LSA的设备的router id;
ls type:route
详细信息:
1、当设备存在p2p网络类型的接口时,会产生,描述p2p网络的拓扑信息;
link-type:p2p
link id:本设备通过P2P链路连接的对端的设备的router id;
data:接口ip;
开销:接口开销;
2、当设备存在广播型网络的接口时,会产生,用于描述广播型网络的拓扑信息;
link-type:transnet
link id:DR的ip地址
data:本接口ip
开销:接口开销;
**DR产生的transnet的信息,其中link id与data会一致;
3、当设备存在p2p网络类型的接口,或者存在宣告进ospf的loopback时,会产生,用于描述P2P网络以及loopback接口的路由信息
link-type:stubnet
link id:目的网段
data:掩码
开销:本设备去往该网段的ospf开销
4、当设备配置了v-link会产生;
link-type:virtual
link id:虚链路对端的ip
data:自身接口ip
开销:本设备去往对端开销
lsa-2
network-lsa
只有DR会产生,用于描述广播型网络的路由信息以及部分拓扑信息;
传递范围:区域内传递;
防环:SPF算法;
摘要信息:
ls type:network lsa;
ls id:DR的ip地址
产生者:DR的router id;
详细信息:
掩码;
加入进该网段的设备的router id;
display ospf lsdb //查看设备的ospf lsdb中的lsa的摘要信息;
display ospf lsdb router x.x.x.x //查看一类lsa的详细信息,其中x.x.x.x为需要查看的ls id
display ospf lsdb network x.x.x.x //查看二类lsa的详细信息,其中x.x.x.x为需要查看的ls id
FULL-SPF算法:
在网络刚启动ospf时,会进行计算;
定义:每台路由器,会根据自身收集到的区域内的一二类lsa,进行计算,画出SPF树,得出最优路由;
计算方式:
1、每台路由器都会把自己当成树根,进行计算,先查看自身产生的一类lsa,查看其中的拓扑信息;
根据开销,选择最小的拓扑信息,新增节点,如果link-type为transnet,新增的为伪节点,通过p2p类型新增的为实节点;
2、再根据新增的节点,去查找相关联的lsa,其中实节点,查找1类lsa,伪节点查找2类lsa,再继续新增新节点,直至网络中没有新节点增加为止;
3、在每个节点上,挂上路由信息,计算出最优路由;
区域间通信:
ABR(区域边界路由器)
定义:在骨干区域以及非骨干区域同时存在FULL邻接关系的ospf路由器;
lsa-3
由ABR产生,只携带路由信息;
传递范围:区域间;(除产生区域外的其他相邻区域,特殊区域除外)
产生过程:ABR会将区域内1、2类lsa中的路由信息,转成3类lsa在其他相邻的区域内传递,其他区域的设备收到后,会累加自身到ABR的开销,得出去往目的网段的路由;
摘要:
ls type:summary-lsa
ls id:目的网段;
产生者:ABR的router id;
详细信息:
掩码;
开销:产生该三类lsa的abr到目的网段的开销;
透传:
当ABR收到三类LSA时,会进行透传操作:
将产生者变为自己,开销修改为自身到目的网段的开销,在其他相邻的区域内传递(特殊区域除外);
防环:
1、水平分割规则:
当ABR从非骨干区域收到三类LSA时,执行只接收,不计算的、不透传的操作;
接收的原因:(1)用于备份路径;
(2)需要在区域内同步LSDB;
2、LSA-1、2优于LSA-3
当ABR同时收到描述相同路由的1、2类lsa以及3类lsa时,会优选1、2类lsa,同时不会将收到的3类lsa进行计算以及透传,作为备份路径使用;
vlink(虚链路)
定义:配置在边界设备上,配置后相当于在配置的两端另外单独建立了一个骨干区域(area 0)的邻接关系;
原理:vlink两端设备会以单播的形式同步area 0的数据库,另外也是通过单播发送hello报文维持邻接关系;
作用:解决因区域划分不规则导致的无法互访的问题;
配置:
ospf 1 router-id 2.2.2.2
area 0.0.0.2 //进入双方共处的区域
vlink-peer 4.4.4.4 //指定对端的router id
display ospf vlink //查看vlink邻接关系的建立情况
配置的注意事项:
1、vlink无法跨区域建立,因为需要通过1类lsa(virtual类型的link type)定位对端的位置,单播发送lsa;
2、骨干区域不可以配置;
3、特殊区域不能配置
危害:
1、增加网络的复杂度;
2、存在环路隐患;
路由引入:
将一个协议的路由以另一个协议路由的形式,在另一个协议中传递;
ospf外部路由:
通过其他协议引入进ospf的路由,优先级默认为150;
ASBR(自治系统边界路由器)
指进行了外部引入的ospf'设备;
LSA-5
用于描述外部路由,携带路由信息;
由ASBR产生;
传递范围:整个ospf域,特殊区域除外;
防环:根据1、2、3、4类lsa的防环规则防环;
摘要信息:
ls type:external
ls id:目的网段;
产生者:ASBR的router id;
详细信息:
掩码;
开销:外部开销;
外部开销:ASBR在进行路由引入时,指定的开销,默认为1;
内部开销:需要访问外部路由的设备到ASBR的开销;
type:代表开销计算方式,分为type 1以及type 2,默认为2;
type 2:直接比较外部开销,比不出来再比较内部开销,路由表上,只呈现外部开销;
type 1:直接比较内外开销之和,路由表上,呈现内部开销+外部开销之和;
为什么需要区分type 1以及type 2:可以在进行选路时,更加灵活控制流量走向;
tag:路由标记,用于匹配路由,默认为1
FA地址(转发地址)
默认为0.0.0.0
作用:解决次优以及环路的问题;
置位条件:
1、ASBR发送lsa-5的接口,跟它自身访问外部路由的出接口为同一接口;
2、上述接口宣告进ospf,并且没有静默;
满足置位条件后,FA会被置位为外部路由的下一跳;
原理:
1、当FA地址为0时,ospf设备通过4类lsa找到ASBR的位置去访问外部路由;
2、当FA地址不为0时,ospf设备直接通过1、2、3类lsa找到FA地址,从而访问外部路由
ospf 1 router-id 5.5.5.5
import-route static cost 2 //引入外部路由时,修改外部开销为2
import-route static cost 2 type 1 //修改开销计算类型
import-route static tag 10 //为引入的路由打上tag 10
display ospf lsdb ase 6.6.6.6 //查看5类lsa的详细信息;
LSA-4
作用:携带ASBR的router id(位置信息),其他ospf设备会根据该lsa找到ASBR,从而访问外部路由;
摘要:
ls type:asbr
ls id:ASBR的router id;
产生者:ABR的router id;
传递范围、防环规则、透传均跟lsa-3一致;
产生过程:
1、当一台ospf路由器引入了外部路由后,它产生的1类lsa中的option位asbr位置位为1;
2、同区域的ABR收到ABSR产生的1类lsa后,则会为该ASBR产生lsa-4,在其他相邻的ospf区域内传递(特殊区域出外)
特殊区域:
作用:保护性能较差的设备;
对性能要求:ASBR>ABR>骨干区域中间设备>普通区域中间设备>特殊区域中间设备;
1、stub区域
特点:不允许存在4、5、7类lsa;
当一个区域配置为stub区域时,该区域的ABR会下发一条描述默认路由的3类lsa,在stub区域内传递,该区域的设备就可以学习到默认路由,用于访问外部路由;
配置:
ospf 1 router-id 3.3.3.3
area 0.0.0.2
stub //把区域2,配置成stub区域,注意整个区域的所有设备均需要配置;
2、totally stub区域
特点:不允许存在4、5、7类以及明细的3类lsa;
当一个区域配置为totally stub区域时,该区域的ABR会下发一条描述默认路由的3类lsa,在totally stub区域内传递,该区域的设备就可以学习到默认路由,用于访问其他区域的路由以及外部路由;
配置:
ospf 1 router-id 3.3.3.3
area 0.0.0.2
stub no-summary //把区域2,配置成totally stub区域
缺陷:stub区域无法引入外部路由;
3、nssa区域
特点:不允许4、5lsa存在;
当一个区域配置为nssa区域时,该区域的ABR会下发一条描述默认路由的7类lsa,在nssa区域内传递,该区域的设备就可以学习到默认路由,用于访问其他区域引入外部路由;
nssa区域可以引入外部路由,引入的路由会以7类lsa的形式在nssa区域内传递;
当nssa区域的ABR在本区域收到7类lsa时,会进行7转5的操作:将类型修改为5类,产生者变为自己,在其余的ospf区域中传递(特殊区域除外),在其余区域的设备严重,该ABR为对应外部路由的ASBR;
当nssa区域中存在多台ABR时,只有router id大的可以进行7转5
lsa-7
用于描述在nssa区域内引入的外部路由,携带路由信息;
传递范围:nssa区域
摘要:
ls id:目的网段;
产生者:ASBR的router id;
type:nssa
详细信息:
掩码;
外部开销
开销计算类型
tag
FA地址(一般不为0)
选举规则:
(1)先看是否满足lsa-5的fa地址置位条件;
(2)在宣告进ospf中的loopback接口中选择最大的ip地址
(3)在宣告进ospf中的物理接口中选择最大的ip地址
作用:防止在nssa区域中存在多台ABR的情况下,只有一台进行7转5时,出现的次优路径问题;
配置:
ospf 1 router-id 3.3.3.3
area 0.0.0.2
nssa //把区域2,配置成nssa区域
4、totally nssa
特点:在nssa区域的基础上,进一步过滤了明细的三类lsa,ABR在下发一条描述默认路由的3类lsa,用于访问区域外的路由;
配置:
ospf 1 router-id 3.3.3.3
area 0.0.0.2
nssa no-summary //把区域2,配置成totally nssa区域
ospf路由汇总
作用:减少路由表/LSDB规模
分类:
1、在ABR上实现,针对lsa-3生效;
ospf 1 router-id 2.2.2.2
area 0.0.0.1 //进入产生3类lsa的区域;
abr-summary 1.1.1.0 255.255.255.0 //进行路由汇总,汇总的结果为1.1.1.0/24
可选参数:not-advertise(汇总不通告),将汇总后的路由进行抑制,起到过滤路由的效果;
2、针对引入路由,在ASBR上实现
ospf 1 router-id 3.3.3.3
asbr-summary 4.4.4.0 255.255.255.0 //进程下进行汇总,如果存在nssa区域,则可以选择在ASBR或者是NSSA区域中进行7转5的ABR上做
静默接口
作用:使接口不发送hello报文,但不影响该接口的网段通告出去;
应用:用于连接终端设备的接口;
配置
ospf 1 router-id 1.1.1.1
silent-interface GigabitEthernet0/0/1
影响ospf邻接关系建立因素
1、版本需要一致;
2、router id不能一致;
3、区域id要一致;
4、如果配置了认证,认证需要通过;
5、掩码要求一致(p2p网络不检查该项)
6、hello/超市时间一致;
7、option中的E以及N位要一致(区域类型要一致)
8、接口不能被静默
9、MTU要一致;
10、网络类型:广播型与p2p网络可以建立full的邻接关系,但是路由计算会出问题(用的lsa不一样,无法正常计算SPF树);