ΠΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Intel ΡΡΠ°ΡΡΠΈΡΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Ethernet ΠΊΠΎΠΌΡΡΠ°ΡΠΎΡΠΈ ΠΎΡ ΡΠ΅ΡΠΈΡ Tofino. ΠΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ Apache 2.0 Π΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° p4c ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈΡΠ΅ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Intel P4 Studio, ΠΊΠ°ΡΠΎ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ, ΠΌΠΎΠ΄Π΅Π» Π½Π° ΡΠΈΠΌΡΠ»Π°ΡΠΈΡ Π½Π° ΠΊΠΎΠΌΡΡΠ°ΡΠΎΡ, ΡΡΡΠ²ΡΡ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ Π·Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° BF Runtime. ΠΠ° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅Π½ Π΅Π·ΠΈΠΊ P4 (Programming Protocol-independent Packet Processors), ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅Π½ Π·Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π² ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΠΊΠ°ΡΠΎ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΊΠ°ΡΡΠΈ, ΠΊΠΎΠΌΡΡΠ°ΡΠΎΡΠΈ, ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΠΈ ΠΈ ΠΌΠ΅ΠΆΠ΄ΡΡΠ΅ΡΠ΅Π²ΠΈ Π΅ΠΊΡΠ°Π½ΠΈ.
ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈΡΡ Π±Π΅ΠΊΠ΅Π½Π΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΡΠ°Π½ΡΠ»Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° P4 Π² ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅, ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΎ Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠΌΡΡΠ°ΡΠΎΡΠΈΡΠ΅ ΠΎΡ ΡΠ΅ΡΠΈΡ Intel Tofino. ΠΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ Π½Π° ΡΠΎΠ²Π°, ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΌΡΡΠ°ΡΠΎΡΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π·ΡΠΈΡΡΠ²Π°Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ, ΠΏΡΠΎΠΌΠ΅Π½ΡΡ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ° ΠΈΠ»ΠΈ Π°Π΄Π°ΠΏΡΠΈΡΠ°Ρ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ ΠΊΡΠΌ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠΈΡΠ΅ Π½Π° ΡΡΡ Π½Π°ΡΠ° ΠΌΡΠ΅ΠΆΠ°.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ Π½Π° Π΅Π·ΠΈΠΊΠ° P4 ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Ρ Π² ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½ΠΈΡ Π·Π° ΡΠ΅Π»Π΅Π²ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΊΠ°ΠΊΡΠΎ Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΈ (FPGA, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠ΅ΠΌΠΈ ASIC), ΡΠ°ΠΊΠ° ΠΈ ΡΠΎΡΡΡΠ΅ΡΠ½ΠΈ (x86, BPF). Π‘Π΅Π΄Π½ΠΎ Ρ ΠΊΠΎΠ΄Π° Π·Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ Π½Π° ΡΠ΅Π»Π΅Π²ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠ° runtime Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈΡΠ΅ Protobuf/gRPC ΠΈ API P4Runtime.
Π’ΠΈΠΏΠΎΠ²Π°ΡΠ° Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ Π΅ ΡΠ²ΡΡΠ·Π°Π½Π° Ρ ΠΊΠ»Π°ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ ΠΏΠΎ ΡΠ΅Ρ Π½ΠΈΡΠ΅ Π·Π°Π³Π»Π°Π²ΠΈΡ ΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π²ΡΡΡ Ρ Π²Ρ ΠΎΠ΄ΡΡΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΊΠ°ΡΠΎ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅, ΠΎΡΡ Π²ΡΡΠ»ΡΠ½Π΅, ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° TTL ΠΈ Π·Π°ΠΌΡΠ½Π° Π½Π° ΠΏΠΎΠ»Π΅ΡΠ°. ΠΠ·ΠΈΠΊΡΡ Π½Π΅ Π΅ ΠΏΡΠΈΠ²ΡΡΠ·Π°Π½ ΠΊΡΠΌ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ ΠΈ Π²ΠΌΠ΅ΡΡΠΎ Π²Π³ΡΠ°Π΄Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ, ΠΊΠ°ΡΠΎ IP, Ethernet, TCP ΠΈ VxLAN, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π΄Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Ρ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ ΠΏΡΠΈΠΊΡΠ΅ΠΏΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΡΡΠ° ΠΈ ΠΏΠΎΠ»Π΅ΡΠ°ΡΠ° Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°).

ΠΡΠ²Π΅Π½ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈΡ Π±Π΅ΠΊΠ΅Π½Π΄ Π·Π° ΠΊΠΎΠΌΡΡΠ°ΡΠΎΡΠΈΡΠ΅ Intel Tofino, ΠΏΡΠΎΠ΅ΠΊΡΡΡ P4 ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π±Π΅ΠΊΠ΅Π½Π΄ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π½Π° P4 ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄ Π½Π° C, ΠΊΠΎΠΉΡΠΎ Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ Π² ΡΠΎΡΠΌΠ°Ρ, ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π² Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° eBPF Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux. ΠΡΠΎΠ΅ΠΊΡΡΡ ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ°Π·Π²ΠΈΠ²Π° ΠΎΡΠ²ΠΎΡΠ΅Π½ ΡΠΈΠΌΡΠ»Π°ΡΠΎΡ Π½Π° ΠΊΠΎΠΌΡΡΠ°ΡΠΎΡ, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ Π² Π²ΠΈΡΡΡΠ°Π»Π½Π°ΡΠ° ΠΌΡΠ΅ΠΆΠ° Mininet, ΠΈ Π±Π΅ΠΊΠ΅Π½Π΄ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π½Π° P4 ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Π·Π° ΡΠΈΠΌΡΠ»Π°ΡΠΎΡΠ°.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
