数据的负载分担方式有很多种,可以基于链路的负载,也可以使用路由来实现负载。其中静态路由是最为简单,也最常用的一种方式。
负载分担又分为两种:
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