在一个 IP 网络中,路由(Routing)是个非常基本的概念。网络的基本功能是使得处于网络中的两个 IP 节点能够进行通信,而通信实际上就是数据交互的过程,数据交互则需要网络设备帮助我们来将数据在两通信节点之间传输。当路由器(或者其他三层设备)收到一个 IP 数据包,路由器会找出 IP 包三层头中的目的 IP 地址,然后拿着目的 IP 地址到自己的路由表中进行查找,找到 "最匹配" 的条目后,将数据包根据路由条目所指示的出接口或下一跳 IP 转发出去,如果没有任何 "匹配" 表项,那就继续看有没有默认路由,如果也没有默认路由,这个数据包就会被丢弃,并向这个数据包的起源发送 ICMP 报错消息,这就是 IP 路由(Routing)。
而每台路由器都会在本地维护一个路由表(Routing Table),路由表中装载着路由器获知的路由条目(Routes),路由条目由路由前缀(路有所关联的目的地)、路由信息来源、出接口或下一跳 IP 等元素构成。路由器通过静态的或者动态的方式获取路由条目并维护自己的路由表。
任何一台具有三层功能的设备都有路由表。每个条目都指向着一个目的地。
一个路由器能够正常工作,大前提就是路由表是稳定的,而且要知道到达网络各个角落的路标,所以路由表是路由器正常工作的非常根本的东西。路由表有很多行(Rows),每行标识一个表项或一条路由,路由表至少有三样东西,分别是目标网络号,路由信息的来源,出站接口。
初始情况下路由器只知道直连网段的信息,这个接口的物理状态和协议状态都是 UP,才会被写入路由表中,路由信息来源标记为 Direct。如果物理状态和协议状态其中一个为 down,那就无法写入路由表中,即使之前写入路由表中也会被擦除。
在华为设备上,可以使用display ip routing-table命令查看路由表,下面是一个典型的路由表输出:
Route Flags: R - relay, D - download to fib
Routing Tables: Public
Destinations :7 Routes :7
Destination/Mask Proto Pre Cost Flags NextHop Interface
0.0.0.0/0 Static 60 0 RD 10.1.12.2 Vlanif10
10.1.12.0/24 Direct 0 0 D 10.1.12.1 Vlanif10
10.1.12.1/32 Direct 0 0 D 127.0.0.1 Vlanif10
10.1.12.255/32 Direct 0 0 D 127.0.0.1 Vlanif10
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
各字段含义如下:
路由器可以通过多种途径获知路由条目。当路由器从两种不同的途径获知去往同一个目的地且下一跳不相同的路由时,路由器首先会比较这两条路由的优先级,优选 Pre 值小的路由。如果 Pre 值相等,例如是同种路由协议,则进一步比较开销值。
下面是常见路由协议或路由种类对应的默认优先级:
路由协议或路由种类 |
相应路由的优先级 |
DIRECT(直连路由) |
0 |
OSPF |
10 |
IS-IS |
15 |
STATIC(静态路由) |
60 |
RIP |
100 |
OSPF ASE |
150 |
OSPF NSSA |
150 |
IBGP |
255 |
EBGP |
255 |
IP 层进行的选路实际上是一种选路机制,它搜索路由表并决定向哪个网络接口发送分组。这区别于选路策略,它只是一组决定把哪些路由放入路由表的规则。IP 执行选路机制,而路由守护程序则一般提供选路策略。
IP 选路的基本步骤如下:
IP 模块实现数据报路由的核心数据结构是路由表。这个表依照数据报的目标 IP 地址分类,同一类型的 IP 数据报将被发往同样的下一跳路由器。
当 IP 数据报应该被发送到另一个路由器时,收到数据报的路由器就要发送 ICMP 重定向差错报文给 IP 数据报的发送端。重定向一般用来让具有很少选路信息的主机逐渐建立更完善的路由表。主机启动时路由表中可以只有一个默认表项。一旦默认路由发生差错,默认路由器将通知它进行重定向,并允许主机对路由表作相应的改动。ICMP 重定向允许 TCP/IP 主机在进行选路时不需要具备智能特性,而把所有的智能特性放在路由器端。
静态路由是由网络管理员手动配置的路由条目,不需要路由器之间交换路由信息。静态路由的优点是配置简单、可控性高、不消耗带宽;缺点是灵活性差,当网络拓扑变化时需要手动调整。
# 配置到达10.1.1.0/24网段的静态路由,下一跳为10.1.4.1
[Huawei] ip route-static 10.1.1.0 255.255.255.0 10.1.4.1
# 配置缺省静态路由,下一跳为10.1.4.2
[Huawei] ip route-static 0.0.0.0 0.0.0.0 10.1.4.2
# 配置到达10.10.12.0/24网段的静态路由,下一跳为10.10.10.2
RouterA(config)# ip route 10.10.12.0 255.255.255.0 10.10.10.2
# 配置缺省静态路由,下一跳为10.10.10.2
RouterA(config)# ip route 0.0.0.0 0.0.0.0 10.10.10.2
# 配置到达10.1.1.0/24网段的静态路由,下一跳为10.1.4.1
[H3C] ip route-static 10.1.1.0 24 10.1.4.1
# 配置缺省静态路由,下一跳为10.1.4.2
[H3C] ip route-static 0.0.0.0 0 10.1.4.2
浮动静态路由是一种特殊的静态路由,通过设置不同的优先级来实现备份功能。当主路由失效时,备份路由会自动生效。
# 主用静态路由,优先级为默认60
[Huawei] ip route-static 10.1.1.0 255.255.255.0 10.1.4.1
# 备用静态路由,优先级设为70(高于主用路由的60)
[Huawei] ip route-static 10.1.1.0 255.255.255.0 10.1.4.6 preference 70
# 主用静态路由
RouterA(config)# ip route 10.10.12.0 255.255.255.0 10.10.10.2
# 备用静态路由,管理距离设为120(高于主用路由的1)
RouterA(config)# ip route 10.10.12.0 255.255.255.0 10.10.10.6 120
静态路由配置中常见的问题包括网关配置错误、下一跳不可达、路由表未正确更新等。以下是一些常见故障排除方法:
案例:网关配置错误导致网络不通
在某网络拓扑中,用户在配置静态路由时遇到以下问题:
解决方案:
# 配置正确的网关
ip route 10.10.4.0 255.255.255.0 40.254
RIP(Routing Information Protocol)是一种基于距离矢量(Distance Vector)算法的协议,以跳数(被传送数据所经过路由器的个数)为度量来衡量到达目标网络的距离,属于 IGP(内部网关协议)协议,有 RIP1 和 RIP2 两个版本,基于 UDP 协议,端口号为 520,主要用于小型网络。
RIP 的主要特点:
RIP 版本 1 和版本 2 的区别:
# 进入系统视图
system-view
# 配置RIP进程1,版本2
[Huawei] rip 1
[Huawei-rip-1] version 2
# 宣告网络
[Huawei-rip-1] network 192.168.1.0
[Huawei-rip-1] network 10.0.0.0
# 退出RIP配置视图
[Huawei-rip-1] quit
# 进入全局配置模式
RouterA(config)# router rip
# 设置RIP版本2
RouterA(config-router)# version 2
# 关闭自动汇总
RouterA(config-router)# no auto-summary
# 宣告网络
RouterA(config-router)# network 192.168.1.0
RouterA(config-router)# network 10.0.0.0
# 进入系统视图
system-view
# 配置RIP进程1,版本2
[H3C] rip 1
[H3C-rip-1] version 2
# 宣告网络
[H3C-rip-1] network 192.168.1.0
[H3C-rip-1] network 10.0.0.0
# 退出RIP配置视图
[H3C-rip-1] quit
RIP 认证可以增强网络安全性,防止非法设备发送虚假路由信息。
# 在接口上配置RIP认证
[Huawei] interface GigabitEthernet0/0/0
[Huawei-GigabitEthernet0/0/0] rip authentication-mode md5 rfc2453 plain 123123
# 定义密钥链
RouterA(config)# key chain RIP-KEY
RouterA(config-keychain)# key 1
RouterA(config-keychain-key)# key-string 123456
# 在接口上应用密钥链
RouterA(config)# interface GigabitEthernet0/0/0
RouterA(config-if)# ip rip authentication mode md5
RouterA(config-if)# ip rip authentication key-chain RIP-KEY
RIP 配置中常见的问题包括邻居关系建立失败、路由环路、路由表未正确更新等。以下是一些常见故障排除方法:
案例:RIP 邻居无法建立
在某网络拓扑中,两台路由器配置 RIP 后无法建立邻居关系。经过检查发现:
解决方案:
# 将两台路由器都配置为RIP版本2
[Huawei] rip 1
[Huawei-rip-1] version 2
[Huawei] interface GigabitEthernet0/0/0
[Huawei-GigabitEthernet0/0/0] rip version 2
OSPF(Open Shortest Path First)是一种基于链路状态(Link State)算法的协议,属于 IGP 协议,适用于中大型网络。OSPF 使用 SPF(Shortest Path First)算法计算最短路径树,以开销(Cost)作为度量值。
OSPF 的主要特点:
OSPF 路由器角色:
# 进入系统视图
system-view
# 配置OSPF进程1,Router ID为1.1.1.1
[Huawei] ospf 1 router-id 1.1.1.1
# 进入区域0配置
[Huawei-ospf-1] area 0.0.0.0
# 宣告网络192.168.1.0/24属于区域0
[Huawei-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
# 退出OSPF配置视图
[Huawei-ospf-1-area-0.0.0.0] quit
[Huawei-ospf-1] quit
# 进入全局配置模式
RouterA(config)# router ospf 1
# 设置Router ID
RouterA(config-router)# router-id 1.1.1.1
# 宣告网络192.168.1.0/24属于区域0
RouterA(config-router)# network 192.168.1.0 0.0.0.255 area 0
# 进入系统视图
system-view
# 配置OSPF进程1,Router ID为1.1.1.1
[H3C] ospf 1 router-id 1.1.1.1
# 进入区域0配置
[H3C-ospf-1] area 0.0.0.0
# 宣告网络192.168.1.0/24属于区域0
[H3C-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
# 退出OSPF配置视图
[H3C-ospf-1-area-0.0.0.0] quit
[H3C-ospf-1] quit
OSPF 通过区域划分来管理大型网络,将网络分为骨干区域(Area 0)和非骨干区域。以下是区域配置的示例:
# 配置区域1为普通区域
[Huawei] ospf 1
[Huawei-ospf-1] area 1
[Huawei-ospf-1-area-1] network 192.168.2.0 0.0.0.255
# 配置区域2为Stub区域
[Huawei] ospf 1
[Huawei-ospf-1] area 2
[Huawei-ospf-1-area-2] stub
# 配置区域3为完全Stub区域
[Huawei] ospf 1
[Huawei-ospf-1] area 3
[Huawei-ospf-1-area-3] stub no-summary
# 配置区域4为NSSA区域
[Huawei] ospf 1
[Huawei-ospf-1] area 4
[Huawei-ospf-1-area-4] nssa
# 配置区域5为完全NSSA区域
[Huawei] ospf 1
[Huawei-ospf-1] area 5
[Huawei-ospf-1-area-5] nssa no-summary
OSPF 支持多种认证方式,包括明文认证、MD5 认证等。以下是认证配置的示例:
# 配置区域0使用MD5认证
[Huawei] ospf 1
[Huawei-ospf-1] area 0.0.0.0
[Huawei-ospf-1-area-0.0.0.0] authentication-mode md5 1 cipher Huawei@123
# 配置接口GigabitEthernet0/0/0使用MD5认证
[Huawei] interface GigabitEthernet0/0/0
[Huawei-GigabitEthernet0/0/0] ospf authentication-mode md5 1 cipher Huawei@123
OSPF 配置中常见的问题包括邻居关系无法建立、区域配置错误、DR/BDR 选举异常等。以下是一些常见故障排除方法:
案例:OSPF 邻居无法建立
在某网络拓扑中,两台路由器配置 OSPF 后无法建立邻居关系。经过检查发现:
解决方案:
# 将两台路由器都配置为区域0
[Huawei] ospf 1
[Huawei-ospf-1] area 0.0.0.0
[Huawei-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
BGP(Border Gateway Protocol)是一种基于路径矢量(Path Vector)算法的协议,属于 EGP(External Gateway Protocol)协议,用于在不同自治系统(AS)之间交换路由信息。BGP 使用 AS 路径(AS Path)作为主要的路由选择依据。
BGP 的主要特点:
BGP 邻居类型:
# 进入系统视图
system-view
# 配置BGP进程,AS号为65001
[Huawei] bgp 65001
# 配置Router ID
[Huawei-bgp] router-id 1.1.1.1
# 配置EBGP邻居
[Huawei-bgp] peer 192.168.1.2 as-number 65002
# 配置IBGP邻居
[Huawei-bgp] peer 10.0.0.2 as-number 65001
# 进入IPv4单播地址族视图
[Huawei-bgp] ipv4-family unicast
# 使能与邻居交换IPv4单播路由信息的能力
[Huawei-bgp-af-ipv4] peer 192.168.1.2 enable
[Huawei-bgp-af-ipv4] peer 10.0.0.2 enable
# 发布网络
[Huawei-bgp-af-ipv4] network 192.168.1.0 255.255.255.0
# 进入全局配置模式
RouterA(config)# router bgp 65001
# 配置Router ID
RouterA(config-router)# bgp router-id 1.1.1.1
# 配置EBGP邻居
RouterA(config-router)# neighbor 192.168.1.2 remote-as 65002
# 配置IBGP邻居
RouterA(config-router)# neighbor 10.0.0.2 remote-as 65001
# 进入IPv4单播地址族视图
RouterA(config-router)# address-family ipv4
# 使能与邻居交换IPv4单播路由信息的能力
RouterA(config-router-af)# neighbor 192.168.1.2 activate
RouterA(config-router-af)# neighbor 10.0.0.2 activate
# 发布网络
RouterA(config-router-af)# network 192.168.1.0 mask 255.255.255.0
BGP 提供多种路由属性用于路由选择和过滤。以下是一些常见路由属性的配置示例:
# 配置AS_PATH属性
[Huawei] ip as-path-filter 1 permit ^65002$
# 配置路由策略,设置本地优先级为200
[Huawei] route-policy LOCAL_PREF permit node 10
[Huawei-route-policy] if-match as-path-filter 1
[Huawei-route-policy] apply local-preference 200
# 应用路由策略
[Huawei] bgp 65001
[Huawei-bgp] ipv4-family unicast
[Huawei-bgp-af-ipv4] peer 192.168.1.2 route-policy LOCAL_PREF import
# 配置AS_PATH访问列表
RouterA(config)# ip as-path access-list 1 permit ^65002$
# 配置路由映射,设置本地优先级为200
RouterA(config)# route-map LOCAL_PREF permit 10
RouterA(config-route-map)# match as-path 1
RouterA(config-route-map)# set local-preference 200
# 应用路由映射
RouterA(config)# router bgp 65001
RouterA(config-router)# address-family ipv4
RouterA(config-router-af)# neighbor 192.168.1.2 route-map LOCAL_PREF in
BGP 配置中常见的问题包括邻居关系无法建立、路由传递异常、路由选择不当等。以下是一些常见故障排除方法:
案例:BGP 邻居无法建立
在某网络拓扑中,两台路由器配置 BGP 后无法建立邻居关系。经过检查发现:
解决方案:
# 修正BGP邻居的AS号配置
[Huawei] bgp 65002
[Huawei-bgp] peer 192.168.1.2 as-number 65001
IPv6 静态路由的配置方法与 IPv4 类似,但语法有所不同。以下是 IPv6 静态路由的配置示例:
# 配置到达2001:db8::/32的静态路由,下一跳为2001:db8:1::2
[Huawei] ipv6 route-static 2001:db8::/32 2001:db8:1::2
# 配置缺省静态路由,下一跳为2001:db8:1::2
[Huawei] ipv6 route-static ::/0 2001:db8:1::2
# 配置到达2001:db8::/32的静态路由,下一跳为2001:db8:1::2
RouterA(config)# ipv6 route 2001:db8::/32 2001:db8:1::2
# 配置缺省静态路由,下一跳为2001:db8:1::2
RouterA(config)# ipv6 route ::/0 2001:db8:1::2
RIPng 是 RIP 协议的 IPv6 版本,用于在 IPv6 网络中动态交换路由信息。以下是 RIPng 的配置示例:
# 进入系统视图
system-view
# 配置RIPng进程1
[Huawei] ripng 1
# 使能接口GigabitEthernet0/0/0的RIPng
[Huawei] interface GigabitEthernet0/0/0
[Huawei-GigabitEthernet0/0/0] ripng 1 enable
# 使能接口GigabitEthernet0/0/1的RIPng
[Huawei] interface GigabitEthernet0/0/1
[Huawei-GigabitEthernet0/0/1] ripng 1 enable
# 进入全局配置模式
RouterA(config)# ipv6 router rip RIPNG
# 使能接口GigabitEthernet0/0/0的RIPng
RouterA(config)# interface GigabitEthernet0/0/0
RouterA(config-if)# ipv6 rip RIPNG enable
# 使能接口GigabitEthernet0/0/1的RIPng
RouterA(config)# interface GigabitEthernet0/0/1
RouterA(config-if)# ipv6 rip RIPNG enable
OSPFv3 是 OSPF 协议的 IPv6 版本,用于在 IPv6 网络中动态交换路由信息。以下是 OSPFv3 的配置示例:
# 进入系统视图
system-view
# 配置OSPFv3进程1,Router ID为1.1.1.1
[Huawei] ospfv3 1 router-id 1.1.1.1
# 进入区域0配置
[Huawei-ospfv3-1] area 0.0.0.0
# 使能接口GigabitEthernet0/0/0的OSPFv3
[Huawei] interface GigabitEthernet0/0/0
[Huawei-GigabitEthernet0/0/0] ospfv3 1 area 0.0.0.0
# 使能接口GigabitEthernet0/0/1的OSPFv3
[Huawei] interface GigabitEthernet0/0/1
[Huawei-GigabitEthernet0/0/1] ospfv3 1 area 0.0.0.0
# 进入全局配置模式
RouterA(config)# ipv6 router ospf 1
# 设置Router ID
RouterA(config-router)# router-id 1.1.1.1
# 使能接口GigabitEthernet0/0/0的OSPFv3
RouterA(config)# interface GigabitEthernet0/0/0
RouterA(config-if)# ipv6 ospf 1 area 0
# 使能接口GigabitEthernet0/0/1的OSPFv3
RouterA(config)# interface GigabitEthernet0/0/1
RouterA(config-if)# ipv6 ospf 1 area 0
BGP4 + 是 BGP 协议的 IPv6 版本,用于在 IPv6 网络中动态交换路由信息。以下是 BGP4 + 的配置示例:
# 进入系统视图
system-view
# 配置BGP进程,AS号为65001
[Huawei] bgp 65001
# 配置Router ID
[Huawei-bgp] router-id 1.1.1.1
# 配置EBGP邻居
[Huawei-bgp] peer 2001:db8:1::2 as-number 65002
# 进入IPv6单播地址族视图
[Huawei-bgp] ipv6-family unicast
# 使能与邻居交换IPv6单播路由信息的能力
[Huawei-bgp-af-ipv6] peer 2001:db8:1::2 enable
# 发布网络
[Huawei-bgp-af-ipv6] network 2001:db8::/32
# 进入全局配置模式
RouterA(config)# router bgp 65001
# 配置Router ID
RouterA(config-router)# bgp router-id 1.1.1.1
# 配置EBGP邻居
RouterA(config-router)# neighbor 2001:db8:1::2 remote-as 65002
# 进入IPv6单播地址族视图
RouterA(config-router)# address-family ipv6
# 使能与邻居交换IPv6单播路由信息的能力
RouterA(config-router-af)# neighbor 2001:db8:1::2 activate
# 发布网络
RouterA(config-router-af)# network 2001:db8::/32
根据网络规模和需求,选择合适的路由协议:
通过本文的学习,你应该对 IP 选路基础、静态路由、RIP、OSPF、BGP 等路由协议有了全面的了解,并掌握了基本的配置和故障排除方法。在实际应用中,需要根据网络规模和需求选择合适的路由协议,并遵循最佳实践进行配置和维护,以确保网络的稳定可靠运行。