ecmp观察

简述

ECMP(Equal Cost Multi Path)等价多路径,又称等价路由。指到达同一个目的IP或者目的网段存在多条COST值相等的不同路由路径。在具有多条到达同一目的地的网络链路的环境中,传统路由技术只能利用其中一条链路发送数据包,其他链路处于备用或无效状态。在动态路由环境下,切换需要时间。相比之下,等价多路径路由协议可以同时利用多条链路,提高传输带宽,且能够无延迟、无丢包地备份失效链路的数据传输。

选路策略

ECMP的路径选择策略有多种方法:

  1. 哈希,例如根据源IP地址的哈希为流选择路径。
  2. 轮询,各个流在多条路径之间轮询传输。
  3. 加权轮询,基于路径权重,根据路径的权重分配流,权重大的路径分配的流数量更多。

实验说明

Linux上实验ECMP(https://cloud.tencent.com/developer/article/1449969?from=15425),使用内核的ecmp进行路由的hash选路,在该情况下,ECMP会使用哈希算法进行选路:根据数据包的源IP、目的IP、源端口、目的端口计算出一个哈希值,然后再使用这个哈希值取余进行路由选路。

开始验证

  1. 生成3对veth(veth1~6)对和一个bridge(br0),其中veth1和veth3用于路由选路,veth5充当观察口,br0用于二层交换

    ip link add veth1 type veth peer veth2
    ip link add veth3 type veth peer veth4
    ip link add veth5 type veth peer veth6
    brctl addbr br0
    
  2. .将veth2、veth4、veth6加到br0中,让veth1、veth3、veth5之间二层互通

    brctl addif br0 veth2
    brctl addif br0 veth4
    brctl addif br0 veth6
    
  3. 配置veth1和veth3的IP

    ip address add 172.16.1.11/32 dev veth1
    ip address add 172.16.1.13/32 dev veth3
    
  4. up所有虚拟设备

    ip link set veth1 up
    ip link set veth2 up
    ip link set veth3 up
    ip link set veth4 up
    ip link set veth5 up
    ip link set veth6 up
    ip link set br0 up
    
  5. 配置到192.168.2.0/24网段的等价路由,weight权重必须相同

    ip route add 192.168.2.0/24 nexthop via 172.16.1.11 dev veth1 weight 1 nexthop via 172.16.1.13 dev veth3 weight 1
    ip route show
    

    在这里插入图片描述

  6. 给veth1和veth3上手动配置arp,这样能让报文能到veth

    for ((i = 0; i < 100; i++)); do arp -i veth1 -s 192.168.2.$i `cat /sys/class/net/veth5/address`;arp -i veth3 -s 192.168.2.$i `cat /sys/class/net/veth5/address`; done
    

    以上指令执行结束后,可以用ip n|grep veth1或ip n|grep veth3检查确认,是否成功配置

  7. ping目标网段,1s一个

    for ((i = 0; i < 100; i++)); do ping -c 1 -W 1 192.168.2.$i; done
    
  8. 对veth5进行抓包,观察报文是来自veth1还是veth3

    tcpdump -i veth5 -nn
    

    veth5的抓包结果如下,可以看到,发往192.168.2.0/24网段的报文,被veth1和veth3均等的进行了路由,根据目的IP的不同进行了哈希选路。
    在这里插入图片描述

  9. 删除相关设备,与之关联的路由表和arp表都会自动删除

    ip link set veth1 down
    ip link set veth2 down
    ip link set veth3 down
    ip link set veth4 down
    ip link set veth5 down
    ip link set veth6 down
    ip link set br0 down
    ip link del veth1
    ip link del veth3
    ip link del veth5
    brctl delbr br0
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值