ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Π½ Π΅Π·ΠΈΠΊ P4

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Π½ Π΅Π·ΠΈΠΊ P4
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

ΠŸΠ΅Ρ€ΡΠΏΠ΅ΠΊΡ‚ΠΈΠ²ΠΈ Π·Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Π½ Π΅Π·ΠΈΠΊ P4
Въй ΠΊΠ°Ρ‚ΠΎ Π΅Π·ΠΈΠΊΡŠΡ‚ Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π·Π° прилоТСния Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅, ΡΠΏΠΈΡΡŠΠΊΡŠΡ‚ с изисквания ΠΈ дизайнСрски ΠΎΠΏΡ†ΠΈΠΈ Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ Π² сравнСниС с Π΅Π·ΠΈΡ†ΠΈ Π·Π° ΠΎΠ±Ρ‰ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠžΡΠ½ΠΎΠ²Π½ΠΈΡ‚Π΅ характСристики Π½Π° Π΅Π·ΠΈΠΊΠ° са:

  1. НСзависимост ΠΎΡ‚ Ρ†Π΅Π»Π΅Π²Π°Ρ‚Π° рСализация;
  2. НСзависимост ΠΎΡ‚ използвания ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»(ΠΈ);
  3. РСконфигурируСмост Π½Π° ΠΏΠΎΠ»Π΅Ρ‚Π°Ρ‚Π°.

НСзависимост ΠΎΡ‚ Ρ†Π΅Π»Π΅Π²Π°Ρ‚Π° рСализация

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ 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 Π΅ ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, цялата Π°ΠΊΡ‚ΡƒΠ°Π»Π½Π° информация сС Π½Π°ΠΌΠΈΡ€Π° Π½Π° сайта P4.org

Π’Ρ€ΡŠΠ·ΠΊΠ° към Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ https://github.com/p4lang, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ изходния ΠΊΠΎΠ΄ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ ΠΈ ΡƒΡ‡Π΅Π±Π½ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈ.

Плugins Π·Π° Eclipse с ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° P4, Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π°ΠΌΠ΅ P4 Studio ΠΎΡ‚ компанията Barefoot.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Π½ Π΅Π·ΠΈΠΊ P4

НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ основнитС абстракции Π½Π° ядрото:

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° заглавията β€” с тяхна ΠΏΠΎΠΌΠΎΡ‰ сС опрСдСлят заглавията Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°.

Π’ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° заглавията сС Π·Π°Π΄Π°Π²Π°Ρ‚:

  • описаниС Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΈ ΠΈΠΌΠ΅Π½Π° Π½Π° ΠΏΠΎΠ»Π΅Ρ‚Π° Π² заглавията
  • фиксирани ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π°

НапримСр

Π·Π°Π³Π»Π°Π²ΠΈΠ΅ Ethernet_h{
Β Β Β Β Π±ΠΈΡ‚dstAddr;
Β Β Β Β Π±ΠΈΡ‚srcAddr;
Β Β Β Β Π±ΠΈΡ‚etherType;
}

Π·Π°Π³Π»Π°Π²ΠΈΠ΅ IPv4_h{
    битвСрсия;
Β Β Β Β Π±ΠΈΡ‚ihl;
Β Β Β Β Π±ΠΈΡ‚diffserv;
Β Β Β Β Π±ΠΈΡ‚totalLen;
    битидСнтификация;
Β Β Β Β Π±ΠΈΡ‚Ρ„Π»Π°Π³ΠΎΠ²Π΅;
Β Β Β Β Π±ΠΈΡ‚fragOffset;
Β Β Β Β Π±ΠΈΡ‚ttl;
Β Β Β Β Π±ΠΈΡ‚ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»;
Β Β Β Β Π±ΠΈΡ‚hdrChecksum;
Β Β Β Β Π±ΠΈΡ‚srcAddr;
Β Β Β Β Π±ΠΈΡ‚dstAddr;
Β Β Β Β varbitΠΎΠΏΡ†ΠΈΠΈ;
}

ΠŸΠ°Ρ€ΡΠ΅Ρ€ΠΈ β€” тяхната Π·Π°Π΄Π°Ρ‡Π° Π΅ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π°Ρ‚ заглавията.

БлСдващият ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° парсСр Ρ‰Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ ΠΏΡ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° ΠΊΡ€Π°ΠΉΠ½ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π° ΠΎΡ‚ Π΅Π΄Π½ΠΎ Π½Π°Ρ‡Π°Π»Π½ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π² Π΅Π΄Π½ΠΎ ΠΎΡ‚ Π΄Π²Π΅Ρ‚Π΅ ΠΊΡ€Π°ΠΉΠ½ΠΈ:

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Π½ Π΅Π·ΠΈΠΊ P4

парсСр 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 β€” дСйствия Π·Π° създаванС Π½Π° ΠΊΠ»ΡŽΡ‡ Π·Π° Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅, Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°, изпълнСниС Π½Π° дСйствия.

Π’ΠΈΠΏΠΈΡ‡Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΠΌΠΎΠ΄ΡƒΠ» Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚Π°:

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Π½ Π΅Π·ΠΈΠΊ P4

ΠŸΠΎΡ‚ΠΎΠΊ Π½Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ β€” ΡƒΠΊΠ°Π·Π²Π° Ρ€Π΅Π΄Π° Π½Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ Match-Action. Π’ΠΎΠ²Π° Π΅ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°, която опрСдСля Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π½Π° високо Π½ΠΈΠ²ΠΎ ΠΈ послСдоватСлността Π½Π° Match-Action. ΠŸΠΎΡ‚ΠΎΠΊΡŠΡ‚ Π½Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ²ΡŠΡ€Π·Π²Π° всички ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, Π·Π°Π΄Π°Π²Π°ΠΉΠΊΠΈ Π½ΠΈΠ²ΠΎ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ».

Π’ΡŠΠ½ΡˆΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ β€” Ρ‚ΠΎΠ²Π° са спСцифични ΠΎΠ±Π΅ΠΊΡ‚ΠΈ с ясно описана Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΈ интСрфСйси Π½Π° API. НапримСр, изчислСниС Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΈ суми, рСгистри, броячи ΠΈ Ρ‚.Π½.

външСн рСгистрирай{
    рСгистрирай(bit Ρ€Π°Π·ΠΌΠ΅Ρ€);
Β Β Β Β ΠΏΡ€Π°Π·Π΅Π½ Ρ‡Π΅Ρ‚ΠΈ(out T Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚, in bit индСкс);
Β Β Β Β ΠΏΡ€Π°Π·Π΅Π½ пиши(in bit индСкс, in T стойност);
}

външСн ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° сума16{
Β Β ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° сума16();Β Β Β Β //конструктор
Β Β ΠΏΡ€Π°Π·Π΅Π½ изчисти();Β Β Β Β //ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ‚Π° Π·Π° изчислСниС
Β Β ΠΏΡ€Π°Π·Π΅Π½ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°ΠΉ(Π² T Π΄Π°Π½Π½ΠΈ);Β Β Β Β //Π΄ΠΎΠ±Π°Π²ΠΈ Π΄Π°Π½Π½ΠΈ към ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π°Ρ‚Π° сума
Β Β ΠΏΡ€Π°Π·Π΅Π½ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½ΠΈ(Π² T Π΄Π°Π½Π½ΠΈ);Β Β //ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰Π°Ρ‚Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° сума
Β Β Π±ΠΈΡ‚ΠΏΠΎΠ»ΡƒΡ‡ΠΈ(); //Π²Π·Π΅ΠΌΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π°Ρ‚Π° сума Π·Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅, Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ слСд послСдното изчистванС
}

ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈ β€” структури ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с всСки ΠΏΠ°ΠΊΠ΅Ρ‚.

Има Π΄Π²Π° Π²ΠΈΠ΄Π° ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈ:

Β Β ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡΠΊΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈ (ΠΏΡ€Π°Π·Π½Π° структура Π·Π° всички ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ)
Β Β Β Β ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° поставитС Ρ‚ΡƒΠΊ всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ искатС
Β Β Β Β Π”ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎ ΠΏΡ€Π΅Π· цСлия pipeline
Β Β Β Β ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π·Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π·Π° Π²Π°ΡˆΠΈΡ‚Π΅ Ρ†Π΅Π»ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Ρ…Π΅Ρˆ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π°

Β Β Π’ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈ β€” осигурява сС ΠΎΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π°
    Входният ΠΏΠΎΡ€Ρ‚ ΠΈ изходният ΠΏΠΎΡ€Ρ‚ сС опрСдСлят Ρ‚ΡƒΠΊ
Β Β Β Β Π’Ρ€Π΅ΠΌΠ΅Π²ΠΈ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ΡŠΡ‚ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ Π² ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π°, Π΄ΡŠΠ»Π±ΠΎΡ‡ΠΈΠ½Π° Π½Π° ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π°
    мултикаст Ρ…Π΅Ρˆ / мултикаст опашка
Β Β Β Β ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ваТност Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π°
    БпСцификация Π½Π° изходния ΠΏΠΎΡ€Ρ‚ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·Ρ…ΠΎΠ΄Π½Π° опашка)

ΠšΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ P4

P4 ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ (P4C) Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°:

  1. Π’Ρ€Π΅ΠΌΠ΅Π²Π° срСда Π·Π° Π΄Π°Π½Π½ΠΈ
  2. API Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π° Π² Π²Ρ€Π΅ΠΌΠ΅Π²Π°Ρ‚Π° срСда Π·Π° Π΄Π°Π½Π½ΠΈ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Π½ Π΅Π·ΠΈΠΊ P4

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Π½ суич Π½Π° Π΅Π·ΠΈΠΊΠ° P4

Π˜Π·Ρ…ΠΎΠ΄Π½ΠΈΡΡ‚ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈ ΠΎΡ‚ рСпозитория.

p4lang/p4c-bm: създава JSON конфигурация Π·Π° bmv2
p4lang/bmv2: програмният суич, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π° JSON ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ вСрсия bmv2

На схСмата Π΅ прСдставСна компилацията Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Π½ Π΅Π·ΠΈΠΊ P4

ΠœΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ†ΠΈΠΈ с Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ, рСгистри Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅, броячи:

  • настройки ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° <table name> <action name> <action parameters>
  • добавянС Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° <table name> <action name> <match fields> => &lt;дСйствиС
    parameters> [priority]
  • ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° <table name> <entry handle>


Π’ изходния ΠΊΠΎΠ΄ Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° simple_switch_CLI Π·Π° ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° API Π½Π° програмния суич.

Π’ΠΎΠ·ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΡ‚Π΅ ΠΎΡ‚ рСпозитория.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Π½ Π΅Π·ΠΈΠΊ P4

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster