ืืืื ืืคืงืืื mm-webreplay ืฉื ืืชื ืืืคืขืื ืืกืคืง ืืืืจืื ืืืื ืื ืฉื OnWorks ืืืืฆืขืืช ืืืช ืืชืื ืืช ืืขืืืื ืืืงืืื ืืช ืืืจืืืืช ืฉืื ื, ืืืื Ubuntu Online, Fedora Online, ืืืืืืืจ ืืงืืื ืฉื Windows ืื ืืืืืืืจ ืืงืืื ืฉื MAC OS
ืชึธืึฐื ึดืืช:
ืฉืึตื
mahimahi - ืืื ืืืืืฆืืืช ืจืฉืช ืงืืื ืื ืืชื ืื ืืืจืืื
ืืืืืืช ืงืืฉืืจ: ื"ื-ืขืืืื, ื"ื-ืืคืกื, mm-onoff, ื"ื-ืงืืฉืืจ
ืกืงืจืืคืืื ืื ืืชืื: ื"ื-ืชืคืืงื-ืืจืฃ, mm-delay-graph
ืชึทืฆึฐืคึผึดืืช: ื"ื-ืืืจ
ืืืงืืื ืืืืคืขืื ืืืืฉ ืืชืจืื ืืจืืื ืืงืืจืืช: mm-webrecord, mm-webreplay
ืชืืืืจ
mahimahi ืืื ืืืืื ืฉื ืืืื ืืืจืื ืืฉืชืืฉ ืืืืืืฆืื ืื ืืชืื ืจืฉืช.
ืื ืืื Mahimahi ืืืืื ืืืื ืงื ืืฉืงื, ืืืืืืจ ืืืจื ืืื ืืืจื ืืืืฆืื ืืช
ืืชืงื ืจืฉืช ืกืื ืชืื ืฉืืชืืื ื ืืื ืืช ืืืขืืจ ืื ืืืงื ืจืฆืืขื
ืืชื ืืืืช.
ืืืืื ื ืืชื ืื ืืืจืืื ืื ืฉื ืืชื ืืฉืจืฉืจ ืฉืืจื ืฉื ืืคืงืืื ืฉื ืจืฉืช ืืืงืื
ืืื, ืขื ืืืืื ืืืืืืืื ืืงืื ื ืื ืืื ืืชืื ืืฉื ื. ืื ืืื ืืืงื ืืืคืฆืืื ืื
ืคืงืืื ืืืืฆืืข, ืื ืฉื ืืชื ืืืฆืืจ ืกืืจื ืฉื ืงืื ืืืื ืจืื ืืงืื ื ืื ืขื ืืื
ืฉืืจืช ืืคืงืืื.
ืงืฉืจ ืืืืืฆืื ืืื ืขืืืื
ื"ื-ืขืืืื ืขืืืื [ืคืงืืื...]
ืื ืืืืื ืืชืขืืืช ืขื ืืื ืืืืืืจ ืขืืืื (ืืืืืืฉื ืืืช) ืืื ืช ื
ืขืืื ืืช ืืืืืื.
ื"ื-ืืคืกื ืงืืฉืืจ ืืืขืื|ืงืืฉืืจ ืืืื ืฉืืขืืจื [ืคืงืืื...]
ืื ืืช ืืืืืืช ืื ืชืื ืฉืืขืืจื ืื ืืขืช ืืฆืืื (uplink) ืื ืื ืืกื
(ืงืืฉืืจ ืืืื) ืืืืืื. ืฉืืขืืจื ืืื ืืกืคืจ ืืื 0 ื-1.
mm-onoff ืงืืฉืืจ ืืืขืื|ืงืืฉืืจ ืืืื ืืชืืืื ืืืื ืืื ืืฆืืื ืืืืฆืข [ืคืงืืื...]
ืืงืืฉืืจ ืืืขืื ืื ืืืื ืืืื ืืกืืจืืืื ืืืขืืืจ ืืื ืืืืืจ ื
ืืฆืืื ืื ืืชืงืื ืืคื ืชืืืื ื ืงืืืช Poisson ืขื ืืืืฆืข ืืืืืจ
ืืฉืื ืืืื ืฉืืืฉืงืขื "ืืืคืขื" ื"ืืืื".
ื"ื-ืงืืฉืืจ [--uplink-log=ืฉื ืืงืืืฅ] [--downlink-log=ืฉื ืืงืืืฅ] [--ืืืจ-uplink] [--ืืืจ-
uplink-delay] [--ืืืจ-ืงืืฉืืจ ืืืื] [--ืืืจ-downlink-delay] [--ืคึผึทืขึทื] uplink-filename
ืฉื ืงืืืฅ downlink [ืคืงืืื...]
ื"ื-ืชืคืืงื-ืืจืฃ
mm-delay-graph
ืืืงื ืงืืฉืืจ ืืืืื ืืชืคืืงื ืขื ืืกืืจืช ืื ืืช ืฉืฆืืื ื
ืืชืืื ืืื ืชื ืืช ืืืืฆืืขืื ืืืชืงืืืื. ืึดืจึฐืืึนืช ื"ื-ืงืืฉืืจ(1).
ืชึทืฆึฐืคึผึดืืช ืืื ืขืืืื
ื"ื-ืืืจ [--ืืืจ-uplink] [--ืืืจ-ืงืืฉืืจ ืืืื] [ืคืงืืื...]
ืืฆืื ืขืืืื ืืื ืืื ืคืฉืช ืฉื ืงืฆื ืืืขืืจื ืื ืื ืก ืื ืืืืฆื ืื
ืืืื.
ืชืงืืื ื REPLAY ืืชืจื ืืื ืืจื ื
mm-webrecord ืืกืคืจืืื [ืคืงืืื...]
ืืฉืจืช ืืืืคื ืฉืงืืฃ ืืช ืืืืืจื ื-HTTP ืื-HTTPS ืืืืฆืืื, ืืืืกื ืืช
ืืงืฉืืช, ืชืืืืืช ืืชืืืืืช ืืืชืืืช IP ืฉื ืื ืฉืจืช ืืื ืืจื ื
ืืฆืจ ืงืฉืจ ืื ืชืื ืืกืคืจืืื. mm-webrecord ืืฉืชืืฉ ื-TLS ืืืชืืื ืขืฆืืืช
ืืืฉืืจ ื-proxy HTTPS ืฉืื, ืื ืฉืืืจื ืืืคืืคื ื ืืื ืืจื ื ืืืคืืกืืื ืืืืืช ืืืชื.
ืืืืจืืช ืืืืงื ืื ื ืืคืื ืืืืื, ืืืจื ืืื ื ืืชื ืืืืืช ืืชื ืืืืช ืื,
ืืืฉื: ืขื - ืืื ืชืขืืืช ืฆ'ืง ืืคืฉืจืืช ื wget(1) ืื ื --ืืืชืขืื-
ืฉืืืืืช ืชืขืืืืช ืืคืฉืจืืช ื ืืคืืคื ืืจืื(1).
mm-webreplay ืืกืคืจืืื [ืคืงืืื...]
ืืคืขืื ืืืืจืช ืฉื ืืคืขืื ืฉื ืฉืืจื ืืืคืขืื ืงืืืืช ืฉื mm-webrecord. ืื ืืืื ืืจืืื
ืืื mahimahi, ื mm-webreplay ืืืืื ืืื ืืืืืจ ืจืฉืช
ืืขืืื ืืืืฆืื. ืืืงืื ืืืช, ืืฉ ืื ืืืฉืงื ืจืฉืช ืืื ืืงืฉืืจืื ืืื ืืื ืืื
ืืชืืืช IP ืฉืื ืฉืจืช ืืื ืืจื ื ืืืคืขืื ืฉื ืฉืืจื ืขื ื ืืืงืฉื.
mm-webreplay ืืคืขืื ืืคืืฆ'ื 2(8) ืฉืจืช ืืื ืืจื ื ืงืฉืืจ ืืื ืืชืืืช IP ืืื
ืืชืื ืืืืื. ืื ืฉืจืช ืืื ืืจื ื ืืืงื ืืช ืืฉืจืช ืืืชืืื ืืื ื
ืืคืืืฉื ืืฉืืืจื. ืืขืช ืงืืืช ืืงืฉื ืืชืืืืช ืืืช ื-
ืืกืคืจืืื, ื-apache2 ืืืงืืื ืขืื ื ืขื ืืืชื ืชืฉืืื ืืื
ืฉื ืชืคืก ืืขืืจ.
mm-webreplay ื ืืชื ืืืฉืชืืฉ ืืื ืืืืื ืืช ืืืืฆืืขืื ืฉื ืืคืืคื ื ืืื ืืจื ื ืขื
ืืชืจื ืืื ืืจื ื ืืืจืืืื ืืืฉืคืขืช ืฉืื ืืืื ืืคืจืืืืงืืื ืืื ืืจื ื (ืืืฉื HTTP,
HTTP/2, SPDY, QUIC). ืื ืืืื ืืืืื ืืื ืฉืืืืจ ืืืืจ ืฉื ืืฃ ืืื ืืจื ื, mm-webreplay
ืฉืืืจ ืขื ืืืื ื ืืืจืืกืง ืฉื ืืชืจ ืืื ืืจื ื, ื ืงืฉืจ ื-IP ืืคืืขื
ืืชืืืืช ืฉืืืชืจ ืืืืืชื ืืฉืชืืฉ ืืื, ืืืืืฉ ืืงืฉืืช ืืืชืจ ืืื ืืจื ื ืืืืชื
ืฉืจืชืื.
ืืกืืืื
ืืฉืชื ื ืืกืืืื MAHIMAHI_BASE ืืืืืจ ืืืชืืืช IP ืฉื ืืืืจื, ืืืืฅ ืืื
ืึฐืืึนืึธื. ืื ืืืื ืืฉืืฉ ืืื ืืืฆืข ืืืืืืช ืชืกืจืืืืืืช ืขื ืกืืจืช mahimahi
ืืืืืื ืืืืืจืื ืื ืืื.
ืืืืืืืช
ืืื ืืืืืื ืคืื ืขื ืงืืฉืืจ ืืืฉืื, ืืืืื ืืืื ืืจื ื:
$ mm-delay 50 mm-loss uplink 0.2
[ืึฐืขึทืึผึตื 50 ืืืจืช] [ืึถืคืกึตื up=0.1] $
ืืื ืืืคืขืื ืคืื ื ืขื ืืืชื ืงืืฉืืจ:
$ mm-delay 50 mm-loss uplink 0.2 sh -c 'ping -c 10 -n $MAHIMAHI_BASE'
PING 100.64.0.1 (100.64.0.1) 56(84) ืืชืื ืฉื ื ืชืื ืื.
64 ืืชืื ื- 100.64.0.1: icmp_seq = 1 ttl = ืืื 63 = 101 ms
64 ืืชืื ื- 100.64.0.1: icmp_seq = 2 ttl = ืืื 63 = 100 ms
64 ืืชืื ื- 100.64.0.1: icmp_seq = 4 ttl = ืืื 63 = 101 ms
64 ืืชืื ื- 100.64.0.1: icmp_seq = 5 ttl = ืืื 63 = 100 ms
64 ืืชืื ื- 100.64.0.1: icmp_seq = 7 ttl = ืืื 63 = 101 ms
64 ืืชืื ื- 100.64.0.1: icmp_seq = 8 ttl = ืืื 63 = 101 ms
64 ืืชืื ื- 100.64.0.1: icmp_seq = 9 ttl = ืืื 63 = 101 ms
64 ืืชืื ื- 100.64.0.1: icmp_seq = 10 ttl = ืืื 63 = 101 ms
--- 100.64.0.1 ืกืืืืกืืืงืืช ืคืื ื ---
10 ืื ืืช ืฉืืืขืืจื, 8 ืืชืงืืื, 20% ืืืืื ืื ืืช, ืืื 8999ms
rtt min/avg/max/mdev = 100.910/101.009/101.092/0.279 ms
ืืื ืืืงืืื ืืขืื ืช ืขืืื ื www.nytimes.com:
$ mm-webrecord /tmp/nytimes chromium-browser --ignore-certificate-errors --user-data-dir=/tmp/nonexistent$(date +%s%N) www.nytimes.com
ืืฉืืืืฉ ืฉื --user-data-dir=/tmp/nonexistent$(date +%s%N) ืืื ืืื ืืข ืืช ืืืคืืคื
ืืฉืืืืฉ ืืืืจ ืืชืืืื ืืคืืคื ืืจืื ืงืืื.
ืืื ืืืจืื ื-Chrome ืืืืืจ ืืช ืืืชืจ ืืฉืืืจ ืืืืฆืขืืช ืงืืฉืืจ ืืืฉืื, ืืืืื ืฉืชืคืืงืชื ืืื
ืืืืื ืืืืืื ืืืช ืืืืื ืืื ืืื ืืืคืืช ืืฉื ืืื:
$ mm-webreplay /tmp/nytimes mm-delay 50 mm-loss uplink 0.1 mm-link <(echo 1) <(echo 1) -- chromium-browser --ignore-certificate-errors --user-data-dir=/ tmp/nonexistent$(date +%s%N) www.nytimes.com
ืืื ืืืงืืช ืจืฉืช ืกืืืืจืืช ืืฉืชื ื ืืืืืืื ืืช ืืฉืืืืฉ ืฉื ืชืืืื ืืจืฉืช:
$ mm-delay 20 mm-link --meter-all /usr/share/mahimahi/traces/Verizon-LTE-short.up /usr/share/mahimahi/traces/Verizon-LTE-short.down
[ืึฐืขึทืึผึตื 20 ืืืจืช] [ืงืืฉืืจ] $
ืืฉืชืืฉ ื-mm-webreplay ืืืื ืืจื ื ืืืืฆืขืืช ืฉืืจืืชื onworks.net