Slide 1

Slide 1 text

Research Paper Introduction #31 “P4: Programming Protocol-Independent Packet Processors” ௨ࢉ#88 @cafenero_777 2021/12/02 1

Slide 2

Slide 2 text

Agenda •ର৅࿦จ •֓ཁͱಡ΋͏ͱͨ͠ཧ༝ 1. INTRODUCTION 2. ABSTRACT FORWARDING MODEL 3. A PROGRAMMING LANGUAGE 4. P4 LANGUAGE BY EXAMPLE 5. COMPILING A P4 PROGRAM 6. CONCLUSION 2

Slide 3

Slide 3 text

ର৅࿦จ •P4: Programming Protocol-Independent Packet Processors • Pat Bosshart†, Dan Daly*, Glen Gibb†, Martin Izzard†, Nick McKeown‡, Jennifer Rexford**, Cole Schlesinger**, Dan Talayco†, Amin Vahdat¶, George Varghese§, David Walker** • †Barefoot Networks, *Intel, ‡Stanford University, **Princeton University, ¶Google, §Microsoft Research • ACM SIGCOM ’14 • https://dl.acm.org/doi/abs/10.1145/2656877.2656890 3

Slide 4

Slide 4 text

֓ཁͱಡ΋͏ͱͨ͠ཧ༝ •֓ཁ • SDN/OpenFlow 2.0ͱͯ͠ͷఏҊ • Recon fi gurability, Protocolඇґଘ, Targetඇґଘͳઃܭ •ಡ΋͏ͱͨ͠ཧ༝ • P4ͷݪయ • P4͕ಈ͘HW͕ͪΒ΄Βग़͖ͯͨ • ΞϦόόࣄྫͰڵຯ͕༙͍ͨ 4 https://p4.org/

Slide 5

Slide 5 text

P4ରԠNICʁʂ https://youtu.be/qtxsw8Y0C8Y?t=538 https://xtech.nikkei.com/atcl/nxt/news/18/08892/ NVIDIA DOCA (Data-Center-Infrastructure-on-a-Chip Architecture) Intel IPU (Infrastructure Processing Unit) 2020/10/06 2021/08/19 5

Slide 6

Slide 6 text

P4ରԠNICʁʂ NVIDIA DOCA (Data-Center-Infrastructure-on-a-Chip Architecture) Intel IPU (Infrastructure Processing Unit) https://youtu.be/qtxsw8Y0C8Y?t=538 https://xtech.nikkei.com/atcl/nxt/news/18/08892/ 2020/10/06 2021/08/19 6

Slide 7

Slide 7 text

1. INTRODUCTION •SDN: Software-De fi ned Networking • Data-planeͱControl-planeͷ෼཭ͯ͠(OpenFlowͷΑ͏ͳ)ڞ௨I/FΛར༻ • ࢓༷֦ுʹ௥ैͰ͖Δॊೈੑͷ͋Δmatch/actionϝΧχζϜ͕΄͍͠ •ΠϚυΩͷNW ASIC • Tbpsग़ͤΔ͕ϓϩάϥϛϯά͸༰қͰ͸ͳ͍ • ϓϩτίϧඇґଘͷߴϨϕϧݴޠ͕ཉ͘͠ͳΔɻྫɿӈਤ •P4ઃܭͷΰʔϧ • Recon fi gurabilityɿύέοτͷύʔεͱॲཧΛ࠶ઃఆ͍ͤͨ͞ • ϓϩτίϧඇґଘɿϔομநग़ͱɺͦΕʹ߹Θͤͨmatch/actionॲཧ • λʔήοτඇґଘɿߴڃݴޠͰॻ͍ͯɺͲͷεΠονͰ΋ಈ͔ͤΔΑ͏ʹ͍ͨ͠ 7

Slide 8

Slide 8 text

2. ABSTRACT FORWARDING MODEL •ϑΥϫʔσΟϯάϞσϧ • ϓϩάϥϚϒϧͳύʔαʔ • ฒྻͳmatch/action • ϓϦϛςΟϒͳaction •૝ఆ༻్: SW/RT/LB, ASIC/NPU/FPGA/SW con fi gure:
 parser/match/actionͷॲཧͷܾఆ
 ʢϓϩάϥϜͦͷ΋ͷʣ population:
 entry/table/policyͷ௥Ճɾ࡟আʢઃఆʣ ύέοτ୯ҐͰͷॲཧ͸Ͱ͖ͳ͍ 8

Slide 9

Slide 9 text

3. A PROGRAMMING LANGUAGE •P4ݴޠͷઃܭͷಛ௃ • ༷ʑͳݴޠɾ΍Γํ͕͋Δ • طଘྫɿClick (C++ͰϞδϡʔϧ࣮૷) • CPUલఏͷͨΊɺHWͳmatch/action͕ఆٛ͠ʹ͍͘ • ฒྻ࣮૷͕Ͱ͖ͳ͍ • Table Dependency Graphs (TDGs)ʹ஫໨͢Δ • ֤ϔομॲཧʹґଘؔ܎͕͋ΓɺฒྻԽͰ͖ͳ͍Մೳੑ༗Γ • ʢී௨ͷϓϩάϥϚ͸ʣΞϧΰϦζϜΛஞ໋࣍ྩͰॻ͍ͯ͠·͍͕ͪ • ໋ྩܕݴޠͰॻ͍ͯɺίϯύΠϥ͕TDGʹม׵͠ґଘղੳΛͯ͠ɺλʔήοτʹϚοϐϯά͢Δ 9

Slide 10

Slide 10 text

4. P4 LANGUAGE BY EXAMPLE (1/7) ४උฤ •૝ఆ՝୊ɿedge/coreߏ੒ɺL2 table͕ංେԽͨ͠ͷͰcoreͷෛՙΛͲ͏ʹ͔͍ͨ͠ • mTagϓϩτίϧΛ࡞ͬͯΈΔ • ֊૚తϧʔςΟϯά(PortLand)΍ϥϕϧసૹ(MPLS)ͬΆ͍΋ͷ • 32bit (4byte)ϔομͰૹ৴ݩϧʔτ΍ѼઌࣝผࢠΛදݱ͠ɺcoreͰ͸MACΞυϨεͷ୅ΘΓʹmTagΛ࢖͏ ToR2 L2seg A L2seg B L2seg B L2seg C L2seg͕ංେԽʂ Core ToR1 ToR3 L2seg C L2seg A ToR2 L2seg A L2seg B L2seg B L2seg C Core ToR1 ToR3 L2seg C L2seg A mTag: “1->3”Λ෇༩ mTagͷΈΛݟͯɺ3ʹసૹ pureͳL2ߏ੒ mTagΛ༻͍ͨL2ෛՙܰݮߏ੒ ྫ୊Πϝʔδ 10

Slide 11

Slide 11 text

4. P4 LANGUAGE BY EXAMPLE (2/7) P4ίϯηϓτ •P4ίϯηϓτ • Header: Ұ࿈ͷϑΟʔϧυͷॱংɾαΠζ • Parser: ༗ޮͳϔομͷಛఆ • Table: match͢ΔϑΟʔϧυͱactionΛࢦఆ • Action: (tableʹґଘͤ͞)ϓϩτίϧґଘ͠ͳ͍ • Control Programs: match/actionͷॱংΛܾΊΔ 11 ஫ɿຊ෺ͷP4ݴޠͱ͸ҧ͏఺ʹ஫ҙ

Slide 12

Slide 12 text

4. P4 LANGUAGE BY EXAMPLE (3/7) Header •Header: Ұ࿈ͷϑΟʔϧυͷॱংɾαΠζ •coreͷ2૚ͷҐஔ(1/2)ͱ޲͖(up/down)ΛϔομͰఆٛ ethernetͱvlanϔομͷఆٛ 12 ToR2 ToR1 ToR3 up1 down1 down2 up2 https://ja.wikipedia.org/wiki/IEEE_802.1Q Core tier1 Core tier2 Core tire1 Core tier2

Slide 13

Slide 13 text

4. P4 LANGUAGE BY EXAMPLE (4/7) Parser •Parser: ༗ޮͳϔομͷಛఆ • ϔομΛ૸ࠪͯ͠ϑΟʔϧυΛநग़͠ɺ
 ϑΟʔϧυ஋ʹԠͯ͡ҧ͏ParserͰॲཧ • ϔομ͔Βϔομ΁ભҠʢstate machineʣ • start͔Β໌ࣔతͳstop΍unhandled case·Ͱܧଓ 13

Slide 14

Slide 14 text

4. P4 LANGUAGE BY EXAMPLE (5/7) Table • Table: match͢ΔϑΟʔϧυͱactionΛࢦఆ (ྫ: mTag) • readsଐੑ: match৚݅Λఆٛ • L2 dstͱvlan͸exact match • actions: ࣮ࡍʹύέοτ΁ͷద༻ॲཧ • add_mTag • max_sizeଐੑ: ςʔϒϧΤϯτϦ਺ 14

Slide 15

Slide 15 text

4. P4 LANGUAGE BY EXAMPLE (6/7) Action •primitiveͳΞΫγϣϯͷίϨΫγϣϯͰෳࡶͳΞΫγϣϯΛ࣮ݱ •ฒྻ࣮ߦ͕લఏ •primitiveྫ • add_header(): ಛఆϔομͷ༗ޮԽ • remove_header(): ϔομͷ࡟আ (pop) • set_ fi eld(): ಛఆϑΟʔϧυΛηοτ • copy_ fi eld(): ͋ΔϑΟʔϧυ஋ΛผͷϑΟʔϧυʹίϐʔ • increment() : ϑΟʔϧυ஋ͷ૿Ճorݮগ • checksum(): csumܭࢉʢIPv4 checksumͳͲʣ 15

Slide 16

Slide 16 text

4. P4 LANGUAGE BY EXAMPLE (7/7) The Control Program •edgeͰͷड৴࣌ͷ੍ޚͷྲྀΕɿӈਤ • source_check: core઀ଓϙʔτ͔Β͔ • local_switching: ࣗ਎ͷL2഑Լʹ͍Δ͔ • mTag_table: ͍ͳ͚Ε͹mTagΛ෇͚Δ • egress_check: C-planeʹѼઌෆ໌Λ௨஌ͳͲ 16

Slide 17

Slide 17 text

5. COMPILING A P4 PROGRAM (1/2) ཁ݅ͱ֓ཁ •ίϯύΠϥཁ݅ • Parsersͷੜ੒ • fi xed parser: parserهड़͕Ұக͢Δ͔Λ֬ೝ͢Δ͚ͩ • programable parser: parserهड़Λparsing state machineʹม׵ • Control Programsͷੜ੒ 1. ϑϩϯτΤϯυ • ςʔϒϧґଘؔ܎ʢϓϩτίϧɾϨΠϠʔґଘؔ܎ʣͷղੳͱґଘղܾɺฒྻॲཧԽ 2. όοΫΤϯυ • targetݻ༗ͷಛఆϦιʔεʢSW, NPU΍M/A pipelineͳͲʣʹϚοϐϯά͠con fi gurationੜ੒ 17

Slide 18

Slide 18 text

5. COMPILING A P4 PROGRAM (2/2) ྫɿmTagΛ֤targetʹίϯύΠϧ͢Δ •Software SW: • parser/tableΛ׬શʹ࠶ݱͰ͖Δɻάϥϑϊʔυ͔Β௚઀tableʹmappingͰ͖Δɻ • table size΍matchछผ΋ࣗ༝ʹ࢖͑Δ •HW w/ RAM/TCAM: • edgeͰ͸RAMͰਖ਼֬ͳhash match, coreͰ͸TCAMΛ༻͍ͯసૹ •HW w/ parallel table: σʔλͷґଘੑ͔Βฒྻor௚ྻͰ഑ஔ • mTagΛ෇͚Δॴ·Ͱ͸ฒྻॲཧͰ͖Δ •HW w/ action at the end of pipeline • தؒεςʔδͰϝμσʔλΛੜ੒ͯ͠ɺ࠷ޙʹ࢖͏ɻmTag͕௥Ճ͞Ε͔ͨɺͳͲɻ •HW w/ a few tables: • ଟ਺ͷtableΛগ਺ͷ෺ཧtableʢϝϞϦʣʹϚοϐϯάɻlocal switchingͱmTagͷ2ͭΛ1ͭͷςʔϒϧʹ߹੒͢Δ 18

Slide 19

Slide 19 text

6. CONCLUSION •աڈͷSDN: C-planeΛ࢖͍ɺAPI (OpenFlow)Λ࢖࣮ͬͯݱ • fi xed functionͳεΠον͕ର৅ •Next SDN: ΑΓॊೈͳύέοτॲཧͷ࣮ݱ΁ • parser/match/actionΛࣗ༝ʹϓϩάϥϜͰ͖ΔͨΊʹԿ͕ඞཁ͔ • state machine, tableґଘɺP4ݴޠ/ίϯύΠϥɺλʔήοτHW • NWͷՄೳੑΛ޿͍͛ͨ 19

Slide 20

Slide 20 text

ࡾߦ·ͱΊ •SDN 2.0ͱͯ͠ύέοτॲཧ࣮૷ͦͷ΋ͷ΋Software De fi neͰ͖ΔΑ͏ʹ͍ͨ͠ •ߴ଎ԽΛ໨ࢦͯ͠ฒྻԽɺϔομॲཧґଘʢϨΠϠґଘʣɺ֤HWରԠ͕ඞਢ •ߴڃݴޠ (P4) Ͱ͜ΕΛ࣮ݱ͍ͯ͘͠ 20

Slide 21

Slide 21 text

׬૸ͨ͠ײ૝ •എܠɾϞνϕʔγϣϯ͸OpenFlowΛ࢖͍ͬͯΔͷͰೃછΈਂ͍ •࣮૷͸;Θͬͱͨ͠ղઆ •ݴޠ΍ίϯύΠϥͷ࿩͸ਖ਼௚͋·Γϐϯͱ͜ͳ͍ɺோΊ͍ͯΔ͚ͩײ •ͪΌΜͱP4ಡΈ͍ͨɾॻ͖͍ͨ 21

Slide 22

Slide 22 text

EoP 22