TCP/IP 2.6均衡负载

小小的一片云呀慢慢地走过来,请你们歇歇脚呀暂时停下来,山上的山花开呀我才到山上来,原来嘛你也是上山看那山花开。
小小的一阵风呀慢慢的走过来,请你们歇歇脚呀暂时停下来,海上的浪花开呀我才到海边来,
原来嘛你也爱浪花才到海边来。
------- 踏浪(沈雁)
喜欢 ~~~~
 
3.7 均分负载
上面的那种情况下(是指上一节浮动静态路由的时候),只有一条链路可用,另一条链路在闲置。
均分负载又叫负载均衡,允许路由器利用多路径的优点,在所有可用的路径上发送数据包。
 
均分负载等价和非等价的两种
等价均分负载:将流量均匀地分布到多条度量相同的路径上。
非等价均分负载:将数据包分布到度量不同的多条路径上。(代价越低,流量越大)
 
Net 文件和配置文件见 2.6 的附件
TOP
如果想实现负载均衡在前面的那个实验路由就应该这样写
Rabbit 路由
ip route 10.1.5.0 255.255.255.0 10.1.10.1
ip route 10.1.5.0 255.255.255.0 10.1.20.1
ip route 10.4.0.0 255.255.0.0 10.1.10.1
ip route 10.4.0.0 255.255.0.0 10.1.20.1
ip route 192.168.1.0 255.255.255.0 10.1.10.1
ip route 192.168.1.0 255.255.255.0 10.1.20.1
 
Piglet 路由
ip route 10.1.30.0 255.255.255.0 10.1.10.2
ip route 10.1.30.0 255.255.255.0 10.1.20.2
ip route 10.4.0.0 255.255.0.0 192.168.1.193
ip route 192.168.1.0 255.255.255.0 192.168.1.193
 
查看路由表
 
 
但是这个时候你 debug ip packet 看到的却不是你想看到的情况。他还是自从一条路上走的,并没有等价负载均衡。
debug 信息
下面解释为什么会出现这种问题
慢慢道来 ~
 
负载均衡有 2 种方式:基于目标网络和基于数据包
1、  基于目标网络和基于数据包负载均衡
基于目标网络的负载均衡是根据目标地址分配负载。
实际上是按照源目地址对进行负载均衡,所有发往特定目标地址的流量只要源地址相同都会从相同的接口出站,而不同源目地址对的流量可能会从下一个接口出站
�� ~ 文档上都这么写。但是怎么理解这句话没有人说 ~ 我要细细想下 ~ 给个例子出来 ~ 因为我实在是没有想清楚 ~
TOP 见上
我以 Pooh 源,每个地址对去查看。看好滴
要做个小小的改动配置
Pooh(config)#no ip route 10.1.0.0 255.255.0.0 192.168.1.34
Pooh(config)#ip route 10.1.0.0 255.255.0.0 192.168.1.66
 
Pooh#sh run | include ip route
ip route 10.1.0.0 255.255.0.0 192.168.1.66
ip route 10.4.0.0 255.255.0.0 192.168.1.34
ip route 192.168.1.192 255.255.255.224 192.168.1.34
 
debug 信息
这边可以看到源地址是 192.168.1.1 ,目标地址不同,他们的出接口不一样 ~ 这就基于目标网络的负载均衡了 ~
 
也可以让他不负载均衡 ~ 不管他去什么地方我都让他从一个接口出来。
做个小改动
Pooh(config)#no ip route 10.1.0.0 255.255.0.0 192.168.1.66
Pooh(config)#ip route 10.1.0.0 255.255.0.0 192.168.1.34
 
Pooh(config)#do sh run | in ip route
ip route 10.1.0.0 255.255.0.0 192.168.1.34
ip route 10.4.0.0 255.255.0.0 192.168.1.34
ip route 192.168.1.192 255.255.255.224 192.168.1.34
看呀 ~
 
 
基于数据包的负载均衡方式意味着在不同的链路上发送数据包。做个好理解
TOP 见上
我以 Rabbit 为例。看喔
Rabbit(config-if)#do sh run | in ip route
ip route 10.1.5.0 255.255.255.0 10.1.10.1
ip route 10.1.5.0 255.255.255.0 10.1.20.1
ip route 10.4.0.0 255.255.0.0 10.1.10.1
ip route 10.4.0.0 255.255.0.0 10.1.20.1
ip route 192.168.1.0 255.255.255.0 10.1.10.1
ip route 192.168.1.0 255.255.255.0 10.1.20.1
 
至于为什么要做这种配置我一会大家(这个知识点放在后面)先让大家看到效果
Rabbit(config)#no ip cef
Rabbit(config)#int s1/0
Rabbit(config-if)#no ip cef
Rabbit(config)#int s1/1
Rabbit(config-if)#no ip cef
Rabbit(config)#int s1/1
Rabbit(config-if)#no ip route-ca
Rabbit(config-if)#no ip route-cache
Rabbit(config-if)#int s1/0
Rabbit(config-if)#no ip route-ca
Rabbit(config-if)#no ip route-cache
Rabbit(config-if)#int lo0
Rabbit(config-if)#no ip cef
Rabbit(config)#no ip route-ca
Rabbit(config)#int lo0      
Rabbit(config-if)#no ip route-ca
Rabbit(config-if)#no ip route-cache
Rabbit(config-if)#
Rabbit(config-if)#end
 
 
可以看到 5 个数据包,第一包是从 S1/0 出来,第二个是从 s1/1 出来,第三个是从 S1/0 ,第四个 S1/1 ,第五个是 S1/0
 
类似于公司里面,中午去食堂吃饭,一部分从电梯走,一部分从楼梯走。
路径代价不通,呢么可能会按高低代价路径上按照代价比率进行分流。(走楼梯的人没有做电梯的多)
基于数据包的负载均衡方式可以更加均匀地分布流量
但是数据包选择不通的路径去往目标网络会引起非顺序到达。对于某些应用来说,这是不能接口的,例如 VOIP~~ 声音如果到达顺序不一样 ~ ~ 那还能听出他在说什么吗 ~~ ��
 
现在我们再来看我们一开始看到的那个问题就会发现那是基于目标网络的负载均衡。为什么他会是基于目标网络的负载均衡的 ~
再看
1、  Cisco 急速转发( CEF
Cisco 急速转发( CEF )使用的缺省负载均衡方式。
IPv4 的缺省交换模式是 CEF
CEF 的工作原理: 1 、从路由表中获取信息并把信息存储在转发信息库中( FIB FIB 中有所有的目标网络,路由表稳定的时候, FIB 不变。
2 CEF 使用一个单独的数据表 邻接关系表,为 FIB 的每个表现维护第二层转发信息
FIB 和邻接关系表在数据包转发之前就已经建立好了
数据包利用 FIB 和邻接关系表来转发
这边我们可以完全解释上面的疑问
Cisco 路由器 ipv4 情况下默认开启的是 ip cef 的功能。而 cef 的功能使用的是基于目标网络的负载均衡。所以你看到的情况是那样的
 
   查看 cef  show cef
   Show cef interface
   打开 cef
   Ip cef
   关闭 cef
   No ip cef
 
这里查找的是 FIB 绿色的
 
1、  快速交换
快速交换的工作方式
1、  当路由器为第一个去往特定目标的数据包进行交换处理时,路由器查 RT RT= 路由表)
2、  获取备选接口的数据链路信息( ARP 表),成帧,封装,转发
3、  路由和链路信息放入高速缓存中
4、  以后有去往相同目标地址的时候他直接使用高速缓存
快速交换去往相同目标地址用的一定是相同的接口,所以是基于目标的负载均衡,
 
5、  过程交换
对于每个数据包,路由器都要进行路由表查询和接口选择,然后在查询数据链路信息。因为每一次为数据包确定路由的过程都是相互独立的。他的接口不一定相同。
过程交换用的是基于数据包的负载均衡
打开过程交换的命令
no ip route-cache
 
你看这个地方查找的是 RIB 绿色的标记
 
 
IOS 根据入站和出站接口的配置确定交换方式
IPV4
入站配置
出站配置
所使用的交换方法
CEF
CEF
CEF
CEF
快速
CEF
过程
CEF
快速
过程
快速
快速
快速
CEF
快速
快速
过程
过程
 

你可能感兴趣的:(负载均衡,休闲,CEF,快速交换,进程交换)