Container网络性能比较:bridge+NAT方案与macvlan方案 (1) 性能测试系统配置

一、前言

docker container的原生网络解决方案是bridge+NAT,而借助pipework这类工具,可以为container快速配置macvlan网络。本文利用HLS格式多媒体流对这两个方案的网络数据转发性能进行测试。

相关的系统参数如下:

  • 物理机配置:128GB内存,CPU(Processor Sockets 2, Processor Cores per Socket 12, Hyper-threading enabled, Logical Processors 48),10Gbps双工网卡
  • 操作系统:CentOS 7, kernel version 3.10.0 x86_64
  • Docker版本:1.12.1

相关的应用程序的参数如下:

  • 基于HLS VOD的多媒体流,单个片段长度10秒
  • 多媒体流提供四个不同码率
  • 使用Apache TrafficServer推送这些多媒体流,无cache hit
  • 客户端使用Spirnet进行模拟,每个Spirent端口为10Gbps能力

转载自https://blog.csdn.net/cloudvtech



二、上游配置

要充份测试container的性能,必须保证container的上游不存在任何性能瓶颈。这里上游使用Nginx作为HLS TS的数据源,使用nginx的配置来保证客户端Sprient请求的all unique的媒体片段在nginx上只需一份copy并且可以cache hit,避免上游瓶颈,从而达到测试中间ATS container性能的目的:

nginx.conf

        location / {

             index index.html;

             rewrite ^/(.*)/avod([0-9]+)/(.*)$  /$1/vod1/$3 break;

        }

同时需要对运行Nginx的操作系统进行如下配置:

  • 关闭防火墙:systemctl stop iptables 和 systemctl disable iptables 
  • 扩充Nginx可支配资源:

vi /etc/security/limits.conf

* soft nofile 100000
* hard nofile 100000
nginx       soft    nofile  100000
nginx       hard    nofile  100000
vi /etc/sysctl.conf
fs.file-max = 1000000

vi /etc/sysconfig/nginx
NGINX_ULIMIT="-n 100000"

vi /usr/lib/systemd/system/nginx.service 
[Service]
LimitNOFILE=100000

verify
ps -ef |grep nginx
cat /proc/XXX/limits

ulimit -n 

并且需要建立四个同样配置的NginxVM并在前段使用IPVS进行负载均衡。

转载自https://blog.csdn.net/cloudvtech



三、下游配置

ATS container的下游是Spirent。Spirnet是支持HLS协议的,只要在配置的时候选用对应的模版即可。但是为了尽量模拟现实访问情况,需要将不同比特率的HLS流的访问由不同的Spirent端口进行访问,并且每次访问都保证是unique的不会导致ATS的cache hit:

Action 1:
#nodivide
#URL
ASSIGN VARIABLE 
#1000 channels
ASSIGN VARIABLE 
ASSIGN VARIABLE 
#bitrate m3u8
ASSIGN VARIABLE 
ASSIGN VARIABLE 
as:// PROFILE="hls_live" 

Action 2:

#nodivide
#URL
ASSIGN VARIABLE 
#1000 channels
ASSIGN VARIABLE 
ASSIGN VARIABLE 
#bitrate m3u8
ASSIGN VARIABLE 
ASSIGN VARIABLE 
as:// PROFILE="hls_live" 

最后将所有的action组合成一个load profile:

Container网络性能比较:bridge+NAT方案与macvlan方案 (1) 性能测试系统配置_第1张图片

转载自https://blog.csdn.net/cloudvtech



四、container宿主机配置

1.宿主机网卡配置

由于宿主机是baremetal,所以可以使用网卡管理配置工具为网卡配置更多的TX和RX队列,占用更多的CPU进行soft IRQ处理。

Container网络性能比较:bridge+NAT方案与macvlan方案 (1) 性能测试系统配置_第2张图片

当然,宿主机的微调涉及到中断平衡、NUMA本地cache访问、TCP协议栈参数、IRQ亲和、超线程、网卡硬件的设置(例如RSS、offloading等)等众多方面,需要一一进行测试和调整。

未经IRQ队列调整的情况下,如果只有一个CPU core去处理网卡的IRQ,就会出现如下的性能瓶颈:

网络吞吐量存在巨大波动

Container网络性能比较:bridge+NAT方案与macvlan方案 (1) 性能测试系统配置_第3张图片

但是整个系统只有一个CPU core满载

Container网络性能比较:bridge+NAT方案与macvlan方案 (1) 性能测试系统配置_第4张图片

2.container配置

对于bridge+NAT的方案,直接使用docker自带的设置即可,建立四个运行ATS的container。

对于macvlan的方案,使用docker运行四个不带网络的ATS container,然后使用pipework配置macvlan和网络IP。


转载自https://blog.csdn.net/cloudvtech









你可能感兴趣的:(container,容器网络,网络,性能测试)