рд╕рдВрдЪрд╛рд░ рдЪреИрдирд▓реЛрдВ рдХреА рдмреИрдВрдбрд╡рд┐рдбреНрде рд▓рдЧрд╛рддрд╛рд░ рдмрдврд╝ рд░рд╣реА рд╣реИ, рдЕрдЧрд░ рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ 10Gbit / s рдЪреИрдирд▓ рд╡рд╛рд▓рд╛ рд╕рд░реНрд╡рд░ рдХреЗрд╡рд▓ рдХреБрдЫ рдХрд╛ рд╣реА рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдерд╛, рддреЛ рдЕрдм рдмрд╛рдЬрд╛рд░ рдореЗрдВ рдРрд╕реЗ рдСрдлрд░ рдЖрдП рд╣реИрдВ рдЬреЛ рдЫреЛрдЯреА рдФрд░ рдордзреНрдпрдо рдЖрдХрд╛рд░ рдХреА рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдЙрд╕реА рд╕рдордп, рдЯреАрд╕реАрдкреА / рдЖрдИрдкреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЛ рдРрд╕реЗ рд╕рдордп рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрдм рдЖрдк рдХреЗрд╡рд▓ 10Gbit / s рдХреА рдЧрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдкрдирд╛ рджреЗрдЦ рд╕рдХрддреЗ рдереЗред рдирддреАрдЬрддрди, рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдзреБрдирд┐рдХ рд╕рд╛рдорд╛рдиреНрдп-рдЙрджреНрджреЗрд╢реНрдп рд╡рд╛рд▓реЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХреЛрдб рдореЗрдВ рдХрдИ рдУрд╡рд░рд╣реЗрдб рд╣реИрдВ рдЬреЛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдорд╣рддреНрд╡ рдмрд╣рддрд╛ рд╣реИред
рдпрд╣ рд▓реЗрдЦ Highload ++ 2012 рдореЗрдВ рдореЗрд░реА рд░рд┐рдкреЛрд░реНрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡реА рдУрдкрдирд╕реЛрд░реНрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рддреНрд╡рд░рд┐рдд рдкрд░рд┐рдЪрдп рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬреЛ HEAD / STABLE FreeBSD рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬрд┐рд╕реЗ NETMAP рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЖрдк 1-10Gbit / s рдХреА рдЧрддрд┐ рд╕реЗ рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред * рдирд┐рдХреНрд╕ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдоред
рдиреЗрдЯрдореИрдк рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬреНрдЮрд╛рдд рдкреНрд░рджрд░реНрд╢рди-рдмрдврд╝рд╛рдиреЗ рд╡рд╛рд▓реА рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдореЗрдореЛрд░реА, I / O рдмреИрдЪ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдмрдлрд╝рд░реНрд╕ рдХреА рдореИрдкрд┐рдВрдЧ, рдФрд░ рд░рд┐рдВрдЧ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдореЗрдВ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдмрдлрд╝рд░реНрд╕ рдХреЗ рдЕрдиреБрд░реВрдк рдореЗрдореЛрд░реА рдмрдлрд╝рд░реНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдЬреЛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 14 рдорд┐рд▓рд┐рдпрди рдкреИрдХреЗрдЯ рддрдХ рдЯреНрд░реИрдлрд╝рд┐рдХ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред (рдЬреЛ 10Gbit / s рдХреЗ рд▓рд┐рдП рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдЕрдзрд┐рдХрддрдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ)ред
рд▓реЗрдЦ рдореЗрдВ NETMAP рд▓реЗрдЦрдХ рдХреЗ рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдХреЗ рдкреНрд░рдореБрдЦ рдЕрдВрд╢ рд╣реИрдВ - рд▓реБрдЗрдЧреА рд░рд┐рдЬрд╝реЛ, рдиреЗрдЯрдореИрдк рдврд╛рдВрдЪреЗ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдФрд░ рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдУрдПрд╕ рдХрд░реНрдиреЗрд▓ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрдВрдЬрд╛рдо рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдмрд┐рд▓реНрд▓реА рдХреЗ рддрд╣рдд, 14Mpps рдХреА рдЧрддрд┐ рд╕реЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреИрдХреЗрдЯ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдмреБрдирд┐рдпрд╛рджреА рдкреНрд░рд╛рдЗрдореЗрдЯрд┐рдХреНрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, L3 рд╕реНрддрд░ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ DDOS рд╕рдВрд░рдХреНрд╖рдг рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдПрдХ рдШрдЯрдХ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдиреЗрдЯрдореИрдк рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрднрд╡ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрд▓рдЧ-рдЕрд▓рдЧ, 1 / 10Gbit / s рдЪреИрдирд▓реЛрдВ рдкрд░ рдиреЗрдЯрдореИрдк рдХреА рддреБрд▓рдирд╛рддреНрдордХ рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ, рдПрдХ / рдХрдИ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░, рдмрдбрд╝реЗ рдФрд░ рдЫреЛрдЯреЗ рдкреИрдХреЗрдЯ, OS FreeBSD / Linux рдвреЗрд░ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рдиреА рдЬрд╛рддреА рд╣реИред
1. рдкрд░рд┐рдЪрдп
рдЖрдзреБрдирд┐рдХ рд╕рд╛рдорд╛рдиреНрдп-рдЙрджреНрджреЗрд╢реНрдп рд╡рд╛рд▓реЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдиреЗрдЯрд╡рд░реНрдХ рдирд┐рдЧрд░рд╛рдиреА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ, рдЯреНрд░реИрдлрд┐рдХ рдЬрдирд░реЗрд╢рди, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕реНрд╡рд┐рдЪ, рд░рд╛рдЙрдЯрд░, рдлрд╛рдпрд░рд╡реЙрд▓ рдФрд░ рдЕрдЯреИрдХ рд░рд┐рдХрдЧреНрдирд┐рд╢рди рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдирд┐рдореНрди рд╕реНрддрд░ рдкрд░ рдкреИрдХреЗрдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдореГрджреНрдз рдФрд░ рд▓рдЪреАрд▓реА рдХреНрд╖рдорддрд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рдЬреИрд╕реЗ: рдХрдЪреНрдЪреЗ рд╕реЙрдХреЗрдЯ, рдмрд░реНрдХрд▓реЗ рдкреИрдХреЗрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ (BPF), AF_PACKET рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдЗрд╕реА рддрд░рд╣, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрди рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЙрдЪреНрдЪ рдкреИрдХреЗрдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЧрддрд┐, рдЙрдкрд░реЛрдХреНрдд рддрдВрддреНрд░ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рдирд╣реАрдВ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдУрд╡рд░рд╣реЗрдб (рдмрд╛рдж рдореЗрдВ рдУрд╡рд░рд╣реЗрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд) рд╣реИред
рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдорд╛рдзреНрдпрдо, рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдХрд╛рдлреА рд╡реГрджреНрдзрд┐ рд╣реБрдИ рдереНрд░реВрдкреБрдЯ, рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдкреИрдХреЗрдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдРрд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╡рд╛рдпрд░ рдЧрддрд┐ рдкрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдЕрд░реНрдерд╛рддред рдкреНрд░рддрд┐ рдкреИрдХреЗрдЯ рд▓рд╛рдЦреЛрдВред рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рд╕рд┐рд╕реНрдЯрдо рд╕реАрдзреЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдЯреАрд╕реАрдкреА / рдЖрдИрдкреА рд╕реНрдЯреИрдХ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реБрдП рд╕реАрдзреЗ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рд╕рдВрд░рдЪрдирд╛рдУрдВ (рдЗрд╕рдХреЗ рдмрд╛рдж рдПрдирдЖрдИрд╕реА) рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдЗрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреА рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛ рд▓реЛрд╣реЗ рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдбреЛрдВ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рд╣реИ рдЬреЛ рдПрдирдЖрдИрд╕реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд╕реАрдзреЗ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
NETMAP рдлреНрд░реЗрдорд╡рд░реНрдХ рдПрдирдЖрдИрд╕реА рдкреНрд░рддреНрдпрдХреНрд╖ рдЕрднрд┐рдЧрдо рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ рдПрдХ рдирд╛рдЯрдХреАрдп рд╡реГрджреНрдзрд┐ рдХреЗ рдЕрд▓рд╛рд╡рд╛, NETMAP рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдкреИрдХреЗрдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реНрд╡рддрдВрддреНрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╕рд┐рд░реНрдл рдПрдХ рдореАрдЯреНрд░рд┐рдХ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдкреИрдХреЗрдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЧрддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░ рд╕рдХреЗрдВ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдПрдХ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдорд╛рдзреНрдпрдо (рдХреЗрдмрд▓) рд╕реЗ рдкреИрдХреЗрдЯ рднреЗрдЬрдХрд░ 70 рд╕реАрдкреАрдпреВ рд╕реЗ рдХрдо рдХрд╛ рдЪрдХреНрд░ рд▓рдЧрддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, 900 MHz рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдХреЗрд╡рд▓ рдПрдХ рдХреЛрд░ рдкрд░ NETMAP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб (Mpps) 14.88 рдорд┐рд▓рд┐рдпрди рдкреИрдХреЗрдЯ рдХрд╛ рддреЗрдЬреА рд╕реЗ рдЕрдЧреНрд░реЗрд╖рдг рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЬреЛ рдХрд┐ 10Gbit / s рдЪреИрдирд▓ рдореЗрдВ рдИрдерд░рдиреЗрдЯ рдлреНрд░реЗрдо рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЪрд░рдг рджрд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред
NETMAP рдХреА рдПрдХ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдирдЖрдИрд╕реА рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг-рд╕реНрд╡рддрдВрддреНрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпреЗ рд╕рдВрд░рдЪрдирд╛рдПрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХрд░реНрдиреЗрд▓ рдореЗрдореЛрд░реА рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрд╖реЗрддреНрд░, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд▓рд┐рдП рджреБрд░реНрдЧрдо рд╣реИрдВ, рдЬреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдерд╛рди рд╕реЗ, рдПрдХ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЕрдорд╛рдиреНрдп рдкреЙрдЗрдВрдЯрд░ рдбрд╛рд▓рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдФрд░ рдУрдПрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, NETMAP рдПрдХ рдмрд╣реБрдд рд╣реА рдХреБрд╢рд▓ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╢реВрдиреНрдп-рдХреЙрдкреА рдкреИрдХреЗрдЯ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдкреИрдХреЗрдЯ рдХреЛ рд╕реНрдореГрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдирд╛, рдЬреЛ рдЬрдмрд░рджрд╕реНрдд рдкреНрд░рджрд░реНрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд▓реЗрдЦ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдФрд░ рдХреНрд╖рдорддрд╛рдУрдВ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ рдЬреЛ NETMAP рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рди рд╕рдВрдХреЗрддрдХ рдЬреЛ рд╕рд╛рдзрд╛рд░рдг рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
2. рдЖрдзреБрдирд┐рдХ рдУрдПрд╕ рдХреЗ рдЯреАрд╕реАрдкреА / рдЖрдИрдкреА рд╕реНрдЯреИрдХ
рд▓реЗрдЦ рдХрд╛ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рдЙрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдЬреЛ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕реНрд╡рд┐рдЪ, рд░рд╛рдЙрдЯрд░, рдлрд╛рдпрд░рд╡реЙрд▓, рдЯреНрд░реИрдлрд╝рд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ, рд╣рдорд▓рд╛ рдкрд╣рдЪрд╛рди рдкреНрд░рдгрд╛рд▓реА рдпрд╛ рдЯреНрд░реИрдлрд╝рд┐рдХ рдЬрдирд░реЗрдЯрд░ рдЬреИрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдпреЛрдЬрди рдХреЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЙрдЪреНрдЪ рдЧрддрд┐ рдкрд░ рдХрдЪреНрдЪреЗ рдкреИрдХреЗрдЯ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рднрд╛рд╡реА рддрдВрддреНрд░ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдЦ рдХреЗ рдЗрд╕ рдЦрдВрдб рдореЗрдВ, рд╣рдо рдУрдПрд╕ рдореЗрдВ рдЯреАрд╕реАрдкреА / рдЖрдИрдкреА рд╕реНрдЯреИрдХ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ, рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдУрд╡рд░рд╣реЗрдбреНрд╕ рдХрд╣рд╛рдВ рд╕реЗ рдЖрддреЗ рд╣реИрдВ, рдФрд░ рдУрдПрд╕ рд╕реНрдЯреИрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕рдХреЗ рдкрд╛рд╕ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЪрд░рдгреЛрдВ рдореЗрдВ рдПрдХ рдкреИрдХреЗрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рд▓рд╛рдЧрдд рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВред
2.1ред рдПрдирдЖрдИрд╕реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдФрд░ рд╕рдВрдЪрд╛рд▓рди
рдиреЗрдЯрд╡рд░реНрдХ рдПрдбреЗрдкреНрдЯрд░ (рдПрдирдЖрдИрд╕реА) рдЗрдирдХрдорд┐рдВрдЧ рдФрд░ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдкреИрдХреЗрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдмрдлрд░ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреА рд░рд┐рдВрдЧ рдХрддрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЪрд┐рддреНрд░ 1 рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

тАЬрдЪрд╛рд╡рд▓ рдирдВрдмрд░ 1ред рдПрдирдЖрдИрд╕реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдФрд░ рдУрдПрд╕ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЙрдирдХреЗ рд╕рдВрдмрдВрдз ┬╗
рд░рд┐рдВрдЧ рдХрддрд╛рд░ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд▓реЙрдЯ рдореЗрдВ рдмрдлрд░ рдХреА рд▓рдВрдмрд╛рдИ рдФрд░ рднреМрддрд┐рдХ рдкрддрд╛ рд╣реЛрддрд╛ рд╣реИред рд╕реАрдкреАрдпреВ рдПрдирдЖрдИрд╕реА рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз (рдкрддрд╛ рдпреЛрдЧреНрдп) рдкреИрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрддрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИред
рдЬрдм рдПрдХ рдкреИрдХреЗрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдкрд░ рдЖрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рдореЗрдореЛрд░реА рдмрдлрд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ рдФрд░ рд╕реНрдерд┐рддрд┐ рд╕реНрд▓реЙрдЯ рдореЗрдВ рджрд░реНрдЬ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЖрдиреЗ рд╡рд╛рд▓реЗ рдирдП рдбреЗрдЯрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдПрдирдЖрдИрд╕реА рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдирдП рдбреЗрдЯрд╛ рдЖрдиреЗ рдкрд░ рд╕реАрдкреАрдпреВ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рдзрд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред
рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм рдПрдХ рдкреИрдХреЗрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдирдЖрдИрд╕реА рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдУрдПрд╕ рд╡рд░реНрддрдорд╛рди рдмрдлрд░ рдХреЛ рднрд░рддрд╛ рд╣реИ, рд╕реНрд▓реЙрдЯ рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдбреЗрдЯрд╛ рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ, рдЗрд╕реА рдПрдирдЖрдИрд╕реА рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЗ рд▓рд┐рдП рд╕реНрд▓реЙрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдкреИрдХреЗрдЯ рднреЗрдЬрдиреЗ рдХреА рдкрд╣рд▓ рдХрд░рддрд╛ рд╣реИред
рдкреИрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЙрдЪреНрдЪ рдЧрддрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реНрдпрд╡рдзрд╛рди рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдп рдХреЛ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ ("рд▓рд╛рдЗрд╡-рд▓реЙрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ")ред рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдУрдПрд╕ рдорддрджрд╛рди рдпрд╛ рдмрд╛рдзрд┐рдд рдереНрд░реЙрдЯрд▓рд┐рдВрдЧ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдХреБрдЫ рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рд╡рд╛рд▓реЗ рдПрдирдЖрдИрд╕реА рдкреИрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ / рдкреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдХрддрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рд▓реЛрдб рдХреЛ рдХрдИ рдХреЛрд░ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдпрд╛ рдРрд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЪреБрдЕрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХрдИ рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
2.2ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдХрд░реНрдиреЗрд▓ рдФрд░ рдПрдкреАрдЖрдИ
рдУрдПрд╕ рдПрдирдЖрдИрд╕реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдореЗрдореЛрд░реА рдмрдлрд╝рд░реНрд╕ рд╕реЗ рдПрдХ рдХрддрд╛рд░ рдореЗрдВ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢реЗрд╖ рдУрдПрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИред FreeBSD рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреЗ mbufs рд╣реИрдВ, рдЗрд╕рдХреЗ рд╕рдордХрдХреНрд╖ sk_buffs рдФрд░ NdisPackets рд╣реИрдВред рдЙрдирдХреЗ рдореВрд▓ рдореЗрдВ, рдпреЗ рдореЗрдореЛрд░реА рдмрдлрд╝рд░ рдХрдВрдЯреЗрдирд░ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреА рдПрдХ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рд╣реЛрддреА рд╣реИ: рдЖрдХрд╛рд░, рдЬрд┐рд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ / рдЬрд┐рд╕рдореЗрдВ рдкреИрдХреЗрдЯ рдкрд╣реБрдВрдЪреЗ, рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдЭрдВрдбреЗ рдЬреЛ рдПрдирдЖрдИрд╕реА рдФрд░ / рдУрдПрд╕ рдореЗрдВ рдореЗрдореЛрд░реА рдмрдлрд░ рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреНрд░рдо рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдПрдирдЖрдИрд╕реА рдЪрд╛рд▓рдХ рдФрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЯреАрд╕реАрдкреА / рдЖрдИрдкреА рд╕реНрдЯреИрдХ (рдмрд╛рдж рдореЗрдВ рдореЗрдЬрдмрд╛рди рд╕реНрдЯреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд), рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдкреИрдХреЗрдЯ рдХреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдкреИрдХреЗрдЯ рд╡рд┐рдЦрдВрдбрди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░ рдФрд░ рд╣реЛрд╕реНрдЯ рд╕реНрдЯреИрдХ рджреЛрдиреЛрдВ рдХреЛ рддреИрдпрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреВрдЬрд╝рд░реНрд╕рд╕реНрдкреЗрд╕ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рдВрдмрдВрдзрд┐рдд рдПрдкреАрдЖрдИ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рд╕рдмрд╕рд┐рд╕реНрдЯрдо рд╡рд┐рд▓рдВрдмрд┐рдд рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рдореЗрдореЛрд░реА рдмрдлрд╝рд░реНрд╕ рдФрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рдХреЗрд╡рд▓ рдХреЙрд▓ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рд╕рдВрджрд░реНрдн рдЧрд┐рдирддреА рджреНрд╡рд╛рд░рд╛ рдХреЙрдкреА рдпрд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕рдм рд▓рдЪреАрд▓рд╛рдкрди рдФрд░ рдкреНрд░рдпреЛрдЬреНрдп рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ рдУрд╡рд░рд╣реЗрдбреНрд╕ рджреНрд╡рд╛рд░рд╛ рднреБрдЧрддрд╛рди рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рдПрдкреАрдЖрдИ рдХрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд╛рдлреА рд╕рдордп рдкрд╣рд▓реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЖрдЬ рдЖрдзреБрдирд┐рдХ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рдВрдЧрд╛ рд╣реИред рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди, рдкреНрд░рдмрдВрдзрди рдФрд░ рдмрдлрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ рдЧреБрдЬрд░рдиреЗ рдХреА рд▓рд╛рдЧрдд рдЕрдХреНрд╕рд░ рдкреИрдХреЗрдЯ рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдЙрдкрдпреЛрдЧреА рдбреЗрдЯрд╛ рдкрд░ рд░реИрдЦрд┐рдХ рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рдкрд░реЗ рдЬрд╛рддреА рд╣реИред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдХрдЪреНрдЪреЗ рдкреИрдХреЗрдЬ рдХреЗ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдбреЗрдЯрд╛ рдФрд░ рдореЗрдЯрд╛рдбрд╛рдЯрд╛ рдХреЗ рдмреАрдЪ рдУрдПрд╕ рдХрд░реНрдиреЗрд▓ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рд╕реНрдкреЗрд╕ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ (рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдкреИрдХреЗрдЬ рдХрд╛ рдПрдХ рдХреНрд░рдо) рдХреЗ рд▓рд┐рдПред
рдУрдПрд╕ рдлреНрд░реАрдмреАрдПрд╕рдбреА рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдУрд╡рд░рд╣реЗрдбреНрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрдм рд╕реЗрдВрдбрд▓реЛ () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпреВрдЬрд╝рд░рд▓реЗрд╡рд▓ рд╕реЗ рдПрдХ рдпреВрдбреАрдкреА рдкреИрдХреЗрдЯ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рд╕реНрдерд╛рди рдореЗрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдХ рд▓реВрдк рдореЗрдВ рдПрдХ рдпреВрдбреАрдкреА рдкреИрдХреЗрдЯ рднреЗрдЬрддрд╛ рд╣реИред рддрд╛рд▓рд┐рдХрд╛ 2 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╕реНрдерд╛рди рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдХрд░реНрдиреЗрд▓ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдПрдХ рдкреИрдХреЗрдЬ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрд╛рдП рдЧрдП рдФрд╕рдд рд╕рдордп рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкреИрдХреЗрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреИрдиреЛрд╕реЗрдХрдВрдб рдореЗрдВ рдФрд╕рдд рд╕рдордп рд╣реЛрддрд╛ рд╣реИ; рдлрд╝рдВрдХреНрд╢рди рд╡рд╛рдкрд╕ рдЖрдиреЗ рдкрд░ рдорд╛рди рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреЗрд▓реНрдЯрд╛ рдлрд╝реАрд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдирд┐рд╖реНрдкрд╛рджрди рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЕрдЧрд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдкрд╣рд▓реЗ рдмреАрддрд╛ рд╣реБрдЖ рд╕рдордп рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 8 рдиреИрдиреЛрд╕реЗрдХрдВрдб рдпреВрдЬрд░рд╕реНрдкреЗрд╕ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рд▓реЗрддрд╛ рд╣реИ, 96 рдиреИрдиреЛрд╕реЗрдХрдВрдб рдУрдПрд╕ рдХрд░реНрдиреЗрд▓ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИред
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдереВрд▓ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ OS FreeBSD рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ:

рдкрд░реАрдХреНрд╖рдг OS FreeBSD HEAD 64bit, i7-870 2.93GHz (TurboBoost), Intel 10Gbit NIC, ixgbe рдбреНрд░рд╛рдЗрд╡рд░ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХрдИ рджрд░реНрдЬрди рд╕реЗ рдЕрдзрд┐рдХ 5-рд╕реЗрдХрдВрдб рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдорд╛рди рдФрд╕рдд рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рддрд╛рд▓рд┐рдХрд╛ 1 рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХрдИ рдХрд╛рд░реНрдп рд╣реИрдВ рдЬреЛ рдУрдПрд╕ рд╕реНрдЯреИрдХ рдкрд░ рдкреИрдХреЗрдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рднреА рд╕реНрддрд░реЛрдВ рдкрд░ рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЦрдкрдд рдХрд░рддреЗ рд╣реИрдВред рдиреЗрдЯрд╡рд░реНрдХ рдЗрдирдкреБрдЯ / рдкрд╛рдиреА рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рдПрдкреАрдЖрдИ, рдЪрд╛рд╣реЗ рд╡рд╣ рдЯреАрд╕реАрдкреА рд╣реЛ, RAW_SOCKET, BPF, рдХреЛ рдХрдИ рдорд╣рдВрдЧреЗ рд╕реНрддрд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдкреИрдХреЗрдЯ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдорд╛рдирдХ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, mbufs рдореЗрдВ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдФрд░ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рддрдВрддреНрд░реЛрдВ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рд╕рд╣реА рдорд╛рд░реНрдЧреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ, рдЯреАрд╕реАрдкреА / рдпреВрдбреАрдкреА / рдЖрдИрдкреА / рдореИрдХ рд╣реЗрдбрд░ рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ рдФрд░ рдЗрд╕ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЪреЗрди рдХреЗ рдЕрдВрдд рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЗ рд▓рд┐рдП mbuf рд╕рдВрд░рдЪрдирд╛рдУрдВ рдФрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рдПрдирдЖрдИрд╕реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдмрджрд▓реЗрдВред рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЯред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реНрдерд╛рдиреАрдп рдЕрдиреБрдХреВрд▓рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЦрд░реЛрдВрдЪ рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрдЬрд╛рдп рдХреИрд╢рд┐рдВрдЧ рдорд╛рд░реНрдЧреЛрдВ рдФрд░ рд╣реЗрдбрд░, 10 Gbit / s рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреИрдХреЗрдЯ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЧрддрд┐ рдореЗрдВ рдПрдХ рдХрдЯреНрдЯрд░рдкрдВрдереА рд╡реГрджреНрдзрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
2.3ред рдЙрдЪреНрдЪ рдЧрддрд┐ рдкрд░ рд╕рдВрдХреБрд▓ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреА рдЖрдзреБрдирд┐рдХ рддрдХрдиреАрдХ
рдЪреВрдВрдХрд┐ рдкреИрдХреЗрдЯреЛрдВ рдХреЗ рдЙрдЪреНрдЪ рдЧрддрд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╕рдорд╕реНрдпрд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд▓рдВрдмреА рд░рд╣реА рд╣реИ, рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рддрдХрдиреАрдХреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╣реА рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЧрддрд┐ рдХреЛ рдЧреБрдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реЙрдХреЗрдЯ рдПрдкреАрдЖрдИ
рдХрдЪреНрдЪреЗ рдкреИрдХреЗрдЬ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд░реНрдХрд▓реЗ рдкреИрдХреЗрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ (рдЗрд╕рдХреЗ рдмрд╛рдж BPF) рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рддрдВрддреНрд░ рд╣реИред BPF рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡рд░ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╛рдкреНрдд рдпрд╛ рднреЗрдЬреЗ рдЧрдП рдкреИрдХреЗрдЯ рдХреА рдПрдХ рдкреНрд░рддрд┐ рдПрдХ рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рднреЗрдЬрддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреНрд░рд╛рдкреНрдд / рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИред рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рддрдВрддреНрд░ рд╣реИ рдЬрд┐рд╕реЗ AF_PACKET рд╕реЙрдХреЗрдЯ рдкрд░рд┐рд╡рд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдмреАрдкреАрдПрдл рдЯреАрд╕реАрдкреА / рдЖрдИрдкреА рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдХреЛ "рдкрд╛рд░рджрд░реНрд╢реА" рдореЛрдб (рдкреНрд░реЛрдорд┐рд╕рд╕) рдореЗрдВ рдбрд╛рд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдмрд╛рд╣рд░реА рдпрд╛рддрд╛рдпрд╛рдд рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдкреНрд░рд╡рд╛рд╣ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд╣рд╛рдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреИрдХреЗрдЯ рдлрд┐рд▓реНрдЯрд░ рд╣реБрдХ
рдиреЗрдЯрдЧреНрд░рд╛рдл (рдлреНрд░реАрдмреАрдПрд╕рдбреА), рдиреЗрдЯрдлрд┐рд▓реНрдЯрд░ (рд▓рд┐рдирдХреНрд╕), рдПрдирдбреАрд╕ рдорд┐рдирд┐рдкреЛрд░реНрдЯ рдбреНрд░рд╛рдЗрд╡рд░ (рдПрдордПрд╕ рд╡рд┐рдВрдбреЛрдЬ) рдРрд╕реЗ рдХрд░реНрдиреЗрд▓-рдирд┐рд░реНрдорд┐рдд рддрдВрддреНрд░ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдкреИрдХреЗрдЬреЛрдВ рдХреА рдирдХрд▓ рдХрд░рддреЗ рд╕рдордп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ, рдЬреИрд╕реЗ рдХрд┐ рдлрд╝рд╛рдпрд░рд╡реЙрд▓, рдХреЛ рдкреИрдХреЗрдЯ рдкреНрд░рд╡рд╛рд╣ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреЗ рддрдВрддреНрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡рд░ рд╕реЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рднреЗрдЬрддреЗ рд╣реИрдВред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕ рдЦрдВрдб рдореЗрдВ рдЗрдВрдЧрд┐рдд рд╕рднреА рддрдВрддреНрд░ mbuf / sk_buff рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдХреБрд▓ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВред
рдкреНрд░рддреНрдпрдХреНрд╖ рдмрдлрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ
рдХрд░реНрдиреЗрд▓ рд╕реНрдерд╛рди рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдерд╛рди рдкрд░ рдПрдХ рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХреЛ рдПрдирдЖрдИрд╕реА рд╕рдВрд░рдЪрдирд╛рдУрдВ рддрдХ рд╕реАрдзреЗ рдкрд╣реБрдВрдЪ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ OS рдХрд░реНрдиреЗрд▓ рдкрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреНрд▓рд┐рдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд░рд╛рдЙрдЯрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдпрд╛ рдХрд░реНрдиреЗрд▓ рдореЛрдб pkt-gen рдЯреНрд░реИрдлрд┐рдХ рдЬрдирд░реЗрдЯрд░ рд╣реИрдВред рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд╕рд╛рде, рдХрд░реНрдиреЗрд▓ рд╕реНрдерд╛рди рдПрдХ рдмрд╣реБрдд рд╣реА рдирд╛рдЬреБрдХ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдХреНрд░реИрд╢ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рд╣реА рддрдВрддреНрд░ рдкреИрдХреЗрдЯ рдмрдлрд╝рд░реНрд╕ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдпрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ PF_RING рдФрд░ рд▓рд┐рдирдХреНрд╕ PACKET_MMAP, рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдкреИрдХреЗрдЯ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡-рдЖрд╡рдВрдЯрд┐рдд рдХреНрд╖реЗрддреНрд░реЛрдВ рд╕реЗ рдпреБрдХреНрдд рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдХреЗ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдЙрд╕реА рд╕рдордп, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдХрд░реНрдиреЗрд▓ рд╕рд╛рдЭрд╛ рд╕реНрдореГрддрд┐ рдореЗрдВ sk_buffers рдФрд░ рдкреИрдХреЗрдЯ рдмрдлрд╝рд░реНрд╕ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рдмреИрдЪ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА, рдУрд╡рд░рд╣реЗрдбреНрд╕ sk_buff рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЬреБрдбрд╝реЗ рд░рд╣рддреЗ рд╣реИрдВред
рдпреВрдЬрд░реНрд╕ рдХреЗ рд╕реАрдзреЗ рдПрдирдЖрдИрд╕реА рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдХрд░ рднреА рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╡рд┐рд╢реЗрд╖ рдПрдирдЖрдИрд╕реА рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдЬреЛрдЦрд┐рдореЛрдВ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдПрдирдЖрдИрд╕реА рдбреАрдПрдордП рдЗрдВрдЬрди рдХрд┐рд╕реА рднреА рдореЗрдореЛрд░реА рдкрддреЗ рдкрд░ рдбреЗрдЯрд╛ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ рдФрд░ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдЧрд▓рддреА рд╕реЗ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдХрд╣реАрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛ рдХреЛ рдорд┐рдЯрд╛рдХрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЛ "рдорд╛рд░" рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдХрд╣рдирд╛ рдЙрдЪрд┐рдд рд╣реИ рдХрд┐ рдЖрдзреБрдирд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдбреЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдПрдХ IOMMU рдЗрдХрд╛рдИ рд╣реИ, рдЬреЛ рдореЗрдореЛрд░реА рдХреЛ NIC DMA рдЗрдВрдЬрди рдХреЗ рд▓реЗрдЦрди рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддреА рд╣реИред рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдореЗрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг PF_RING_DNA рдФрд░ рдХреБрдЫ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реИрдВред
3. NETMAP рд╡рд╛рд╕реНрддреБрдХрд▓рд╛
3.1ред рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдЙрдЪреНрдЪ рдЧрддрд┐ рдкрд░ рдкреИрдХреЗрдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рддрдВрддреНрд░реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдореЗрдВ рдорд╣рдВрдЧреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЬреИрд╕реЗ: рдбреЗрдЯрд╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛, рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдФрд░ рдЕрдиреНрдп рдУрд╡рд░рд╣реЗрдбреНрд╕ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдЬреЛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдПрдХ рдкреИрдХреЗрдЯ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЯреАрд╕реАрдкреА / рдЖрдИрдкреА рд╕реНрдЯреИрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рд╕реНрдкреЗрд╕ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИред
рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЧрдИ рд░реВрдкрд░реЗрдЦрд╛, рдЬрд┐рд╕реЗ рдиреЗрдЯрдореИрдк рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдРрд╕реА рдкреНрд░рдгрд╛рд▓реА рд╣реИ рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдкреИрдХреЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╣реА рддреНрд╡рд░рд┐рдд рдкрд╣реБрдБрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ, рджреЛрдиреЛрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдФрд░ рдЯреАрд╕реАрдкреА / рдЖрдИрдкреА рдУрдПрд╕ рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп (рдореЗрдЬрдмрд╛рди) рдвреЗрд░)ред рдЗрд╕реА рд╕рдордп, рджрдХреНрд╖рддрд╛ рдХреЛ рдЙрди рдЬреЛрдЦрд┐рдореЛрдВ рдХреЗ рд▓рд┐рдП рдмрд▓рд┐рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рд░рдЬрд┐рд╕реНрдЯрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдерд╛рди рдореЗрдВ рдЦреБрд▓рддреЗ рд╣реИрдВред рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо, рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдореЗрдореЛрд░реА рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, NETMAP рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореМрдЬреВрджрд╛ рдУрдПрд╕ рддрдВрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рдХрдбрд╝реА рдПрдХреАрдХрд░рдг рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдбреЛрдВ рдХреА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рд╣реИред рд╡рд╛рдВрдЫрд┐рдд рдЙрдЪреНрдЪ рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП NETMAP рдХрдИ рдкреНрд░рд╕рд┐рджреНрдз рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
тАв рдХреЙрдореНрдкреИрдХреНрдЯ рдФрд░ рд╣рд▓реНрдХреЗ рдкреИрдХреЗрдЬ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ред рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓, рд╡реЗ рдбрд┐рд╡рд╛рдЗрд╕-рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрдВрддреНрд░ рдХреЛ рдЫрд┐рдкрд╛рддреЗ рд╣реИрдВ, рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, NETMAP рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рд╕рд┐рдВрдЧрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдореЗрдВ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреИрдХреЗрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкреИрдХреЗрдЯ рднреЗрдЬрдиреЗ рдХрд╛ рдмреЛрдЭ рдХрдо рд╣реЛред
тАв рд░реИрдЦрд┐рдХ рдиреЗ рдмрдлрд╝рд░реНрд╕ рдХрд╛ рдкреНрд░рдЪрд╛рд░ рдХрд┐рдпрд╛, рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ред рдЖрдкрдХреЛ рд╕реНрдореГрддрд┐ рдкреНрд░рдмрдВрдзрди рдУрд╡рд░рд╣реЗрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
тАв рдЬрд╝реАрд░реЛ рдХреЙрдкреА рдСрдкрд░реЗрд╢рди рдЬрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдмреАрдЪ рдкреИрдХреЗрдЯ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рд╣реЛрд╕реНрдЯ рд╕реНрдЯреИрдХ рдХреЗ рдмреАрдЪред
тАв рдХрдИ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрддрд╛рд░реЛрдВ рдЬреИрд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдХреА рдЙрдкрдпреЛрдЧреА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдердиред
NETMAP рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рд╡рд╣реА рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдПрдирдЖрдИрд╕реА рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рд░реИрдо рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рднреЗрдЬрддрд╛ рд╣реИ, рдУрдПрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдореЛрд░реА рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рдФрд░ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдЕрдВрдЬреАрд░ред рдирдВрдмрд░ 2ред NETMAP рдореЛрдб рдореЗрдВ, NIC рдХрддрд╛рд░реЗрдВ TCP / IP OS рд╕реНрдЯреИрдХ рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рд╣реЛрд╕реНрдЯ рд╕реНрдЯреИрдХ рдХреЗ рдмреАрдЪ рд╡рд┐рдирд┐рдордп рдХреЗрд╡рд▓ NETMAP рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдЙрдЪреНрдЪрддрдо рд╕реНрддрд░ рдкрд░, рдЬрдм рдХреЛрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдиреЗрдЯрдореИрдк рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЗрдЯрдореИрдк рдореЛрдб рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдбрд╛рд▓рддрд╛ рд╣реИ, рддреЛ рдПрдирдЖрдИрд╕реА рдХрддрд╛рд░реЗрдВ рд╣реЛрд╕реНрдЯ рд╕реНрдЯреИрдХ рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рдУрдПрд╕ рд╕реНрдЯреИрдХ рдХреЗ рдмреАрдЪ рдкреИрдХреЗрдЯ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП "рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧ" рдирд╛рдордХ рд░рд┐рдВрдЧ рдмрдлрд╝рд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдиреЗрдЯрдореИрдк рдХреЗ рдЫрд▓реНрд▓реЗ, рдмрджрд▓реЗ рдореЗрдВ, рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдПрдирдЖрдИрд╕реА рдФрд░ рдУрдПрд╕ рд╕реНрдЯреИрдХ рдореЗрдВ рдХрддрд╛рд░реЛрдВ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд╛рдорд╛рдиреНрдп рдУрдПрд╕ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдЪрдпрди () / рдкреЛрд▓ ()ред рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рд╕реЗ рдЯреАрд╕реАрдкреА / рдЖрдИрдкреА рд╕реНрдЯреИрдХ рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХрд╛рдо рдХрд░рдирд╛ рдФрд░ рдЕрдкрдиреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред
3.2ред рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ
рдЕрдВрдЬреАрд░ рдореЗрдВ рдкреНрд░рдореБрдЦ NETMAP рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдирдВрдмрд░ 3ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЧрдИрдВ:
рдкреИрдХреЗрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп рдХрдо рдУрд╡рд░рд╣реЗрдбреНрд╕
тАв рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдмреАрдЪ рдФрд░ рд╕рд╛рде рд╣реА рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рд╕реНрдЯреИрдХ рдХреЗ рдмреАрдЪ рдкреИрдХреЗрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╕рдордп рджрдХреНрд╖рддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐
тАв рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдореЗрдВ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдПрдХрд╛рдзрд┐рдХ рдХрддрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди

рдЕрдВрдЬреАрд░ред рдирдВрдмрд░ 3ред NETMAP рдиреЗ рдпреВрдЬрд░рд╕реНрдкреЗрд╕ рдореЗрдВ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛
NETMAP рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рд╕реНрдкреЗрд╕ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рддреАрди рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдПрдБ рд╣реИрдВ:
тАв рдкреИрдХреЗрдЯ рдмрдлрд╝рд░реНрд╕
тАв рд░рд┐рдВрдЧ рдХреНрдпреВ рдмрдлрд╝рд░реНрд╕ (рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧреНрд╕)
тАв рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рдВрднрд╛рд▓ (netmap_if)
рд╕рднреА рдиреЗрдЯрдореИрдк рд╕рдХреНрд╖рдо рд╕рд┐рд╕реНрдЯрдо рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдиреЙрдирдкреЗрдЬреЗрдб рд╢реЗрдпрд░реНрдб рдореЗрдореЛрд░реА рдХреЗ рдПрдХ рд╣реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ, рдЬреЛ рдХрд░реНрдиреЗрд▓ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдерд╛рди рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕реБрд▓рдн рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд░реНрдкрд┐рдд рдореЗрдореЛрд░реА рд╕реЗрдЧрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЖрдк рд╕рднреА рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рд╕реНрдЯреИрдХ рдХреЗ рдмреАрдЪ рд╢реВрдиреНрдп рдХреЙрдкреА рдкреИрдХреЗрдЯ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрд╕реА рд╕рдордп, NETMAP рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдпрд╛ рдХрддрд╛рд░реЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИредрдЪреВрдВрдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд░реНрдЪреБрдЕрд▓ рдкрддреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдирд┐рд░реНрдпрд╛рдд рдХреА рдЧрдИ NETMAP рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╕рднреА рд▓рд┐рдВрдХ рд╕рд╛рдкреЗрдХреНрд╖ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдСрдлрд╕реЗрдЯ рд╣реИрдВредрдкреИрдХреЗрдЯ рдмрдлрд╝рд░реНрд╕ рдЖрдХрд╛рд░ (2K рд╡рд░реНрддрдорд╛рди рдореЗрдВ) рдореЗрдВ рддрдп рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рдПрдирдЖрдИрд╕реА рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рджреЛрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдмрдлрд╝рд░ рдХреЛ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд╡рд░реНрдЪреБрдЕрд▓ рдкрддреЗ рдХреА рдЧрдгрдирд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рднреМрддрд┐рдХ рдкрддреЗ рдХреА рдЧрдгрдирд╛ рдПрдирдЖрдИрд╕реА рдбреАрдПрдордП рдЗрдВрдЬрди рджреНрд╡рд╛рд░рд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИредрд╕рднреА рдиреЗрдЯрдореИрдк рдмрдлрд╝рд░реНрд╕ рдХреЛ рдЙрд╕ рд╕рдордп рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб NETMAP рдореЛрдб рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИред рдореЗрдЯрд╛рдбрд╛рдЯрд╛ рдмрдлрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╕реВрдЪрдХрд╛рдВрдХ, рдЖрдХрд╛рд░, рдФрд░ рдХреБрдЫ рдЭрдВрдбреЗ, рд╕реНрд▓реЙрдЯреНрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧ рдХреЗ рдореБрдЦреНрдп рд╕реЗрд▓ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдмрдлрд░ рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб (рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд░рд┐рдВрдЧ) рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдХрддрд╛рд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИредрдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдХреА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд░рд┐рдВрдЧ рдХрддрд╛рд░реЛрдВ рдХрд╛ рдПрдХ рдЕрдореВрд░реНрддрди рд╣реИред рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ:тАв ring_size, рдХрддрд╛рд░ рдореЗрдВ рд╕реНрд▓реЙрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ (рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧ)тАв cur, рдХрддрд╛рд░ рдореЗрдВ рд▓рд┐рдЦрдиреЗ / рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рд╕реНрд▓реЙрдЯтАв рд▓рд╛рдн, рдЙрдкрд▓рдмреНрдз рд╕реНрд▓реЙрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛: TX рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреЗ рдЦрд╛рд▓реА рд╕реНрд▓реЙрдЯ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЖрд░рдПрдХреНрд╕ рдХреЗрд╕ - рдпреЗ рдПрдирдЖрдИрд╕реА рдбреАрдПрдордП рдЗрдВрдЬрди рд╕реЗ рднрд░реЗ рд╣реБрдП рд╕реНрд▓реЙрдЯ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдбреЗрдЯрд╛ рдЖрдпрд╛ рдерд╛редbuf_ofs, рдХрддрд╛рд░ рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреЗ рдкреИрдХреЗрдЯ рдмрдлрд╝рд░реНрд╕ рдХреЗ рд╕рд░рдгреА рдХреЗ рдмреАрдЪ рдХреА рд╢реБрд░реБрдЖрдд (рдиреЗрдЯрдореИрдк рдмрдлрд╝рд░реНрд╕)тАв рд╕реНрд▓реЙрдЯреНрд╕ [], рдПрдХ рд╕рд░рдгреА рдЬрд┐рд╕рдореЗрдВ рд░рд┐рдВрдЧ рдХрд╛ рдЖрдХрд╛рд░ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд▓реЙрдЯ рдореЗрдВ рдкреИрдХреЗрдЯ рдмрдлрд╝рд░ рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ (рдпрд╛ рднреЗрдЬрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдбреЗрдЯрд╛), рдкреИрдХреЗрдЯ рдХрд╛ рдЖрдХрд╛рд░, рдкреИрдХреЗрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рдЭрдВрдбреЗрд╣реЛрддреЗ рд╣реИрдВ ред рдЖрдЦрд┐рд░ рдореЗрдВ, netmap_if рдореЗрдВ рдиреЗрдЯрдореИрдк рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЖрд╕рд╛рдиреА рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИред рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдФрд░ рдСрдлрд╕реЗрдЯ рд╕реЗ рдЬреБрдбрд╝реА рдХрддрд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ (рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧреНрд╕), рдПрдирдЖрдИрд╕реА рд╕реЗ рдЬреБрдбрд╝реА рдХрддрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдПрдХ рд╕рдВрдХреЗрддрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред3.3ред рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЙрдиреНрдЯреЗрдХреНрдЯреНрд╕
рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, NETMAP рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдХрд░реНрдиреЗрд▓ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдмреАрдЪ рд╕рд╛рдЭрд╛ рдХреА рдЬрд╛рддреА рд╣реИрдВред NETMAP рд╕рдЦреНрддреА рд╕реЗ "рдПрдХреНрд╕реЗрд╕ рд░рд╛рдЗрдЯреНрд╕" рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдорд╛рд▓рд┐рдХреЛрдВ рдХреЛ рдбреЗрдЯрд╛ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧреНрд╕ рдХреЛ рд╣рдореЗрд╢рд╛ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди, рдХрд░реНрдиреЗрд▓ рд╕реНрдкреЗрд╕ рд╕реЗ рдХреЛрдб рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИред рдмрд╛рдзрд┐рдд рд╣реИрдВрдбрд▓рд░ рдФрд░ рдЕрдиреНрдп рдХрд░реНрдиреЗрд▓ рдереНрд░реЗрдбреНрд╕ рдХрднреА рднреА рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧреНрд╕ рдХреЛ рдирд╣реАрдВ рдЫреВрддреЗ рд╣реИрдВредрдХрд░реНрд╡ рдФрд░ рдХрд░реНрд╡ + рд▓рд╛рдн - 1 рдХреЗ рдмреАрдЪ рдкреИрдХреЗрдЯ рдмрдлрд╝рд░реНрд╕ рдХреЛ рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╢реЗрд╖ рдмрдлрд╝рд░реНрд╕ рдХреЛ рдХрд░реНрдиреЗрд▓ рд╕реЗ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдХреАрдХрдд рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдирдЖрдИрд╕реА рдкреИрдХреЗрдЯ рдмрдлрд╝рд░реНрд╕ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИред рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди рдЗрди рджреЛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдмреАрдЪ рдХреА рд╕реАрдорд╛рдПрдБ рдЕрдкрдбреЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИрдВред4. NETMAP рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рд╕рдВрдЪрд╛рд▓рди
4.1ред рдиреЗрдЯрдореИрдк рдПрдкреАрдЖрдИ
рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдХреЛ рдиреЗрдЯрдореИрдк рдореЛрдб рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╡рд┐рд╢реЗрд╖ рдбрд┐рд╡рд╛рдЗрд╕ / рдбреЗрд╡ / рдиреЗрдЯрдореИрдк рдкрд░ рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░Ioctl (..., NIOCREGIF, arg) рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПредрдЗрд╕ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЗ рддрд░реНрдХреЛрдВ рдореЗрдВ 'рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдирд╛рдо рдФрд░ (рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ) рдиреЗрдЯрдореИрдк рдХреА рдЕрдВрдЧреВрдареА рд╣реИ' рд╣рдо рдирдП рдЦреБрд▓реЗ рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрджрд┐ рд╕рдлрд▓ рд╣реЛ, рддреЛ рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЖрдХрд╛рд░ рдЬрд┐рд╕рдореЗрдВ NETMAP рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдпрд╛рдд рдХреА рдЧрдИ рд╕рднреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╕реНрдерд┐рдд рд╣реИрдВ рдФрд░ netmap_if рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдСрдлрд╕реЗрдЯ рд╣реЛрддреА рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдореЗрдВ рдЗрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рдорд┐рд▓рддреЗ рд╣реИрдВредрдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдХреЛ рдиреЗрдЯрдореИрдк рдореЛрдб рдореЗрдВ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд░рд┐рд╕реЗрдкреНрд╢рди рдХреЛ рднреЗрдЬрдиреЗ рдпрд╛ рдкреИрдХреЗрдЯ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:тАв Iioctl (..., NIOCTXSYNC) - рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдХреЗ рд╕рдВрдЧрдд рдХрддрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрддрд╛рд░реЛрдВ (рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧреНрд╕) рдХрд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди, рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкреИрдХреЗрдЯ рднреЗрдЬрдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕реНрдерд┐рддрд┐ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИтАв ioctl (..., NIOCRXSYNC) - рдиреЗрдЯ рдХрд╛рд░реНрдб рдХреЗ рд╕рд╛рде рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдХреА рдХрддрд╛рд░реЛрдВ рдХрд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рдиред рдЫрд▓реНрд▓реЗ, рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдкреИрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╕реНрдерд┐рддрд┐ рд╡рдХреНрд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдЙрдкрд░реЛрдХреНрдд рджреЛрдиреЛрдВ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓реНрд╕ рдиреЙрди-рдмреНрд▓реЙрдХрд┐рдВрдЧ рд╣реИрдВ, рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рд╕реЗ рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдбреЗрдЯрд╛ рдХреА рдЕрдирд╛рд╡рд╢реНрдпрдХ рдирдХрд▓ рди рдХрд░реЗрдВ рдФрд░ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдореЗрдВ рдПрдХ рдпрд╛ рдХрдИ рдкреИрдХреЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдФрд░ рдкреИрдХреЗрдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдУрд╡рд░рд╣реЗрдбреНрд╕ рдореЗрдВ рдПрдХ рдирд╛рдЯрдХреАрдп рдХрдореА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди NETMAP рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдореБрдЦреНрдп рднрд╛рдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рд┐рдпрд╛рдПрдВрдХрд░рддрд╛ рд╣реИ : тАв рдХрддрд╛рд░ рдХреЗ рд╡рдХреНрд░ / рд▓рд╛рдн рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╕реНрд▓реЙрдЯреНрд╕ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ (рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧреЛрдВ рдореЗрдВ рдкреИрдХреЗрдЯ рдмрдлрд╝рд░реНрд╕ рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рд╕реВрдЪрдХрд╛рдВрдХ рдФрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд░рд┐рдВрдЧреНрд╕ (рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдХрддрд╛рд░)тАв рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧреНрд╕ рдФрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд░рд┐рдВрдЧреНрд╕ рдХреЗ рдмреАрдЪ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдкреИрдХреЗрдЯ рд╕реНрд▓реЙрдЯреНрд╕ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИ, рдкреИрдХреЗрдЯ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдП рдлреНрд░реА рдмрдлрд╝рд░реНрд╕ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИредрдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рд▓рд╛рдн рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИрдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдиреЗрдЯрдореИрдк рдХрд░реНрдиреЗрд▓ рдкреНрд░реЛрд╕реЗрд╕рд░ рдиреНрдпреВрдирддрдо рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реИред рд╕рд┐рд╕реНрдЯрдо рдХреНрд░реИрд╢ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ред4.2ред рдЖрджрд┐рдо рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдирд╛
рдЕрд╡рд░реЛрдзрд┐рдд I / O рдХреЛ рдЪреБрдирд┐рдВрджрд╛ () / рдкреЛрд▓ () рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ / dev / netmap рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рдорд░реНрдерд┐рдд рд╣реИред рдкрд░рд┐рдгрд╛рдо рдпрд╛ рддреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд▓рд╛рдн рдХреЗ рд╕рд╛рде рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░рд┐рдЯрд░реНрди рд╣реИ> 0. рдХрд░реНрдиреЗрд▓ рд╕рдВрджрд░реНрдн рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕рд┐рд╕реНрдЯрдо ioctl рдХреЙрд▓ (... NIOC ** SYNC) рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░реЗрдЧрд╛ред рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реАрдкреАрдпреВ рдХреЛ рд▓реЛрдб рдХрд┐рдП рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдкреНрд░рддрд┐ рдкрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЪрдХреНрд░ рдореЗрдВ рдХрддрд╛рд░реЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИред4.3ред рдорд▓реНрдЯреА-рдХрддрд╛рд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕
рдХрдИ рдХрддрд╛рд░реЛрдВ рд╡рд╛рд▓рд╛ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб NETMAP рдЖрдкрдХреЛ рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреА рдХрддрд╛рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдореЛрдб рдореЗрдВ, рдПрдХ рд╕рд┐рдВрдЧрд▓ рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ / рдбреЗрд╡ / рдиреЗрдЯрдореИрдк рд╕рднреА рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧреНрд╕ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рд░рд┐рдВрдЧ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдЦреЛрд▓реЗ рдЬрд╛рдиреЗ рдкрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдПрдХ рдЬреЛрдбрд╝реА рдиреЗрдЯрдореИрдХреНрд╕ рд░рд┐рдВрдЧреНрд╕ рдЖрд░рдПрдХреНрд╕ / TX рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдиреЗрдЯрдореИрдк рдХрддрд╛рд░реЛрдВ рдХреЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╕реЗрдЯрдлрд┐рдирд┐рдЯреА () рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдореЗрдВ рдмрд╛рдБрдз рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдФрд░ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред4.4ред рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдЪрд┐рддреНрд░ 5 рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг NETMAP рдПрдкреАрдЖрдИ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╕рдмрд╕реЗ рд╕рд░рд▓ рдпрд╛рддрд╛рдпрд╛рдд рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп NETMAP рдПрдкреАрдЖрдИ рдХреЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг NETMAP_XXX рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХреЛрдб рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ, рдЗрд╕реА NETMAP рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд╕рдВрдХреЗрдд рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред NETMAP API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдПрдкреАрдЖрдИ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рддрд╛рдХрд┐ рдХреЛрдб рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рдФрд░ рд╕реАрдзрд╛ рд╣реЛредfds.fd = open("/dev/netmap", O_RDWR); strcpy(nmr.nm_name, "ix0"); ioctl(fds.fd, NIOCREG, &nmr); p = mmap(0, nmr.memsize, fds.fd); nifp = NETMAP_IF(p, nmr.offset); fds.events = POLLOUT; for (;;) { poll(fds, 1, -1); for (r = 0; r < nmr.num_queues; r++) { ring = NETMAP_TXRING(nifp, r); while (ring->avail-- > 0) { i = ring->cur; buf = NETMAP_BUF(ring, ring->slot[i].buf_index);
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЯреНрд░реИрдлрд╝рд┐рдХ рдЬрдирд░реЗрдЯрд░ред
4.5ред рд╣реЛрд╕реНрдЯ рд╕реНрдЯреИрдХ рд╕реЗ / рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЯ рднреЗрдЬрдирд╛ / рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЬрдм рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдХреЛ рдиреЗрдЯрдореИрдк рдореЛрдб рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм рднреА рдУрдПрд╕ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдЯреИрдХ рдЕрднреА рднреА рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ ifconfig рдФрд░ / рдпрд╛ рдЙрддреНрдкрдиреНрди / рдкреИрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред OS рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдЯреИрдХ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдпрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдпрд╣ рдЯреНрд░реИрдлрд╝рд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ / рдбреЗрд╡ / рдиреЗрдЯрдореИрдк рд╕реЗ рдЬреБрдбрд╝реЗ рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЬреЛрдбрд╝реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдРрд╕реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрд╣рд╛рдВ NIOCTXSYNC рдЗрд╕ рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧ рдкрд░ рдЪрд▓ рд░рд╣реА рд╣реИ, рдиреЗрдЯрдореИрдк рдХрд░реНрдиреЗрд▓ рд╣реИрдВрдбрд▓рд░ OS рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдЯреИрдХ рдХреЗ mbuf рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдкреИрдХреЗрдЯ рдмрдлрд╝рд░реНрд╕ рдХреЛ рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкреИрдХреЗрдЯреНрд╕ рдХреЛ рд╕реНрдЯреИрдХ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдУрдПрд╕ рд╕реНрдЯреИрдХ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЯ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧ рдореЗрдВ рд░рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ NIOCRXSYNC рдкрд░ рдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдирдЖрдИрд╕реА рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рд╣реЛрд╕реНрдЯ рд╕реНрдЯреИрдХ рдФрд░ рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧ рд╕реЗ рдЬреБрдбрд╝реЗ рдиреЗрдЯрдореИрдк рдХреЗ рдЫрд▓реНрд▓реЗ рдХреЗ рдмреАрдЪ рдПрдХ рдкреИрдХреЗрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рд╛рде рдирд┐рд╣рд┐рдд рд╣реИред
4.6ред рд╕реБрд░рдХреНрд╖рд╛ рд╕рдВрдмрдВрдзреА рдмрд╛рддреЗрдВ
NETMAP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛, рднрд▓реЗ рд╣реА рд╡рд╣ рдХреБрдЫ рдЧрд▓рдд рдХрд░рддреА рд╣реЛ, рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХреНрд░реИрд╢ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реИ, рдХреБрдЫ рдЕрдиреНрдп рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬреИрд╕реЗ рдХрд┐ UIO-IXGBE, PF_RING_DNAред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, NETMAP рджреНрд╡рд╛рд░рд╛ рдпреВрдЬрд░ рд╕реНрдкреЗрд╕ рдореЗрдВ рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдХрд┐рдП рдЧрдП рдореЗрдореЛрд░реА рдПрд░рд┐рдпрд╛ рдореЗрдВ рдХреНрд░рд┐рдЯрд┐рдХрд▓ рдПрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рд╕рднреА рдЗрдВрдбрд┐рдХреЗрдЯрд░реНрд╕ рдФрд░ рдкреИрдХреЗрдЯ рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рдЕрдиреНрдп рдмрдлрд╝рд░реНрд╕ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ OS рдХрд░реНрдиреЗрд▓ рджреНрд╡рд╛рд░рд╛ рд╡реИрдзрддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИред
4.7ред рд╢реВрдиреНрдп рдХреЙрдкреА рдкреИрдХреЗрдЯ рдЕрдЧреНрд░реЗрд╖рдг
рдПрдХ рд╣реА рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рднреА рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдХреЗ рд▓рд┐рдП рд╕рднреА рдмрдлрд╝рд░реНрд╕ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдмрд╣реБрдд рддреЗрдЬрд╝ (рд╢реВрдиреНрдп рдкреНрд░рддрд┐) рдкреИрдХреЗрдЯ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЛ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдпрд╛ рд╣реЛрд╕реНрдЯ рд╕реНрдЯреИрдХ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рдЗрдирдХрдорд┐рдВрдЧ рдФрд░ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗ рдЬреБрдбрд╝реА рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧ рдореЗрдВ рдкреИрдХреЗрдЯ рдмрдлрд╝рд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рдкреИрдХреЗрдЯ рдХрд╛ рдЖрдХрд╛рд░, рд╕реНрд▓реЙрдЯ рдлреНрд▓реИрдЧ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ рдФрд░ рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧ (рд╡рдХреНрд░) рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╕реЗрдЯ рдХрд░реЗрдВ, рд╕рд╛рде рд╣реА рдиреЗрдЯрдореИрдк рдорд╛рди рднреА рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред рд░рд┐рдВрдЧ / рд▓рд╛рдн, рдЬреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдП рдкреИрдХреЗрдЬ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИред
ns_src = &src_nr_rx->slot[i]; ns_dst = &dst_nr_tx->slot[j]; tmp = ns_dst->buf_index; ns_dst->buf_index = ns_src->buf_index; ns_src->buf_index = tmp; ns_dst->len = ns_src->len; ns_dst->flags = ns_src->flags = BUF_CHANGED; dst_nr_tx->avail--;
5. рдЙрджрд╛рд╣рд░рдг: рдбреАрдбреАрдУрдПрд╕ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдпрд╛рддрд╛рдпрд╛рдд рд╢реБрджреНрдзрд┐ рдЙрдкрдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП NETMAP API
5.1ред рдмреБрдирд┐рдпрд╛рджреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ
рдкреИрдХреЗрдЯреЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддреНрдпрдВрдд рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрдВрддреНрд░ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рдХрд╛рд░рдг, рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдЯреИрдХ рдХреЗ рдмреАрдЪ рдкреИрдХреЗрдЯ рд░реВрдЯрд┐рдВрдЧ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛, NETMAP рдЙрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИ рдЬреЛ рдЙрдЪреНрдЪ рдЧрддрд┐ рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ рдкреИрдХреЗрдЯреЛрдВ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЙрджрд╛рд╣рд░рдг рдЯреНрд░реИрдлрд┐рдХ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рдЖрдИрдбреАрдПрд╕ / рдЖрдИрдкреАрдПрд╕ рд╕рд┐рд╕реНрдЯрдо, рдлрд╛рдпрд░рд╡реЙрд▓, рд░рд╛рдЙрдЯрд░ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЯреНрд░реИрдлрд┐рдХ рдХреНрд▓реАрдирд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╣реИрдВ, рдЬреЛ рдбреАрдбреАрдУрдПрд╕ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рдкреНрд░рдореБрдЦ рдШрдЯрдХ рд╣реИрдВред
рдбреАрдбреАрдУрдПрд╕ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдпрд╛рддрд╛рдпрд╛рдд рд╕рдлрд╛рдИ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдЕрдзрд┐рдХрддрдо рдЧрддрд┐ рдкрд░ рдкреИрдХреЗрдЯ рдХреЛ рдлрд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдФрд░ рдлрд┐рд▓реНрдЯрд░ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдкреИрдХреЗрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдбреАрдбреАрдУрдПрд╕ рд╣рдорд▓реЛрдВ рдХрд╛ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреНрдЮрд╛рдд рд╡рд┐рднрд┐рдиреНрди рддрдХрдиреАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИрдВред
5.2ред рдиреЗрдЯрдореИрдк рдореЛрдб рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдФрд░ рд╕рдХреНрд╖рдо рдХрд░рдирд╛
рдЪреВрдВрдХрд┐ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЯреНрд░реИрдлрд┐рдХ рдХреНрд▓реАрдирд┐рдВрдЧ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдкреИрдХреЗрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдЧрд╛, рд╕рд╛рде рд╣реА рдбреАрдбреАрдУрдПрд╕ рд╕реБрд░рдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рд╕реВрдЪрд┐рдпреЛрдВ рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдбреАрдбреАрдУрдПрд╕ рдореЙрдбреНрдпреВрд▓ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдкреАрдпреВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдкреБрдирд░реНрд╡рд┐рддрд░рдг рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддрджрдиреБрд╕рд╛рд░, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ, рдиреЗрдЯрдореИрдк рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдЫреЛрдбрд╝рдХрд░ рдкреВрд░реА рдЧрддрд┐ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдоред рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдХрдИ рд╕реАрдкреАрдпреВ рдХреЛрд░ рдХреЛ "рдЙрдирдХреЗ" рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
struct nmreq nmr;
рдпрджрд┐ рд╣рдо рдУрдПрд╕ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЯ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧ рдЬреЛрдбрд╝реЗ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
struct nmreq nmr;
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕рднреА рдереНрд░реЗрдб рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдзрд┐рдХрддрдо_рдереНрд░реЗрдбреНрд╕ + 1 рд╕реНрд╡рддрдВрддреНрд░ рдереНрд░реЗрдб рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдмрдиреЗ рд░рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдиреЗрдЯрдореИрдк рд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рд╡рд┐рдирд┐рдордп рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЗрд╡рд▓ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдФрд░ рдкреИрдХреЗрдЯ рд▓реВрдк rx_thread () рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
while(targ->used) { ret = poll(fds, 2, 1 * 100); if (ret <= 0) continue; тАж for ( i = targ->begin; i < targ->end; i++) { ioctl(targ->fd, NIOCTXSYNC, 0); ioctl(targ->fd_stack, NIOCTXSYNC, 0); targ->rx = NETMAP_RXRING(targ->nifp, i); targ->tx = NETMAP_TXRING(targ->nifp, i); if (targ->rx->avail > 0) { тАж cnt = process_incoming(targ->id, targ->rx, targ->tx, targ->stack_rx, targ->stack_tx); тАж } }
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рд╕рдВрдХреЗрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рдкреЛрд▓ () рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЗ рдмрд╛рдж рдиреЗрдЯрдореИрдк_рд░рд┐рдВрдЧ рдореЗрдВ рд╕реЗ рдПрдХ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реБрдП, рдлрд╝рд┐рд▓реНрдЯрд░ рдореЗрдВ рдкреИрдХреЗрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛_рдЗрдирдХрдорд┐рдВрдЧ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
5.5ред process_incoming ()
Process_incoming рдХреЛ рдирд┐рдпрдВрддреНрд░рдг рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди DDOS рдорд╛рдиреНрдпрддрд╛ рддрдХрдиреАрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
limit = nic_rx->avail; while ( limit-- > 0 ) { struct netmap_slot *rs = &nic_rx->slot[j];
рдорд╛рдирд╛ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг NETMAP рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рддрдХрдиреАрдХреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдХреЛ NETMAP рдореЛрдб рдореЗрдВ рдбрд╛рд▓рдиреЗ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдкреИрдХреЗрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдкреИрдХреЗрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИред
6. рдкреНрд░рджрд░реНрд╢рди
6.1ред рдореИрдЯреНрд░рд┐рдХреНрд╕
рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдг рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп, рдкрд╣рд▓реЗ рдкрд░реАрдХреНрд╖рдг рдореИрдЯреНрд░рд┐рдХреНрд╕ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред рдХрдИ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдкреИрдХреЗрдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рд╕реАрдкреАрдпреВ, рдХреИрд╢, рдбреЗрдЯрд╛ рдмрд╕, рдЖрджрд┐ред рд░рд┐рдкреЛрд░реНрдЯ CPU рд▓реЛрдб рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдорд╛рдирддреА рд╣реИ рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдкреИрдХреЗрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рджреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реАрдкреАрдпреВ рд▓реЛрдб рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИ: рдкреНрд░реЗрд╖рд┐рдд рдбреЗрдЯрд╛ рдХреЗ рдЖрдХрд╛рд░ (рдкреНрд░рддрд┐-рдмрд╛рдЗрдЯ рд▓рд╛рдЧрдд) рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдкреИрдХреЗрдЯ (рдкреНрд░рддрд┐-рдкреИрдХреЗрдЯ рд▓рд╛рдЧрдд) рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред NETMAP рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рд╢реВрдиреНрдп рдХреЙрдкреА рдкреИрдХреЗрдЯ рдЕрдЧреНрд░реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рддрд┐-рдкреИрдХреЗрдЯ рдЖрдзрд╛рд░рд┐рдд рд╕реАрдкреАрдпреВ рдЙрдкрдпреЛрдЧ рдорд╛рдк рдкреНрд░рддрд┐ рдкреИрдХреЗрдЯ рд▓рд╛рдЧрдд рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрддрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрдореЛрд░реА рдХреА рдХреЛрдИ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП, рдмрдбрд╝реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╕реАрдкреАрдпреВ рдкрд░ рд▓реЛрдб рдиреНрдпреВрдирддрдо рд╣реЛрдЧрд╛ред рдЙрд╕реА рд╕рдордп, рдкреНрд░рддрд┐-рдкреИрдХреЗрдЯ рд▓рд╛рдЧрдд рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдорд╛рдк рдореЗрдВ NETMAP рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдИ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдорд╛рдк рд╡рд┐рд╢реЗрд╖ рд░реБрдЪрд┐ рд╣реИред рддреЛ, рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рдкреИрдХреЗрдЯ, 64 рдмрд╛рдЗрдЯреНрд╕ рдЖрдХрд╛рд░ (60 рдмрд╛рдЗрдЯреНрд╕ + 4 рдмрд╛рдЗрдЯреНрд╕ рд╕реАрдЖрд░рд╕реА) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдорд╛рдк рдХрд┐рдП рдЧрдП рдереЗред
рдорд╛рдк рдХреЗ рд▓рд┐рдП рджреЛ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛: NETMAP рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдЯреНрд░реИрдлрд╝рд┐рдХ рдЬрдирд░реЗрдЯрд░ рдФрд░ рдПрдХ рдЯреНрд░реИрдлрд╝рд┐рдХ рд░рд┐рд╕реАрд╡рд░, рдЬрд┐рд╕рдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЯ рдХреА рдЧрд┐рдирддреА рдХреАред рдпрд╛рддрд╛рдпрд╛рдд рдЬрдирд░реЗрдЯрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ: рдХреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛, рдкреНрд░реЗрд╖рд┐рдд рдкреИрдХреЗрдЯ рдХрд╛ рдЖрдХрд╛рд░, рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ (рдмреИрдЪ рдЖрдХрд╛рд░) рдкреНрд░рддрд┐ рдкреНрд░реЗрд╖рд┐рдд рдкреИрдХреЗрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ред
6.2ред рдЖрдпрд░рди рдФрд░ рдУрдПрд╕ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ
рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓реЛрд╣реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдордиреЗ рдПрдХ i7-870 4-рдХреЛрд░ 2.93GHz CPU (рдЯрд░реНрдмреЛ-рдмреВрд╕реНрдЯрд░ рдореЛрдб рдореЗрдВ 3.2 рдЧреАрдЧрд╛рд╣рд░реНрдЯреНрдЬ) рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд░реИрдо рдиреЗ 1.33GHz рдХреА рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛, рдФрд░ рдЗрдВрдЯреЗрд▓ 82599 рдЪрд┐рдкрд╕реЗрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рджреЛрд╣рд░реЗ рдкреЛрд░реНрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд░реВрдк рдореЗрдВред FreeBSD HEAD / amd64 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
рд╕рднреА рдорд╛рдк рджреЛ рд╕рдорд╛рди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ рдХрд┐рдП рдЧрдП рдереЗ рдЬреЛ рд╕реАрдзреЗ рдХреЗрдмрд▓ рджреНрд╡рд╛рд░рд╛ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЬреБрдбрд╝реЗ рдереЗред рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдо рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рд╣рд╕рдВрдмрджреНрдз рд╣реИрдВ, рдФрд╕рдд рд╕реЗ рдЕрдзрд┐рдХрддрдо рд╡рд┐рдЪрд▓рди рд▓рдЧрднрдЧ 2% рд╣реИред
рдкрд╣рд▓реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ NETMAP рдмрд╣реБрдд рдХреБрд╢рд▓ рд╣реИ рдФрд░ рдЕрдзрд┐рдХрддрдо 10 рдкреИрдХреЗрдЯ рдХреЗ рд╕рд╛рде 10GBit / s рдЪреИрдирд▓ рднрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, NETMAP рдХреЛрдб рдХреЗ рдХрд╛рд░рдг рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХрдо рдХреА рдЧрдИ рдереАред рдХреЛрд░ i7 рд╕реАрдкреАрдпреВ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдЖрд╡реГрддреНрддрд┐ рдХреНрд░рдорд╢рдГ 133 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рд╣реИ, рд╕реАрдкреАрдпреВ рдорд▓реНрдЯреАрдкреНрд▓рд╛рдпрд░ (рдЕрдзрд┐рдХрддрдо x21) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ 3 рдЬреАрдПрдЪрдЬреЗрдб рддрдХ рдЕрд╕рддрдд рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕реЗрдЯ рдкрд░ рдЪрд▓рд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИред
6.3ред рдкреНрд░реЛрд╕реЗрд╕рд░, рдХреЛрд░ рдЖрджрд┐ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЧрддрд┐ред
рдкрд╣рд▓рд╛ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рднрд┐рдиреНрди рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдкрд░ рдпрд╛рддрд╛рдпрд╛рдд рдХреА рдкреАрдврд╝реА рд╣реИ, рдПрдХ рдЕрд▓рдЧ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ (рдмреИрдЪ рдореЛрдб) рдореЗрдВ рдХрдИ рдкреИрдХреЗрдЯ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

64 рдмрд╛рдЗрдЯ рдкреИрдХреЗрдЯ рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдЖрдкрдХреЛ 10GBit / s рдЪреИрдирд▓ рдХреЛ рдПрдХ рд╣реА рдХреЛрд░ рдФрд░ 900Mz рдХреА рдЖрд╡реГрддреНрддрд┐ рдкрд░ рддреБрд░рдВрдд рднрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рд░рд▓ рдЧрдгрдирд╛ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкреИрдХреЗрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ 60-65 рдкреНрд░реЛрд╕реЗрд╕рд░ рдЪрдХреНрд░ рд▓рдЧрддреЗ рд╣реИрдВред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдХреЗрд╡рд▓ NETMAP рдкреИрдХреЗрдЬ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рд▓рд╛рдЧрдд рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддреА рд╣реИред рдкреИрдХреЗрдЬ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдкреИрдХреЗрдЬ рдХреЗ рдЙрдкрдпреЛрдЧреА рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рдЖрд╡реГрддреНрддрд┐ рдореЗрдВ рдПрдХ рдФрд░ рд╡реГрджреНрдзрд┐ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИ рдХрд┐ рд╕реАрдкреАрдпреВ рдмреЗрдХрд╛рд░ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдкреИрдХреЗрдЯ рдирд╣реАрдВ рднреЗрдЬ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ рдкреИрдХреЗрдЯ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдирдП рдореБрдлреНрдд рд╕реНрд▓реЙрдЯ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рд╕реВрдЪрдирд╛ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
рдмрдврд╝рддреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде, рдЖрдк рдПрдХ рдХреЛрд░ рдкрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрдХреЗрддрдХ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

6.4ред рдкреИрдХреЗрдЬ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЧрддрд┐
рдкрд┐рдЫрд▓рд╛ рдкрд░реАрдХреНрд╖рдг рд╕рдмрд╕реЗ рдХрдо рдкреИрдХреЗрдЯ рдкрд░ рдкреНрд░рджрд░реНрд╢рди рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рддрд┐-рдкреИрдХреЗрдЯ рд▓рд╛рдЧрдд рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рдВрдЧрд╛ рд╣реИред рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рд╕рд╛рд░рд┐рдд рдкреИрдХреЗрдЯ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ NETMAP рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдорд╛рдкрддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЖрдВрдХрдбрд╝рд╛ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреИрдХреЗрдЯ рдЖрдХрд╛рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд▓рдЧрднрдЧ 1 / рдЖрдХрд╛рд░ рдХреЗ рдлрд╛рд░реНрдореВрд▓реЗ рднреЗрдЬрдиреЗ рдХреА рдЧрддрд┐ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реА, рдПрдХ рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдкреИрдХреЗрдЯ рд░рд┐рд╕реЗрдкреНрд╢рди рджрд░ рдЕрд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдмрджрд▓рддреА рд╣реИред ремрел рд╕реЗ резреи 127 рдмрд╛рдЗрдЯ рддрдХ рдХреЗ рдЖрдХрд╛рд░ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЯ рднреЗрдЬрддреЗ рд╕рдордп рдЧрддрд┐ 7.5.рел рдПрдордкреАрдкреА рддрдХ рдЧрд┐рд░ рдЬрд╛рддреА рд╣реИред рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдХрдИ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдбреЛрдВ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ 1Gbit / s рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
6.5ред рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдкреНрд░рддрд┐ рдкреИрдХреЗрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЧрддрд┐
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдПрдХ рд╕рд╛рде рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдУрд╡рд░рд╣реЗрдбреНрд╕ рдХрдо рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдкреИрдХреЗрдЬ рдХреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреА рд▓рд╛рдЧрдд рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЪреВрдВрдХрд┐ рд╕рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкреНрд░рддрд┐ рд╕рдВрд╕рд╛рдзрд┐рдд рдкреИрдХреЗрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреИрдХреЗрдЯ рдХреА рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЧрддрд┐ рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрдпрд╛рдЬ рдХреА рд╣реИред

7. рдирд┐рд╖реНрдХрд░реНрд╖
NETMAP рдХреЗ рд▓реЗрдЦрдХ (рд▓реБрдЗрдЧреА рд░рд┐рдЬрд╝реЛ) рдкреИрдХреЗрдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдУрд╡рд░рд╣реЗрдбреНрд╕ рдХреЛ рдЦрддреНрдо рдХрд░рдХреЗ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ рдПрдХ рдирд╛рдЯрдХреАрдп рд╡реГрджреНрдзрд┐ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ рдЬреЛ рдХрд┐ рдкреИрдХреЗрдЯ рдЬрдм рдУрдПрд╕ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдЯреИрдХ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИред NETMAP рдЬреЛ рдЧрддрд┐ рдЖрдкрдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рд╡рд╣ рдХреЗрд╡рд▓ рдЪреИрдирд▓ рдХреА рдмреИрдВрдбрд╡рд┐рдбреНрде рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд╣реИред NETMAP рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдиреЗрдЯрд╡рд░реНрдХ рдкреИрдХреЗрдЯ рдореЗрдВ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡реЛрддреНрддрдо рддрдХрдиреАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИ, рдФрд░ NETMAP API рдореЗрдВ рд╕рдиреНрдирд┐рд╣рд┐рдд рдЕрд╡рдзрд╛рд░рдгрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдиреЗрдЯрд╡рд░реНрдХ рдпрд╛рддрд╛рдпрд╛рдд рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛, рд╕реНрд╡рд╕реНрде рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред
рд╡рд░реНрддрдорд╛рди рдореЗрдВ, NETMAP рдХреА рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди FreeBSD рд╕рдореБрджрд╛рдп рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, NETMAP рдХреЛ OS FreeBSD рдХреЗ HEAD рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╕реНрдерд┐рд░ / 9, рд╕реНрдерд┐рд░ / 8 рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред