Programming Language Techniques for Modular Router Configurations
This paper applies programming language techniques to a high-level system description, both to optimize the system and to prove useful properties about it. The system in question is Click, a modular software router framework. Click routers are built from components called elements. Elements are writ...
Main Authors: | , , , , |
---|---|
Published: |
2023
|
Online Access: | https://hdl.handle.net/1721.1/149915 |
_version_ | 1826190140903522304 |
---|---|
author | Kohler, Eddie Chen, Benjie Kaashoek, M. Frans Morris, Robert T. Poletto, Massimiliano |
author_facet | Kohler, Eddie Chen, Benjie Kaashoek, M. Frans Morris, Robert T. Poletto, Massimiliano |
author_sort | Kohler, Eddie |
collection | MIT |
description | This paper applies programming language techniques to a high-level system description, both to optimize the system and to prove useful properties about it. The system in question is Click, a modular software router framework. Click routers are built from components called elements. Elements are written in C++, but the user creates a configuration using a simple, declarative data flow language. This language is amenable to data flow analysis and other conventional programming language techniques. Applied to a router configuration, these techniques have high-level results---for example, optimizing the router or verifying its high-level properties. This paper describes several programming language techniques that have been useful in practice, including optimization tools that remove virtual function calls from router definitions and remove redundant parts of adjacent routers. We also present performance results for an extensively optimized standards-compliant IP router. On conventional PC hardware, this router can forward up to 456,000 64-byte packets per second. |
first_indexed | 2024-09-23T08:35:40Z |
id | mit-1721.1/149915 |
institution | Massachusetts Institute of Technology |
last_indexed | 2024-09-23T08:35:40Z |
publishDate | 2023 |
record_format | dspace |
spelling | mit-1721.1/1499152023-03-30T04:20:16Z Programming Language Techniques for Modular Router Configurations Kohler, Eddie Chen, Benjie Kaashoek, M. Frans Morris, Robert T. Poletto, Massimiliano This paper applies programming language techniques to a high-level system description, both to optimize the system and to prove useful properties about it. The system in question is Click, a modular software router framework. Click routers are built from components called elements. Elements are written in C++, but the user creates a configuration using a simple, declarative data flow language. This language is amenable to data flow analysis and other conventional programming language techniques. Applied to a router configuration, these techniques have high-level results---for example, optimizing the router or verifying its high-level properties. This paper describes several programming language techniques that have been useful in practice, including optimization tools that remove virtual function calls from router definitions and remove redundant parts of adjacent routers. We also present performance results for an extensively optimized standards-compliant IP router. On conventional PC hardware, this router can forward up to 456,000 64-byte packets per second. 2023-03-29T15:33:47Z 2023-03-29T15:33:47Z 2000-08 https://hdl.handle.net/1721.1/149915 MIT-LCS-TR-812 application/pdf |
spellingShingle | Kohler, Eddie Chen, Benjie Kaashoek, M. Frans Morris, Robert T. Poletto, Massimiliano Programming Language Techniques for Modular Router Configurations |
title | Programming Language Techniques for Modular Router Configurations |
title_full | Programming Language Techniques for Modular Router Configurations |
title_fullStr | Programming Language Techniques for Modular Router Configurations |
title_full_unstemmed | Programming Language Techniques for Modular Router Configurations |
title_short | Programming Language Techniques for Modular Router Configurations |
title_sort | programming language techniques for modular router configurations |
url | https://hdl.handle.net/1721.1/149915 |
work_keys_str_mv | AT kohlereddie programminglanguagetechniquesformodularrouterconfigurations AT chenbenjie programminglanguagetechniquesformodularrouterconfigurations AT kaashoekmfrans programminglanguagetechniquesformodularrouterconfigurations AT morrisrobertt programminglanguagetechniquesformodularrouterconfigurations AT polettomassimiliano programminglanguagetechniquesformodularrouterconfigurations |