Container网络性能比较:bridge+NAT方案与macvlan方案 (2) 性能测试结果分析

一、前言

在测试过程中,对于HLS流媒体服务,最重要的衡量量是并发用户数、延时和吞吐量。要追求的优良的性能是指能在一定数目的并发用户情况下,在应用可接受的时延内,达到一定的数据吞吐量。过多的并发用户会导致时延的指数级上升,虽然此时吞吐量未必会下降,但不是一个可以接受的结果。


在测试过程中,Spirent作为模拟客户端,跟标准的客户端player还略有不同,标准客户端在获取HLS的片段的时候,会集中一段时间拿若干片段(初始缓冲),然后停止一下(在到达缓冲阈值前),继续缓冲;而Spirent模拟客户端会尽力快速获取一个片段然后紧接着发出新的下一片段请求,这种方式将会最大限度的考验container的网络能力。


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



二、数据流分析

bridge+NAT方式:

  1. 请求从客户端过来之后进入主机网卡
  2. 在主机的网络协议栈进行NAT操作、端口转换和bridge交换
  3. 从内核copy到用户进程空间,进入container内部
  4. ATS进行请求处理
  5. ATS根据请求内容向上游Nginx请求所需片段
  6. ATS发出的请求从用户进程空间copy到内核,进入主机网络协议栈
  7. 在主机的网络协议栈进行NAT操作、端口转换和bridge交换
  8. 主机网卡向上游发出请求
  9. Nginx返回的请求片段进入主机网卡
  10. 在主机的网络协议栈进行NAT操作、端口转换和bridge交换
  11. 从内核copy到用户进程空间,进入container内部
  12. ATS进行处理
  13. ATS向客户端发回请求的数据
  14. ATS返回的数据从用户进程空间copy到内核,进入主机网络协议栈
  15. 在主机的网络协议栈进行NAT操作、端口转换和bridge交换
  16. 数据从主机网卡向客户端返回

macvlan方式:

  1. 请求从客户端过来之后进入主机网卡
  2. 在主机的网络协议栈进行基于mac地址的数据包路由选择
  3. 从内核copy到用户进程空间,进入container内部
  4. ATS进行请求处理
  5. ATS根据请求内容向上游Nginx请求所需片段
  6. ATS发出的请求从用户进程空间copy到内核,进入主机网络协议栈
  7. 主机网卡向上游发出请求
  8. Nginx返回的请求片段进入主机网卡
  9. 在主机的网络协议栈进行基于mac地址的数据包路由选择
  10. 从内核copy到用户进程空间,进入container内部
  11. ATS进行处理
  12. ATS向客户端发回请求的数据
  13. ATS返回的数据从用户进程空间copy到内核,进入主机网络协议栈
  14. 数据从主机网卡向客户端返回

在NAT方式下,一个客户端请求在主机协议栈里面上需要经历四次iptables的处理。

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



三、bridge+NAT模式的性能测试结果

2000个模拟客户端

TCP建立时延如下图

10秒HLS切片下载平均时间


网络吞吐量


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



四、macvlan模式的性能测试结果

4000个模拟客户端

TCP建立时延如下图


10秒HLS切片下载平均时间


网络吞吐量


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




五、性能测试结果分析


根据测试结果,macvlan模式可以在支持更多并发客户端的情况下,还具有更好的网络性能(时延和吞吐量)。

以上结果是在两种网络模式下调整模拟客户端的数目(增加和减少)所能达到的最好结果。更少的客户端时延和吞吐量很稳定,但是没有达到NIC IRQ性能瓶颈;更多的客户端,会达到NIC IRQ的性能瓶颈,引起延时和吞吐量的恶化。

注:这里的NIC IRQ瓶颈是指在本测试中使用的物理机上面的NIC由于厂商firmware的限制,只能使用最多8个逻辑CPU作为网卡驱动的软中断处理资源,这样会导致整个系统虽然还有空闲的CPU资源,但是应用程序的性能已经到了瓶颈。可以考虑升级使用支持更多CPU core作为终端处理资源的NIC来进一步提高性能:



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




<think>好的,用户想了解如何配置LXD中的nictype为macvlan。首先,我需要回忆一下LXD的网络配置相关知识。LXD支持多种网络类型,macvlan是其中一种,它允许容器直接使用物理接口的MAC地址,这样可以避免NAT容器直接连接到物理网络。但用户可能需要知道具体的配置步骤和注意事项。 接下来,我需要考虑用户可能的场景。用户可能是在搭建服务器环境,希望容器拥有独立的网络身份,比如直接获得局域网IP,方便服务暴露。或者在做网络隔离测试,需要不同的网络配置。用户可能已经了解过其他网络类型,比如bridged,但发现macvlan更适合他们的需求。 用户的需求是配置macvlan,但可能对具体参数不熟悉,比如parent接口的选择,是否需要DHCP,或者静态IP的设置。需要详细说明配置文件的各个部分,比如name、type、parent等。另外,用户可能遇到常见问题,比如parent接口不支持macvlan,或者网络策略导致MAC地址冲突。 我应该分步骤讲解,先介绍macvlan的基本概念,然后创建网络配置文件的示例,再说明如何应用到容器。需要提醒用户注意parent接口是否正确,检查内核是否支持macvlan,以及可能的网络策略限制,比如某些云服务商禁止自定义MAC地址。 另外,用户可能需要知道如何验证配置是否生效,比如检查容器的IP地址是否在局域网内,或者测试网络连通性。如果有错误,如何排查,比如查看LXD日志,检查网络接口是否存在等。 最后,需要比较macvlan和其他网络类型的区别,帮助用户理解为何选择macvlan,比如相比bridged的优势,或者macvlan的局限性,比如无法宿主机通信的问题,可能需要额外配置子接口或调整网络设置。 总结下来,回答的结构应该是:简介macvlan,配置步骤,示例,应用方法,注意事项,常见问题解决。确保用户能够一步步操作,并了解潜在的问题点。</think>以下为LXD配置macvlan网络类型的具体步骤和注意事项: ### 一、macvlan核心概念 1. 工作原理:在物理网卡上创建虚拟子接口,容器获得独立MAC地址 2. 典型特征: - 容器IP宿主机同一网段 - 无需NAT直接暴露在物理网络 - 不支持宿主机容器直接通信(需额外配置) ### 二、基础配置步骤 1. 创建网络配置文件 ```bash lxc network create macvlan-net \ type=macvlan \ parent=eth0 \ mtu=1500 ``` 参数说明: - `parent=eth0`:指定物理网卡(需根据实际情况修改) - `mtu`:建议物理网络保持一致 2. 查看网络配置 ```bash lxc network show macvlan-net ``` ### 三、容器应用配置 1. 启动容器时附加网络 ```bash lxc launch ubuntu:22.04 my-container --network macvlan-net ``` 2. 为已有容器添加网卡 ```bash lxc config device add my-container eth0 nic \ nictype=macvlan \ parent=eth0 \ name=eth0 ``` ### 四、IP地址管理方案 1. DHCP自动获取(推荐): ```yaml config: ipv4.address: dhcp ipv6.address: dhcp ``` 2. 静态IP指定: ```yaml config: ipv4.address: 192.168.1.100/24 ipv4.gateway: 192.168.1.1 ``` ### 五、常见问题排查 1. MAC地址冲突: - 检查`lxc config show <容器名>`输出的MAC地址 - 确保网络内无重复MAC 2. 物理网卡限制: ```bash # 验证网卡是否支持macvlan lsmod | grep macvlan ``` 3. 云服务商限制: - AWS/Azure等平台可能需要特殊配置 - 需关闭源地址验证(Source/Dest Check) ### 六、进阶配置技巧 1. 多网卡绑定: ```bash lxc network create bond0 \ type=bridge \ config={ "bridge.driver": "bond", "bridge.mode": "balance-rr" } ``` 2. 混合网络配置示例: ```yaml devices: eth0: nictype: macvlan parent: enp3s0 type: nic eth1: nictype: bridged parent: lxdbr0 type: nic ``` ### 七、重要注意事项 1. 宿主机通信问题: - 解决方法:创建macvlan子接口 ```bash ip link add macvlan-host link eth0 type macvlan mode bridge ip addr add 192.168.1.99/24 dev macvlan-host ip link set macvlan-host up ``` 2. 网络策略限制: - 企业网络可能过滤未知MAC地址 - 需提前向网络管理员报备 3. 性能优化: - 设置合适MTU值(通常1500) - 避免过多macvlan接口导致交换机MAC表溢出 建议通过`lxc exec <容器名> -- ip addr show`验证网络配置,测试跨网段通信时可使用`ping -c4 8.8.8.8`进行连通性验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值