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

P4 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛
P4 рд╣реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдЖрд╣реЗ рдЬреА рдкреЕрдХреЗрдЯ рд░реВрдЯрд┐рдВрдЧ рдирд┐рдпрдорд╛рдВрдирд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗрд▓реА рдЖрд╣реЗ. C рдХрд┐рдВрд╡рд╛ Python рд╕рд╛рд░рдЦреНрдпрд╛ рд╕рд╛рдорд╛рдиреНрдп-рдЙрджреНрджреЗрд╢рд╛рдЪреНрдпрд╛ рднрд╛рд╖реЗрдЪреНрдпрд╛ рд╡рд┐рдкрд░реАрдд, P4 рд╣реА рдбреЛрдореЗрди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рд╖рд╛ рдЖрд╣реЗ рдЬреНрдпрд╛рдордзреНрдпреЗ рдиреЗрдЯрд╡рд░реНрдХ рд░рд╛рдЙрдЯрд┐рдВрдЧрд╕рд╛рдареА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЕрдиреЗрдХ рдбрд┐рдЭрд╛рдЗрди рдЖрд╣реЗрдд.

P4 рд╣реА рдореБрдХреНрдд рд╕реНрд░реЛрдд рднрд╛рд╖рд╛ рдЖрд╣реЗ рдЬреА P4 рднрд╛рд╖рд╛ рдХрдиреНрд╕реЛрд░реНрдЯрд┐рдпрдо рдирд╛рд╡рд╛рдЪреНрдпрд╛ рдирд╛-рдирдлрд╛ рд╕рдВрд╕реНрдереЗрджреНрд╡рд╛рд░реЗ рдкрд░рд╡рд╛рдирд╛рдХреГрдд рдЖрдгрд┐ рджреЗрдЦрд░реЗрдЦ рдХреЗрд▓реА рдЬрд╛рддреЗ. рд╣реЗ рдУрдкрди рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдлрд╛рдЙрдВрдбреЗрд╢рди (ONF) рдЖрдгрд┐ рд▓рд┐рдирдХреНрд╕ рдлрд╛рдЙрдВрдбреЗрд╢рди (LF) рджреНрд╡рд╛рд░реЗ рджреЗрдЦреАрд▓ рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗ, рдУрдкрди рд╕реЛрд░реНрд╕ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдкреНрд░рдХрд▓реНрдкрд╛рдВрд╕рд╛рдареА рджреЛрди рд╕рд░реНрд╡рд╛рдд рдореЛрдареНрдпрд╛ рдЫрддреНрд░реА рд╕рдВрд╕реНрдерд╛.
рд╣реА рднрд╛рд╖рд╛ рдореВрд│рддрдГ 2013 рдордзреНрдпреЗ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдд рдЖрд▓реА рд╣реЛрддреА рдЖрдгрд┐ "рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЗрдВрдбрд┐рдкреЗрдВрдбреЗрдВрдЯ, рдкреЕрдХреЗрдЯ рд░рд╛рдЙрдЯрд┐рдВрдЧ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ" рдпрд╛ рд╢реАрд░реНрд╖рдХрд╛рдЪреНрдпрд╛ 2014 рдЪреНрдпрд╛ SIGCOMM CCR рдкреЗрдкрд░рдордзреНрдпреЗ рд╡рд░реНрдгрди рдХрд░рдгреНрдпрд╛рдд рдЖрд▓реЗ рд╣реЛрддреЗ.

рддреНрдпрд╛рдЪреНрдпрд╛ рд╕реНрдерд╛рдкрдиреЗрдкрд╛рд╕реВрди, P4 рд╡реЗрдЧрд╛рдиреЗ рд╡рд╛рдврд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рд╡рд┐рдХрд╕рд┐рдд рдЭрд╛рд▓реЗ рдЖрд╣реЗ, рдиреЗрдЯрд╡рд░реНрдХ рдЕреЕрдбреЙрдкреНрдЯрд░, рд╕реНрд╡рд┐рдЪреЗрд╕ рдЖрдгрд┐ рд░рд╛рдЙрдЯрд░рд╕рд╣ рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдгрд╛рдВрджреНрд╡рд╛рд░реЗ рдкреЕрдХреЗрдЯреНрд╕рдЪреНрдпрд╛ рдкреНрд░рд╕рд╛рд░рдгрд╛рдЪреЗ рд╡рд░реНрдгрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреНрд╡рд░реАрдд рдПрдХ рдорд╛рдирдХ рдмрдирд▓реЗ рдЖрд╣реЗ.

тАЬSDN рдиреЗ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдЙрджреНрдпреЛрдЧрд╛рдЪрд╛ рдХрд╛рдпрд╛рдкрд╛рд▓рдЯ рдХреЗрд▓рд╛ рдЖрд╣реЗ, рдЖрдгрд┐ P4 рдиреЗ рд░рд╛рдЙрдЯрд┐рдВрдЧрдордзреНрдпреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдмрд┐рд▓рд┐рдЯреА рдЖрдгреВрди SDN рд▓рд╛ рдкреБрдвреАрд▓ рд╕реНрддрд░рд╛рд╡рд░ рдиреЗрд▓реЗ рдЖрд╣реЗ,тАЭ рдЕрд╕реЗ рдУрдкрди рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдлрд╛рдКрдВрдбреЗрд╢рдирдЪреЗ рдХрд╛рд░реНрдпрдХрд╛рд░реА рд╕рдВрдЪрд╛рд▓рдХ рдЧреБрд░реБ рдкрд░реБрд▓рдХрд░ рдореНрд╣рдгрд╛рд▓реЗ.

P4 рднрд╛рд╖рд╛ рдореВрд│рддрдГ Google, Intel, Microsoft Research, Berefoot, Princeton рдЖрдгрд┐ Stanford рдордзреАрд▓ рдЕрднрд┐рдпрдВрддреЗ рдЖрдгрд┐ рд╕рдВрд╢реЛрдзрдХрд╛рдВрдЪреНрдпрд╛ рдЧрдЯрд╛рдиреЗ рддрдпрд╛рд░ рдХреЗрд▓реА рд╣реЛрддреА. рдзреНрдпреЗрдп рд╕реЛрдкреЗ рд╣реЛрддреЗ: рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рд╕реЛрдкреА рднрд╛рд╖рд╛ рддрдпрд╛рд░ рдХрд░рд╛ рдЬреА рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдбреЗрд╡реНрд╣рд▓рдкрд░ рдПрдХрд╛ рджрд┐рд╡рд╕рд╛рдд рд╢рд┐рдХреВ рд╢рдХреЗрд▓ рдЖрдгрд┐ рдиреЗрдЯрд╡рд░реНрдХрд╡рд░ рдкреЕрдХреЗрдЯ рдХрд╕реЗ рдкрд╛рдард╡рд▓реЗ рдЬрд╛рддрд╛рдд рдпрд╛рдЪреЗ рдЕрдЪреВрдХ рд╡рд░реНрдгрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд╛.

рдЕрдЧрджреА рд╕реБрд░реБрд╡рд╛рддреАрдкрд╛рд╕реВрдирдЪ, P4 рдЪреА рд░рдЪрдирд╛ рд╕реНрд╡рддрдВрддреНрд░ рд▓рдХреНрд╖реНрдпрд╛рд╕рд╛рдареА рдХреЗрд▓реА рдЧреЗрд▓реА рд╣реЛрддреА (рдореНрд╣рдгрдЬреЗ P4 рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо ASIC, FPGAs, CPUs, NPUs рдЖрдгрд┐ GPUs рд╕рд╛рд░рдЦреНрдпрд╛ рд╡рд┐рд╡рд┐рдз рд▓рдХреНрд╖реНрдпрд╛рдВрд╡рд░ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ).

рднрд╛рд╖рд╛ рджреЗрдЦреАрд▓ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реНрд╡рддрдВрддреНрд░ рдЖрд╣реЗ (рдореНрд╣рдгрдЬреЗ, P4 рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд┐рджреНрдпрдорд╛рди рдорд╛рдирдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреЗ рд╡рд░реНрдгрди рдХрд░реВ рд╢рдХрддреЛ рдХрд┐рдВрд╡рд╛ рдирд╡реАрди рдХрд╕реНрдЯрдо рдЕреЕрдбреНрд░реЗрд╕рд┐рдВрдЧ рдореЛрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ).

рдЙрджреНрдпреЛрдЧрд╛рдд, P4 рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧрд╕рд╛рдареА рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ. рдХрджрд╛рдЪрд┐рдд рднрд╡рд┐рд╖реНрдпрд╛рдд рдЗрдВрдЯрд░рдиреЗрдЯ-RFC рдЖрдгрд┐ IEEE рдорд╛рдирдХрд╛рдВрдордзреНрдпреЗ P4 рддрдкрд╢реАрд▓ рджреЗрдЦреАрд▓ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЕрд╕рддреАрд▓.

P4 рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдЖрдгрд┐ рдирд┐рд╢реНрдЪрд┐рдд рдлрдВрдХреНрд╢рди рджреЛрдиреНрд╣реА рдЙрдкрдХрд░рдгрд╛рдВрд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдУрдкрди рд╕реЛрд░реНрд╕ SONiC рд╕реНрд╡рд┐рдЪ OS рджреНрд╡рд╛рд░реЗ рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд░реНтАНрдпрд╛ рд╕реНрд╡рд┐рдЪ рдЕреЕрдмреНрд╕реНрдЯреНрд░реЕрдХреНрд╢рди рдЗрдВрдЯрд░рдлреЗрд╕ (SAI) API рдордзреНрдпреЗ рд╕реНрд╡рд┐рдЪ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╡рд░реНрддрди рдЕрдЪреВрдХрдкрдгреЗ рд░реЗрдХреЙрд░реНрдб рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. P4 рдЪрд╛ рд╡рд╛рдкрд░ ONF рд╕реНрдЯреНрд░реЕрдЯрдо рдкреНрд░рдХрд▓реНрдкрд╛рдордзреНрдпреЗ рд╡рд┐рд╡рд┐рдз рдирд┐рд╢реНрдЪрд┐рдд рдЖрдгрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдЙрдкрдХрд░рдгрд╛рдВрдордзреНрдпреЗ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рд╡рд░реНрддрдирд╛рдЪреЗ рд╡рд░реНрдгрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рджреЗрдЦреАрд▓ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ.

рдкреНрд░рдердордЪ, рд╕реНрд╡рд┐рдЪ рдЖрдгрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдЕреЕрдбреЙрдкреНрдЯрд░рдЪреНрдпрд╛ рд╡рд░реНрддрдирд╛рдЪреЗ рд╡рд░реНрдгрди рдХреЗрд▓реНрдпрд╛рдиреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рддреИрдирд╛рддреАрдкреВрд░реНрд╡реА рд╕рдВрдкреВрд░реНрдг рдиреЗрдЯрд╡рд░реНрдХрдЪреЗ рдЕрдЪреВрдХ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдореЙрдбреЗрд▓ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рдорд┐рд│рддреЗ. рдореЛрдареЗ рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддреЗ рд╕рдВрдкреВрд░реНрдгрдкрдгреЗ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рд╡рд╛рдкрд░реВрди рдиреЗрдЯрд╡рд░реНрдХрдЪреА рдЪрд╛рдЪрдгреА рдЖрдгрд┐ рдбреАрдмрдЧ рдХрд░реВ рд╢рдХрддрд╛рдд, рдорд╣рд╛рдЧрдбреНрдпрд╛ рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рдШреЗрддрд╛ рд▓реЕрдмрдордзреНрдпреЗ рдЗрдВрдЯрд░рдСрдкрд░реЗрдмрд┐рд▓рд┐рдЯреА рдЪрд╛рдЪрдгреАрдЪрд╛ рд╡реЗрд│ рдЖрдгрд┐ рдЦрд░реНрдЪ рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рдХрдореА рдХрд░рддрд╛рдд.

P4 рд╡рд╛рдкрд░реВрди, рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдгреЗ рд╡рд┐рдХреНрд░реЗрддреЗ рд╕рд░реНрд╡ рдЙрддреНрдкрд╛рджрдирд╛рдВрдордзреНрдпреЗ рд╕рд╛рдорд╛рдиреНрдп рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░рд╛рдЙрдЯрд┐рдВрдЧ рд╡рд░реНрддрдирд╛рдЪреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░реВ рд╢рдХрддрд╛рдд, рдЪрд╛рдЪрдгреА рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛рдВрдЪрд╛ рдкреБрдирд░реНрд╡рд╛рдкрд░ рдХрд░реВ рд╢рдХрддрд╛рдд, рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рд╡рд┐рдХрд╛рд╕ рд╕реБрд▓рдн рдХрд░рддрд╛рдд рдЖрдгрд┐ рд╢реЗрд╡рдЯреА рдЗрдВрдЯрд░рдСрдкрд░реЗрдмрд┐рд▓рд┐рдЯреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛рдд.

рдЕрд░реНрдерд╛рдд, P4 рд╣реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рд╣рд┐рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рдЬреЗ рд░реВрдЯрд┐рдВрдЧрдЪреНрдпрд╛ рдкреВрд░реНрдгрдкрдгреЗ рдирд╡реАрди рдорд╛рд░реНрдЧрд╛рдВрдЪреЗ рд╡рд░реНрдгрди рдХрд░рддрд╛рдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░реНрд╕, рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЭ рдЖрдгрд┐ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рддрд╛ рдиреЗрдЯрд╡рд░реНрдХреНрд╕рдордзреНрдпреЗ рдЯреЗрд▓реАрдореЗрдЯреНрд░реА рдЖрдгрд┐ рдорд╛рдкрдирд╛рдВрд╕рд╛рдареА P4 рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рд╡рд░ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ.

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

рдбреЗрд╡реНрд╣рд▓рдкрд░ рд╕рдореБрджрд╛рдпрд╛рдиреЗ рдХреЛрдб рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯрдордзреНрдпреЗ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдпреЛрдЧрджрд╛рди рджрд┐рд▓реЗ рдЖрд╣реЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рдХрдВрдкрд╛рдЗрд▓рд░, рдкрд╛рдЗрдкрд▓рд╛рдЗрди, рд╡рд░реНрддрдгреВрдХ рдореЙрдбреЗрд▓, API, рдЪрд╛рдЪрдгреА рдлреНрд░реЗрдорд╡рд░реНрдХ, рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЖрдгрд┐ рдмрд░реЗрдЪ рдХрд╛рд╣реА рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ. Alibaba, AT&T, Barefoot, Cisco, Fox Networks, Google, Intel, IXIA, Juniper Networks, Mellanox, Microsoft, Netcope, Netronome, VMware, Xilinx рдЖрдгрд┐ ZTE рд╕рд╛рд░рдЦреНрдпрд╛ рдХрдВрдкрдиреНрдпрд╛рдВрдиреА рд╕рдорд░реНрдкрд┐рдд рд╡рд┐рдХрд╛рд╕рдХ рдЖрд╣реЗрдд; рдмреАрдпреВрдкреАрдЯреА, рдХреЙрд░реНрдиреЗрд▓, рд╣рд╛рд░реНрд╡рд░реНрдб, рдПрдордЖрдпрдЯреА, рдПрдирд╕реАрдЯреАрдпреВ, рдкреНрд░рд┐рдиреНрд╕реНрдЯрди, рд╕реНрдЯреЕрдирдлреЛрд░реНрдб, рдЯреЗрдХреНрдирд┐рдУрди, рд╕рд┐рдВрдШреБрдЖ, рдпреВрдорд╛рд╕ рдЖрдгрд┐ рдпреВрдПрд╕рдЖрдп рдпрд╛рд╕рд╣ рд╡рд┐рджреНрдпрд╛рдкреАрдард╛рдВрдордзреВрди; рдЖрдгрд┐ CORD, FD.io, OpenDaylight, ONOS, OvS, SAI рдЖрдгрд┐ Stratum рд╕рд╣ рдореБрдХреНрдд рд╕реНрд░реЛрдд рдкреНрд░рдХрд▓реНрдк P4 рд╣рд╛ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рд╕рдореБрджрд╛рдп рдкреНрд░рдХрд▓реНрдк рдЖрд╣реЗ рд╣реЗ рдЕрдзреЛрд░реЗрдЦрд┐рдд рдХрд░рддрд╛рдд.

P4 рднрд╛рд╖реЗрд╕рд╛рдареА рдирд┐рдпрдВрддреНрд░рдХрд╛рдВрдЪреА рдард░рд╛рд╡рд┐рдХ рдкрд┐рдвреА:

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

рдЕрд░реНрдЬ рд╕рдВрднрд╛рд╡рдирд╛

P4 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛
рднрд╛рд╖рд╛ рд╣реА рд░рд╛рдЙрдЯрд┐рдВрдЧ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рд╕рд╛рдареА рдмрдирд╡рд▓реЗрд▓реА рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрдгрд┐ рдбрд┐рдЭрд╛рдЗрди рдкрд░реНрдпрд╛рдпрд╛рдВрдЪреА рдпрд╛рджреА рд╕рд╛рдорд╛рдиреНрдп-рдЙрджреНрджреЗрд╢реАрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдВрдЪреНрдпрд╛ рддреБрд▓рдиреЗрдд рд╡реЗрдЧрд│реА рдЖрд╣реЗ. рднрд╛рд╖реЗрдЪреА рдореБрдЦреНрдп рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рдЕрд╢реА рдЖрд╣реЗрдд:

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

рд▓рдХреНрд╖реНрдп рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдкрд╛рд╕реВрди рд╕реНрд╡рд╛рддрдВрддреНрд░реНрдп

P4 рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗрд▓реЗ рдЖрд╣реЗрдд, рдореНрд╣рдгрдЬреЗ рддреЗ рд╕рд╛рдорд╛рдиреНрдп-рдЙрджреНрджреЗрд╢ рдкреНрд░реЛрд╕реЗрд╕рд░, FPGAs, рд╕рд┐рд╕реНрдЯрдо-рдСрди-рдЪрд┐рдкреНрд╕, рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрдгрд┐ ASIC рд╕рд╛рд░рдЦреНрдпрд╛ рд╡рд┐рд╡рд┐рдз рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЗрдВрдЬрд┐рдирд╕рд╛рдареА рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд. рдпрд╛ рд╡рд┐рд╡рд┐рдз рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдорд╢реАрдиреНрд╕ P4 рд▓рдХреНрд╖реНрдп рдореНрд╣рдгреВрди рдУрд│рдЦрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рд▓рдХреНрд╖реНрдпрд╛рд▓рд╛ P4 рд╕реНрддреНрд░реЛрдд рдХреЛрдб рд▓рдХреНрд╖реНрдп рд╕реНрд╡рд┐рдЪ рдореЙрдбреЗрд▓рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрдВрдкрд╛рдЗрд▓рд░рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕рддреЗ. рдХрдВрдкрд╛рдЗрд▓рд░ рд▓рдХреНрд╖реНрдп рдЙрдкрдХрд░рдг, рдмрд╛рд╣реНрдп рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдХрд┐рдВрд╡рд╛ рдЕрдЧрджреА рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡реЗрдордзреНрдпреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рдХрд╛рд░рдг P4 рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕рд╕рд╛рдареА рдЕрдиреЗрдХ рдореВрд│ рд▓рдХреНрд╖реНрдп рд╕рд╛рдзреНрдпрд╛ рдкреЕрдХреЗрдЯ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧрд╕рд╛рдареА рд╣реЛрддреЗ, "P4 рд▓рдХреНрд╖реНрдп" рдЕрдзрд┐рдХ рдЕрдЪреВрдХ рдЕрд╕рд▓реЗ рддрд░реАрд╣реА "P4 рд╕реНрд╡рд┐рдЪ" рд╣рд╛ рд╢рдмреНрдж рдРрдХрдгреЗ рдЦреВрдк рд╕рд╛рдорд╛рдиреНрдп рдЖрд╣реЗ.

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

P4 рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реНрд╡рддрдВрддреНрд░ рдЖрд╣реЗ. рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдХреА рднрд╛рд╖реЗрд▓рд╛ IP, рдЗрдерд░рдиреЗрдЯ, TCP, VxLAN рдХрд┐рдВрд╡рд╛ MPLS рд╕рд╛рд░рдЦреНрдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░реЛрдЯреЛрдХреЙрд▓рд╕рд╛рдареА рдореВрд│ рд╕рдорд░реНрдерди рдирд╛рд╣реА. рддреНрдпрд╛рдРрд╡рдЬреА, P4 рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реЗрдбрд░ рдлреЙрд░рдореЕрдЯреНрд╕ рдЖрдгрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдордордзреАрд▓ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреНрдпрд╛ рдлреАрд▓реНрдб рдирд╛рд╡рд╛рдВрдЪреЗ рд╡рд░реНрдгрди рдХрд░рддреЛ, рдЬреНрдпрд╛рдЪрд╛ рд╕рдВрдХрд▓рд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЖрдгрд┐ рд▓рдХреНрд╖реНрдп рдбрд┐рд╡реНрд╣рд╛рдЗрд╕рджреНрд╡рд╛рд░реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЖрдгрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗрд▓реА рдЬрд╛рддреЗ.

рдлреАрд▓реНрдб рдкреБрдирд░реНрд░рдЪрдирд╛рдХреНрд╖рдорддрд╛

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

рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреНрдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдЪрд╛рдЪреНрдпрд╛ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рдирд╛рдЪреНрдпрд╛ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рдирд▓рд╛ рдкреНрд░рддрд┐рдмрдВрдз рдХрд░рдгрд╛рд░реА рдХреЛрдгрддреАрд╣реА рднрд╛рд╖рд╛ рднрд╛рд╖реЗрдд рдирд╕рд▓реА рддрд░реА, рд╣реА рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рднрд╛рд╖рд╛ рд▓реЗрдЦрдХрд╛рд╕рд╛рдареА рдЕрджреГрд╢реНрдп рдЕрд╕рддрд╛рдд рдЖрдгрд┐ рд╢реЗрд╡рдЯреА рдкреНрд░рдгрд╛рд▓реА рдЖрдгрд┐ рдЙрджреНрджрд┐рд╖реНрдЯрд╛рдВрдЪреА рд▓рд╡рдЪрд┐рдХрддрд╛ рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреА рдкреБрдирд░реНрд░рдЪрдирд╛рдХреНрд╖рдорддрд╛ рдХрдореА рдХрд░реВ рд╢рдХрддрд╛рдд.

рднрд╛рд╖реЗрдЪреА рд╣реА рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рддрд┐рдЪреНрдпрд╛ рдирд┐рд░реНрдорд╛рддреНрдпрд╛рдВрдиреА рдиреЗрдЯрд╡рд░реНрдХ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░рдордзреНрдпреЗ рддрд┐рдЪреНрдпрд╛ рд╡реНрдпрд╛рдкрдХ рд╡рд╛рдкрд░рд╛рд╡рд░ рд▓рдХреНрд╖ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрди рдорд╛рдВрдбрд▓реА рд╣реЛрддреА.

рдмрд░реНтАНрдпрд╛рдЪ рдХрдВрдкрдиреНрдпрд╛рдВрдордзреНрдпреЗ рднрд╛рд╖рд╛ рдЖрдзреАрдкрд╛рд╕реВрдирдЪ рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддреЗ:

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

рдЪрд┐рдиреА рдХрдВрдкрдиреА Tencent рд╣реА рдЬрдЧрд╛рддреАрд▓ рд╕рд░реНрд╡рд╛рдд рдореЛрдареА рдЧреБрдВрддрд╡рдгреВрдХ рдХрдВрдкрдиреА рдЖрдгрд┐ рд╕рд░реНрд╡рд╛рдд рдореЛрдареНрдпрд╛ рдЙрджреНрдпрдо рднрд╛рдВрдбрд╡рд▓ рдХрдВрдкрдиреНрдпрд╛рдВрдкреИрдХреА рдПрдХ рдЖрд╣реЗ. Tencent рдЪреНрдпрд╛ рдЙрдкрдХрдВрдкрдиреНрдпрд╛, рдЪреАрди рдЖрдгрд┐ рдЬрдЧрднрд░рд╛рддреАрд▓ рдЗрддрд░ рджреЗрд╢рд╛рдВрдордзреНрдпреЗ, рд╡рд┐рд╡рд┐рдз рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗрд╡рд╛, рдХреГрддреНрд░рд┐рдо рдмреБрджреНрдзрд┐рдорддреНрддрд╛ рдЖрдгрд┐ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдордиреЛрд░рдВрдЬрди рдХреНрд╖реЗрддреНрд░рд╛рддреАрд▓ рдШрдбрд╛рдореЛрдбреА рдпрд╛рд╕рд╣ рдЙрдЪреНрдЪ-рддрдВрддреНрд░рдЬреНрдЮрд╛рди рд╡реНрдпрд╡рд╕рд╛рдпрд╛рдЪреНрдпрд╛ рд╡рд┐рд╡рд┐рдз рдХреНрд╖реЗрддреНрд░рд╛рдВрдордзреНрдпреЗ рддрдЬреНрдЮ рдЖрд╣реЗрдд.

P4 рдЖрдгрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдмрд▓ рд░рд╛рдЙрдЯрд┐рдВрдЧ рд╣реА рдкреНрд░рдЧрдд рддрдВрддреНрд░рдЬреНрдЮрд╛рдиреЗ рдЖрд╣реЗрдд рдЬреА рдХрдВрдкрдиреАрдЪреНрдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддрд╛рдд.

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

2) рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдХрдВрдкрдиреНрдпрд╛;

Goldman Sachs рдУрдкрди рд╕реЛрд░реНрд╕ рдХрдореНрдпреБрдирд┐рдЯреАрд╕реЛрдмрдд рдХрд╛рдо рдХрд░рдгреНрдпрд╛рдЪрд╛ рдЖрдгрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░рдордзреНрдпреЗ рдирд╛рд╡рд┐рдиреНрдп рдЖрдгрдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдХреНрд▓рд╛рдпрдВрдЯрд╕рд╛рдареА рдЙрддреНрддрдо рдЙрдкрд╛рдп рдкреНрд░рджрд╛рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдорд╛рди рдорд╛рдирдХреЗ рдЖрдгрд┐ рдЙрдкрд╛рдп рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдлрд╛рдпрджрд╛ рдШреЗрддреЗ.

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

рд╕рдВрдкреВрд░реНрдг рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдЙрджреНрдпреЛрдЧрд╛рд▓рд╛ P4 рд╕рд╛рд░рдЦреНрдпрд╛ рднрд╛рд╖реЗрдЪрд╛ рдлрд╛рдпрджрд╛ рд╣реЛрдИрд▓ рдЬреА рдЕрдирдиреНрдпрдкрдгреЗ рдлреЙрд░рд╡рд░реНрдбрд┐рдВрдЧ рд╡рд░реНрддрди рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ. Cisco рджреЗрдЦреАрд▓ рд╣реА рднрд╛рд╖рд╛ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдкрд▓реНрдпрд╛ рдЙрддреНрдкрд╛рджрдирд╛рдВрдЪреНрдпрд╛ рдУрд│реА рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╡рд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдареЗрд╡рддреЗ.

рдЬреНрдпреБрдирд┐рдкрд░ рдиреЗрдЯрд╡рд░реНрдХреНрд╕рдиреЗ рдЕрдиреЗрдХ рдЙрддреНрдкрд╛рджрдирд╛рдВрдордзреНрдпреЗ P4 рдЖрдгрд┐ P4 рд░рдирдЯрд╛рдЗрдо рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХреЗрд▓рд╛ рдЖрд╣реЗ рдЖрдгрд┐ рдЬреНрдпреБрдирд┐рдкрд░ рдПрдореНрдмреЗрдбреЗрдб рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрдгрд┐ рддреНрдпрд╛рдЪреНрдпрд╛ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдХреЛрдбрдордзреНрдпреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЕрдЯрд┐рдХ рдкреНрд░рд╡реЗрд╢ рдкреНрд░рджрд╛рди рдХрд░рддреЛ.

Ruijie Networks рд╣рд╛ P4 рдЪрд╛ рдЦрдВрдмреАрд░ рд╕рдорд░реНрдердХ рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рдореБрд│реЗ рдиреЗрдЯрд╡рд░реНрдХрд▓рд╛ рд╣реЛрдгрд╛рд░реЗ рдлрд╛рдпрджреЗ рдЖрд╣реЗрдд. P4 рд╕рд╣, рдХрдВрдкрдиреА рдЧреНрд░рд╛рд╣рдХрд╛рдВрдЪреНрдпрд╛ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реЗрдгреАрд╕рд╛рдареА рд╕рд░реНрд╡реЛрддреНрддрдо-рдЗрди-рдХреНрд▓рд╛рд╕ рд╕реЛрд▓реНрдпреВрд╢рдиреНрд╕ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддреЗ рдЖрдгрд┐ рд╡рд┐рддрд░рд┐рдд рдХрд░реВ рд╢рдХрддреЗ.

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

AT&T рд╣рд╛ P4 рдЪрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд▓рдВрдмрдХрд░реНрддрд╛ рд╣реЛрддрд╛, P4 рдЪрд╛ рд╡рд╛рдкрд░ рддреНрдпрд╛рд▓рд╛ рддреНрдпрд╛рдЪреНрдпрд╛ рдиреЗрдЯрд╡рд░реНрдХреНрд╕рдордзреНрдпреЗ рдкрд╣рд╛рдпрдЪреА рдЕрд╕рд▓реЗрд▓реА рд╡рд░реНрддрдгреВрдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рддреНрдпрд╛рдЪреНрдпрд╛ рдиреЗрдЯрд╡рд░реНрдХрд╡рд░ P4 рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдмрд▓ рдлреЙрд░рд╡рд░реНрдбрд┐рдВрдЧ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕реЗрд╕ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд░рдгреНрдпрд╛рдд рдЖрд▓рд╛ рд╣реЛрддрд╛.

рдбреНрдпреВрд╢ рдЯреЗрд▓рд┐рдХреЙрдордордзреНрдпреЗ, рдНрдХреНрд╕реЗрд╕ 4.0 рдкреНрд░реЛрдЧреНрд░рд╛рдордЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди рдХреА рдиреЗрдЯрд╡рд░реНрдХ рдлрдВрдХреНрд╢рдиреНрд╕рдЪреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рднрд╛рд╖рд╛ рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддреЗ.

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

рдиреЗрдЯрд╡рд░реНрдХ рд░рд╛рдЙрдЯрд┐рдВрдЧ рдкреНрд▓реЗрдирдордзреНрдпреЗ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдХреНрд╖рдорддрд╛ рд╡рд┐рддрд░реАрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рднрд╛рд╖реЗрдиреЗ рдмреЗрдЕрд░рдлреВрдЯрд▓рд╛ рдирд╡реАрди рдкреНрд░рддрд┐рдорд╛рди рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдХреЗрд▓реЗ.

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

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

VMware рдЕрд╕рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдареЗрд╡рддреЛ рдХреА P4 рдкреНрд░рдЪрдВрдб рдКрд░реНрдЬрд╛, рдирд╛рд╡реАрдиреНрдп рдЖрдгрд┐ рд╕рдореБрджрд╛рдп рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рдЬреЗ рдиреЗрдЯрд╡рд░реНрдХрдордзреНрдпреЗ рдЕрд░реНрдердкреВрд░реНрдг рдЖрдгрд┐ рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╡рд░реНрддрди рдШрдбрд╡реВрди рдЖрдгрддреЗ. VMware рд╕реБрд░реБрд╡рд╛рддреАрдкрд╛рд╕реВрдирдЪ рдпрд╛ рдЙрджреНрдпреЛрдЧ рдЪрд│рд╡рд│реАрдЪрд╛ рдПрдХ рднрд╛рдЧ рдЖрд╣реЗ, рдХрд╛рд░рдг рдирд╡реАрдирддреЗрдЪреА рдирд╡реАрди рд▓рд╛рдЯ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░-рдЖрдзрд╛рд░рд┐рдд рдкрдзреНрджрддреАрдВрджреНрд╡рд╛рд░реЗ рдЪрд╛рд▓рд╡рд┐рд▓реА рдЬрд╛рддреЗ рдЬреА рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛рдВрдЪреА рдХреНрд╖рдорддрд╛ рд╡рд╛рдврд╡рддреЗ рдЖрдгрд┐ рдирд╡реАрдирддрдо рдЙрддреНрдкрд╛рджрдирд╛рдВрдордзреНрдпреЗ рддреНрдпрд╛рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХрд░рддреЗ.

рдЕрд╢рд╛рдкреНрд░рдХрд╛рд░реЗ, P4 рд╣реА рдПрдХ рд▓рдХреНрд╖реНрдп-рд╕реНрд╡рддрдВрддреНрд░ рдЖрдгрд┐ рдкреНрд░реЛрдЯреЛрдХреЙрд▓-рд╕реНрд╡рддрдВрддреНрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдЖрд╣реЗ рдЬреА рдЙрджреНрдпреЛрдЧ рдЖрдгрд┐ рд╢реИрдХреНрд╖рдгрд┐рдХ рд╕рдВрд╕реНрдерд╛рдВрджреНрд╡рд╛рд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореНрд╣рдгреВрди рдкреЕрдХреЗрдЯ рд░рд╛рдЙрдЯрд┐рдВрдЧ рд╡рд░реНрддрди рдЕрджреНрд╡рд┐рддреАрдпрдкрдгреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддреЗ, рдЬреА рдпрд╛рдордзреВрди рдПрдХрд╛рдзрд┐рдХ рд▓рдХреНрд╖реНрдпрд╛рдВрд╕рд╛рдареА рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реА рдЬрд╛рдК рд╢рдХрддреЗ. рдЖрдЬ, рд▓рдХреНрд╖реНрдпрд╛рдВрдордзреНрдпреЗ рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рдЖрдгрд┐ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рд╕реНрд╡рд┐рдЪреЗрд╕, рд╣рд╛рдпрдкрд░рд╡рд╛рдЗрдЬрд░ рд╕реНрд╡рд┐рдЪреЗрд╕, NPUs, GPUs, FPGAs, SmartNICs рдЖрдгрд┐ ASICs рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗрдд.

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

рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреЗ

P4 рд╣рд╛ рдПрдХ рдЦреБрд▓рд╛ рдкреНрд░рдХрд▓реНрдк рдЖрд╣реЗ, рд╕рд░реНрд╡ рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рд╣рд┐рддреА рд╡реЗрдмрд╕рд╛рдЗрдЯрд╡рд░ рдЖрд╣реЗ P4.org

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

рдкреНрд▓рдЧрдЗрди P4 рд╕рдорд░реНрдердирд╛рд╕рд╣ Eclipse рд╕рд╛рдареА, рдкрд░рдВрддреБ рдЖрдореНрд╣реА рд╢рд┐рдлрд╛рд░рд╕ рдХрд░реВ рд╢рдХрддреЛ P4 рд╕реНрдЯреБрдбрд┐рдУ рдЕрдирд╡рд╛рдгреА рдкрд╛рдпрд╛рдкрд╛рд╕реВрди.

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;
        }
    }тАж
}

рд╕рд╛рд░рдгреНрдпрд╛ тАФ рдХреГрддреАрдВрд╕рд╣ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдХреА рдЬреЛрдбрдгрд╛рд░реА рдорд╢реАрди рд╕реНрдерд┐рддреА рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рд╛. рдХреНрд░рд┐рдпрд╛ тАФ рдкреЕрдХреЗрдЬ рдХрд╕реЗ рд╣рд╛рддрд╛рд│рд▓реЗ рдЬрд╛рд╡реЗ рдпрд╛рдЪреЗ рд╡рд░реНрдгрди.

рдЯреЗрдмрд▓рдордзреНрдпреЗ рдкреЕрдХреЗрдЯ рдлреЙрд░рд╡рд░реНрдбрд┐рдВрдЧрд╕рд╛рдареА рд░рд╛рдЬреНрдпреЗ (рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕реНрддрд░рд╛рд╡рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд) рдЕрд╕рддрд╛рдд, рдореЕрдЪ-рдНрдХреНрд╢рди рдпреБрдирд┐рдЯрдЪреЗ рд╡рд░реНрдгрди рдХрд░рддрд╛рдд

рдкреЕрдХреЗрдЯреНрд╕ рдпрд╛рджреНрд╡рд╛рд░реЗ рдЬреБрд│рддрд╛рдд:

  • рдЕрдЪреВрдХ рдЬреЛрдбреА
  • рд╕рд░реНрд╡рд╛рдд рд▓рд╛рдВрдм рдЙрдкрд╕рд░реНрдЧ рдЬреБрд│рдгреА (LPM)
  • рддрд┐рд╣реЗрд░реА рдЬреБрд│рдгреА (рдорд╛рд╕реНрдХрд┐рдВрдЧ)

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

рд╕рд░реНрд╡ рд╕рдВрднрд╛рд╡реНрдп рдХреНрд░рд┐рдпрд╛ рдЕрдЧреЛрджрд░ рдЯреЗрдмрд▓рдордзреНрдпреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реНрдпрд╛ рдкрд╛рд╣рд┐рдЬреЗрдд.

рдХреГрддреАрдВрдордзреНрдпреЗ рдХреЛрдб рдЖрдгрд┐ рдбреЗрдЯрд╛ рдЕрд╕рддреЛ. рдбреЗрдЯрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕реНрддрд░рд╛рд╡рд░реВрди рдпреЗрддреЛ (рдЙрджрд╛. IP рдкрддреНрддреЗ/рдкреЛрд░реНрдЯ рдХреНрд░рдорд╛рдВрдХ). рдХрд╛рд╣реА, рд▓реВрдк-рдлреНрд░реА рдкреНрд░рд┐рдорд┐рдЯрд┐рд╡реНрд╣ рдереЗрдЯ рдХреНрд░рд┐рдпреЗрдордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд, рдкрд░рдВрддреБ рд╕реВрдЪрдирд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдЕрдВрджрд╛рдЬреЗ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдореНрд╣рдгреВрди, рдХреНрд░рд┐рдпрд╛рдВрдордзреНрдпреЗ рдХреЛрдгрддреЗрд╣реА рд▓реВрдк рдХрд┐рдВрд╡рд╛ рд╕рд╢рд░реНрдд рд╡рд┐рдзрд╛рди рдЕрд╕реВ рд╢рдХрдд рдирд╛рд╣реАрдд.

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 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛

рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ тАФ рдЬреНрдпрд╛ рдХреНрд░рдорд╛рдиреЗ рдореЕрдЪ-рдНрдХреНрд╢рди рдореЙрдбреНрдпреБрд▓реНрд╕ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддрд╛рдд рддреЗ рджрд░реНрд╢рд╡рд┐рддреЗ. рд╣рд╛ рдПрдХ рдЕрддреНрдпрд╛рд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЖрд╣реЗ рдЬреЛ рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рддрд░реНрдХ рдЖрдгрд┐ рдЬреБрд│рдгреА-рдХреГрддреА рдХреНрд░рдо рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЛ. рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдирд┐рдпрдВрддреНрд░рдгрд╛рдЪреА рдкрд╛рддрд│реА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реВрди рд╕рд░реНрд╡ рд╡рд╕реНрддреВрдВрдирд╛ рдЬреЛрдбрддреЛ.

рдмрд╛рд╣реНрдп рд╡рд╕реНрддреВ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЖрдгрд┐ API рдЗрдВрдЯрд░рдлреЗрд╕рд╕рд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╕реНрддреВ рдЖрд╣реЗрдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЪреЗрдХрд╕рдо рдЧрдгрдирд╛, рд░рдЬрд┐рд╕реНрдЯрд░, рдХрд╛рдЙрдВрдЯрд░, рдХрд╛рдЙрдВрдЯрд░ рдЗ.

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. рдбреЗрдЯрд╛ рдкреНрд▓реЗрдирдордзреНрдпреЗ рдорд╢реАрди рд╕реНрдерд┐рддреА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА API

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>


рд╕реЛрд░реНрд╕ рдХреЛрдбрдордзреНрдпреЗ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рд╕реНрд╡рд┐рдЪ API рдЪреНрдпрд╛ рд╕реЛрдпреАрд╕реНрдХрд░ рд╡рд╛рдкрд░рд╛рд╕рд╛рдареА simple_switch_CLI рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЖрд╣реЗ.

рддреБрдореНрд╣реА рд╣реЗ рдЖрдгрд┐ рдЗрддрд░ рдЙрджрд╛рд╣рд░рдгреЗ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреВрди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реВ рд╢рдХрддрд╛.

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

PS рдпрд╛ рдЙрдиреНрд╣рд╛рд│реНрдпрд╛рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛, рд╣рд╛рдпрдкрд░рд╕реНрдХреЗрд▓ рдХреНрд▓рд╛рдЙрдб рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреНрдпрд╛ рдЧрд░рдЬрд╛ рддреНрд╡рд░реАрдд рдкреВрд░реНрдг рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░рдпрддреНрдирд╛рдд рдЗрдВрдЯреЗрд▓рдиреЗ рдмреЗрдЕрд░рдлреВрдЯ рдиреЗрдЯрд╡рд░реНрдХреНрд╕ рдШреЗрдгреНрдпрд╛рдЪреНрдпрд╛ рдХрд░рд╛рд░рд╛рд╡рд░ рд╕реНрд╡рд╛рдХреНрд╖рд░реА рдХреЗрд▓реА. рдирд╡реАрди рд╢реЗрдиреЙрдп (рдЗрдВрдЯреЗрд▓ рдХреЙрд░реНрдкреЛрд░реЗрд╢рдирдордзреАрд▓ рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░ рдЧреНрд░реБрдкрдЪреЗ рдХрд╛рд░реНрдпрдХрд╛рд░реА рдЙрдкрд╛рдзреНрдпрдХреНрд╖ рдЖрдгрд┐ рдорд╣рд╛рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ) рдпрд╛рдВрдиреА рдореНрд╣рдЯрд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ, рдпрд╛рдореБрд│реЗ рдЗрдВрдЯреЗрд▓рд▓рд╛ рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░рдЪреНрдпрд╛ рдЧреНрд░рд╛рд╣рдХрд╛рдВрд╕рд╛рдареА рдореЛрдард╛ рд╡рд░реНрдХрд▓реЛрдб рдЖрдгрд┐ рдЕрдзрд┐рдХ рд╕рдВрдзреА рдЙрдкрд▓рдмреНрдз рд╣реЛрддреАрд▓.

рдорд╛рдЭреНрдпрд╛ рд╡реИрдпрдХреНрддрд┐рдХ рдорддрд╛рдиреБрд╕рд╛рд░, рдЖрдореНрд╣реА рд╣реЗ рд╡рд┐рд╕рд░реВ рдирдпреЗ рдХреА рдЗрдВрдЯреЗрд▓ FPGA рдЪрд┐рдкреНрд╕рдЪреНрдпрд╛ рдЙрддреНрдкрд╛рджрдирд╛рдд рдЖрдШрд╛рдбреАрд╡рд░ рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рдд рдЙрддреНрдХреГрд╖реНрдЯ рдХреНрд╡рд╛рд░реНрдЯрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдЖрд╣реЗ. рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдХреА рдЖрдореНрд╣реА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░реВ рд╢рдХрддреЛ рдХреА рдЗрдВрдЯреЗрд▓рдЪреНрдпрд╛ рдЖрдЧрдордирд╛рдиреЗ, рдмреЗрдЕрд░рдлреВрдЯ рдХреЗрд╡рд│ рддреНрдпрд╛рдЪреНрдпрд╛ рдЙрддреНрдкрд╛рджрди рд▓рд╛рдЗрдирдЪрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдгрд╛рд░ рдирд╛рд╣реА, рддрд░ рдХреНрд╡рд╛рд░реНрдЯрд╕ рдЖрдгрд┐ P4 рд╕реНрдЯреБрдбрд┐рдУрд▓рд╛ рдЯреЙрдлрд┐рдиреЛ рдЖрдгрд┐ рдЯреЙрдлрд┐рдиреЛ 2 рд▓рд╛рдИрдирдордзреНрдпреЗ рдЧрдВрднреАрд░ рдЕрджреНрдпрддрдиреЗ рдЖрдгрд┐ рдЬреЛрдб рдорд┐рд│рддреАрд▓.

P4 рд╕рдореБрджрд╛рдпрд╛рдЪреЗ рдЕрдзрд┐рдХреГрдд рд╕рджрд╕реНрдп - рдХрдВрдкрдиреА рдШрдЯрдХ рдЧрдЯ.

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛