Routing (路由)
路由就是通过互联的网络把信息从源地址传输到目的地址的活动。在路由表中优先级越小越优先(本文路由协议默认优先级均来自华为设备)
Routing Table (路由表)
路由表或称路由择域信息库,是一个存储在路由器或者联网计算机中的电子表格(文件)或类数据库。路由表存储着指向特定网络地址的路径,包含网络周边的拓扑信息
- destination:目的地址,用来标识IP包的目的地址或者目的网络。
- mask:网络掩码,与目的地址一起标识目的主机或者路由器所在的网段的地址。
- pre:标识路由加入IP路由表的优先级。可能到达一个目的地有多条路由,但是优先级的存在让他们先选择优先级高的路由进行利用。
- cost:路由开销,当到达一个目的地的多个路由优先级相同时,路由开销最小的将成为最优路由。
- interface:输出接口,说明IP包将从该路由器哪个接口转发。
- nexthop:下一跳IP地址,说明IP包所经过的下一个路由器。
路由选址默认为最长掩码匹配
Direct Routing (直连路由)
直接连接网段的路由,连接在各个路由器接口网段的路由,路由器启动时可以直接得到的路由网段。默认优先级为 0
Static Routing (静态路由)
由网络管理员配置,而非动态决定的路由项,当网络发生故障或者拓扑发生变化后,静态路由不会自动更新,必须手动重新配置。默认优先级为 60
负载分担
- 当两条路由项的目的地址、掩码、优先级、度量值相同并且下一跳地址不同时,则为等价路由。等价路由可以提供流量分担
路由备份
- 当两条路由项仅优先级不同时,则为浮动路由。优先级高的路由为主路由,其次为备路由。在正常情况下数据会从主路由进行转发,当主路由发生故障时,则会切换到备路由进行数据转发
缺省路由
- 目的地址为 0.0.0.0 且子网掩码为 0.0.0.0 的静态路由。当目的网段不在路由表中时,路由器会匹配该路由项进行数据转发
Routing Information Protocol (RIP、路由信息协议)
路由信息协议是一种内部网关协议,为最早出现的距离向量路由协议。其主要应用于规模较小的、可靠性要求较低的网络,可以通过不断的交换信息让路由器动态的适应网络连接的变化,这些信息包括每个路由器可以到达哪些网络,这些网络有多远等。RIP 通过 UDP 报文进行路由信息交换,端口号为 520 。默认优先级为 100
- Command 指令(8 bytes): 标识报文类型
- 1 : Request报文,向邻居请求全部或部分路由信息
- 2 : Reponse报文,发送自己全部或部分路由信息,一个Response报文中最多包含25个路由表项
- Version 版本(8 bytes): 标识版本号
- 1 : RIPv1
- 2 : RIPv2
- Must be zero 0 字段(16 bytes / 32 bytes): 必须为 0
- Address family identifier 地址族标识(16 bytes) : 其值为 2 时表示 IP 协议。对于 Request 报文,此字段值为 0
- IP Address IP 地址(32 bytes) : 该路由的目的IP地址
- Metric (32 bytes) 开销值 : 对于 Request 报文,此字段值为 16
工作过程
RIP 是一种基于距离矢量算法的协议,它使用跳数作为度量值来衡量到达目的地址的距离。在 RIP 网络中,缺省情况下,设备到与它直接相连的跳数为 0 ,通过一个设备可达的网络跳数为 1,度量值等于从本网络到达目的网络间的设备数量。为限制收敛时间,RIP规定度量值取0~15之间的整数,大于或等于16的跳数被定义为无穷大,即目的网络或主机不可达。由于这个限制,使得RIP不可能在大型网络中得到应用
- 初始状态:路由器开启 RIP 进程,宣告相应接口,则设备就会从相关接口发送和接收 RIP 报文
- 构建路由表:路由器依据收到的 RIP 报文构建自己的路由表项
- 维护路由表:路由器每隔 30 秒发送更新报文,同时接收相邻路由器发送的更新报文以维护路由表项
- 老化路由表项:路由器为将自己构建的路由表项启动 180 秒的定时器。 180 秒内,如果路由器收到更新报文,则重置自己的更新定时器和老化定时器
- 垃圾收集表项:如果 180 秒过后,路由器没有收到相应路由表项的更新,则启动时长为 120 秒的垃圾收集定时器,同时将该路由表项的度量置为 16
- 删除路由表项:如果 120 秒之后,路由器仍然没有收到相应路由表项的更新,则路由器将该表项删除
- RIP 协议启动后,路由器向相邻的其他路由器广播发送 Request 报文
- 当对方从端口接收到 Request 报文后,将自己的 RIP 路由表封装在 Response 报文内,从接收端口广播发送
- 路由器根据接收到的 Response 报文形成路由表
Open Shortest Path First (OSPF、开放式最短路径优先)
开放式最短路径优先协议使用 “代价(Cost)”作为路由度量。链路状态数据库(LSDB)用来保存当前网络拓扑结构,路由器上属于同一区域的链路状态数据库是相同的(属于多个区域的路由器会为每个区域维护一份链路状态数据库)
OSPF 提出了“区域 (Area)”的概念,一个网络可以由单一区域或者多个区域组成。其中,一个特别的区域被称为骨干区域(Backbone Area),该区域是整个OSPF网络的核心区域,并且所有其他的区域都与之直接连接。所有的内部路由都通过骨干区域传递到其他非骨干区域。所有的区域都必须直接连接到骨干区域,如果不能创建直接连接,那么可以通过虚链路(virtual link)和骨干区域创建虚拟连接。默认优先级为 10
OSPF 开销计算公式(带宽参考值/带宽)
OSPF 报文
- OSPF Header
- Version 版本号(1 byte)
- Type 类型(1 byte)
- 1 : Hello 报文
- 2 : DD 报文
- 3 : LSR 报文
- 4 : LSU 报文
- 5 : LSAck 报文
- Packet length 总长度(2 bytes)
- Router ID 路由器标识(4 bytes)
- Area ID 区域标识(4 bytes)
- Checksum 校验和(2 bytes): 除认证字段的整个报文的校验和
- Au Type 认证类型(2 bytes)
- 0 : 不认证
- 1 : simple
- 2 : MD5
- Authentication 认证字段(8 bytes)
- Hello
- Network Mask 网络掩码(32 bytes): 发送Hello报文的接口所在网络的掩码
- Hello Interval 间隔(16 bytes): 发送Hello报文的接口所在网络的掩码
- Options 选项(8 bytes)
- E : 允许 Flood AS-External-LSAs
- MC : 转发 IP 组播报文
- N/P : 处理 Type-7 LSAs
- DC : 处理按需链路
- Rtr Pri DR 优先级(8 bytes)
- Router Dead Interval 失效时间(32 bytes)
- Designated Router DR 接口地址(32 bytes)
- Backup Designated Router BDR 接口地址(32 bytes)
- Neighbor 邻居(32 bytes)
- DD
- Interface MTU 接口 MTU (16 bytes): 接口最大可发出的 IP 报文长度
- Options 选项 (8 bytes)
- E : 允许 Flood AS-External-LSAs
- MC : 转发 IP 组播报文
- N/P : 处理 Type-7 LSAs
- DC : 处理按需链路
- I (1 byte): 连续发送多个 DD 报文时,若是第一个 DD 报文则为 1,否则为 0
- More (1 byte): 连续发送多个 DD 报文时,是否为最后一个 DD 报文
- 0 : Yes
- 1 : No
- Master / Slave 主/从标识(1 byte): 当值为 1 时表示发送方为 Master
- DD Sequence Number DD 报文序列号(32 bytes): 主从双方根据序列号来保证传输的可靠性和完整性
- LSA Headers LSA 头部信息
- LSR
- LS Type LSA 类型(32 bytes)
- Link State ID 链路状态 ID (32 bytes): 根据 LSA 中的 LS Type 和 LSA Description 在路由域中描述一个 LSA
- Advertising Router 发起广播的路由(32 bytes): 产生次 LSA 的路由器的 Router ID
- LSU
- Number of LSAs LSA 数量(32 bytes)
- LSAck
- LSAs Headers LSA 头部信息: 通过 LSA 头部信息确认接收到该 LSA
OSPF 邻接建立过程
OSPF 七种基本状态
- Down: 初始状态,未收到任何 OSPF 报文。当邻居失效后会进入此状态
- Attempt: 该状态仅发生在 NBMA 网络中,表明对端在邻居失效时间间隔(dead interval)超时前仍然没有回复 Hello 报文。此时路由器依然每发送轮询 Hello 报文的时间间隔(poll interval)向对端发送 Hello 报文
- Init:收到邻居发的 Hello 报文,但自身的 Router ID 不在对方的邻居列表内
- 2-way:收到邻居发的 Hello 报文,并且自身的 Router ID 在对方邻居列表内。如果不需要形成邻接关系则邻居状态机会停留在此状态
- Ex-start:路由器与邻居互相发送 DD 报文,协商主从关系并确定初始 DD 报文序列号。此状态下的 DD 报文不包含任何链路状态信息摘要
- Ex-change:确定主从关系后,路由器与邻居互相发送包含链路状态信息摘要的 DD 报文
- Loading:DD 报文交换完成后,路由器与邻居之间互相发送 LSR、LSU、LSAck 报文,完善自身的 LSDB
- Full:LSDB 同步完成(LSR重传列表为空),形成邻接关系
邻居状态机
邻居关系:OSPF 设备启动后,会通过 OSPF 接口向外发送 Hello 报文,收到 Hello 报文的 OSPF 设备会检查报文参数,如果双方一致就会形成邻居关系,两端设备互为邻居
邻接关系:形成邻居关系后,如果两端设备交换 DD 报文和 LSA 成功后则建立起邻接关系
OSPF 支持的网络类型
网络类型 | 含义 |
---|---|
Broadcast (广播) |
当链路层协议是Ethernet、FDDI时,缺省情况下,OSPF认为网络类型是Broadcast。在该类型的网络中:通常以组播形式发送Hello报文、LSU报文和LSAck报文。其中,224.0.0.5的组播地址为OSPF设备的预留IP组播地址;224.0.0.6的组播地址为OSPF DR/BDR( Backup Designated Router)的预留IP组播地址。以单播形式发送DD报文和LSR报文 |
Non-Broadcast Multi-Access (NBMA) |
当链路层协议是帧中继、X.25时,缺省情况下,OSPF认为网络类型是NBMA。在该类型的网络中,以单播形式发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文) |
Point-to-Multipoint (点到多点) |
没有一种链路层协议会被缺省的认为是Point-to-Multipoint类型。点到多点必须是由其他的网络类型强制更改的。常用做法是将非全连通的NBMA改为点到多点的网络。在该类型的网络中:以组播形式(224.0.0.5)发送Hello报文。以单播形式发送其他协议报文(DD报文、LSR报文、LSU报文、LSAck报文) |
point-to-point (点到点) |
当链路层协议是PPP、HDLC和LAPB时,缺省情况下,OSPF认为网络类型是P2P。在该类型的网络中,以组播形式(224.0.0.5)发送协议报文(Hello报文、DD报文、LSR报文、LSU报文、LSAck报文) |
DR 与 BDR
Designate router (DR、指定路由器)
Backup Disignate router (BDR、备用指定路由器)
选举条件:
- 比较路由器接口优先级,越大越优先,默认值: 1
- 若优先级一致,则比较 Router ID
- 优先级第二大则为 BDR
优先级为 0 不参与选举,DR Other 不抢占 DR 与 BDR
OSPF 区域
通过区域 (Area) 的概念将 OSPF 域划分成多个区域,减小 LSA 泛洪的范围,有效的把拓扑变化的影响控制在区域内,三层设备在区域边界可以做路由汇总,可以使 OSPF 支撑更大规模的组网
Area 0 为骨干区域,其他区域必须直接连接骨干区域
不同区域路由器的角色类型:
- Internal Router (IR、区域内路由器)
- Area Border Router (ABR、区域边界路由器)
- Backbone Router (BR、骨干路由器)
- AS Boundary Router (ASBR、自治系统边界路由器)
相关指令
用户视图
调试模式
terminal debugging
调试 OSPF 包
debugging ospf packet
系统视图
指定一条静态路由
# ip route-static 目标网段 {子网掩码/掩码长度} 出口 [参数]
ip route-static 0.0.0.0 0 g0/0/1
查看路由表
display ip routing-table
进入 RIP 视图
# rip [1-65535]
rip
进入 OSPF 视图
# ospf [1-65535]
ospf
查看 OSPF 邻居信息
display ospf peer
查看 LSDB 数据库
display ospf lsdb
查看 OSPF 路由
display ip routing-table protocol ospf
指定设备 route id
# router id IP地址
# ospf router-id IP地址
router id 1.1.1.1
接口视图
设置 OSPF 开销
# ospf cost [1-65535]
ospf cost 20
设置接口认证
# ospf authentication-mode {加密方式} [id] 密码
ospf authentication-mode md5 111 123
修改接口网络类型
# ospf network-type 网络类型
ospf network-type p2p
RIP 视图
宣告网络进入 RIP 协议
# network IP地址
network 192.168.1.0
OSPF 视图
设置 OSPF 优先级
# preference <1-255>
preference 1
指定 OSPF 带宽参考值
# bandwidth-reference [1-2147483648] # (Mbits/s)
bandwidth-reference 10000
进入区域视图
# area {id/IP地址}
area 1
区域视图
设置区域认证
# ospf authentication-mode {加密方式} [id] 密码
ospf authentication-mode md5 111 123
将网段加入区域
network 网络地址 通配符 # 通配符: 0 为一致,1 为可变
network 192.168.1.0 0.0.0.255
- 本文链接:https://gentrabbit.moe/2021/10/21/HCIA-RS-note7/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。