TY - GEN
T1 - Elastic Switch Programming with P4All
AU - Hogan, Mary
AU - Landau-Feibish, Shir
AU - Tahmasbi Arashloo, Mina
AU - Rexford, Jennifer
AU - Walker, David
AU - Harrison, Rob
N1 - Publisher Copyright:
© 2020 ACM.
PY - 2020/11/4
Y1 - 2020/11/4
N2 - The P4 language enables a range of new network applications. However, it is still far from easy to implement and optimize P4 programs for PISA hardware. Programmers must engage in a tedious "trial and error"process wherein they write their program (guessing it will fit within the hardware) and then check by compiling it. If it fails, they repeat the process. In this paper, we argue that programmers should define elastic data structures that stretch automatically to make use of available switch resources. We present P4All, an extension of P4 that supports elastic switch programming. Elastic data structures also make P4All modules reusable across different applications and hardware targets, where resource needs and constraints may vary.Our design is oriented around use of symbolic primitives (integers that may take on a range of possible values at compile time), arrays, and loops. We show how to use these primitive mechanisms to build a range of reusable libraries such as hash tables, Bloom filters, sketches, and key-value stores. We also explain the important role that elasticity plays in modular programming, and we allow programmers to declare utility functions that control the relative share of data-plane resources apportioned to each module.
AB - The P4 language enables a range of new network applications. However, it is still far from easy to implement and optimize P4 programs for PISA hardware. Programmers must engage in a tedious "trial and error"process wherein they write their program (guessing it will fit within the hardware) and then check by compiling it. If it fails, they repeat the process. In this paper, we argue that programmers should define elastic data structures that stretch automatically to make use of available switch resources. We present P4All, an extension of P4 that supports elastic switch programming. Elastic data structures also make P4All modules reusable across different applications and hardware targets, where resource needs and constraints may vary.Our design is oriented around use of symbolic primitives (integers that may take on a range of possible values at compile time), arrays, and loops. We show how to use these primitive mechanisms to build a range of reusable libraries such as hash tables, Bloom filters, sketches, and key-value stores. We also explain the important role that elasticity plays in modular programming, and we allow programmers to declare utility functions that control the relative share of data-plane resources apportioned to each module.
UR - http://www.scopus.com/inward/record.url?scp=85097097296&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=85097097296&partnerID=8YFLogxK
U2 - 10.1145/3422604.3425933
DO - 10.1145/3422604.3425933
M3 - Conference contribution
AN - SCOPUS:85097097296
T3 - HotNets 2020 - Proceedings of the 19th ACM Workshop on Hot Topics in Networks
SP - 168
EP - 174
BT - HotNets 2020 - Proceedings of the 19th ACM Workshop on Hot Topics in Networks
PB - Association for Computing Machinery, Inc
T2 - 19th ACM Workshop on Hot Topics in Networks, HotNets 2020
Y2 - 4 November 2020 through 6 November 2020
ER -