P4 á¨ááŹáľ ááááá á°ááŚá˝á ááááááľ á¨á°áá°á á¨ááŽááŤá ááá ááᢠáĽáá° C ááá Python áŤá á á ááá ááááá˝ á á°áá¨áŁ P4 áá ááłá¨ áá¨áĽ ááááá á¨á°ááťáš á ááŤáł á˛áááá˝ áŤááľ ááŤ-á°áŽá ááá ááá˘
P4 áááľ ááá ááá áá áááľ áŤáá áĽá á¨ááá¨áŁá¨á á ááľáá áŤáá°ááá áľáá
áľ P4 Language Consortium. áĽáá˛áá ááááľ ááá ááľááá ááŽáááśá˝ á¨áľáá áááĽá áľáá
áśá˝ ááŤá¨á á Open Networking Foundation (ONF) áĽá á ááááľ áááá´á˝á (á¤áá¤á) áá°áááá˘
áááá á ááááŞáŤ á¨á°áá á¨á á 2013 á˛áá á 2014 á SIGCOMM CCR áá¨ááľ áá âááŽáśáŽá áááá°áᣠááŹáľ ááááá ááŽá°á°á ááŽááŤáááâ á áá áááľ á°áĽáŤááˇáá˘
á¨á°áá á¨á°á áľ áá áááŽáŁ P4 á á¨áá°á á°á¨á á áľááᣠá ááĽááľ á ááľááá ááŁáŞáŤáá˝áŁ á¨ááľááá á áľááᣠááĽáŞáŤá ááĽá፠áĽá áŤáá°áŽá˝á á¨áᎠááŹáśá˝á ááľá°áááá á¨áááá˝ ááľáááľ áááá˘
ᨠOpen Networking áááá´á˝á áá áłááŹáá°á á¨áááľ áአááŠááŤá "á¤áľá˛á¤á á¨ááľááá á˘ááąáľáľáŞáá áááŚáłáᣠáĽá P4 á¤áľá˛á¤áá áá° áá á°á¨á á áá¸ááá ááŽááŤááááľá áá° ááááá áŤá°ááłá" áĽáááá˘
á¨á 4 ááá á ááááŞáŤ á¨á°áá á¨á á¨áááᣠá˘áá´áᣠááááŽáśááľ ááááᣠá áŁáś áĽááᣠá ááŞááľá°á áĽá á áľáłááááľ á á°áá áááá˛áśá˝ áĽá á°ááŤááŞáá˝ áĄáľá ááᢠáᥠááá áá áᥠá¨áśááľáá ááᢠá áá ááľáĽ á¨ááá¨áá áá á ááá ááá á¨áá ááá ááá á áĽá áĽá˝áá˝ á á ááłá¨ áá¨áŚá˝ áá áĽáá´áľ áĽáá°ááአá áľááá ááááá˝ áá ááá áľ áá˝ááá˘
áá á¨ááááŞáŤáᣠP4 á¨á°áá°áá áŤáąá á¨áťá á˘áá áĽáá˛áá áá (áááľá á P4 áá á¨á°áťá ááŽááŤá áĽáá° ASICsᣠFPGAsᣠCPUsᣠNPUs áĽá GPUs áŁá á¨á°ááŤáŠ á˘áááá˝ áá áĽáá˛á°áŤ áłáááἠáááá áá˝ááá˘
ááááá á¨ááŽáśáŽá ááť áá (áááľáᣠá¨P4 ááŽááŤá ááŁá áá°á á ááŽáśáŽáá˝á áááá˝ áá˝áá ááá á á˛áľ áĽá á¨á áľáŤáť áááłáá˝á áááá¨áľ áĽá á áá áááá)á˘
á á˘ááąáľáľáŞ ááľáĽ, á 4 áááłáŞáŤ ááŽááŤáá˝ áĽá á áá áááá. ááááŁáľ áá°ááľ á¨á˘áá°áááľ-RFC áĽá IEEE á°á¨ááὠᨠP4 áááá ááááŤá áá¨ááŤáá˘
P4 ááááąá áááŽááŤá áĽá ááá á°ááŁá ááłáŞáŤáá˝ áĽá á áá ááá áá˝áá. áááłáᣠáááľ ááá SOniC ááĽáŞáŤá ááĽá፠OS áĽá á áá á áááá á¨Switch Abstraction Interface (SAI) APIs ááľáĽ á¨ááá¨áŞáŤ á§á᧠áŁá áŞá á áľááá áááááἠáá á ááᢠP4 á ONF Stratum ááŽáááľ ááľáĽ á á°ááŤáŠ áá áĽá ááŽááŤááŤá ááłáŞáŤáá˝ áá á¨áááŤá¨á áŁá áŞá ááááá áľáŤ áá ááááá˘
áááááŞáŤ áá á¨ááá¨áŞáŤáá áĽá á¨á ááłá¨ áá¨áĽ á áľáááá˝á áŁá ᪠áááá˝ á¨áá°ááŤáą á ááľ á¨á á áááá á ááłá¨ áá¨áĽ áľáááá á°ááťáááľ áŤáá áá´á áĽáá˛ááĽáŠ áŤáľá˝áááłáᢠáľááá á¨á°áá á á áŤá˘áá˝ áśááľááŽá˝á á áá áá á ááłá¨ áá¨áĄá áá á áá ááá¨á áĽá áá¨á áá˝ááᣠáá á ááľ áááľáá áłáá áá á á¤á° áá¨áŤ ááľáĽ áŤááá á¨á°ááŁáŚáľ áá¨áŤ áá áĽá ááŞá á áĽá á ááááłáá˘
P4á á áá ááᣠá¨á ááłá¨ áá¨áĽ áĽááá˝ á á áŤá˘áá˝ á ááá áááśá˝ áá á¨á፠áľá á¨ááááá áŁá áŞáᣠá¨áá¨áŤ áá á¨á° áááľá áĽáá°áá áĽá á áá ááááᣠá¨á áľá°áłá°á áśááľáá áááľá áááá áĽá á áá¨á¨áťá áĽááľ á ááľ áá°áłá°áĽá áá¨ááἠáá˝ááá˘
áĽááἠááᣠP4 áá ááá á á˛áľ á¨áááŞáŤ ááááśá˝á á¨ááááš ááŽááŤáá˝á áááťá ááŤáááá áá˝ááᢠáááłá, P4 á áá¨á ááĽá¨áá˝, á áľáá áľ áĽá á á áááááľ á°áŞ á ááłá¨ áá¨áŚá˝ ááľáĽ áá´áááľáŞ áĽá áááŞáŤáá˝ á áľááľ áĽá á áá áááá.
á¨áááá áá á á¨á°áĄá á°áŁáĽáˇáᢠá ááŤáł á᪠á¨á áŤáłáá á ááłá¨áá¨áĽ á¨áááá áĄáľáá˝ áááľ áááŁá ááᣠá¨á፠áááŁáŁáľá ááŽáśáŽáá˝á áĽá á¨ááá áĽá´áľ áá¸ááŤá á¨áᎠá P4 ááŽááŤáá˝ áá á¨á°áá á¨áą á áľá°áłá˝ á áłá˛áľ áá°áá áŞáŤáá˝á á áłáľáááᢠá á˛áľ á¨ááŽááŤááá ááŤáłáá áĽá¨á°áá ᨠááᣠáá ፠á¨áááľáá áá° áśááľáá áĽá¨á°á¸ááᨠááᣠáá á áĽá áŤáá°á á áᣠá á˛áľ áĽá áĽáááłá ááłáŚá˝ áĽáá˛áá አáŤáľá˝ááá˘
á¨ááá˘á áá á á¨á°áĽ áŽáááá°áŽá˝áᣠá¨á§á᧠ááľááŽá˝áᣠá¨áŁá áá áá´áá˝áᣠá¤áá ááá˝áᣠá¨áá¨áŤ ááááá˝áᣠá áááŹá˝áá˝á áĽá ááá˝áá á¨áᎠááŽáľ áááľ á¨áá°á á áľá°ááž á áľáááᢠáĽáá° á ááŁáŁáŁ AT&TᣠáŁáś áĽááᣠá˛áľáŽáŁ áááľ ááľáááŽá˝áŁ 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 ááŽááŤáá˝ á¨á°áá°ááľ áŤáłá¸áá á˝áá áĽáá˛á°áá አááᣠáá áááľ ááĽá á¨á°ááŤáŠ á¨ááľáá¸á፠áá°áŽá˝ áááľá áĽáá° á á ááá ááá ááŽá°á°áᣠFPGAsᣠá˛áľá°á-áá-áşááľáŁ á¨ááľááá ááŽá°á°á áĽá ASIC áá˝ áááá áá˝ááᢠáĽááá á¨á°ááŤáŠ á¨áá˝á ááááśá˝ á 4 á˘áááá˝ á ááŁá ááłáááᣠáĽá áĽáŤááłááą á˘áá á¨á 4 ááá áŽáľá áá° á˘áá ááĽáŞáŤá ááĽá፠áá´á áááá¨á á á áá᪠áááááᢠá áááŁáŞá á áłááá ááŁáŞáŤáŁ á ááŤá áśááľáá ááá á á°áá á áááááľ ááľáĽ áááᣠáá˝ááᢠáá 4 ááŽááŤáá˝ áĽáááš á¨ááááŞáŤ á˘áááá˝ áááá ááŹáľ áááŤá¨á áľááá áŠáŁ ááá áĽááłá "P4 target" á¨á áá áľáááá á˘ááá "P4 switch" á¨áááá áá ááľááľ á áŁá á¨á°ááá° ááá˘
áĽá á áá á¨ááá á¨ááŽáśáŽá(áá˝) ááááľ
P4 á¨ááŽáśáŽá ááť ááᢠáá áááľ áááá áĽáá° á ááᣠá˘á°áááľáŁ TCPᣠVxLAN ááá MPLS áá á¨á°áááą ááŽáśáŽáá˝ á¤á°á áľáá á¨ááá áááľ ááᢠá ááľáŠáŁ á¨á 4 ááŽááŤáá á ááŽááŤá ááľáĽ á¨áááááľá ááŽáśáŽáá˝ á¨áááľ á áá¸áśá˝ áĽá á¨ááľá áľáá˝á áááááᣠáĽááá á á á°áŤá á á°áááá ááŽááŤá áĽá á áłááá ááłáŞáŤ áĽá¨á°á°á¨áá áĽá áĽá¨á°áľá°ááá° ááá˘
á¨ááľá áááś áááá
á¨ááŽáśáŽá ááťááľ áĽá á¨áá á¨ááá áá´á áĽáá°áá ááááá ááá áłá-P4 á˘áááá˝ áľáááą á¨á°áá¨á á áá á¨ááŹáľ áá°áľá ááá¨á ááťá á áá áľá˘ áá á˝ááł á á°áááś á¨áá á°ááŁá á¨á°ááá áá°áśá˝ ááá á á á ááá ááá ááŽá°á°á ááá á ááľááá ááŽá°á°á á¨ááľá°ááá áá á¨á°áŤáŤá ááá˘
ááá áĽááłá á áááá ááľáĽ á¨á ááľ á¨á°áá°á á¨ááŽáśáŽáá˝ áľáĽáľáĽ á áááá áááťá¸áľá á¨áá¨ááá ááá ááá áŁáááá, áĽááá áááťá¸áľ ááááá á°áŤá˛ á¨áááłáŠ áĽá á áá¨á¨áťá á¨áľáááąá áĽá á¨ááŚášá á°ááááááľ áĽá áĽáá°áá ááááá ááááľ áá˝áá.
áĽááá á¨ááá áŁá áŞáŤáľ á ááľááá áá á¨á° áááľ ááľáĽ á áľááľ áĽá á áá á ááá áá á áá°áŽá á ááááŞáŤ ááŁáŞááš á¨á°ááᥠáá¸á.
áááá á áľááľá á áĽá áŠáŁááŤáá˝ ááľáĽ áĽá á áá ááááĄ-
1) á¨á¨áá°á á°á¨á á¨ááἠááá¨áá˝;
á¨áťááá áŠáŁá፠á´áá°ááľ á ááá áá áľáá á¨á˘áá¨áľáľáááľ áŠáŁá፠áĽá á¨áľááá á¨áŤááłá áŠáŁááŤáá˝ á ááą ááᢠá áťááá áá á ááá áá áŁá ááá˝ á ááŽá˝ ááľáĽ á¨ááá á¨á´ááľáľáľ á áááŤáá˝ á á°ááŤáŠ á¨á˘áá°áááľ á áááááśá˝áŁ á á áá´ááťá á˘áá°ááááľ áĽá á á¤áááľáŽááŤá áááá ááľá áĽáľááśá˝á á¨áᎠá á°ááŤáŠ á¨á¨áá°á á¨á´áááá áááľ áááá˝ áá áŤá°áŽáŠ áá¸áá˘
á 4 áĽá ááŽááŤáá áŤáá˛áá á áŠáŁááŤá á¨ááľááá á ááá´áá¸á ááľáĽ áĽá á áá á¨ááá á¨áá á´áááááá˝ áá¸áá˘
áĽáá° á ááą ááŁáŞáá˝áŁ Google á ááľááአá˘áá°áľáľáŞ áĽá á á°ááá á áá¨á ááĽá¨á á ááá´áá¸á á˛ááá ááľáĽ á 4á á ááĽááľ ááá áá á ááá áŠáŤáľ áá°áááá˘
2) á¨áááľ áľáá áśá˝;
áááľáá áłá˝áľ á¨áááľ ááá áá á á¨á°áĽ áá á áĽáŽ á ááľáŤáľ á¨á፠áááááá˝á áĽá áááľááá˝á á áááááľ á¨ááľááá áá á¨á° áááľá áááá á áĽá áá°áá áá˝ á¨á°áťá áááľááá˝á ááá á¨áĽ áá áááá˘
3) ááá¨áľ;
ááá á¨ááľááá á˘ááąáľáľáŞ á¨ááľá°ááá፠áŁá áŞá á áአáááł á¨áááá˝ áĽáá° P4 áŤáá ááá áá áááᢠCisco áá áá ááá ááá áá á¨áááľ ááľááŽášá á ááľá°ááá áŤáááá˘
Juniper Networks P4 áĽá P4 Runtimeá á á ááŤáł áááśá˝ ááľáĽ á áŤáľáˇáᣠáĽá áááá á¨á°á¨á°á° ááŽá°á°á áĽá á¨áśááľáá áŽáľ ááŽááŤáá ááłá¨áťá áá°áŁáá˘
Ruijie Networks ᨠP4 á ááŤáŤ á°áá áĽá áá ááłá¨ áá¨áŚá˝ á¨ááŤááŁá áĽá á ááᢠá P4, áŠáŁááŤá ááĽá á°áá áá˝ áááĽ-ááá áááľááá˝á ááá á áĽá ááľá¨áľ áá˝áá.
4) á¨á´ááŽáááŹá˝á á á áŤá˘áá˝;
AT&T á ááľááአááľáĽ áá¨áľ á¨áááááá áŁá ᪠áááá°á P4 á¨ááááŞáŤááš á ááą á¨ááá P4á áá°ááľ á áłáłá áá áá˘
á áśáḠá´ááŽá áááá áĽáá° á¨ááłá¨áť 4.0 ááŽááŤá á áŤá áá ááá á¨ááľááá á°ááŁáŤáľá ááá á¨á˝ áá á ááá˘
5) á´ááŽááłáá°á á˘ááąáľáľáŞ;
áááá Barefoot á¨áśááľáá á á áá áá° á ááłá¨áá¨áĽ áááŞáŤ á ááŽááá áááľá¨áľ á á˛áľ ááŤá˛á áĽáá˛á°ááĽá á áľá˝ááłáá˘
Xilinx ᨠP4.org ááľáŤážá˝ á ááą á˛áá á á 4 ááá áĽáľááľ áá á áááľ ááłá°áá áĽá á FPGA áá á¨á°áá°á¨áą ááŽááŤááŤá ááľá¨áŽá˝á á SmartNIC áĽá NFV áááľáá á áá°áá á á¨ááááŞáŤááš P416 áááá áŞáŤáá˝ á ááąá ᨠSDNet á˛ááá á áŤá á áľáá á ááĽáˇáá˘
6) áśááľáá.
áŞá¤ááá P4 á ááľááአááľáĽ áľááá áŤáá áĽá á áľááá áááĽá á¨ááŤáᣠáłáá áááᣠáá ፠áĽá áá á á¨á°áĽ áááĽáŤá áĽá áŤáááᢠá á˛áľ á¨áá ፠ááá á á áśááľáá áá á á°áá°á¨áą á ááŤá¨áŚá˝ á¨áá፠á ááá á¨áá á¨á° áááľ á á áá˝á á¨ááŤáŤáá áĽá á á áἠáá áááśá˝ ááľáĽ á¨áá°ááĽáŠáľ áŞá¤ááá á¨áá á˘ááąáľáľáŞ áĽáá áľáá´ á áŤá á¨ááááŞáŤá ááᎠááá˘
áľááá á P4 ááá-áááá°á áĽá á¨ááŽáśáŽá-áááá°á á¨ááŽááŤá á ááŁáĽ ááá á˛áá á á˘ááąáľáľáŞ áĽá á á áŤáłááá˝ á¨ááŹáľ ááááá áŁá áŞá áĽáá° ááŽááŤá á áአáááł ááááá˝ áĽá á áá á¨ááá á˛áá áá á á á°áŤá ááĽá ááááá˝ áá ááá áá˝ááᢠááŹáŁ á˘áááá˝ áááľáá áĽá á¨áśááľáá ááá¨áŞáŤáá˝áŁ áááááŤááá ááá¨áŞáŤáá˝áŁ á¤áááŠáá˝áŁ áááŠáá˝áŁ FPGAsᣠSmartNICs áĽá ASICs áŤáŤáľáłáá˘
á¨áááá áá áá áłáá˝ á¨á á°ááŁá áŠá áá°á á á¨áá°á áááł áŤá°áá áĽá á ááľááá á ááá´áá¸á ááľáĽ ááŁá áľáá áŤáá áŤá¨áááŁá.
á˘áŤáľááĽáá áá áááአáá
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;
}
}âŚ
}
ááá° - á¨á°á áá áááá˝á á¨áĽááááá˝ áá á¨ááŤááá á¨áá˝á áááśá˝á áááᢠáľáááśá˝ - ááŹáá áĽáá´áľ áááá á áĽááłáá áľ ááááŤ.
á áá á¨áŚáš áááŹáľ ááľá°ááá áááśá˝á (á á áľá°áłá°á á°á¨á á¨á°áááš) ááááᣠá°ááá -áľáááľ áááá áááášá˘
áĽá˝áá˝ á¨ááááąáľ á áĄ
- áľáááá ááĽááŤ
- á¨á á á áľá á áĽáŤ á°ááá (LPM)
- áśáľáľ áá ááááľ (áááĽá)
table ipv4_lpm{
reads{
ipv4.dstAddr: lpm;
} actions {
forward();
}
}
ááá ááá á¨áá˝á áľáááśá˝ á áľááľáá á á°áá á¨áŚá˝ ááľáĽ áááá˝ á ááŁá¸á.
áĽááááá˝ áŽáľ áĽá ááἠáŤáŤáľáłáᢠáá¨áá á¨áááŁá á¨á áľá°áłá°á á°á¨á (áááłá á¨á áá á áľáŤáťáá˝/áá°áĽ ááĽáŽá˝) ááᢠá¨á°áá°áᣠáá-ááť á¨áá ááŞáá¨áśá˝ á áľáááą ááľáĽ á ááĽáł ááááš áá˝ááᣠááá áá á¨áááŞáŤááš áĽááľ áá°áá á á áá áľá˘ áľááá ᣠáľáááśá˝ ááá ááá áśá˝á ááá áááłá ááááŤáá˝á ááá á áá˝ááá˘
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 áááá˝ áĽá á áá á¨áááá áľá á á°á á°á¨á°á áŤáłáŤáᢠáá á¨á¨áá°á á°á¨á á áááᎠáĽá á¨ááĽááŤ-áľáááľ á á°á á°á¨á°áá á¨áááá˝ ááłá ááŽááŤá ááᢠá¨áááŁá áŞáŤá áá°áľ á¨áááŁá áŞáŤáá á°á¨á á ááá°á áááá áááŽá˝ áŤáááá.
ááŤá áĽááá˝ á ááá˝ á¨á°ááá á ááá´áá¸á áĽá á¤áá á á áááážá˝ áŤáá¸á á¨á°áá°á áááŽá˝ áá¸áᢠáááłá á¨áźáá°á áľááľáŁ ááááŚá˝áŁ ááŁáŞáá˝áŁ ááŁáŞáá˝áŁ ááá°.
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 áá áá¨áŞáŤ
á¨á 4 áááá áŞáŤ (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>
á¨ááá áŽáľ á¨áśááľáá ááá¨áŞáŤ á¤áá áá ááá áá ááá_switch_CLI ááŽááŤá áááá˘
áá áá áĽá ááá˝ ááłááá˝á á¨áá¨ááťá ááá¨áľ áá˝ááá˘
PS á áá áá¨ááľ ááááŞáŤ áá á˘áá´á á¨áááá ááá ááááľ á°á áááá˝á ááááľ á ááĽááľ áááááľ á áŁáś áĽáá ááľáááŽá˝á áááááľ áľááááľ á°ááŤáááᢠááŞá áźáá (á á˘áá´á áŽáááŹá˝á á¨áłáł á´áá°á ááŠá áá áľáŤ á áľááá áĽá áá áľáŤ á áľáŞáŤá ) áĽáá°á°áááŠáľ áá á˘áá´á áľááá á¨áľáŤ áŤááá˝á áĽá ááłáł ááĽá¨á á°áá áá˝ á°á¨á᪠áĽáľáá˝á áĽáá˛áŤááἠáŤáľá˝áááá˘
á áá á áľá°áŤá¨áľ á˘áá´á ᨠFPGA áşáá˝á á ááá¨áľ á¨ááľ á᪠áĽáá°áá áĽá áĽá á á áŁá áĽáŠ á¨áłááľáľ á á¨áŁá˘ áĽááłáá áááááľ á¨ááĽáá ᢠáá áááľ á˘áá´á á˛áᣠáŁáááľ á¨áááľ ááľááŠá á¨ááľáááľ áŁáá áłáá°áľ áĽá á 4 áľáąá˛áŽ á áśáá áĽá áśáá 2 ááľáá áá á¨áŁáľ ááááá˝á áĽá áááŞáá˝á áĽáá°ááŤáá áĽáá áĽáááá˘
ᨠP4 áá
á á¨á°áĽ áŚáá´áá á áŁá - áŠáŁááŤ
ááá: hab.com