均分负责(Load Sharing),又称负载均衡,允许路由器利用多路径的优点,在所有可用的路径上发送数据包
均分负责分为等价与非等价
- 等价均分负载(Equal-Cost Load Sharing)
将流量均匀分布到多条度量相同的路径上。这种情况下称为负责均衡 - 非等价均分负载(Unequal-Cost Load Sharing)
将数据包分布到度量不同的多条路径上。各条路径上分布的流量与路由代价成反比。
一些路由选择协议可以支持等价和非等价负载均衡两种方式,而其他一些路由选择协议仅支持等价方式。
负载均衡有两种方式
- 基于目标网络
- 基于数据包
1.负载均衡和Cisco急速转发
基于目标网络的负载均衡是根据目标地址分配负载。
假设到一个网络存在两条路径,那么发往该网络中第一个目标的数据包从第一条路径通过,发往网络第二个目标的数据包通过第二条路径,发往网络的第三个目标的数据包通过第一条路径,以此类推。这就是Cisco急速转发(CEF)使用的缺省负载均衡方式。
在大部分平台上,IPv4的缺省交换模式是CEF,但IPv6不是。
CEF是一种非常有效的交换方法,它事先从路由表中获取信息并把信息存储在转发信息库(FIB)中,当任何数据包需要这些信息时可以立即使用。
FIB包括路由表中所有目标网络,如果路由表稳定不发生改变,那么FIB也不会变化
CEF使用一个单独的数据表——邻接关系表,为FIB的每个表项维护二层转发信息
CEF在缺省情况下是基于目标进行负载均衡,实际上是按照源目地址对进行负载均衡。所有发往特定目标地址的流量只要源地址相同都会从相同的接口出站,而不同源目地址对的流量可能会从下一个接口出站。
基于数据包的负载均衡是交换IPv4数据包的另一种方式。对于IPv6,CEF仅支持基于目标网络的负载均衡方式。
基于数据包的负载均衡方式意味着在不同的链路上发送数据包,即使在路径等代价、目标相同的情况下也是这样。如果路径代价不同,那么可能会在高、低代价链路上按照代价比例进行分流。基于数据包的负载均衡方式可以更加均匀地分布流量,但是数据包选择不同的路径去往目标网络会引起非顺序到达。
可以使用命令show ip cef和show ipv6 cef来确定CEF功能是否被打开
使用ip cef和ipv6 cef打开CEF功能
在IPv4下,ip load-sharing per-packet命令可以打开基于数据包的负载均衡功能,ip load-sharing per-destination命令可以打开基于目标地址的负载均衡
路由器通常根据入站接口和源与目的地址类型确定是否使用CEF交换
对于考虑使用CEF的路由器来说,出站接口必须配置为CEF交换模式,如果接口上配置了CEF那么CEF将尝试交换数据包,否则,CEF将会吧数据包交付给仅次于最好的可用方式去处理。
2.基于目标网络的负载均衡和快速交换
在配置了快速交换的出站接口上执行基于目标网络的负载均衡
快速交换工作方式
- 当路由器为第一个去往特定目标的数据包 进行交换处理时,路由器将执行路由表查询并选择出站接口
- 获取有关被选接口的数据链路信息,封装数据包并发送
- 将之前获取的路由和数据链路信息被输入到快速交换的高速缓冲内
- 一旦去往相同目的地的后继数据包进入路由器,高速缓冲中的信息使路由器不必查找路由表和ARP高速缓冲,立即交换数据包
快速交换意味着所有去往指定目的地的数据包都从相同的接口被转发出去,因此交换时间和处理器的占用率会大大降低。
当去往相同网路内不同主机的数据包进入路由器且还存在一条可选路由时,路由器会在另一条路径上发送数据包到目的地。
因此路由器能够做到最好的就是基于目标网络的负载均衡。
3.基于数据包的负载均衡和过程交换
过程交换(process switching)就是对于每个数据包,路由器都要进行路由表查询和接口选择,然后再查询数据链路信息
每次为数据包确定路由的过程都是相互独立的,所以不会强制去往相同目标网络的所有数据包都使用相同的接口
IPv6下,缺省情况下过程交换功能是打开的
IPv4下,需要使用命令no ip route-cache打开
基于数据包的负载均衡虽然使流量的分布比前一种方式更均匀,但是快速交换较低交换时间和处理器占用低的优点也会丧失