IP (TS) рд╕реНрдЯреНрд░реАрдо рдкрд░ рдирдЬрд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП TSDuck рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдЖрдЬ, рдЖрдИрдкреА (рдЯреАрдПрд╕) рдзрд╛рд░рд╛рдУрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ (рдорд╛рд▓рд┐рдХрд╛рдирд╛) рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реАрдмреА рдФрд░ рдЖрдИрдХреНрдпреВ , рдЙрдирдХреЗ рдкрд╛рд╕ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдХрд╛рдлреА рд╕рдореГрджреНрдз рд╕реЗрдЯ рд╣реИ рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдЯреАрд╡реА рд╕реЗрд╡рд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рд╡рд╛рд▓реЗ рдмрдбрд╝реЗ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдРрд╕реЗ рд╕рдорд╛рдзрд╛рди рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдпрд╣ рд▓реЗрдЦ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ TSDuck рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдХрд╛рдЙрдВрдЯрд░ CC (рдирд┐рд░рдВрддрд░рддрд╛ рдХрд╛рдЙрдВрдЯрд░) рдФрд░ рдмрд┐рдЯ рджрд░ рджреНрд╡рд╛рд░рд╛ IP (TS) рдзрд╛рд░рд╛рдУрдВ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХ рдХрд┐рд░рд╛рдП рдкрд░ L2 рдЪреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреИрдХреЗрдЯ рдпрд╛ рд╕рдВрдкреВрд░реНрдг рд╕реНрдЯреНрд░реАрдо рдХреЗ рдиреБрдХрд╕рд╛рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рд╣реИ (рдЬрд┐рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдореЙрдирд┐рдЯрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрддрд╛рд░реЛрдВ рдореЗрдВ рдиреБрдХрд╕рд╛рди рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдкрдврд╝рдХрд░)ред


TSDuck рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдВрдХреНрд╖рд┐рдкреНрдд


TSDuck рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ (2-рдХреНрд▓рд╛рдЬ BSD рд▓рд╛рдЗрд╕реЗрдВрд╕) рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ (рдХрдВрд╕реЛрд▓ рдпреВрдЯрд┐рд▓рд┐рдЯреАрдЬ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдФрд░ рдЯреАрдПрд╕ рд╕реНрдЯреНрд░реАрдореЛрдВ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдпрд╛ рдкреНрд▓рдЧ-рдЗрди рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА) рд╣реИред рдПрдХ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣ рдЖрдИрдкреА (рдорд▓реНрдЯреАрдХрд╛рд╕реНрдЯ / рдпреВрдирд┐рдХреИрд╕реНрдЯ), http, hls, DVb рдЯреНрдпреВрдирд░, dektec dvb-asi рдбреЗрдореЛрдбреБрд▓реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рдЖрдВрддрд░рд┐рдХ TS рд╕реНрдЯреНрд░реАрдо рдЬрдирд░реЗрдЯрд░ рд╣реИ рдФрд░ рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ рдкрдврд╝рдирд╛ рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рдлрд╝рд╛рдЗрд▓, рдЖрдИрдкреА (рдорд▓реНрдЯреАрдХрд╛рд╕реНрдЯ / рдпреВрдирд┐рдХрд╕реНрдЯ), рд╣реАрд▓реНрд╕, рдбреЗрдХреНрдЯреЗрдХ рдбреАрд╡реАрдмреА-рдПрдПрд╕рдЖрдИ рдФрд░ рд╣рд╛рдпрдбреЗрд╕ рдореЙрдбреНрдпреВрд▓реЗрдЯрд░, рдкреНрд▓реЗрдпрд░реНрд╕ (mplayer, vlc, xine) рдФрд░ рдбреНрд░реЙрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдмреАрдЪ, рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдЯреНрд░реИрдлрд╝рд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░реНрд╕ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреАрдЖрдИрдбреА тАЛтАЛрд░реАрдореИрдкрд┐рдВрдЧ, рд╕реНрдХреНрд░реИрдЪрд┐рдВрдЧ / рдбреАрд╕реНрдХреНрд░реЗрдореНрдмрд┐рдВрдЧ, рд╕реАрд╕реА-рдХрд╛рдЙрдВрдЯрд░реНрд╕ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рдмрд┐рдЯрд░реЗрдЯ рдЧрдгрдирд╛ рдФрд░ рдЯреАрдПрд╕-рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдиреНрдп рдСрдкрд░реЗрд╢рдиред


рдЗрд╕ рдЖрд▓реЗрдЦ рдореЗрдВ, рдЖрдИрдкреА рд╕реНрдЯреНрд░реАрдо (рдорд▓реНрдЯреАрдХрд╛рд╕реНрдЯ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдмрд┐рдЯреНрд░реЗрдЯ_рдореЛрдирд┐рдЯрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдирд╛рдо рд╕реЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИ) рдФрд░ рдирд┐рд░рдВрддрд░рддрд╛ (рд╕реАрд╕реА-рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг)ред рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ, рдЖрдк IP рдорд▓реНрдЯреАрдХрд╛рд╕реНрдЯ рдХреЛ TSDuck рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдПрдХ рдЕрдиреНрдп рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред


рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд░реНрддрдорд╛рди OS рдХреЗ рд▓рд┐рдП TSDuck рдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдмрд┐рд▓реНрдб / рдкреИрдХреЗрдЬ рд╣реИрдВ ред рдбреЗрдмрд┐рдпрди рдХреЗ рд▓рд┐рдП, рд╡реЗ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдбреЗрдмрд┐рдпрди 8 рдФрд░ рдбреЗрдмрд┐рдпрди 10 рдХреЗ рддрд╣рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ред


рдЕрдЧрд▓рд╛, TSDuck рд╕рдВрд╕реНрдХрд░рдг 3.19-1520 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓рд┐рдирдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ OS рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╕рдорд╛рдзрд╛рди рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдмрд┐рдпрди 10 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, CentOS 7 рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)


TSDuck рдФрд░ OS рддреИрдпрд╛рд░ рдХрд░рдирд╛


рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рд╡рд╛рд╣ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ TSDuck рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдпрд╛ OS (рд╕реЙрдХреЗрдЯ) рд╕реНрддрд░ рдкрд░ рдХреЛрдИ рдмреВрдБрджреЗрдВ рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рдмрд╛рдж рдореЗрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдмреВрдВрджреЗрдВ рдХрд╣рд╛рдВ рд╣реБрдИрдВ - рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдпрд╛ "рд╕рд░реНрд╡рд░ рдХреЗ рдЕрдВрджрд░"ред рдЖрдк ethtool -S ethX рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рд╕реНрддрд░ рдкрд░ рдбреНрд░реЙрдкреНрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЯреНрдпреВрдирд┐рдВрдЧ рдПрдХ рд╣реА рдПрдерд▓реВрд▓ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЖрдорддреМрд░ рдкрд░, рдЖрдкрдХреЛ RX рдмрдлрд░ (-G) рдХреЛ рдмрдврд╝рд╛рдиреЗ рдФрд░ рдХрднреА-рдХрднреА рдХреБрдЫ рдСрдлрд▓реЛрдбреНрд╕ (-K) рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ)ред рд╕рд╛рдорд╛рдиреНрдп рдЕрдиреБрд╢рдВрд╕рд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдП рдЧрдП рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдкреЛрд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ, рдпрд╣ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЬреБрдбрд╝реЗ рдЧрд▓рдд рд╕рдХрд╛рд░рд╛рддреНрдордХ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдбреНрд░реЙрдк рдЕрдиреНрдп рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдкреЛрд░реНрдЯ рдкрд░ рд╕реБрд╕рдВрдЧрдд рд░реВрдк рд╕реЗ рд╣реБрдЖред рдпрджрд┐ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ (рдПрдХ рдПрдХрд▓-рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдорд┐рдиреА-рдХрдВрдкреНрдпреВрдЯрд░ / рдПрдирдпреВрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рддреЛ рдпрд╣ рдЙрд╕ рдЙрдкрдХрд░рдг рдкрд░ рдмрд╛рдХреА рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдП рдЧрдП рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддреНрдпрдзрд┐рдХ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рднреМрддрд┐рдХ рдкреЛрд░реНрдЯ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЬ рдФрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рдЕрдВрджрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред


рдореЗрдЬрдмрд╛рди рдХреЗ рдЕрдВрджрд░ рдПрдХ рдзрд╛рд░рд╛ рдХрд╛ рд╕реГрдЬрди рдФрд░ рд╕реНрд╡рд╛рдЧрдд


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 рдПрдордмреАрдкреАрдПрд╕ рдХреА рдЧрддрд┐ рдХреЗ рд╕рд╛рде рдпрд╛рддрд╛рдпрд╛рдд рдЬрдирд░реЗрдЯрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:


 tsp -I craft \ -P regulate -b 10000000 \ -O ip -p 7 -e --local-port 6000 239.0.0.1:1234 

рдЬрд╣рд╛рдВ "-p 7 -e" рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдкрдХреЛ 7 рдЯреАрдПрд╕ рдкреИрдХреЗрдЯ рдХреЛ 1 рдЖрдИрдкреА рдкреИрдХреЗрдЯ рдореЗрдВ рдкреИрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрдард┐рди (-рдИ), рдЕрд░реНрдерд╛рддред рдЖрдИрдкреА тАЛтАЛрдкреИрдХреЗрдЯ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдореЗрд╢рд╛ рдЖрдЦрд┐рд░реА рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реЗ 7 рдЯреАрдПрд╕ рдкреИрдХреЗрдЯ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВред


рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ:


 * 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 

рдХреНрдпрд╛ рдЙрдореНрдореАрдж рд╣реИ рдкреИрдХреЗрдЯ рдиреБрдХрд╕рд╛рди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ (рдЖрдИрдкреА рдиреЗрдЯреНрд╕ рдкреА iptables -F рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ) рдФрд░ рдЬрдирд░реЗрдЯрд░ рдХреА рдмрд┐рдЯрд░реЗрдЯ рдХреЛ 100 рдПрдордмреАрдкреАрдПрд╕ рддрдХ рдмрдврд╝рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ CC рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдФрд░ 100 рдХреЗ рдмрдЬрд╛рдп 75 Mbit / s рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рджреЛрд╖ рдХрд┐рд╕рдХрд╛ рд╣реИ - рдЬрдирд░реЗрдЯрд░ рдХреЗ рдкрд╛рд╕ рд╕рдордп рдирд╣реАрдВ рд╣реИ рдпрд╛ рд╕рдорд╕реНрдпрд╛ рдЗрд╕рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреИрдХреЗрдЯ (700,000 рдЯреАрдПрд╕ рдкреИрдХреЗрдЯ = 100,000 рдЖрдИрдкреА рдкреИрдХреЗрдЯ) рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:


 # 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 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 100,000 рдЖрдИрдкреА рдкреИрдХреЗрдЯ (151925460-151825460) рдЙрддреНрдкрдиреНрди рдХрд┐рдП рдЧрдП рдереЗред рддреЛ рд╣рдо рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо veth1 рдкрд░ RX рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рд╕рд╛рде рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рд╕рдЦреНрддреА рд╕реЗ veth0 рдкрд░ TX рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдлрд┐рд░ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕реЙрдХреЗрдЯ рд╕реНрддрд░ рдкрд░ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:


 # 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 рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЯреАрдПрд╕ рдкреИрдХреЗрдЯреЛрдВ рдореЗрдВ рдпрд╣ 170485 рдпрд╛ 700000 рдХрд╛ 24.36% рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЦреЛрдИ рд╣реБрдИ рдмрд┐рдЯрд░реЗрдЯ рдХреЗ рдмрд╣реБрдд 25% 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 рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдмрдлрд░ рдЖрдХрд╛рд░ (- рдмрдлрд╝рд░-рдЖрдХрд╛рд░) рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо рд╕реЙрдХреЗрдЯ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдкрд░реНрд╢ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд╣рдо рд╕рд┐рд░реНрдл рд╕реЙрдХреЗрдЯ рдмрдлрд░ рдХреЗ рдЕрдзрд┐рдХрддрдо рдЖрдХрд╛рд░ рдХреЛ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ 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 Mbit / s рд╣реИ, рдХреЛрдИ CC рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реИрдВред


Tsp рдЕрдиреБрдкреНрд░рдпреЛрдЧ рджреНрд╡рд╛рд░рд╛ CPU рдЦрдкрдд рджреНрд╡рд╛рд░рд╛ рд╣реАред I5-4260U CPU @ 1.40GHz рдХреЗ рдПрдХ рдХреЛрд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖, 10Mbit / s рд╕реНрдЯреНрд░реАрдо рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 3-4% CPU, 100Mbit / s 25%, 200Mbit / s 46% рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред % рдкреИрдХреЗрдЯ рд╣рд╛рдирд┐ рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп, CPU рдкрд░ рд▓реЛрдб рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмрдврд╝рддрд╛ (рд▓реЗрдХрд┐рди рдШрдЯ рд╕рдХрддрд╛ рд╣реИ)ред


рдЕрдзрд┐рдХ рдЙрддреНрдкрд╛рджрдХ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░, рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ 1 рдЬреАрдмреА / рдПрд╕ рд╕реЗ рдЕрдзрд┐рдХ рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ред


рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдкрд░ рдкрд░реАрдХреНрд╖рдг


рдПрдХ рдкрд╢реБ рдЬреЛрдбрд╝реА рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдПрдХ рдореЗрдЬрдмрд╛рди рдХреЗ рджреЛ рдореЗрдЬрдмрд╛рди рдпрд╛ рджреЛ рдмрдВрджрд░рдЧрд╛рд╣ рд▓реЗрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ, рдПрдХ рдкрд░ рдЬрдирд░реЗрдЯрд░ рдЪрд▓рд╛рдПрдВ, рдФрд░ рджреВрд╕рд░реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдкрд░ред рдХреЛрдИ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рдереА, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╕рдм рд▓реЛрд╣реЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЙрддрдирд╛ рд╣реА рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ред


рдирд┐рдЧрд░рд╛рдиреА рдкреНрд░рдгрд╛рд▓реА (Zabbix) рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдЖрдВрдХрдбрд╝реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ


Tsp рдХреЗ рдкрд╛рд╕ SNMP рдпрд╛ рдкрд╕рдВрдж рдЬреИрд╕реА рдХреЛрдИ рдорд╢реАрди-рдкрдардиреАрдп API рдирд╣реАрдВ рд╣реИред рд╕реАрд╕реА рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдХрдо рд╕реЗ рдХрдо 1 рд╕реЗрдХрдВрдб (рдкреИрдХреЗрдЯ рдиреБрдХрд╕рд╛рди рдХреЗ рдЙрдЪреНрдЪ рдкреНрд░рддрд┐рд╢рдд рдХреЗ рд╕рд╛рде, рдмрд┐рдЯрд░реЗрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реИрдХрдбрд╝реЛрдВ / рд╣рдЬрд╛рд░реЛрдВ / рджрд╕рд┐рдпреЛрдВ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб, рд╣рдЬрд╛рд░реЛрдВ) рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдмрдЪрд╛рдиреЗ рдФрд░ рд╕реАрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдмрд┐рдЯ рджрд░ рдХреЗ рдЧреНрд░рд╛рдл рдХреЛ рдЦреАрдВрдЪрдиреЗ рдФрд░ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рджреБрд░реНрдШрдЯрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдХрд▓реНрдк рдЖрдЧреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:


  1. рдкрд╛рд░реНрд╕ рдФрд░ рдХреБрд▓ (рд╕реАрд╕реА рдХреЗ рдЕрдиреБрд╕рд╛рд░) рдЯреАрдПрд╕рдкреА рдХрд╛ рдЙрддреНрдкрд╛рджрди, рдЕрд░реНрдерд╛рддреНред рдЗрд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдЖрдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВред
  2. Tsp рдФрд░ / рдпрд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкреНрд▓рдЧ рдЗрди рдХреЛ bitrate_monitor рдФрд░ рдирд┐рд░рдВрддрд░рддрд╛ рдЬреЛрдбрд╝реЗрдВ рддрд╛рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдПрдХ рдирд┐рдЧрд░рд╛рдиреА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдорд╢реАрди-рдкрдардиреАрдп рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛред
  3. рдЕрдкрдирд╛ рдЖрд╡реЗрджрди tsduck рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд▓рд┐рдЦреЗрдВред

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╢реНрд░рдо рд▓рд╛рдЧрдд рдХреЗ рдмрд┐рдВрджреБ рд╕реЗ, рд╡рд┐рдХрд▓реНрдк 1 рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ tsduck рдЦреБрдж рдХреЛ рдирд┐рдореНрди-рд╕реНрддрд░ (рдЖрдзреБрдирд┐рдХ рдорд╛рдирдХреЛрдВ рджреНрд╡рд╛рд░рд╛) рднрд╛рд╖рд╛ (C ++) рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ


рдмреИрд╢ рдкрд░ рдкрд╛рд░реНрд╕рд░ + рдПрдЧреНрд░реАрдЧреЗрдЯрд░ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдиреЗ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ 10Mbit / s рд╕реНрдЯреНрд░реАрдо рдФрд░ 50% рдкреИрдХреЗрдЯ рд▓реЙрд╕ (рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐) рдкрд░, bash рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдиреЗ tsp рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 3-4 рдЧреБрдирд╛ рдЕрдзрд┐рдХ CPU рдЦрдкрдд рдХрд┐рдпрд╛ред рдпрд╣ рдкрд░рд┐рджреГрд╢реНрдп рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдиреАрдЪреЗ рдЗрд╕ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛


рдмреИрд╢ рдкрд░ рдиреВрдбрд▓реНрд╕
 #!/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 

рдЗрд╕ рддрдереНрдп рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐ рдпрд╣ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд░реВрдк рд╕реЗ рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдмреИрд╢ рдореЗрдВ рдХреЛрдИ рд╕рд╛рдорд╛рдиреНрдп рдереНрд░реЗрдбреНрд╕ рдирд╣реАрдВ рд╣реИрдВ, рдмреИрд╢ рдЬреЙрдмреНрд╕ рд╕реНрд╡рддрдВрддреНрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВ, рдФрд░ рдореБрдЭреЗ рдПрдХ рдмрд╛рд░ рдПрдХ рдмрд╛рд░ (рдЬрдм рдореБрдЭреЗ рдмрд┐рдЯрд░реЗрдЯ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕реЗрдХрдВрдб рдореЗрдВ рдЖрддрд╛ рд╣реИ) рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдкрд░ рд▓рд╛рдкрддрд╛рдкреИрдХрд┐рдЯ рдореВрд▓реНрдп рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛ рдерд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдмреИрд╢ рдХреЛ рдЕрдХреЗрд▓рд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЧреЛрд▓рдВрдЧ рдореЗрдВ рдПрдХ рдЖрд╡рд░рдг (рдкрд╛рд░реНрд╕рд░ + рдПрдЧреНрд░реАрдЧреЗрдЯрд░) рд▓рд┐рдЦрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕реА рддрд░рд╣ рдХреЗ рдЧреЛрд▓рдВрдЧ рдХреЛрдб рдХрд╛ рд╕реАрдкреАрдпреВ рдЦрдкрдд tsp рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ 4-5 рдЧреБрдирд╛ рдХрдо рд╣реИред рдЖрд╡рд░рдг рдХреЛ рдЧреЛрд▓рдЧрдкреНрдкреЗ рдХреЗ рд╕рд╛рде рдмрджрд▓рдХрд░ рд▓рдЧрднрдЧ 16 рдЧреБрдирд╛ рдирд┐рдХрд▓рд╛ рдФрд░ рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдкрд░рд┐рдгрд╛рдо рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ (рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реАрдкреАрдпреВ рдкрд░ 25% рд╕реЗ рдЕрдзрд┐рдХ)ред рдЧреЛрд▓рдВрдЧ рдкрд░ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдпрд╣рд╛рдБ рд╣реИ ред


рдЖрд╡рд░рдг рд▓реЙрдиреНрдЪ


рдЖрд╡рд░рдг рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд┐рд╕реНрдЯрдордб рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕реЗрд╡рд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ ( рдпрд╣рд╛рдВ )ред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд░реИрдкрд░ рдЦреБрдж рдХреЛ рдПрдХ рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ (рдЧреЛ рдмрд┐рд▓реНрдб tsduck-stat.go) рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ / рдСрдкреНрдЯ / tsduck-stat / рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЧреЛрд▓реИрдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЛрдиреЛрдЯреЛрдирд┐рдХ рдШрдбрд╝реА (> = 1.9) рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рд╕реЗрд╡рд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ systemctl enable tsduck-stat@239.0.0.1: 1234 рдХрдорд╛рдВрдб рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛, рдлрд┐рд░ systemctl start tsduck-stat@239.0.0.1: 1234 рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред


Zabbix рдХреА рдЦреЛрдЬ


рддрд╛рдХрд┐ рдЬрд╝реИрдмрд┐рдХреНрд╕ рд░рдирд┐рдВрдЧ рд╕реЗрд╡рд╛рдУрдВ рдХреА рдЦреЛрдЬ рдХрд░ рд╕рдХреЗ, рдПрдХ рд╕рдореВрд╣ рд╕реВрдЪреА рдЬрдирд░реЗрдЯрд░ (рдбрд┐рд╕реНрдХрд╡рд░реА) рдХреЛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд╝реИрдмрд┐рдХреНрд╕ рдбрд┐рд╕реНрдХрд╡рд░реА рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╣рд╛рдБ рд╕реНрдерд┐рдд рд╣реИ - in / opt / tsduck-statред Zabbix- рдПрдЬреЗрдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрдЬ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП zabbix- рдПрдЬреЗрдВрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ .conf рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред


Zabbix рдЯреЗрдореНрдкрд▓реЗрдЯ


рдирд┐рд░реНрдорд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ (tsduck_stat_template.xml) рдореЗрдВ рдСрдЯреЛрдбрд┐рд╕реНрдХрд╡рд░ рдирд┐рдпрдо, рдбреЗрдЯрд╛ рддрддреНрд╡реЛрдВ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк, рдЧреНрд░рд╛рдлрд╝ рдФрд░ рдЯреНрд░рд┐рдЧрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред


рдПрдХ рдЫреЛрдЯреА рдЪреЗрдХрд▓рд┐рд╕реНрдЯ (рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣реЗ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛)


  1. рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ "рдЖрджрд░реНрд╢" рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЯреАрдПрд╕рдкреА рдкреИрдХреЗрдЯ рдХреЛ рдирд╣реАрдВ рдЧрд┐рд░рд╛рддрд╛ рд╣реИ (рдЬрдирд░реЗрдЯрд░ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕реАрдзреЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ), рдпрджрд┐ рдбреНрд░реЙрдкреНрд╕ рд╣реИрдВ, рддреЛ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЕрдиреБрднрд╛рдЧ 2 рдпрд╛ рд▓реЗрдЦ рдХрд╛ рдкрд╛рда рджреЗрдЦреЗрдВред
  2. рдЕрдзрд┐рдХрддрдо рд╕реЙрдХреЗрдЯ рдмрдлрд░ (net.core.rmem_max = 8388608) рдХреА рдЯреНрдпреВрдирд┐рдВрдЧ рдмрдирд╛рдПрдВред
  3. рд╕рдВрдХрд▓рди tsduck-stat.go (рдЧреЛ рдмрд┐рд▓реНрдб tsduck-stat.go)ред
  4. рд╕реЗрд╡рд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ / lib / systemd / рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд░рдЦреЗрдВред
  5. рд╕рд┐рд╕реНрдЯрдордХреНрдЯреЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрд╡рд╛рдПрдВ рд╢реБрд░реВ рдХрд░реЗрдВ, рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХрд╛рдЙрдВрдЯрд░ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд▓рдЧреЗ (grep "" / dev / shm / tsduck-stat / *)ред рдорд▓реНрдЯрд┐рдХрд╛рд╕реНрдЯ рдзрд╛рд░рд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рд╕реЗрд╡рд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдорд▓реНрдЯреАрдХрд╛рд╕реНрдЯ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд╢рд╛рдпрдж rp_filter рдХреЛ рдмрдВрдж рдХрд░реЗрдВ рдпрд╛ рд╕реНрд░реЛрдд рдЖрдИрдкреА рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рд░реНрдЧ рдмрдирд╛рдПрдВред
  6. рдбрд┐рд╕реНрдХрд╡рд░реА рдЪрд▓рд╛рдУред рд╢рд╢, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдЬреЗрдирд╕рди рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
  7. рдЬрд╝реИрдмрд┐рдХреНрд╕ рдПрдЬреЗрдВрдЯ рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ, рдЬрд╝реЗрдмрд┐рдХреНрд╕ рдПрдЬреЗрдВрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред
  8. рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдЬрд╝реИрдмрд┐рдХреНрд╕ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдЗрд╕реЗ рдЙрд╕ рд╣реЛрд╕реНрдЯ рдкрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдЬрд┐рд╕ рдкрд░ рдЬрд╝реИрдмрд┐рдХреНрд╕-рдПрдЬреЗрдВрдЯ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рд▓рдЧрднрдЧ 5 рдорд┐рдирдЯ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ, рджреЗрдЦреЗрдВ рдХрд┐ рдирдП рдбреЗрдЯрд╛ рддрддреНрд╡, рдЧреНрд░рд╛рдлрд╝ рдФрд░ рдЯреНрд░рд┐рдЧрд░реНрд╕ рджрд┐рдЦрд╛рдИ рджрд┐рдП рд╣реИрдВред

рдкрд░рд┐рдгрд╛рдо


рдмрд┐рдЯрд░реЗрдЯ рдФрд░ рд╕реАрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд╛рд░реНрдЯ


рдкреИрдХреЗрдЯ рдиреБрдХрд╕рд╛рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдпрд╣ рдирд┐рдЧрд░рд╛рдиреА рдХреА рдХрдореА рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, CC- "рдиреБрдХрд╕рд╛рди" рддрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм gluing рд╡реАрдбрд┐рдпреЛ рдХреНрд▓рд┐рдк (рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рд░реВрд╕реА рд╕рдВрдШ рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рдЯреЗрд▓реАрд╕реЗрдВрдЯ рдкрд░ рдЖрд╡реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛рдиреА рд╕реАрд╕реА рдХрд╛рдЙрдВрдЯрд░ рдХреА рдЧрд┐рдирддреА рдХреЗ рдмрд┐рдирд╛), рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдорд╛рд▓рд┐рдХрд╛рдирд╛ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ SCTE-35 рдЯреИрдЧ рд▓реЗрдмрд▓ (рдпрджрд┐ рд╡реЗ рд╕реНрдЯреНрд░реАрдо рдЬрдирд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдХрд░ рдмрд╛рдИрдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
UPD: рд░реИрдкрд░ рдФрд░ zabbix рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП SCTE-35 рдЯреИрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛


рдкрд░рд┐рд╡рд╣рди рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдкрд░реНрдпрд╛рдкреНрдд рдирд┐рдЧрд░рд╛рдиреА рдШрдмрд░рд╛рдирд╛ (IAT) рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдЯреАрд╡реА рдЙрдкрдХрд░рдг (рдЪрд╛рд╣реЗ рдореЙрдбреНрдпреВрд▓реЗрдЯрд░ рдпрд╛ рдПрдВрдб рдбрд┐рд╡рд╛рдЗрд╕) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЕрдирдВрдд рдХреЛ рдЬрд┐рдЯрдмрдлрд╝рд░ рдХреЛ рдлреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдФрд░ рдШрдмрд░рд╛рд╣рдЯ рддрдм рддреИрд░ рд╕рдХрддреА рд╣реИ рдЬрдм рдмрдбрд╝реЗ рдмрдлрд╝рд░реНрд╕ рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдг рдХреЛ рдкрд╛рд░рдЧрдорди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреНрдпреВрдУрдПрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдРрд╕реЗ рд░рд┐рдпрд▓рдЯрд╛рдЗрдо рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Source: https://habr.com/ru/post/hi482736/


All Articles