calico ipip&bgp性能测试
测试说明
网络一般情况下主要参考延迟、网络带宽,所以本次测试也主要测试calico不同的网络协议下,带宽和延迟的差异
测试分两阶段进行,分别测试"主机到pod"、"pod到pod"两种网络模型
测试工具选型
延迟与带宽测试:使用qperf进行测试,基于centos:7镜像重新构建qperf测试工具,在集群内部使用deployment部署多副本,使pod分别在多个node上分别,以便于测试
nginx测试方案
模式 | 网络模式 | nginx文件大小 | 响应时间(99 max) | 流量 | 并发量 | ||
---|---|---|---|---|---|---|---|
host to pod | bgp | 10K | 1.026ms, 39.649ms | 10K | 10000 | ||
host to pod | bgp | 100M | 534.611μs, 1.514ms | 100M | 100 | ||
host to pod | ipip | 10K | 1.048ms, 28.248ms | 10K | 10000 | ||
host to pod | ipip | 100M | 592.597μs, 1.858ms | 100M | 100 | ||
pod to pod | bgp | 10K | 1.037ms, 43.26ms | 10K | 10000 | ||
pod to pod | bgp | 100M | 546.812μs, 5.712ms | 100M | 100 | ||
pod to pod | ipip | 10K | 1.585ms, 108.748m | 10K | 10000 | ||
pod to pod | ipip | 100M | 573.216μs, 9.602ms | 100M | 100 |
测试命令:
/usr/local/vegeta
#vegeta命令,rate表示每秒条数;duration持续时间,0不限时,10m表示运行10分钟
echo "GET http://10.9.9.69/XXXX/static/test" | ./vegeta attack -rate=3125 -duration=10m | tee results.bin | ./vegeta report
#查看报告
./vegeta report --inputs=results.bin
kubectl run nginx-test --image=nginx:test --replicas=3 -- nginx -g 'daemon off;'
docker run --rm -i peterevans/vegeta sh -c "echo 'GET https://10.XXX.XXX.230/10k.html' | vegeta attack -rate=10000 -duration=120s | tee results.bin | vegeta report"
kubectl run vegeta --rm --attach --restart=Never --image-pull-policy=IfNotPresent --image="peterevans/vegeta" -- sh -c "echo 'GET https://10.XXX.XXX.230/10k.html' | vegeta attack -rate=10000/s -duration=120s | tee results.bin | vegeta report"
目前我们calico IPIP模式的MTU是1440字节,BGP模式的MTU是1500字节,MTU即最小传输单元,如果一个数据包的流量大于MTU值的话,需要进行切片分包,分别路由到目的IP,衡量IPIP模式与BGP模式的一个重要指标,即单个MTU传输到目的IP解封装的过程耗时。
因IPIP模式需要对数据包在源节点上进行加封装和解封装,理论上在数据传输熟虑和资源消耗,BGP模式都要优于IPIP模式,同样的数据量的等量条件下,BGP的数据包延迟及最大传输速率都明显优于IPIP,数据的优势在数据流大小为1K的时候对比更明显,因为1K约等于1个MTU,更能直观的反映出测试指标。
通过以上测试和官网资料,可以得出以下结论:
1.calico BGP模式相对于IPIP模式,约有5%网络传输速率的提升。
2.calico BGP模式相对于IPIP模式,约有10%-30%延迟的减少。
3.calico IPIP模式支持跨网段访问,BGP模式不支持跨网段访问。
4. 在nginx测试中,pod之间的小包延迟降低约33%
5. 在nginx测试中,pod之间的大包延迟降低约40%
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!