Π―Π·Ρ‹ΠΊ программирования 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, and 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, Π³Π΄Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ исходныС ΠΊΠΎΠ΄Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈ ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹.

Плагин для Eclipse с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ P4, Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ P4 Studio ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Barefoot.

Π―Π·Ρ‹ΠΊ программирования P4

Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ основныС абстракции ядра:

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² β€” с ΠΈΡ… ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°.

Π’ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² задаСтся:

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

НапримСр

header Ethernet_h{
Β Β Β Β bit<48>Β Β dstAddr;
Β Β Β Β bit<48>Β Β srcAddr;
Β Β Β Β bit<16>Β Β etherType;
}

header IPv4_h{
Β Β Β Β bit<4>Β Β version;
Β Β Β Β bit<4>Β Β ihl;
Β Β Β Β bit<8>Β Β diffserv;
Β Β Β Β bit<16>Β Β totalLen;
Β Β Β Β bit<16>Β Β identification;
Β Β Β Β bit<3>Β Β flags;
Β Β Β Β bit<13>Β Β fragOffset;
Β Β Β Β bit<8>Β Β ttl;
Β Β Β Β bit<8>Β Β protocol;
Β Β Β Β bit<16>Β Β hdrChecksum;
Β Β Β Β bit<32>Β Β srcAddr;
Β Β Β Β bit<32>Β Β dstAddr;
Β Β Β Β varbit<320>Β Β options;
}

ΠŸΠ°Ρ€ΡΠ΅Ρ€Ρ‹ β€” ΠΈΡ… Π·Π°Π΄Π°Ρ‡Π° Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ парсСра ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ состояния ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ состояния Π² ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π΄Π²ΡƒΡ… ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ…:

Π―Π·Ρ‹ΠΊ программирования P4

parser MyParser(){
Β stateΒ Β start{transition parse_ethernet;}
Β stateΒ Β parse_ethernet{
Β Β Β Β packet.extract(hdr.ethernet);
Β Β Β Β transition select(hdr.ethernet.etherType){
Β Β Β Β Β Β Β Β TYPE_IPV4: parse_ipv4;
Β Β Β Β Β Β Β Β default: accept;
Β Β Β Β Β Β Β Β }
Β Β Β Β }…
}

Π’Π°Π±Π»ΠΈΡ†Ρ‹ β€” содСрТат состояния ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΊΠ»ΡŽΡ‡ΠΈ с дСйствиями. ДСйствия β€” описаниС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ слСдуСт ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ.

Π’Π°Π±Π»ΠΈΡ†Ρ‹ содСрТат состояния (ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π½Π° управлСнчСском ΡƒΡ€ΠΎΠ²Π½Π΅) для пСрСсылки ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ дСйствия Match-Action

БопоставлСниС ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² производится ΠΏΠΎ:

  • Π’ΠΎΡ‡Π½ΠΎΠΌΡƒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΡŽ
  • Π‘Π°ΠΌΠΎΠΌΡƒ Π΄Π»ΠΈΠ½Π½ΠΎΠΌΡƒ Match с прСфиксом (LPM)
  • Π’Ρ€ΠΎΠΉΠ½ΠΎΠΌΡƒ ΡΠΎΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ (ΠΌΠ°ΡΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ)

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

ВсС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ дСйствия Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… Π·Π°Ρ€Π°Π½Π΅Π΅.

ДСйствия состоят ΠΈΠ· ΠΊΠΎΠ΄Π° ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ управлСнчСского уровня (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, IP-адрСса / Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎΡ€Ρ‚ΠΎΠ²). ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅, Π±Π΅Π·Ρ†ΠΈΠΊΠ»ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½Ρ‹ нСпосрСдствСнно Π² дСйствии, Π½ΠΎ количСство ΠΊΠΎΠΌΠ°Π½Π΄ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ прСдсказуСмым. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ дСйствия Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈΠ»ΠΈ условныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².

action ipv4_forward(macAddr_t dstAddr, egressSpec_t port){
Β Β Β Β standard_metadata.egress_spec = port;
Β Β Β Β hdr.ethernet.srcAddr = hdr.ethernet.dstAddr;
Β Β Β Β hdr.ethernet.dstAddr = dstAddr;
Β Β Β Β hdr.ipv4.ttl = hdr.ipv4.ttl - 1;
}

ΠœΠΎΠ΄ΡƒΠ»ΠΈ Match-Action β€” дСйствия ΠΏΠΎ созданию ΠΊΠ»ΡŽΡ‡Π° поиска, поиска Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, выполнСния дСйствий.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ модуля ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½Π° рисункС:

Π―Π·Ρ‹ΠΊ программирования P4

ΠŸΠΎΡ‚ΠΎΠΊ управлСния β€” ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ порядок примСнСния ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Match-Action. Π­Ρ‚ΠΎ импСративная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π°Ρ Π»ΠΎΠ³ΠΈΠΊΡƒ высокого уровня ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Match-Action. ΠŸΠΎΡ‚ΠΎΠΊ управлСния связываСт всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, задавая ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ управлСния.

Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ β€” это спСцифичныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с Ρ‡Π΅Ρ‚ΠΊΠΎ прописанной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ ΠΈ интСрфСйсами API. НапримСр вычислСниС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы, рСгистры, счСтчики, счСтчики ΠΈ Ρ‚.Π΄.

extern register{
Β Β Β Β register(bit<32> size);
Β Β Β Β void read(out T result, in bit<32> index);
Β Β Β Β void write(in bit<32> index, in T value);
}

extern Checksum16{
Β Β Checksum16();Β Β Β Β //constructor
Β Β void clear();Β Β Β Β //prepare unit for computation
Β Β void update(in T data);Β Β Β Β //add data to checksum
Β Β void remove(in T data);Β Β /remove data from existing checksum
Β Β bit<16> get(); //get the checksum for the data added since last clear
}

ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ β€” структуры Π΄Π°Π½Π½Ρ‹Ρ…, связанныС с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ.

БущСствуСт 2 Π²ΠΈΠ΄Π° ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…:

Β Β ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ (пустая структура для всСх ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²)
Β Β Β Β Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ здСсь всС, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅
    Доступно Π½Π° всСм протяТСнии pipeline
Β Β Β Β ΡƒΠ΄ΠΎΠ±Π½ΠΎ для использования Π² своих цСлях, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для хранСния Ρ…ΡΡˆΠ° ΠΏΠ°ΠΊΠ΅Ρ‚Π°

Β Β Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ β€” обСспСчиваСтся Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ
Β Β Β Β Π’Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ€Ρ‚, Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ€Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ здСсь
Β Β Β Β ΠœΠ΅Ρ‚ΠΊΠ° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΠ°ΠΊΠ΅Ρ‚ Π±Ρ‹Π» поставлСн Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π³Π»ΡƒΠ±ΠΈΠ½Π° ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ
Β Β Β Β ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΊΠ°ΡΡ‚ Ρ…ΡΡˆ/ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΊΠ°ΡΡ‚ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ
Β Β Β Β ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Π°
    БпСцификация Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π²Ρ‹Π²ΠΎΠ΄Π°)

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

Π 4 компилятор (P4C) Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚:

  1. Data plane runtime
  2. API для управлСния состояниСм ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π² data plane

Π―Π·Ρ‹ΠΊ программирования P4

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ свитча Π½Π° языкС P4

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ с рСпозитория.

p4lang/p4c-bm: создаСт ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ JSON для bmv2
p4lang/bmv2: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ JSON вСрсии bmv2

На рисункС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° схСма компиляции ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

Π―Π·Ρ‹ΠΊ программирования P4

ΠœΠ°Π½ΠΈΠΏΡƒΠ»ΡΡ†ΠΈΠΈ с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, рСгистрами чтСния, счСтчика:

  • table_set_default <table name> <action name> <action parameters>
  • table_add <table name> <action name> <match fields> => <action
    parameters> [priority]
  • table_delete <table name> <entry handle>


Π’ исходных ΠΊΠΎΠ΄Π°Ρ… ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° simple_switch_CLI для ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ использования API ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ свитча.

Π­Ρ‚ΠΎΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

Π―Π·Ρ‹ΠΊ программирования P4

P.S. Π’ Π½Π°Ρ‡Π°Π»Π΅ Π»Π΅Ρ‚Π° компания Intel подписала соглашСниС ΠΎ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½ΠΈΠΈ Barefoot Networks, с Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈΡ†Π΅Π»ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ быстро ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ потрСбности ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Hyperscale Cloud. Как заявил Navin Shenoy(executive vice president and general manager of the Data Center Group at Intel Corporation) β€” это  ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Intel ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ бОльшиС Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ большС возмоТностСй для ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π¦ΠžΠ”ΠΎΠ².

По ΠΌΠΎΠ΅ΠΌΡƒ Π»ΠΈΡ‡Π½ΠΎΠΌΡƒ мнСнию Π½Π΅ стоит Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ компания Intel β€” Π»ΠΈΠ΄Π΅Ρ€ ΠΏΠΎ производству Ρ‡ΠΈΠΏΠΎΠ² FPGA ΠΈ Ρƒ Π½Π΅Π΅ Π΅ΡΡ‚ΡŒ отличная срСда Quartus. А Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ с ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΎΠΌ Π² Intel, Ρƒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Barefoot Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ пополнится производствСнная Π»ΠΈΠ½Π΅ΠΉΠΊΠ°, Π½ΠΎ ΠΈ Quartus, ΠΈ P4 Studio ΠΆΠ΄ΡƒΡ‚ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Π΅ обновлСния ΠΈ ΠΏΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π»ΠΈΠ½Π΅ΠΉΠΊΠΎΠΉ Toffino ΠΈ Toffino 2.

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ участник сообщСства P4 β€” компания Π€Π°ΠΊΡ‚ΠΎΡ€ Π³Ρ€ΡƒΠΏ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ