数据的负载分担方式有很多种,可以基于链路的负载,也可以使用路由来实现负载。其中静态路由是最为简单,也最常用的一种方式。

负载分担又分为两种:
1.逐流负载
2.逐包负载

逐流负载是按照五元组来确定一条数据流,一条数据流会按照一条链路来转发,来回路径一致。如图:client1访问client2时的数据走的是R1-R3之间的链路。

逐包负载是按照每个数据包来转发,一条流有很多包,每个包都会分别跑在不通的链路上最终到达目的地。如图:client1访问client2时的数据包可能两个走R1-R3到之间的链路,三个走R1-R2之间的链路。

上述两种方式使用抓包的形式就可以看得很清楚。

但是在实验过程中遇到了一个比较奇怪的问题:
当三个路由器之间的静态路由成环的时候,改为逐包负载的分担方式竟然可以打破环路,正常访问,简直 太 狗血了。

至于这个问题到底是模拟器BUG,还是其他原因还未核实,有兴趣的可以模拟一把看一下。

静态路由环路的关键配置如下:

R1:

GigabitEthernet0/0/0              10.0.12.1/24         up         up        
GigabitEthernet0/0/1              10.0.13.1/24         up         up        
ip route-static 0.0.0.0 0.0.0.0 10.0.12.2
ip route-static 0.0.0.0 0.0.0.0 10.0.13.3

R2:

GigabitEthernet0/0/0              10.0.23.2/24         up         up        
GigabitEthernet0/0/1              10.0.12.2/24         up         up        
ip route-static 0.0.0.0 0.0.0.0 10.0.12.1
ip route-static 0.0.0.0 0.0.0.0 10.0.23.3

R3:

GigabitEthernet0/0/0              10.0.23.3/24         up         up        
GigabitEthernet0/0/1              10.0.13.3/24         up         up    
ip route-static 0.0.0.0 0.0.0.0 10.0.23.2
ip route-static 0.0.0.0 0.0.0.0 10.0.13.1