П4 програмски јазик

П4 програмски јазик
P4 Π΅ програмски јазик Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°Π½ Π΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° Ρ€ΡƒΡ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ. Π—Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΠ΄ Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚ Π·Π° ΠΎΠΏΡˆΡ‚Π° Π½Π°ΠΌΠ΅Π½Π° ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС C ΠΈΠ»ΠΈ Python, P4 Π΅ јазик спСцифичСн Π·Π° Π΄ΠΎΠΌΠ΅Π½ со Π³ΠΎΠ»Π΅ΠΌ Π±Ρ€ΠΎΡ˜ дизајни ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π·Π° ΠΌΡ€Π΅ΠΆΠ½ΠΎ Ρ€ΡƒΡ‚ΠΈΡ€Π°ΡšΠ΅.

P4 Π΅ јазик со ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Ρ†ΠΈΡ€Π°Π½ ΠΈ ΠΎΠ΄Ρ€ΠΆΡƒΠ²Π°Π½ ΠΎΠ΄ Π½Π΅ΠΏΡ€ΠΎΡ„ΠΈΡ‚Π½Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π° P4 Language Consortium. ΠŸΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½ Π΅ ΠΈ ΠΎΠ΄ Π€ΠΎΠ½Π΄Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΈ ΠΌΡ€Π΅ΠΆΠΈ (ONF) ΠΈ Π€ΠΎΠ½Π΄Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Linux (LF), Π΄Π²Π΅ ΠΎΠ΄ Π½Π°Ρ˜Π³ΠΎΠ»Π΅ΠΌΠΈΡ‚Π΅ Ρ‡Π°Π΄ΠΎΡ€ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π° ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ со ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄.
ΠˆΠ°Π·ΠΈΠΊΠΎΡ‚ ΠΏΡ€Π²ΠΈΡ‡Π½ΠΎ бСшС измислСн Π²ΠΎ 2013 Π³ΠΎΠ΄ΠΈΠ½Π° ΠΈ опишан Π²ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΡ‚ SIGCOMM CCR ΠΎΠ΄ 2014 Π³ΠΎΠ΄ΠΈΠ½Π° со наслов β€žΠΠ΅Π·Π°Π²ΠΈΡΠ΅Π½ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°ΡšΠ΅ Π½Π° процСсор Π·Π° Ρ€ΡƒΡ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈβ€œ.

Од своСто основањС, P4 Ρ€Π°ΡΡ‚Π΅ΡˆΠ΅ ΠΈ Π΅Π²ΠΎΠ»ΡƒΠΈΡ€Π°ΡˆΠ΅ Π΅ΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΡ˜Π°Π»Π½ΠΎ, Π±Ρ€Π·ΠΎ ΡΡ‚Π°Π½ΡƒΠ²Π°Ρ˜ΡœΠΈ стандард Π·Π° ΠΎΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° прСнос Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΎΠ΄ ΠΌΡ€Π΅ΠΆΠ½ΠΈ ΡƒΡ€Π΅Π΄ΠΈ, Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Ρ˜ΡœΠΈ ΠΌΡ€Π΅ΠΆΠ½ΠΈ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΈ, ΠΏΡ€Π΅ΠΊΠΈΠ½ΡƒΠ²Π°Ρ‡ΠΈ ΠΈ Ρ€ΡƒΡ‚Π΅Ρ€ΠΈ.

β€žSDN ја Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠΈΡ€Π°ΡˆΠ΅ ΠΌΡ€Π΅ΠΆΠ½Π° ΠΈΠ½Π΄ΡƒΡΡ‚Ρ€ΠΈΡ˜Π°, Π° P4 Π³ΠΎ однСсС SDN Π½Π° слСдното Π½ΠΈΠ²ΠΎ со Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ ќС ја Π΄ΠΎΠ²Π΅Π΄Π΅ програмабилноста Π²ΠΎ Ρ€ΡƒΡ‚ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎβ€œ, Ρ€Π΅Ρ‡Π΅ Π“ΡƒΡ€Ρƒ ΠŸΠ°Ρ€ΡƒΠ»ΠΊΠ°Ρ€, ΠΈΠ·Π²Ρ€ΡˆΠ΅Π½ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ Π½Π° Π€ΠΎΠ½Π΄Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΈ ΠΌΡ€Π΅ΠΆΠΈ.

ΠˆΠ°Π·ΠΈΠΊΠΎΡ‚ P4 ΠΏΡ€Π²ΠΈΡ‡Π½ΠΎ бСшС создадСн ΠΎΠ΄ Π³Ρ€ΡƒΠΏΠ° ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈ ΠΈ истраТувачи ΠΎΠ΄ Google, Intel, Microsoft Research, Barefoot, Princeton ΠΈ Stanford. Π¦Π΅Π»Ρ‚Π° бСшС Сдноставна: Π΄Π° сС создадС лСсСн Π·Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° јазик ΡˆΡ‚ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΎΡ‚ Π½Π° софтвСр ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ Π½Π°ΡƒΡ‡ΠΈ Π·Π° Π΅Π΄Π΅Π½ Π΄Π΅Π½ ΠΈ Π΄Π° Π³ΠΎ користи Π·Π° ΠΏΡ€Π΅Ρ†ΠΈΠ·Π½ΠΎ Π΄Π° опишС ΠΊΠ°ΠΊΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ сС ΠΈΡΠΏΡ€Π°ΡœΠ°Π°Ρ‚ Π½ΠΈΠ· ΠΌΡ€Π΅ΠΆΠΈΡ‚Π΅.

Од самиот ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊ, P4 бСшС Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°Π½ Π΄Π° Π±ΠΈΠ΄Π΅ Ρ†Π΅Π»Π½ΠΎ нСзависСн (Ρ‚.Π΅. ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° напишана Π²ΠΎ P4 ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π° Π½Π΅ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Ρ‚Π° Π·Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ†Π΅Π»ΠΈ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС ASIC, FPGA, CPU, NPU ΠΈ GPU).

ΠˆΠ°Π·ΠΈΠΊΠΎΡ‚ Π΅ исто Ρ‚Π°ΠΊΠ° нСзависСн ΠΎΠ΄ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΡ‚ (Ρ‚.Π΅., ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° P4 ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ опишС постоСчкитС стандардни ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ ΠΈΠ»ΠΈ Π΄Π° сС користи Π·Π° ΠΎΠ΄Ρ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½ΠΎΠ²ΠΈ сопствСни Ρ€Π΅ΠΆΠΈΠΌΠΈ Π½Π° Π°Π΄Ρ€Π΅ΡΠΈΡ€Π°ΡšΠ΅).

Π’ΠΎ ΠΈΠ½Π΄ΡƒΡΡ‚Ρ€ΠΈΡ˜Π°Ρ‚Π°, P4 сС користи Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°ΡšΠ΅ Π½Π° ΡƒΡ€Π΅Π΄ΠΈ. МоТСби Π²ΠΎ ΠΈΠ΄Π½ΠΈΠ½Π° стандардитС Internet-RFC ΠΈ IEEE ќС ја Π²ΠΊΠ»ΡƒΡ‡Π°Ρ‚ ΠΈ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° P4.

P4 ΠΌΠΎΠΆΠ΅ Π΄Π° сС користи ΠΈ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΠ±ΠΈΠ»Π½ΠΈ ΠΈ Π·Π° фиксни Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΈ ΡƒΡ€Π΅Π΄ΠΈ. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сС користи Π·Π° ΠΏΡ€Π΅Ρ†ΠΈΠ·Π½ΠΎ снимањС Π½Π° ΠΎΠ΄Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Ρ†Π΅Π²ΠΊΠΎΠ²ΠΎΠ΄ΠΎΡ‚ Π½Π° ΠΏΡ€Π΅ΠΊΠΈΠ½ΡƒΠ²Π°Ρ‡ΠΎΡ‚ Π²ΠΎ API-ΠΈΡ‚Π΅ Π½Π° Switch Abstraction Interface (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:

П4 програмски јазик

Π˜Π·Π³Π»Π΅Π΄ΠΈΡ‚Π΅ Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°

П4 програмски јазик
Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚ Π΅ Π½Π°ΠΌΠ΅Π½Π΅Ρ‚ Π·Π° Ρ€ΡƒΡ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, списокот Π½Π° Π±Π°Ρ€Π°ΡšΠ° ΠΈ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° дизајн Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ Π²ΠΎ спорСдба со програмскитС Ρ˜Π°Π·ΠΈΡ†ΠΈ Π·Π° ΠΎΠΏΡˆΡ‚Π° Π½Π°ΠΌΠ΅Π½Π°. Π“Π»Π°Π²Π½ΠΈΡ‚Π΅ карактСристики Π½Π° Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚ сС:

  1. НСзависност ΠΎΠ΄ Ρ†Π΅Π»Π½Π°Ρ‚Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°;
  2. НСзависност Π½Π° користСниот ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»(ΠΈ);
  3. Π Π΅ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π½Π° Ρ‚Π΅Ρ€Π΅Π½ΠΎΡ‚.

НСзависност ΠΎΠ΄ Ρ†Π΅Π»Π½Π°Ρ‚Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ P4 сС Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°Π½ΠΈ Π΄Π° Π±ΠΈΠ΄Π°Ρ‚ нСзависни ΠΎΠ΄ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°, ΡˆΡ‚ΠΎ Π·Π½Π°Ρ‡ΠΈ Π΄Π΅ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°Π°Ρ‚ Π·Π° ΠΌΠ½ΠΎΠ³Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²ΠΈ Π½Π° ΠΈΠ·Π²Ρ€ΡˆΠ½ΠΈ ΠΌΠΎΡ‚ΠΎΡ€ΠΈ, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС процСсори Π·Π° ΠΎΠΏΡˆΡ‚Π° Π½Π°ΠΌΠ΅Π½Π°, FPGA, систСм-Π½Π°-Ρ‡ΠΈΠΏΠΎΠ²ΠΈ, ΠΌΡ€Π΅ΠΆΠ½ΠΈ процСсори ΠΈ ASIC. ОвиС Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²ΠΈ Π½Π° машини сС ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈ ΠΊΠ°ΠΊΠΎ Ρ†Π΅Π»ΠΈ P4, ΠΈ сСкоја Ρ†Π΅Π» Π±Π°Ρ€Π° ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€ Π·Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π½Π° P4 Π²ΠΎ ΠΌΠΎΠ΄Π΅Π» Π½Π° Ρ†Π΅Π»Π΅Π½ ΠΏΡ€Π΅ΠΊΠΈΠ½ΡƒΠ²Π°Ρ‡. ΠšΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€ΠΎΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ Π²Π³Ρ€Π°Π΄Π΅Π½ Π²ΠΎ Ρ†Π΅Π»Π½ΠΈΠΎΡ‚ ΡƒΡ€Π΅Π΄, Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ΅Π½ софтвСр, ΠΏΠ° Π΄ΡƒΡ€ΠΈ ΠΈ Π²ΠΎ ΠΎΠ±Π»Π°ΠΊ услуга. Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ ΠΌΠ½ΠΎΠ³Ρƒ ΠΎΠ΄ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡ‚Π΅ Ρ†Π΅Π»ΠΈ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ P4 Π±Π΅Π° Π·Π° Сдноставно ΠΏΡ€Π΅Ρ„Ρ€Π»ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, ΠΌΠ½ΠΎΠ³Ρƒ Π΅ Π²ΠΎΠΎΠ±ΠΈΡ‡Π°Π΅Π½ΠΎ Π΄Π° сС ΡΠ»ΡƒΡˆΠ½Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΡ‚ β€žP4 switchβ€œ ΠΈΠ°ΠΊΠΎ β€žP4 targetβ€œ Π΅ ΠΏΠΎΠΏΡ€Π΅Ρ†ΠΈΠ·Π΅Π½.

НСзависност Π½Π° користСниот ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»(ΠΈ).

P4 Π΅ нСзависСн ΠΎΠ΄ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΡ‚. Ова Π·Π½Π°Ρ‡ΠΈ Π΄Π΅ΠΊΠ° Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚ Π½Π΅ΠΌΠ° ΠΌΠ°Ρ˜Ρ‡ΠΈΠ½ ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° Π²ΠΎΠΎΠ±ΠΈΡ‡Π°Π΅Π½ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС IP, Ethernet, TCP, VxLAN ΠΈΠ»ΠΈ MPLS. НамСсто Ρ‚ΠΎΠ°, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΎΡ‚ P4 Π³ΠΈ ΠΎΠΏΠΈΡˆΡƒΠ²Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ‚Π΅ Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ ΠΈ ΠΈΠΌΠΈΡšΠ°Ρ‚Π° Π½Π° ΠΏΠΎΠ»ΠΈΡšΠ°Ρ‚Π° Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π°, ΠΊΠΎΠΈ ΠΏΠ°ΠΊ сС Ρ‚ΠΎΠ»ΠΊΡƒΠ²Π°Π°Ρ‚ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΡƒΠ²Π°Π°Ρ‚ ΠΎΠ΄ ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° ΠΈ Ρ†Π΅Π»Π½ΠΈΠΎΡ‚ ΡƒΡ€Π΅Π΄.

Π Π΅ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π½Π° Ρ‚Π΅Ρ€Π΅Π½ΠΎΡ‚

НСзависноста Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΡ‚ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΎΡ‚ Π½Π° апстрактниот јазик ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°Π°Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° - Ρ†Π΅Π»ΠΈΡ‚Π΅ Π½Π° P4 Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° ја ΠΌΠ΅Π½ΡƒΠ²Π°Π°Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΊΠ°ΠΊΠΎ систСмот ќС сС распорСди. Оваа способност Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ сС ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π° со Ρ€ΡƒΡ‚ΠΈΡ€Π°ΡšΠ΅ ΠΏΡ€Π΅ΠΊΡƒ процСсори Π·Π° ΠΎΠΏΡˆΡ‚Π° Π½Π°ΠΌΠ΅Π½Π° ΠΈΠ»ΠΈ ΠΌΡ€Π΅ΠΆΠ½ΠΈ процСсори намСсто со фиксни Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½ΠΈ ΠΊΠΎΠ»Π°.

Иако Π½Π΅ΠΌΠ° Π½ΠΈΡˆΡ‚ΠΎ Π²ΠΎ Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚ ΡˆΡ‚ΠΎ Π±ΠΈ спрСчило ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° пСрформанситС Π½Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ сСт Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ, ΠΎΠ²ΠΈΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ сС Π½Π΅Π²ΠΈΠ΄Π»ΠΈΠ²ΠΈ Π·Π° Π°Π²Ρ‚ΠΎΡ€ΠΎΡ‚ Π½Π° Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚ ΠΈ Π½Π° ΠΊΡ€Π°Ρ˜ΠΎΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ја Π½Π°ΠΌΠ°Π»Π°Ρ‚ флСксибилноста Π½Π° систСмот ΠΈ Ρ†Π΅Π»ΠΈΡ‚Π΅ ΠΈ Π½ΠΈΠ²Π½Π°Ρ‚Π° рСконфигурабилност.

ОвиС карактСристики Π½Π° Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚ ΠΏΡ€Π²ΠΈΡ‡Π½ΠΎ Π±Π΅Π° поставСни ΠΎΠ΄ Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ ΠΊΡ€Π΅Π°Ρ‚ΠΎΡ€ΠΈ со фокус Π½Π° Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° ΡˆΠΈΡ€ΠΎΠΊΠ° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½Π°Ρ‚Π° инфраструктура.

ΠˆΠ°Π·ΠΈΠΊΠΎΡ‚ вСќС сС користи Π²ΠΎ ΠΌΠ½ΠΎΠ³Ρƒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ:

1) Ρ†Π΅Π½Ρ‚Ρ€ΠΈ Π·Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π·Π° хипСрскали;

ΠšΠΈΠ½Π΅ΡΠΊΠ°Ρ‚Π° компанија Tencent Π΅ Π½Π°Ρ˜Π³ΠΎΠ»Π΅ΠΌΠ°Ρ‚Π° инвСстициска компанија Π²ΠΎ свСтот ΠΈ Π΅Π΄Π½Π° ΠΎΠ΄ Π½Π°Ρ˜Π³ΠΎΠ»Π΅ΠΌΠΈΡ‚Π΅ Ρ„ΠΈΡ€ΠΌΠΈ Π·Π° Ρ€ΠΈΠ·ΠΈΡ‡Π΅Π½ ΠΊΠ°ΠΏΠΈΡ‚Π°Π». ΠŸΠΎΠ΄Ρ€ΡƒΠΆΠ½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Tencent, ΠΊΠ°ΠΊΠΎ Π²ΠΎ Кина, Ρ‚Π°ΠΊΠ° ΠΈ Π²ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ зСмји ΡˆΠΈΡ€ΡƒΠΌ свСтот, сС ΡΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π²ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ области Π½Π° Π²ΠΈΡΠΎΠΊΠΎΡ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΡˆΠΊΠΈΠΎΡ‚ бизнис, Π²ΠΊΠ»ΡƒΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈ Ρ€Π°Π·Π½ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-услуги, ΡΠ»ΡƒΡ‡ΡƒΠ²Π°ΡšΠ° Π²ΠΎ областа Π½Π° Π²Π΅ΡˆΡ‚Π°Ρ‡ΠΊΠ°Ρ‚Π° ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ†ΠΈΡ˜Π° ΠΈ СлСктронската Π·Π°Π±Π°Π²Π°.

P4 ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½ΠΎΡ‚ΠΎ Ρ€ΡƒΡ‚ΠΈΡ€Π°ΡšΠ΅ сС Π½Π°ΠΏΡ€Π΅Π΄Π½ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΊΠΎΠΈ сС користат Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½Π°Ρ‚Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ˜Π°Ρ‚Π°.

Како Π΅Π΄Π΅Π½ ΠΎΠ΄ ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅, Google со гордост Π³ΠΎ Π·Π°Π±Π΅Π»Π΅ΠΆΡƒΠ²Π° Π±Ρ€Π·ΠΎΡ‚ΠΎ ΡƒΡΠ²ΠΎΡ˜ΡƒΠ²Π°ΡšΠ΅ Π½Π° P4 Π²ΠΎ ΠΈΠ½Π΄ΡƒΡΡ‚Ρ€ΠΈΡ˜Π°Ρ‚Π° Π·Π° ΠΌΡ€Π΅ΠΆΠΈ ΠΈ особСно Π²ΠΎ архитСктонскиот дизајн Π½Π° Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ‚Π΅ Π·Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ.

2) ΠšΠΎΠΌΠ΅Ρ€Ρ†ΠΈΡ˜Π°Π»Π½ΠΈ Π΄Ρ€ΡƒΡˆΡ‚Π²Π°;

Π“ΠΎΠ»Π΄ΠΌΠ°Π½ Бакс ја користи соработката со Π·Π°Π΅Π΄Π½ΠΈΡ†Π°Ρ‚Π° со ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ ΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π° Π·Π°Π΅Π΄Π½ΠΈΡ‡ΠΊΠΈ стандарди ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ˜Π° Π·Π° Π΄Π° ΠΈΠ½ΠΎΠ²ΠΈΡ€Π° ΠΌΡ€Π΅ΠΆΠ½Π° инфраструктура ΠΈ Π΄Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ˜Π° Π·Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅.

3) ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ‚Π²ΠΎ;

Π¦Π΅Π»Π°Ρ‚Π° ΠΌΡ€Π΅ΠΆΠ½Π° ΠΈΠ½Π΄ΡƒΡΡ‚Ρ€ΠΈΡ˜Π° Π±ΠΈ ΠΈΠΌΠ°Π»Π° корист ΠΎΠ΄ јазик ΠΊΠ°ΠΊΠΎ P4 кој ΡƒΠ½ΠΈΠΊΠ°Ρ‚Π½ΠΎ Π³ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° ΠΎΠ΄Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π·Π° ΠΏΡ€Π΅ΠΏΡ€Π°ΡœΠ°ΡšΠ΅. Cisco исто Ρ‚Π°ΠΊΠ° Π²Π΅Ρ€ΡƒΠ²Π° Π²ΠΎ ΠΏΡ€Π΅Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅ Π½Π° своитС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΈ Π»ΠΈΠ½ΠΈΠΈ Π½Π° ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° овој јазик.

Juniper Networks Π²ΠΊΠ»ΡƒΡ‡ΠΈ P4 ΠΈ P4 Runtime Π²ΠΎ Π³ΠΎΠ»Π΅ΠΌ Π±Ρ€ΠΎΡ˜ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈ ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° програмски пристап Π΄ΠΎ Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈΠΎΡ‚ процСсор Juniper ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΠΎΡ‚ софтвСрски ΠΊΠΎΠ΄.

Ruijie Networks Π΅ силСн ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π°Ρ‡ Π½Π° P4 ΠΈ ΠΏΡ€ΠΈΠ΄ΠΎΠ±ΠΈΠ²ΠΊΠΈΡ‚Π΅ ΡˆΡ‚ΠΎ Π³ΠΈ носи Π½Π° ΠΌΡ€Π΅ΠΆΠΈΡ‚Π΅. Π‘ΠΎ P4, ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ˜Π°Ρ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π° ΠΈ испорачува Π½Π°Ρ˜Π΄ΠΎΠ±Ρ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ˜Π° Π²ΠΎ ΡΠ²ΠΎΡ˜Π°Ρ‚Π° класа Π΄ΠΎ ΡˆΠΈΡ€ΠΎΠΊ опсСг Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ.

4) ВСлСкомуникациски Π΄Π°Π²Π°Ρ‚Π΅Π»ΠΈ;

AT&T бСшС Ρ€Π°Π½ усвоСн Π½Π° P4, Π΅Π΄Π΅Π½ ΠΎΠ΄ ΠΏΡ€Π²ΠΈΡ‚Π΅ ΡˆΡ‚ΠΎ Π³ΠΎ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡˆΠ΅ P4 Π·Π° Π΄Π° Π³ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° ΠΎΠ΄Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ ΡˆΡ‚ΠΎ сакашС Π΄Π° Π³ΠΎ Π²ΠΈΠ΄ΠΈ Π²ΠΎ своитС ΠΌΡ€Π΅ΠΆΠΈ ΠΈ Π΄Π° користи P4 ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Π±ΠΈΠ»Π½ΠΈ ΡƒΡ€Π΅Π΄ΠΈ Π·Π° ΠΏΡ€Π΅ΠΏΡ€Π°ΡœΠ°ΡšΠ΅ Π½Π° ΡΠ²ΠΎΡ˜Π°Ρ‚Π° ΠΌΡ€Π΅ΠΆΠ°.

Π’ΠΎ Π”ΠΎΡ˜Ρ‡Π΅ Π’Π΅Π»Π΅ΠΊΠΎΠΌ, Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚ сС користи Π·Π° ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Π½Π° ΠΊΠ»ΡƒΡ‡Π½ΠΈΡ‚Π΅ ΠΌΡ€Π΅ΠΆΠ½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π΅Π» ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° Access 4.0.

5) ΠŸΠΎΠ»ΡƒΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΡ‡ΠΊΠ° ΠΈΠ½Π΄ΡƒΡΡ‚Ρ€ΠΈΡ˜Π°;

ΠˆΠ°Π·ΠΈΠΊΠΎΡ‚ ΠΌΡƒ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π½Π° Barefoot Π΄Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° Π½ΠΎΠ²Π° ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° Π·Π° Π΄ΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ софтвСрски способности Π½Π° ΠΌΡ€Π΅ΠΆΠ½Π°Ρ‚Π° Ρ€ΡƒΡ‚ΠΈΡ€Π°Ρ‡ΠΊΠ° Ρ€Π°ΠΌΠ½ΠΈΠ½Π°.

Xilinx бСшС Π΅Π΄Π΅Π½ ΠΎΠ΄ основачитС Π½Π° P4.org ΠΈ бСшС Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π²ΠΊΠ»ΡƒΡ‡Π΅Π½ Π²ΠΎ Ρ€Π°Π·Π²ΠΎΡ˜ΠΎΡ‚ Π½Π° Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚ P4 ΠΈ Π³ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°ΡˆΠ΅ Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΠ±ΠΈΠ»Π½ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° FPGA Π·Π° Ρ…Π°Ρ€Π΄Π²Π΅Ρ€ SmartNIC ΠΈ NFV, ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΡƒΠ²Π°Ρ˜ΡœΠΈ Π΅Π΄Π΅Π½ ΠΎΠ΄ ΠΏΡ€Π²ΠΈΡ‚Π΅ P416 ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π΅Π» ΠΎΠ΄ Π΄ΠΈΠ·Π°Ρ˜Π½ΠΎΡ‚ SDNet.

6) Π‘ΠΎΡ„Ρ‚Π²Π΅Ρ€.

VMware Π²Π΅Ρ€ΡƒΠ²Π° Π΄Π΅ΠΊΠ° P4 создава ΠΎΠ³Ρ€ΠΎΠΌΠ½Π° Π΅Π½Π΅Ρ€Π³ΠΈΡ˜Π°, ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈ ΠΈ Π·Π°Π΅Π΄Π½ΠΈΡ†Π° ΡˆΡ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΡƒΠ²Π° Π·Π½Π°Ρ‡Π°Ρ˜Π½Π° ΠΈ Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½Π° Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π° Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°. VMware Π΅ Π΄Π΅Π» ΠΎΠ΄ ΠΎΠ²Π° индустриско двиТСњС ΠΎΠ΄ самиот ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊ, бидСјќи Π½ΠΎΠ²ΠΈΠΎΡ‚ Π±Ρ€Π°Π½ Π½Π° ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈ Π΅ ΠΏΠΎΡ‚Ρ‚ΠΈΠΊΠ½Π°Ρ‚ ΠΎΠ΄ пристапи Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° софтвСр ΠΊΠΎΠΈ Π³ΠΈ ΠΏΡ€ΠΎΡˆΠΈΡ€ΡƒΠ²Π°Π°Ρ‚ инфраструктурнитС моТности ΠΈ Π³ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π°Ρ‚ Π²ΠΎ Π½Π°Ρ˜Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈ.

Π’Π°ΠΊΠ°, P4 Π΅ програмски јазик нСзависСн ΠΎΠ΄ Ρ†Π΅Π» ΠΈ нСзависСн ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» кој сС користи ΠΎΠ΄ ΠΈΠ½Π΄ΡƒΡΡ‚Ρ€ΠΈΡ˜Π°Ρ‚Π° ΠΈ акадСмската Π·Π°Π΅Π΄Π½ΠΈΡ†Π° Π·Π° ΡƒΠ½ΠΈΠΊΠ°Ρ‚Π½ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΎΠ΄Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π·Π° Ρ€ΡƒΡ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΊΠ°ΠΊΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°, која ΠΏΠ°ΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π° Π·Π° повСќС Ρ†Π΅Π»ΠΈ. ДСнСс, Ρ†Π΅Π»ΠΈΡ‚Π΅ Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Π°Ρ‚ хардвСрски ΠΈ софтвСрски ΠΏΡ€Π΅ΠΊΠΈΠ½ΡƒΠ²Π°Ρ‡ΠΈ, хипСрвизорски ΠΏΡ€Π΅ΠΊΠΈΠ½ΡƒΠ²Π°Ρ‡ΠΈ, NPU, GPU, FPGA, SmartNIC ΠΈ ASIC.

Π“Π»Π°Π²Π½ΠΈΡ‚Π΅ карактСристики Π½Π° Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π³ΠΎ ΠΏΡ€ΠΎΡˆΠΈΡ€ΡƒΠ²Π°Π°Ρ‚ опсСгот Π½Π° Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π° ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°Π°Ρ‚ Π½Π΅Π³ΠΎΠ²Π° Π±Ρ€Π·Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π²ΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΈΡ‚Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ.

Getting Started

P4 Π΅ ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ситС Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ сС Π½Π° Π²Π΅Π±-страницата P4.org

Врска Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ https://github.com/p4lang, ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ·Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ ΠΈ упатства.

ΠŸΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ Π·Π° Eclipse со ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° P4, Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΠΏΡ€Π΅ΠΏΠΎΡ€Π°Ρ‡Π°ΠΌΠ΅ Π‘Ρ‚ΡƒΠ΄ΠΈΠΎ P4 ΠΎΠ΄ Боси.

П4 програмски јазик

АјдС Π΄Π° Π³ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ Π³Π»Π°Π²Π½ΠΈΡ‚Π΅ апстракции Π½Π° ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚:

Π”Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°ΡšΠ΅ Π½Π° заглавија β€” со Π½ΠΈΠ²Π½Π° помош сС ΠΎΠ΄Ρ€Π΅Π΄ΡƒΠ²Π°Π°Ρ‚ Π·Π°Π³Π»Π°Π²ΠΈΡ˜Π°Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈΡ‚Π΅.

Π”Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° Π·Π°Π³Π»Π°Π²ΠΈΠ΅ ΠΎΠ΄Ρ€Π΅Π΄ΡƒΠ²Π°:

  • опис Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΈ имиња Π½Π° полиња Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ
  • фиксни ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΈ полиња

На ΠΏΡ€ΠΈΠΌΠ΅Ρ€

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;
}

ΠŸΠ°Ρ€ΡΠ΅Ρ€ΠΈ β€” Π½ΠΈΠ²Π½Π°Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° Π΅ Π΄Π° Π³ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π°Ρ‚ насловитС.

Π‘Π»Π΅Π΄Π½ΠΈΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ќС Π³ΠΎ ΠΎΠ΄Ρ€Π΅Π΄ΠΈ ΠΏΡ€Π΅ΠΌΠΈΠ½ΠΎΡ‚ Π½Π° ΠΊΠΎΠ½Π΅Ρ‡Π½Π°Ρ‚Π° ΡΠΎΡΡ‚ΠΎΡ˜Π±Π° Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π° ΠΎΠ΄ Π΅Π΄Π½Π° ΠΏΠΎΡ‡Π΅Ρ‚Π½Π° ΡΠΎΡΡ‚ΠΎΡ˜Π±Π° Π²ΠΎ Π΅Π΄Π½Π° ΠΎΠ΄ Π΄Π²Π΅Ρ‚Π΅ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΈ ΡΠΎΡΡ‚ΠΎΡ˜Π±ΠΈ:

П4 програмски јазик

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

ΠŸΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ сС совпаѓаат со:

  • Π’ΠΎΡ‡Π½ΠΎ ΡΠΎΠ²ΠΏΠ°Ρ“Π°ΡšΠ΅
  • Најдолго ΡΠΎΠ²ΠΏΠ°Ρ“Π°ΡšΠ΅ со прСфикс (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 ΠΌΠΎΠ΄ΡƒΠ»ΠΈ β€” Π΄Π΅Ρ˜ΡΡ‚Π²Π° Π·Π° ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ ΠΊΠ»ΡƒΡ‡ Π·Π° ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°ΡšΠ΅, ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ Π²ΠΎ Ρ‚Π°Π±Π΅Π»Π°, ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π΄Π΅Ρ˜ΡΡ‚Π²Π°.

Π’ΠΈΠΏΠΈΡ‡Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° ΠΌΠΎΠ΄ΡƒΠ» Π΅ ​​прикаТан Π½Π° сликата:

П4 програмски јазик

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Ρ˜Ρ‚Π΅ Π³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΡ‚ β€” Π³ΠΎ ΠΎΠ·Π½Π°Ρ‡ΡƒΠ²Π° рСдослСдот ΠΏΠΎ кој сС користат ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ 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 Ρ‚ΠΈΠΏΠ° Π½Π° ΠΌΠ΅Ρ‚Π°ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ:

  ΠŸΡ€ΠΈΠ»Π°Π³ΠΎΠ΄Π΅Π½ΠΈ ΠΌΠ΅Ρ‚Π°ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ (ΠΏΡ€Π°Π·Π½Π° структура Π·Π° ситС ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ)
    ΠžΠ²Π΄Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ставитС ΡˆΡ‚ΠΎ сакатС
    Π”остапно Π½ΠΈΠ· Ρ†Π΅Π»ΠΈΠΎΡ‚ гасовод
    ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ Π·Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π·Π° ваши Ρ†Π΅Π»ΠΈ, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Ρ…Π°Ρˆ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ

  Π’Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½ΠΈ ΠΌΠ΅Ρ‚Π°ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ - ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½ΠΈ ΠΎΠ΄ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π°
    Π’Π»Π΅Π·Π½Π°Ρ‚Π° ΠΏΠΎΡ€Ρ‚Π°, ΠΈΠ·Π»Π΅Π·Π½Π°Ρ‚Π° ΠΏΠΎΡ€Ρ‚Π° сС Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ ΠΎΠ²Π΄Π΅
    Π’рСмСнски ΠΏΠ΅Ρ‡Π°Ρ‚ ΠΊΠΎΠ³Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚ бСшС Π²ΠΎ Ρ€Π΅Π΄, Π΄Π»Π°Π±ΠΎΡ‡ΠΈΠ½Π° Π½Π° Ρ€Π΅Π΄ΠΎΡ‚
    ΠΌΡƒΠ»Ρ‚икаст Ρ…Π°Ρˆ / ΠΏΠΎΠ²Π΅ΡœΠ΅ΠΊΡ€Π°Ρ‚Π½Π° Ρ€Π΅Π΄ΠΈΡ†Π°
    ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚, ваТност Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚
    Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π·Π° ΠΈΠ·Π»Π΅Π·Π½Π° ΠΏΠΎΡ€Ρ‚Π° (Π½Π° ΠΏΡ€., Ρ€Π΅Π΄ΠΈΡ†Π° Π·Π° ΠΈΠ·Π»Π΅Π·)

P4 ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€

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

  1. Π’Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ‡Π½Π° Ρ€Π°ΠΌΠ½ΠΈΠ½Π°
  2. API Π·Π° ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅ со ΡΠΎΡΡ‚ΠΎΡ˜Π±Π°Ρ‚Π° Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π° Π²ΠΎ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ‡Π½Π°Ρ‚Π° Ρ€Π°ΠΌΠ½ΠΈΠ½Π°

П4 програмски јазик

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° софтвСрски ΠΏΡ€Π΅ΠΊΠΈΠ½ΡƒΠ²Π°Ρ‡ Π²ΠΎ Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚ P4

Π˜Π·Π²ΠΎΡ€Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ΠΎΠ²ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€Π΅Π·Π΅ΠΌΠ°Ρ‚ ΠΎΠ΄ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ.

p4lang/p4c-bm: создава JSON ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π·Π° bmv2
p4lang/bmv2: софтвСрски ΠΏΡ€Π΅ΠΊΠΈΠ½ΡƒΠ²Π°Ρ‡ ΡˆΡ‚ΠΎ Π³ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° JSON Π²Π΅Ρ€Π·ΠΈΡ˜Π°Ρ‚Π° Π½Π° bmv2

Π‘Π»ΠΈΠΊΠ°Ρ‚Π° Π³ΠΎ ΠΏΡ€ΠΈΠΊΠ°ΠΆΡƒΠ²Π° Π΄ΠΈΡ˜Π°Π³Ρ€Π°ΠΌΠΎΡ‚ Π·Π° ΡΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚:

П4 програмски јазик

ΠœΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ†ΠΈΠΈ со Ρ‚Π°Π±Π΅Π»ΠΈ, рСгистри Π·Π° Ρ‡ΠΈΡ‚Π°ΡšΠ΅, Π±Ρ€ΠΎΡ˜Π°Ρ‡ΠΈ:

  • 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-Ρ‚ΠΎ Π½Π° софтвСрскиот ΠΏΡ€Π΅ΠΊΠΈΠ½ΡƒΠ²Π°Ρ‡.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΏΡ€Π΅Π·Π΅ΠΌΠ΅Ρ‚Π΅ овој ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ ΠΎΠ΄ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ.

П4 програмски јазик

PS На ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊΠΎΡ‚ Π½Π° ΠΎΠ²Π° Π»Π΅Ρ‚ΠΎ, Π˜Π½Ρ‚Π΅Π» ΠΏΠΎΡ‚ΠΏΠΈΡˆΠ° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ Π·Π° ΠΊΡƒΠΏΡƒΠ²Π°ΡšΠ΅ Barefoot Networks Π²ΠΎ ΠΎΠ±ΠΈΠ΄ Π±Ρ€Π·ΠΎ Π΄Π° Π³ΠΈ Π·Π°Π΄ΠΎΠ²ΠΎΠ»ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅ Π½Π° корисницитС Π½Π° Hyperscale Cloud. Како ΡˆΡ‚ΠΎ Ρ€Π΅Ρ‡Π΅ Навин ШСној (ΠΈΠ·Π²Ρ€ΡˆΠ΅Π½ потпрСтсСдатСл ΠΈ Π³Π΅Π½Π΅Ρ€Π°Π»Π΅Π½ ΠΌΠ΅Π½Π°ΡŸΠ΅Ρ€ Π½Π° Data Center Group Π²ΠΎ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π˜Π½Ρ‚Π΅Π»), ΠΎΠ²Π° ќС ΠΌΡƒ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π½Π° Π˜Π½Ρ‚Π΅Π» Π΄Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ ΠΏΠΎΠ³ΠΎΠ»Π΅ΠΌ ΠΎΠ±Π΅ΠΌ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΈ повСќС моТности Π·Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ‚Π΅ Π·Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ.

Π‘ΠΏΠΎΡ€Π΅Π΄ ΠΌΠΎΠ΅ Π»ΠΈΡ‡Π½ΠΎ мислСњС, Π½Π΅ Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π·Π°Π±ΠΎΡ€Π°Π²ΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° Intel Π΅ Π»ΠΈΠ΄Π΅Ρ€ Π²ΠΎ производството Π½Π° FPGA Ρ‡ΠΈΠΏΠΎΠ²ΠΈ ΠΈ ΠΈΠΌΠ° ΠΎΠ΄Π»ΠΈΡ‡Π½Π° Quartus ΠΎΠΊΠΎΠ»ΠΈΠ½Π°. Π’ΠΎΠ° Π·Π½Π°Ρ‡ΠΈ Π΄Π΅ΠΊΠ° ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΠΎΡ‡Π΅ΠΊΡƒΠ²Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° со Π΄ΠΎΠ°Ρ“Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Intel, Barefoot Π½Π΅ само ΡˆΡ‚ΠΎ ќС ја ΠΏΡ€ΠΎΡˆΠΈΡ€ΠΈ ΡΠ²ΠΎΡ˜Π°Ρ‚Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Π° линија, Ρ‚ΡƒΠΊΡƒ ΠΈ Quartus ΠΈ P4 Studio ќС Π΄ΠΎΠ±ΠΈΡ˜Π°Ρ‚ сСриозни Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ° ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΡƒΠ²Π°ΡšΠ° Π½Π° Π»ΠΈΠ½ΠΈΡ˜Π°Ρ‚Π° Toffino ΠΈ Toffino 2.

ΠžΡ„ΠΈΡ†ΠΈΡ˜Π°Π»Π΅Π½ Ρ‡Π»Π΅Π½ Π½Π° Π·Π°Π΅Π΄Π½ΠΈΡ†Π°Ρ‚Π° P4 - компанија Ѐакторска Π³Ρ€ΡƒΠΏΠ°.

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€