TSDuck-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ IP(TS) แƒœแƒแƒ™แƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

แƒ“แƒฆแƒ”แƒก, แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ›แƒ–แƒ (แƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒ˜แƒก) แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ IP(TS) แƒœแƒแƒ™แƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“ VB ะธ iQแƒ›แƒแƒ— แƒแƒฅแƒ•แƒ— แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ›แƒ“แƒ˜แƒ“แƒแƒ แƒ˜ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜ แƒ“แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒ›แƒกแƒฎแƒ•แƒ˜แƒš แƒแƒžแƒ”แƒ แƒแƒขแƒแƒ แƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒกแƒแƒขแƒ”แƒšแƒ”แƒ•แƒ˜แƒ–แƒ˜แƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒ— แƒแƒ แƒ˜แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒœแƒ˜, แƒแƒฅแƒ•แƒ— แƒแƒกแƒ”แƒ—แƒ˜ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜. แƒ”แƒก แƒกแƒขแƒแƒขแƒ˜แƒ แƒแƒฆแƒฌแƒ”แƒ แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒฆแƒ˜แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ–แƒ” TSDuck, แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜แƒ IP(TS) แƒœแƒแƒ™แƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก CC (แƒ’แƒแƒœแƒ’แƒ แƒซแƒแƒ‘แƒ˜แƒ—แƒแƒ‘แƒ˜แƒก แƒ›แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒšแƒ˜) แƒ›แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒšแƒ˜แƒกแƒ แƒ“แƒ แƒ‘แƒ˜แƒขแƒ˜แƒก แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ˜แƒ—. แƒจแƒ”แƒกแƒแƒซแƒšแƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒ แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ™แƒแƒ แƒ’แƒ•แƒ˜แƒก แƒแƒœ แƒ›แƒ—แƒ”แƒšแƒ˜ แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ˜ แƒ˜แƒฏแƒแƒ แƒ˜แƒ— L2 แƒแƒ แƒฎแƒ–แƒ” (แƒ แƒแƒ›แƒšแƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜ แƒœแƒแƒ แƒ›แƒแƒšแƒฃแƒ แƒแƒ“ แƒจแƒ”แƒฃแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ แƒ˜แƒ’แƒ”แƒ‘แƒจแƒ˜ แƒ“แƒแƒœแƒแƒ™แƒแƒ แƒ’แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒ—).

แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒแƒ™แƒšแƒ”แƒ“ TSDuck-แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘

TSduck แƒแƒ แƒ˜แƒก แƒฆแƒ˜แƒ แƒ™แƒแƒ“แƒ˜แƒก (2-แƒžแƒฃแƒœแƒฅแƒขแƒ˜แƒแƒœแƒ˜ BSD แƒšแƒ˜แƒชแƒ”แƒœแƒ–แƒ˜แƒ) แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒฃแƒšแƒ˜ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ (แƒ™แƒแƒœแƒกแƒแƒšแƒ˜แƒก แƒ™แƒแƒ›แƒฃแƒœแƒแƒšแƒฃแƒ แƒ˜ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ แƒžแƒ”แƒ แƒกแƒแƒœแƒแƒšแƒฃแƒ แƒ˜ แƒ™แƒแƒ›แƒฃแƒœแƒแƒšแƒฃแƒ แƒ˜ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒแƒœ แƒ“แƒแƒœแƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“) TS แƒœแƒแƒ™แƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒžแƒฃแƒšแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ แƒแƒ’แƒแƒ แƒช แƒจแƒ”แƒงแƒ•แƒแƒœแƒ, แƒ›แƒแƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ˜แƒ›แƒฃแƒจแƒแƒแƒก IP (multicast/unicast), http, hls, dvb แƒขแƒ˜แƒฃแƒœแƒ”แƒ แƒ”แƒ‘แƒ˜แƒ—, dektec dvb-asi แƒ“แƒ”แƒ›แƒแƒ“แƒฃแƒšแƒแƒขแƒแƒ แƒ˜แƒ—, แƒแƒ แƒ˜แƒก แƒจแƒ˜แƒ“แƒ TS แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒแƒขแƒแƒ แƒ˜ แƒ“แƒ แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ. แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒฉแƒแƒฌแƒ”แƒ แƒ แƒคแƒแƒ˜แƒšแƒ–แƒ”, IP (multicast/unicast), hls, dektec dvb-asi แƒ“แƒ HiDes แƒ›แƒแƒ“แƒฃแƒšแƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜, แƒ›แƒแƒ—แƒแƒ›แƒแƒจแƒ”แƒ”แƒ‘แƒ˜ (mplayer, vlc, xine) แƒ“แƒ แƒฉแƒแƒ›แƒแƒแƒ’แƒ“แƒ”แƒก. แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒแƒ แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฉแƒแƒ แƒ—แƒฃแƒšแƒ˜ แƒ˜แƒงแƒแƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒแƒกแƒ แƒ“แƒ แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒก แƒจแƒแƒ แƒ˜แƒก, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, PID แƒฎแƒ”แƒšแƒแƒฎแƒแƒšแƒ˜ แƒ แƒฃแƒฅแƒ, แƒ’แƒแƒ“แƒแƒ แƒ”แƒ•แƒ/แƒ“แƒแƒจแƒšแƒ, CC แƒ›แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒšแƒ˜แƒก แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜, แƒ‘แƒ˜แƒขแƒ˜แƒก แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ˜แƒก แƒ’แƒแƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒ แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ TS แƒœแƒแƒ™แƒแƒ“แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ IP แƒœแƒแƒ™แƒแƒ“แƒ”แƒ‘แƒ˜ (multicast) แƒ แƒแƒ’แƒแƒ แƒช แƒจแƒ”แƒงแƒ•แƒแƒœแƒ, แƒžแƒ แƒแƒชแƒ”แƒกแƒแƒ แƒ”แƒ‘แƒ˜ bitrate_monitor (แƒกแƒแƒฎแƒ”แƒšแƒ˜แƒ“แƒแƒœ แƒ˜แƒ แƒ™แƒ•แƒ”แƒ•แƒ แƒ แƒ แƒแƒ แƒ˜แƒก) แƒ“แƒ แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒแƒ‘แƒ (CC แƒ›แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜). แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒแƒ“ แƒจแƒ”แƒชแƒ•แƒแƒšแƒแƒ— IP multicast แƒกแƒฎแƒ•แƒ แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒขแƒ˜แƒžแƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ›แƒฎแƒแƒ แƒก แƒฃแƒญแƒ”แƒ แƒก TSDuck.

แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ แƒแƒคแƒ˜แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒœแƒแƒ’แƒ”แƒ‘แƒแƒ‘แƒ”แƒ‘แƒ˜/แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜ TSDuck แƒฃแƒ›แƒ แƒแƒ•แƒšแƒ”แƒกแƒแƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ›แƒ˜แƒฃแƒฌแƒ•แƒ“แƒแƒ›แƒ”แƒšแƒ˜แƒ Debian-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ›แƒแƒ•แƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ— แƒ›แƒแƒ—แƒ˜ แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒ debian 8-แƒ–แƒ” แƒ“แƒ debian 10-แƒ–แƒ” แƒฃแƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒ“.

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, แƒ•แƒ”แƒ แƒกแƒ˜แƒ TSDuck 3.19-1520 แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ, Linux แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ แƒแƒ’แƒแƒ แƒช OS (debian 10 แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒแƒ“แƒ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒก แƒ›แƒแƒกแƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒšแƒแƒ“, CentOS 7 แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒแƒ“แƒ แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก)

TSDuck-แƒ˜แƒกแƒ แƒ“แƒ OS-แƒ˜แƒก แƒ›แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒ

แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒœแƒแƒ™แƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒแƒ›แƒ“แƒ”, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ”แƒ—, แƒ แƒแƒ› TSDuck แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒกแƒฌแƒแƒ แƒแƒ“ แƒ“แƒ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ•แƒแƒ แƒ“แƒœแƒ แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ‘แƒแƒ แƒแƒ—แƒ˜แƒก แƒแƒœ OS (แƒกแƒแƒ™แƒ”แƒขแƒ˜แƒก) แƒ“แƒแƒœแƒ”แƒ–แƒ”. แƒ”แƒก แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒชแƒœแƒแƒ— แƒกแƒแƒ“ แƒ›แƒแƒฎแƒ“แƒ แƒ•แƒแƒ แƒ“แƒœแƒ - แƒฅแƒกแƒ”แƒšแƒจแƒ˜ แƒแƒœ "แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ—". แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒแƒ— แƒ•แƒแƒ แƒ“แƒœแƒ แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ‘แƒแƒ แƒแƒ—แƒ˜แƒก แƒ“แƒแƒœแƒ”แƒ–แƒ” ethtool -S ethX แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒ—, แƒขแƒ˜แƒฃแƒœแƒ˜แƒœแƒ’แƒ˜ แƒ™แƒ”แƒ—แƒ“แƒ”แƒ‘แƒ แƒ˜แƒ›แƒแƒ•แƒ” ethtool-แƒ˜แƒ— (แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•, แƒกแƒแƒญแƒ˜แƒ แƒแƒ RX แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒ’แƒแƒ–แƒ แƒ“แƒ (-G) แƒ“แƒ แƒ–แƒแƒ’แƒฏแƒ”แƒ  แƒ’แƒแƒ›แƒแƒ แƒ—แƒแƒ— แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒ’แƒแƒ“แƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ (-K)). แƒ แƒแƒ’แƒแƒ แƒช แƒ–แƒแƒ’แƒแƒ“แƒ˜ แƒ แƒ”แƒ™แƒแƒ›แƒ”แƒœแƒ“แƒแƒชแƒ˜แƒ, แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒ˜แƒ แƒฉแƒ˜แƒแƒ— แƒชแƒแƒšแƒ™แƒ” แƒžแƒแƒ แƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ’แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒฆแƒ”แƒ‘แƒแƒ“, แƒ—แƒฃ แƒ”แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ, แƒ”แƒก แƒแƒ›แƒชแƒ˜แƒ แƒ”แƒ‘แƒก แƒชแƒ แƒฃ แƒžแƒแƒ–แƒ˜แƒขแƒ˜แƒ•แƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ˜แƒ› แƒคแƒแƒฅแƒขแƒ—แƒแƒœ, แƒ แƒแƒ› แƒ•แƒแƒ แƒ“แƒœแƒ แƒ›แƒแƒฎแƒ“แƒ แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜แƒก แƒžแƒแƒ แƒขแƒ–แƒ” แƒกแƒฎแƒ•แƒ แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ. แƒ—แƒฃ แƒ”แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ (แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒ˜แƒœแƒ˜ แƒ™แƒแƒ›แƒžแƒ˜แƒฃแƒขแƒ”แƒ แƒ˜/NUC แƒ”แƒ แƒ—แƒ˜ แƒžแƒแƒ แƒขแƒ˜แƒ—), แƒ›แƒแƒจแƒ˜แƒœ แƒซแƒแƒšแƒ˜แƒแƒœ แƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒšแƒ˜แƒ แƒ’แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒžแƒ แƒ˜แƒแƒ แƒ˜แƒขแƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ“แƒแƒœแƒแƒ แƒฉแƒ”แƒœแƒ—แƒแƒœ แƒ›แƒ˜แƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒแƒจแƒ˜ แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒแƒ–แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜. แƒ แƒแƒช แƒจแƒ”แƒ”แƒฎแƒ”แƒ‘แƒ แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ  แƒ’แƒแƒ แƒ”แƒ›แƒแƒก, แƒแƒฅ แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒ— แƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒแƒ“ แƒ“แƒ แƒจแƒ”แƒ’แƒ”แƒซแƒšแƒแƒ— แƒ˜แƒžแƒแƒ•แƒแƒ— แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒฌแƒ•แƒ”แƒ—แƒ”แƒ‘แƒ˜, แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒคแƒ˜แƒ–แƒ˜แƒ™แƒฃแƒ แƒ˜ แƒžแƒแƒ แƒขแƒ˜แƒ“แƒแƒœ แƒ“แƒ แƒ“แƒแƒ›แƒ—แƒแƒ•แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒ— แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒฅแƒแƒœแƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ—.

แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒแƒชแƒ˜แƒ แƒ“แƒ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ แƒ›แƒแƒกแƒžแƒ˜แƒœแƒซแƒšแƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ—

แƒ แƒแƒ’แƒแƒ แƒช TSDuck-แƒ˜แƒก แƒ›แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒ“แƒ แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒขแƒ แƒแƒคแƒ˜แƒ™แƒก แƒ”แƒ แƒ— แƒฐแƒแƒกแƒขแƒจแƒ˜ แƒฅแƒกแƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒ›แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒ:

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 Mbps แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ˜แƒ—:

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 Mbps-แƒ›แƒ“แƒ”. แƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜ แƒแƒชแƒœแƒแƒ‘แƒ”แƒ‘แƒก CC แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒก แƒ“แƒ แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— 75 Mbps 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% แƒแƒ แƒ˜แƒก แƒฌแƒ•แƒ”แƒ—แƒ”แƒ‘แƒ˜ udp แƒกแƒแƒ™แƒ”แƒขแƒจแƒ˜. UDP แƒกแƒแƒ™แƒ”แƒขแƒจแƒ˜ แƒ•แƒแƒ แƒ“แƒœแƒ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒฎแƒ“แƒ”แƒ‘แƒ แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒแƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ, แƒจแƒ”แƒฎแƒ”แƒ“แƒ”แƒ— แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒ–แƒแƒ›แƒแƒก แƒ“แƒ แƒกแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ  แƒ–แƒแƒ›แƒแƒก:

# sysctl net.core.rmem_default
net.core.rmem_default = 212992
# sysctl net.core.rmem_max
net.core.rmem_max = 212992

แƒแƒ›แƒ แƒ˜แƒ’แƒแƒ“, แƒ—แƒฃ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒแƒ  แƒ˜แƒ—แƒฎแƒแƒ•แƒ”แƒœ แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒ–แƒแƒ›แƒแƒก, แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜ แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ 208 KB แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒ—, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ—แƒฃ แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒ”แƒœ แƒ›แƒ”แƒขแƒก, แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ›แƒแƒ˜แƒœแƒช แƒ•แƒ”แƒ  แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ‘แƒ”แƒœ แƒ˜แƒ›แƒแƒก, แƒ แƒแƒช แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒ”แƒก. แƒ˜แƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒ, แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒแƒงแƒ”แƒœแƒแƒ— แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒ–แƒแƒ›แƒ tsp-แƒจแƒ˜ IP แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (-buffer-size), แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒจแƒ”แƒ•แƒ”แƒฎแƒ”แƒ‘แƒ˜แƒ— แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ• แƒกแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ–แƒแƒ›แƒแƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒกแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ  แƒ–แƒแƒ›แƒแƒก แƒ“แƒ แƒชแƒแƒšแƒกแƒแƒฎแƒแƒ“ แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ— แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒ–แƒแƒ›แƒแƒก 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 Mbps, แƒแƒ  แƒแƒ แƒ˜แƒก CC แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜.

แƒ—แƒแƒ•แƒแƒ“ tsp แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก CPU แƒ›แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—. แƒ”แƒ แƒ—แƒ˜ แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒ— i5-4260U CPU @ 1.40GHz-แƒ—แƒแƒœ แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ˜แƒ—, 10Mbps แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒแƒœแƒแƒšแƒ˜แƒ–แƒก แƒ“แƒแƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ 3-4% CPU, 100Mbps - 25%, 200Mbps - 46%. % Packet Loss-แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒแƒก, CPU-แƒ–แƒ” แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒฃแƒšแƒแƒ“ แƒแƒ  แƒ˜แƒ–แƒ แƒ“แƒ”แƒ‘แƒ (แƒ›แƒแƒ’แƒ แƒแƒ› แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒชแƒ˜แƒ แƒ“แƒ”แƒก).

แƒฃแƒคแƒ แƒ แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜แƒฃแƒš แƒแƒžแƒแƒ แƒแƒขแƒฃแƒ แƒแƒ–แƒ”, แƒฃแƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒ“ แƒ˜แƒงแƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜ 1 แƒ’แƒ‘/แƒฌแƒ›-แƒ–แƒ” แƒ›แƒ”แƒขแƒ˜ แƒœแƒแƒ™แƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ แƒ“แƒ แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜.

แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ แƒ แƒ”แƒแƒšแƒฃแƒ  แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ‘แƒแƒ แƒแƒ—แƒ”แƒ‘แƒ–แƒ”

Veth แƒฌแƒงแƒ•แƒ˜แƒšแƒ–แƒ” แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒแƒ˜แƒฆแƒแƒ— แƒแƒ แƒ˜ แƒฐแƒแƒกแƒขแƒ˜ แƒแƒœ แƒ”แƒ แƒ—แƒ˜ แƒฐแƒแƒกแƒขแƒ˜แƒก แƒแƒ แƒ˜ แƒžแƒแƒ แƒขแƒ˜, แƒ“แƒแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒแƒ— แƒžแƒแƒ แƒขแƒ”แƒ‘แƒ˜ แƒ”แƒ แƒ—แƒ›แƒแƒœแƒ”แƒ—แƒ—แƒแƒœ, แƒฉแƒแƒ แƒ—แƒแƒ— แƒ’แƒ”แƒœแƒ”แƒ แƒแƒขแƒแƒ แƒ˜ แƒ”แƒ แƒ—แƒ–แƒ”, แƒฎแƒแƒšแƒ แƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜ แƒ›แƒ”แƒแƒ แƒ”แƒ–แƒ”. แƒแƒฅ แƒกแƒ˜แƒฃแƒ แƒžแƒ แƒ˜แƒ–แƒ”แƒ‘แƒ˜ แƒแƒ  แƒงแƒแƒคแƒ˜แƒšแƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒกแƒ˜แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒ”แƒจแƒ˜ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ แƒ™แƒ˜แƒœแƒแƒ–แƒ”แƒ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜, แƒ แƒแƒช แƒฃแƒคแƒ แƒ แƒกแƒฃแƒกแƒขแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ, แƒ›แƒ˜แƒ— แƒฃแƒคแƒ แƒ แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒแƒฅ.

แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ (Zabbix)

tsp-แƒก แƒแƒ  แƒแƒฅแƒ•แƒก แƒ›แƒแƒœแƒฅแƒแƒœแƒ˜แƒ— แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒแƒ“แƒ˜ API, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ SNMP แƒแƒœ แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜. CC แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒแƒ’แƒ แƒ”แƒ’แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒ˜แƒœแƒ˜แƒ›แƒฃแƒ› 1 แƒฌแƒแƒ›แƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ (แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ™แƒแƒ แƒ’แƒ•แƒ˜แƒก แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒžแƒ แƒแƒชแƒ”แƒœแƒขแƒ˜แƒ—, แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒแƒกแƒแƒ‘แƒ˜แƒ—/แƒแƒ—แƒแƒกแƒแƒ‘แƒ˜แƒ—/แƒแƒ—แƒ˜แƒแƒ—แƒแƒกแƒแƒ‘แƒ˜แƒ— แƒฌแƒแƒ›แƒจแƒ˜, แƒ‘แƒ˜แƒขแƒ˜แƒก แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—).

แƒแƒ›แƒ แƒ˜แƒ’แƒแƒ“, แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“ แƒ“แƒ CC แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒ‘แƒ˜แƒขแƒฃแƒ แƒ˜ แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ˜แƒก แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒแƒฎแƒแƒขแƒแƒ“ แƒ“แƒ แƒ แƒแƒ˜แƒ›แƒ” แƒกแƒแƒฎแƒ˜แƒก แƒฃแƒ‘แƒ”แƒ“แƒฃแƒ แƒ˜ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ“แƒ”แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ”แƒ‘แƒ˜:

  1. แƒฉ/แƒ™-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ’แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒ แƒ“แƒ แƒแƒ’แƒ แƒ”แƒ’แƒแƒชแƒ˜แƒ (CC-แƒ˜แƒ—), แƒ”.แƒ˜. แƒ’แƒแƒ“แƒแƒ˜แƒงแƒ•แƒแƒœแƒ”แƒ— แƒ˜แƒ’แƒ˜ แƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒš แƒคแƒแƒ แƒ›แƒแƒจแƒ˜.
  2. แƒ“แƒแƒแƒกแƒ แƒฃแƒšแƒ”แƒ— แƒก/แƒ™ แƒ—แƒแƒ•แƒแƒ“ แƒ“แƒ/แƒแƒœ แƒžแƒ แƒแƒชแƒ”แƒกแƒแƒ แƒ˜แƒก แƒ“แƒแƒœแƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜ bitrate_monitor แƒ“แƒ แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒแƒ‘แƒ แƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒ›แƒแƒงแƒ•แƒแƒœแƒ˜แƒšแƒ˜ แƒ˜แƒงแƒแƒก แƒ›แƒแƒœแƒฅแƒแƒœแƒ˜แƒ— แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒแƒ“แƒ˜ แƒคแƒแƒ แƒ›แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒกแƒแƒคแƒ”แƒ แƒ˜แƒกแƒ˜แƒ แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.
  3. แƒ“แƒแƒฌแƒ”แƒ แƒ”แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ’แƒแƒœแƒแƒชแƒฎแƒแƒ“แƒ˜ tsduck แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ˜แƒก แƒ—แƒแƒ•แƒ–แƒ”.

แƒชแƒฎแƒแƒ“แƒ˜แƒ, แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜ 1 แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ แƒซแƒแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜แƒก แƒ—แƒ•แƒแƒšแƒกแƒแƒ–แƒ แƒ˜แƒกแƒ˜แƒ—, แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒ˜แƒ— แƒ˜แƒ›แƒ˜แƒก แƒ’แƒแƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ› แƒ—แƒแƒ•แƒแƒ“ tsduck แƒ˜แƒฌแƒ”แƒ แƒ”แƒ‘แƒ แƒ“แƒแƒ‘แƒแƒšแƒ˜ แƒ“แƒแƒœแƒ˜แƒก (แƒ—แƒแƒœแƒแƒ›แƒ”แƒ“แƒ แƒแƒ•แƒ” แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒ”แƒ‘แƒ˜แƒ—) แƒ”แƒœแƒแƒ–แƒ” (C ++)

แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ bash parser+agregator แƒžแƒ แƒแƒขแƒแƒขแƒ˜แƒžแƒ›แƒ แƒแƒฉแƒ•แƒ”แƒœแƒ, แƒ แƒแƒ› 10Mbps แƒœแƒแƒ™แƒแƒ“แƒ–แƒ” แƒ“แƒ 50% แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ“แƒแƒ™แƒแƒ แƒ’แƒ•แƒแƒ–แƒ” (แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒฃแƒแƒ แƒ”แƒกแƒ˜ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜), bash แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ แƒ›แƒแƒ˜แƒฎแƒ›แƒแƒ แƒ“แƒ 3-4-แƒฏแƒ”แƒ  แƒ›แƒ”แƒข CPU-แƒก, แƒ•แƒ˜แƒ“แƒ แƒ” แƒ—แƒแƒ•แƒแƒ“ tsp แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜. แƒ”แƒก แƒกแƒชแƒ”แƒœแƒแƒ แƒ˜ แƒ›แƒ˜แƒฃแƒฆแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ. แƒ แƒ”แƒแƒšแƒฃแƒ แƒแƒ“ แƒแƒ› แƒžแƒ แƒแƒขแƒแƒขแƒ˜แƒžแƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜ แƒฅแƒ•แƒ”แƒ›แƒแƒ—

แƒ–แƒ”แƒ›แƒแƒ“แƒแƒœ แƒœแƒฃแƒ“แƒšแƒ”แƒ‘แƒ˜

#!/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 แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒ”แƒ‘แƒ˜ แƒชแƒแƒšแƒ™แƒ”แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜แƒ แƒ“แƒ แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜แƒ— แƒ”แƒคแƒ”แƒฅแƒขแƒ–แƒ” แƒฌแƒแƒ›แƒจแƒ˜ แƒ”แƒ แƒ—แƒฎแƒ”แƒš แƒ›แƒแƒ›แƒ˜แƒฌแƒ˜แƒ missingPackets-แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ (แƒ‘แƒ˜แƒขแƒ แƒแƒขแƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ˜แƒกแƒแƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒงแƒแƒ•แƒ”แƒš แƒฌแƒแƒ›แƒก แƒ›แƒแƒ“แƒ˜แƒก). แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“, แƒ‘แƒแƒจแƒ˜ แƒ›แƒแƒ แƒขแƒ แƒ“แƒแƒ แƒฉแƒ แƒ“แƒ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ“แƒ แƒ’แƒแƒšแƒแƒœแƒ’แƒจแƒ˜ แƒจแƒ”แƒคแƒฃแƒ—แƒ•แƒ (แƒžแƒแƒ แƒกแƒ”แƒ แƒ˜ + แƒแƒ’แƒ แƒ”แƒ’แƒแƒขแƒแƒ แƒ˜). แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒ’แƒแƒšแƒแƒœแƒ’แƒ˜แƒก แƒ™แƒแƒ“แƒ˜แƒก CPU แƒ›แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ 4-5-แƒฏแƒ”แƒ  แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒ˜แƒ, แƒ•แƒ˜แƒ“แƒ แƒ” แƒ—แƒแƒ•แƒแƒ“ แƒฉ/แƒ™ แƒžแƒ แƒแƒชแƒ”แƒกแƒ–แƒ”. แƒจแƒ”แƒคแƒฃแƒ—แƒ•แƒ˜แƒก แƒกแƒ˜แƒกแƒฌแƒ แƒแƒคแƒ” แƒ‘แƒแƒจแƒ˜แƒก แƒ’แƒแƒšแƒแƒœแƒ’แƒ˜แƒ— แƒ’แƒแƒ›แƒแƒชแƒ•แƒšแƒ˜แƒก แƒ’แƒแƒ›แƒ แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— 16-แƒฏแƒ”แƒ  แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ แƒ“แƒ แƒ–แƒแƒ’แƒแƒ“แƒแƒ“ แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒ›แƒ˜แƒกแƒแƒฆแƒ”แƒ‘แƒ˜แƒ (CPU แƒ–แƒ”แƒ“แƒ›แƒ”แƒขแƒแƒ“ แƒฃแƒแƒ แƒ”แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ 25%-แƒ˜แƒ—). แƒ’แƒแƒšแƒแƒœแƒ’แƒ˜แƒก แƒฌแƒงแƒแƒ แƒแƒก แƒคแƒแƒ˜แƒšแƒ˜ แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒก แƒแƒฅ.

แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— แƒจแƒ”แƒคแƒฃแƒ—แƒ•แƒ

แƒจแƒ”แƒคแƒฃแƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒกแƒแƒฌแƒงแƒ”แƒ‘แƒแƒ“, แƒ’แƒแƒ™แƒ”แƒ—แƒ“แƒ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒฃแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒกแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒจแƒแƒ‘แƒšแƒแƒœแƒ˜ (แƒแƒฅ). แƒ—แƒแƒ•แƒแƒ“ wrapper แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜ แƒ‘แƒ˜แƒœแƒแƒ แƒฃแƒš แƒคแƒแƒ˜แƒšแƒจแƒ˜ (go build tsduck-stat.go), แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒก /opt/tsduck-stat/-แƒจแƒ˜. แƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ‘แƒ”แƒœ, แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒ’แƒแƒšแƒแƒœแƒ’แƒก แƒ›แƒแƒœแƒแƒขแƒแƒœแƒฃแƒ แƒ˜ แƒกแƒแƒแƒ—แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒ— (>=1.9).

แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒฃแƒจแƒ•แƒแƒ— systemctl enable แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ [แƒ”แƒš.แƒคแƒแƒกแƒขแƒ˜แƒ— แƒ“แƒแƒชแƒฃแƒšแƒ˜แƒ]:1234 แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— systemctl start-แƒ˜แƒ— [แƒ”แƒš.แƒคแƒแƒกแƒขแƒ˜แƒ— แƒ“แƒแƒชแƒฃแƒšแƒ˜แƒ]: 1234.

แƒแƒฆแƒ›แƒแƒฉแƒ”แƒœแƒ Zabbix-แƒ˜แƒกแƒ’แƒแƒœ

แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› zabbix-แƒ›แƒ แƒจแƒ”แƒซแƒšแƒแƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒแƒฆแƒ›แƒแƒฉแƒ”แƒœแƒ, แƒ”แƒก แƒ™แƒ”แƒ—แƒ“แƒ”แƒ‘แƒ แƒฏแƒ’แƒฃแƒคแƒ˜แƒก แƒกแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒแƒขแƒแƒ แƒ˜ (discovery.sh), Zabbix-แƒ˜แƒก แƒแƒฆแƒ›แƒแƒฉแƒ”แƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒคแƒแƒ แƒ›แƒแƒขแƒจแƒ˜, แƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ‘แƒ”แƒœ, แƒ แƒแƒ› แƒ˜แƒ’แƒ˜ แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒก แƒ˜แƒ›แƒแƒ•แƒ” แƒแƒ“แƒ’แƒ˜แƒšแƒแƒก - /opt/tsduck-stat-แƒจแƒ˜. แƒแƒฆแƒ›แƒแƒฉแƒ”แƒœแƒ˜แƒก แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“ zabbix-agent-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒ›แƒแƒขแƒแƒ— .conf แƒคแƒแƒ˜แƒšแƒ˜ zabbix-agent-แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒจแƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜แƒก แƒ“แƒแƒกแƒแƒ›แƒแƒขแƒ”แƒ‘แƒšแƒแƒ“.

Zabbix แƒจแƒแƒ‘แƒšแƒแƒœแƒ˜

แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒ แƒจแƒแƒ‘แƒšแƒแƒœแƒ˜ (tsduck_stat_template.xml) แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒแƒฆแƒ›แƒแƒฉแƒ”แƒœแƒ˜แƒก แƒฌแƒ”แƒกแƒก, แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒžแƒ แƒแƒขแƒแƒขแƒ˜แƒžแƒ”แƒ‘แƒก, แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ”แƒ‘แƒก แƒ“แƒ แƒขแƒ แƒ˜แƒ’แƒ”แƒ แƒ”แƒ‘แƒก.

แƒ›แƒแƒ™แƒšแƒ” แƒฉแƒแƒ›แƒแƒœแƒแƒ—แƒ•แƒแƒšแƒ˜ (แƒ™แƒแƒ แƒ’แƒ˜, แƒ แƒ แƒ›แƒแƒฎแƒ“แƒ”แƒ‘แƒ, แƒ—แƒฃ แƒ•แƒ˜แƒœแƒ›แƒ” แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒก แƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒก)

  1. แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ˜แƒ—, แƒ แƒแƒ› tsp แƒแƒ  แƒฉแƒแƒ›แƒแƒแƒ’แƒ“แƒ”แƒ‘แƒก แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒก "แƒ˜แƒ“แƒ”แƒแƒšแƒฃแƒ " แƒžแƒ˜แƒ แƒแƒ‘แƒ”แƒ‘แƒจแƒ˜ (แƒ’แƒ”แƒœแƒ”แƒ แƒแƒขแƒแƒ แƒ˜ แƒ“แƒ แƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒแƒ แƒ˜แƒก แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜), แƒ—แƒฃ แƒฌแƒ•แƒ”แƒ—แƒ”แƒ‘แƒ˜แƒ, แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— แƒžแƒฃแƒœแƒฅแƒขแƒ˜ 2 แƒแƒœ แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒขแƒ”แƒฅแƒกแƒขแƒ˜ แƒแƒ› แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒ—.
  2. แƒ’แƒแƒแƒ™แƒ”แƒ—แƒ”แƒ— แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒกแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒ“แƒแƒ แƒ”แƒ’แƒฃแƒšแƒ˜แƒ แƒ”แƒ‘แƒ (net.core.rmem_max=8388608).
  3. แƒจแƒ”แƒแƒ“แƒ’แƒ˜แƒœแƒ”แƒ— tsduck-stat.go (แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— tsduck-stat.go-แƒ˜แƒก แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒแƒ–แƒ”).
  4. แƒ’แƒแƒœแƒแƒ—แƒแƒ•แƒกแƒ”แƒ— แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒจแƒแƒ‘แƒšแƒแƒœแƒ˜ /lib/systemd/system-แƒจแƒ˜.
  5. แƒ“แƒแƒ˜แƒฌแƒงแƒ”แƒ— แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜ systemctl-แƒ˜แƒ—, แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ—, แƒ แƒแƒ› แƒ›แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜ แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ (grep "" /dev/shm/tsduck-stat/*). แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒ›แƒ แƒแƒ•แƒแƒšแƒฏแƒ”แƒ แƒแƒ“แƒ˜ แƒœแƒแƒ™แƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—. แƒแƒฅ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ“แƒแƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ— แƒ›แƒแƒ แƒจแƒ แƒฃแƒขแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ multicast แƒฏแƒ’แƒฃแƒคแƒจแƒ˜, แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒ’แƒแƒ›แƒแƒ แƒ—แƒแƒ— rp_filter แƒแƒœ แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒ›แƒแƒ แƒจแƒ แƒฃแƒขแƒ˜ แƒฌแƒงแƒแƒ แƒแƒก IP-แƒ›แƒ“แƒ”.
  6. แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— discovery.sh, แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ˜แƒ—, แƒ แƒแƒ› แƒ˜แƒก แƒฅแƒ›แƒœแƒ˜แƒก json-แƒก.
  7. แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— zabbix แƒแƒ’แƒ”แƒœแƒขแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ, แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ— zabbix แƒแƒ’แƒ”แƒœแƒขแƒ˜.
  8. แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ— แƒจแƒแƒ‘แƒšแƒแƒœแƒ˜ zabbix-แƒ–แƒ”, แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒ˜แƒก แƒฐแƒแƒกแƒขแƒ–แƒ”, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒช แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”แƒแƒ‘แƒก แƒ“แƒ zabbix-แƒแƒ’แƒ”แƒœแƒขแƒ˜ แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒ“แƒแƒ”แƒšแƒแƒ“แƒ”แƒ— แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— 5 แƒฌแƒฃแƒ—แƒ˜, แƒœแƒแƒฎแƒ”แƒ— แƒแƒ แƒ˜แƒก แƒ—แƒฃ แƒแƒ แƒ แƒแƒฎแƒแƒšแƒ˜ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜, แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒขแƒ แƒ˜แƒ’แƒ”แƒ แƒ”แƒ‘แƒ˜.

แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜

TSDuck-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ IP(TS) แƒœแƒแƒ™แƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ“แƒแƒ™แƒแƒ แƒ’แƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ•แƒšแƒ”แƒœแƒ˜แƒก แƒ›แƒ˜แƒ–แƒœแƒ˜แƒ—, แƒ”แƒก แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜แƒ, แƒงแƒแƒ•แƒ”แƒš แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ˜แƒ, แƒ•แƒ˜แƒ“แƒ แƒ” แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”.

แƒ›แƒแƒ แƒ—แƒšแƒแƒช, CC "แƒ–แƒแƒ แƒแƒšแƒ˜" แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ›แƒแƒฎแƒ“แƒ”แƒก แƒ•แƒ˜แƒ“แƒ”แƒ แƒคแƒ แƒแƒ’แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ˜แƒกแƒแƒก (แƒ แƒแƒ›แƒ“แƒ”แƒœแƒแƒ“แƒแƒช แƒ›แƒ” แƒ•แƒ˜แƒชแƒ˜, แƒแƒกแƒ” แƒ™แƒ”แƒ—แƒ“แƒ”แƒ‘แƒ แƒฉแƒแƒœแƒแƒ แƒ—แƒ”แƒ‘แƒ˜ แƒ แƒฃแƒกแƒ”แƒ—แƒ˜แƒก แƒคแƒ”แƒ“แƒ”แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ• แƒกแƒแƒขแƒ”แƒšแƒ”แƒ•แƒ˜แƒ–แƒ˜แƒ แƒชแƒ”แƒœแƒขแƒ แƒ”แƒ‘แƒจแƒ˜, แƒแƒœแƒฃ CC แƒ›แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒšแƒ˜แƒก แƒ’แƒแƒ“แƒแƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”), แƒ”แƒก แƒฃแƒœแƒ“แƒ แƒ’แƒแƒฎแƒกแƒแƒ•แƒ“แƒ”แƒ—. แƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ• แƒแƒชแƒ˜แƒšแƒ”แƒ‘แƒก แƒแƒ› แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒก SCTE-35 แƒ”แƒขแƒ˜แƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒแƒฆแƒ›แƒแƒฉแƒ”แƒœแƒ˜แƒ— (แƒ—แƒฃ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒœแƒแƒ™แƒแƒ“แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒแƒขแƒแƒ แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ ).

แƒขแƒ แƒแƒœแƒกแƒžแƒแƒ แƒขแƒ˜แƒก แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒก แƒ™แƒฃแƒ—แƒฎแƒ˜แƒ—, แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒฏแƒ˜แƒขแƒ”แƒ แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒก (IAT) แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒแƒ‘แƒ. แƒกแƒแƒขแƒ”แƒšแƒ”แƒ•แƒ˜แƒ–แƒ˜แƒ แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒแƒก (แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ”แƒก แƒ›แƒแƒ“แƒฃแƒšแƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜ แƒ—แƒฃ แƒ‘แƒแƒšแƒ แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜) แƒแƒฅแƒ•แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜ แƒแƒ› แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ–แƒ” แƒ“แƒ แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒฏแƒ˜แƒขแƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒฃแƒกแƒแƒกแƒ แƒฃแƒšแƒแƒ‘แƒแƒ›แƒ“แƒ” แƒ’แƒแƒ‘แƒ”แƒ แƒ•แƒ. แƒ“แƒ แƒŸแƒ˜แƒขแƒ”แƒ แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒชแƒฃแƒ แƒแƒก, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ“แƒ˜แƒ“แƒ˜ แƒ‘แƒฃแƒคแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒฅแƒแƒœแƒ” แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒขแƒ แƒแƒœแƒ–แƒ˜แƒขแƒจแƒ˜ แƒ“แƒ QoS แƒแƒ  แƒแƒ แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒœ แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒแƒ“ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒกแƒ”แƒ—แƒ˜ แƒ แƒ”แƒแƒšแƒฃแƒ  แƒ“แƒ แƒแƒจแƒ˜ แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒ’แƒแƒ“แƒแƒกแƒแƒชแƒ”แƒ›แƒแƒ“.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ