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

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

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

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

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