ืฉืคืช ืชื›ื ื•ืช P4

ืฉืคืช ืชื›ื ื•ืช P4
P4 ื”ื™ื ืฉืคืช ืชื›ื ื•ืช ื”ืžื™ื•ืขื“ืช ืœืชื›ื ืช ื›ืœืœื™ ื ื™ืชื•ื‘ ืžื ื•ืช. ืฉืœื ื›ืžื• ืฉืคื” ืœืฉื™ืžื•ืฉ ื›ืœืœื™ ื›ืžื• C ืื• Python, P4 ื”ื™ื ืฉืคื” ืกืคืฆื™ืคื™ืช ืœืชื—ื•ื ืขื ืžืกืคืจ ืขื™ืฆื•ื‘ื™ื ื”ืžื•ืชืืžื™ื ืœื ื™ืชื•ื‘ ืจืฉืช.

P4 ื”ื™ื ืฉืคืช ืงื•ื“ ืคืชื•ื— ื‘ืจื™ืฉื™ื•ืŸ ื•ืžืชื•ื—ื–ืง ืขืœ ื™ื“ื™ ืืจื’ื•ืŸ ืœืœื ืžื˜ืจื•ืช ืจื•ื•ื— ื‘ืฉื P4 Language Consortium. ื”ื™ื ื ืชืžื›ืช ื’ื ืขืœ ื™ื“ื™ ืงืจืŸ ื”ืจืฉืช ื”ืคืชื•ื—ื” (ONF) ื•ืงืจืŸ ืœื™ื ื•ืงืก (LF), ืฉื ื™ื™ื ืžืืจื’ื•ื ื™ ื”ื’ื’ ื”ื’ื“ื•ืœื™ื ื‘ื™ื•ืชืจ ืœืคืจื•ื™ืงื˜ื™ ืจืฉืช ื‘ืงื•ื“ ืคืชื•ื—.
ื”ืฉืคื” ื ื˜ื‘ืขื” ื‘ืžืงื•ืจ ื‘ืฉื ืช 2013 ื•ืชื•ืืจื” ื‘ืžืืžืจ SIGCOMM CCR ืžืฉื ืช 2014 ืฉื›ื•ืชืจืชื• "ืคืจื•ื˜ื•ืงื•ืœ ืขืฆืžืื™, ืชื›ื ื•ืช ืžืขื‘ื“ ื ื™ืชื•ื‘ ืžื ื•ืช".

ืžืื– ื”ืงืžืชื•, P4 ื’ื“ืœ ื•ื”ืชืคืชื— ื‘ืฆื•ืจื” ืืงืกืคื•ื ื ืฆื™ืืœื™ืช, ื•ื”ืคืš ื‘ืžื”ื™ืจื•ืช ืœืกื˜ื ื“ืจื˜ ืœืชื™ืื•ืจ ื”ืขื‘ืจืช ืžื ื•ืช ืขืœ ื™ื“ื™ ื”ืชืงื ื™ ืจืฉืช, ื›ื•ืœืœ ืžืชืืžื™ ืจืฉืช, ืžืชื’ื™ื ื•ื ืชื‘ื™ื.

"SDN ืฉื™ื ืชื” ืืช ืชืขืฉื™ื™ืช ื”ืจืฉืชื•ืช, ื•-P4 ืœื•ืงื— ืืช SDN ืœืฉืœื‘ ื”ื‘ื ืขืœ ื™ื“ื™ ื”ื‘ืืช ื™ื›ื•ืœืช ื”ืชื›ื ื•ืช ืœื ื™ืชื•ื‘", ืืžืจ ื’ื•ืจื• ืคืืจื•ืœืงืจ, ืžื ื›"ืœ ืงืจืŸ ื”ืจืฉืชื•ืช ื”ืคืชื•ื—ื”.

ืฉืคืช P4 ื ื•ืฆืจื” ื‘ืžืงื•ืจ ืขืœ ื™ื“ื™ ืงื‘ื•ืฆื” ืฉืœ ืžื”ื ื“ืกื™ื ื•ื—ื•ืงืจื™ื ืžื’ื•ื’ืœ, ืื™ื ื˜ืœ, ืžื™ืงืจื•ืกื•ืคื˜ ืžื—ืงืจ, Barefoot, ืคืจื™ื ืกื˜ื•ืŸ ื•ืกื˜ื ืคื•ืจื“. ื”ืžื˜ืจื” ื”ื™ื™ืชื” ืคืฉื•ื˜ื”: ืœื™ืฆื•ืจ ืฉืคื” ืงืœื” ืœืฉื™ืžื•ืฉ ืฉืžืคืชื— ืชื•ื›ื ื” ื™ื•ื›ืœ ืœืœืžื•ื“ ืชื•ืš ื™ื•ื ื•ืœื”ืฉืชืžืฉ ื‘ื” ื›ื“ื™ ืœืชืืจ ื‘ืžื“ื•ื™ืง ื›ื™ืฆื“ ืžื ื•ืช ื ืฉืœื—ื•ืช ืขืœ ืคื ื™ ืจืฉืชื•ืช.

ื›ื‘ืจ ืžื”ื”ืชื—ืœื”, P4 ืชื•ื›ื ืŸ ืœื”ื™ื•ืช ืขืฆืžืื™ ืžื˜ืจื” (ื›ืœื•ืžืจ, ืชื•ื›ื ื™ืช ืฉื ื›ืชื‘ื” ื‘-P4 ื ื™ืชื ืช ืœื”ื™ื“ื•ืจ ืœืœื ืฉื™ื ื•ื™ ื›ื“ื™ ืœืคืขื•ืœ ืขืœ ืžื’ื•ื•ืŸ ื™ืขื“ื™ื ื›ื’ื•ืŸ ASICs, FPGAs, CPUs, NPUs ื•-GPUs).

ื”ืฉืคื” ื’ื ื‘ืœืชื™ ืชืœื•ื™ื” ื‘ืคืจื•ื˜ื•ืงื•ืœ (ื›ืœื•ืžืจ, ืชื•ื›ื ื™ืช P4 ื™ื›ื•ืœื” ืœืชืืจ ืคืจื•ื˜ื•ืงื•ืœื™ื ืกื˜ื ื“ืจื˜ื™ื™ื ืงื™ื™ืžื™ื ืื• ืœืฉืžืฉ ืœืฆื™ื•ืŸ ืžืฆื‘ื™ ื›ืชื•ื‘ืช ืžื•ืชืืžื™ื ืื™ืฉื™ืช ื—ื“ืฉื™ื).

ื‘ืชืขืฉื™ื™ื”, P4 ืžืฉืžืฉ ืœืชื›ื ื•ืช ืžื›ืฉื™ืจื™ื. ืื•ืœื™ ื‘ืขืชื™ื“ ืชืงื ื™ Internet-RFC ื•-IEEE ื™ื›ืœืœื• ื’ื ืืช ืžืคืจื˜ P4.

ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘-P4 ืขื‘ื•ืจ ื”ืชืงื ื™ ืคื•ื ืงืฆื™ื” ื ื™ืชื ื™ื ืœืชื›ื ื•ืช ื•ืงื‘ื•ืขื™ื. ืœื“ื•ื’ืžื”, ื”ื•ื ืžืฉืžืฉ ืœืชื™ืขื•ื“ ืžื“ื•ื™ืง ืฉืœ ื”ืชื ื”ื’ื•ืช ืฆื™ื ื•ืจ ืžืชื’ ื‘ืžืžืฉืงื™ ื”-API ืฉืœ Switch Abstraction Interface (SAI) ื”ืžืฉืžืฉื™ื ืืช ืžืขืจื›ืช ื”ื”ืคืขืœื” SONiC switch OS ื‘ืงื•ื“ ืคืชื•ื—. P4 ืžืฉืžืฉ ื’ื ื‘ืคืจื•ื™ืงื˜ ONF Stratum ืœืชื™ืื•ืจ ื”ืชื ื”ื’ื•ืช ืžื™ืชื•ื’ ืขืœ ืคื ื™ ืžื’ื•ื•ืŸ ืžื›ืฉื™ืจื™ื ืงื‘ื•ืขื™ื ื•ื ื™ืชื ื™ื ืœืชื›ื ื•ืช.

ื‘ืคืขื ื”ืจืืฉื•ื ื”, ืชื™ืื•ืจ ื”ืชื ื”ื’ื•ืช ื”ืžืชื’ ื•ืžืชืืžื™ ื”ืจืฉืช ืžืืคืฉืจ ืœืš ืœื™ืฆื•ืจ ืžื•ื“ืœ ื”ืคืขืœื” ืžื“ื•ื™ืง ืฉืœ ื›ืœ ื”ืจืฉืช ืœืคื ื™ ื”ืคืจื™ืกื”. ืกืคืงื™ ืขื ืŸ ื’ื“ื•ืœื™ื ื™ื›ื•ืœื™ื ืœื‘ื“ื•ืง ื•ืœืืคื•ืช ื‘ืื’ื™ื ื‘ืจืฉืช ื‘ืžืœื•ืื” ื‘ืืžืฆืขื•ืช ืชื•ื›ื ื”, ื•ืœืฆืžืฆื ืžืฉืžืขื•ืชื™ืช ืืช ื”ื–ืžืŸ ื•ื”ืขืœื•ืช ืฉืœ ื‘ื“ื™ืงืช ื™ื›ื•ืœืช ืคืขื•ืœื” ื”ื“ื“ื™ืช ื‘ืžืขื‘ื“ื” ืœืœื ืฆื•ืจืš ื‘ื—ื•ืžืจื” ื™ืงืจื”.

ืขืœ ื™ื“ื™ ืฉื™ืžื•ืฉ ื‘-P4, ืกืคืงื™ ืฆื™ื•ื“ ืจืฉืช ื™ื›ื•ืœื™ื ืœืฆืคื•ืช ืœื”ืชื ื”ื’ื•ืช ื ื™ืชื•ื‘ ื‘ืกื™ืกื™ืช ืžืฉื•ืชืคืช ื‘ื›ืœ ื”ืžื•ืฆืจื™ื, ืžื” ืฉืžืืคืฉืจ ืฉื™ืžื•ืฉ ื—ื•ื–ืจ ื‘ืชืฉืชื™ืช ื‘ื“ื™ืงื”, ืคื™ืฉื•ื˜ ืคื™ืชื•ื— ืชื•ื›ื ืช ื ื™ื”ื•ืœ ื•ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ื”ื‘ื˜ื—ืช ื™ื›ื•ืœืช ืคืขื•ืœื” ื”ื“ื“ื™ืช.

ื›ืžื•ื‘ืŸ ืฉื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘-P4 ื›ื“ื™ ืœื›ืชื•ื‘ ืชื•ื›ื ื™ื•ืช ื”ืžืชืืจื•ืช ื“ืจื›ื™ื ื—ื“ืฉื•ืช ืœื—ืœื•ื˜ื™ืŸ ืœื ื™ืชื•ื‘. ืœื“ื•ื’ืžื”, P4 ื ืžืฆื ื‘ืฉื™ืžื•ืฉ ื ืจื—ื‘ ืขื‘ื•ืจ ื˜ืœืžื˜ืจื™ื” ื•ืžื“ื™ื“ื•ืช ื‘ืžืจื›ื–ื™ ื ืชื•ื ื™ื, ืจืฉืชื•ืช ืืจื’ื•ื ื™ื•ืช ื•ืกืคืงื™ ืฉื™ืจื•ืชื™ื.

ื’ื ืงื”ื™ืœืช ื”ืžื—ืงืจ ืขืœืชื” ืžื“ืจื’ื”. ืžืกืคืจ ืงื‘ื•ืฆื•ืช ืžื—ืงืจ ืžื•ื‘ื™ืœื•ืช ื‘ืชื—ื•ื ื”ืจืฉืชื•ืช ื”ืืงื“ืžื™ื•ืช ืคืจืกืžื• ื™ื™ืฉื•ืžื™ื ื—ื“ืฉื™ื ื•ืžืœื”ื™ื‘ื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ ืชื•ื›ื ื™ื•ืช P4, ื›ื•ืœืœ ืื™ื–ื•ืŸ ืขื•ืžืกื™ื, ืคืจื•ื˜ื•ืงื•ืœื™ ืงื•ื ืฆื ื–ื•ืก ื•ืฉืžื™ืจื” ื‘ืžื˜ืžื•ืŸ ืฉืœ ืขืจื›ื™ ืžืคืชื—. ื ื•ืฆืจืช ืคืจื“ื™ื’ืžืช ืชื›ื ื•ืช ื—ื“ืฉื”, ื—ื“ืฉื ื•ืช ืขื•ื‘ืจืช ืžื—ื•ืžืจื” ืœืชื•ื›ื ื”, ื•ืžืืคืฉืจืช ืœื”ืจื‘ื” ืจืขื™ื•ื ื•ืช ื‘ืœืชื™ ืฆืคื•ื™ื™ื, ื—ื“ืฉื™ื ื•ื’ืื•ื ื™ื™ื ืœืฆื•ืฅ.

ืงื”ื™ืœืช ื”ืžืคืชื—ื™ื ืชืจืžื” ืชืจื•ืžื” ืžืฉืžืขื•ืชื™ืช ืœืคื™ืชื•ื— ืงื•ื“, ืœืจื‘ื•ืช ืžื”ื“ืจื™ื, ืฆื™ื ื•ืจื•ืช, ืžื•ื“ืœื™ื ื”ืชื ื”ื’ื•ืชื™ื™ื, APIs, ืžืกื’ืจื•ืช ื‘ื“ื™ืงื”, ื™ื™ืฉื•ืžื™ื ื•ืขื•ื“. ืœื—ื‘ืจื•ืช ื›ื’ื•ืŸ Alibaba, AT&T, Barefoot, Cisco, Fox Networks, Google, Intel, IXIA, Juniper Networks, Mellanox, Microsoft, Netcope, Netronome, VMware, Xilinx ื•-ZTE ื™ืฉ ืžืคืชื—ื™ื ื™ื™ืขื•ื“ื™ื™ื; ืžืื•ื ื™ื‘ืจืกื™ื˜ืื•ืช ื›ื•ืœืœ BUPT, ืงื•ืจื ืœ, ื”ืจื•ื•ืืจื“, MIT, NCTU, ืคืจื™ื ืกื˜ื•ืŸ, ืกื˜ื ืคื•ืจื“, ื”ื˜ื›ื ื™ื•ืŸ, Tsinghua, UMass ื•-USI; ื•ืคืจื•ื™ืงื˜ื™ ืงื•ื“ ืคืชื•ื— ื”ื›ื•ืœืœื™ื CORD, FD.io, OpenDaylight, ONOS, OvS, SAI ื•ืฉื›ื‘ื” ืžื“ื’ื™ืฉื™ื ืืช ื”ืขื•ื‘ื“ื” ืฉ-P4 ื”ื•ื ืคืจื•ื™ืงื˜ ืงื”ื™ืœืชื™ ืขืฆืžืื™.

ื“ื•ืจ ืื•ืคื™ื™ื ื™ ืฉืœ ื‘ืงืจื™ื ืœืฉืคืช P4:

ืฉืคืช ืชื›ื ื•ืช P4

ืกื™ื›ื•ื™ื™ ื™ื™ืฉื•ื

ืฉืคืช ืชื›ื ื•ืช P4
ืžื›ื™ื•ื•ืŸ ืฉื”ืฉืคื” ืžื™ื•ืขื“ืช ืœื ื™ืชื•ื‘ ื™ื™ืฉื•ืžื™ื, ืจืฉื™ืžืช ื”ื“ืจื™ืฉื•ืช ื•ืืคืฉืจื•ื™ื•ืช ื”ืขื™ืฆื•ื‘ ืฉื•ื ื” ื‘ื”ืฉื•ื•ืื” ืœืฉืคื•ืช ืชื›ื ื•ืช ืœืžื˜ืจื•ืช ื›ืœืœื™ื•ืช. ื”ืžืืคื™ื™ื ื™ื ื”ืขื™ืงืจื™ื™ื ืฉืœ ื”ืฉืคื” ื”ื:

  1. ืขืฆืžืื•ืช ืžื™ื™ืฉื•ื ื™ืขื“ื™ื;
  2. ืื™ ืชืœื•ืช ืฉืœ ื”ืคืจื•ื˜ื•ืงื•ืœ/ื™ื ืฉื‘ื”ื ื ืขืฉื” ืฉื™ืžื•ืฉ;
  3. ื™ื›ื•ืœืช ืชืฆื•ืจื” ืžื—ื“ืฉ ืฉืœ ื”ืฉื“ื”.

ืขืฆืžืื•ืช ืžื™ื™ืฉื•ื ื™ืขื“ื™ื

ืชื•ื›ื ื™ื•ืช P4 ืžืชื•ื›ื ื ื•ืช ืœื”ื™ื•ืช ืขืฆืžืื™ื•ืช ื‘ื™ื™ืฉื•ื, ื›ืœื•ืžืจ ื ื™ืชืŸ ืœื”ืจื›ื™ื‘ ืื•ืชืŸ ืขื‘ื•ืจ ืกื•ื’ื™ื ืจื‘ื™ื ื•ืฉื•ื ื™ื ืฉืœ ืžื ื•ืขื™ ื‘ื™ืฆื•ืข, ื›ื’ื•ืŸ ืžืขื‘ื“ื™ื ืœืžื˜ืจื•ืช ื›ืœืœื™ื•ืช, FPGAs, ืžืขืจื›ืช-ืขืœ-ืฉื‘ื‘ื™ื, ืžืขื‘ื“ื™ ืจืฉืช ื•-ASICs. ืกื•ื’ื™ื ืฉื•ื ื™ื ืฉืœ ืžื›ื•ื ื•ืช ืืœื• ื™ื“ื•ืขื™ื ื›ืžื˜ืจื•ืช P4, ื•ื›ืœ ื™ืขื“ ื“ื•ืจืฉ ืžื”ื“ืจ ื›ื“ื™ ืœื”ืžื™ืจ ืืช ืงื•ื“ ื”ืžืงื•ืจ ืฉืœ P4 ืœืžื•ื“ืœ ืฉืœ ืžืชื’ ื™ืขื“. ื”ืžื”ื“ืจ ื™ื›ื•ืœ ืœื”ื™ื•ืช ืžื•ื‘ื ื” ื‘ืžื›ืฉื™ืจ ื”ื™ืขื“, ื‘ืชื•ื›ื ื” ื—ื™ืฆื•ื ื™ืช, ืื• ืืคื™ืœื• ื‘ืฉื™ืจื•ืช ืขื ืŸ. ืžื›ื™ื•ื•ืŸ ืฉืจื‘ื™ื ืžื”ื™ืขื“ื™ื ื”ืžืงื•ืจื™ื™ื ืขื‘ื•ืจ ืชื•ื›ื ื™ื•ืช P4 ื”ื™ื• ืขื‘ื•ืจ ืžื™ืชื•ื’ ืžื ื•ืช ืคืฉื•ื˜, ื ืคื•ืฅ ืžืื•ื“ ืœืฉืžื•ืข ืืช ื”ืžื•ื ื— "ืžืชื’ P4" ืœืžืจื•ืช ืฉ"ื™ืขื“ P4" ืžื“ื•ื™ืง ื™ื•ืชืจ.

ืขืฆืžืื•ืช ืฉืœ ื”ืคืจื•ื˜ื•ืงื•ืœ/ื™ื ืฉื‘ื”ื ื ืขืฉื” ืฉื™ืžื•ืฉ

P4 ืื™ื ื• ืชืœื•ื™ ื‘ืคืจื•ื˜ื•ืงื•ืœ. ื”ืžืฉืžืขื•ืช ื”ื™ื ืฉืœืฉืคื” ืื™ืŸ ืชืžื™ื›ื” ืžืงื•ืจื™ืช ืœืคืจื•ื˜ื•ืงื•ืœื™ื ื ืคื•ืฆื™ื ื›ื’ื•ืŸ IP, Ethernet, TCP, VxLAN ืื• MPLS. ื‘ืžืงื•ื ื–ืืช, ืžืชื›ื ืช ื”-P4 ืžืชืืจ ืืช ืคื•ืจืžื˜ื™ ื”ื›ื•ืชืจื•ืช ื•ืฉืžื•ืช ื”ืฉื“ื•ืช ืฉืœ ื”ืคืจื•ื˜ื•ืงื•ืœื™ื ื”ื ื“ืจืฉื™ื ื‘ืชื•ื›ื ื™ืช, ืืฉืจ ื‘ืชื•ืจื ืžืชืคืจืฉื™ื ื•ืžืขื•ื‘ื“ื™ื ืขืœ ื™ื“ื™ ื”ืชื•ื›ื ื™ืช ื”ืžื”ื™ื“ื•ืจ ื•ื”ืชืงืŸ ื”ื™ืขื“.

ื™ื›ื•ืœืช ื”ื’ื“ืจื” ืžื—ื“ืฉ ืฉืœ ื”ืฉื“ื”

ืžื•ื“ืœ ืขืฆืžืื•ืช ื”ืคืจื•ื˜ื•ืงื•ืœ ื•ืžื•ื“ืœ ื”ืฉืคื” ื”ืžื•ืคืฉื˜ ืžืืคืฉืจ ื”ื’ื“ืจื” ืžื—ื“ืฉ - ื™ืขื“ื™ P4 ืฆืจื™ื›ื™ื ืœื”ื™ื•ืช ืžืกื•ื’ืœื™ื ืœืฉื ื•ืช ืืช ืขื™ื‘ื•ื“ ื”ืžื ื•ืช ืœืื—ืจ ืคืจื™ืกืช ื”ืžืขืจื›ืช. ื™ื›ื•ืœืช ื–ื• ื ืงืฉืจืช ื‘ืื•ืคืŸ ืžืกื•ืจืชื™ ืœื ื™ืชื•ื‘ ื“ืจืš ืžืขื‘ื“ื™ื ืœืžื˜ืจื•ืช ื›ืœืœื™ื•ืช ืื• ืžืขื‘ื“ื™ ืจืฉืช ื‘ืžืงื•ื ืžืขื’ืœื™ื ืžืฉื•ืœื‘ื™ื ื‘ืขืœื™ ืคื•ื ืงืฆื™ื” ืงื‘ื•ืขื”.

ืœืžืจื•ืช ืฉืื™ืŸ ืฉื•ื ื“ื‘ืจ ื‘ืฉืคื” ืฉื™ืžื ืข ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ื”ื‘ื™ืฆื•ืขื™ื ืฉืœ ืงื‘ื•ืฆื” ืžืกื•ื™ืžืช ืฉืœ ืคืจื•ื˜ื•ืงื•ืœื™ื, ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช ืืœื• ืื™ื ืŸ ื ืจืื•ืช ืœื›ื•ืชื‘ ื”ืฉืคื” ื•ื™ื›ื•ืœื•ืช ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ืœื”ืคื—ื™ืช ืืช ื”ื’ืžื™ืฉื•ืช ืฉืœ ื”ืžืขืจื›ืช ื•ื”ื™ืขื“ื™ื ื•ืืช ื™ื›ื•ืœืช ื”ืชืฆื•ืจื” ืžื—ื“ืฉ ืฉืœื”ื.

ืžืืคื™ื™ื ื™ื ืืœื” ืฉืœ ื”ืฉืคื” ื ืงื‘ืขื• ื‘ืชื—ื™ืœื” ืขืœ ื™ื“ื™ ื™ื•ืฆืจื™ื” ืชื•ืš ื”ืชืžืงื“ื•ืช ื‘ืฉื™ืžื•ืฉ ื”ื ืจื—ื‘ ืฉืœื” ื‘ืชืฉืชื™ืช ืจืฉืช.

ื”ืฉืคื” ื›ื‘ืจ ื ืžืฆืืช ื‘ืฉื™ืžื•ืฉ ื‘ื—ื‘ืจื•ืช ืจื‘ื•ืช:

1) ืžืจื›ื–ื™ ื ืชื•ื ื™ื ื‘ืงื ื” ืžื™ื“ื” ื’ื‘ื•ื”;

ื—ื‘ืจืช Tencent ื”ืกื™ื ื™ืช ื”ื™ื ื—ื‘ืจืช ื”ื”ืฉืงืขื•ืช ื”ื’ื“ื•ืœื” ื‘ืขื•ืœื ื•ืื—ืช ืžื—ื‘ืจื•ืช ื”ื”ื•ืŸ ืกื™ื›ื•ืŸ ื”ื’ื“ื•ืœื•ืช. ื”ื—ื‘ืจื•ืช ื”ื‘ื ื•ืช ืฉืœ Tencent, ื”ืŸ ื‘ืกื™ืŸ ื•ื”ืŸ ื‘ืžื“ื™ื ื•ืช ืื—ืจื•ืช ื‘ืขื•ืœื, ืžืชืžื—ื•ืช ื‘ืชื—ื•ืžื™ื ืฉื•ื ื™ื ืฉืœ ืขืกืงื™ ื”ื™ื™ื˜ืง, ืœืจื‘ื•ืช ืฉื™ืจื•ืชื™ ืื™ื ื˜ืจื ื˜ ืฉื•ื ื™ื, ืคื™ืชื•ื—ื™ื ื‘ืชื—ื•ื ื”ื‘ื™ื ื” ื”ืžืœืื›ื•ืชื™ืช ื•ื”ื‘ื™ื“ื•ืจ ื”ืืœืงื˜ืจื•ื ื™.

P4 ื•ื ื™ืชื•ื‘ ื ื™ืชืŸ ืœืชื›ื ื•ืช ื”ืŸ ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ืžืชืงื“ืžื•ืช ื”ืžืฉืžืฉื•ืช ื‘ืืจื›ื™ื˜ืงื˜ื•ืจืช ื”ืจืฉืช ืฉืœ ื”ื—ื‘ืจื”.

ื›ืื—ื“ ื”ื™ื•ืฆืจื™ื, ื’ื•ื’ืœ ื’ืื” ืœืฆื™ื™ืŸ ืืช ื”ืื™ืžื•ืฅ ื”ืžื”ื™ืจ ืฉืœ P4 ื‘ืชืขืฉื™ื™ืช ื”ืจืฉืชื•ืช ื•ื‘ืชื›ื ื•ืŸ ืืจื›ื™ื˜ืงื˜ื•ื ื™ ืฉืœ ืžืจื›ื–ื™ ื ืชื•ื ื™ื ื‘ืคืจื˜.

2) ื—ื‘ืจื•ืช ืžืกื—ืจื™ื•ืช;

ื’ื•ืœื“ืžืŸ ื–ืืงืก ืžื ืฆืœ ืืช ื”ืขื‘ื•ื“ื” ืขื ืงื”ื™ืœืช ื”ืงื•ื“ ื”ืคืชื•ื— ื•ืคื™ืชื•ื— ืกื˜ื ื“ืจื˜ื™ื ื•ืคืชืจื•ื ื•ืช ืžืฉื•ืชืคื™ื ืœื—ื™ื“ื•ืฉ ืชืฉืชื™ืช ืจืฉืช ื•ืžืชืŸ ืคืชืจื•ื ื•ืช ื˜ื•ื‘ื™ื ื™ื•ืชืจ ืœืœืงื•ื—ื•ืช.

3) ื™ื™ืฆื•ืจ;

ื›ืœ ืชืขืฉื™ื™ืช ื”ืจืฉืชื•ืช ืชืจื•ื•ื™ื— ืžืฉืคื” ื›ืžื• P4 ื”ืžื’ื“ื™ืจื” ื‘ืื•ืคืŸ ื™ื™ื—ื•ื“ื™ ืืช ื”ืชื ื”ื’ื•ืช ื”ื”ืขื‘ืจื”. ืกื™ืกืงื• ื’ื ืžืืžื™ื ื” ื‘ื”ืขื‘ืจืช ืงื•ื•ื™ ื”ืžื•ืฆืจื™ื ืฉืœื” ืœืฉื™ืžื•ืฉ ื‘ืฉืคื” ื–ื•.

Juniper Networks ื›ืœืœื” ืืช P4 ื•-P4 Runtime ื‘ืžืกืคืจ ืžื•ืฆืจื™ื, ื•ืžืกืคืงืช ื’ื™ืฉื” ืคืจื•ื’ืจืžื˜ื™ืช ืœืžืขื‘ื“ ื”ืžื•ื˜ื‘ืข ืฉืœ Juniper ื•ืœืงื•ื“ ื”ืชื•ื›ื ื” ืฉืœื•.

Ruijie Networks ืชื•ืžืš ื—ื–ืง ื‘-P4 ื•ื‘ื™ืชืจื•ื ื•ืช ืฉื”ื•ื ืžื‘ื™ื ืœืจืฉืชื•ืช. ืขื P4, ื”ื—ื‘ืจื” ื™ื›ื•ืœื” ืœื™ืฆื•ืจ ื•ืœืกืคืง ืคืชืจื•ื ื•ืช ืžื”ื˜ื•ื‘ื™ื ืžืกื•ื’ื• ืœืžื’ื•ื•ืŸ ืจื—ื‘ ืฉืœ ืœืงื•ื—ื•ืช.

4) ืกืคืงื™ ืชืงืฉื•ืจืช;

AT&T ื”ื™ื™ืชื” ืžืืžืฆืช ืžื•ืงื“ืžืช ืฉืœ P4, ืžื”ืจืืฉื•ื ื•ืช ืฉื”ืฉืชืžืฉื• ื‘-P4 ื›ื“ื™ ืœื”ื’ื“ื™ืจ ืืช ื”ื”ืชื ื”ื’ื•ืช ืฉื”ื™ื ืจื•ืฆื” ืœืจืื•ืช ื‘ืจืฉืชื•ืช ืฉืœื”, ื•ืœื”ืฉืชืžืฉ ื‘ื”ืชืงื ื™ ื”ืขื‘ืจื” ื ื™ืชื ื™ื ืœืชื›ื ื•ืช ืฉืœ P4 ื‘ืจืฉืช ืฉืœื”.

ื‘-Deutsche Telekom, ื”ืฉืคื” ืžืฉืžืฉืช ืœืื‘ื˜ื™ืคื•ืก ืฉืœ ืคื•ื ืงืฆื™ื•ืช ืžืคืชื— ื‘ืจืฉืช ื›ื—ืœืง ืžืชื•ื›ื ื™ืช Access 4.0.

5) ืชืขืฉื™ื™ืช ื”ืžื•ืœื™ื›ื™ื ืœืžื—ืฆื”;

ื”ืฉืคื” ืืคืฉืจื” ืœ-Barfoot ืœื™ื™ืฉื ืคืจื“ื™ื’ืžื” ื—ื“ืฉื” ืœืืกืคืงืช ื™ื›ื•ืœื•ืช ืชื•ื›ื ื” ืœืžื™ืฉื•ืจ ื ื™ืชื•ื‘ ื”ืจืฉืช.

Xilinx ื”ื™ื” ืื—ื“ ืžืžื™ื™ืกื“ื™ P4.org ื•ื”ื™ื” ืžืขื•ืจื‘ ื‘ืื•ืคืŸ ืคืขื™ืœ ื‘ืคื™ืชื•ื— ืฉืคืช P4 ื•ื”ื˜ืžื™ืข ืื•ืชื” ื‘ืคืœื˜ืคื•ืจืžื•ืช ื ื™ืชื ื•ืช ืœืชื›ื ื•ืช ืžื‘ื•ืกืกื•ืช FPGA ืขื‘ื•ืจ ื—ื•ืžืจืช SmartNIC ื•-NFV, ื•ื”ื•ืฆื™ืื” ืืช ืื—ื“ ื”ืžื”ื“ืจื™ื ื”ืจืืฉื•ื ื™ื ืฉืœ P416 ื›ื—ืœืง ืžืชื›ื ื•ืŸ SDNet.

6) ืชื•ื›ื ื”.

VMware ืžืืžื™ื ื” ืฉ-P4 ื™ื•ืฆืจ ืื ืจื’ื™ื”, ื—ื“ืฉื ื•ืช ื•ืงื”ื™ืœื” ืื“ื™ืจื™ื ืฉืžื ื™ืขื™ื ืฉื™ื ื•ื™ ืžืฉืžืขื•ืชื™ ื•ื”ื›ืจื—ื™ ื‘ืจืฉืช. VMware ื”ื™ื™ืชื” ื—ืœืง ืžืชื ื•ืขืช ื”ืชืขืฉื™ื™ื” ื”ื–ื• ืžืื– ืชื—ื™ืœืช ื”ื“ืจืš, ืฉื›ืŸ ื’ืœ ื—ื“ืฉ ืฉืœ ื—ื“ืฉื ื•ืช ืžื•ื ืข ืขืœ ื™ื“ื™ ื’ื™ืฉื•ืช ืžื‘ื•ืกืกื•ืช ืชื•ื›ื ื” ื”ืžืจื—ื™ื‘ื•ืช ืืช ื™ื›ื•ืœื•ืช ื”ืชืฉืชื™ืช ื•ืžื˜ืžื™ืขื•ืช ืื•ืชื” ื‘ืžื•ืฆืจื™ื ื”ืขื“ื›ื ื™ื™ื ื‘ื™ื•ืชืจ.

ืœืคื™ื›ืš, P4 ื”ื™ื ืฉืคืช ืชื›ื ื•ืช ื‘ืœืชื™ ืชืœื•ื™ื” ืžื˜ืจื” ื•ืคืจื•ื˜ื•ืงื•ืœ ื”ืžืฉืžืฉืช ืืช ื”ืชืขืฉื™ื™ื” ื•ื”ืืงื“ืžื™ื” ืœื”ื’ื“ืจื” ื™ื™ื—ื•ื“ื™ืช ืฉืœ ื”ืชื ื”ื’ื•ืช ื ื™ืชื•ื‘ ืžื ื•ืช ื›ืชื•ื›ื ื™ืช, ืืฉืจ ื‘ืชื•ืจื” ื ื™ืชื ืช ืœื”ื™ื“ื•ืจ ืขื‘ื•ืจ ืžื˜ืจื•ืช ืžืจื•ื‘ื•ืช. ื›ื™ื•ื, ื”ื™ืขื“ื™ื ื›ื•ืœืœื™ื ืžืชื’ื™ ื—ื•ืžืจื” ื•ืชื•ื›ื ื”, ืžืชื’ื™ hypervisor, NPUs, GPUs, FPGAs, SmartNICs ื•-ASICs.

ื”ืžืืคื™ื™ื ื™ื ื”ืขื™ืงืจื™ื™ื ืฉืœ ื”ืฉืคื” ืžืจื—ื™ื‘ื™ื ืžืฉืžืขื•ืชื™ืช ืืช ื”ื™ืงืฃ ื”ื™ื™ืฉื•ื ืฉืœื” ื•ืžื‘ื˜ื™ื—ื™ื ืืช ื”ื˜ืžืขืชื” ื”ืžื”ื™ืจื” ื‘ืืจื›ื™ื˜ืงื˜ื•ืจื•ืช ืจืฉืช.

ืชื—ื™ืœืช ื”ืขื‘ื•ื“ื”

P4 ื”ื•ื ืคืจื•ื™ืงื˜ ืคืชื•ื—, ื›ืœ ื”ืžื™ื“ืข ื”ืจืœื•ื•ื ื˜ื™ ื ืžืฆื ื‘ืืชืจ P4.org

ืงื™ืฉื•ืจ ืœืžืื’ืจ https://github.com/p4lang, ืฉื‘ื• ืืชื” ื™ื›ื•ืœ ืœืงื‘ืœ ืงื•ื“ ืžืงื•ืจ ื•ื”ื“ืจื›ื•ืช ืœื“ื•ื’ืžื”.

ืชื•ืกืฃ ืขื‘ื•ืจ Eclipse ืขื ืชืžื™ื›ื” P4, ืื‘ืœ ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื”ืžืœื™ืฅ ืกื˜ื•ื“ื™ื• P4 ืž-Barfoot.

ืฉืคืช ืชื›ื ื•ืช 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

ื—ื‘ื™ืœื•ืช ืžื•ืชืืžื•ืช ืขืœ ื™ื“ื™:

  • ื”ืชืืžื” ืžื“ื•ื™ื™ืงืช
  • ื”ืชืืžืช ื”ืงื™ื“ื•ืžืช ื”ืืจื•ื›ื” ื‘ื™ื•ืชืจ (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;
}

ืžื•ื“ื•ืœื™ ื”ืชืืžื”-ืคืขื•ืœื” - ืคืขื•ืœื•ืช ืœื™ืฆื™ืจืช ืžืคืชื— ื—ื™ืคื•ืฉ, ื—ื™ืคื•ืฉ ื‘ื˜ื‘ืœื”, ื‘ื™ืฆื•ืข ืคืขื•ืœื•ืช.

ื“ื•ื’ืžื” ื˜ื™ืคื•ืกื™ืช ืฉืœ ืžื•ื“ื•ืœ ืžื•ืฆื’ืช ื‘ืื™ื•ืจ:

ืฉืคืช ืชื›ื ื•ืช 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 ืกื•ื’ื™ื ืฉืœ ืžื˜ื ื ืชื•ื ื™ื:

  ืžื˜ื ื ืชื•ื ื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช (ืžื‘ื ื” ืจื™ืง ืขื‘ื•ืจ ื›ืœ ื”ื—ื‘ื™ืœื•ืช)
    ืืชื” ื™ื›ื•ืœ ืœืฉื™ื ื›ืืŸ ืžื” ืฉืืชื” ืจื•ืฆื”
    ื–ืžื™ืŸ ืœืื•ืจืš ื›ืœ ื”ืฆื™ื ื•ืจ
    ื ื•ื— ืœืฉื™ืžื•ืฉ ืœืžื˜ืจื•ืช ืฉืœืš, ืœืžืฉืœ, ืœืื—ืกื•ืŸ hash ืฉืœ ื—ื‘ื™ืœื”

  ืžื˜ื ื ืชื•ื ื™ื ืคื ื™ืžื™ื™ื - ืžืกื•ืคืง ืขืœ ื™ื“ื™ ื”ืืจื›ื™ื˜ืงื˜ื•ืจื”
    ื™ืฆื™ืืช ืงืœื˜, ื™ืฆื™ืืช ืคืœื˜ ืžื•ื’ื“ืจื™ื ื›ืืŸ
    ื—ื•ืชืžืช ื–ืžืŸ ืžืชื™ ื”ื—ื‘ื™ืœื” ื”ื™ื™ืชื” ื‘ืชื•ืจ, ืขื•ืžืง ืชื•ืจ
    ืชื•ืจ ื’ื™ื‘ื•ื‘/ืฉื™ื“ื•ืจ ืจื‘ ืฉื™ื“ื•ืจ
    ืขื“ื™ืคื•ืช ื—ื‘ื™ืœื”, ื—ืฉื™ื‘ื•ืช ื—ื‘ื™ืœื”
    ืžืคืจื˜ ื™ืฆื™ืืช ืคืœื˜ (ืœืžืฉืœ ืชื•ืจ ืคืœื˜)

ืžื”ื“ืจ P4

ืžื”ื“ืจ P4 (P4C) ืžื™ื™ืฆืจ:

  1. ื–ืžืŸ ืจื™ืฆื” ืฉืœ ืžื˜ื•ืก ื ืชื•ื ื™ื
  2. API ืœื ื™ื”ื•ืœ ืžืฆื‘ ืžื›ื•ื ื” ื‘ืžื™ืฉื•ืจ ื”ื ืชื•ื ื™ื

ืฉืคืช ืชื›ื ื•ืช 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

ื .ื‘. ื‘ืชื—ื™ืœืช ื”ืงื™ืฅ, ืื™ื ื˜ืœ ื—ืชืžื” ืขืœ ื”ืกื›ื ืœืจื›ื™ืฉืช Barefoot Networks ื‘ืžืืžืฅ ืœืขื ื•ืช ื‘ืžื”ื™ืจื•ืช ืขืœ ื”ืฆืจื›ื™ื ืฉืœ ืžืฉืชืžืฉื™ Hyperscale Cloud. ื›ืคื™ ืฉืืžืจ Navin Shenoy (ืกื’ืŸ ื ืฉื™ื ื‘ื›ื™ืจ ื•ืžื ื”ืœ ื›ืœืœื™ ืฉืœ ืงื‘ื•ืฆืช Data Center ื‘-Intel Corporation), ื”ื“ื‘ืจ ื™ืืคืฉืจ ืœืื™ื ื˜ืœ ืœืกืคืง ืขื•ืžืกื™ ืขื‘ื•ื“ื” ื’ื“ื•ืœื™ื ื™ื•ืชืจ ื•ื™ื•ืชืจ ื”ื–ื“ืžื ื•ื™ื•ืช ืœืœืงื•ื—ื•ืช ืžืจื›ื–ื™ ื”ื ืชื•ื ื™ื.

ืœื“ืขืชื™ ื”ืื™ืฉื™ืช, ืืกื•ืจ ืœืฉื›ื•ื— ืฉืื™ื ื˜ืœ ืžื•ื‘ื™ืœื” ื‘ื™ื™ืฆื•ืจ ืฉื‘ื‘ื™ FPGA ื•ื™ืฉ ืœื” ืกื‘ื™ื‘ืช Quartus ืžืฆื•ื™ื ืช. ื”ืžืฉืžืขื•ืช ื”ื™ื ืฉืื ื• ื™ื›ื•ืœื™ื ืœืฆืคื•ืช ืฉืขื ื”ื’ืขืชื” ืฉืœ ืื™ื ื˜ืœ, Barefoot ืœื ืจืง ืชืจื—ื™ื‘ ืืช ืงื• ื”ืžื•ืฆืจื™ื ืฉืœื”, ืืœื ื’ื Quartus ื•-P4 Studio ื™ืงื‘ืœื• ืขื“ื›ื•ื ื™ื ื•ืชื•ืกืคื•ืช ืจืฆื™ื ื™ื•ืช ืœืงื• Toffino ื•-Toffino 2.

ื—ื‘ืจ ืจืฉืžื™ ื‘ืงื”ื™ืœืช P4 - ื—ื‘ืจื” ืงื‘ื•ืฆืช ื’ื•ืจืžื™ื.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”