ืืืึทื ื, ืขืก ืืขื ืขื ืคืึทืจืืืง (ืคึผืจืึทืคึผืจืืืึทืืขืจื) ืกืึทืืืฉืึทื ื ืคึฟืึทืจ ืืึธื ืืืึธืจืื ื IP (TS) ืกืืจืืื, ืืืฉื
ืืืืขืจ ืืขืงืืฆืขืจ ืืืขืื TSDuck
TSDuck ืืื ืึทื ืึธืคึฟื ืืงืืจ (2-ืงืืึธื BSD ืืขืจืืืืืขื ืืฉ) ืืืืืืืืืจื (ืึท ืกืืื ืคืื ืงืึทื ืกืึธืื ืืืืืืึทืืื ืืื ืึท ืืืืืืึธืืขืง ืคึฟืึทืจ ืืขืืืขืืึธืคึผืื ื ืื ืื ืืืืืืึทืืื ืึธืืขืจ ืคึผืืืืื ืก) ืคึฟืึทืจ ืืึทื ืืคึผืืึทืืืืืื ื TS ืกืืจืืื. ืืื ืึท ืึทืจืืึทื ืฉืจืืึทื, ืขืก ืงืขื ืขื ืึทืจืืขืื ืืื IP (ืืืืืืงืึทืกื/ืื ืืงืึทืกื), ืืืืคึผ, ืืืก, ืืืื ืืื ืขืจืก, ืืขืงืืขืง ืืืื-ืึทืกื ืืขืืึธืืืืึทืืึธืจ, ืขืก ืืื ืึทื ืื ืขืจืืขื ืฅ-ืกืืจืื ืืขื ืขืจืึทืืึธืจ ืืื ืืืืขื ืขื ืคืื ืืขืงืขืก. ืืขืจ ืจืขืืืืืึทื ืงืขื ืขื ืืืื ืฉืจืืืื ืฆื ืึท ืืขืงืข, IP (ืืืืืืงืึทืกื / ืื ืืงืึทืกื), hls, dektec ืืืื-ืึทืกื ืืื ืืืืขืก ืืึธืืืืึทืืึธืจืก, ืคึผืืืึทืขืจืก (ืืคึผืืืึทืขืจ, ืืืืง, ืงืกืื) ืืื ืงืึทืคึผ. ืคืึทืจืฉืืื ืคืึทืจืงืขืจ ืคึผืจืึทืกืขืกืขืจื ืงืขื ืขื ืืืื ืึทืจืืึทื ืืขืจืขืื ื ืฆืืืืฉื ืึทืจืืึทื ืฉืจืืึทื ืืื ืจืขืืืืืึทื, ืืืฉื, PID ืจืขืืึทืคึผืื ื, ืกืงืจืึทืืืึทืืื ื / ืืขืกืงืจืึทืืืืื ื, CC ืืึธืืืึทื ืง ืึทื ืึทืืืกืืก, ืืืืจืึทืืข ืืขืืฉืื ืืื ืื ืืขืจืข ืืืคึผืืฉ ืึทืคึผืขืจืืืฉืึทื ื ืคึฟืึทืจ TS ืกืืจืืื.
ืืื ืืขื ืึทืจืืืงื, IP ืกืืจืืื (ืืืืืืงืึทืกื) ืืืขื ืืืื ืืขืืืืื ื ืืื ืึท ืึทืจืืึทื ืฉืจืืึทื, ืื ืคึผืจืึทืกืขืกืขืจื ืืืืจืึทืืข_ืืึธื ืืืึธืจ (ืคืื ืื ื ืึธืืขื ืขืก ืืื ืงืืึธืจ ืืืึธืก ืขืก ืืื) ืืื ืงืึทื ืืื ืืืืืฉืึทื (ืึทื ืึทืืืกืืก ืคืื CC ืงืึธืื ืืขืจืก) ืืขื ืขื ืืขื ืืฆื. ืืืจ ืงืขื ืขื ืืืืื ืคืึทืจืืืึทืื IP ืืืืืืงืึทืกื ืืื ืื ืื ืืขืจ ืึทืจืืึทื ืฉืจืืึทื ืืืคึผ ืืขืฉืืืฆื ืืืจื TSDuck.
ืื ืืืฆื
ืืืืึทืืขืจ, ืืืขืจืกืืข TSDuck 3.19-1520 ืืื ืืขื ืืฆื, ืืื ืืงืก ืืื ืืขื ืืฆื ืืื ืื ืึทืก (ืืขืืืึทื 10 ืืื ืืขื ืืฆื ืฆื ืฆืืืจืืืื ืื ืืืืืื ื, CentOS 7 ืืื ืืขื ืืฆื ืคึฟืึทืจ ืคืึทืงืืืฉ ื ืืฆื)
ืคึผืจืืคึผืขืจืื ื TSDuck ืืื ืึทืก
ืืืืืขืจ ืืืจ ืืึธื ืืืึธืจ ืคืึทืงืืืฉ ืคืืึธืื, ืืืจ ืืึทืจืคึฟื ืฆื ืืึทืื ืืืืขืจ ืึทื TSDuck ืึทืจืืขื ืจืืืืืง ืืื ืขืก ืืขื ืขื ืงืืื ืืจืืคื ืก ืืืืฃ ืื ื ืขืฅ ืงืึธืจื ืึธืืขืจ ืึทืก (ืืึธืืขื) ืืืจืื. ืืึธืก ืืื ืคืืจืืื ืื ืืื ืกืืจ ื ืืฉื ืฆื ืืจืขืคื ืฉืคึผืขืืขืจ ืืื ืื ืืจืืคื ืก ืคืืจืืขืงืืืขื - ืืืืฃ ืื ื ืขืฅ ืึธืืขืจ "ืื ืื ืกืขืจืืืขืจ". ืืืจ ืงืขื ืขื ืงืึธื ืืจืึธืืืจื ืื ืืจืึธืคึผืก ืืืืฃ ืื ื ืขืฅ ืงืึธืจื ืืืจืื ืืื ืื ethtool -S ethX ืืึทืคึฟืขื, ืื ืืื ืื ื ืืื ืืืจืืืขืงืึธืื ืืืจื ืืขืจ ืืขืืืืงืขืจ ืขืืืึธืึธื (ืืืืฉืึทืืืึทืื, ืืืจ ืืึทืจืคึฟื ืฆื ืคืึทืจืืจืขืกืขืจื ืื ืจืงืก ืืึทืคืขืจ (-G) ืืื ืืื ืืืกืืืืึทื ืขืืืขืืข ืึธืคืืึธืึทืืก (-K)). ืืื ืึท ืืขื ืขืจืึทื ืจืขืงืึธืืขื ืืึทืฆืืข, ืขืก ืงืขื ืขื ืืืื ืึทืืืืืืื ืฆื ื ืืฆื ืึท ืืึทืืื ืืขืจ ืคึผืึธืจื ืคึฟืึทืจ ืจืืกืืืืื ื ืื ืึทื ืึทืืืืื ืคืึทืจืงืขืจ, ืืืื ืืขืืืขื, ืืึธืก ืืื ืึทืืืืืึทื ืคืึทืืฉ ืคึผืึทืืึทืืืืื ืคึฟืึทืจืืื ืื ืืื ืื ืคืึทืงื ืึทื ืื ืงืึทืคึผ ืืื ืืขืืืขื ืคึผืื ืงื ืืืืฃ ืื ืึทื ืึทืืืืขืจ ืคึผืึธืจื ืจืขืื ืฆื ืืขื ืืืึทืืืึทื ืคืื ืื ืืขืจืข ืคืึทืจืงืขืจ. ืืืื ืืึธืก ืืื ื ืื ืืขืืืขื (ืึท ืืื ื-ืงืึธืืคึผืืืืขืจ / NUC ืืื ืืืื ืคึผืึธืจื ืืื ืืขื ืืฆื), ืขืก ืืื ืืขืืกื ืืืืืืจืึทืืึทื ืฆื ืฉืืขืื ืื ืคึผืจืืืึธืจืึทืืืืืืืฉืึทื ืคืื ืื ืึทื ืึทืืืืื ืคืึทืจืงืขืจ ืืื ืืึทืฆืืื ื ืฆื ืื ืื ืืื ืืืืฃ ืื ืืืื ืฆื ืืืึธืก ืื ืึทื ืึทืืืืขืจ ืืื ืงืึธื ื ืขืงืืขื. ืืืขืื ืืืืจืืืขื ืื ืืืืืจืึทื ืืึทื ืฅ, ืืึธ ืืืจ ืืึทืจืคึฟื ืฆื ืืืื ืึธืคึผืืขืืื ืืื ืงืขื ืขื ืืขืคึฟืื ืขื ืคึผืึทืงืึทื ืืจืืคื ืก ืกืืึทืจืืื ื ืคืื ืึท ืืฉืืืืช ืคึผืึธืจื ืืื ืขื ืืืงื ืืื ืึท ืึทืคึผืืึทืงืืืฉืึทื ืืื ืึท ืืืืจืืืึทื ืืึทืฉืื.
ืืืจ ืืื ืึธืคึผืืจืึธื ืคืื ืึท ืืืึทื ืื ืืขืจ ืืึทืืขืืึธืก
ืืื ืึท ืขืจืฉืืขืจ ืฉืจืื ืืื ืคึผืจืืคึผืขืจืื ื 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 ืืืคึผืก:
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), ื.ื. ืฉืืขื ืืืง ืืืึทืจืื 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 ืืืคึผืก. ืืขืจ ืึทื ืึทืืืืขืจ ืจืขืคึผืึธืจืฅ ืึท ืืื ืื ืคืื CC ืขืจืจืึธืจืก ืืื ืืืขืื 75 ืืืคึผืก ืึทื ืฉืืึธื ืคืื 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% ืคืื ืื ืคืึทืจืคืึทืื ืืืืจืึทืืข ืืขื ืขื ืืจืืคื ืก ืืื ืื ืืืคึผ ืืึธืืขื. ืืจืืคื ืก ืืื ืึท ืืืคึผ ืืึธืืขื ืืืืฉืึทืืืึทืื ืคืึทืื ืจืขืื ืฆื ืึท ืคืขืื ืคืื ืืึทืคืขืจ, ืงืืง ืืื ืื ืคืขืืืงืืึทื ืืึธืืขื ืืึทืคืขืจ ืืจืืืก ืืื ืื ืืึทืงืกืืืื ืืึธืืขื ืืึทืคืขืจ ืืจืืืก:
# sysctl net.core.rmem_default
net.core.rmem_default = 212992
# sysctl net.core.rmem_max
net.core.rmem_max = 212992
ืืืื, ืืืื ืึทืคึผืืึทืงืืืฉืึทื ื ืืึธื ื ืื ืืคืืจืืฉ ืืขืื ืึท ืืึทืคืขืจ ืืจืืืก, ืกืึทืงืึทืฅ ืืขื ืขื ืืืฉืืคื ืืื ืึท ืืึทืคืขืจ ืคืื 208 ืงื, ืึธืืขืจ ืืืื ืืื ืืขืื ืืขืจ, ืืื ื ืึธื ืืืขืื ื ืืฉื ืืึทืงืืืขื ืืืึธืก ืืื ืืขืืขืื. ืืื ื ืืืจ ืงืขื ืขื ืฉืืขืื ืื ืืึทืคืขืจ ืืจืืืก ืืื tsp ืคึฟืึทืจ ืื IP ืึทืจืืึทื ืฉืจืืึทื (-ืืึทืคืขืจ-ืืจืืืก), ืืืจ ืืืขืื ื ืืฉื ืึธื ืจืืจื ืื ืคืขืืืงืืึทื ืืึธืืขื ืืจืืืก, ืึธืืขืจ ื ืึธืจ ืฉืืขืื ืื ืืึทืงืกืืืื ืืึธืืขื ืืึทืคืขืจ ืืจืืืก ืืื ืกืคึผืขืฆืืคืืฆืืจื ืื ืืึทืคืขืจ ืืจืืืก ืืคืืจืืฉ ืืืจื ืื 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
ืืื ืืขื ืืื ืื ื ืคืื ืื ืืึธืืขื ืืึทืคืขืจ, ืืืฆื ืื ืืขืืืืื ืืืืจืึทืืข ืืื ืืืขืื 100 ืืืคึผืก, ืขืก ืืขื ืขื ืงืืื CC ืขืจืจืึธืจืก.
ืืืื ืื ืงืคึผื ืงืึทื ืกืึทืืฉืึทื ืคืื ืื ืฆืคึผ ืึทืคึผืืึทืงืืืฉืึทื ืืื. ืงืึธืจืขืื ืฆื ืืืื ืืึทืจืฅ i5-4260U ืงืคึผื @ 1.40 ืืื, 10 ืืืคึผืก ืืืืคื ืึทื ืึทืืืกืืก ืืืขื ืืึทืจืคื 3-4% ืงืคึผื, 100 ืืืคึผืก - 25%, 200 ืืืคึผืก - 46%. ืืืขื ืืึทืฉืืขืืืงื ืื% ืคึผืึทืงืึทื ืืึธืก, ืื ืืึทืกืข ืืืืฃ ืื ืงืคึผื ืคึผืจืึทืงืืึทืงืื ืืื ื ืืฉื ืคืึทืจืืจืขืกืขืจื (ืึธืืขืจ ืงืขื ืคืึทืจืืื ืขืจื).
ืืืืฃ ืืขืจ ืคึผืจืึธืืืงืืืื ืืึทืื ืืืึทืจื, ืขืก ืืื ืืขืืืขื ืืขืืืขื ืฆื ืืืฉืขื ืขืจืืื ืืื ืึทื ืึทืืืื ืกืืจืืื ืคืื ืืขืจ ืืื 1 ืื / s ืึธื ืงืืื ืคืจืืืืขืืขื.
ืืขืกืืื ื ืืืืฃ ืคืึทืงืืืฉ ื ืขืฅ ืงืึทืจืืก
ื ืึธื ืืขืกืืื ื ืืืืฃ ืึท ืืืขืื ืคึผืึธืจ, ืืืจ ืืึทืจืคึฟื ืฆื ื ืขืืขื ืฆืืืื ืืื ืืช ืึธืืขืจ ืฆืืืื ืคึผืึธืจืฅ ืคืื ืืืื ืืึทืืขืืึธืก, ืคืึทืจืืื ืื ืื ืคึผืึธืจืฅ ืฆื ืืขืืขืจ ืื ืืขืจืขืจ, โโืึธื ืืืื ืื ืืขื ืขืจืึทืืึธืจ ืืืืฃ ืืืื, ืืื ืื ืึทื ืึทืืืืขืจ ืืืืฃ ืื ืจืืข. ืก'ืืขื ืขื ืื ื ืืฉื ืืขืืืขื ืงืืื ืืืืืฉืื, ืืืขืจ ืืืขืฉื ืืื ืืืก ืืืขืก ืืคืืขื ืืืง ืคืื ืืขื ืืืืื, ืืืืก ืฉืืืืืขืจ, ืืืฅ ืืื ืืขืจืขืกืื ืืขืจ ืืืขื ืื ืืืื.
ื ืืฆื ืื ืืืงืืืขื ืืึทืื ืืืจื ืื ืืึธื ืืืึธืจืื ื ืกืืกืืขื (Zabbix)
tsp ืืื ื ืืฉื ืงืืื ืืึทืฉืื ืืืื ืขืืืืืง ืึทืคึผื ืืื SNMP ืึธืืขืจ ืขื ืืขื. CC ืึทืจืืืงืืขื ืืืื ืืืื ืืขืืืืื ืคึฟืึทืจ ืืืึท ืืื ืืกืืขืจ 1 ืกืขืงืื ืืข (ืืื ืึท ืืืื ืคึผืจืึธืฆืขื ื ืคืื ืคึผืึทืงืึทื ืึธื ืืืขืจ, ืขืก ืงืขื ืขื ืืืื ืืื ืืขืจืืขืจ / ืืืืื ืืขืจ / ืืขื ืก ืคืื ืืืืื ืืขืจ ืคึผืขืจ ืกืขืงืื ืืข, ืืืคึผืขื ืืื ื ืืืืฃ ืื ืืืืจืึทืืข).
ืืืื, ืืื ืกืืจ ืฆื ืจืึทืืขืืืขื ืืืืืข ืืื ืคึฟืึธืจืืึทืฆืืข ืืื ืฆืืขื ืืจืึทืคืก ืคึฟืึทืจ CC ืขืจืจืึธืจืก ืืื ืืืืจืึทืืข ืืื ืืึทืื ืขืืืขืืข ืึทืงืกืึทืืึทื ืฅ, ืขืก ืงืขื ืืืื ืื ืคืืืืขื ืืข ืึธืคึผืฆืืขืก:
- ืคึผืึทืจืก ืืื ืืขืืืื ืืึทื (ืืืจื CC) ืื ืจืขืืืืืึทื ืคืื ืฆืคึผ, ื.ื. ืืขืจ ืขืก ืฆื ืืขืจ ืืขืืืืื ืคืึธืจืขื.
- ืขื ืืืงื ืฆืคึผ ืืื ืืื / ืึธืืขืจ ืคึผืจืึทืกืขืกืขืจ ืคึผืืืืื ืก ืืืืจืึทืืข_ืืึธื ืืืึธืจ ืืื ืงืึทื ืืื ืืืืืฉืึทื ืึทืืื ืึทื ืืขืจ ืจืขืืืืืึทื ืืื ืืขืืขืื ืืื ืึท ืืึทืฉืื-ืืืื ืขืืืืืง ืคืึธืจืขื ืคึผืึทืกืืง ืคึฟืึทืจ ืื ืืึธื ืืืึธืจืื ื ืกืืกืืขื.
- ืฉืจืืื ืืืื ืึทืคึผืืึทืงืืืฉืึทื ืืืืฃ ืฉืคึผืืฅ ืคืื ืื tsduck ืืืืืืึธืืขืง.
ืืึธื, ืึธืคึผืฆืืข 1 ืืื ืื ืืืืึทืกื ืืื ืืขืจืืื ืขื ืคืื ืื, ืกืคึผืขืฆืืขื ืงืึทื ืกืืืขืจืื ื ืึทื tsduck ืืื ืืื ืืขืฉืจืืื ืืื ืึท ื ืืืขืจืืง-ืืืจืื (ืืืจื ืืึธืืขืจื ืกืืึทื ืืึทืจืืก) ืฉืคึผืจืึทื (C ++)
ื ืคึผืฉืื ืืึทืฉ ืคึผืึทืจืกืขืจ + ืึทืืืจืขืืึทืืึธืจ ืคึผืจืึธืืืึทืืืืคึผ ืืขืืืืื ืึทื ืืืืฃ ืึท 10 ืืืคึผืก ืืืึทื ืืื 50% ืคึผืึทืงืึทื ืึธื ืืืขืจ (ืขืจืืกื ืคืึทื), ืื ืืึทืฉ ืคึผืจืึธืฆืขืก ืงืึทื ืกืืื 3-4 ืืื ืืขืจ ืงืคึผื ืืื ืื ืฆืคึผ ืคึผืจืึธืฆืขืก ืืื. ืืขื ืกืฆืขื ืึทืจ ืืื ืึทื ืึทืงืกืขืคึผืืึทืืึทื. ืึทืงืืืึทืืื ืึท ืฉืืืง ืคืื ืืขื ืคึผืจืึธืืืึทืืืืคึผ ืืื ืื
ื ืึธืึธืืืขืก ืืืืฃ ืื ืฉืคึผืืฅ
#!/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
ืืื ืึทืืืฉืึทื ืฆื ืืืื ืึทื ืึทืงืกืขืคึผืืึทืืึทื ืคึผืึทืืขืืขื, ืขืก ืืขื ืขื ืงืืื ื ืึธืจืืึทื ืคึฟืขืืขื ืืื ืืึทืฉ, ืืึทืฉ ืืืฉืึธืืก ืืขื ืขื ืืึทืืื ืืขืจ ืคึผืจืึทืกืขืกืึทื, ืืื ืืื ืืึธืื ืฆื ืฉืจืืึทืื ืื ืืืขืจื ืคืื missingPackets ืึทืืึธื ืึท ืจืืข ืืืืฃ ืื ืืืึทื ืืืืจืงืื ื (ืืืขื ืืื ืืึทืงืืืขื ืืืืจืึทืืข ืึทืจืืืงืืขื ืืืึธืก ืงืืืขื ืืขืืขืจ ืจืืข). ืืื ืึท ืจืขืืืืืึทื, ืืึทืฉ ืืื ืืื ืงืก ืึทืืืื ืืื ืขืก ืืื ืืึทืฉืืึธืกื ืฆื ืฉืจืืึทืื ืึท ืจืึทืคึผืขืจ (ืคึผืึทืจืกืขืจ + ืึทืืืจืขืืึทืืึธืจ) ืืื ืืึธืืึทื ื. ืื ืงืคึผื ืงืึทื ืกืึทืืฉืึทื ืคืื ืขื ืืขื ืืึธืืึทื ื ืงืึธื ืืื 4-5 ืืื ืืืืื ืืงืขืจ ืืื ืื ืฆืคึผ ืคึผืจืึธืฆืขืก ืืื. ืื ืืืืงืืึทื ืคืื ืื ืจืึทืคึผืขืจ ืจืขืื ืฆื ืืขืจ ืคืึทืจืืืึทื ืคืื ืืึทืฉ ืืื ืืึธืืึทื ื ืืื ืืขืืืขื ืืืขืื 16 ืืื ืืื ืืื ืึทืืืขืืืื, ืืขืจ ืจืขืืืืืึทื ืืื ืคึผืึทืกืืง (ืงืคึผื ืึธืืืืขืจืืขื ืืืจื 25% ืืื ืื ืขืจืืกื ืคืึทื). ืื ืืึธืืึทื ื ืืงืืจ ืืขืงืข ืืื ืืืื
ืืืืคื ืจืึทืคึผืขืจ
ืฆื ืึธื ืืืืื ืืขื ืจืึทืคึผืขืจ, ืื ืกืืืคึผืืึทืกื ืืื ืกื ืืืกืืขืจ ืคึฟืึทืจ ืกืืกืืขื ืืื ืืขืืืื (
ืฆื ืฉืึทืคึฟื ืึท ืืืึทืฉืคึผืื ืคืื ืื ืืื ืกื, ืืืจ ืืึทืจืคึฟื ืฆื ืืืืคื ืื systemctl enable ืืึทืคึฟืขื [ืืืืขืื ืืืฉืืฆื]:1234 ืืื ืืืืคื ืืื systemctl ืึธื ืืืื [ืืืืขืื ืืืฉืืฆื]: ืงืกื ืืืงืก.
ืื ืืืขืงืื ื ืคืื Zabbix
ืืื ืกืืจ ืคึฟืึทืจ zabbix ืฆื ืงืขื ืขื ืฆื ืึทื ืืืขืงื ืคืืืกื ืืืง ืืึทืืื ืื ืืก, ืขืก ืืื ืืขืืื
ืืึทืืืืงืก ืืืกืืขืจ
ืงืืจืฅ ืืฉืขืงืืืกื (ื ื, ืืืึธืก ืืืื ืขืืขืฆืขืจ ืืืกืืืื ืฆื ื ืืฆื ืขืก)
- ืืึทืื ืืืืขืจ ืึทื ืฆืคึผ ืืื ื ืืฉื ืคืึทืื ืคึผืึทืงืืฅ ืืื ืืขืจ "ืืืขืึทื" ืื ืึธืื (ืืขื ืขืจืึทืืึธืจ ืืื ืึทื ืึทืืืืขืจ ืืขื ืขื ืงืึธื ื ืขืงืืขื ืืืืึทื), ืืืื ืขืก ืืขื ืขื ืืจืืคื ืก, ืืขื ืคึผืึทืจืึทืืจืึทืฃ 2 ืึธืืขืจ ืื ืืขืงืกื ืคืื ืืขื ืึทืจืืืงื ืืืขืื ืืขื ืขื ืื.
- ืืึทืื ืืื ืื ื ืื ืืึทืงืกืืืื ืืึธืืขื ืืึทืคืขืจ (net.core.rmem_max=8388608).
- ืงืึธืืคึผืืืืจื tsduck-stat.go (ืืืื ืืืืขื tsduck-stat.go).
- ืฉืืขืื ืื ืกืขืจืืืืก ืืืกืืขืจ ืืื /lib/systemd/system.
- ืึธื ืืืื ืกืขืจืืืืกืขืก ืืื ืกืืกืืขืืงืื, ืืฉืขืง ืึทื ืงืึธืื ืืขืจืก ืืึธืื ืกืืึทืจืืขื ืฆื ืืขืจืฉืืึทื ืขื (grep "" /dev/shm/tsduck-stat/*). ืื ื ืืืขืจ ืคืื ืกืขืจืืืืกืขืก ืืืื ืื ื ืืืขืจ ืคืื ืืืืืืงืึทืกื ืกืืจืืื. ืืึธ ืืืจ ืงืขื ืืึทืจืคึฟื ืฆื ืฉืึทืคึฟื ืึท ืืึทืจืฉืจืื ืฆื ืื ืืืืืืงืึทืกื ืืจืืคึผืข, ืืึธืืขืจ ืืืกืืืืึทื rp_filter ืึธืืขืจ ืฉืึทืคึฟื ืึท ืืึทืจืฉืจืื ืฆื ืื ืืงืืจ ืืคึผ.
- ืืืืคื discovery.sh, ืืึทืื ืืืืขืจ ืึทื ืขืก ืืืฉืขื ืขืจืืืฅ json.
- ืืืื zabbix agent config, ืจืืกืืึทืจื zabbix agent.
- ืฆืืคึฟืขืืืงืขืจ ืืขื ืืืกืืขืจ ืฆื ืืึทืืืืงืก, ืฆืืืืืื ืขืก ืฆื ืืขืจ ืืึทืืขืืึธืก ืืืึธืก ืืื ืืึธื ืืืึธืจืขื ืืื ืื ืืึทืืืืงืก-ืึทืืขื ื ืืื ืืื ืกืืึทืืืจื, ืืืึทืจืื ืืืขืื 5 ืืื ืื, ืืขื ืืืื ืขืก ืืขื ืขื ื ืืึท ืืืื, ืืจืึทืคืก ืืื ืืจืืืขืจื.
ืืึทืืืขืก
ืคึฟืึทืจ ืื ืึทืจืืขื ืคืื ืืืืขืงืืื ื ืคึผืึทืงืึทื ืึธื ืืืขืจ, ืขืก ืืื ืึผืืขื ืืขื ืื, ืืื ืืื ืืกืืขืจ ืขืก ืืื ืืขืกืขืจ ืืื ืงืืื ืืึธื ืืืึธืจืื ื.
ืืืงืข, CC "ืืึธืกืกืขืก" ืงืขื ืขื ืคึผืึทืกืืจื ืืืขื ืืขืจืืืฉืื ื ืืืืืขื ืคืจืึทืืืึทื ืฅ (ืืื ืืืืึทื ืืื ืืื ืืืืกื, ืืึธืก ืืื ืืื ืื ืกืขืจืฅ ืืขื ืขื ืืขืืืื ืืื ืืืืข ืืขืืขืืืืืืข ืกืขื ืืขืจืก ืืื ืื ืจืืกืืฉืข ืคืขืืขืจืืืฉืึทื, ื"ื ืึธื ืจืืงืึทืืงืืึทืืืืืื ื ืื CC ืืึธืืืึทื ืง), ืืึธืก ืืืื ืืืื ืืขืจืืื ื. ืคึผืจืึทืคึผืจืืืึทืืขืจื ืกืึทืืืฉืึทื ื ืืืืืืืืื ืกืขืจืงืึทืืืืขื ื ืืขื ืคึผืจืึธืืืขื ืืืจื ืืืืขืงืืื ื SCTE-35 ืืึทืืขืืก (ืืืื ืฆืืืขืืขืื ืืืจื ืื ืืืึทื ืืขื ืขืจืึทืืึธืจ).
ืืื ืืขืจืืื ืขื ืคืื ืืึธื ืืืึธืจืื ื ืคืื ืึทืจืืืขืจืคืืจื ืงืืืึทืืืืขื, ืขืก ืืื ืึท ืคืขืื ืคืื ืืืฉืืืืขืจ ืืึธื ืืืึธืจืื ื (IAT). ืืขืืขืืืืืืข ืืืกืจืืื (ืืืื ืขืก ืืึธืืืืึทืืึธืจืก ืึธืืขืจ ืกืืฃ ืืขืืืืกืขืก) ืืื ืจืขืงืืืืจืขืืขื ืฅ ืคึฟืึทืจ ืืขื ืคึผืึทืจืึทืืขืืขืจ ืืื ืขืก ืืื ื ืื ืฉืืขื ืืืง ืืขืืืขื ืฆื ืื ืคืืืื ืื ืืืฉืืืืืคืขืจ ืฆื ืืืขื ืืืงืืึทื. ืืื ืืืฉืืืขืจ ืงืขื ืขื ืืึธืื ืฉืืืืืขื ืืืขื ืืืกืจืืื ืืื ืืจืืืก ืืึทืคืขืจื ืืื ืืขื ืืฆื ืืื ืืืจืืคืึธืจ ืืื QoS ืืื ื ืืฉื ืงืึทื ืคืืืืขืจื ืึธืืขืจ ื ืืฉื ืืขืืื ื ืงืึทื ืคืืืืขืจื ืืขื ืื ืฆื ืืืขืจืฉืืงื ืึทืืึท ืคืึทืงืืืฉ-ืืืื ืคืึทืจืงืขืจ.
ืืงืืจ: www.habr.com