рд▓рд┐рдирдХреНрд╕ рдХреНрдпреВрдУрдПрд╕: рдпреВ 32 рдлрд┐рд▓реНрдЯрд░

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


рддреБрд▓рдирд╛


рдФрд░ рдЗрд╕рд▓рд┐рдП, U32 рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдкреИрдХреЗрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдмреНрд▓реЙрдХ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рджрд┐рдП рдЧрдП рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдорд╛рди рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ, рддреЛ рдкреИрдХреЗрдЬ рдкрд░ рдХреБрдЫ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдкреИрдХреЗрдЬ рдореЗрдВ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:



рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд tc рдХрдорд╛рдВрдб рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд▓реЗрдВ:

tc filter add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ u32 \ match u32 0xc0a80100 0xffffff00 at 12 \ classid 1:8 


рд╣рдо eth0 рдХреЗ рдЕрдиреБрд╢рд╛рд╕рди 1: 0 рдХреЗ 10 рдХреЗ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рдХрд╛рд░ u32 рдХрд╛ рдПрдХ рдлрд┐рд▓реНрдЯрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдФрд░ рдпрджрд┐ рддреБрд▓рдирд╛ рд╕рдлрд▓ рд╣реЛрддреА рд╣реИ, рддреЛ рдкреИрдХреЗрдЬ рдХрдХреНрд╖рд╛ 1: 8 рдореЗрдВ рдЧрд┐рд░ рдЬрд╛рдПрдЧрд╛ред рд╕рд╛рддрд╡реАрдВ рдкрдВрдХреНрддрд┐ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рд╣рдо рдЗрд╕ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ:



рдЗрди рдЪрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╣рдо рд╕реНрд░реЛрдд рдкрддреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ (рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк IPv4 рд╣реЗрдбрд░ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ), рдФрд░ рдпрджрд┐ рдпрд╣ 192.168.1.0/24 рд╕рдмрдиреЗрдЯ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рддреЛ рд╣рдо рдкреИрдХреЗрдЯ рдХреЛ 1: 8 рд╡рд░реНрдЧ рдореЗрдВ рднреЗрдЬрддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, RFC рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдЦреБрджрд╛рдИ рдХрд░рдирд╛ рдмрд╣реБрдд рдердХрд╛рдК рд╣реИ, рдФрд░ рд╕рднреА рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣реЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЯреАрд╕реА рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рдЪреАрдиреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рддреЛ рд╣рдорд╛рд░рд╛ рдЙрджрд╛рд╣рд░рдг рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:

 tc filter add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ u32 \ match ip src 192.168.1.0/24 \ classid 1:8 


рдЖрдк рдПрдХ рдХрдорд╛рдВрдб рдореЗрдВ рдХрдИ "рдореИрдЪ" рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдореИрдЪ рддрднреА рд╕рдлрд▓ рд╣реЛрдЧрд╛ рдЬрдм рд╕рднреА рд╢рд░реНрддреЗрдВ рдкреВрд░реА рд╣реЛрдВред 192.168.1.0/24 рдХреЗ рд╕реНрд░реЛрдд рдкрддреЗ рдФрд░ рдХрдХреНрд╖рд╛ 1: 1 рдХреЗ рд▓рд┐рдП 0x10 (рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рдЯреНрд░реИрдлрд╝рд┐рдХ) рдХрд╛ TOS рдорд╛рди рдХреЗ рд╕рд╛рде рд╕рднреА рдкреИрдХреЗрдЯ рднреЗрдЬреЗрдВред

 tc filter add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ u32 \ match ip src 192.168.1.0/24 \ match ip tos 0x10 0x1e \ classid 1:1 


рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
 #   ~$ tc -sf ls dev eth0 filter parent 1: protocol ip pref 10 u32 filter parent 1: protocol ip pref 10 u32 fh 800: ht divisor 1 filter parent 1: protocol ip pref 10 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:1 (rule hit 1911 success 0) match c0a80100/ffffff00 at 12 (success 0 ) match 00100000/001e0000 at 0 (success 0 ) #   -p,  tc     #   ,   -  ~$ tc -s -pf ls dev eth0 filter parent 1: protocol ip pref 10 u32 filter parent 1: protocol ip pref 10 u32 fh 800: ht divisor 1 filter parent 1: protocol ip pref 10 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:1 (rule hit 3413 success 0) match IP src 192.168.1.0/24 (success 0 ) (success 0 ) # -       ToS $ ping -f -I 192.168.1.1 -Q 0x10 www.ya.ru PING ya.ru (93.158.134.3) from 192.168.1.1 : 56(84) bytes of data. --- ya.ru ping statistics --- 107 packets transmitted, 107 received, 0% packet loss, time 619ms rtt min/avg/max/mdev = 4.492/5.240/7.560/0.536 ms, ipg/ewma 5.842/5.403 ms #,      ~$ tc -sf ls dev eth0 filter parent 1: protocol ip pref 10 u32 filter parent 1: protocol ip pref 10 u32 fh 800: ht divisor 1 filter parent 1: protocol ip pref 10 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:1 (rule hit 354903 success 107) match c0a80100/ffffff00 at 12 (success 107 ) match 00100000/001e0000 at 0 (success 107 ) 


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдкреИрдХреЗрдЬ - рд╡рд╛рдВрдЫрд┐рдд рд╡рд░реНрдЧ рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдзреНрдпрд╛рди рд╕реЗ рдЯреАрд╕реА рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдХреБрдЫ рдмрд┐рдВрджреБ рдЕрднреА рднреА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрдЬреНрдЮрд╛рдд рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпреЗ рдЧреБрдкреНрдд fh рдорд╛рди 800 :: 800 рд╣реИрдВред рдпреЗ рддрдерд╛рдХрдерд┐рдд рд╣реИрдВрдбрд▓ (рдЕрдВрдЧреНрд░реЗрдЬреА "рд╣реИрдВрдбрд▓" рд╕реЗ рдЯреНрд░реЗрд╕рд┐рдВрдЧ) рд╣реИрдВ - U32 рдХреЗ рдЕрдВрджрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ред

рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╣реИрдВрдбрд▓ рдореЗрдВ рддреАрди рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╣реЛрддреА рд╣реИрдВ рдФрд░ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП U32 рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реНрдерд╛рди рдХреЗ рднреАрддрд░ рдЕрджреНрд╡рд┐рддреАрдп рд╣реЛрддреА рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╣реИрдВрдбрд▓ 800 :: 800 рд╣реИред рдЕрдм рд╣рдо рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рдЕрдВрдХ - рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рд┐рд▓реНрдЯрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рд┐рд╕реНрдЯрдо рдЦреБрдж рдЗрд╕реЗ рдЕрд╕рд╛рдЗрди рдХрд░рддрд╛ рд╣реИ - рд╕рдмрд╕реЗ рдкреБрд░рд╛рдирд╛ рдХреЗ рдмрд╛рдж, 0x800 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдлрд╝рд┐рд▓реНрдЯрд░ рд╕рдВрдЦреНрдпрд╛ 0x001 рд╕реЗ 0xfff рддрдХ рд╣реЛрддреА рд╣реИред рдЖрдк рдЙрдкрдпреБрдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдлрд╝рд┐рд▓реНрдЯрд░ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 tc filter add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ handle ::1 \ u32 \ match ip src 192.168.1.0/24 \ match ip tos 0x10 0x1e \ classid 1:1 


рдлрд┐рд▓реНрдЯрд░ рдЕрдкрдиреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдХреНрд░рдо рдореЗрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рд▓рд┐рдВрдХ рдХрд░рдирд╛


рдЖрдЗрдП рд╣рдо рджреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:

 tc filter add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ handle ::1 \ u32 \ match ip src 192.168.1.0/24 \ match ip tos 0x10 0x1e \ classid 1:1 tc filter add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ handle ::2 \ u32 \ match ip src 192.168.1.0/24 \ match ip tos 0x08 0x1e \ classid 1:2 


рджреЛрдиреЛрдВ рдлрд┐рд▓реНрдЯрд░ рдореЗрдВ рдПрдХ рд╣реА рдЙрдкрд╕рд░реНрдЧ рд╣реЛрдЧрд╛ - рд╣реИрдВрдбрд▓ рдХреЗ рдкрд╣рд▓реЗ рджреЛ рдирдВрдмрд░ (800: 0)ред рдпрджрд┐ рдЖрдк рдХрд▓реНрдкрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдХреНрд░рдо рдореЗрдВ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдиреАрдЪреЗ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ - рд╣реИрдВрдбрд▓ рдХреА рдЕрдВрддрд┐рдо рд╕рдВрдЦреНрдпрд╛, рдЖрдкрдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИ:

 800: 0 рд╕реВрдЪреА:
 :: 1 - рдЖрдИрдкреА src 192.168.1.0/24 tos 0x10 -> classid 1: 1
 :: 2 - рдЖрдИрдкреА src 192.168.1.0/24 tos 0x08 -> classid 1: 2


рдЪреВрдВрдХрд┐ рдПрдХ рд╕реВрдЪреА рдХреЗ рдлрд┐рд▓реНрдЯрд░ рдореЗрдВ рд╣реИрдВрдбрд▓ рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рд╕рдВрдЦреНрдпрд╛рдУрдВ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рд╕реВрдЪреА рдХреЛ рдкрд╣рд▓реЗ рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╣реИрдВрдбрд▓ рд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЙрдирдХреЗ рдЙрдкрд╕рд░реНрдЧ (800: 0) рд╕реЗред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдкрд╛рд▓рди рдЙрд╕ рдХреНрд░рдо рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╡реЗ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдореИрдЪ рдХрд┐рд╕реА рднреА рдлрд╝рд┐рд▓реНрдЯрд░ рдореЗрдВ рд╕рдлрд▓ рд░рд╣рд╛, рддреЛ рдХреБрдЫ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ U32 рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рд╕реВрдЪреА рдХреЗ рдЕрдВрдд рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рднреА рд╕рдлрд▓ рдореИрдЪ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рддреЛ U32 рдлрд╝рд┐рд▓реНрдЯрд░ рдЕрд╢реБрджреНрдз рдкреИрдХреЗрдЯ рдХреЛ рд╢реАрд░реНрд╖ рдкрд░ рд▓реМрдЯрд╛ рджреЗрдЧрд╛ред

u32 рд╕рд░рд▓ рдкреНрд░рд╡рд╛рд╣ рдЪрд╛рд░реНрдЯ

рд╡рд░реНрдЧреАрдХрд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреИрдХреЗрдЬ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрд░рд╡рд╛рдИ рдлрд┐рд▓реНрдЯрд░ рдХреА рдПрдХ рдЕрдиреНрдп рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреНрд░рдордг рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрд╣ "рдХреНрд▓рд╛рд╕рд┐рдб" рдХреЗ рдмрдЬрд╛рдп "рд▓рд┐рдВрдХ" рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рднрд▓реЗ рд╣реА "рдХреНрд▓рд╛рд╕рд┐рдб" рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рдпрд╣ рдЕрднреА рднреА рдЕрдирджреЗрдЦрд╛ рд╣реИ), рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:

 tc filter add \ dev eth0 \ parent 1: \ prio 10 \ protocol ip \ handle ::2 \ u32 \ match ip src 192.168.1.0/24 \ link 1: 


рдпрджрд┐ рдкреИрдХреЗрдЯ рдХрд╛ рд╕рдмрдиреЗрдЯ 192.168.1.0/24 рд╕реЗ рд╕реНрд░реЛрдд рдХрд╛ рдкрддрд╛ рд╣реИ, рддреЛ 1: 0 рдХреЗ рд╣реИрдВрдбрд▓ рдХреЗ рд╕рд╛рде рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реВрдЪреА рдкрд░ рдПрдХ рдЪреЗрдХ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╕рдлрд▓ рддреБрд▓рдирд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рд╣рдо рдкрд┐рдЫрд▓реА рд╕реВрдЪреА 800: 0 рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВрдЧреЗ рдФрд░ рдЗрд╕ рдкрд░ рдЬрд╛рдВрдЪ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред рдмрджрд▓реЗ рдореЗрдВ, 1: 0 рд╕реВрдЪреА рдХреЗ рдлрд┐рд▓реНрдЯрд░ рдЕрдиреНрдп рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рддреАрд╕рд░реЗ рд╕реЗ рд╡реЗ, рдЖрджрд┐ред рдФрд░ рдЗрд╕рд▓рд┐рдП рд╕рд╛рдд рдмрджрд▓рд╛рд╡ рддрдХ (рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдЖрдк рд╕реНрдереВрд▓ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди TC_U32_MAXDEPTH рдХреЛ рдХрд░реНрдиреЗрд▓ рд╕реНрд░реЛрдд рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ)ред



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

рд╣реИрд╢рд┐рдВрдЧ


рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрд╛ред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реЗ рд╣реИрд╢ рдЯреЗрдмрд▓ рдирд╛рдордХ рдПрдХ рдмрдбрд╝реА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрддреЗ рд╣реИрдВред рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХрд╛ рдПрдХ рдЖрдпрд╛рдореА рд╕рд░рдгреА (рдмрд╛рд▓реНрдЯреА рдХреА рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рд░рдгреА) рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реВрдЪреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред

рд╣реИрдВрдбрд▓ рдореЗрдВ, рдкрд╣рд▓рд╛ рдирдВрдмрд░ рд╣реИрд╢ рдЯреЗрдмрд▓ рдирдВрдмрд░ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рд╕реЗрд▓ рдирдВрдмрд░ рд╣реИред рд╣реИрд╢ рдЯреЗрдмрд▓ рдирдВрдмрд░ 0x000 рд╕реЗ 0xfff рддрдХ рдФрд░ рд╕реЗрд▓ рдирдВрдмрд░ 0x00 рд╕реЗ 0xff рддрдХ рд╣реЛрддрд╛ рд╣реИред рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 1 рд╕реЗ 256 рддрдХ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рджреЛ рдХреА рд╢рдХреНрддрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП (рдЖрдк рджреВрд╕рд░рд╛ рдорд╛рди рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ - рдЯреАрд╕реА рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджреЗрдЧрд╛)ред 0x800 рдирдВрдмрд░ рд╡рд╛рд▓реА рд╣реИрд╢ рдЯреЗрдмрд▓ рдХреЛ рд░реВрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рд╕реЗрд▓ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдмрдирддрд╛ рд╣реИред рдПрдХ рдкреИрдХреЗрдЬ рдЪреЗрдХ рд╣рдореЗрд╢рд╛ рд╕реЗрд▓ 800: 0 рдореЗрдВ рд╕реВрдЪреА рдХреЛ рджреЗрдЦрдХрд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

рдЖрдк рдЗрд╕ рддрд░рд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИрд╢ рдЯреЗрдмрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:

 tc filter add \ dev eth0 \ parent 1: pref 10 \ protocol ip \ handle 1: \ u32 divisor 1 


рдЬрд╣рд╛рдВ "рд╣реИрдВрдбрд▓ 1:" рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ "рднрд╛рдЬрдХ 1" - рдЗрд╕рдореЗрдВ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирдВрдмрд░ 1 рдХреЗ рд╕рд╛рде рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕реЗрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ 1: 0 рдХреА рд╕реВрдЪреА рд╕реНрдерд┐рдд рд╣реЛрдЧреА)ред

рд╣рдо рд╕реВрдЪреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрдВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд░реЛрдд рдкрддреЗ рдФрд░ ToS рдлрд╝реАрд▓реНрдб рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдЧреАрдХрд░рдг рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВрдЧреЗ:

 #   prio     ~$ tc q add \ dev eth0 \ root \ est 0.1s 10s \ handle 1: \ prio bands 8 # - 1:    ~$ tc f add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ handle 1: \ u32 \ divisor 1 #   -  ~$ tc f add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ handle ::1 \ u32 \ match ip src 192.168.1.0/24 \ link 1: #    ToS  - 1: ~$ tc f add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ handle ::1 \ u32 \ ht 1: \ match ip tos 0x08 0x1e \ classid 1:3 ~$ tc f add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ handle ::2 \ u32 \ ht 1: \ match ip tos 0x10 0x1e \ classid 1:1 # ,  ,      #,     ~$ tc f add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ handle ::2 \ u32 \ match ip src 192.168.1.0/24 \ classid 1:7 #   ~$ tc -sf ls dev eth0 filter parent 1: protocol ip pref 10 u32 filter parent 1: protocol ip pref 10 u32 fh 1: ht divisor 1 filter parent 1: protocol ip pref 10 u32 fh 1::1 order 1 key ht 1 bkt 0 flowid 1:3 (rule hit 0 success 0) match 00080000/001e0000 at 0 (success 0 ) filter parent 1: protocol ip pref 10 u32 fh 1::2 order 2 key ht 1 bkt 0 flowid 1:1 (rule hit 0 success 0) match 00100000/001e0000 at 0 (success 0 ) filter parent 1: protocol ip pref 10 u32 fh 800: ht divisor 1 filter parent 1: protocol ip pref 10 u32 fh 800::1 order 1 key ht 800 bkt 0 link 1: (rule hit 33900 success 0) match c0a80100/ffffff00 at 12 (success 0 ) filter parent 1: protocol ip pref 10 u32 fh 800::2 order 2 key ht 800 bkt 0 flowid 1:7 (rule hit 3583 success 0) match c0a80100/ffffff00 at 12 (success 0 ) #   ,      #ToS   192.168.1.0/24,      ~$ ping -fc10 -I 192.168.1.1 -Q 0x08 8.8.8.8 ~$ ping -fc15 -I 192.168.1.1 -Q 0x10 www.kernel.org ~$ ping -fc25 -I 192.168.1.1 -Q 0xaa www.habrahabr.ru #    ~$ tc -sf ls dev eth0 filter parent 1: protocol ip pref 10 u32 filter parent 1: protocol ip pref 10 u32 fh 1: ht divisor 1 filter parent 1: protocol ip pref 10 u32 fh 1::1 order 1 key ht 1 bkt 0 flowid 1:3 (rule hit 50 success 10) match 00080000/001e0000 at 0 (success 10 ) filter parent 1: protocol ip pref 10 u32 fh 1::2 order 2 key ht 1 bkt 0 flowid 1:1 (rule hit 40 success 15) match 00100000/001e0000 at 0 (success 15 ) filter parent 1: protocol ip pref 10 u32 fh 800: ht divisor 1 filter parent 1: protocol ip pref 10 u32 fh 800::1 order 1 key ht 800 bkt 0 link 1: (rule hit 578192 success 0) match c0a80100/ffffff00 at 12 (success 50 ) filter parent 1: protocol ip pref 10 u32 fh 800::2 order 2 key ht 800 bkt 0 flowid 1:7 (rule hit 547850 success 25) match c0a80100/ffffff00 at 12 (success 25 ) 


рд▓реЗрдХрд┐рди "рд▓рд┐рдВрдХ" рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдХреЗрд╡рд▓ рд╕реЗрд▓ рдирдВрдмрд░ 0. рдореЗрдВ рд╕реНрдерд┐рдд рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░, рдЕрдиреНрдп рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕реВрдЪрд┐рдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣реИрд╢ рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рд╣реИрд╢ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред U32 рдореЗрдВ рд╣реИрд╢рд┐рдВрдЧ рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдЙрд╕ рд╕реВрдЪреА рдореЗрдВ рд╕реЗрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рдкреИрдХреЗрдЯ рд╕реЗ рдорд┐рд▓реЗ рдбреЗрдЯрд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЪреЗрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдПрдХ рд╕реВрдЪреА рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬрд┐рдирдореЗрдВ рд╕реЗ рджреЗрдЦрдиреЗ рдХрд╛ рд╕рдордп рд░реИрдЦрд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕рдореЗрдВ рдлрд┐рд▓реНрдЯрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рд╣реИрд╢рд┐рдВрдЧ рдПрдХ рдирд┐рд░рдВрддрд░ рд╕рдордп (рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдмрд╣реБрдд рд╣реА рдХрдо) рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣реИрд╢рд┐рдВрдЧ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╕реВрдЪрд┐рдпреЛрдВ рдФрд░ рд╕рдВрдХреНрд░рдордгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдПрдХ рдЖрджреЗрд╢ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред



рд╣рдо рд╣реИрд╢рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

 # -   1:  32  ~$ tc f add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ handle 1: \ u32 \ divisor 32 #        ToS ~$ tc f add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ handle 1:08:1 \ u32 \ ht 1:08 \ match u32 0 0 \ classid 1:3 ~$ tc f add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ handle 1:10:1 \ u32 \ ht 1:10 \ match u32 0 0 \ classid 1:1 #     192.168.1.0/24  #   - 1:      ToS ~$ tc f add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ handle ::1 \ u32 \ match ip src 192.168.1.0/24 \ link 1: \ hashkey mask 0x001f0000 at 0 #   ,    #     ~$ tc f add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ handle ::2 \ u32 \ match ip src 192.168.1.0/24 \ classid 1:7 #     ToS ~$ ping -fc10 -I 192.168.1.1 -Q 0x08 8.8.8.8 ~$ ping -fc30 -I 192.168.1.1 -Q 0x10 www.kernel.org ~$ ping -fc50 -I 192.168.1.1 -Q 0xaa www.habrahabr.ru #     ~$ tc -sf ls dev eth0 filter parent 1: protocol ip pref 10 u32 filter parent 1: protocol ip pref 10 u32 fh 1: ht divisor 32 filter parent 1: protocol ip pref 10 u32 fh 1:8:1 order 1 key ht 1 bkt 8 flowid 1:3 (rule hit 10 success 10) match 00000000/00000000 at 0 (success 10 ) filter parent 1: protocol ip pref 10 u32 fh 1:10:1 order 1 key ht 1 bkt 10 flowid 1:1 (rule hit 30 success 30) match 00000000/00000000 at 0 (success 30 ) filter parent 1: protocol ip pref 10 u32 fh 800: ht divisor 1 filter parent 1: protocol ip pref 10 u32 fh 800::1 order 1 key ht 800 bkt 0 link 1: (rule hit 30135 success 0) match c0a80100/ffffff00 at 12 (success 90 ) hash mask 001f0000 at 0 filter parent 1: protocol ip pref 10 u32 fh 800::2 order 2 key ht 800 bkt 0 flowid 1:7 (rule hit 27250 success 50) match c0a80100/ffffff00 at 12 (success 50 ) 


рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣реИрд╢рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд░реНрдиреЗрд▓ рд╕рдВрд╕реНрдХрд░рдг 2.6 рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЕрднреА рддрдХ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИ (рдХрд░реНрдиреЗрд▓ рд╕рдВрд╕реНрдХрд░рдг 2.4 рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЕрд▓рдЧ рд╣реИ)ред



рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, tc рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдСрдлрд╝рд╕реЗрдЯ рдХреЗ рд▓реЗрдЦрди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рд╛рдзрди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ "hashkey ip tos" рдЬреИрд╕рд╛ рдХреБрдЫ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдПрдХ рдФрд░ рдХрдард┐рдирд╛рдИ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдХрд┐рд╕ рдмреЙрдХреНрд╕ рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдбрд╛рд▓рдирд╛ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рд╣реА рддрд░реАрдХрд╛ рд╣реИ - рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╣реИрд╢ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП (рдЯреАрд╕реА рдореЗрдВ "рдирдореВрдирд╛" рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд╡рд╛рдВрдЫрд┐рдд рд╕реЗрд▓ рдореЗрдВ рдлрд┐рд▓реНрдЯрд░ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣реИрд╢ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣реИрд╢рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЕрднреА рднреА рдХрд░реНрдиреЗрд▓ 2.4 рдФрд░ рдЕрдзрд┐рдХ рд╣рд╛рд▓ рдХреЗ рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ)ред

рд╡рд┐рд╕реНрдерд╛рдкрди


рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣реЗрдбрд░ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд▓рдВрдмрд╛рдИ рд╣реИред рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ - рд╣реЗрдбрд░ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реИрдХрд▓реНрдкрд┐рдХ рддрддреНрд╡ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЕрдЧрд▓реЗ рд╕реНрддрд░реЛрдВ рдХреЗ рд╣реЗрдбрд░ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕рдХреЗ рд▓рд┐рдП U32 рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ "рд╣реЗрдбрд░ рдСрдлрд╝рд╕реЗрдЯреНрд╕" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкреИрдХреЗрдЬ рд╕реЗ рд╣реА рдЕрдЧрд▓реЗ рд╣реЗрдбрд░ рдХреЗ рдСрдлрд╕реЗрдЯ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рдЖрдЗрдП U32 рдлрд╝рд┐рд▓реНрдЯрд░ рдХреА рджреЛ рдирдИ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдВ: рдирд┐рд░рдВрддрд░ рдСрдлрд╕реЗрдЯ (рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ "рдЕрдиреБрдорддрд┐" рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рдЕрд╕реНрдерд╛рдпреА рд╡рд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рдирд╛рдорд┐рдд рдХрд░реЗрдВрдЧреЗ (рд╣рдо рдЗрд╕реЗ "рдЯреЗрдореНрдкреЛрдлрд╝" рдХреЗ рд░реВрдк рдореЗрдВ рдирд╛рдорд┐рдд рдХрд░реЗрдВрдЧреЗ)ред рдкрд░рдорд┐рд╢рди рд╡реИрд▓реНрдпреВ рдХреЛ рд╣рдореЗрд╢рд╛ "рд▓рд┐рдВрдХ" рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдП рдЧрдП рдЕрдЧрд▓реЗ рдФрд░ рдЖрдЧреЗ рдХреЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рджреМрд░рд╛рди рд╕рднреА рдСрдлрд╕реЗрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдирдП рдкрд░рдорд┐рдЯ рдФрд░ рдЯреЗрдореНрдкреЛрдл рдорд╛рдиреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЯреЗрдВрдкрд░реЗрдЪрд░ рд╡реИрд▓реНрдпреВ рдХреЗрд╡рд▓ рд╕рдВрдХреЗрдд рджрд┐рдП рдЧрдП рдСрдлрд╕реЗрдЯ рдореЗрдВ рдЕрдЧрд▓реЗ рд╕рдВрдХреНрд░рдордг рдХреЗ рджреМрд░рд╛рди рд╣реА рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ "nexthdr +" рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдЧреЗ рдХреЗ рдмрджрд▓рд╛рд╡реЛрдВ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЬрдм рдЖрдк рдкрд┐рдЫрд▓реА рд╕реВрдЪреА рдкрд░ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ, рддреЛ рдорд╛рди рд╡рд╛рдкрд╕ рд▓реБрдврд╝рдХ рдЬрд╛рддреЗ рд╣реИрдВред

рдПрдХ рдЫреЛрдЯреЗ рдХрд╛рд▓реНрдкрдирд┐рдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╕реВрдЪреА 1: 0 рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рдЕрдиреБрдорддрд┐ рдХреЛ рд╢реВрдиреНрдп рд╣реЛрдиреЗ рджреЗрдВ, рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдлрд▓ рдореИрдЪ рд╣реИ; рдФрд░ рдирдпрд╛ рдкрд░рдорд┐рдЯ рдореВрд▓реНрдп 20 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╣рдо рд╕реВрдЪреА 2: 5 рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдорд╛рди 20 рдХреЛ 2: 5 рд╕реВрдЪреА рдХреЗ рдлрд╝рд┐рд▓реНрдЯрд░реНрд╕ рдореЗрдВ рд╕рднреА рд╕рдВрдХреЗрддрд┐рдд рдСрдлрд╝рд╕реЗрдЯреНрд╕ рдореЗрдВ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ 2: 5 рд╕реВрдЪреА рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 3:12 рд╕реВрдЪреА рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рд╕рдлрд▓ рдореИрдЪ рд╣реЛрдЧрд╛, рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рдСрдлрд╝рд╕реЗрдЯ 8 рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛, рддреЛ рдирдпрд╛ рдкрд░рдорд┐рдЯ рдХрд╛ рдореВрд▓реНрдп 28 рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рдЬрдм рд╕реВрдЪреА 3:12 рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдореВрд▓реНрдп 28 рдкрд╣рд▓реЗ рд╣реА рд╕рднреА рдСрдлрд╕реЗрдЯреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рд╕реВрдЪреА 3:12 рдореЗрдВ рдХреЛрдИ рд╕рдлрд▓ рддреБрд▓рдирд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ U32 рд╕реВрдЪреА 2: 5 рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдкрд░рдорд┐рдЯ рдлрд┐рд░ рд╕реЗ 20 рд╣реЛрдЧрд╛ред рдпрджрд┐ рдФрд░ рдХреЛрдИ рд╕рдлрд▓ рддреБрд▓рдирд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рдФрд░ рд╣рдо рд╕реВрдЪреА 1: 0 рдкрд░ рд▓реМрдЯ рдЖрдПрдВрдЧреЗ, рдлрд┐рд░ рдкрд░рдорд┐рдЯ рдлрд┐рд░ рд╕реЗ рдмрд░рд╛рдмрд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рд╢реВрдиреНрдп рд╢реВрдиреНрдпред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ рд╢реВрдиреНрдп рдЪрд┐рд╣реНрди рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╣рдо рдЖрдЧреЗ рдХреЗ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВред рдкрд░рдорд┐рдЯ рдФрд░ рдЯреЗрдореНрдкреЛрдл рдорд╛рди рд╢реБрд░реВ рдореЗрдВ рд╢реВрдиреНрдп рд╣реИрдВред

RFC рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдФрд░ IPv4 рд╣реЗрдбрд░ рдкреНрд░рд╛рд░реВрдк рджреЗрдЦреЗрдВред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХреНрд╖реЗрддреНрд░ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп рджреЛрд╣рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╢реАрд░реНрд╖рдХ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдФрд░ рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧрд▓реЗ рд╕реНрддрд░ рдХреЗ рд╣реЗрдбрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 tc filter add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ u32 \ match ip src 192.168.1.0/24 \ match protocol 0x01 0xff \ link 1: \ offset at 0 mask 0x0f00 shift 6 plus 0 eat 


рдЖрдЗрдП рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:


рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо ICMP рд╕рдВрджреЗрд╢ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ 1: 0 рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯрд╛рдЗрдк рдЗрдХреЛ-рдЕрдиреБрд░реЛрдз рдХреЗ ICMP рдкреИрдХреЗрдЯ рдХрдХреНрд╖рд╛ 1: 8 рдкрд░ рднреЗрдЬреЗ рдЬрд╛рдПрдВрдЧреЗред

 ~$tc f add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ handle 1::1 \ u32 \ ht 1: \ match u8 0x08 0xff \ classid 1:8 #    ~$ sudo tc -sf ls dev eth0 filter parent 1: protocol ip pref 10 u32 filter parent 1: protocol ip pref 10 u32 fh 1: ht divisor 1 filter parent 1: protocol ip pref 10 u32 fh 1::1 order 1 key ht 1 bkt 0 flowid 1:8 (rule hit 0 success 0) match 08000000/ff000000 at 0 (success 0 ) filter parent 1: protocol ip pref 10 u32 fh 800: ht divisor 1 filter parent 1: protocol ip pref 10 u32 fh 800::1 order 1 key ht 800 bkt 0 link 1: (rule hit 48553 success 0) match c0a80100/ffffff00 at 12 (success 0 ) match 00010000/00ff0000 at 8 (success 0 ) offset 0f00>>6 at 0 eat #  - ~$ ping -fc5 -I 192.168.1.1 www.ixbt.com #      ~$ tc -sf ls dev eth0 filter parent 1: protocol ip pref 10 u32 filter parent 1: protocol ip pref 10 u32 fh 1: ht divisor 1 filter parent 1: protocol ip pref 10 u32 fh 1::1 order 1 key ht 1 bkt 0 flowid 1:8 (rule hit 5 success 5) match 08000000/ff000000 at 0 (success 5 ) filter parent 1: protocol ip pref 10 u32 fh 800: ht divisor 1 filter parent 1: protocol ip pref 10 u32 fh 800::1 order 1 key ht 800 bkt 0 link 1: (rule hit 149972 success 0) match c0a80100/ffffff00 at 12 (success 5 ) match 00010000/00ff0000 at 8 (success 5 ) offset 0f00>>6 at 0 eat 


рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдореВрд▓ рдореЗрдВ рдЖрдкрдХреЛ рдХреБрдЫ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓реЗрдЧреА - рдПрдХ рдбреНрд░рд╛рдИ рдЧрд╛рдЗрдб рдФрд░ рддреБрд▓рдирд╛рдУрдВ рдХреА рд╕реВрдЪреА (рд╕рдорд╛рди рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рд╢реБрдЧрд░)ред

рдореВрд▓ - u32 рдлрд╝рд┐рд▓реНрдЯрд░ред - рд▓реЗрдЦрдХ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЬреНрдЮрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рд░рд╕реЗрд▓ рд╕реНрдЯреАрд╡рд░реНрдЯ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред

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


All Articles