An Embedded Language Approach to Router Specification in Curry

  • J. Guadalupe Ramos
  • Josep Silva
  • Germán Vidal
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2932)


The development of modern routers require a significant effort to be designed, built, and verified. While hardware routers are faster, they are difficult to configure and maintain. Software routers, on the other hand, are slower but much more flexible, easier to configure and maintain, less expensive, etc. Recently, a modular architecture and toolkit for building software routers and other packet processors has been introduced: the Click system. It includes a specification language with features for declaring and connecting router elements and for designing abstractions.

In this work, we introduce the domain-specific language Rose for the specification of software routers. Rose is embedded in Curry, a modern declarative multi-paradigm language. An advantage of this approach is that we have available a framework where router specifications can be transformed, optimized, verified, etc., by using a number of existing formal techniques already developed for Curry programs. Furthermore, we show that the features of Curry are particularly useful to specify router configurations with a high-level of abstraction. Our first experiments point out that the proposed methodology is both useful and practical.


Composition Operator Input Stream Output Stream Packet Source Packet Stream 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Albert, E., Hanus, M., Vidal, G.: A Practical Partial Evaluation Scheme for Multi- Paradigm Declarative Languages. Journal of Functional and Logic Programming 2002 (2002)Google Scholar
  2. 2.
    Alpuente, M., Falaschi, M., Moreno, G., Vidal, G.: A Transformation System for Lazy Functional Logic Programs. In: Middeldorp, A. (ed.) FLOPS 1999. LNCS, vol. 1722, pp. 147–162. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  3. 3.
    Claessen, K.: Embedded Languages for Describing and Verifying Hardware. PhD Thesis, Chalmers University of Technology and Gø̈teborg University, Department of Computing Science (2001) Google Scholar
  4. 4.
    Cousot, P., Cousot, R.: Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints. In: Proc. of 4th ACM Symp. on Principles of Programming Languages, pp. 238–252 (1977)Google Scholar
  5. 5.
    Cousot, P., Cousot, R.: Systematic Design of Program Analysis Frameworks. In: Proc. of 6th ACM Symp. on Principles of Programming Languages, pp. 269–282 (1979)Google Scholar
  6. 6.
    Gottlieb, Y., Peterson, L.: A Comparative Study of Extensible Routers. In: 2002 IEEE Open Architectures and Network Programming Proceedings, pp. 51–62 (2002)Google Scholar
  7. 7.
    Hanus, M.: Distributed Programming in a Multi-Paradigm Declarative Language. In: Nadathur, G. (ed.) PPDP 1999. LNCS, vol. 1702, pp. 376–395. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  8. 8.
    Hanus, M., Antoy, S., Koj, J., Sadre, R., Steiner, F.: PAKCS 1.5: The Portland Aachen Kiel Curry System User Manual. Technical report, University of Kiel, Germany (2003)Google Scholar
  9. 9.
    Hanus, M. (ed.): Curry: An Integrated Functional Logic Language, Available at,
  10. 10.
    Kohler, E.: The Click Modular Router. PhD thesis, Massachusetts Institute of Technology (2001)Google Scholar
  11. 11.
    Kohler, E., Morris, R., Chen, B., Jannotti, J., Kaashoek, M.: The Click Modular Router. ACM Transactions on Computer Systems 18, 263–297 (2000)CrossRefGoogle Scholar
  12. 12.
    Matthews, J.: Algebraic Specification and Verification of Processor Microarchitectures. PhD thesis, University of Washington (2000)Google Scholar
  13. 13.
    Moreno-Navarro, J., Rodríguez-Artalejo, M.: Logic Programming with Functions and Predicates: The language Babel. Journal of Logic Programming 12, 191–224 (1992)zbMATHCrossRefGoogle Scholar
  14. 14.
    Peterson, L., Karlin, S., Li, K.: OS Support for General-Purpose Routers. In: Workshop on Hot Topics in Operating Systems (Hot-OS-VII), IEEE Computer Society Technical Committee on Operating Systems, pp. 38–43 (1999)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2004

Authors and Affiliations

  • J. Guadalupe Ramos
    • 1
  • Josep Silva
    • 2
  • Germán Vidal
    • 2
  1. 1.Instituto Tecnológico de La PiedadMeseta los Laureles, La Piedad, Mich.México
  2. 2.DSIC, UPVValenciaSpain

Personalised recommendations