
P4 β Π΅ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ. ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ Π΅Π·ΠΈΡΠΈΡΠ΅ Ρ ΠΎΠ±ΡΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΡΠΎ C ΠΈΠ»ΠΈ Python, P4 Π΅ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ Π΅Π·ΠΈΠΊ Ρ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π·Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΎ ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅.
P4 β Π΅ Π΅Π·ΠΈΠΊ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄, Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠ°Π½ΠΎ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΎ ΠΎΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΡΠ΅Π»ΡΡΠ²Π΅Π½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ, Π½Π°ΡΠ΅ΡΠ΅Π½Π° P4 Language Consortium. Π’ΠΎΠΉ ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΎΡ Open Networking Foundation (ONF) ΠΈ Linux Foundation (LF) β Π΄Π²Π΅ ΠΎΡ Π½Π°ΠΉ-Π³ΠΎΠ»Π΅ΠΌΠΈΡΠ΅ ΠΎΠ±Π΅Π΄ΠΈΠ½ΠΈΡΠ΅Π»Π½ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡΠΈ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ Π² ΠΎΠ±Π»Π°ΡΡΡΠ° Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡΠ΅ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.
ΠΠ·ΠΈΠΊΡΡ Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ Π·Π° ΠΏΡΡΠ²ΠΈ ΠΏΡΡ ΠΏΡΠ΅Π· 2013 Π³ΠΎΠ΄ΠΈΠ½Π° ΠΈ Π΅ ΠΎΠΏΠΈΡΠ°Π½ ΠΏΡΠ΅Π· 2014 Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° SIGCOMM CCR Ρ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ΡΠΎ βΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈΡΠ΅, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ° Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈβ.
ΠΡ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ ΡΠΈ P4 Π΅ΠΊΡΠΏΠΎΠ½Π΅Π½ΡΠΈΠ°Π»Π½ΠΎ ΡΠ°ΡΡΠ΅ ΠΈ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π°, Π±ΡΡΠ·ΠΎ ΡΡΠ°Π²Π°ΠΉΠΊΠΈ ΡΡΠ°Π½Π΄Π°ΡΡ Π·Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΎΡ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ Π°Π΄Π°ΠΏΡΠ΅ΡΠΈ, ΠΊΠΎΠΌΡΡΠ°ΡΠΎΡΠΈ ΠΈ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΠΈ.
βSDN ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΠ° ΠΌΡΠ΅ΠΆΠΎΠ²Π°ΡΠ° ΠΈΠ½Π΄ΡΡΡΡΠΈΡ, Π° P4 ΠΈΠ·Π΄ΠΈΠ³Π° SDN Π½Π° Π½ΠΎΠ²ΠΎ Π½ΠΈΠ²ΠΎ, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°ΠΉΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½ΠΎΡΡ Π² ΠΎΠ±Π»Π°ΡΡΡΠ° Π½Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡΡΠ°β, ΠΊΠ°Π·Π° ΠΡΡΡ ΠΠ°ΡΡΠ»ΠΊΠ°Ρ, ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡ Π½Π° Open Networking Foundation.
ΠΠ·ΠΈΠΊΡΡ P4 Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ ΠΎΡ Π³ΡΡΠΏΠ° ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈ ΠΈ ΠΈΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΎΡ Google, Intel, Microsoft Research, Barefoot, Princeton ΠΈ Stanford. Π¦Π΅Π»ΡΠ° Π±Π΅ΡΠ΅ ΠΏΡΠΎΡΡΠ°: Π΄Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ Π»Π΅ΡΠ΅Π½ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π΅Π·ΠΈΠΊ, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ Π½Π° ΡΠΎΡΡΡΠ΅Ρ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΡΡΠΈ Π·Π° Π΅Π΄ΠΈΠ½ Π΄Π΅Π½ ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΡΠΎΡΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° Π½Π°ΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡΠΎ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Ρ ΠΏΡΠ΅Π· ΠΌΡΠ΅ΠΆΠ°ΡΠ°.
ΠΡ ΡΠ°ΠΌΠΎΡΠΎ Π½Π°ΡΠ°Π»ΠΎ P4 Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½ ΠΊΠ°ΡΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌ ΠΎΡ ΡΠ΅Π»ΡΠ° (Ρ.Π΅. ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°, Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° P4, ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π° Π±Π΅Π· ΠΏΡΠΎΠΌΡΠ½Π°, Π·Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ΅Π»ΠΈ, ΠΊΠ°ΡΠΎ ASIC, FPGA, CPU, NPU ΠΈ GPU).
Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° Π΅Π·ΠΈΠΊΡΡ Π΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌ ΠΎΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈΡΠ΅ (Ρ.Π΅. ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° P4 ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠΏΠΈΡΠ²Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ ΠΈΠ»ΠΈ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΈ ΡΠ΅ΠΆΠΈΠΌΠΈ Π½Π° Π°Π΄ΡΠ΅ΡΠΈΡΠ°Π½Π΅).
Π ΠΈΠ½Π΄ΡΡΡΡΠΈΡΡΠ° P4 ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°. ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π² Π±ΡΠ΄Π΅ΡΠ΅ Internet-RFC ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΡΠ΅ IEEE ΡΡΡΠΎ Π΄Π° Π²ΠΊΠ»ΡΡΠ²Π°Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° P4.
P4 ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΠΊΡΠΎ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠ΅ΠΌΠΈ, ΡΠ°ΠΊΠ° ΠΈ Π·Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π° Ρ ΡΠΈΠΊΡΠΈΡΠ°Π½Π° ΡΡΠ½ΠΊΡΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠΉ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΡΠΎΡΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΡΡΠ°ΡΠΎΡΠ½ΠΈΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ Π² API ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈΡΠ΅ Π½Π° Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡΡΠ° Π½Π° ΠΊΠΎΠΌΡΡΠ°ΡΠΎΡΠ° (SAI), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π° ΠΊΠΎΠΌΡΡΠ°ΡΠΎΡΠ° Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ SONiC. P4 ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΏΡΠΎΠ΅ΠΊΡΠ° ONF Stratum Π·Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΡΡΠ°ΡΠΈΡ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ°ΡΠΈΠΎΠ½Π°ΡΠ½ΠΈ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠ΅ΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΡΡΠ°ΡΠΎΡΠ° ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡΠ΅ Π°Π΄Π°ΠΏΡΠ΅ΡΠΈ Π·Π° ΠΏΡΡΠ²ΠΈ ΠΏΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΡΠ΅Π½ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΠΌΠΎΠ΄Π΅Π» Π½Π° ΡΡΠ»Π°ΡΠ° ΠΌΡΠ΅ΠΆΠ° ΠΏΡΠ΅Π΄ΠΈ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ΡΠΎ. ΠΠΎΠ»Π΅ΠΌΠΈ ΠΎΠ±Π»Π°ΡΠ½ΠΈ Π΄ΠΎΡΡΠ°Π²ΡΠΈΡΠΈ ΠΌΠΎΠ³Π°Ρ Π½Π°ΠΏΡΠ»Π½ΠΎ Π΄Π° ΡΠ΅ΡΡΠ²Π°Ρ ΠΈ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Ρ Π³ΡΠ΅ΡΠΊΠΈ Π² ΠΌΡΠ΅ΠΆΠ°ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠΎΡΡΡΠ΅Ρ, ΠΊΠΎΠ΅ΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ ΠΈ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅, Π±Π΅Π· Π΄Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΡΠΏΠΎ ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½Π΅.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ P4, Π΄ΠΎΡΡΠ°Π²ΡΠΈΡΠΈΡΠ΅ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΎ ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ°Π·ΡΠΈΡΠ°Ρ Π½Π° ΠΎΠ±ΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ Π²ΡΠ² Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅, ΠΎΠΏΡΠΎΡΡΡΠ²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠΎΡΡΡΠ΅Ρ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ, Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ°, ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ.
Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, P4 ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, ΠΎΠΏΠΈΡΠ²Π°ΡΠΈ Π½Π°ΠΏΡΠ»Π½ΠΎ Π½ΠΎΠ²ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈ Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, P4 Π΅ ΡΠΈΡΠΎΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π·Π° ΡΠ΅Π»Π΅ΠΌΠ΅ΡΡΠΈΡ ΠΈ ΠΈΠ·ΠΌΠ΅ΡΠ²Π°Π½ΠΈΡ Π² ΡΠ΅Π½ΡΡΠΎΠ²Π΅ Π·Π° Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΈ ΠΌΡΠ΅ΠΆΠΈ ΠΈ ΠΌΡΠ΅ΠΆΠΈ Π½Π° Π΄ΠΎΡΡΠ°Π²ΡΠΈΡΠΈ Π½Π° ΡΡΠ»ΡΠ³ΠΈ.
ΠΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠΊΠ°ΡΠ° ΠΎΠ±ΡΠ½ΠΎΡΡ ΡΡΡΠΎ Π΅ Π°ΠΊΡΠΈΠ²ΠΈΠ·ΠΈΡΠ°Π½Π°. ΠΡΠΊΠΎΠ»ΠΊΠΎ Π²ΠΎΠ΄Π΅ΡΠΈ Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡΠ½ΠΈ ΠΈΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠΊΠΈ Π³ΡΡΠΏΠΈ Π² ΠΎΠ±Π»Π°ΡΡΡΠ° Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Ρ Π° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΈ Π½ΠΎΠ²ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ P4, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ° Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ, ΠΊΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΠ°Π½ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ ΠΈ ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΠΊΠ»ΡΡ. Π‘ΡΠ·Π΄Π°Π²Π° ΡΠ΅ Π½ΠΎΠ²Π° ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ° Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅, ΠΈΠ½ΠΎΠ²Π°ΡΠΈΠΈΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Ρ ΠΎΡ Ρ Π°ΡΠ΄ΡΠ΅ΡΠ° ΠΊΡΠΌ ΡΠΎΡΡΡΠ΅ΡΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΠΉΠΊΠΈ ΠΏΠΎΡΠ²Π°ΡΠ° Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π΅ΠΎΡΠ°ΠΊΠ²Π°Π½ΠΈ, Π½ΠΎΠ²ΠΈ ΠΈ Π³Π΅Π½ΠΈΠ°Π»Π½ΠΈ ΠΈΠ΄Π΅ΠΈ.
ΠΠ±ΡΠ½ΠΎΡΡΡΠ° ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»Π΅Π½ ΠΏΡΠΈΠ½ΠΎΡ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄Π°, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈ, ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΡΠ΅ΡΠΊΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ, API ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ, ΡΠ΅ΡΡΠΎΠ²ΠΈ ΡΡΠ΅Π΄ΠΈ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎ. ΠΡΠ΅ΠΎΡΠ΄Π°ΠΉΠ½ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΠΈΠΌΠ° Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΊΠ°ΡΠΎ Alibaba, AT&T, Barefoot, Cisco, Fox Networks, Google, Intel, IXIA, Juniper Networks, Mellanox, Microsoft, Netcope, Netronome, VMware, Xilinx ΠΈ ZTE; ΠΎΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ BUPT, Cornell, Harvard, MIT, NCTU, Princeton, Stanford, Technion, Tsinghua, UMass ΠΈ USI; ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ CORD, FD.io, OpenDaylight, ONOS, OvS, SAI ΠΈ Stratum, ΠΏΠΎΠ΄ΡΠ΅ΡΡΠ°Π²Π°Ρ ΡΠ°ΠΊΡΠ°, ΡΠ΅ P4 Π΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΡΡΠ²Π΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ.
Π’ΠΈΠΏΠΈΡΠ½Π°ΡΠ° Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΈ Π·Π° Π΅Π·ΠΈΠΊΠ° P4:

ΠΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²ΠΈ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π΅Π·ΠΈΠΊΡΡ Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅, ΡΠΏΠΈΡΡΠΊΡΡ Ρ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΡΠΊΠΈ ΠΎΠΏΡΠΈΠΈ Π΅ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ Π΅Π·ΠΈΡΠΈ Π·Π° ΠΎΠ±ΡΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ Ρ
Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° ΡΠ°:
- ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΡΠ΅Π»Π΅Π²Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ;
- ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»(ΠΈ);
- Π Π΅ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡ Π½Π° ΠΏΠΎΠ»Π΅ΡΠ°ΡΠ°.
ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΡΠ΅Π»Π΅Π²Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ P4 ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ ΡΠ°ΠΊΠ°, ΡΠ΅ Π΄Π° Π½Π΅ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ°, Ρ.Π΅. ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΈ Π·Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ, ΠΊΠ°ΡΠΎ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ Π·Π° ΠΎΠ±ΡΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, FPGA, ΡΠΈΡΡΠ΅ΠΌΠΈ Π½Π° ΡΠΈΠΏ, ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ ΠΈ ASIC. Π’Π΅Π·ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ ΠΌΠ°ΡΠΈΠ½ΠΈ ΡΠ° ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈ ΠΊΠ°ΡΠΎ P4 ΡΠ΅Π»ΠΈ, ΠΈ Π·Π° Π²ΡΡΠΊΠ° ΡΠ΅Π» Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ, ΠΊΠΎΠΉΡΠΎ Π΄Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Π½Π° P4 Π² ΠΌΠΎΠ΄Π΅Π» Π½Π° ΡΠ΅Π»Π΅Π²ΠΈΡ ΠΊΠΎΠΌΡΡΠ°ΡΠΎΡ. ΠΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π²Π³ΡΠ°Π΄Π΅Π½ Π² ΡΠ΅Π»Π΅Π²ΠΎΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, Π²ΡΠ½ΡΠ½ΠΎ ΡΠΎΡΡΡΠ΅ΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π΄ΠΎΡΠΈ ΠΎΠ±Π»Π°ΡΠ½Π° ΡΡΠ»ΡΠ³Π°. Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΈΡΠ΅ ΡΠ΅Π»ΠΈ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ P4 ΡΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° ΠΏΡΠΎΡΡΠ° ΠΊΠΎΠΌΡΡΠ°ΡΠΈΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π° "ΠΊΠΎΠΌΡΡΠ°ΡΠΎΡ P4", Π΄ΠΎΡΠΈ Π°ΠΊΠΎ ΡΠΏΠΎΡΡΠ΅Π±Π°ΡΠ° Π½Π° "ΡΠ΅Π»Π΅Π½ Π½Π° P4" Π΅ ΠΏΠΎ-ΡΠΎΡΠ½Π°.
ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»(ΠΈ)
P4 Π΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌ ΠΎΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈΡΠ΅. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π΅Π·ΠΈΠΊΡΡ Π½ΡΠΌΠ° Π²Π³ΡΠ°Π΄Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ, ΠΊΠ°ΡΠΎ IP, Ethernet, TCP, VxLAN ΠΈΠ»ΠΈ MPLS. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ²Π°, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΡΡ Π½Π° P4 ΠΎΠΏΠΈΡΠ²Π° ΡΠΎΡΠΌΠ°ΡΠΈ Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΡ ΠΈ ΠΈΠΌΠ΅Π½Π° Π½Π° ΠΏΠΎΠ»Π΅ΡΠ° Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΠΎΡ ΡΠ²ΠΎΡ ΡΡΡΠ°Π½Π° ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠ°Ρ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΠΈ ΡΠ΅Π»Π΅Π²ΠΎΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ.
Π Π΅ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡ Π½Π° ΠΏΠΎΠ»Π΅ΡΠ°ΡΠ°
ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠ½Π°ΡΠ° Π΅Π·ΠΈΠΊΠΎΠ²Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΡΠ΅ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡ β ΡΠ΅Π»ΠΈΡΠ΅ Π½Π° P4 ΡΡΡΠ±Π²Π° Π΄Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ ΡΠ»Π΅Π΄ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°. Π’Π°Π·ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ Π΅ ΡΠ²ΡΡΠ·Π°Π½Π° Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ ΡΡΠ΅Π· ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ Ρ ΠΎΠ±ΡΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ, Π° Π½Π΅ Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°Π»Π½ΠΈ ΡΡ Π΅ΠΌΠΈ Ρ ΡΠΈΠΊΡΠΈΡΠ°Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ Π² Π΅Π·ΠΈΠΊΠ° Π½ΡΠΌΠ° Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π΄Π° ΠΏΡΠ΅ΡΠΈ Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ, ΡΠ΅Π·ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠ° Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠΈ Π·Π° Π°Π²ΡΠΎΡΠ° Π½Π° Π΅Π·ΠΈΠΊΠ° ΠΈ Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ½ΠΈΠΆΡΡ Π³ΡΠ²ΠΊΠ°Π²ΠΎΡΡΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΈ ΡΠ΅Π»ΠΈΡΠ΅ Ρ ΠΈ ΡΡΡ Π½Π°ΡΠ° ΡΠ΅ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡ.
Π’Π΅Π·ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ Π±ΡΡ Π° Π·Π°Π»ΠΎΠΆΠ΅Π½ΠΈ ΠΎΡ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΡΡΠ·Π΄Π°ΡΠ΅Π»ΠΈ Ρ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡ ΠΊΡΠΌ ΡΠΈΡΠΎΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² ΠΌΡΠ΅ΠΆΠΎΠ²Π°ΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°.
ΠΠ΅ΡΠ΅ ΡΠ΅Π³Π° Π΅Π·ΠΈΠΊΡΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ:
1) Π₯ΠΈΠΏΠ΅ΡΠΌΠ°ΡΡΠ΅Π»Π½ΠΈ ΡΠ΅Π½ΡΡΠΎΠ²Π΅ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ;
ΠΠΈΡΠ°ΠΉΡΠΊΠ°ΡΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Tencent Π΅ Π½Π°ΠΉ-Π³ΠΎΠ»ΡΠΌΠ°ΡΠ° ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΈΠΎΠ½Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Π² ΡΠ²Π΅ΡΠ° ΠΈ Π΅Π΄Π½Π° ΠΎΡ Π½Π°ΠΉ-Π³ΠΎΠ»Π΅ΠΌΠΈΡΠ΅ Π²Π΅Π½ΡΡΡΠ½ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. ΠΡΡΠ΅ΡΠ½ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π½Π° Tencent, ΠΊΠ°ΠΊΡΠΎ Π² ΡΠ°ΠΌΠΈΡ ΠΠΈΡΠ°ΠΉ, ΡΠ°ΠΊΠ° ΠΈ Π² Π΄ΡΡΠ³ΠΈ Π΄ΡΡΠΆΠ°Π²ΠΈ, ΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Ρ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π° Π²ΠΈΡΠΎΠΊΠΈΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ ΡΡΠ»ΡΠ³ΠΈ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π² ΠΎΠ±Π»Π°ΡΡΡΠ° Π½Π° ΠΈΠ·ΠΊΡΡΡΠ²Π΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅Π»Π΅ΠΊΡ ΠΈ Π΅Π»Π΅ΠΊΡΡΠΎΠ½Π½ΠΈ ΡΠ°Π·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ.
P4 ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅ ΡΠ° Π°Π²Π°Π½Π³Π°ΡΠ΄Π½ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΌΡΠ΅ΠΆΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ°.
ΠΠ°ΡΠΎ Π΅Π΄ΠΈΠ½ ΠΎΡ ΡΡΠ·Π΄Π°ΡΠ΅Π»ΠΈΡΠ΅, Google Ρ Π³ΠΎΡΠ΄ΠΎΡΡ ΠΎΡΠ±Π΅Π»ΡΠ·Π²Π° Π±ΡΡΠ·ΠΎΡΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° P4 Π² ΠΌΡΠ΅ΠΆΠΎΠ²Π°ΡΠ° ΠΈΠ½Π΄ΡΡΡΡΠΈΡ ΠΈ ΠΏΠΎ-ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ Π² ΡΡΠ΅ΡΠ°ΡΠ° Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΎΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° Π¦ΠΠ.
2) ΠΠΎΠΌΠ΅ΡΡΠΈΠ°Π»Π½ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ;
Goldman Sachs, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°ΡΠ° Π½Π° ΡΡΡΡΡΠ΄Π½ΠΈΡΠ΅ΡΡΠ²ΠΎΡΠΎ Ρ ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΎΠ±ΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠΈ ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π²Π΅ΡΠ΅ Π²Π½Π°ΡΡ ΠΈΠ½ΠΎΠ²Π°ΡΠΈΠΈ Π² ΠΌΡΠ΅ΠΆΠΎΠ²Π°ΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅.
3) ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ;
Π¦ΡΠ»Π°ΡΠ° ΠΌΡΠ΅ΠΆΠΎΠ²Π° ΠΈΠ½Π΄ΡΡΡΡΠΈΡ ΠΏΠ΅ΡΠ΅Π»ΠΈ ΠΎΡ ΡΠ°ΠΊΡΠ² Π΅Π·ΠΈΠΊ, ΠΊΠ°ΡΠΎ P4, ΠΊΠΎΠΉΡΠΎ Π½Π΅Π΄Π²ΡΡΠΌΠΈΡΠ»Π΅Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠ΅ΠΏΡΠ°ΡΠΊΠ°ΡΠ°. Π’Π°ΠΊΠΎΠ²Π° ΠΌΠ½Π΅Π½ΠΈΠ΅ ΡΠΏΠΎΠ΄Π΅Π»ΡΡ ΠΈ Π² Cisco, ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ²ΠΈΡΠ΅ ΡΠΈ Π»ΠΈΠ½ΠΈΠΈ ΠΊΡΠΌ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠΎΠ·ΠΈ Π΅Π·ΠΈΠΊ.
Juniper Networks Π΅ Π²ΠΊΠ»ΡΡΠΈΠ»Π° P4 ΠΈ P4 Runtime Π² ΡΠ΅Π΄ΠΈΡΠ° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ ΠΈ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΡΠΎΡΡΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π½Π° Juniper ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡ ΡΠΎΡΡΡΠ΅ΡΠ΅Π½ ΠΊΠΎΠ΄.
Ruijie Networks Π΅ Π°ΠΊΡΠΈΠ²Π΅Π½ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ½ΠΈΠΊ Π½Π° P4 ΠΈ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΡ Π½ΠΎΡΠΈ Π½Π° ΠΌΡΠ΅ΠΆΠΈΡΠ΅. Π‘ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° P4 ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π²Π° ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΡ Π½Π°ΠΉ-Π²ΠΈΡΠΎΠΊ ΠΊΠ»Π°Ρ Π·Π° ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ.
4) Π’Π΅Π»Π΅ΠΊΠΎΠΌΡΠ½ΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄ΠΎΡΡΠ°Π²ΡΠΈΡΠΈ;
AT&T Π±Π΅ΡΠ΅ Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΏΡΡΠ²ΠΈΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ½ΠΈΡΠΈ Π½Π° P4, Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΏΡΡΠ²ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π° P4 Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΈΡΠΊΠ°Ρ Π΄Π° Π²ΠΈΠ΄ΡΡ Π² ΠΌΡΠ΅ΠΆΠΈΡΠ΅, ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠ΅ΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π·Π° ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ P4 Π² ΡΠ²ΠΎΡΡΠ° ΠΌΡΠ΅ΠΆΠ°.
Π Deutsche Telekom Π΅Π·ΠΈΠΊΡΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° Access 4.0.
5) ΠΠΎΠ»ΡΠΏΡΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠΎΠ²Π° ΠΈΠ½Π΄ΡΡΡΡΠΈΡ;
ΠΠ·ΠΈΠΊΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²Π° ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ° Π·Π° ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠΎΡΡΡΠ΅ΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΡΠ΅ΡΠ°ΡΠ° Π½Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ° ΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Barefoot.
Xilinx Π±Π΅ΡΠ΅ Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π»ΠΈΡΠ΅ Π½Π° P4.org ΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΡΠ°ΡΡΠ²Π° Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π΅Π·ΠΈΠΊΠ° P4 ΠΈ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ ΠΌΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠ΅ΠΌΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° FPGA Π·Π° ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½Π΅ SmartNIC ΠΈ NFV, ΠΏΡΡΠΊΠ°ΠΉΠΊΠΈ Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΏΡΡΠ²ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈ P416 ΠΊΠ°ΡΠΎ ΡΠ°ΡΡ ΠΎΡ Π΄ΠΈΠ·Π°ΠΉΠ½Π° SDNet.
6) Π‘ΠΎΡΡΡΠ΅Ρ.
Π ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° VMware ΡΠΌΡΡΠ°Ρ, ΡΠ΅ P4 ΡΡΠ·Π΄Π°Π²Π° ΠΎΠ³ΡΠΎΠΌΠ½Π° Π΅Π½Π΅ΡΠ³ΠΈΡ, ΠΈΠ½ΠΎΠ²Π°ΡΠΈΠΈ ΠΈ ΠΎΠ±ΡΠ½ΠΎΡΡ, ΠΊΠΎΡΡΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΈ ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΌΡΠ΅ΠΆΠ°ΡΠ°. VMware Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π±Π΅ΡΠ΅ ΡΠ°ΡΡ ΠΎΡ ΡΠΎΠ²Π° ΠΈΠ½Π΄ΡΡΡΡΠΈΠ°Π»Π½ΠΎ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π½ΠΎΠ²Π°ΡΠ° Π²ΡΠ»Π½Π° ΠΈΠ½ΠΎΠ²Π°ΡΠΈΠΈ Π΅ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Π½Π° ΠΎΡ ΡΠΎΡΡΡΠ΅ΡΠ½ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π·ΡΠΈΡΡΠ²Π°Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° ΠΈ Π³ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ Π² Π½Π°ΠΉ-Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ.
Π’Π°ΠΊΠ° P4 Π΅ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌ ΠΎΡ ΡΠ΅Π»ΡΠ° ΠΈ ΠΎΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ ΠΈΠ½Π΄ΡΡΡΡΠΈΡΡΠ° ΠΈ Π½Π°ΡΡΠ½Π°ΡΠ° ΠΎΠ±ΡΠ½ΠΎΡΡ Π·Π° ΡΠΎΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΊΠ°ΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°, ΠΊΠΎΡΡΠΎ ΠΎΡ ΡΠ²ΠΎΡ ΡΡΡΠ°Π½Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π° Π·Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΅Π»ΠΈ. ΠΠ½Π΅Ρ ΡΠ΅Π»ΠΈΡΠ΅ Π²ΠΊΠ»ΡΡΠ²Π°Ρ Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΈ ΠΈ ΡΠΎΡΡΡΠ΅ΡΠ½ΠΈ ΠΊΠΎΠΌΡΡΠ°ΡΠΎΡΠΈ, Ρ ΠΈΠΏΠ΅ΡΠ²ΠΈΠ·ΠΎΡΠ½ΠΈ ΠΊΠΎΠΌΡΡΠ°ΡΠΎΡΠΈ, NPU, Π³ΡΠ°ΡΠΈΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ, FPGA, SmartNIC ΠΈ ASIC.
ΠΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ°Π·ΡΠΈΡΡΠ²Π°Ρ ΡΡΠ΅ΡΠΈΡΠ΅ Π½Π° Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Ρ Π±ΡΡΠ·Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π² ΠΌΡΠ΅ΠΆΠΎΠ²Π°ΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°.
ΠΡ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ
P4 Π΅ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ, ΡΡΠ»Π°ΡΠ° Π°ΠΊΡΡΠ°Π»Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° Π½Π° ΡΠ°ΠΉΡΠ°
ΠΡΡΠ·ΠΊΠ° ΠΊΡΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ , ΠΊΡΠ΄Π΅ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠΈ ΠΈ ΡΡΠ΅Π±Π½ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈ.
Π·Π° Eclipse Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° P4, Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ°ΠΌΠ΅ ΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Barefoot.

ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π½Π° ΡΠ΄ΡΠΎΡΠΎ:
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΡΡΠ° β Ρ ΡΡΡ Π½Π° ΠΏΠΎΠΌΠΎΡ ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ Π·Π°Π³Π»Π°Π²ΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°.
Π ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΡΡΠ° ΡΠ΅ Π·Π°Π΄Π°Π²Π°Ρ:
- ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎΡΠΌΠ°ΡΠΈ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΈ ΠΈΠΌΠ΅Π½Π° Π½Π° ΠΏΠΎΠ»Π΅ΡΠ° Π² Π·Π°Π³Π»Π°Π²ΠΈΡΡΠ°
- ΡΠΈΠΊΡΠΈΡΠ°Π½ΠΈ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈ ΠΏΠΎΠ»Π΅ΡΠ°
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ
Π·Π°Π³Π»Π°Π²ΠΈΠ΅ Ethernet_h{
Β Β Β Β Π±ΠΈΡdstAddr;
Β Β Β Β Π±ΠΈΡsrcAddr;
Β Β Β Β Π±ΠΈΡetherType;
}
Π·Π°Π³Π»Π°Π²ΠΈΠ΅ IPv4_h{
Β Β Β Β Π±ΠΈΡΠ²Π΅ΡΡΠΈΡ;
Β Β Β Β Π±ΠΈΡihl;
Β Β Β Β Π±ΠΈΡdiffserv;
Β Β Β Β Π±ΠΈΡtotalLen;
Β Β Β Β Π±ΠΈΡΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ;
Β Β Β Β Π±ΠΈΡΡΠ»Π°Π³ΠΎΠ²Π΅;
Β Β Β Β Π±ΠΈΡfragOffset;
Β Β Β Β Π±ΠΈΡttl;
Β Β Β Β Π±ΠΈΡΠΏΡΠΎΡΠΎΠΊΠΎΠ»;
Β Β Β Β Π±ΠΈΡhdrChecksum;
Β Β Β Β Π±ΠΈΡsrcAddr;
Β Β Β Β Π±ΠΈΡdstAddr;
Β Β Β Β varbitΠΎΠΏΡΠΈΠΈ;
}
ΠΠ°ΡΡΠ΅ΡΠΈ β ΡΡΡ Π½Π°ΡΠ° Π·Π°Π΄Π°ΡΠ° Π΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ°Ρ Π·Π°Π³Π»Π°Π²ΠΈΡΡΠ°.
Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΡ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΏΠ°ΡΡΠ΅Ρ ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ ΠΏΡΠ΅Ρ ΠΎΠ΄Π° Π½Π° ΠΊΡΠ°ΠΉΠ½ΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΠΌΠ°ΡΠΈΠ½Π°ΡΠ° ΠΎΡ Π΅Π΄Π½ΠΎ Π½Π°ΡΠ°Π»Π½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π² Π΅Π΄Π½ΠΎ ΠΎΡ Π΄Π²Π΅ΡΠ΅ ΠΊΡΠ°ΠΉΠ½ΠΈ:

ΠΏΠ°ΡΡΠ΅Ρ MyParser(){
Β ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ ΡΡΠ°ΡΡ{ΠΏΡΠ΅Ρ
ΠΎΠ΄ parse_ethernet;}
Β ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ parse_ethernet{
Β Β Β Β ΠΏΠ°ΠΊΠ΅Ρ.ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅(hdr.ethernet);
Β Β Β Β ΠΏΡΠ΅Ρ
ΠΎΠ΄ ΠΈΠ·Π±Π΅ΡΠΈ(hdr.ethernet.etherType){
Β Β Β Β Β Β Β Β TYPE_IPV4: parse_ipv4;
Β Β Β Β Β Β Β Β ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅: ΠΏΡΠΈΠ΅ΠΌΠ°ΠΉ;
Β Β Β Β Β Β Β Β }
Β Β Β Β }β¦
}
Π’Π°Π±Π»ΠΈΡΠΈ β ΡΡΠ΄ΡΡΠΆΠ°Ρ ΡΡΡΡΠΎΡΠ½ΠΈΡ Π½Π° ΠΌΠ°ΡΠΈΠ½Π°ΡΠ°, ΡΠ²ΡΡΠ·Π²Π°ΡΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅ Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ΅ΠΉΡΡΠ²ΠΈΡ β ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° Π½Π°ΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠ°.
Π’Π°Π±Π»ΠΈΡΠΈΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ°Ρ ΡΡΡΡΠΎΡΠ½ΠΈΡ (ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΡΠΊΠΎ Π½ΠΈΠ²ΠΎ) Π·Π° ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΎΠΏΠΈΡΠ²Π°Ρ Π΅Π΄ΠΈΠ½ΠΈΡΠ°ΡΠ° Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Match-Action
Π‘ΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΏΠΎ:
- Π’ΠΎΡΠ½ΠΎ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅
- ΠΠ°ΠΉ-Π΄ΡΠ»Π³ΠΎΡΠΎ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ ΠΏΡΠ΅ΡΠΈΠΊΡ (LPM)
- Π’ΡΠΎΠΉΠ½ΠΎ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ (ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅)
table ipv4_lpm{
Β Β Β Β ΡΠΈΡΠ°{
Β Β Β Β Β Β Β Β ipv4.dstAddr: lpm;
Β Β Β Β } actions {
Β Β Β Β Β Β Β Β ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅();
Β Β Β Β }
}
ΠΡΠΈΡΠΊΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅.
ΠΠ΅ΠΉΡΡΠ²ΠΈΡΡΠ° ΡΠ΅ ΡΡΡΡΠΎΡΡ ΠΎΡ ΠΊΠΎΠ΄ ΠΈ Π΄Π°Π½Π½ΠΈ. ΠΠ°Π½Π½ΠΈΡΠ΅ ΠΈΠ΄Π²Π°Ρ ΠΎΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΡΠΊΠΎΡΠΎ Π½ΠΈΠ²ΠΎ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, IP Π°Π΄ΡΠ΅ΡΠΈ / Π½ΠΎΠΌΠ΅ΡΠ° Π½Π° ΠΏΠΎΡΡΠΎΠ²Π΅). ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ, Π±Π΅Π·ΡΠΈΠΊΠ»ΠΎΠ²ΠΈ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ, Π½ΠΎ Π±ΡΠΎΡΡ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΡΠ° Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΡΠ΄ΡΡΠΆΠ°Ρ ΡΠΈΠΊΠ»ΠΈ ΠΈΠ»ΠΈ ΡΡΠ»ΠΎΠ²Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ.
Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ 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;
}
ΠΠΎΠ΄ΡΠ»ΠΈ Match-Action β Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΊΠ»ΡΡ Π·Π° ΡΡΡΡΠ΅Π½Π΅, ΡΡΡΡΠ΅Π½Π΅ Π² ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ°, ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
Π’ΠΈΠΏΠΈΡΠ΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΌΠΎΠ΄ΡΠ» Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° ΡΠΈΠ³ΡΡΠ°ΡΠ°:

ΠΠΎΡΠΎΠΊ Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ β ΡΠΊΠ°Π·Π²Π° ΡΠ΅Π΄Π° Π½Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ Match-Action. Π’ΠΎΠ²Π° Π΅ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°, ΠΊΠΎΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° Match-Action. ΠΠΎΡΠΎΠΊΡΡ Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ²ΡΡΠ·Π²Π° Π²ΡΠΈΡΠΊΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ, Π·Π°Π΄Π°Π²Π°ΠΉΠΊΠΈ Π½ΠΈΠ²ΠΎ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ».
ΠΡΠ½ΡΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ β ΡΠΎΠ²Π° ΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ Ρ ΡΡΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ Π½Π° API. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΈ ΡΡΠΌΠΈ, ΡΠ΅Π³ΠΈΡΡΡΠΈ, Π±ΡΠΎΡΡΠΈ ΠΈ Ρ.Π½.
Π²ΡΠ½ΡΠ΅Π½ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°ΠΉ{
Β Β Β Β ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°ΠΉ(bit ΡΠ°Π·ΠΌΠ΅Ρ);
Β Β Β Β ΠΏΡΠ°Π·Π΅Π½ ΡΠ΅ΡΠΈ(out T ΡΠ΅Π·ΡΠ»ΡΠ°Ρ, in bit ΠΈΠ½Π΄Π΅ΠΊΡ);
Β Β Β Β ΠΏΡΠ°Π·Π΅Π½ ΠΏΠΈΡΠΈ(in bit ΠΈΠ½Π΄Π΅ΠΊΡ, in T ΡΡΠΎΠΉΠ½ΠΎΡΡ);
}
Π²ΡΠ½ΡΠ΅Π½ ΠΠΎΠ½ΡΡΠΎΠ»Π½Π° ΡΡΠΌΠ°16{
Β Β ΠΠΎΠ½ΡΡΠΎΠ»Π½Π° ΡΡΠΌΠ°16();Β Β Β Β //ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ
Β Β ΠΏΡΠ°Π·Π΅Π½ ΠΈΠ·ΡΠΈΡΡΠΈ();Β Β Β Β //ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΠ°ΡΠ° Π·Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅
Β Β ΠΏΡΠ°Π·Π΅Π½ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΉ(Π² T Π΄Π°Π½Π½ΠΈ);Β Β Β Β //Π΄ΠΎΠ±Π°Π²ΠΈ Π΄Π°Π½Π½ΠΈ ΠΊΡΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΡΠΌΠ°
Β Β ΠΏΡΠ°Π·Π΅Π½ ΠΏΡΠ΅ΠΌΠ°Ρ
Π½ΠΈ(Π² T Π΄Π°Π½Π½ΠΈ);Β Β //ΠΏΡΠ΅ΠΌΠ°Ρ
Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠ°ΡΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π° ΡΡΠΌΠ°
Β Β Π±ΠΈΡΠΏΠΎΠ»ΡΡΠΈ(); //Π²Π·Π΅ΠΌΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΡΠΌΠ° Π·Π° Π΄Π°Π½Π½ΠΈΡΠ΅, Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ»Π΅Π΄ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΠΈΠ·ΡΠΈΡΡΠ²Π°Π½Π΅
}
ΠΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ β ΡΡΡΡΠΊΡΡΡΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Π²ΡΠ΅ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ.
ΠΠΌΠ° Π΄Π²Π° Π²ΠΈΠ΄Π° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ:
Β Β ΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ (ΠΏΡΠ°Π·Π½Π° ΡΡΡΡΠΊΡΡΡΠ° Π·Π° Π²ΡΠΈΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ)
Β Β Β Β ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΡΡΠΊ Π²ΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅
Β Β Β Β ΠΠΎΡΡΡΠΏΠ½ΠΎ ΠΏΡΠ΅Π· ΡΠ΅Π»ΠΈΡ pipeline
Β Β Β Β ΡΠ΄ΠΎΠ±Π½ΠΎ Π·Π° ΡΠΏΠΎΡΡΠ΅Π±Π° Π·Π° Π²Π°ΡΠΈΡΠ΅ ΡΠ΅Π»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Ρ
Π΅Ρ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ°
Β Β ΠΡΡΡΠ΅ΡΠ½ΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ β ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΡΠ΅ ΠΎΡ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ°
Β Β Β Β ΠΡ
ΠΎΠ΄Π½ΠΈΡΡ ΠΏΠΎΡΡ ΠΈ ΠΈΠ·Ρ
ΠΎΠ΄Π½ΠΈΡΡ ΠΏΠΎΡΡ ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΡΡΠΊ
Β Β Β Β ΠΡΠ΅ΠΌΠ΅Π²ΠΈ Π΅ΡΠΈΠΊΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΠ°ΠΊΠ΅ΡΡΡ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ Π² ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ°, Π΄ΡΠ»Π±ΠΎΡΠΈΠ½Π° Π½Π° ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ°
Β Β Β Β ΠΌΡΠ»ΡΠΈΠΊΠ°ΡΡ Ρ
Π΅Ρ / ΠΌΡΠ»ΡΠΈΠΊΠ°ΡΡ ΠΎΠΏΠ°ΡΠΊΠ°
Β Β Β Β ΠΡΠΈΠΎΡΠΈΡΠ΅Ρ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ°, Π²Π°ΠΆΠ½ΠΎΡΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ°
Β Β Β Β Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΠΈΠ·Ρ
ΠΎΠ΄Π½ΠΈΡ ΠΏΠΎΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·Ρ
ΠΎΠ΄Π½Π° ΠΎΠΏΠ°ΡΠΊΠ°)
ΠΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ P4
P4 ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ (P4C) Π³Π΅Π½Π΅ΡΠΈΡΠ°:
- ΠΡΠ΅ΠΌΠ΅Π²Π° ΡΡΠ΅Π΄Π° Π·Π° Π΄Π°Π½Π½ΠΈ
- API Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° ΠΌΠ°ΡΠΈΠ½Π°ΡΠ° Π² Π²ΡΠ΅ΠΌΠ΅Π²Π°ΡΠ° ΡΡΠ΅Π΄Π° Π·Π° Π΄Π°Π½Π½ΠΈ

ΠΡΠΈΠΌΠ΅Ρ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅Π½ ΡΡΠΈΡ Π½Π° Π΅Π·ΠΈΠΊΠ° P4
ΠΠ·Ρ ΠΎΠ΄Π½ΠΈΡΡ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΡΠ΅Π³Π»ΠΈ ΠΎΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.
p4lang/p4c-bm: ΡΡΠ·Π΄Π°Π²Π° JSON ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π·Π° bmv2
p4lang/bmv2: ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ½ΠΈΡΡ ΡΡΠΈΡ, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π·Π±ΠΈΡΠ° JSON ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π²Π΅ΡΡΠΈΡ bmv2
ΠΠ° ΡΡ Π΅ΠΌΠ°ΡΠ° Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°:

ΠΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΠΈ Ρ ΡΠ°Π±Π»ΠΈΡΠΈ, ΡΠ΅Π³ΠΈΡΡΡΠΈ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅, Π±ΡΠΎΡΡΠΈ:
- Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° <table name> <action name> <action parameters>
- Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠ° <table name> <action name> <match fields> => <Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅
parameters> [priority] - ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠ° <table name> <entry handle>
Π ΠΈΠ·Ρ
ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° simple_switch_CLI Π·Π° ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° API Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ½ΠΈΡ ΡΡΠΈΡ.
Π’ΠΎΠ·ΠΈ ΠΈ Π΄ΡΡΠ³ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡΠ΅ ΠΎΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.

P.S. Π Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° Π»ΡΡΠΎΡΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Intel ΠΏΠΎΠ΄ΠΏΠΈΡΠ° ΡΠΏΠΎΡΠ°Π·ΡΠΌΠ΅Π½ΠΈΠ΅ Π·Π° ΠΏΡΠΈΠ΄ΠΎΠ±ΠΈΠ²Π°Π½Π΅ Π½Π° Barefoot Networks, Ρ ΡΠ΅Π» Π±ΡΡΠ·ΠΎ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ²Π°Π½Π΅ Π½Π° Π½ΡΠΆΠ΄ΠΈΡΠ΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π° Hyperscale Cloud. ΠΠ°ΠΊΡΠΎ Π·Π°ΡΠ²ΠΈ Navin Shenoy (ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ Π²ΠΈΡΠ΅ΠΏΡΠ΅Π·ΠΈΠ΄Π΅Π½Ρ ΠΈ Π³Π΅Π½Π΅ΡΠ°Π»Π΅Π½ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ Π½Π° Π³ΡΡΠΏΠ°ΡΠ° Π·Π° ΡΠ΅Π½ΡΡΠΎΠ²Π΅ Π·Π° Π΄Π°Π½Π½ΠΈ Π² Intel Corporation) - ΡΠΎΠ²Π° ΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π½Π° Intel Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΏΠΎ-Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ Π½Π° Π¦ΠΠ.
ΠΠΈΡΠ½ΠΎ Π°Π· Π½Π΅ ΠΌΠΈΡΠ»Ρ, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°Π±ΡΠ°Π²ΡΠΌΠ΅, ΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Intel Π΅ Π»ΠΈΠ΄Π΅Ρ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ Π½Π° FPGA ΡΠΈΠΏΠΎΠ²Π΅ ΠΈ ΠΈΠΌΠ° ΠΎΡΠ»ΠΈΡΠ½Π° ΡΡΠ΅Π΄Π° Quartus. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡΠ°ΠΊΠ²Π°ΠΌΠ΅, ΡΠ΅ Ρ ΠΏΡΠΈΡΡΠΈΠ³Π°Π½Π΅ΡΠΎ Π² Intel, Barefoot Π½Π΅ ΡΠ°ΠΌΠΎ ΡΠ΅ ΡΠ°Π·ΡΠΈΡΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π°ΡΠ° ΡΠΈ Π»ΠΈΠ½ΠΈΡ, Π½ΠΎ ΠΈ Quartus ΠΈ P4 Studio ΠΎΡΠ°ΠΊΠ²Π°Ρ ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ Ρ Π½ΠΎΠ²Π°ΡΠ° ΡΠ΅ΡΠΈΡ Toffino ΠΈ Toffino 2.
ΠΡΠΈΡΠΈΠ°Π»Π΅Π½ ΡΡΠ°ΡΡΠ½ΠΈΠΊ Π² ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° P4 - ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° .
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
