เบกเบทเปเบเบตเป, เบกเบตเบงเบดเบเบตเปเบเปเปเบเบเบตเปเบเบฝเบกเบเปเบญเบก (เปเบเบฑเบเปเบเบปเปเบฒเบเบญเบ) เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบดเบเบเบฒเบก IP (TS) streams, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบปเบงเบขเปเบฒเบ.
เบชเบฑเปเบเปเบเปเบฝเบงเบเบฑเบ TSDuck
TSDuck เปเบเบฑเบเบเบญเบเปเบง open source (เปเบเบญเบฐเบเบธเบเบฒเบ 2-Clause BSD) (เบเบธเบเบเบญเบ console utilities เปเบฅเบฐเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒ custom utilities เบซเบผเบท plugins) เบชเปเบฒเบฅเบฑเบ manipulating TS streams. เปเบเบฑเบเบงเบฑเบเบชเบฐเบเบธเบเปเบญเบ, เบกเบฑเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบ IP (multicast/unicast), http, hls, dvb tuners, dektec dvb-asi demodulator, เบกเบตเปเบเบทเปเบญเบเบเปเบฒเปเบเบตเบ TS-stream เบเบฒเบเปเบเปเบฅเบฐเบเบฒเบเบญเปเบฒเบเบเบฒเบเปเบเบฅเป. เบเบปเบเบเบฐเบฅเบดเบเบชเบฒเบกเบฒเบเบเบฝเบเปเบเบฑเบเปเบเบฅเป, IP (multicast/unicast), hls, dektec dvb-asi เปเบฅเบฐ HiDes modulators, เปเบเบทเปเบญเบเบซเบผเบดเปเบ (mplayer, vlc, xine) เปเบฅเบฐเบซเบผเบธเบเบฅเบปเบ. เปเบเปเบเบเปเบเบตเบเบฒเบเบเบฒเบฅเบฐเบเบญเบเบเปเบฒเบเปเบชเบฒเบกเบฒเบเบเบทเบเบฅเบงเบกเปเบเบปเปเบฒเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบเปเบฅเบฐเบเบปเบเบเบฐเบฅเบดเบ, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบปเบงเบขเปเบฒเบ, PID remapping, scrambling / descrambling, เบเบฒเบเบงเบดเปเบเบฒเบฐเบเปเบฒเบ CC, เบเบฒเบเบเบดเบเปเบฅเปเบญเบฑเบเบเบฒเบเบดเบ, เปเบฅเบฐเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบปเบเบเบฐเบเบดเบญเบทเปเบเปเบชเปเบฒเบฅเบฑเบเบเปเปเบฒ TS.
เปเบเบเบปเบเบเบงเบฒเบกเบเบตเป, IP streams (multicast) เบเบฐเบเบทเบเบเปเบฒเปเบเปเปเบเบฑเบ input, bitrate_monitor processors (เบเบฒเบเบเบทเปเบกเบฑเบเบเบฐเปเบเปเบเบงเปเบฒเบเบตเปเปเบกเปเบเบซเบเบฑเบ) เปเบฅเบฐเบเบฒเบเบเปเปเปเบเบทเปเบญเบ (CC counter analysis) processors เบเบฐเบเบทเบเบเปเบฒเปเบเป. เปเบเบเบเปเปเบกเบตเบเบฑเบเบซเบฒเปเบเป, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบปเบเปเบเบ IP multicast เบเปเบงเบเบเบฐเปเบเบเบงเบฑเบเบชเบฐเบเบธเบเปเบญเบเบญเบทเปเบเบเบตเปเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเปเบเบ TSDuck.
เบกเบตเปเบซเป
เบเปเปเปเบ, เบฎเบธเปเบ TSDuck 3.19-1520 เบเบทเบเบเปเบฒเปเบเป, Linux เบเบทเบเบเปเบฒเปเบเปเปเบเบฑเบ OS (debian 10 เบเบทเบเบเปเบฒเปเบเปเปเบเบทเปเบญเบเบฐเบเบฝเบกเบเบฒเบเปเบเปเปเบ, CentOS 7 เบเบทเบเบเปเบฒเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเปเบเปเบเบปเบงเบเบดเบ)
เบเบฒเบเบเบฐเบเบฝเบก TSDuck เปเบฅเบฐ OS
เบเปเบญเบเบเบตเปเบเบฐเบเบดเบเบเบฒเบกเบเบฒเบเปเบซเบผเบเบตเปเปเบเปเบเบดเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบซเปเปเบเปเปเบเบงเปเบฒ TSDuck เปเบฎเบฑเบเบงเบฝเบเบขเปเบฒเบเบเบทเบเบเปเบญเบเปเบฅเบฐเบเบฒเบเบซเบผเบธเบเบฅเบปเบเบเบฑเปเบเบเปเปเปเบเปเปเบเบตเบเบเบทเปเบเปเบเบฅเบฐเบเบฑเบเบเบฑเบเปเบเบทเบญเบเปเบฒเบเบซเบผเบท OS (socket). เบเบตเปเปเบกเปเบเบเปเบฒเปเบเบฑเบเปเบเบทเปเบญเบงเปเบฒเบเปเบฒเบเบเบฐเบเปเปเบเปเบญเบเปเบเบปเบฒเบเบฒเบเบซเบผเบฑเบเบเบตเปเบเบฒเบเบซเบผเบธเบเบฅเบปเบเปเบเบตเบเบเบถเปเบ - เปเบเปเบเบทเบญเบเปเบฒเบเบซเบผเบท "เบเบฒเบเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ." เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบงเบเปเบเบดเปเบเบเบฒเบเบซเบผเบธเบเบฅเบปเบเปเบเบฅเบฐเบเบฑเบเบเบฑเบเปเบเบทเบญเบเปเบฒเบเบเปเบงเบเบเปเบฒเบชเบฑเปเบ ethtool -S ethX, เบเบฒเบเบเบฑเบเปเบกเปเบเปเบฎเบฑเบเปเบเปเปเบเบ ethtool เบเบฝเบงเบเบฑเบ (เปเบเบเบเบปเบเบเบฐเบเบดเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบเบตเปเบก RX buffer (-G) เปเบฅเบฐเบเบฒเบเบเบฑเปเบเบเบดเบเบเบฒเบเปเบซเบผเบเบเบฒเบเบขเปเบฒเบ (-K)). เบเบฒเบกเบเปเบฒเปเบเบฐเบเปเบฒเบเบปเปเบงเปเบ, เบเบงเบเปเบเปเบเบญเบเปเบเบเบเปเบฒเบเบซเบฒเบเปเบเบทเปเบญเบฎเบฑเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบเบเบตเปเบงเบดเปเบเบฒเบฐ, เบเปเบฒเปเบเบฑเบเปเบเปเบเป, เบเบตเปเบเบฐเบซเบผเบธเบเบเปเบญเบเบเบปเบเบเบงเบเบเบตเปเบเปเปเบเบทเบเบเปเบญเบเปเบเบทเปเบญเบเบเบฒเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเบเบฒเบเบซเบผเบธเบเบฅเบปเบเปเบเปเปเบเบตเบเบเบทเปเบเบเปเบญเบกเปเบเบฑเบเบขเบนเปเปเบเบเบญเบเบเบฒเบเบงเบดเปเบเบฒเบฐเปเบเบทเปเบญเบเบเบฒเบเบกเบตเบเบฒเบเบเบฐเบฅเบฒเบเบญเบเบญเบทเปเบเป. เบเปเบฒเบญเบฑเบเบเบตเปเปเบเบฑเบเปเบเบเปเปเปเบเป (เบเปเบฒเบเบเบณเบฅเบฑเบเปเบเปเบเบญเบกเบเบดเบงเปเบเบตเบเบฐเปเบฒเบเบเปเบญเบ/ NUC เบเบตเปเบกเบตเบเบญเบเบญเบฑเบเบเบฝเบง), เบกเบฑเบเบชเบปเบกเบเบงเบเบเบตเปเบเบฐเบเบณเบเบปเบเบเปเบฒเบเบนเบฅเบดเบกเบฐเบชเบดเบเบเบญเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบเบเบตเปเบงเบดเปเบเบฒเบฐเปเบฅเปเบงเบเปเบฝเบงเบเบฑเบเบชเปเบงเบเบเบตเปเปเบซเบผเบทเบญเปเบเบญเบธเบเบฐเบเบญเบเบเบตเปเปเบเบทเปเบญเบเบงเบดเปเบเบฒเบฐเปเบเบทเปเบญเบกเบเปเป. เบเปเบฝเบงเบเบฑเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก virtual, เปเบเบเบตเปเบเบตเปเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบฅเบฐเบกเบฑเบเบฅเบฐเบงเบฑเบเปเบฅเบฐเบชเบฒเบกเบฒเบเบเบญเบเบซเบฒเบเบฒเบเบซเบผเบธเบเบฅเบปเบเบเบญเบเปเบเบฑเบเปเบเบฑเบเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเบเบญเบเบเบฒเบเบเปเบฒเบเบฎเปเบฒเบเบเบฒเบเปเบฅเบฐเบชเบดเปเบเบชเบธเบเบเปเบงเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบฒเบเปเบเปเบเบทเปเบญเบ virtual.
เบเบฒเบเบเบฐเบฅเบดเบเปเบฅเบฐเบเบฒเบเบเปเบญเบเบฎเบฑเบเบเบญเบเบเปเปเบฒเบเบฒเบเปเบเปเบเบปเปเบฒเบเบฒเบ
เปเบเบฑเบเบเบฑเปเบเบเบญเบเบเปเบฒเบญเบดเบเปเบเบเบฒเบเบเบฐเบเบฝเบก TSDuck, เบเบงเบเปเบฎเบปเบฒเบเบฐเบชเปเบฒเบเปเบฅเบฐเปเบเปเบฎเบฑเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบเบเบฒเบเปเบเปเบเบปเปเบฒเบเบฒเบเบเบฝเบงเปเบเบเปเบเป netns.
เบเบฒเบโเบเบฐโเบเบฝเบกโเบชเบฐโเบเบฒเบโเปเบงเบโเบฅเปเบญเบกโ:
ip netns add P #ัะพะทะดะฐัะผ netns P, ะฒ ะฝัะผ ะฑัะดะตั ะฟัะพะธัั
ะพะดะธัั ะฐะฝะฐะปะธะท ััะฐัะธะบะฐ
ip link add type veth #ัะพะทะดะฐัะผ veth-ะฟะฐัั - veth0 ะพััะฐะฒะปัะตะผ ะฒ netns ะฟะพ ัะผะพะปัะฐะฝะธั (ะฒ ััะพั ะธะฝัะตััะตะนั ะฑัะดะตั ะณะตะฝะตัะธัะพะฒะฐัััั ััะฐัะธะบ)
ip link set dev veth1 netns P #veth1 - ะฟะพะผะตัะฐะตะผ ะฒ netns P (ะฝะฐ ััะพะผ ะธะฝัะตััะตะนัะต ะฑัะดะตั ะฟัะธัะผ ััะฐัะธะบะฐ)
ip netns exec P ifconfig veth1 192.0.2.1/30 up #ะฟะพะดะฝะธะผะฐะตะผ IP ะฝะฐ veth1, ะฝะต ะธะผะตะตั ะทะฝะฐัะตะฝะธั ะบะฐะบะพะน ะธะผะตะฝะฝะพ
ip netns exec P ip ro add default via 192.0.2.2 #ะฝะฐัััะฐะธะฒะฐะตะผ ะผะฐััััั ะฟะพ ัะผะพะปัะฐะฝะธั ะฒะฝัััะธ nents P
sysctl net.ipv6.conf.veth0.disable_ipv6=1 #ะพัะบะปััะฐะตะผ IPv6 ะฝะฐ veth0 - ััะพ ะดะตะปะฐะตััั ะดะปั ัะพะณะพ, ััะพะฑั ะฒ ัััััะธะบ TX ะฝะต ะฟะพะฟะฐะดะฐะป ะฟะพััะพัะพะฝะฝะธะน ะผััะพั
ifconfig veth0 up #ะฟะพะดะฝะธะผะฐะตะผ ะธะฝัะตััะตะนั veth0
ip route add 239.0.0.1 dev veth0 #ัะพะทะดะฐัะผ ะผะฐััััั, ััะพะฑั ะะก ะฝะฐะฟัะฐะฒะปัะปะฐ ััะฐัะธะบ ะบ 239.0.0.1 ะฒ ััะพัะพะฝั veth0
เบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเปเบกเปเบเบเบฝเบกเบเปเบญเบก. เบเบงเบเปเบฎเบปเบฒเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเบงเบดเปเบเบฒเบฐเบเบฒเบเบเบฐเบฅเบฒเบเบญเบ:
ip netns exec P tsp --realtime -t
-I ip 239.0.0.1:1234
-P continuity
-P bitrate_monitor -p 1 -t 1
-O drop
เบเปเบญเบเบเบตเป "-p 1 -t 1" เบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบดเบเปเบฅเปเบญเบฑเบเบเบฒเบเบดเบเบเบธเบเบงเบดเบเบฒเบเบตเปเบฅเบฐเบชเบฐเปเบเบเบเปเปเบกเบนเบเบเปเบฝเบงเบเบฑเบเบญเบฑเบเบเบฒเบเบดเบเบเบธเบเบงเบดเบเบฒเบเบต.
เบเบงเบเปเบฎเบปเบฒเปเบเบตเบเบเบปเบงเปเบเบทเปเบญเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบเบเบตเปเบกเบตเบเบงเบฒเบกเปเบง 10 Mbit / s:
tsp -I craft
-P regulate -b 10000000
-O ip -p 7 -e --local-port 6000 239.0.0.1:1234
เบเปเบญเบเบเบตเป "-p 7 -e" เบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบซเบธเปเบกเบซเปเป 7 TS เปเบเบปเปเบฒเปเบเปเบ 1 เบเบธเบ IP เปเบฅเบฐเปเบฎเบฑเบเบกเบฑเบเบเบฒเบ (-e), i.e. เบฅเปเบเปเบฒ 7 เบเบธเบ TS เบเบฒเบเปเบเปเบเบเปเบเบตเบชเบธเบเบเปเบฒเบเบเปเบญเบเบเบตเปเบเบฐเบชเบปเปเบเบเบธเบ IP.
เบเบปเบงเบงเบดเปเบเบฒเบฐเปเบฅเบตเปเบกเบชเบปเปเบเบเปเปเบเบงเบฒเบกเบเบตเปเบเบฒเบเปเบงเป:
* 2020/01/03 14:55:44 - bitrate_monitor: 2020/01/03 14:55:44, TS bitrate: 9,970,016 bits/s
* 2020/01/03 14:55:45 - bitrate_monitor: 2020/01/03 14:55:45, TS bitrate: 10,022,656 bits/s
* 2020/01/03 14:55:46 - bitrate_monitor: 2020/01/03 14:55:46, TS bitrate: 9,980,544 bits/s
เปเบเบเบฑเบเบเบธเบเบฑเบเปเบเบตเปเบกเบเบฒเบเบขเบญเบ:
ip netns exec P iptables -I INPUT -d 239.0.0.1 -m statistic --mode random --probability 0.001 -j DROP
เปเบฅเบฐเบเปเปเบเบงเบฒเบกเปเบเบเบเบตเปเบเบฐเบเบปเบเบงเปเบฒ:
* 2020/01/03 14:57:11 - continuity: packet index: 80,745, PID: 0x0000, missing 7 packets
* 2020/01/03 14:57:11 - continuity: packet index: 83,342, PID: 0x0000, missing 7 packets
เปเบเบดเปเบเบเบฒเบเบงเปเบฒ. เบเบงเบเปเบฎเบปเบฒเบเบดเบเบเบฒเบเบชเบนเบเปเบชเบเปเบเบฑเบเปเบเบฑเบ (ip netns exec P iptables -F) เปเบฅเบฐเบเบฐเบเบฒเบเบฒเบกเปเบเบตเปเบกเบญเบฑเบเบเบฒเบเบดเบเบเบญเบเปเบเบทเปเบญเบเบเบฑเปเบเปเบเปเบเบฑเบ 100 Mbit/s. เบเบฒเบเบงเบดเปเบเบฒเบฐเบฅเบฒเบเบเบฒเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบญเบ CC เปเบฅเบฐเบเบฐเบกเบฒเบ 75 Mbit / s เปเบเบเบเบตเปเบเบฐเปเบเบฑเบ 100. เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฒเบเบฒเบกเบเบญเบเบซเบฒเบเบนเปเบเบตเปเบเปเบญเบเบเปเบฒเบเบด - เปเบเบทเปเบญเบเบเปเบฒเปเบเบตเบเปเบเบเปเบฒเบเปเปเปเบเปเบฎเบฑเบเบชเบฒเบซเบผเบทเบเบฑเบเบซเบฒเบเปเปเปเบเปเบขเบนเปเปเบเบกเบฑเบ, เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเปเบฅเบตเปเบกเบเบปเปเบเบชเปเบฒเบ. เบเปเบฒเบเบงเบเปเบเบฑเบเปเบเบฑเบเบเบปเบเบเบตเป (700000 เบเบญเบ TS = 100000 เบเบธเบ IP):
# ifconfig veth0 | grep TX
TX packets 151825460 bytes 205725459268 (191.5 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# tsp -I craft -c 700000 -P regulate -b 100000000 -P count -O ip -p 7 -e --local-port 6000 239.0.0.1:1234
* count: PID 0 (0x0000): 700,000 packets
# ifconfig veth0 | grep TX
TX packets 151925460 bytes 205861259268 (191.7 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
เบเบฑเปเบเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบซเบฑเบเปเบเป, เปเบเป 100000 เบเบธเบ IP เปเบเปเบเบทเบเบชเปเบฒเบเบเบทเปเบ (151925460-151825460). เบเบฑเปเบเบเบฑเปเบ, เปเบซเปเบเบงเบเปเบฎเบปเบฒเบเบดเบเบญเบญเบเบชเบดเปเบเบเบตเปเปเบเบตเบเบเบถเปเบเบเบฑเบเปเบเบทเปเบญเบเบงเบดเปเบเบฒเบฐ, เบชเปเบฒเบฅเบฑเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบงเบเปเบเบดเปเบเบเบฑเบเบเบปเบงเบเบฑเบ RX เปเบ veth1, เบกเบฑเบเปเบเบปเปเบฒเบเบฝเบกเบเบฑเบเบขเปเบฒเบเปเบเบฑเปเบกเบเบงเบเบเบฑเบเปเบเบ TX เปเบ veth0, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเปเบเบดเปเบเบชเบดเปเบเบเบตเปเปเบเบตเบเบเบถเปเบเปเบเบฅเบฐเบเบฑเบเปเบเบปเปเบฒเบฎเบฑเบ:
# ip netns exec P cat /proc/net/udp
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode ref pointer drops
133: 010000EF:04D2 00000000:0000 07 00000000:00000000 00:00000000 00000000 0 0 72338 2 00000000e0a441df 24355
เบเบตเปเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบดเปเบเบเปเบฒเบเบงเบเบเบฒเบเบซเบผเบธเบเบฅเบปเบ = 24355. เปเบเบเบธเบ TS เบเบตเปเปเบกเปเบ 170485 เบซเบผเบท 24.36% เบเบญเบ 700000, เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเปเบซเบฑเบเบงเปเบฒ 25% เบเบฝเบงเบเบฑเบเบเบญเบ bitrate เบเบตเปเบชเบนเบเปเบชเบเปเบกเปเบเบเบฒเบเบซเบผเบธเบเบฅเบปเบเปเบเปเบเบปเปเบฒเบฎเบฑเบ UDP. เบเบฒเบเบซเบผเบธเบเบฅเบปเบเปเบเบเบฑเบญเบเปเบเบฑเบ UDP เบกเบฑเบเบเบฐเปเบเบตเบเบเบทเปเบเปเบเบทเปเบญเบเบเบฒเบเบเบฒเบเบเบฒเบเบเบฑเบเปเบเบต, เปเบเบดเปเบเบเบฐเบซเบเบฒเบ socket buffer เปเบฅเบตเปเบกเบเบปเปเบเปเบฅเบฐเบเบฐเบซเบเบฒเบ socket buffer เบชเบนเบเบชเบธเบ:
# sysctl net.core.rmem_default
net.core.rmem_default = 212992
# sysctl net.core.rmem_max
net.core.rmem_max = 212992
เบเบฑเปเบเบเบฑเปเบ, เบเปเบฒเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเปเปเบฎเปเบญเบเบเปเบเบฐเบซเบเบฒเบ buffer เบขเปเบฒเบเบเบฑเบเปเบเบ, เปเบเบปเปเบฒเบชเบฝเบเบเบทเบเบชเปเบฒเบเบเบทเปเบเบเปเบงเบ buffer 208 KB, เปเบเปเบเปเบฒเบเบงเบเปเบเบปเบฒเบฎเปเบญเบเบเปเปเบเบตเปเบกเปเบเบตเบก, เบเบงเบเปเบเบปเบฒเบเบฑเบเบเปเปเปเบเปเบฎเบฑเบเบชเบดเปเบเบเบตเปเบฎเปเบญเบเบเป. เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเบเบปเบเบเบฐเบซเบเบฒเบ buffer เปเบ tsp เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบ IP (-buffer-size), เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเปเปเบเบฐเบเบฐเบซเบเบฒเบ socket เปเบฅเบตเปเบกเบเบปเปเบ, เปเบเปเบเบฝเบเปเบเปเบเปเบฒเบเบปเบเบเบฐเบซเบเบฒเบ buffer เปเบเบปเปเบฒเบฎเบฑเบเบชเบนเบเบชเบธเบเปเบฅเบฐเบฅเบฐเบเบธเบเบฐเบซเบเบฒเบ buffer เบขเปเบฒเบเบเบฑเบเปเบเบเปเบเบเบเปเบฒเบเบเบฒเบ arguments tsp:
sysctl net.core.rmem_max=8388608
ip netns exec P tsp --realtime -t -I ip 239.0.0.1:1234 -b 8388608 -P continuity -P bitrate_monitor -p 1 -t 1 -O drop
เบเปเบงเบเบเบฒเบเบเบฑเบ socket buffer เบเบตเป, เปเบเบเบฑเบเบเบธเบเบฑเบเบญเบฑเบเบเบฒเบเบดเบเบเบตเปเบฅเบฒเบเบเบฒเบเปเบกเปเบเบเบฐเบกเบฒเบ 100Mbps, เบเปเปเบกเบตเบเปเปเบเบดเบเบเบฒเบ CC.
เบญเบตเบเบเบฒเบกเบเบฒเบเบเปเบฅเบดเปเบเบ CPU เบเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ tsp เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบ. เบเปเบฝเบงเบเปเบญเบเบเบฑเบเบซเบเบถเปเบ core i5-4260U CPU @ 1.40GHz, เบเบฒเบเบงเบดเปเบเบฒเบฐเบเบฒเบเปเบซเบผ 10Mbps เบเบฐเบเปเบญเบเบเบฒเบ CPU 3-4%, 100Mbps - 25%, 200Mbps - 46%. เปเบกเบทเปเบญเบเบฑเปเบ % Packet Loss, เบเบฒเบเปเบซเบผเบเปเบ CPU เบเปเปเปเบเปเปเบเบตเปเบกเบเบถเปเบ (เปเบเปเบญเบฒเบเบเบฐเบซเบผเบธเบเบฅเบปเบ).
เปเบเบฎเบฒเบเปเบงเบเบตเปเบกเบตเบเบปเบเบเบฐเบฅเบดเบเบซเบผเบฒเบ, เบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเบชเปเบฒเบเปเบฅเบฐเบงเบดเปเบเบฒเบฐเบชเบฒเบเบเปเปเบฒเบซเบผเบฒเบเบเปเบงเบฒ 1Gb / s เปเบเบเบเปเปเบกเบตเบเบฑเบเบซเบฒเปเบเป.
เบเบฒเบเบเบปเบเบชเบญเบเปเบเบเบฑเบเปเบเบทเบญเบเปเบฒเบเบเบตเปเปเบเปเบเบดเบ
เบซเบผเบฑเบเบเบฒเบเบเบฒเบเบเบปเบเบชเบญเบเบเบนเป veth, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบญเบปเบฒเบชเบญเบเปเบฎเบเบซเบผเบทเบชเบญเบเบเบญเบเบเบญเบเบซเบเบถเปเบเปเบฎเบ, เปเบเบทเปเบญเบกเบเปเปเบเบญเบเบเบฑเบเบเบฑเบเปเบฅเบฐเบเบฑเบ, เปเบฅเปเบเปเบเบทเปเบญเบเบเปเบฒเปเบเบตเบเปเบเบเปเบฒเปเบเบซเบเบถเปเบ, เปเบฅเบฐเปเบเบทเปเบญเบเบงเบดเปเบเบฒเบฐเบเบตเบชเบญเบ. เบเปเปเบกเบตเบเบงเบฒเบกเปเบเบเปเบเบขเบนเปเบเบตเปเบเบตเป, เปเบเปเบเบงเบฒเบกเบเบดเบเปเบฅเปเบงเบกเบฑเบเบเบฑเบเบซเบกเบปเบเปเบกเปเบเบเบถเปเบเบเบฑเบเบฎเบฒเบเปเบง, เบกเบฑเบเบญเปเบญเบเบเบงเปเบฒ, เบกเบฑเบเบเบฐเบกเบตเบเบงเบฒเบกเบซเบเปเบฒเบชเบปเบเปเบเบซเบผเบฒเบเบขเบนเปเบเบตเปเบเบตเป.
เบเบฒเบเบเปเบฒเปเบเปเบเปเปเบกเบนเบเบเบตเปเปเบเปเบฎเบฑเบเปเบเบเบฅเบฐเบเบปเบเบเบฒเบเบเบดเบเบเบฒเบก (Zabbix)
tsp เบเปเปเบกเบต API เบเบตเปเปเบเบทเปเบญเบเบชเบฒเบกเบฒเบเบญเปเบฒเบเปเบเปเปเบเบฑเปเบ SNMP เบซเบผเบทเบเปเบฒเบเบเบทเบเบฑเบ. เบเปเปเบเบงเบฒเบก CC เบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบฅเบงเบเบฅเบงเบกเบขเปเบฒเบเบซเบเปเบญเบ 1 เบงเบดเบเบฒเบเบตเบเปเปเบเบฑเปเบ (เปเบเบเบกเบตเบญเบฑเบเบเบฒเบชเปเบงเบเบชเบนเบเบเบญเบเบเบฒเบเบชเบนเบเปเบชเบเปเบเบฑเบเปเบเบฑเบ, เบชเบฒเบกเบฒเบเบกเบตเบซเบผเบฒเบเบฎเปเบญเบ / เบเบฑเบ / เบชเบดเบเบเบฑเบเบเปเปเบงเบดเบเบฒเบเบต, เบเบถเปเบเบเบฑเบเบญเบฑเบเบเบฒเบเบดเบ).
เบเบฑเปเบเบเบฑเปเบ, เปเบเบทเปเบญเบเบฑเบเบเบถเบเบเบฑเบเบชเบญเบเบเปเปเบกเบนเบเปเบฅเบฐเปเบเปเบกเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบงเบฒเบกเบเบดเบเบเบฒเบ CC เปเบฅเบฐเบญเบฑเบเบเบฒเบเบดเบเปเบฅเบฐเปเบฎเบฑเบเปเบซเปเบเบฒเบเบเบฐเปเบเบเบเบญเบเบญเบธเบเบฐเบเบดเปเบซเบ, เบญเบฒเบเบเบฐเบกเบตเบเบฒเบเปเบฅเบทเบญเบเบเบฑเปเบเบเปเปเปเบเบเบตเป:
- parse เปเบฅเบฐเบฅเบงเบเบฅเบงเบก (เปเบเบ CC) เบเบปเบเบเบฐเบฅเบดเบ tsp, i.e. เบเปเบฝเบเบกเบฑเบเปเบเบปเปเบฒเปเบเปเบเบฎเบนเบเปเบเบเบเบตเปเบเปเบญเบเบเบฒเบ.
- เปเบเบตเปเบก tsp เบเบปเบงเบกเบฑเบเปเบญเบเปเบฅเบฐ / เบซเบผเบท plugins เปเบเปเบเบเปเบเบต bitrate_monitor เปเบฅเบฐเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบเปเบเบทเปเบญเปเบซเปเบเบปเบเปเบเปเบฎเบฑเบเปเบกเปเบเบเบปเบเบเบฐเบฅเบดเบเปเบเบฎเบนเบเปเบเบเบเบตเปเปเบเบทเปเบญเบเบชเบฒเบกเบฒเบเบญเปเบฒเบเปเบเปเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบเบฅเบฐเบเบปเบเบเบฒเบเบเบดเบเบเบฒเบก.
- เบเบฝเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบญเบเบเปเบฒเบเบขเบนเปเปเบเบดเบเบชเบธเบเบเบญเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบ tsduck.
เปเบเปเบเบญเบ, เบเบฒเบเปเบฅเบทเบญเบ 1 เปเบกเปเบเบเปเบฒเบเบเบตเปเบชเบธเบเบเปเบฝเบงเบเบฑเบเบเบงเบฒเบกเบเบฐเบเบฒเบเบฒเบก, เปเบเบเบชเบฐเปเบเบฒเบฐเปเบกเปเบเบเบฒเบเบเบดเบเบฒเบฅเบฐเบเบฒเบงเปเบฒ tsduck เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบเบเบทเบเบเบฝเบเปเบเบฅเบฐเบเบฑเบเบเปเปเบฒ (เปเบเบเบกเบฒเบเบเบฐเบเบฒเบเบเบตเปเบเบฑเบเบชเบฐเปเบซเบก) เบเบฒเบชเบฒ (C ++)
A เบเปเบฒเบเบเบฒเบ bash parser + aggregator prototype เบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบงเปเบฒเปเบ 10Mbps stream เปเบฅเบฐ 50% packet เบชเบนเบเปเบชเบ (เบเปเบฅเบฐเบเบตเบเบตเปเบฎเปเบฒเบเปเบฎเบเบเบตเปเบชเบธเบ), เบเบฐเบเบงเบเบเบฒเบ bash เปเบเป CPU 3-4 เปเบเบปเปเบฒเบซเบผเบฒเบเบเปเบงเบฒเบเบฐเบเบงเบเบเบฒเบ tsp เบเบปเบงเบกเบฑเบเปเบญเบ. เบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบตเปเบเปเปเบชเบฒเบกเบฒเบเบเบญเบกเบฎเบฑเบเปเบเป. เปเบเปเบเบดเบเปเบฅเปเบง, เบเบดเปเบเบชเปเบงเบเบเบญเบเบเบปเปเบเปเบเบเบเบตเปเปเบกเปเบเบขเบนเปเบเปเบฒเบเบฅเบธเปเบกเบเบตเป
Noodles เบชเบธเบ basha
#!/usr/bin/env bash
missingPackets=0
ccErrorSeconds=0
regexMissPackets='^* (.+) - continuity:.*missing ([0-9]+) packets$'
missingPacketsTime=""
ip netns exec P tsp --realtime -t -I ip -b 8388608 "239.0.0.1:1234" -O drop -P bitrate_monitor -p 1 -t 1 -P continuity 2>&1 |
while read i
do
#line example:* 2019/12/28 23:41:14 - continuity: packet index: 6,078, PID: 0x0100, missing 5 packets
#line example 2: * 2019/12/28 23:55:11 - bitrate_monitor: 2019/12/28 23:55:11, TS bitrate: 4,272,864 bits/s
if [[ "$i" == *continuity:* ]]
then
if [[ "$i" =~ $regexMissPackets ]]
then
missingPacketsTimeNew="${BASH_REMATCH[1]}" #timestamp (seconds)
if [[ "$missingPacketsTime" != "$missingPacketsTimeNew" ]] #new second with CC error
then
((ccErrorSeconds += 1))
fi
missingPacketsTime=$missingPacketsTimeNew
packets=${BASH_REMATCH[2]} #TS missing packets
((missingPackets += packets))
fi
elif [[ "$i" == *bitrate_monitor:* ]]
then
: #...
fi
done
เบเบญเบเปเบซเบเบทเบญเบเบฒเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบเปเบฒเบเบตเปเบเปเปเปเบเปเบฎเบฑเบเบเบฒเบเบเบญเบกเบฎเบฑเบ, เบเปเปเบกเบตเบเบฐเบเบนเปเบเบปเบเบเบฐเบเบดเปเบ bash, เบงเบฝเบ bash เปเบกเปเบเบเบฐเบเบงเบเบเบฒเบเปเบญเบเบฐเบฅเบฒเบเปเบฅเบฐเบเปเบญเบเบเปเบญเบเบเบฝเบเบกเบนเบเบเปเบฒเบเบญเบ Packets เบเบตเปเบเบฒเบเบซเบฒเบเปเบเบซเบเบถเปเบเบเบฑเปเบเบเปเปเบงเบดเบเบฒเบเบตเบเปเบฝเบงเบเบฑเบเบเบปเบเบเบฐเบเบปเบเบเปเบฒเบเบเบฝเบ (เปเบกเบทเปเบญเปเบเปเบฎเบฑเบเบเปเปเบเบงเบฒเบกเบญเบฑเบเบเบฒเบเบดเบเบเบตเปเปเบเบปเปเบฒเบกเบฒเบเบธเบเปเบงเบดเบเบฒเบเบต). เบเบฑเปเบเบเบฑเปเบ, bash เปเบเปเบเบทเบเบเบฐเปเบงเปเบขเปเบฒเบเบเบฝเบงเปเบฅเบฐเบกเบฑเบเบเบทเบเบเบฑเบเบชเบดเบเปเบเบเบฝเบ wrapper (parser + aggregator) เปเบ golang. เบเบฒเบเบเปเบฅเบดเปเบเบ CPU เบเบญเบเบฅเบฐเบซเบฑเบเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบเปเบ golang เปเบกเปเบ 4-5 เปเบเบทเปเบญเบซเบเปเบญเบเบเปเบงเบฒเบเบฐเบเบงเบเบเบฒเบ tsp เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบ. เบเบฒเบเปเบฅเบฑเปเบเบเบญเบ wrapper เปเบเบเบเบฒเบเบเปเบฝเบเปเบเบ bash เบเบฑเบ golang เปเบกเปเบเบเบฐเบกเบฒเบ 16 เปเบเบทเปเบญเปเบฅเบฐเบเบปเบเปเบเปเบฎเบฑเบเปเบเบเบฅเบงเบกเปเบกเปเบเบเบญเบกเบฎเบฑเบ (CPU overhead 25% เปเบเบเปเบฅเบฐเบเบตเบฎเปเบฒเบเปเบฎเบเบเบตเปเบชเบธเบ). เปเบเบฅเปเปเบซเบผเปเบ golang เบเบฑเปเบเบขเบนเป
เบเบฒเบเปเบเบตเบเบเบปเบงเบซเปเป
เปเบเบทเปเบญเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเบซเปเป, เปเบกเปเปเบเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบตเปเบเปเบฒเบเบเบฒเบเบเบตเปเบชเบธเบเบชเปเบฒเบฅเบฑเบ systemd เปเบเปเบเบทเบเบชเปเบฒเบเบเบทเปเบ (
เปเบเบทเปเบญเบชเปเบฒเบเบเบปเบงเบขเปเบฒเบเบเบญเบเบเบฒเบเบเปเบฅเบดเบเบฒเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบฒเบชเบฑเปเบเปเบเบตเบเปเบเป systemctl [email protected]: 1234 เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบงเบเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบ systemctl [email protected]: 1234
เบเบฒเบเบเบปเปเบเบเบปเบเบเบฒเบ Zabbix
เบเบฑเปเบเบเบฑเปเบ zabbix เบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบซเปเบเบฒเบเบเบปเปเบเบเบปเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเปเบฅเปเบ,
เปเบกเปเปเบเบ Zabbix
เบเบฑเบเบเบตเบฅเบฒเบเบเบฒเบเบเบงเบเบเบฒเบชเบฑเปเบเป (เบเบต, เบเบฐเปเบเบฑเบเปเบเบงเปเบเบเปเบฒเบเบนเปเปเบเบเบนเปเบเบถเปเบเบเบฑเบเบชเบดเบเปเบเปเบเปเบกเบฑเบ)
- เปเบซเปเปเบเปเปเบเบงเปเบฒ tsp เบเปเปเปเบเปเบซเบผเบธเบเบฅเบปเบเบเบญเบเบเบฒเบเปเบเปเปเบเบทเปเบญเบเปเบ "เบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบก" (เปเบเบทเปเบญเบเบเปเบฒเปเบเบตเบเปเบฅเบฐเปเบเบทเปเบญเบเบงเบดเปเบเบฒเบฐเปเบกเปเบเปเบเบทเปเบญเบกเบเปเปเปเบเบเบเบปเบ), เบเปเบฒเบกเบตเบเบฒเบเบซเบผเบธเบเบฅเบปเบ, เปเบเบดเปเบเบเบธเบ 2 เบซเบผเบทเบเปเปเบเบงเบฒเบกเบเบญเบเบเบปเบเบเบงเบฒเบกเบเปเบฝเบงเบเบฑเบเปเบฅเบทเปเบญเบเบเบตเป.
- เปเบฎเบฑเบเปเบซเปเบเบฒเบเบเบฑเบเปเบเปเบเบเบญเบ socket buffer เบชเบนเบเบชเบธเบ (net.core.rmem_max=8388608).
- เบฅเบงเบเบฅเบงเบก tsduck-stat.go (เปเบเบชเปเบฒเบ tsduck-stat.go).
- เปเบชเปเปเบกเปเปเบเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเปเบ /lib/systemd/system.
- เปเบฅเบตเปเบกเบเบฒเบเบเปเบฅเบดเบเบฒเบเบเปเบงเบ systemctl, เบเบงเบเปเบเบดเปเบเบงเปเบฒเบเบปเบงเบเบฑเบเปเบฅเบตเปเบกเบเบฒเบเบปเบ (grep "" /dev/shm/tsduck-stat/*). เบเปเบฒเบเบงเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเปเบเบเบเปเบฒเบเบงเบเบเบญเบเบเบฒเบเบเปเบฒเบเบเบญเบ multicast. เปเบเบเบตเปเบเบตเปเบเปเบฒเบเบญเบฒเบเบเบฐเบเปเบญเบเบชเปเบฒเบเปเบชเบฑเปเบเบเบฒเบเปเบเบซเบฒเบเบธเปเบก multicast, เบเบฒเบเบเบตเบญเบฒเบเบเบดเบเบเบฒเบเปเบเปเบเบฒเบ rp_filter เบซเบผเบทเบชเปเบฒเบเปเบชเบฑเปเบเบเบฒเบเปเบเบซเบฒ ip เปเบซเบผเปเบ.
- เบเปเบฒเปเบเบตเบเบเบฒเบ discovery.sh, เปเบซเปเปเบเปเปเบเบงเปเบฒเบกเบฑเบเบชเปเบฒเบ json.
- เปเบเบตเปเบกเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบปเบงเปเบเบ zabbix, เบฃเบตเบชเบฐเบเบฒเบเบเบปเบงเปเบเบ zabbix.
- เบญเบฑเบเปเบซเบฅเบเปเบกเปเปเบเบเปเบชเป zabbix, เบเปเบฒเปเบเปเบกเบฑเบเบเบฑเบเปเบเบปเปเบฒเบเบฒเบเบเบตเปเบเปเบฒเบฅเบฑเบเบเบดเบเบเบฒเบกเปเบฅเบฐเบเบดเบเบเบฑเปเบ zabbix-agent, เบฅเปเบเปเบฒเบเบฐเบกเบฒเบ 5 เบเบฒเบเบต, เปเบเบดเปเบเบงเปเบฒเบกเบตเบฅเบฒเบเบเบฒเบเปเบซเบกเป, เปเบชเบฑเปเบเบชเบฐเปเบเบเปเบฅเบฐ triggers.
เบเบปเบ
เบชเปเบฒเบฅเบฑเบเบงเบฝเบเบเบฒเบเบเบฒเบเบเปเบฒเบเบปเบเบเบฒเบเบชเบนเบเปเบชเบเปเบเบฑเบเปเบเบฑเบ, เบกเบฑเบเปเบเบทเบญเบเบเบฝเบเบเป, เบขเปเบฒเบเบซเบเปเบญเบเบกเบฑเบเบเปเปเบเบตเบเบงเปเบฒเบเปเปเบกเบตเบเบฒเบเบเบดเบเบเบฒเบก.
เปเบเปเบเบดเบเปเบฅเปเบง, CC "เบเบฒเบเบชเบนเบเปเบชเบ" เบชเบฒเบกเบฒเบเปเบเบตเบเบเบทเปเบเปเบเปเปเบเปเบงเบฅเบฒเบเบตเปเบเบฒเบเบฅเบงเบกเปเบญเบปเบฒเบเบดเปเบเบงเบดเบเบตเปเบญ (เปเบเบปเปเบฒเบเบตเปเบเปเบญเบเบฎเบนเป, เบเบตเปเปเบกเปเบเบงเบดเบเบตเบเบฒเบเปเบชเปเปเบเบชเบนเบเปเบเบฅเบฐเบเบฒเบเบเปเบญเบเบเบดเปเบเปเบเบชเบฐเบซเบฐเบเบฑเบเบฅเบฑเบเปเบเบ, เปเบเบฑเปเบ: เปเบเบเบเปเปเบกเบตเบเบฒเบเบเบดเบเปเบฅเปเบเบทเบ CC), เบเบตเปเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบปเบเบเปเบฒ. เบงเบดเบเบตเปเบเปเปเบเบเบตเปเปเบเบฑเบเปเบเบปเปเบฒเบเบญเบเบเบฒเบเบชเปเบงเบเบซเบฅเบตเบเบฅเปเบฝเบเบเบฑเบเบซเบฒเบเบตเปเปเบเบเบเบฒเบเบเบงเบเบชเบญเบเบเปเบฒเบ SCTE-35 (เบเปเบฒเปเบเบตเปเบกเปเบเบเปเบเบทเปเบญเบเบเปเบฒเปเบเบตเบเบเปเปเบฒ).
เบเบฒเบเบเบธเบเบเบญเบเบเบฒเบเบเบงเบเบชเบญเบเบเบธเบเบเบฐเบเบฒเบเบเบฒเบเบเบปเบเบชเบปเปเบ, เบเบฒเบเบเบงเบเบชเบญเบ jitter (IAT) เปเบกเปเบเบเปเปเบเบฝเบเบเป, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ เบญเบธเบเบฐเบเบญเบเปเบเบฅเบฐเบเบฑเบ (เบเปเปเบงเปเบฒเบเบฐเปเบเบฑเบ modulators เบซเบผเบทเบญเบธเบเบฐเบเบญเบเบชเบดเปเบเบชเบธเบ) เบกเบตเบเปเปเบเปเบฒเบเบปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบฅเบฒเบกเบดเปเบเบตเบเบตเปเปเบฅเบฐเบกเบฑเบเปเบเบฑเบเปเบเบเปเปเปเบเปเบเบตเปเบเบฐ inflate jitbuffer เบเบฐเบซเบผเบญเบเปเบ. เปเบฅเบฐเบเบฒเบเบชเบฑเปเบเบชเบฐเปเบเบทเบญเบเบชเบฒเบกเบฒเบเบฅเบญเบเปเบเปเปเบเปเบงเบฅเบฒเบเบตเปเบเบฒเบเบเบปเบเบชเบปเปเบเบเปเบฒเปเบเปเบญเบธเบเบฐเบเบญเบเบเบตเปเบกเบต buffers เบเบฐเบซเบเบฒเบเปเบซเบเปเปเบฅเบฐ QoS เบเปเปเปเบเปเบเบทเบเบเบฑเปเบเบเปเบฒเบซเบผเบทเบเปเปเปเบเปเบเบฑเปเบเบเปเบฒเบเบตเบเปเบเบตเปเบเบฐเบชเบปเปเบเบเบฒเบเบเบฐเบฅเบฒเบเบญเบเปเบเปเบงเบฅเบฒเบเบตเปเปเบเปเบเบดเบเบเบฑเปเบเบเปเบฒเบง.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com