P4 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛

P4 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛
P4 рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдкреИрдХреЗрдЯ рд░реВрдЯрд┐рдВрдЧ рдирд┐рдпрдореЛрдВ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред C рдпрд╛ Python рдЬреИрд╕реА рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдпреЛрдЬрди рд╡рд╛рд▓реА рднрд╛рд╖рд╛ рдХреЗ рд╡рд┐рдкрд░реАрдд, P4 рдПрдХ рдбреЛрдореЗрди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рд╖рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рд░реВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрдИ рдбрд┐рдЬрд╝рд╛рдЗрди рд╣реИрдВред

P4 рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рднрд╛рд╖рд╛ рд╣реИ рдЬрд┐рд╕реЗ P4 рд▓реИрдВрдЧреНрд╡реЗрдЬ рдХрдВрд╕реЛрд░реНрдЯрд┐рдпрдо рдирд╛рдордХ рдПрдХ рдЧреИрд░-рд▓рд╛рднрдХрд╛рд░реА рд╕рдВрдЧрдарди рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рдФрд░ рдЕрдиреБрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ рдУрдкрди рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдлрд╛рдЙрдВрдбреЗрд╢рди (рдУрдПрдирдПрдл) рдФрд░ рд▓рд┐рдирдХреНрд╕ рдлрд╛рдЙрдВрдбреЗрд╢рди (рдПрд▓рдПрдл) рджреНрд╡рд╛рд░рд╛ рднреА рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рд╣реИ, рдЬреЛ рдУрдкрди рд╕реЛрд░реНрд╕ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рджреЛ рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рд╕рдВрдЧрдарди рд╣реИрдВред
рднрд╛рд╖рд╛ рдореВрд▓ рд░реВрдк рд╕реЗ 2013 рдореЗрдВ рдЧрдврд╝реА рдЧрдИ рдереА рдФрд░ 2014 рдХреЗ SIGCOMM CCR рдкреЗрдкрд░ рдореЗрдВ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕рдХрд╛ рд╢реАрд░реНрд╖рдХ рдерд╛ "рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЗрдВрдбрд┐рдкреЗрдВрдбреЗрдВрдЯ, рдкреИрдХреЗрдЯ рд░реВрдЯрд┐рдВрдЧ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧред"

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

рдУрдкрди рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдлрд╛рдЙрдВрдбреЗрд╢рди рдХреЗ рдХрд╛рд░реНрдпрдХрд╛рд░реА рдирд┐рджреЗрд╢рдХ рдЧреБрд░реБ рдкрд╛рд░реБрд▓рдХрд░ рдиреЗ рдХрд╣рд╛, "рдПрд╕рдбреАрдПрди рдиреЗ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдЙрджреНрдпреЛрдЧ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рдкреА4 рд░реВрдЯрд┐рдВрдЧ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдмрд┐рд▓рд┐рдЯреА рд▓рд╛рдХрд░ рдПрд╕рдбреАрдПрди рдХреЛ рдЕрдЧрд▓реЗ рд╕реНрддрд░ рдкрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред"

P4 рднрд╛рд╖рд╛ рдореВрд▓ рд░реВрдк рд╕реЗ Google, Intel, Microsoft рд░рд┐рд╕рд░реНрдЪ, рдмреЗрдпрд░рдлреБрдЯ, рдкреНрд░рд┐рдВрд╕рдЯрди рдФрд░ рд╕реНрдЯреИрдирдлреЛрд░реНрдб рдХреЗ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдФрд░ рд╢реЛрдзрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдереАред рд▓рдХреНрд╖реНрдп рд╕рд░рд▓ рдерд╛: рдПрдХ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рди рднрд╛рд╖рд╛ рдмрдирд╛рдПрдВ рдЬрд┐рд╕реЗ рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрд░ рдПрдХ рджрд┐рди рдореЗрдВ рд╕реАрдЦ рд╕рдХреЗ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкреИрдХреЗрдЯ рдХреИрд╕реЗ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдЗрд╕рдХрд╛ рд╕рдЯреАрдХ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗред

рд╢реБрд░реБрдЖрдд рд╕реЗ рд╣реА, P4 рдХреЛ рд▓рдХреНрд╖реНрдп рд╕реНрд╡рддрдВрддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЕрд░реНрдерд╛рдд P4 рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ ASIC, FPGAs, CPU, NPU рдФрд░ GPU рдЬреИрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рд▓рдХреНрд╖реНрдпреЛрдВ рдкрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред

рднрд╛рд╖рд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рднреА рд╣реИ (рдпрд╛рдиреА, рдПрдХ P4 рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореМрдЬреВрджрд╛ рдорд╛рдирдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирдП рдХрд╕реНрдЯрдо рдПрдбреНрд░реЗрд╕рд┐рдВрдЧ рдореЛрдб рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред

рдЙрджреНрдпреЛрдЧ рдореЗрдВ, P4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдбрд┐рд╡рд╛рдЗрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрдВрдЯрд░рдиреЗрдЯ-рдЖрд░рдПрдлрд╕реА рдФрд░ рдЖрдИрдИрдИрдИ рдорд╛рдирдХреЛрдВ рдореЗрдВ рдкреА4 рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рднреА рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗред

P4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдмрд▓ рдФрд░ рдлрд┐рдХреНрд╕реНрдб рдлрд╝рдВрдХреНрд╢рди рдбрд┐рд╡рд╛рдЗрд╕ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдУрдкрди рд╕реЛрд░реНрд╕ SONiC рд╕реНрд╡рд┐рдЪ OS рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕реНрд╡рд┐рдЪ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (SAI) API рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред P4 рдХрд╛ рдЙрдкрдпреЛрдЧ ONF рд╕реНрдЯреНрд░реИрдЯрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдирд┐рд╢реНрдЪрд┐рдд рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдордпреЛрдЧреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

рдкреА4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдг рд╡рд┐рдХреНрд░реЗрддрд╛ рд╕рднреА рдЙрддреНрдкрд╛рджреЛрдВ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░реВрдЯрд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рд╣реЛ рд╕рдХреЗрдЧрд╛, рдкреНрд░рдмрдВрдзрди рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗрдЧрд╛ рдФрд░ рдЕрдВрддрддрдГ рдЕрдВрддрд░рд╕рдВрдЪрд╛рд▓рдиреАрдпрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрдЧреАред

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

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

рдбреЗрд╡рд▓рдкрд░ рд╕рдореБрджрд╛рдп рдиреЗ рдХреЛрдб рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдпреЛрдЧрджрд╛рди рджрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХрдВрдкрд╛рдЗрд▓рд░, рдкрд╛рдЗрдкрд▓рд╛рдЗрди, рд╡реНрдпрд╡рд╣рд╛рд░ рдореЙрдбрд▓, рдПрдкреАрдЖрдИ, рдкрд░реАрдХреНрд╖рдг рдврд╛рдВрдЪреЗ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЕрд▓реАрдмрд╛рдмрд╛, рдПрдЯреАрдПрдВрдбрдЯреА, рдмреЗрдпрд░рдлреБрдЯ, рд╕рд┐рд╕реНрдХреЛ, рдлреЙрдХреНрд╕ рдиреЗрдЯрд╡рд░реНрдХреНрд╕, рдЧреВрдЧрд▓, рдЗрдВрдЯреЗрд▓, рдЖрдИрдПрдХреНрд╕рдЖрдИрдП, рдЬреБрдирд┐рдкрд░ рдиреЗрдЯрд╡рд░реНрдХреНрд╕, рдореЗрд▓рд╛рдиреЙрдХреНрд╕, рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ, рдиреЗрдЯрдХреЛрдк, рдиреЗрдЯреНрд░реЛрдиреЛрдо, рд╡реАрдПрдорд╡реЗрдпрд░, рдПрдХреНрд╕рд┐рд▓рд┐рдирдХреНрд╕ рдФрд░ рдЬреЗрдбрдЯреАрдИ рдЬреИрд╕реА рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рдкрд╛рд╕ рд╕рдорд░реНрдкрд┐рдд рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╣реИрдВ; рдмреАрдпреВрдкреАрдЯреА, рдХреЙрд░реНрдиреЗрд▓, рд╣рд╛рд░реНрд╡рд░реНрдб, рдПрдордЖрдИрдЯреА, рдПрдирд╕реАрдЯреАрдпреВ, рдкреНрд░рд┐рдВрд╕рдЯрди, рд╕реНрдЯреИрдирдлреЛрд░реНрдб, рдЯреЗрдХреНрдирд┐рдпрди, рд╕рд┐рдВрдШреБрдЖ, рдпреВрдореИрд╕ рдФрд░ рдпреВрдПрд╕рдЖрдИ рд╕рд╣рд┐рдд рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдпреЛрдВ рд╕реЗ; рдФрд░ CORD, FD.io, OpenDaylight, ONOS, OvS, SAI рдФрд░ Stratum рд╕рд╣рд┐рдд рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЗрд╕ рддрдереНрдп рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ P4 рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИред

P4 рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреАрдврд╝реА:

P4 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛

рдЖрд╡реЗрджрди рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдПрдБ

P4 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛
рдЪреВрдВрдХрд┐ рднрд╛рд╖рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд░реВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдпреЛрдЬрди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдФрд░ рдбрд┐рдЬрд╝рд╛рдЗрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╕реВрдЪреА рдЕрд▓рдЧ рд╣реИред рднрд╛рд╖рд╛ рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ:

  1. рд▓рдХреНрд╖реНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░рддрд╛;
  2. рдкреНрд░рдпреБрдХреНрдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рд╕реНрд╡рддрдВрддреНрд░рддрд╛;
  3. рдлрд╝реАрд▓реНрдб рдкреБрдирд░реНрд╡рд┐рдиреНрдпрд╛рд╕ рдХреНрд╖рдорддрд╛.

рд▓рдХреНрд╖реНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░рддрд╛

P4 рдкреНрд░реЛрдЧреНрд░рд╛рдореЛрдВ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдЗрдВрдЬрдиреЛрдВ, рдЬреИрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдпреЛрдЬрди рдкреНрд░реЛрд╕реЗрд╕рд░, FPGAs, рд╕рд┐рд╕реНрдЯрдо-рдСрди-рдЪрд┐рдкреНрд╕, рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ ASICs рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрди рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рдорд╢реАрдиреЛрдВ рдХреЛ P4 рд▓рдХреНрд╖реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд▓рдХреНрд╖реНрдп рдХреЛ P4 рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд▓рдХреНрд╖реНрдп рд╕реНрд╡рд┐рдЪ рдореЙрдбрд▓ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд▓рдХреНрд╖реНрдп рдбрд┐рд╡рд╛рдЗрд╕, рдмрд╛рд╣рд░реА рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ рдореЗрдВ рднреА рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЪреВрдБрдХрд┐ P4 рдкреНрд░реЛрдЧреНрд░рд╛рдореЛрдВ рдХреЗ рдХрдИ рдореВрд▓ рд▓рдХреНрд╖реНрдп рд╕рд░рд▓ рдкреИрдХреЗрдЯ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдереЗ, рдЗрд╕рд▓рд┐рдП "P4 рд╕реНрд╡рд┐рдЪ" рд╢рдмреНрдж рд╕реБрдирдирд╛ рдмрд╣реБрдд рдЖрдо рд╣реИ, рднрд▓реЗ рд╣реА "P4 рд▓рдХреНрд╖реНрдп" рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реЛред

рдкреНрд░рдпреБрдХреНрдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рд╕реНрд╡рддрдВрддреНрд░рддрд╛

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

рдлрд╝реАрд▓реНрдб рдкреБрдирд░реНрд╡рд┐рдиреНрдпрд╛рд╕ рдХреНрд╖рдорддрд╛

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

рд╣рд╛рд▓рд╛рдБрдХрд┐ рднрд╛рд╖рд╛ рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕реЗрдЯ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЛ рд░реЛрдХ рд╕рдХреЗ, рдпреЗ рдЕрдиреБрдХреВрд▓рди рднрд╛рд╖рд╛ рд▓реЗрдЦрдХ рдХреЗ рд▓рд┐рдП рдЕрджреГрд╢реНрдп рд╣реИрдВ рдФрд░ рдЕрдВрддрддрдГ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд▓рдЪреАрд▓реЗрдкрди рдФрд░ рдЙрдирдХреА рдкреБрди: рд╡рд┐рдиреНрдпрд╛рд╕ рдХреНрд╖рдорддрд╛ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рднрд╛рд╖рд╛ рдХреА рдЗрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╢реБрд░реВ рдореЗрдВ рдЗрд╕рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдиреЗрдЯрд╡рд░реНрдХ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдореЗрдВ рдЗрд╕рдХреЗ рд╡реНрдпрд╛рдкрдХ рдЙрдкрдпреЛрдЧ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдХреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдпрд╣ рднрд╛рд╖рд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рдХрдВрдкрдирд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИ:

1) рд╣рд╛рдЗрдкрд░рд╕реНрдХреЗрд▓ рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░;

рдЪреАрдиреА рдХрдВрдкрдиреА Tencent рджреБрдирд┐рдпрд╛ рдХреА рд╕рдмрд╕реЗ рдмрдбрд╝реА рдирд┐рд╡реЗрд╢ рдХрдВрдкрдиреА рд╣реИ рдФрд░ рд╕рдмрд╕реЗ рдмрдбрд╝реА рдЙрджреНрдпрдо рдкреВрдВрдЬреА рдлрд░реНрдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЪреАрди рдФрд░ рджреБрдирд┐рдпрд╛ рднрд░ рдХреЗ рдЕрдиреНрдп рджреЗрд╢реЛрдВ рдореЗрдВ Tencent рдХреА рд╕рд╣рд╛рдпрдХ рдХрдВрдкрдирд┐рдпрд╛рдВ рд╡рд┐рднрд┐рдиреНрди рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗрд╡рд╛рдУрдВ, рдХреГрддреНрд░рд┐рдо рдмреБрджреНрдзрд┐рдорддреНрддрд╛ рдФрд░ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдордиреЛрд░рдВрдЬрди рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рд╕рд╣рд┐рдд рдЙрдЪреНрдЪ рддрдХрдиреАрдХ рд╡реНрдпрд╡рд╕рд╛рдп рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣реИрдВред

рдкреА4 рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдордпреЛрдЧреНрдп рд░реВрдЯрд┐рдВрдЧ рдЙрдиреНрдирдд рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдВрдкрдиреА рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

2) рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдХрдВрдкрдирд┐рдпрд╛рдБ;

рдЧреЛрд▓реНрдбрдореИрди рд╕реИрдХреНрд╕ рдУрдкрди рд╕реЛрд░реНрд╕ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЛ рдирдпрд╛ рдХрд░рдиреЗ рдФрд░ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдирдХреЛрдВ рдФрд░ рд╕рдорд╛рдзрд╛рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддрд╛ рд╣реИред

3) рдЙрддреНрдкрд╛рджрди;

рдкреВрд░реЗ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдЙрджреНрдпреЛрдЧ рдХреЛ P4 рдЬреИрд╕реА рднрд╛рд╖рд╛ рд╕реЗ рд▓рд╛рдн рд╣реЛрдЧрд╛ рдЬреЛ рдЕрдЧреНрд░реЗрд╖рдг рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИред рд╕рд┐рд╕реНрдХреЛ рднреА рдЗрд╕ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЙрддреНрдкрд╛рдж рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд░рдЦрддрд╛ рд╣реИред

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

рд░реБрдЗрдЬреА рдиреЗрдЯрд╡рд░реНрдХреНрд╕ рдкреА4 рдФрд░ рдЗрд╕рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдорд┐рд▓рдиреЗ рд╡рд╛рд▓реЗ рд▓рд╛рднреЛрдВ рдХрд╛ рдкреНрд░рдмрд▓ рд╕рдорд░реНрдердХ рд╣реИред рдкреА4 рдХреЗ рд╕рд╛рде, рдХрдВрдкрдиреА рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡реЛрддреНрддрдо рд╢реНрд░реЗрдгреА рдХреЗ рд╕рдорд╛рдзрд╛рди рдмрдирд╛ рдФрд░ рд╡рд┐рддрд░рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИред

4) рджреВрд░рд╕рдВрдЪрд╛рд░ рдкреНрд░рджрд╛рддрд╛;

AT&T, P4 рдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реВрдк рд╕реЗ рдЕрдкрдирд╛рдиреЗ рд╡рд╛рд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛, рдЬреЛ рдЕрдкрдиреЗ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдЬреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЙрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП P4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд╣рд▓реЗ рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛, рдФрд░ рдЕрдкрдиреЗ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ P4 рдкреНрд░реЛрдЧреНрд░рд╛рдордпреЛрдЧреНрдп рдлрд╝реЙрд░рд╡рд░реНрдбрд┐рдВрдЧ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рдерд╛ред

рдбреЙрдпрдЪреЗ рдЯреЗрд▓реАрдХреЙрдо рдореЗрдВ, рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХреНрд╕реЗрд╕ 4.0 рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдореБрдЦ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

5) рд╕реЗрдореАрдХрдВрдбрдХреНрдЯрд░ рдЙрджреНрдпреЛрдЧ;

рднрд╛рд╖рд╛ рдиреЗ рдмреЗрдпрд░рдлреБрдЯ рдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рд░реВрдЯрд┐рдВрдЧ рдкреНрд▓реЗрди рдореЗрдВ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреНрд╖рдорддрд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдкреНрд░рддрд┐рдорд╛рди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рдпрд╛ред

Xilinx P4.org рдХреЗ рд╕рдВрд╕реНрдерд╛рдкрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛ рдФрд░ P4 рднрд╛рд╖рд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╢рд╛рдорд┐рд▓ рдерд╛ рдФрд░ рдЗрд╕реЗ SmartNIC рдФрд░ NFV рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП FPGA-рдЖрдзрд╛рд░рд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдмрд▓ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, SDNet рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рд▓реЗ P416 рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдХрд┐рдпрд╛ред

6) рд╕реЙрдлреНрдЯрд╡реЗрдпрд░.

VMware рдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ P4 рдЬрдмрд░рджрд╕реНрдд рдКрд░реНрдЬрд╛, рдирд╡рд╛рдЪрд╛рд░ рдФрд░ рд╕рдореБрджрд╛рдп рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рд╕рд╛рд░реНрдердХ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛ рд░рд╣рд╛ рд╣реИред рд╡реАрдПрдорд╡реЗрдпрд░ рд╢реБрд░реВ рд╕реЗ рд╣реА рдЗрд╕ рдЙрджреНрдпреЛрдЧ рдЖрдВрджреЛрд▓рди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд░рд╣рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдирд╡рд╛рдЪрд╛рд░ рдХреА рдПрдХ рдирдИ рд▓рд╣рд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░-рдЖрдзрд╛рд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реИ рдЬреЛ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдирд╡реАрдирддрдо рдЙрддреНрдкрд╛рджреЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИред

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

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

рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛

рдкреА4 рдПрдХ рдЦреБрд▓рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ, рд╕рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд╣реИ P4.org

рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рд▓рд┐рдВрдХ https://github.com/p4lang, рдЬрд╣рд╛рдВ рдЖрдк рдЙрджрд╛рд╣рд░рдг рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкреНрд▓рдЧрдЗрди P4 рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдПрдХреНрд▓рд┐рдкреНрд╕ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рд╣рдо рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдкреА4 рд╕реНрдЯреВрдбрд┐рдпреЛ рдирдВрдЧреЗ рдкрд╛рдБрд╡ рд╕реЗ.

P4 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛

рдЖрдЗрдП рдХрд░реНрдиреЗрд▓ рдХреЗ рдореБрдЦреНрдп рд╕рд╛рд░ рдкрд░ рдирдЬрд░ рдбрд╛рд▓реЗрдВ:

рд╣реЗрдбрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ тАФ рдЙрдирдХреА рдорджрдж рд╕реЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реЗрдбрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рд╣реЗрдбрд░ рдкрд░рд┐рднрд╛рд╖рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреА рд╣реИ:

  • рдкреИрдХреЗрдЯ рдкреНрд░рд╛рд░реВрдк рдФрд░ рд╣реЗрдбрд░ рдлрд╝реАрд▓реНрдб рдирд╛рдореЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг
  • рдирд┐рд╢реНрдЪрд┐рдд рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЕрдиреБрдордд рдлрд╝реАрд▓реНрдб

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдпреЗ

header Ethernet_h{
    bit<48>  dstAddr;
    bit<48>  srcAddr;
    bit<16>  etherType;
}

header IPv4_h{
    bit<4>  version;
    bit<4>  ihl;
    bit<8>  diffserv;
    bit<16>  totalLen;
    bit<16>  identification;
    bit<3>  flags;
    bit<13>  fragOffset;
    bit<8>  ttl;
    bit<8>  protocol;
    bit<16>  hdrChecksum;
    bit<32>  srcAddr;
    bit<32>  dstAddr;
    varbit<320>  options;
}

рдкрд╛рд░рд╕рд░реНрд╕ - рдЙрдирдХрд╛ рдХрд╛рдо рд╕реБрд░реНрдЦрд┐рдпреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд╛рд░реНрд╕рд░ рдЙрджрд╛рд╣рд░рдг рдорд╢реАрди рдХреА рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рдХреЗ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рд╕реЗ рджреЛ рдЕрдВрддрд┐рдо рдЕрд╡рд╕реНрдерд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░реЗрдЧрд╛:

P4 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛

parser MyParser(){
 state  start{transition parse_ethernet;}
 state  parse_ethernet{
    packet.extract(hdr.ethernet);
    transition select(hdr.ethernet.etherType){
        TYPE_IPV4: parse_ipv4;
        default: accept;
        }
    }тАж
}

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

рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдкреИрдХреЗрдЯ рдЕрдЧреНрд░реЗрд╖рдг рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рддрд┐рдпрд╛рдБ (рдкреНрд░рдмрдВрдзрди рд╕реНрддрд░ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд) рд╣реЛрддреА рд╣реИрдВ, рдореИрдЪ-рдПрдХреНрд╢рди рдЗрдХрд╛рдИ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИрдВ

рдкреИрдХреЗрдЯреЛрдВ рдХрд╛ рдорд┐рд▓рд╛рди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

  • рд╕рдЯреАрдХ рдорд┐рд▓рд╛рди
  • рд╕рдмрд╕реЗ рд▓рдВрдмрд╛ рдЙрдкрд╕рд░реНрдЧ рдорд┐рд▓рд╛рди (рдПрд▓рдкреАрдПрдо)
  • рдЯреНрд░рд┐рдкрд▓ рдорд┐рд▓рд╛рди (рдорд╛рд╕реНрдХрд┐рдВрдЧ)

table ipv4_lpm{
    reads{
        ipv4.dstAddr: lpm;
    } actions {
        forward();
    }
}

рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдХреЛрдб рдФрд░ рдбреЗрдЯрд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред рдбреЗрдЯрд╛ рдкреНрд░рдмрдВрдзрди рд╕реНрддрд░ (рдЬреИрд╕реЗ рдЖрдИрдкреА рдкрддреЗ/рдкреЛрд░реНрдЯ рдирдВрдмрд░) рд╕реЗ рдЖрддрд╛ рд╣реИред рдирд┐рд╢реНрдЪрд┐рдд, рд▓реВрдк-рдореБрдХреНрдд рдкреНрд░рд╛рдЗрдореЗрдЯрд┐рд╡реНрд╕ рдХреЛ рд╕реАрдзреЗ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрдиреБрдорд╛рдирд┐рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдХреЛрдИ рд▓реВрдк рдпрд╛ рд╕рд╢рд░реНрдд рдХрдерди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗред

action ipv4_forward(macAddr_t dstAddr, egressSpec_t port){
    standard_metadata.egress_spec = port;
    hdr.ethernet.srcAddr = hdr.ethernet.dstAddr;
    hdr.ethernet.dstAddr = dstAddr;
    hdr.ipv4.ttl = hdr.ipv4.ttl - 1;
}

рдореИрдЪ-рдПрдХреНрд╢рди рдореЙрдбреНрдпреВрд▓ тАФ рдЦреЛрдЬ рдХреБрдВрдЬреА рдмрдирд╛рдиреЗ, рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЦреЛрдЬрдиреЗ, рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рдиреЗ рдХреА рдХреНрд░рд┐рдпрд╛рдПрдВред

рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рдЪрд┐рддреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

P4 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛

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

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

extern register{
    register(bit<32> size);
    void read(out T result, in bit<32> index);
    void write(in bit<32> index, in T value);
}

extern Checksum16{
  Checksum16();    //constructor
  void clear();    //prepare unit for computation
  void update(in T data);    //add data to checksum
  void remove(in T data);  /remove data from existing checksum
  bit<16> get(); //get the checksum for the data added since last clear
}

╨Ь╨╡╤В╨░╨┤╨░╨╜╨╜╨╜╤Л╨╡ - рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рд╕реЗ рдЬреБрдбрд╝реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдБред

рдореЗрдЯрд╛рдбреЗрдЯрд╛ 2 рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ:

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

  рдЖрдВрддрд░рд┐рдХ рдореЗрдЯрд╛рдбреЗрдЯрд╛ - рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛
    рдЗрдирдкреБрдЯ рдкреЛрд░реНрдЯ, рдЖрдЙрдЯрдкреБрдЯ рдкреЛрд░реНрдЯ рдХреЛ рдпрд╣рд╛рдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
    рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдЬрдм рдкреИрдХреЗрдЯ рдХрддрд╛рд░рдмрджреНрдз рдерд╛, рдХрддрд╛рд░ рдХреА рдЧрд╣рд░рд╛рдИ
    рдорд▓реНрдЯреАрдХрд╛рд╕реНрдЯ рд╣реИрд╢ / рдорд▓реНрдЯреАрдХрд╛рд╕реНрдЯ рдХрддрд╛рд░
    рдкреИрдХреЗрдЬ рдкреНрд░рд╛рдердорд┐рдХрддрд╛, рдкреИрдХреЗрдЬ рдорд╣рддреНрд╡
    рдЖрдЙрдЯрдкреБрдЯ рдкреЛрд░реНрдЯ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ (рдЬреИрд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдХрддрд╛рд░)

P4 рдХрдВрдкрд╛рдЗрд▓рд░

P4 рдХрдВрдкрд╛рдЗрд▓рд░ (P4C) рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ:

  1. рдбреЗрдЯрд╛ рдкреНрд▓реЗрди рд░рдирдЯрд╛рдЗрдо
  2. рдбреЗрдЯрд╛ рдкреНрд▓реЗрди рдореЗрдВ рдорд╢реАрди рд╕реНрдерд┐рддрд┐ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ

P4 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛

P4 рднрд╛рд╖рд╛ рдореЗрдВ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕реНрд╡рд┐рдЪ рдХрд╛ рдЙрджрд╛рд╣рд░рдг

рд╕реНрд░реЛрдд рдХреЛрдб рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

p4lang/p4c-bm: bmv2 рдХреЗ рд▓рд┐рдП JSON рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рддрд╛ рд╣реИ
p4lang/bmv2: рдПрдХ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕реНрд╡рд┐рдЪ рдЬреЛ bmv2 рд╕рдВрд╕реНрдХрд░рдг JSON рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕рдордЭрддрд╛ рд╣реИ

рдпрд╣ рдЪрд┐рддреНрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрдХрд▓рди рдЖрд░реЗрдЦ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:

P4 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛

рддрд╛рд▓рд┐рдХрд╛рдУрдВ, рд░реАрдбрд┐рдВрдЧ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ, рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде рд╣реЗрд░рдлреЗрд░:

  • table_set_default <table name> <action name> <action parameters>
  • table_add <table name> <action name> <match fields> => <action
    parameters> [priority]
  • table_delete <table name> <entry handle>


рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕реНрд╡рд┐рдЪ рдПрдкреАрдЖрдИ рдХреЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ Simple_switch_CLI рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реИред

рдЖрдк рдЗрд╕реЗ рдФрд░ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

P4 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛

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

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

P4 рд╕рдореБрджрд╛рдп рдХрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рджрд╕реНрдп - рдХрдВрдкрдиреА рдХрд╛рд░рдХ рд╕рдореВрд╣.

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ