เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก P4

เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก P4
P4 เป€เบ›เบฑเบ™เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ—เบตเปˆเบ–เบทเบเบญเบญเบเปเบšเบšเป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ‚เบญเบ‡เปเบžเบฑเบเป€เบเบฑเบ”. เบšเปเปˆเป€เบซเบกเบทเบญเบ™เบเบฑเบšเบžเบฒเบชเบฒเบ—เบตเปˆเปƒเบŠเป‰เบ—เบปเปˆเบงเป„เบ›เป€เบŠเบฑเปˆเบ™ C เบซเบผเบท Python, P4 เป€เบ›เบฑเบ™เบžเบฒเบชเบฒเบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เป‚เบ”เป€เบกเบ™เบ—เบตเปˆเบกเบตเบเบฒเบ™เบญเบญเบเปเบšเบšเบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเปเบฒเบฅเบฑเบšเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบ.

P4 เป€เบ›เบฑเบ™เบžเบฒเบชเบฒเปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบญเบฐเบ™เบธเบเบฒเบ” เปเบฅเบฐเบฎเบฑเบเบชเบฒเป„เบงเป‰เป‚เบ”เบเบญเบปเบ‡เบเบฒเบ™เบšเปเปˆเบซเบงเบฑเบ‡เบœเบปเบ™เบเบณเป„เบฅเบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ P4 Language Consortium. เบกเบฑเบ™เบเบฑเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ”เบ Open Networking Foundation (ONF) เปเบฅเบฐ Linux Foundation (LF), เบชเบญเบ‡เบญเบปเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡ umbrella เบ—เบตเปˆเปƒเบซเบเปˆเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”.
เบžเบฒเบชเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เปƒเบ™เบ›เบต 2013 เปเบฅเบฐเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™ SIGCOMM CCR เบ›เบต 2014 เบ—เบตเปˆเบกเบตเบŠเบทเปˆเบงเปˆเบฒ "Protocol Independent, Packet Routing Processor Programming."

เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบกเบฑเบ™, P4 เป„เบ”เป‰เป€เบ•เบตเบšเปƒเบซเบเปˆเปเบฅเบฐเบžเบฑเบ”เบ—เบฐเบ™เบฒเบขเปˆเบฒเบ‡เป„เบงเบงเบฒ, เบเบฒเบเป€เบ›เบฑเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเบฐเบ—เบดเบšเบฒเบเบเบฒเบ™เบชเบปเปˆเบ‡เบ•เปเปˆเปเบžเบฑเบเป€เบเบฑเบ”เป‚เบ”เบเบญเบธเบ›เบฐเบเบญเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบ, เบฅเบงเบกเบ—เบฑเบ‡เบญเบฐเปเบ”เบšเป€เบ•เบตเป€เบ„เบทเบญเบ‚เปˆเบฒเบ, เบชเบฐเบงเบดเบ”, เปเบฅเบฐ routers.

เบ—เปˆเบฒเบ™ Guru Parulkar, เบœเบนเป‰ เบญเบณ เบ™เบงเบเบเบฒเบ™เบเปˆเบฒเบเบšเปเบฅเบดเบซเบฒเบ™เบ‚เบญเบ‡ Open Networking Foundation เบเปˆเบฒเบงเบงเปˆเบฒ "SDN เป„เบ”เป‰เบซเบฑเบ™เบ›เปˆเบฝเบ™เบญเบธเบ”เบชเบฒเบซเบฐ เบเบณ เป€เบ„เบทเบญเบ‚เปˆเบฒเบ, เปเบฅเบฐ P4 เป€เบญเบปเบฒ SDN เป„เบ›เบชเบนเปˆเบฅเบฐเบ”เบฑเบšเบ•เปเปˆเป„เบ›เป‚เบ”เบเบเบฒเบ™ เบ™เบณ เป€เบญเบปเบฒเป‚เบ„เบ‡เบเบฒเบ™เป„เบ›เบชเบนเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡,".

เบžเบฒเบชเบฒ P4 เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เป‚เบ”เบเบเบธเปˆเบกเบงเบดเบชเบฐเบงเบฐเบเบญเบ™เปเบฅเบฐเบ™เบฑเบเบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบˆเบฒเบ Google, Intel, Microsoft Research, Barefoot, Princeton เปเบฅเบฐ Stanford. เป€เบ›เบปเป‰เบฒเปเบฒเบเปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ: เบชเป‰เบฒเบ‡เบžเบฒเบชเบฒเบ—เบตเปˆเปƒเบŠเป‰เบ‡เปˆเบฒเบเบ—เบตเปˆเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเบญเบšเปเบงเบชเบฒเบกเบฒเบ”เบฎเบฝเบ™เบฎเบนเป‰เปƒเบ™เบกเบทเป‰เปœเบถเปˆเบ‡ เปเบฅเบฐเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบญเบฐเบ—เบดเบšเบฒเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เบงเปˆเบฒเปเบžเบฑเบเป€เบเบฑเบ”เบ–เบทเบเบชเบปเปˆเบ‡เบœเปˆเบฒเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปเบ™เบงเปƒเบ”.

เบ•เบฑเป‰เบ‡เปเบ•เปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, P4 เป„เบ”เป‰เบ–เบทเบเบญเบญเบเปเบšเบšเปƒเบซเป‰เป€เบ›เบฑเบ™เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ” (i.e. เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบ‚เบฝเบ™เปƒเบ™ P4 เบชเบฒเบกเบฒเบ”เบ–เบทเบเบฅเบงเบšเบฅเบงเบกเบšเปเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบ™เบซเบผเบฒเบเป†เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเป€เบŠเบฑเปˆเบ™ ASICs, FPGAs, CPUs, NPUs เปเบฅเบฐ GPUs).

เบžเบฒเบชเบฒเบเบฑเบ‡เป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”เบ‚เบญเบ‡เป‚เบ›เป‚เบ•เบ„เบญเบ™ (เป€เบŠเบฑเปˆเบ™: เป‚เบ›เบฃเปเบเบฃเบก P4 เบชเบฒเบกเบฒเบ”เบญเบฐเบ—เบดเบšเบฒเบเป‚เบ›เบฃเป‚เบ•เบ„เปเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง เบซเบผเบทเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบฅเบฐเบšเบธเบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบขเบนเปˆเปเบšเบšเบเบณเบ™เบปเบ”เป€เบญเบ‡เปƒเปเปˆ).

เปƒเบ™เบญเบธเบ”เบชเบฒเบซเบฐเบเปเบฒ, P4 เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เป‚เบ„เบ‡เบเบฒเบ™เบญเบธเบ›เบฐเบเบญเบ™. เบšเบฒเบ‡เบ—เบตเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ” Internet-RFC เปเบฅเบฐเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ IEEE เบˆเบฐเบฅเบงเบกเป€เบ–เบดเบ‡เบ‚เปเป‰เบเปเบฒเบ™เบปเบ” P4.

P4 เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเบ—เบฑเบ‡เบชเบญเบ‡เบญเบธเบ›เบฐเบเบญเบ™เบ—เบตเปˆเบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆเบ•เบฑเป‰เบ‡เปเบฅเบฐเบ„เบปเบ‡เบ—เบตเปˆ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบฑเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบšเบฑเบ™เบ—เบถเบเบžเบถเบ”เบ•เบดเบเปเบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เบ—เปเปˆเปƒเบ™ Switch Abstraction Interface (SAI) APIs เบ—เบตเปˆเปƒเบŠเป‰เป‚เบ”เบเปเบซเบผเปˆเบ‡เป€เบ›เบตเบ” SONiC switch OS. P4 เบเบฑเบ‡เบ–เบทเบเปƒเบŠเป‰เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™ ONF Stratum เป€เบžเบทเปˆเบญเบญเบฐเบ—เบดเบšเบฒเบเบžเบถเบ”เบ•เบดเบเปเบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เป„เบ›เบ—เบปเปˆเบงเบญเบธเบ›เบฐเบเบญเบ™เบ„เบปเบ‡เบ—เบตเปˆ เปเบฅเบฐ เป‚เบ›เบฃเปเบเบฃเบกเบ—เบตเปˆเบซเบผเบฒเบเบซเบผเบฒเบ.

เบชเปเบฒเบฅเบฑเบšเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”, เบเบฒเบ™เบญเบฐเบ—เบดเบšเบฒเบเบžเบถเบ”เบ•เบดเบเปเบฒเบ‚เบญเบ‡เบชเบฐเบซเบผเบฑเบšเปเบฅเบฐเบ•เบปเบงเบ”เบฑเบ”เปเบ›เบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเป‰เบฒเบ‡เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰. เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบ„เบฅเบฒเบงเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบชเบฒเบกเบฒเบ”เบ—เบปเบ”เบชเบญเบšเปเบฅเบฐเปเบเป‰เป„เบ‚เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบฑเบ‡เบซเบกเบปเบ”เป‚เบ”เบเปƒเบŠเป‰เบŠเปเปเบง, เบซเบผเบธเบ”เบœเปˆเบญเบ™เป€เบงเบฅเบฒเปเบฅเบฐเบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเปƒเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเปƒเบ™เบซเป‰เบญเบ‡เบ—เบปเบ”เบฅเบญเบ‡เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเป‚เบ”เบเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบฎเบฒเบ”เปเบงเบฅเบฒเบ„เบฒเปเบžเบ‡.

เป‚เบ”เบเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ P4, เบœเบนเป‰เบ‚เบฒเบเบญเบธเบ›เบฐเบเบญเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบชเบฒเบกเบฒเบ”เบ„เบฒเบ”เบซเบงเบฑเบ‡เบงเปˆเบฒเบžเบถเบ”เบ•เบดเบเปเบฒเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบปเปˆเบงเป„เบ›เปƒเบ™เบ—เบปเปˆเบงเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ™เปเบฒเปƒเบŠเป‰เบ„เบทเบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš, เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเบญเบšเปเบงเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบ‡เปˆเบฒเบ, เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบฎเปˆเบงเบกเบเบฑเบ™.

เปเบ™เปˆเบ™เบญเบ™, P4 เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบกเบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเบงเบดเบ—เบตเบเบฒเบ™เปƒเบซเบกเปˆเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, P4 เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบขเปˆเบฒเบ‡เบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ telemetry เปเบฅเบฐเบเบฒเบ™เบงเบฑเบ”เปเบ—เบเปƒเบ™เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™, เบงเบดเบชเบฒเบซเบฐเบเบดเบ”เปเบฅเบฐเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™.

เบŠเบธเบกเบŠเบปเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบเบฑเบ‡เป„เบ”เป‰เบเป‰เบฒเบงเบ‚เบถเป‰เบ™. เบเบธเปˆเบกเบ„เบปเป‰เบ™เบ„เป‰เบงเบฒเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบฒเบ‡เบงเบดเบŠเบฒเบเบฒเบ™เบŠเบฑเป‰เบ™เบ™เปเบฒเบซเบผเบฒเบเบเบธเปˆเบกเป„เบ”เป‰เป€เบœเบตเบเปเบœเปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปƒเบซเบกเปˆเบ—เบตเปˆเบซเบ™เป‰เบฒเบ•เบทเปˆเบ™เป€เบ•เบฑเป‰เบ™เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเป‚เบ„เบ‡เบเบฒเบ™ P4, เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”, เบญเบฐเบ™เบธเบชเบฑเบ™เบเบฒเป€เบ›เบฑเบ™เป€เบญเบเบฐเบชเบฑเบ™, เปเบฅเบฐเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™. เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเปƒเบซเบกเปˆเบเปเบฒเบฅเบฑเบ‡เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™, เบ™เบฐเบงเบฑเบ”เบ•เบฐเบเปเบฒเบเปเบฒเบฅเบฑเบ‡เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบˆเบฒเบเบฎเบฒเบ”เปเบงเป„เบ›เบชเบนเปˆเบŠเบญเบšเปเบง, เป€เบฎเบฑเบ”เปƒเบซเป‰เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ—เบตเปˆเบšเปเปˆเบ„เบฒเบ”เบ„เบดเบ”, เปƒเบซเบกเปˆเปเบฅเบฐ ingenious เบญเบญเบเบกเบฒ.

เบŠเบธเบกเบŠเบปเบ™เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป„เบ”เป‰เบ›เบฐเบเบญเบšเบชเปˆเบงเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบฅเบฐเบซเบฑเบ”, เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก, เบ—เปเปˆ, เบฎเบนเบšเปเบšเบšเบžเบถเบ”เบ•เบดเบเปเบฒ, APIs, เบเบญเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš, เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบšเปเบฅเบดเบชเบฑเบ”เป€เบŠเบฑเปˆเบ™: 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

เบ„เบงเบฒเบกเบชเบปเบ”เปƒเบชเบ”เป‰เบฒเบ™เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ

เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก P4
เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบžเบฒเบชเบฒเปเบกเปˆเบ™เบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡, เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เปเบฅเบฐเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เบญเบญเบเปเบšเบšเปเบกเปˆเบ™เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป€เบกเบทเปˆเบญเบ—เบฝเบšเบเบฑเบšเบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ—เบปเปˆเบงเป„เบ›. เบฅเบฑเบเบชเบฐเบ™เบฐเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบžเบฒเบชเบฒเปเบกเปˆเบ™:

  1. เป€เบญเบเบฐเบฅเบฒเบ”เบˆเบฒเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ;
  2. เป€เบญเบเบฐเบฅเบฒเบ”เบ‚เบญเบ‡เบžเบดเบ—เบตเบเบฒเบ™ (s) เบ™เปเบฒเปƒเบŠเป‰;
  3. เบเบฒเบ™เบเบณเบ™เบปเบ”เบ„เปˆเบฒเบžเบฒเบเบชเบฐเปœเบฒเบกเบ„เบทเบ™เปƒเปเปˆ.

เป€เบญเบเบฐเบฅเบฒเบ”เบˆเบฒเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ

เป‚เบ›เบฃเปเบเบก P4 เป„เบ”เป‰เบ–เบทเบเบญเบญเบเปเบšเบšเป€เบžเบทเปˆเบญเปƒเบซเป‰เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบ–เบทเบเบฅเบงเบšเบฅเบงเบกเบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบผเบฒเบเบ›เบฐเป€เบžเบ”, เป€เบŠเบฑเปˆเบ™: เป‚เบ›เป€เบŠเบ”เป€เบŠเบตเบ—เบตเปˆเบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ—เบปเปˆเบงเป„เบ›, FPGAs, system-on-chips, เป‚เบ›เป€เบŠเบ”เป€เบŠเบตเป€เบ„เบทเบญเบ‚เปˆเบฒเบ, เปเบฅเบฐ ASICs. เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ›เบฐเป€เบžเบ”เบ•เปˆเบฒเบ‡เป†เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบญเบตเป‰เบ™เบงเปˆเบฒ P4 เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ, เปเบฅเบฐเปเบ•เปˆเบฅเบฐเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ•เป‰เบญเบ‡เบเบฒเบ™ compiler เป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ P4 เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ. compiler เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบŠเบญเบšเปเบงเบžเบฒเบเบ™เบญเบ, เบซเบผเบทเปเบกเป‰เบเบฐเบ—เบฑเป‰เบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบŸเบฑเบ‡เป„เบ”เป‰. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบซเบผเบฒเบเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบชเปเบฒเบฅเบฑเบšเป‚เบ›เปเบเบก P4 เปเบกเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบžเบฑเบเป€เบเบฑเบ”เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบ, เบกเบฑเบ™เป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เบ—เบปเปˆเบงเป„เบ›เบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบเบดเบ™เบ„เปเบฒเบงเปˆเบฒ "P4 switch" เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ "เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ P4" เปเบกเปˆเบ™เบ–เบทเบเบ•เป‰เบญเบ‡เบเบงเปˆเบฒ.

เป€เบญเบเบฐเบฅเบฒเบ”เบ‚เบญเบ‡เบžเบดเบ—เบตเบเบฒเบ™ (s) เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰

P4 เปเบกเปˆเบ™เบญเบฐเบ™เบธเบชเบฑเบ™เบเบฒเป€เบญเบเบฐเบฅเบฒเบ”. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบžเบฒเบชเบฒเบšเปเปˆเบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡เบชเปเบฒเบฅเบฑเบšเป‚เบ›เป‚เบ•เบ„เบญเบ™เบ—เบปเปˆเบงเป„เบ›เป€เบŠเบฑเปˆเบ™ IP, Ethernet, TCP, VxLAN เบซเบผเบท MPLS. เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ, เป‚เบ›เบฅเปเบเบฅเบก P4 เบญเบฐเบ—เบดเบšเบฒเบเบฎเบนเบšเปเบšเบšเบชเปˆเบงเบ™เบซเบปเบงเปเบฅเบฐเบŠเบทเปˆเบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบ‚เบญเบ‡เป‚เบ›เป‚เบ•เบ„เบญเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™, เป€เบŠเบดเปˆเบ‡เปƒเบ™เบ™เบฑเป‰เบ™เบ–เบทเบเบ•เบตเบ„เบงเบฒเบกเปเบฅเบฐเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เป‚เบ”เบเป‚เบ„เบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเบญเบธเบ›เบฐเบเบญเบ™เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ.

เบเบฒเบ™เบเบณเบ™เบปเบ”เบ„เปˆเบฒเบžเบฒเบเบชเบฐเปœเบฒเบกเบ„เบทเบ™เปƒเปเปˆ

เบฎเบนเบšเปเบšเบšเบžเบฒเบชเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”เบ‚เบญเบ‡เป‚เบ›เบฃเป‚เบ•เบ„เป เปเบฅเบฐเปเบšเบšเบšเปเปˆเบกเบตเบ•เบปเบงเบ•เบปเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบกเบตเบเบฒเบ™เบเบณเบ™เบปเบ”เบ„เปˆเบฒเบ„เบทเบ™เปƒเปเปˆเป„เบ”เป‰โ€”เป€เบ›เบปเป‰เบฒเปเบฒเบ P4 เบ„เบงเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เปเบ›เบ‡เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เปเบžเบฑเบเป€เบเบฑเบ”เป„เบ”เป‰เบซเบผเบฑเบ‡เบˆเบฒเบเบฅเบฐเบšเบปเบšเบ–เบทเบเบ™เบณเปƒเบŠเป‰. เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเบœเบนเบเบกเบฑเบ”เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบกเบเบฑเบšเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบœเปˆเบฒเบ™เป‚เบ›เป€เบŠเบ”เป€เบŠเบตเบ—เบตเปˆเบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ—เบปเปˆเบงเป„เบ›เบซเบผเบทเป‚เบ›เป€เบŠเบ”เป€เบŠเบตเป€เบ„เบทเบญเบ‚เปˆเบฒเบเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบงเบปเบ‡เบˆเบญเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ—เบตเปˆเบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆเบ„เบปเบ‡เบ—เบตเปˆ.

เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบšเปเปˆเบกเบตเบซเบเบฑเบ‡เปƒเบ™เบžเบฒเบชเบฒเบ—เบตเปˆเบˆเบฐเบ›เป‰เบญเบ‡เบเบฑเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เบŠเบธเบ”เป‚เบ›เป‚เบ•เบ„เบญเบ™เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™เป„เบ”เป‰เป‚เบ”เบเบœเบนเป‰เบ‚เบฝเบ™เบžเบฒเบชเบฒเปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบชเบฒเบกเบฒเบ”เบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเปเบฅเบฐเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปเบฅเบฐเบเบฒเบ™เบ›เบฑเบšเบ„เปˆเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบ„เบทเบ™เปƒเบซเบกเปˆ.

เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ‚เบญเบ‡เบžเบฒเบชเบฒเป„เบ”เป‰เบ–เบทเบเบงเบฒเบ‡เป„เบงเป‰เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เป‚เบ”เบเบœเบนเป‰เบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบกเบฑเบ™เป‚เบ”เบเบชเบธเบกเปƒเบชเปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบขเปˆเบฒเบ‡เบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡เปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบ.

เบžเบฒเบชเบฒเป„เบ”เป‰เบ–เบทเบเปƒเบŠเป‰เปเบฅเป‰เบงเปƒเบ™เบšเปเบฅเบดเบชเบฑเบ”เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ:

1) เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™ Hyperscale;

เบšเปเบฅเบดเบชเบฑเบ”เบˆเบตเบ™ Tencent เป€เบ›เบฑเบ™เบšเปเบฅเบดเบชเบฑเบ”เบฅเบปเบ‡เบ—เบถเบ™เบ—เบตเปˆเปƒเบซเบเปˆเบ—เบตเปˆเบชเบธเบ”เปƒเบ™เป‚เบฅเบเปเบฅเบฐเป€เบ›เบฑเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบšเปเบฅเบดเบชเบฑเบ”เบฅเบปเบ‡เบ—เบถเบ™เบ—เบตเปˆเปƒเบซเบเปˆเบ—เบตเปˆเบชเบธเบ”. เบšเปเบฅเบดเบชเบฑเบ”เบเปˆเบญเบเบ‚เบญเบ‡ Tencent, เบ—เบฑเบ‡เบขเบนเปˆเปƒเบ™เบ›เบฐเป€เบ—เบ”เบˆเบตเบ™เปเบฅเบฐเบ›เบฐเป€เบ—เบ”เบญเบทเปˆเบ™เป†เบ—เบปเปˆเบงเป‚เบฅเบ, เบกเบตเบ„เบงเบฒเบกเบŠเปˆเบฝเบงเบŠเบฒเบ™เปƒเบ™เบ”เป‰เบฒเบ™เบ•เปˆเบฒเบ‡เป†เบ‚เบญเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบตเบชเบนเบ‡, เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”เบ•เปˆเบฒเบ‡เป†, เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบ™เบ”เป‰เบฒเบ™เบ›เบฑเบ™เบเบฒเบ›เบฐเบ”เบดเบ”เปเบฅเบฐเบเบฒเบ™เบšเบฑเบ™เป€เบ—เบตเบ‡เบ—เบฒเบ‡เป€เบญเป€เบฅเบฑเบเป‚เบ•เบฃเบ™เบดเบ.

P4 เปเบฅเบฐ routing programmable เปเบกเปˆเบ™เป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบŠเบตเบเป‰เบฒเบงเบซเบ™เป‰เบฒเบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบšเปเบฅเบดเบชเบฑเบ”.

เปƒเบ™เบ–เบฒเบ™เบฐเป€เบ›เบฑเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ•เบปเป‰เบ™เบเปเบฒเป€เบ™เบตเบ”, 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) เบญเบธเบ”เบชเบฒเบซเบฐเบเปเบฒ semiconductor;

เบžเบฒเบชเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰เป€เบ›เบตเบ”เปƒเบซเป‰เปƒเบŠเป‰เบ•เบตเบ™เป€เบ›เบปเปˆเบฒเป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบฐเบšเบงเบ™เบงเบดเบงเบฑเบ”เบญเบฑเบ™เปƒเปเปˆเบชเบณเบฅเบฑเบšเบเบฒเบ™เบชเบฐเปœเบญเบ‡เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ‚เบญเบ‡เบŠเบญเบšเปเบงเปƒเบซเป‰เบเบฑเบšเปเบœเบ™เบเบฒเบ™เบเบณเบ™เบปเบ”เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบ.

Xilinx เปเบกเปˆเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบœเบนเป‰เบเปเปˆเบ•เบฑเป‰เบ‡เบ‚เบญเบ‡ P4.org เปเบฅเบฐเบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเบขเปˆเบฒเบ‡เบˆเบดเบ‡เบˆเบฑเบ‡เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบžเบฒเบชเบฒ P4 เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ FPGA-based programmable platforms เบชเปเบฒเบฅเบฑเบš SmartNIC เปเบฅเบฐ NFV hardware, เบ›เปˆเบญเบเบซเบ™เบถเปˆเบ‡เปƒเบ™ P416 compilers เบ—เปเบฒเบญเบดเบ”เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบญเบญเบเปเบšเบš SDNet.

6) เบŠเบญเบšเปเบง.

VMware เป€เบŠเบทเปˆเบญเบงเปˆเบฒ P4 เบชเป‰เบฒเบ‡เบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™เบญเบฑเบ™เปƒเบซเบเปˆเบซเบผเบงเบ‡, เบ™เบฐเบงเบฑเบ”เบ•เบฐเบเปเบฒ เปเบฅเบฐเบŠเบธเบกเบŠเบปเบ™เบ—เบตเปˆเบเปเบฒเบฅเบฑเบ‡เบ‚เบฑเบšเป€เบ„เบทเปˆเบญเบ™เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบซเบกเบฒเบ เปเบฅเบฐเบˆเปเบฒเป€เบ›เบฑเบ™เปƒเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบ. VMware เป„เบ”เป‰เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบญเบธเบ”เบชเบฒเบซเบฐเบเปเบฒเบ™เบตเป‰เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบเป‰เบญเบ™เบงเปˆเบฒเบ„เบทเป‰เบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡เบ™เบฐเบงเบฑเบ”เบเปเบฒเป„เบ”เป‰เบ–เบทเบเบ‚เบฑเบšเป€เบ„เบทเปˆเบญเบ™เป‚เบ”เบเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆเบŠเบญเบšเปเบงเบ—เบตเปˆเบ‚เบฐเบซเบเบฒเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบซเบฅเป‰เบฒเบชเบธเบ”.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, P4 เปเบกเปˆเบ™เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”เปเบฅเบฐเป‚เบ›เป‚เบ•เบ„เบญเบ™เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบเบญเบธเบ”เบชเบฒเบซเบฐเบเปเบฒเปเบฅเบฐเบ™เบฑเบเบงเบดเบŠเบฒเบเบฒเบ™เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบžเบถเบ”เบ•เบดเบเปเบฒเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ‚เบญเบ‡เปเบžเบฑเบเป€เบเบฑเบ”เป€เบ›เบฑเบ™เป‚เบ›เบผเปเบเบผเบก, เป€เบŠเบดเปˆเบ‡เปƒเบ™เบ™เบฑเป‰เบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบฅเบงเบšเบฅเบงเบกเบชเปเบฒเบฅเบฑเบšเบซเบฅเบฒเบเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ. เปƒเบ™เบกเบทเป‰เบ™เบตเป‰, เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ›เบฐเบเบญเบšเบกเบตเบชเบฐเบซเบผเบฑเบšเบฎเบฒเบ”เปเบงเปเบฅเบฐเบŠเบญเบšเปเบง, เบชเบฐเบซเบผเบฑเบš hypervisor, NPUs, GPUs, FPGAs, SmartNICs เปเบฅเบฐ ASICs.

เบฅเบฑเบเบชเบฐเบ™เบฐเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบžเบฒเบชเบฒเบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเบ‚เบฐเบซเบเบฒเบเบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบกเบฑเบ™เปเบฅเบฐเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบขเปˆเบฒเบ‡เป„เบงเบงเบฒเปƒเบ™เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเป€เบ„เบทเบญเบ‚เปˆเบฒเบ.

เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™

P4 เปเบกเปˆเบ™เป‚เบ„เบ‡เบเบฒเบ™เป€เบ›เบตเบ”, เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒ P4.org

เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™ https://github.com/p4lang, เบšเปˆเบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เปเบฅเบฐ tutorials.

เบ›เป‰เบฒเบเบŠเบทเปˆ เบชเปเบฒเบฅเบฑเบš Eclipse เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ P4, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เปเบ™เบฐเบ™เปเบฒ P4 Studio เบˆเบฒเบเบ•เบตเบ™เป€เบ›เบปเปˆเบฒ.

เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก P4

เบ‚เปเปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบšเบปเบ”เบ„เบฑเบ”เบซเบเปเป‰เบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เปเบเปˆเบ™:

เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบซเบปเบง โ€” เบ”เป‰เบงเบโ€‹เบเบฒเบ™โ€‹เบŠเปˆเบงเบโ€‹เป€เบซเบผเบทเบญโ€‹เบ‚เบญเบ‡โ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒ, เบซเบปเบงโ€‹เป‚เบ›โ€‹เป‚เบ•โ€‹เบ„เบญเบ™โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹.

เบ„เปเบฒเบ™เบดเบเบฒเบก header เบเปเบฒเบ™เบปเบ”:

  • เบฅเบฒเบโ€‹เบฅเบฐโ€‹เบญเบฝเบ”โ€‹เบ‚เบญเบ‡โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบŠเบญเบ‡โ€‹เปเบฅเบฐโ€‹เบŠเบทเปˆโ€‹เบžเบฒเบโ€‹เบชเบฐโ€‹เบซเบ™เบฒเบก headerโ€‹
  • เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ„เบปเบ‡เบ—เบตเปˆ เปเบฅเบฐเบ•เบปเบงเปเบ›เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”

เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™

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 เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบˆเบฐเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เบ‚เบญเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบˆเบฒเบเบชเบฐเบ–เบฒเบ™เบฐเป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบซเบ™เบถเปˆเบ‡เป„เบ›เบซเบฒเบซเบ™เบถเปˆเบ‡เปƒเบ™เบชเบญเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบชเบธเบ”เบ—เป‰เบฒเบ:

เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก 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/เปเบฒเบเป€เบฅเบเบžเบญเบ”). เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™, เบšเปเปˆเบกเบต loop เบชเบฒเบกเบฒเบ”เบ–เบทเบเบฅเบฐเบšเบธเป‚เบ”เบเบเบปเบ‡เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, เปเบ•เปˆเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ„เบฒเบ”เบ„เบฐเป€เบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบšเปเปˆเบชเบฒเบกเบฒเบ”เบกเบต loops เบซเบผเบทเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบ—เบตเปˆเบกเบตเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚.

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 โ€” เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เป€เบžเบทเปˆเบญโ€‹เบชเป‰เบฒเบ‡โ€‹เบเบฐโ€‹เปเบˆโ€‹เบ„เบปเป‰เบ™โ€‹เบซเบฒโ€‹, เบเบฒเบ™โ€‹เบ„เบปเป‰เบ™โ€‹เบซเบฒโ€‹เปƒเบ™โ€‹เบ•เบฒโ€‹เบ•เบฐโ€‹เบฅเบฒเบ‡โ€‹, เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ›เบปเบเบเบฐเบ•เบดเบ‚เบญเบ‡เป‚เบกเบ”เบนเบ™เปเบกเปˆเบ™เบชเบฐเปเบ”เบ‡เบขเบนเปˆเปƒเบ™เบฎเบนเบš:

เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก P4

เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป„เบซเบผ โ€” เบŠเบตเป‰เบšเบญเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเป‚เบกเบ”เบนเบ™ Match-Action เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰. เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ—เบตเปˆโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เบ•เบฒเบกโ€‹เป€เบซเบ”โ€‹เบœเบปเบ™โ€‹เบฅเบฐโ€‹เบ”เบฑเบšโ€‹เบชเบนเบ‡โ€‹เปเบฅเบฐโ€‹เบฅเปเบฒโ€‹เบ”เบฑเบš Match-Action. เบเบฒเบ™เป„เบซเบผเบ‚เบญเบ‡เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบงเบฑเบ”เบ–เบธเบ—เบฑเบ‡เบซเบกเบปเบ”เป‚เบ”เบเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เบ„เบงเบšเบ„เบธเบก.

เบงเบฑเบ”เบ–เบธเบžเบฒเบเบ™เบญเบ เปเบกเปˆเบ™เบงเบฑเบ”เบ–เบธเบชเบฐเป€เบžเบฒเบฐเบ—เบตเปˆเบกเบตเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เปเบฅเบฐเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš API. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ checksum, เบ—เบฐเบšเบฝเบ™, เป€เบ„เบปเบฒเป€เบ•เบต, เป€เบ„เบปเบฒเป€เบ•เบต, เปเบฅเบฐเบญเบทเปˆเบ™เป†.

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 เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ metadata:

  metadata เปเบšเบšเบเบณเบ™เบปเบ”เป€เบญเบ‡ (เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒเบชเบณเบฅเบฑเบšเบ—เบธเบเปเบžเบฑเบเป€เบเบฑเบ”)
    เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปƒเบชเปˆเบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰
    เบกเบตเบขเบนเปˆเบ—เบปเปˆเบงเบ—เปเปˆ
    เบชเบฐเบ”เบงเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบŠเบธเบ” hash

  metadata เบžเบฒเบเปƒเบ™ - เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เป‚เบ”เบเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐ
    เบžเบญเบ”เบ‚เบฒเป€เบ‚เบปเป‰เบฒ, เบžเบญเบ”เบœเบปเบ™เบœเบฐเบฅเบดเบ”เปเบกเปˆเบ™เป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰
    เบเบฒเบ™เบ›เบฐเบ—เบฑเบšเบ•เบฒเป€เบงเบฅเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบŠเบธเบ”เบŠเบธเบ”เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เปเบ–เบง, เบ„เบงเบฒเบกเป€เบฅเบดเบเบ‚เบญเบ‡เปเบ–เบง
    multicast hash / multicast เบ„เบดเบง
    เบšเบนเบฅเบดเบกเบฐเบชเบดเบ”เบ‚เบญเบ‡เบŠเบธเบ”, เบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡เบŠเบธเบ”
    เบ‚เปเป‰เบกเบนเบ™เบˆเปเบฒเป€เบžเบฒเบฐเบ‚เบญเบ‡เบœเบญเบ”เบœเบปเบ™เบœเบฐเบฅเบดเบ” (เป€เบŠเบฑเปˆเบ™: เปเบ–เบงเบœเบปเบ™เบœเบฐเบฅเบดเบ”)

P4 compiler

P4 compiler (P4C) เบชเป‰เบฒเบ‡:

  1. เป€เบงเบฅเบฒเปเบฅเปˆเบ™เบเบปเบ™เบ‚เปเป‰เบกเบนเบ™
  2. API เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบชเบฐเบ–เบฒเบ™เบฐเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเปƒเบ™เบเบปเบ™เบ‚เปเป‰เบกเบนเบ™

เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก P4

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบชเบฐเบซเบผเบฑเบšเบŠเบญเบšเปเบงเปƒเบ™เบžเบฒเบชเบฒ P4

เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ”เบฒเบงเป‚เบซเบผเบ”เป„เบ”เป‰เบˆเบฒเบเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™.

p4lang/p4c-bm: เบชเป‰เบฒเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ JSON เบชเปเบฒเบฅเบฑเบš bmv2
p4lang/bmv2: เบชเบฐเบซเบผเบฑเบšเบŠเบญเบšเปเบงเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเปƒเบˆเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ JSON เบฅเบธเป‰เบ™ bmv2

เบ•เบปเบงเป€เบฅเบเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เปเบœเบ™เบงเบฒเบ”เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเป‚เบ„เบ‡เบเบฒเบ™:

เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก P4

เบเบฒเบ™โ€‹เบซเบกเบนเบ™โ€‹เปƒเบŠเป‰โ€‹เบเบฑเบšโ€‹เบ•เบฒโ€‹เบ•เบฐโ€‹เบฅเบฒเบ‡โ€‹, เบเบฒเบ™โ€‹เบญเปˆเบฒเบ™โ€‹เบˆเบปเบ”โ€‹เบ—เบฐโ€‹เบšเบฝเบ™โ€‹, countersโ€‹:

  • 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.

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ”เบฒเบงเป‚เบซเบฅเบ”เบ™เบตเป‰เปเบฅเบฐเบ•เบปเบงเบขเปˆเบฒเบ‡เบญเบทเปˆเบ™เป†เบˆเบฒเบ repository.

เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก P4

PS เปƒเบ™เบ•เบปเป‰เบ™เบฅเบฐเบ”เบนเบฎเป‰เบญเบ™เบ™เบตเป‰, Intel เป„เบ”เป‰เบฅเบปเบ‡เบ™เบฒเบกเปƒเบ™เบ‚เปเป‰เบ•เบปเบเบฅเบปเบ‡เบ—เบตเปˆเบˆเบฐเบŠเบทเป‰ Barefoot Networks เปƒเบ™เบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเป€เบžเบทเปˆเบญเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰ Hyperscale Cloud เบขเปˆเบฒเบ‡เป„เบงเบงเบฒ. เบ”เบฑเปˆเบ‡เบ—เบตเปˆ Navin Shenoy (เบฎเบญเบ‡เบ›เบฐเบ—เบฒเบ™เบšเปเบฅเบดเบซเบฒเบ™เปเบฅเบฐเบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบ—เบปเปˆเบงเป„เบ›เบ‚เบญเบ‡ Data Center Group เบ—เบตเปˆ Intel Corporation) เบเปˆเบฒเบงเบงเปˆเบฒ, เบ™เบตเป‰เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰ Intel เบชเบฒเบกเบฒเบ”เบชเบฐเบซเบ™เบญเบ‡เบงเบฝเบเบ—เบตเปˆเปƒเบซเบเปˆเบเบงเปˆเบฒเปเบฅเบฐเป‚เบญเบเบฒเบ”เบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบฅเบนเบเบ„เป‰เบฒเบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™.

เปƒเบ™เบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™เบชเปˆเบงเบ™เบ•เบปเบงเบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ„เบงเบ™เบฅเบทเบกเบงเปˆเบฒ Intel เป€เบ›เบฑเบ™เบœเบนเป‰เบ™เปเบฒเปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบŠเบดเบš FPGA เปเบฅเบฐเบกเบฑเบ™เบกเบตเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก Quartus เบ—เบตเปˆเบ”เบตเป€เบฅเบตเบ”. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ„เบฒเบ”เบซเบงเบฑเบ‡เบงเปˆเบฒเบเบฒเบ™เบกเบฒเบฎเบญเบ”เบ‚เบญเบ‡ Intel, Barefoot เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบˆเบฐเบ‚เบฐเบซเบเบฒเบเบชเบฒเบเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™, เปเบ•เปˆเบเบฑเบ‡ Quartus เปเบฅเบฐ P4 Studio เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เปเบฅเบฐเป€เบžเบตเปˆเบกเบขเปˆเบฒเบ‡เบˆเบดเบ‡เบˆเบฑเบ‡เบเบฑเบšเบชเบฒเบ Toffino เปเบฅเบฐ Toffino 2.

เบชเบฐเบกเบฒเบŠเบดเบเบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบŠเบธเบกเบŠเบปเบ™ P4 - เบšเปเบฅเบดเบชเบฑเบ” เบเบธเปˆเบกเบ›เบฑเบ”เป„เบˆ.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™