企业网站建设的趋势,设计网站名字,网页设计与网站开发试题,个人如何注册企业邮箱一、背景
一个人晚上在家通过 Wi-Fi 上网#xff0c;在线电影播放基本流畅#xff0c;可一旦在晚间用网高峰期打视频电话就画面糊#xff0c;这时不仅可能带宽受限了#xff0c;还可能有较高的丢包率。与有线网络通信相比#xff0c;无线网络通信受环境影响会更大#x…一、背景
一个人晚上在家通过 Wi-Fi 上网在线电影播放基本流畅可一旦在晚间用网高峰期打视频电话就画面糊这时不仅可能带宽受限了还可能有较高的丢包率。与有线网络通信相比无线网络通信受环境影响会更大比如高层建筑、用户的移动、环境噪音、封闭的环境等网络服务质量相对不稳定导致用户经常在弱网环境下通信。例如在车库的视频通话通常都不如在室外的质量。除了受环境影响外网络覆盖、过载控制、邻区漏配等也会造成呼叫失败、服务质量下降。这些真实的用户场景。 我们在开发产品过程中为了保证弱网环境下用户的体验需要做大量的、定量地 进行测试评估与优化。
因此如何方便地模拟用户实际的弱网场景是一个非常重要的话题。 二、分类 三、工具与使用方法
工具名适用平台简介 Traffic Control(TC) linuxLinux 内核内置了一个 Traffic Control 框架能够实现流量限速、流量整形、策略应用可以注入延时故障、丢包故障、包重复故障、乱序故障以及模拟网络闪断等情况。 Augmented Traffic Control(ATC) ATC 其实是 Facebook 在 2015 年开源的一套网络测试工具。ATC 是基于 TC 的封装。 Network Link Conditioner(NLC) ios macNLC 是苹果官方提供的网络模拟工具。部署最简单 3.1、Linux Traffic Control(TC)
Linux 内核内置了一个 Traffic Control 框架能够实现流量限速、流量整形、策略应用可以注入延时故障、丢包故障、包重复故障、乱序故障以及模拟网络闪断等情况。TC 对硬件、系统还有一些要求
硬件要求
PC - 建议配置不低于 CPU i34G 内存64G 硬盘双网卡 - 除原有板载网卡外, 额外需要一块 pci-e 网卡例如 intel 82574L路由器 - 支持桥接模式网线 - 若干
系统要求
需要 Fedora、OpenSuse、Gentoo、Debian、Mandriva 或 Ubuntu如果Linux内核版本大于 2.6则已内置 TC。系统模块Ubuntu/Debian 系统下需要 iproute2Fedora/RHEL 系统下需要 iproute-tciptablesLinux kernel module : sch_netem
同时软件方面还需要安装 dhcp server。具体安装方法请参考 Ubuntu 官方文档[3]。
开始部署
NIC-0 通过网线连接外网, 假设对应 Net device eth0NIC-1 通过网线连接路由器 WAN 口, 假设对应 Net device eth1路由器: 打开桥接模式, 关闭 DHCP 服务
PC 端输入命令行
vi /etc/default/isc-dhcp-server
添加
INTERFACESv4eth1
重启服务
sudo /etc/init.d/isc-dhcp-server restart
重启后运行以下命令
echo 1 /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE
modprobe ifb
ip link set ifb0 up
至此你已经完成了部署。
TC 的使用方法
做弱网测试基本是按照以下四个步骤
设备连接 Wi-Fi 热点成功获取 IP 地址假设为192.168.3.101。打开 Linux terminal输入 TC 命令为发送端 IP 为 192.168.3.101 的设备添加网损。此时手机即在弱网环境下运行。测试完成后输入 TC 命令取消弱网。
例如你要是想限制 IP 地址为 192.168.3.101 的设备上行丢包 5%那么需要运行如下命令
sudo tc qdisc add dev ifb0 root handle 1: prio bands 3
sudo tc qdisc add dev eth1 ingress
sudo tc filter add dev eth1 parent ffff: protocol ip u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ifb0
sudo tc qdisc add dev ifb0 parent 1:3 handle 30: netem loss 5 limit 1000
sudo tc filter add dev ifb0 protocol ip parent 1:0 prio 3 u32 match ip src 192.168.3.101 flowid 1:3
如果想要限制 IP 地址为 192.168.3.101 的设备下行丢包 20%需要运行如下命令
sudo tc qdisc add dev eth1 root handle 1: prio bands 3
sudo tc qdisc add dev eth1 parent 1:3 handle 30: netem loss 20 limit 1000
sudo tc filter add dev eth1 protocol ip parent 1:0 prio 3 u32 match ip dst 192.168.3.101 flowid 1:3
可以说 TC 框架可以实现很多场景但前提是需要开发者们学会使用 TC 命令行。如果你想了解更多的 TC 命令可以学习一下官方文档[4]。
3.2、Augmented Traffic Control(ATC)
ATC 其实是 Facebook 在 2015 年开源的一套网络测试工具。ATC 是基于 TC 的封装。
在部署好 ATC 弱网控制机后在手机上通过 Web 界面就可以随时切换不同的网络环境。多个手机可以连接到同一个 Wi-Fi 复用同一台弱网控制机且多设备之间模拟的网络环境互不影响。也就是说部署好这个测试工具后团队里的任何人都可以通过 Web 自行测试且互不干扰。
ATC 的部署方法相对复杂但只要根据官方文档[5]就可以顺利完成搭建。按照官方文档完成搭建之后大家还需要通过以下几行命令配置 HOST 地址然后就可以启动运行了。
打开 Setting
vi atcui/atcui/settings
添加 HOST 地址
ALLOWED_HOSTS [*]
启动命令
atcd --atcd-wan eth0 --atcd-lan eth1
使用方法
设备接入对应 Wi-Fi打开 http://192.168.3.1:8000 假设 eth1 IP地址为192.168.3.1输入对应弱网参数后点击按钮 [Update Shaping] 生效该弱网仅对本机生效 测试完成后点击按钮 [Turn Off] 清除弱网设置。 3.3、Network Link Conditioner(NLC)
可能有些 iOS 开发者已经认出来了。NLC 是苹果官方提供的网络模拟工具支持安装在 macOS 和 iOS 上。
macOS 端安装
打开 Xcode选择 Xcode - Open Developer Tool - More Develop Tools。 用苹果账号登录网站搜索 Additional Tools for Xcode下载 Xcode 对应版本的 Additional Tools。 打开下载的文件在 Hardware 文件夹中双击 Network Link Conditioner 安装。 安装完成后工具会在系统设置中的最后一排出现。 iOS 端安装
通过打开“开发者选项”就可以使用 Network Link Conditioner 功能。
数据线连接手机到 Mac 上Xcode - Windows - Devices - 选中当前手机设备右键弹出 菜单 - 选择Show Provisioning Profiles... 会弹出一个证书列表窗口 如果手机已经安装了必要的开发者证书直接点击窗口中的 done 按钮即可。否则需要点击左下角的 号把从网上下载下来的证书导入进去 点击 done 按钮关闭窗口。
此时手机设置中就多了一个开发者选项进入开发者选项可以看到 Network Link Conditioner 选项。
使用方法
NLC 的使用方法就简单多了不需要用命令行。如果 NLC 中的配置不满足需求的话可以手动添加更多的配置。在 Mac 端和 iOS 上按照以下操作即可。
Mac 端 iOS 端 需要注意的是 interface 设置当 iOS 通过共享 Wi-Fi 热点的方式作为接入设备的弱网控制机时需要将 interface 设置为 Cellular。 ref
WebRTC 通话质量调优必备三个弱网模拟测试工具 - 知乎