动态路由协议的分类
按工作区域分类:
IGP(内部网关协议):RIP OSPF IS-IS
EGP(外部网关协议):BGP
按工作机制及算法分类:
距离矢量路由协议:RIP
链路状态协议:OSPF IS-IS
链路状态路由协议
LSA泛洪
链路状态路由协议通告的是链路状态而不是路由信息。
运行链路状态路由协议的路由器之间首先会建立邻居关系,然后彼此之间开始交互LSA(链路状态通告)。
- LSA描述了路由器接口的状态信息,例如接口的开销、连接的对象等。
LSDB维护
每台路由器都会产生LSA,路由器将收到的LSA放入自己的LSDB(链路状态数据库)。路由器通过对LSDB中所存储的LSA进行解析,进而了解全网拓扑。
- 路由器使用LSDB存储LSA
- LSDB通常会存储多种不同类型的LSA,每类LSA所描述的信息不同
SPF计算(最短路径优先)
每台路由器基于LSDB,使用SPF计算出以自己为根的、无环的、拥有最短路径的“树”。有了这棵“树”,路由器就知道了到达所有网段的优选路径。
- 每台路由器都计算出一棵以自己为根的、无环的、拥有最短路径的“树”
路由表生成
路由器将计算出来的优选路径,加载进自己的路由表。
- 每台路由器根据SPF计算结果,将路由加载进路由表
链路状态路由协议总结
1、建立邻居关系
2、交互链路状态信息---LSDB(LSDB里有LSA)
3、使用SPF进行路径计算
4、计算出来的优选路径,生成路由表项
OSPF简介
优先级:10,150,组播地址:224.0.0.5 224.0.0.6,协议号:89
2种认证方式:接口认证、区域认证。(接口认证优于区域认证)
三张表:
1)邻居表:列出每台路由器全部已经建立邻接关系的邻居路由器。
- OSPF的邻居关系通过交互Hello报文建立。
2)链路状态数据库(LSDB):列出网络中其他路由器的信息,由此显示了全网的网络拓扑。
3)路由表:通过SPF算法计算出到达每个网络的最优路径。
四种网络类型:
P2P:点到点链路 不选举DR hello报文发送时间10s
P2MP:点到多点链路 不选举DR hello报文发送时间30s
BMA:广播类型网络 选举DR hello报文发送时间10s
NBMA:非广播-多路访问网络 选举DR hello报文时间30s
hello报文死亡时间是发送时间的4倍
五种报文:
每个报文中都有相同的OSPF报文头部
Hello报文:周期性发送,用于发现和维持OSPF邻居关系。
- 发现邻居
DD报文:交互链路状态数据库摘要,描述本地LSDB的摘要信息,用于两台路由器进行数据库同步。
- 互相问对方你有没有某信息,需不需要
LSR报文:链路状态信息请求报文,向对方请求所需要的LSA。
- 自身查看没有某信息,我需要某信息,我向对方请求发送某信息
LSU报文:链路状态信息更新报文,向对方发送其所需要的LSA或者泛洪自己更新的LSA。(发送详细的LSA)
- 我知道了你没有某信息,互相向对方发送对方所需要的某信息
LSAck报文:链路状态确认报文,用于对收到LSU中的LSA进行确认。
- 我收到了某信息,我确认一下
DD报文中的隐式确认 选举主从,交互摘要信息的过程
七种状态:
Down:没有收到Hello包。
Attempt:在帧中继网络中才会出现,表示的是网络是测试、唤醒状态。
Init:收到Hello包,但是收到Hello包中的邻居字段没有自己。
2-Way:收到Hello包的邻居列表中有自己,建立邻居关系。
Exstart:只发DD报文,不含摘要信息
Exchange:通过交换DD报文,交换LSA头部信息。
Loading:通过上述获得的LSA头部信息,来确定自己需要哪些LSA。
Full:LSDB同步完成,建立邻接关系。
OSPF基础术语
Router ID
Router ID用于在自治系统中唯一标识一台运行OSPF的路由器,它是一个32位的无符号整数。
Router ID选举规则如下:
- 手动配置OSPF路由器的Router ID(建议手动配置)
- 如果没有手动配置Router ID,则路由器使用Loopback接口中最大的IP地址作为Router ID
- 如果没有配置Loopback,则路由器使用物理接口最大的IP地址作为Router ID
- 华为设备中,先配哪个IP,就用哪个IP为Routerid
区域
- OSPF Area 用于标识一个OSPF的区域。
- 区域是从逻辑上将设备划分为不同的组,每个组用区域号(Area ID)来标识。
- OSPF的区域ID是一个32bit的非负整数,按点分十进制的形式(与IPv4地址的格式一样)呈现,例如Area0.0.0.1。为了方便,采用十进制表示。
- 几个例子:Area0.0.0.1等同于Area1,Area0.0.0.255等同于Area255,Area0.0.1.0等同Area256。许多网络厂商的设备同时支持这两种区域D配置及表示方式。
链路两端的区域不一致,则邻居建立不起来。比如R1的1号口连接R2的2号口,两个接口的区域必须一致,如果1号口属于区域1,2号口属于区域2,邻居就建立不起来。
度量值
- OSPF使用Cost(开销)作为路由的度量值。每一个激活了OSPF的接口都会维护一个接口Cost值,缺省的接口Cost=100Mbit/s / 接口带宽。
- OSPF以“累计cost”为开销值,也就是流量从源网络到目的网络所经过所有路由器的出接口的cost总和。
推荐根据接口带宽大小手动配置cost值,而不是修改OSPF参考带宽
OSPF工作过程
- hello报文发现直连链路上的邻居
- 协商主从关系master、slave
- 相互交互各自的LSDB(摘要信息)
- 更新LSA,同步的LSDB
- 运行SPF,计算路由
建立邻居关系
使用Hello报文发现和建立邻居关系
默认发送组播形式发送Hello报文(目的地址224.0.0.5)
OSPF中Hello报文中包含了路由器的Router ID、邻居列表等信息
当R1和R2建立邻居关系时,邻居状态为:
Down:初始状态,没有从邻居收到任何消息。
Init:从邻居收到了hello报文,但自己的router-id不在hello报文中。
2-way:从邻居收到了hello包,自己的router-id存在于hello报文中。邻居关系建立。
Hello报文的主要作用
- 邻居发现:自动发现邻居路由器
- 邻居建立:完成Hello报文中的参数协商,建立邻居关系
参数协商例如:掩码,DR,BDR,区域,特殊区域
- 邻居保持:通过周期性的发送和接收,检测邻居运行状态
建立邻接关系
Exstart:路由器向邻居发送DD报文,不包含摘要信息。router-id大的作为Master设备。(采用一样的序列号发送DD报文)
Exchange:发送包含摘要信息的报文。
Loading:相互向对方发送对方所需要的LSDB。
Full:完成LSDB同步。
影响邻居建立原因
router-id要不同
链路两端区域号要一致
认证类型(md5、明文)要相同 ------------OSPF报文头部
hello dead间隔时间不一致
MA网络中无DR
mtu要相同
MA网络子网掩码要相同
接口未设置silent-interface
区域内网络类型要相同 网络类型不同,不影响邻居建立,但会影响路由的计算。
DR与BDR的作用
减少全网连接量 不然n*(n-1)/2
DR与BDR、DRother之间建立邻接关系
DRother之间只建立邻居关系
先选BDR,后选DR。
DR/BDR的选举是非抢占式的
- 比如已经有了DR/BDR,后面又新增了一台路由器,优先级比现在DR/BDR要更优,为了网络稳定,新增路由器不会去抢占DR/BDR。
DR/BDR的选举是基于接口的(路由器的每个接口角色都不一样,有可能一台路由器的两个接口分别是DR或BDR)
- 接口的DR优先级越大越优先
- 接口的DR优先级相等时,Router ID越大越优先。
在一个广播网络当中,至少有一个DR优先级不能为0。如果都为0,则不能建立邻接,无法交互LSA。
像这样的广播网络,如果DR优先级都是0,由于没有DR,不能建立连接邻接关系,无法正常工作。
DR选举规则:
1、OSPF优先级最大,为DR(缺省情况下,所有OSPF路由器优先级都为1)。如果优先级都相同,则选择Router-ID最大的路由器选举为DR(Router-ID选举:手工配置>Loopback>接口IP)。
2、BDR是优先级仅次于DR的路由器,选举为BDR。
3、如果路由器优先级为0,表示改路由器不参与选举DR/BDR,称为DRother。
OSPF几个需要注意的地方:
1)当hello时间不同时是永远起不来邻居的
2)当hello时间不同时会停留在Init状态
3)如果路由的优先级都改成了0,会停留在2-way状态
4)当MTU值不同时会停留在ExstartT或Exchange状态
OSPF 使用两个组播地址
224.0.0.5---All OSPF Routers.
224.0.0.6---All DR Routers(DR+BDR)