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 แจแแแซแแแแ แแแแแงแแแแแฃแ แแฅแแแก แ แแแแ แช แแ แแแ แแแแ แแแแแ, แแกแแแ แคแแฅแกแแ แแแฃแแ แคแฃแแฅแชแแแก แแแฌแงแแแแแแแแแแกแแแแก. แแแแแแแแแ, แแก แแแแแแงแแแแแ แแแแแแ แแแแแแก แแแแกแแแแแแก แฅแชแแแแก แแฃแกแขแแ แฉแแกแแฌแแ แแ Switch Abstraction Interface (SAI) API-แแแจแ, แ แแแแแแแช แแแแแแงแแแแแ แฆแแ แแแแแก SONiC switch OS-แจแ. 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 แแ แแแ แแแแแ แจแแฅแแแแแแ แแแแกแแแแก, แ แแ แแแแแฃแแแแแแแแ แแแแฎแแ แชแแแแแแก, แ แแช แแแแก แแแจแแแแก, แ แแ แแแแ แจแแแแแแ แจแแกแแซแแแแแแแ แแ แแแแแ แกแฎแแแแแกแฎแแ แขแแแแก แแฆแแแกแ แฃแแแแแแ แซแ แแแแกแแแแก, แ แแแแ แแชแแ แแแแแแ แแแแแจแแฃแแแแแก แแ แแชแแกแแ แแแ, 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, GPU, FPGA, SmartNIC แแ ASIC.
แแแแก แซแแ แแแแแ แแแฎแแกแแแแแแแแแ แแแแจแแแแแแแแแ แแคแแ แแแแแก แแแกแ แแแแแงแแแแแแก แคแแ แแแแแก แแ แฃแแ แฃแแแแแงแแคแก แแแก แกแฌแ แแค แแแแฎแแ แชแแแแแแแก แฅแกแแแแก แแ แฅแแขแแฅแขแฃแ แแจแ.
แแแชแแแแแแ
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;
}
แแแ แกแแ แแแ โ แแแแ แแแแชแแแแ แกแแแแฃแ แแแแก แแแ แฉแแแ.
แจแแแแแแ แแแ แกแแ แแก แแแแแแแแ แแแแกแแแฆแแ แแแก แแแแฅแแแแก แกแแแแแแ แแแแแแแ แแแแแก แแแแแกแแแแก แแ แแ แกแแฌแงแแกแ แแแแแแแ แแแแแแแ แแ แกแแแแแแ แแแแแแแ แแแแแแแ:
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 แแแแฃแแแแ โ แแแฅแแแแแแแแ แกแแซแแแแ แแแกแแฆแแแแก แจแแกแแฅแแแแแแ, แชแฎแ แแแแก แซแแแแ, แแแฅแแแแแแแแแก แจแแกแ แฃแแแแ.
แแแแฃแแแก แขแแแแฃแ แ แแแแแแแแ แแแฉแแแแแแแ แกแฃแ แแแแ:
แแแแแแแก แแแแขแ แแแ โ แแแฃแแแแแแก แแแแแแแแแแ แแแแ, แ แแแแแแแช แแแแแแงแแแแแ 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 แขแแแ:
แแแ แแแแฃแแ แแแขแแแแแแชแแแแแ (แชแแ แแแแ แกแขแ แฃแฅแขแฃแ แ แงแแแแ แแแแแขแแกแแแแก)
แ แแช แแแแแ แแฅ แจแแแแซแแแ แแแแ
แฎแแแแแกแแฌแแแแแแ แแแแ แแแแกแแแแแแ
แแแกแแฎแแ แฎแแแแแแ แกแแแฃแแแ แ แแแแแแแแกแแแแก แแแแแกแแงแแแแแแแ, แแแแแแแแแ, แแแแแขแแก แฐแแจแแก แจแแกแแแแฎแแ
แจแแแ แแแขแแแแแแชแแแแแ - แแแฌแแแแแฃแแ แแ แฅแแขแแฅแขแฃแ แแ
แจแแงแแแแแก แแแ แขแ, แแแแแแแแแแ แแแ แขแ แแแแแกแแแฆแแ แแแ แแฅ
แแ แแแก แจแขแแแแ, แ แแแแกแแช แแแแแขแ แแแแ แ แแแจแ, แ แแแแก แกแแฆแ แแ
multicast แฐแแจแ / multicast queue
แแแแแขแแก แแ แแแ แแขแแขแ, แแแแแขแแก แแแแจแแแแแแแ
แแแแแแแแแแ แแแ แขแแก แกแแแชแแคแแแแชแแ (แแแ. แแแแแแแแแแ แ แแแ)
P4 แจแแแแแแแแแ
P4 แจแแแแแแแแแ (P4C) แฅแแแแก:
- แแแแแชแแแแ แกแแแ แขแงแแก แแแจแแแแแก แแ แ
- API แแแแฅแแแแก แแแแแแแ แแแแแก แแแ แแแแกแแแแก แแแแแชแแแแ แกแแแ แขแงแแจแ
แแ แแแ แแแฃแแ แแแแแแ แแแแแแก แแแแแแแแ P4 แแแแแ
แฌแงแแ แแก แแแแแแแก แฉแแแแขแแแ แแแ แจแแกแแซแแแแแแแ แกแแชแแแแแแ.
p4lang/p4c-bm: แฅแแแแก JSON แแแแคแแแฃแ แแชแแแก bmv2-แแกแแแแก
p4lang/bmv2: แแ แแแ แแแฃแแ แแแแแแ แแแแแ, แ แแแแแกแแช แแกแแแก bmv2 แแแ แกแแแก JSON แแแแคแแแฃแ แแชแแแแ
แกแฃแ แแแแ แแแฉแแแแแแแ แแ แแแฅแขแแก แจแแแแแแแก แกแฅแแแ:
แแแแแแฃแแแชแแแแ แชแฎแ แแแแแแ, แแแแฎแแแก แ แแแแกแขแ แแแแ, แแ แแชแฎแแแแแแแ:
- 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-แแก แแแกแแฎแแ แฎแแแแแ แแแแแงแแแแแแกแแแแก.
แจแแแแซแแแแ แฉแแแแขแแแ แแแ แแก แแ แกแฎแแ แแแแแแแแแแ แกแแชแแแแแแ.
PS แแ แแแคแฎแฃแแแก แแแกแแฌแงแแกแจแ Intel-แแ แฎแแแ แแแแฌแแ แ แจแแแแแฎแแแแแก Barefoot Networks-แแก แจแแกแแซแแแแ, แ แแแ แกแฌแ แแคแแ แแแแแแแงแแคแแแแก Hyperscale Cloud แแแแฎแแแ แแแแแแแก แกแแญแแ แแแแแแ. แ แแแแ แช แแแแแ แจแแแแแ (Intel Corporation-แแก แแแแแชแแแแ แชแแแขแ แแก แแฆแแแกแ แฃแแแแแแ แแแชแ-แแ แแแแแแแขแ แแ แแแแแ แแแฃแ แ แแแแแฏแแ แ) แแฅแแ, แแก แกแแจแฃแแแแแแก แแแกแชแแแก Intel-แก แฃแแ แฃแแแแแงแแก แฃแคแ แ แแแแ แแแขแแแ แแแ แแ แแแขแ แจแแกแแซแแแแแแแแแ แแแแแชแแแแ แชแแแขแ แแก แแแแฎแแแ แแแแแแแกแแแแก.
แฉแแแ แแแ แแแ แแแ แแ, แแ แฃแแแ แแแแแแแแฌแงแแแก, แ แแ Intel แแ แแก แแแแแ แ FPGA แฉแแแแแแก แฌแแ แแแแแแจแ แแ แแฅแแก แจแแกแแแแจแแแแ Quartus แแแ แแแ. แแก แแแจแแแแก, แ แแ แฉแแแ แจแแแแแซแแแ แแแแแแแ, แ แแ Intel-แแก แแแกแแแแกแแแ แแ แแแ, Barefoot แแ แ แแฎแแแแ แแแแคแแ แแแแแแก แแ แแแฃแฅแชแแแก แฎแแแก, แแ แแแแ Quartus แแ P4 Studio แแแแฆแแแแ แกแแ แแแแฃแ แแแแแฎแแแแแแก แแ แแแแแขแแแแแก Toffino แแ Toffino 2 แฎแแแแแจแ.
P4 แกแแแแแแแแแแแก แแคแแชแแแแฃแ แ แฌแแแ แ - แแแแแแแแ
แฌแงแแ แ: www.habr.com