精华内容
下载资源
问答
  • 弱网环境搭建之 Linux tc & iptables 详解
    2022-02-04 16:40:39

    0. 背景

    笔者有一个需要搭建弱网环境来复现某个网络问题的需求,因此开始在网络中寻找能够快速搭建弱网环境的方式。

    不同应用对于弱网环境的定义是不同的,需要根据具体的应用场景进行划分。但一般意义而言,对于弱网环境的测试主要集中于对带宽、丢包、延时等方面的模拟,来还原当用户网络环境较差时的情况。

    弱网环境搭建可以分为客户端服务端,客户端模拟弱网环境主要是通过控制移动设备的上下行流量来实现,比如腾讯的 QNET;客户端一般也可以是 Windows 客户端,常见的搭建工具有 Network Emulator;而在服务端(这里指Linux服务器),常用的有 Facebook 的 ATC

    1. 工具选择

    通过调研,市面上其实已经有许多现成的易于使用的工具,但是由于灵活性及可靠性的要求,使用现有工具不利于排查问题,因此最终还是选择了 tciptables 辅助的方式来进行搭建。

    这里没有选择 ATC 的原因主要还是因为 ATC 非 Linux 自带的工具,可能会存在版本等问题,但如果为了快速搭建弱网环境还是建议选择 ATC。

    2. 搭建流程

    2.1 Linux tc 简介

    因为选择了 tc 作为搭建工具,这里简单的介绍一下 Linux tc :

    Linux操作系统中的流量控制器TC(Traffic Control)用于Linux内核的流量控制,主要是通过在输出端口处建立一个队列来实现流量控制。接收包从输入接口进来后,经过流量限制丢弃不符合规定的数据包,由输入多路分配器进行判断选择。
    一般只能限制网卡发送的数据包,不能限制网卡接收的数据包,所以可以通过改变发送次序来控制传输速率。Linux流量控制主要是在输出接口排列时进行处理和实现的。

    简单来说,tc 就是一个流量控制器,可以实现限速、流量整形等功能,主要原理是通过设置不同类型的队列,来控制数据包发送的速率和优先级,达到流量控制的效果。

    在 tc 中,对流量的处理由三种对象控制,qdisc(排队规则),class(类),filter(分类器)

    • qdisc : qdisc 是 queueing discipline 的缩写。qdisc 的含义是,当内核需要通过配置了 qdisc 的网卡发送数据包时,必须根据 qdisc 的规则将数据包放入队列中,然后内核从队列中取出数据包发送。qdisc 可以分为可分类与不可分类两种,不可分类的有pfifo(最简单的先进先出策略)、red(随机丢弃部分数据包)、tbf(内部采用令牌桶, 主要用于限速)等;可分类的包括HTB(主要用于带宽控制)、PRIO(用于优先级管理)。更详细的解释可参考这篇文章

    • class :对于不同的数据流可能需要不同的控制策略,因此部分 qdisc 可以包含一些类别,不同的类别中还可以包含下一层 qdisc 从而形成一棵策略树。

    • filter : filter 本该翻译为过滤器,但由于它与 class(类) 的关系,将它译为了分类器。顾名思义,filter用于为数据包分类,决定它们按照哪种 qdisc 进入队列。需要注意的是,filter 位于 qdisc内部,它们不能作为主体。

    综上,qdisc 可以添加类,类(Class)组成一个树,由它们为数据包排队。此外,每个类都有一个叶子 qdisc,默认情况下,这个叶子 qdisc 使用pfifo的方式排队,也可以使用其它类型的 qdisc 代替。一般有有三种方式——tc filter、ToS、skb 为数据包归类,常见的一般是 tc filter。

    2.2 弱网搭建思路

    弱网搭建主要是使用 tc 的基本功能来还原弱网的情况,以下将讲解几个常用的命令:

    首先是带宽限制功能,一般来说可以用 htb 或者 tbf 来实现,但因为 tbf 是无类别的,无法添加子类规则,所以选择了 htb 进行限速。

    首先为网卡添加一个 htb 队列,下述命令指定了该队列的类别,使用”major:minor”这样的形式来标识一个队列,其中major和minor都是数字。default xx 是 htb 特有的参数,是为了指定在默认情况下,数据包会被分给哪一个子类。

    tc qdisc add dev ${adapter} root handle 10: htb default ${handle_id} r2q 100
    

    然后为该父队列添加一个子类,子类的 major 必须与父类的 major 相同,并且指定 rate limit,可以用 Mbit、Kbit 等作为单位。

    tc class add dev ${adapter} parent 10: classid 10:1 htb rate 1000mbit ceil 1000mbit
    

    在进行限速之后,可以通过如下命令设置数据包的发送延迟,delay_time 是发送延迟,而后面紧跟的 10ms 代表实际发送中会有 10ms 的波动,从而模拟更真实的情况。

    tc qdisc add dev ${adapter} parent 10:20 handle 101: netem delay ${delay_time}ms 10ms distribution normal
    

    也可以通过如下命令增加丢包频率、包损坏、乱序等规则,模拟出需要的弱网情况。

    # 设置丢包频率
    tc qdisc add dev ${adapter} parent 101: handle 102: netem loss ${loss}%
    
    # 设置包重复
    tc qdisc add dev ${adapter} parent 10:20 handle 103: netem duplicate ${duplicate}%
    
    # 设置包损坏
    tc qdisc add dev ${adapter} parent 10:20 handle 104: netem corrupt ${corrupt}%
    
    # 设置数据包乱序
    tc qdisc add dev ${adapter} parent 10:20 handle 105: netem reorder ${reorder}% 50%
    
    

    使用 iptables 模拟一些极端网络情况,

    2.3 完整代码展示

    完整的代码如下所示,tc 的命令并不是特别复杂,需要注意的父类子类之间的关系,以及如何设置 qdisc 和 class

    #!/bin/bash
    
    # 网卡
    adapter="eth0"
    handle_id=20
    
    # 初始化参数
    rate_limit=500
    delay_time=30
    loss=1
    duplicate=0
    corrupt=0
    reorder=0
    default_ip="0.0.0.0"
    is_ip_filter=0
    default_port=443
    is_port_filter=0
    
    # 删除之前规则 (root)
    tc qdisc del dev ${adapter} root
    
    ### 设置tc规则 (2. 指定端口 4. iptables规则)
    tc qdisc add dev ${adapter} root handle 10: htb default ${handle_id} r2q 100
    
    # 设置限速(非严格限速)
    tc class add dev ${adapter} parent 10: classid 10:1 htb rate 1000mbit ceil 1000mbit
    tc class add dev ${adapter} parent 10:1 classid 10:10 htb rate 1000mbit ceil 1000mbit 
    tc class add dev ${adapter} parent 10:1 classid 10:20 htb rate ${rate_limit}Kbit ceil ${rate_limit}Kbit
    
    # 设置过滤器(ip & 端口过滤)
    if [ ${handle_id} -eq 10 ];then
            if [ ${is_ip_filter} -eq 1 ];then
                    tc filter add dev ${adapter} protocol ip parent 10:0 prio 1 u32 match ip dst ${default_ip} flowid 10:20
            fi
            if [ ${is_port_filter} -eq 1 ];then
                    tc filter add dev ${adapter} protocol ip parent 10:0 prio 1 u32 match ip sport ${default_port} 0xffff flowid 10:20
            fi
    fi
    
    # 设置延迟
    tc qdisc add dev ${adapter} parent 10:20 handle 101: netem delay ${delay_time}ms 10ms distribution normal
    
    # 设置丢包频率
    tc qdisc add dev ${adapter} parent 101: handle 102: netem loss ${loss}%
    
    # 设置包重复
    tc qdisc add dev ${adapter} parent 10:20 handle 103: netem duplicate ${duplicate}%
    
    # 设置包损坏
    tc qdisc add dev ${adapter} parent 10:20 handle 104: netem corrupt ${corrupt}%
    
    # 设置数据包乱序
    tc qdisc add dev ${adapter} parent 10:20 handle 105: netem reorder ${reorder}% 50%
    
    
    #iptables -A OUTPUT -p tcp --sport 8080 -j DROP
    
    更多相关内容
  • 做音视频开发,我们经常需要模拟弱网环境,观察 app 在弱网下的表现,比如,丢包、延迟、抖动、限制带宽条件等,Mac 系统有一个弱网工具 APP,叫做 “Network Link Conditioner ” ,支持可视化地完成弱网的模拟和...

    做音视频开发,我们经常需要模拟弱网环境,观察 app 在弱网下的表现,比如,丢包、延迟、抖动、限制带宽条件等,Mac 系统有一个弱网工具 APP,叫做 “Network Link Conditioner ” ,支持可视化地完成弱网的模拟和配置,很好用,非常推荐你使用这个工具来完成弱网的模拟。

    6a556c80f85cb241052806cecf1cc637.png

    但是如果你期望使用命令行或者使用脚本来实现弱网环境的配置,就不得不研究一下它背后的原理了,本文就是介绍 Network Link Conditioner 背后使用的系统相关的命令和服务,教大家如何使用命令行完成弱网环境的配置。

    Mac OS X 10.10 以后,系统主要使用的是 `PF (Packet Filter, the BSD firewall)`和 `dummynet(the BSD traffic shaper)` 这两个服务来模拟各种弱网环境。

    dummynetDUMMYNET(4)              BSD Kernel Interfaces Manual              DUMMYNET(4)

    NAME

    dummynet -- traffic shaper, bandwidth manager and delay emulator

    DESCRIPTION

    dummynet is a system facility that permits the control of traffic going

    through the various network interfaces, by applying bandwidth and queue

    size limitations, implementing different scheduling and queue management

    policies, and emulating delays and losses.

    The user interface for dummynet is implemented by the dnctl program, so

    the reader is referred to the dnctl(8) manpage for a complete description

    of the capabilities of dummynet and on how to use it.

    SEE ALSO

    dnctl(8), setsockopt(2), bridge(4), ip(4), sysctl(8)

    HISTORY

    dummynet was initially implemented as a testing tool for TCP congestion

    control by Luigi Rizzo , as described on ACM Computer

    Communication Review, Jan.97 issue.  Later it has been then modified to

    work at the ip and bridging level, integrated with the IPFW packet fil-

    ter, and extended to support multiple queueing and scheduling policies.

    简单来说,`dummynet` 是一个流量/带宽/延时的控制工具,用户可以使用 `dnctl` 命令来配置和与之交互。

    dnctlDNCTL(8)                  BSD System Manager's Manual                 DNCTL(8)

    NAME

    dnctl -- Traffic shaper control program

    SYNOPSIS

    dnctl [-anqs] {list | show}

    dnctl [-f | -q] flush

    dnctl [-q] {delete} [number ...]

    dnctl {pipe | queue} number config config-options

    dnctl [-s [field]] {pipe | queue} {delete | list | show} [number ...]

    dnctl [-nq] [-p preproc [preproc-flags]] pathname

    DESCRIPTION

    The dnctl utility is the user interface for controlling the dummynet(4)

    traffic shaper.

    dummynet operates by first using a packet filter to classify packets and

    divide them into flows, using any match pattern that can be used in dnctl

    rules.  Depending on local policies, a flow can contain packets for a

    single TCP connection, or from/to a given host, or entire subnet, or a

    protocol type, etc.

    简单来说,`dnctl `是一个命令行工具,用于配制`dummynet`服务。$ dnctl {pipe | queue} number config config-options

    `dnctl`  提供了 2 种流量控制机制,一个是 pipe,一个是 queue,前者主要用于固定带宽条件下的弱网模拟,后者则可以试验不同 pipe 使如何抢占和共享可用带宽的。通常我们选择前者来简单地模拟弱网。

    `config-options` 的种类特别多,弱网条件的配置基本上都在这里了:The following parameters can be configured for a pipe:

    bw bandwidth

    Bandwidth, measured in [K|M]{bit/s|Byte/s}.

    A value of 0 (default) means unlimited bandwidth.

    delay ms-delay

    Propagation delay, measured in milliseconds.

    plr packet-loss-rate

    a floating-point number between 0 and 1, with 0 meaning no loss, 1 meaning 100% loss.

    queue {slots | sizeKbytes}

    Queue size, in slots or KBytes.  Default value is 50 slots, which

    is the typical queue size for Ethernet devices.

    综上所述,我们来定义一个 pipe number id 为 1,带宽限制 100Kbit/s,delay 100ms,loss:50% 的弱网环境:// 创建配置并显示

    $ sudo dnctl pipe 1 config bw 100Kbit/s delay 100 plr 0.5

    $ sudo dnctl show

    00001: 100.000 Kbit/s 100 ms 50 sl.plr 0.500000 0 queues (1 buckets) droptail

    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000

    // 清空配置并显示

    $ sudo dnctl -q flush

    $ sudo dnctl show

    pf

    我们再来看看另一个工具:`pf`,它是 Mac 系统的防火墙工具,我们利用它来把经过系统的流量转到我们的弱网环境进行 filter 处理。

    `pf` 主要使用配置文件保存防火墙规则,语法规范上比较严谨,cat /etc/pf.conf,可看到以下已有内容:# This file contains the main ruleset, which gets automatically loaded

    # at startup.  PF will not be automatically enabled, however.  Instead,

    # each component which utilizes PF is responsible for enabling and disabling

    # PF via -E and -X as documented in pfctl(8).  That will ensure that PF

    # is disabled only when the last enable reference is released.

    #

    # Care must be taken to ensure that the main ruleset does not get flushed,

    # as the nested anchors rely on the anchor point defined here. In addition,

    # to the anchors loaded by this file, some system services would dynamically

    # insert anchors into the main ruleset. These anchors will be added only when

    # the system service is used and would removed on termination of the service.

    #

    # See pf.conf(5) for syntax.

    #

    # com.apple anchor point

    #

    scrub-anchor "com.apple/*"

    nat-anchor "com.apple/*"

    rdr-anchor "com.apple/*"

    dummynet-anchor "com.apple/*"

    anchor "com.apple/*"

    load anchor "com.apple" from "/etc/pf.anchors/com.apple"

    下面,我们需要来撰写属于我们自己的的规则。

    1.  新建一个 pf.conf 文件$ touch pf.conf

    2.  添加路由规则action [direction] [log] [quick] [on interface] [af] [proto protocol]

    [from src_addr [port src_port]] [to dst_addr [port dst_port]]

    [flags tcp_flags] [state]

    详细参数含义可以参考文档,这里简单列出几个关键的配置:[direction]: 流量的方向,上行:out,下行:in

    [proto protocol]:协议,tcp/udp/icmp 等

    [from src_addr [port src_port]]:源 ip 和 port,默认可以使用 any

    [to dst_addr [port dst_port]]:目标 ip 和 port,默认可以使用 any

    这里我们主要示例一下如何添加规则到我们上面创建的 dummynet  pipe 1$ vi pf.conf

    # 本示例的 “上行 + 下行” 都配置了弱网,也可以配置单向测测变化

    # 测试 tcp,比如:curl www.baidu.com

    dummynet in proto tcp from any to any pipe 1

    dummynet out proto tcp from any to any pipe 1

    # 测试 udp,比如:音视频通话

    dummynet in proto udp from any to any pipe 1

    dummynet out proto udp from any to any pipe 1

    # 测试 ping,比如:ping baidu.com

    dummynet in proto icmp from any to any pipe 1

    dummynet out proto icmp from any to any pipe 1

    3.  启动和加载 `PF` 配置

    操作 `PF` 服务,需要借助  `pfctl ` 命令。# Mac 系统默认把 `PF` 服务关闭了,启动 `PF` 服务

    $ sudo pfctl -e

    # 加载自定义防火墙规则

    $ sudo pfctl -f pf.conf

    # 恢复原始的防火墙规则

    $ sudo pfctl -f /etc/pf.conf

    # 注意:使用 pfctl 命令会经常出现下面的 warning,没有影响,忽略就好了。

    "No ALTQ support in kernel"

    小结

    关于如何在 Mac 下使用命令行配置弱网环境就分享到这里了,如有疑问的小伙伴欢迎来信 lujun.hust@gmail.com 交流。另外,也欢迎大家关注我的新浪微博 @卢_俊 或者 微信公众号 @Jhuster 获取最新的文章和资讯。

    展开全文
  • 弱网环境搭建

    2020-12-09 17:42:53
    QNET网络测试工具能够不借助PC或者服务器,搭建一套完善的弱网环境,进行弱网络模拟测试,只需 在任一智能手机上安装QNET网络测试工具,即完成弱网络环境搭建工作,接下来根据需要选择不同场 景进行测试即可;除此...

    偶然从一篇音视频质量评估方案中看到了几款网络模拟工具,试用后发现基本可以满足弱网场景测试。

    一、QNET

    腾讯提供的、适用于移动设备(目前仅支持Android)的弱网测试app。

    官网地址:https://wetest.qq.com/product/qnet

    官网介绍:

    QNET网络测试工具能够不借助PC或者服务器,搭建一套完善的弱网环境,进行弱网络模拟测试,只需
    在任一智能手机上安装QNET网络测试工具,即完成弱网络环境搭建工作,接下来根据需要选择不同场
    景进行测试即可;除此之外,还提供了网络数据包抓包功能,便于进行网络数据问题的分析

    二、FaceBook的ATC

    在linux服务器上使用ATC构建弱网环境,故也可用于移动设备的弱网测试

    搭建示例:https://testerhome.com/topics/15562

    三、微软的Network Emulator

    微软开源,可实现带宽、丢包、延时、抖动、综合网络等弱网参数的限制,适用于Windows的弱网测试。

    搭建示例:https://blog.csdn.net/no1mwb/article/details/53638681

    network emulator使用基本步骤:

    • 创建virtual channel:configuration—>new channel
    • 在创建的channel上创建filter:configuration—>new filter。filter主要是对network type进行过滤。
      在这里插入图片描述
    • 在创建的channel上创建新建link:configuration—>new link,如下图所示:
      在这里插入图片描述
      UpStream和DownStream的设置项包括:Loss(丢包率)、error(数据错误)、BW&Queue(带宽)等。
    • 配置好filter、Link后,就可启动控制了。在“RT Traffic Monitor”分页可事实查看upstream/downstream的吞吐量/丢包率/错误数据。
    展开全文
  • 原标题:轻松一招,教你实现模拟弱网环境 运维过程中,最复杂的问题,莫过于网络的问题,而网络问题最烦的就是无法复现,这篇介绍一个强大的网络模拟工具Netem。Netem是从linux 2.6以上内核版本开始提供的一个网络...

    原标题:轻松一招,教你实现模拟弱网环境

    3add4c1608dfd0c6011775aa7f40ed03.png

    运维过程中,最复杂的问题,莫过于网络的问题,而网络问题最烦的就是无法复现,这篇介绍一个强大的网络模拟工具Netem。

    Netem是从linux 2.6以上内核版本开始提供的一个网络模拟功能模块,它主要用来在性能良好的网络环境中,模拟出复杂的网络传输性能,比如低带宽、传输延迟、丢包等各种常见的网络故障的情况。

    而Netem是由命令行工具tc控制,tc我们应该比较熟悉,tc是iproute2工具包的一部分,它的全称是traffic control(流量控制),最常用的莫过于通过nc监听进行反弹shell。

    tc主要用于linux内核的流量控制,主要是通过在是输出端口处建立一个队列来实现流量控制,接收包从输入接口进来后,经过流量限制,丢弃不符合规定的数据包,由输入多路分配器进行判断选择,如果接收包的目的是本主机,那么将该包送给上层处理,否则需要进行转发,将接收包交到转发块处理,转发块同时也接收本机上层(TCP、UDP等)产生的包。转发块通过查看路由表,决定所处理包的下一跳,然后对包进行排列以便将他们传送到输出接口,一般我们只能限制网卡发送的数据包,不太好限制网卡接收的数据包,所以我们可以通过改变发送次序来控制传输速率,linux流量控制主要是在输出接口排列时进行处理和实现的。

    关于linux内部网络包转发,在公众号之前发过的文章《nfstable比iptables强在哪里》里面有较详细的介绍,这里就不罗嗦了,有兴趣的可以点进去看下。

    回到正题,我们主要通过tc工具加Netem模块进行网络状况的模拟,看下netem模块的强大功能

    网络状况不好的情况通常就是以下几个表现:延迟、丢包、乱序、重复、错误等,我们就通过netem来模拟以上这几种情况,建议不要生产环境测试,熟练掌握后再使用

    在tc配置netem的操作中,主要有4个控制参数,分别是add(表示为指定网卡添加Netem配置),change(表示修改已经存在的Netem配置),replace(表示替换已经存在的Netem配置的值),del(表示删除网卡上的Netem配置),好了,接着开始测试几种情况。

    模拟延迟传输 tc qdisc add dev eth0 root netem daly 100ms

    模拟网络,所有的报文延迟100ms发送

    f6d2465fbc7395714fcc50e2451a35ed.gif

    上面的命令中qdisc是排队规则,没有添加规则之前,因为是内网,所以ping延迟在1ms,添加延迟后,增加到100ms

    在真实的网络环境中,我们通常很难看到非常稳定的时延,别杠内网,所以netem也考虑到这一点,模拟延迟参数中提供了控制延迟的时间分布的可选参数,完整的参数列表如下:

    可以看到,除了TIME外,还有三个可选参数:

    JITTTER:网络抖动,增加一个随机事件长度,让延迟事件出现在某个范围

    CORRELATION:相关系数,下一个报文延迟事件和上一个报文的相关系数

    distribution:延迟分布,可以选择的值有uniform、normal、pareto和paretonormal

    先来看下JITTER,如果设置为10ms,那么报文延迟事件会在100ms± 10ms之间随机选择,看下效果

    a6eab038db5d2477c99fc995dd1e6101.gif

    CORRELATION是指包和包之间的相关性,因为网络状况是平滑变化的,短时间里相邻报文的延迟应该是近似的,而不是完全随机的,这个值是个百分比,如果为100%,就是固定延迟的情况,如果是0%则是随机延迟的情况,接着刚才的配置继续看下效果

    785586932c23d3708d905a648d74a506.gif

    而distribution则是通过正态分布的方式来模拟更符合真实网络情况,它的几个参数就是几种延迟分布方法,有兴趣的可以试一下

    模拟丢包率

    丢包在网络中是最常见的一种情况,丢包会导致重传,重传会增加网络链路的流量和延迟,Netem提供了loss参数,可以模拟丢包率

    tc qdisc add dev eth0 root netem loss 50%

    看下效果

    2dd5202b3233b08a943157748f591b55.gif

    和延迟类似,丢包率也有相关系数的参数可以设置,表示后一个报文丢包率和它前一个报文的相关性

    tc qdisc add dev eth0 root netem loss 50% 25%

    上面这个命令表示,丢包率是50%,并且当前报文丢弃的可能性和前一个报文相关性为25%

    模拟包重复

    模拟报文重复,用duplicate参数,报文重复和丢包的参数类似,就是重复率和相关性两个参数,比如随机产生50%重复的包

    tc qdisc add dev eth0 root netem duplicate 50%

    看下效果

    66be719945af1a84fe096aee1341bc32.gif

    相关性和其他参数一样,有兴趣可以测试

    模拟包损坏

    模拟报文损坏用参数corrupt,报文损坏和报文重复的参数也类似,比如随机产生30%损坏的报文

    tc qdisc add dev eth0 root netem corrupt 30%

    查看效果

    910a9fdb6ba820cddb65bb7a6e393336.gif

    可以从icmp_seq看到,损坏的报文,导致严重的丢包

    模拟包乱序

    我们知道TCP为了保证可靠传输,会在报文中添加序列号,确保被拆分的包能够到达后进行重组,那么最好的情况就是包能按序传输,减少重新排序的次数,虽然包乱序造成的影响没有上面几种严重,但是仍然是会经常遇到,netem同样提供了模拟包乱序的方法

    模拟报文乱序和前面的参数不太一样,上面的操作都是针对单个报文的,而乱序则牵扯到多个报文重组的问题,所以Netem这里有两种方法来模拟乱序

    第一种是固定的每隔一定数量的报文乱序一次

    tc qdisc add dev eth0 root netem reorder 50% gap 3 delay 100ms

    caa02f1a2b83c8627e8814b74b7ae22e.gif

    上面这个是每隔3个数据包正常发送,其他的数据包延迟100ms发送

    第二种方法是更接近显示情况的,就是随机的,用概率来选择乱序的报文

    tc qdisc change dev eth0 root netem reorder 50% 15% delay 300ms

    看效果

    e4e47f35584d05308340fd61e0815f75.gif

    上面这个就是50%的报文正常发送,其他报文延迟300ms发送

    查看已配置过滤条件

    测试的过程中,肯定需要查看当前配置了那些条件,通过tc的show指令可以进行查看

    977c9846eef17df22951d045d6fabbeb.png

    对于模拟弱网环境,排查问题,这个工具必不可少,赶紧收藏!

    “高效运维”公众号诚邀广大技术人员投稿,

    投稿邮箱:jiachen@greatops.net,或添加联系人微信:greatops1118.

    点击阅读原文,访问 DevOps 国际峰会官网

    点个“在看”,一年不宕机 返回搜狐,查看更多

    责任编辑:

    展开全文
  • 4、配置完成后,fiddler就可以作为代理来抓取请求,这里说到的是利用fiddler模拟网速从而实现弱网环境,来对被测app进行测试,首先使被测app和装有fiddler的电脑在同一局域网内 (1)设置手机网络代理,ip为上述...
  • 为什么要做弱网环境测试?其实现在不论是端游、手游还是页游,在国内范围来说,我们一般情况下网速都不算差了。而且随着5G的逐渐普及,相信网速对于玩家的制约会更小,玩家的体验也会有一个质的变化。那我们为什么还...
  • 手机APP模拟弱网环境测试

    千次阅读 2020-12-24 11:28:17
    打开对应测试的APP就会发现网络变得很慢,可以做对应测试啦,其他的也可以选,但是要看自己的测试需求啦,不用的时候记得关上 然后我们来看Android手机 Android手机上的APP做弱网测试这里我们用到fiddler,安装和...
  • Fiddler设置弱网环境

    千次阅读 2021-03-09 11:33:22
    第一种是使用默认命令,设置弱网环境 第二种是通过修改具体的数值,修改弱网环境 一、使用菜单命令设置弱网环境 【Rules】——【Performance】——【Simulate Modem Speeds】设置为Fiddler默认的弱网环境 二、...
  • 下方会显示入网ip和token 更深入的配置可以按照这个连接的教程进行弱网配置 BUG 页面显示atc is not running 解决方法: 启动atcdsudo atcd --atcd-wan eth0 --atcd-lan wlan0不要关闭窗口,另外再开一个新窗口输入...
  • 用户的网络环境并不是一直处于能高速传输的状态,网络的好坏受用户所处地理位置,同一基站使用人数等许多因素影响。百度公开的数据显示,百度APP使用者约有1%的人群处于弱网状态。所以研究弱网测试,来提升这部分...
  • 弱网环境搭建教程

    2014-05-31 13:55:43
    在进行手机应用测试时,经常需要模拟网络不稳定的状态下对测试执行的影响。这篇文档主要是有关如何搭建一个网络环境,通过手动设置数据丢包率,以及网络时延等做个详细的说明,希望对大家有所帮助
  • 弱网环境模拟

    2018-02-12 17:24:37
    此文档可以用户app测试中对于弱网环境的场景的模拟 可以自由设置上传下载速度
  • 测试过app的同学都知道,弱网测试是不可或缺的一个环节。本文简单介绍一下通过fiddler模拟app弱网测试。具体步骤如下: 1.在fiddler菜单中打开FiddlerScript,在FiddlerScript中找到“if (m_SimulateModem)” 2....
  • TCP长链接 OR 链接池 IP直连 重点接口进行缓存(配合) GZIP压缩算法 HTTP/2 头部压缩、多路复用、请求响应管线化 域名减少(合并),减少DNS解析时间
  • MAC下弱网环境搭建 下载链接:https://developer.apple.com/download/more/ 安装方法: 1.对应xcode版本号的Additional tool 2.打开Additional_Tools_for_Xcode.dmg 3.点击安装hardware文件夹中的Network Link ...
  • 最近两天刚在公司用树莓派搭建完弱网测试平台,有些同事会有疑问用Charles就可以模拟弱网环境为什么要费劲用树莓派去搞呢?那今天来聊聊目前大致有哪些可以搭建弱网环境的方案以及各自存在的问题。这里调研了几款...
  • 使用Fiddler进行弱网环境测试 一、模拟弱网环境 打开Fiddler,Rules(规则)—Performance(性能)—Simulate Modem Speeds(模拟调制解调器速度) 二、弱网环境原理 Rules(规则)—Customize Rules(自定义规则)...
  • 弱网环境下如何优化网络请求

    千次阅读 2019-05-15 02:37:14
    目的:主要是减少用户等待时间,提升用户体验 可以优化的地方: 1. 前后端采用gzip方式请求和响应 前端在请求header添加:"content-encoding" 为 "gzip" 后端也要开启gzip,才能生效 相比不采用gzip的请求方式...
  • 很多时候我们测试需要模拟不同的网络环境,去查看产品的反映情况。我们可以使用Fiddler工具控制。 具体操作如下: 1.查看自己pc端的ip win+R,输入cmd打开后台命令器,输入ipconfig,查看自己的IPv4 地址 2.确定...
  • APP模拟弱网环境测试

    2018-08-10 18:22:00
    测试和开发过程中需要对不同网络环境进行处理和测试,本文介绍几种模拟不同网络环境的方法,先来介绍下iOS设备特有的弱网设置方法,再介绍几个APP(Android和iOS)通用的方法。 一、iOS特有的网络调试工具Network ...
  • 弱网环境测试点总结

    2017-08-01 17:38:00
    一、【弱网环境测试点总结】 1.场景:弱网环境下某个操作响应时间 原因:APP用户对等待时间容忍度低,若弱网环境loading超过5s,用户很容易kill应用后再次进入应用 【测试点】性能测试中,加入弱网环境测试点,...
  • 0. 背景 项目需要模拟弱网环境下,测试音视频的编解码功能。 在linux系统下可以使用tc工具模拟弱网环境,包括出/入流量的丢包等。 1. tc工具介绍 2. 网卡出数据 netem(Network Emulator)可以用来对网卡发出的数据包...
  • 4.习惯自己设置数据来模拟弱网的可以参考下面的数据来设置哦 【弱网】上行:10 下行:30 【 2g 】上行:15 下行:50 【 3g 】上行: 384 下行:2800 5.如果是想针对某个地址来进行弱网的话可以在Throttling ...
  • mac 10.14.1 使用charles进行模拟弱网环境时,配置如下 ,start throtting已打开。但电脑依然可以访问网页,客户端依然可以进行登陆。我想要设置成电脑不断开网络连接时,不能打开网页,不能登陆客户端,请问该参数...
  • 1、模拟弱网环境 打开Fiddler,Rules->Performance->勾选 Simulate Modem Speeds,勾选之后访问网站会发现网络慢了很多 2、Fiddler弱网的原理 Rules—>Cutomize Rules打开CustomRules...
  • 弱网环境构造

    2019-10-15 11:32:28
    #!/bin/bash ip_1=xxx.xxx.xxx.xxx ip_2=xxx.xxx.xxx.xxx tc qdisc add dev eth0 root handle 1: htb tc class add dev eth0 parent 1: classid 1:11 htb rate 20000Mbit tc class add dev e...
  • fiddler设置弱网环境测试

    千次阅读 2019-03-01 17:14:55
    面向用户的产品上线后,都会面对用户千奇百怪的使用环境,网络是很重要的一部分,上线前的测试中无法真实的使用用户的所有情况下的网络环境,所以利用fiddler工具来设置网络 1、官网下载fiddler,不需要配置啥,抓包...
  • Fiddler 设置手机代理,模拟弱网环境

    千次阅读 2019-03-22 17:19:16
    模拟弱网环境,打开Fiddler,Rules->Performance->勾选 Simulate Modem Speeds,勾选之后访问网站会发现网络慢了很多 1、配置Fiddler,允许监听https格式(默认监听http格式) 打开Fiddler,Tools ——>...
  • 今天重点介绍如何利用Charles进行模拟弱网环境以及修改请求返回值。 模拟弱网环境 模拟弱网环境简单粗暴,只需两步即可,直接上图。 选择 Proxy→ Throttle Setting→勾选上 Enable Throttling→ 选择Throttle...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,871
精华内容 2,748
关键字:

弱网环境

友情链接: Android-(2).zip