ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Π½ Π΅Π·ΠΈΠΊ 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, ΠŸΡ€ΠΈΠ½ΡΡ‚ΡŠΠ½ ΠΈ Π‘Ρ‚Π°Π½Ρ„ΠΎΡ€Π΄. Π¦Π΅Π»Ρ‚Π° бСшС проста: Π΄Π° сС създадС лСсСн Π·Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π΅Π·ΠΈΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡŠΡ‚ Π½Π° софтуСр Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΡƒΡ‡ΠΈ Π·Π° Π΅Π΄ΠΈΠ½ Π΄Π΅Π½ ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Ρ‚ΠΎΡ‡Π½ΠΎ описаниС Π½Π° Π½Π°Ρ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ сС ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°.

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

Π›ΠΈΠ½ΠΊ към рСпозитория https://github.com/p4lang, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ ΠΈ ΠΎΠ±ΡƒΡ‡ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈ.

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

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

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

ΠŸΠΎΡ‚ΠΎΠΊ Π½Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ β€” ΡƒΠΊΠ°Π·Π²Π° Ρ€Π΅Π΄Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ 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) Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°:

  1. ИзпълнСниС на данни
  2. API Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π° Π² ΠΈΠ·Ρ…ΠΎΠ΄Π½Π°Ρ‚Π° плоскост

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° програмния ΠΊΠΎΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€ Π½Π° Π΅Π·ΠΈΠΊΠ° P4

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

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

На ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° схСмата Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

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

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

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


Π’ ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π΅ прСдоставСна ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° simple_switch_CLI Π·Π° ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° API Π½Π° програмния ΠΊΠΎΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€.

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

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

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

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