skip to main content
research-article

A Coalgebraic Decision Procedure for NetKAT

Published:14 January 2015Publication History
Skip Abstract Section

Abstract

NetKAT is a domain-specific language and logic for specifying and verifying network packet-processing functions. It consists of Kleene algebra with tests (KAT) augmented with primitives for testing and modifying packet headers and encoding network topologies. Previous work developed the design of the language and its standard semantics, proved the soundness and completeness of the logic, defined a PSPACE algorithm for deciding equivalence, and presented several practical applications.

This paper develops the coalgebraic theory of NetKAT, including a specialized version of the Brzozowski derivative, and presents a new efficient algorithm for deciding the equational theory using bisimulation. The coalgebraic structure admits an efficient sparse representation that results in a significant reduction in the size of the state space. We discuss the details of our implementation and optimizations that exploit NetKAT's equational axioms and coalgebraic structure to yield significantly improved performance. We present results from experiments demonstrating that our tool is competitive with state-of-the-art tools on several benchmarks including all-pairs connectivity, loop-freedom, and translation validation.

Skip Supplemental Material Section

Supplemental Material

p343-sidebyside.mpg

References

  1. Carolyn Jane Anderson, Nate Foster, Arjun Guha, Jean-Baptiste Jeannin, Dexter Kozen, Cole Schlesinger, and David Walker. NetKAT: Semantic foundations for networks. In POPL, pages 113--126, January 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Thomas Ball, Nikolaj Bjorner, Aaron Gember, Shachar Itzhaky, Aleksandr Karbyshev, Mooly Sagiv, Michael Schapira, and Asaf Valadarsky. Vericon: Towards verifying controller programs in software-defined networks. In PLDI, pages 282--293, June 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Filippo Bonchi, Marcello M. Bonsangue, Jan J. M. M. Rutten, and Alexandra Silva. Brzozowski's algorithm (co)algebraically. In Logic and Program Semantics--Essays Dedicated to Dexter Kozen on the Occasion of His 60th Birthday, pages 12--23, April 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Filippo Bonchi and Damien Pous. Checking NFA equivalence with bisimulations up to congruence. In POPL, pages 457--468, January 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Thomas Braibant and Damien Pous. Deciding Kleene algebras in Coq. Logical Methods in Computer Science, 8(1:16):1--42, 2012.Google ScholarGoogle Scholar
  6. Sabine Broda, António Machiavelo, Nelma Moreira, and Rogério Reis. On the average size of Glushkov and equation automata for KAT expressions. In FCT, pages 72--83, August 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Marco Canini, Daniele Venzano, Peter Peresíni, Dejan Kostić, and Jennifer Rexford. A NICE way to test OpenFlow applications. In NSDI, April 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Hubie Chen and Riccardo Pucella. A coalgebraic approach to Kleene algebra with tests. In CMCS, pages 94--109, July 2003.Google ScholarGoogle ScholarCross RefCross Ref
  9. Ernie Cohen, Dexter Kozen, and Frederick Smith. The complexity of Kleene algebra with tests. Technical Report TR96--1598, Computer Science Department, Cornell University, July 1996. Google ScholarGoogle Scholar
  10. Andrew D. Ferguson, Arjun Guha, Chen Liang, Rodrigo Fonseca, and Shriram Krishnamurthi. Participatory networking: An API for application control of SDNs. In SIGCOMM, pages 327--338, August 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Nate Foster, Rob Harrison, Michael J. Freedman, Christopher Monsanto, Jennifer Rexford, Alec Story, and David Walker. Frenetic: A network programming language. In ICFP, pages 279--291, September 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Arjun Guha, Mark Reitblatt, and Nate Foster. Machine-verified network controllers. In PLDI, pages 483--494, June 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. John E. Hopcroft and Richard M. Karp. A linear algorithm for testing equivalence of finite automata. Technical Report 71--114, University of California, 1971.Google ScholarGoogle Scholar
  14. Sushant Jain, Alok Kumar, Subhasree Mandal, Joon Ong, Leon Poutievski, Arjun Singh, Subbaiah Venkata, Jim Wanderer, Junlan Zhou, Min Zhu, Jonathan Zolla, Urs Hölzle, Stephen Stuart, and Amin Vahdat. B4: Experience with a globally-deployed software defined WAN. In SIGCOMM, pages 3--14, August 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Ethan Katz-Bassett, Colin Scott, David R. Choffnes, Ítalo Cunha, Vytautas Valancius, Nick Feamster, Harsha V. Madhyastha, Thomas Anderson, and Arvind Krishnamurthy. LIFEGUARD: Practical repair of persistent route failures. In SIGCOMM, pages 395--406, August 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Peyman Kazemian, George Varghese, and Nick McKeown. Header space analysis: Static checking for networks. In NSDI, April 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Ahmed Khurshid, Xuan Zou, Wenxuan Zhou, Matthew Caesar, and P. Brighten Godfrey. VeriFlow: Verifying network-wide invariants in real time. In NSDI, April 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. S. Knight, H.X. Nguyen, N. Falkner, R. Bowden, and M. Roughan. The internet topology zoo. IEEE Selected Areas in Communications, 29(9):1765--1775, October 2011.Google ScholarGoogle ScholarCross RefCross Ref
  19. Teemu Koponen, Keith Amidon, Peter Balland, Martín Casado, Anupam Chanda, Bryan Fulton, Igor Ganichev, Jesse Gross, Natasha Gude, Paul Ingram, Ethan Jackson, Andrew Lambeth, Romain Lenglet, Shih-Hao Li, Amar Padmanabhan, Justin Pettit, Ben Pfaff, Rajiv Ramanathan, Scott Shenker, Alan Shieh, Jeremy Stribling, Pankaj Thakkar, Dan Wendlandt, Alexander Yip, and Ronghua Zhang. Network virtualization in multi-tenant datacenters. In NSDI, April 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Teemu Koponen, Martin Casado, Natasha Gude, Jeremy Stribling, Leon Poutievski, Min Zhu, Rajiv Ramanathan, Yuichiro Iwata, Hiroaki Inoue, Takayuki Hama, and Scott Shenker. Onix: A distributed control platform for large-scale production networks. In OSDI, pages 351--364, October 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Dexter Kozen. A completeness theorem for Kleene algebras and the algebra of regular events. Information and Computation, 110(2):366--390, May 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Dexter Kozen. Kleene algebra with tests. Transactions on Programming Languages and Systems, 19(3):427--443, May 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Dexter Kozen. On the coalgebraic theory of Kleene algebra with tests. Technical Report http://hdl.handle.net/1813/10173, Computing and Information Science, Cornell University, March 2008.Google ScholarGoogle Scholar
  24. Dexter Kozen and Frederick Smith. Kleene algebra with tests: Completeness and decidability. In CSL, pages 244--259, September 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Boon Thau Loo, Joseph M. Hellerstein, Ion Stoica, and Raghu Ramakrishnan. Declarative routing: Extensible routing with declarative queries. In SIGCOMM, pages 289--300, August 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Christopher Monsanto, Nate Foster, Rob Harrison, and David Walker. A compiler and run-time system for network programming languages. In POPL, pages 217--230, January 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Christopher Monsanto, Joshua Reich, Nate Foster, Jennifer Rexford, and David Walker. Composing software-defined networks. In NSDI, April 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Tim Nelson, Andrew D. Ferguson, Michael J. G. Scheer, and Shriram Krishnamurthi. Tierless programming and reasoning for software-defined networks. In NSDI, April 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Amir Pnueli, Michael Siegel, and Eli Singerman. Translation validation. In TACAS, pages 151--166, March 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Damien Pous. Relational algebra and KAT in Coq, February 2013. Available at http://perso.ens-lyon.fr/damien.pous/ra.Google ScholarGoogle Scholar
  31. Damien Pous. Symbolic algorithms for language equivalence and Kleene algebra with tests. In POPL, January 2015. To appear. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Jurriaan Rot, Marcello M. Bonsangue, and Jan J. M. M. Rutten. Coalgebraic bisimulation-up-to. In SOFSEM, pages 369--381, January 2013.Google ScholarGoogle Scholar
  33. Jan J. M. M. Rutten. Automata and coinduction (an exercise in coalgebra). In CONCUR, pages 194--218, September 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Jan J. M. M. Rutten. Universal coalgebra: a theory of systems. Theoretical Computer Science, 249:3--80, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Colin Scott, Andreas Wundsam, Barath Raghavan, Aurojit Panda, Andrew Or, Jefferson Lai, Eugene Huang, Zhi Liu, Ahmed El-Hassany, Sam Whitlock, H.B. Acharya, Kyriakos Zarifis, and Scott Shenker. Troubleshooting blackbox SDN control software with minimal causal sequences. In SIGCOMM, pages 395--406, August 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Alexandra Silva. Kleene Coalgebra. PhD thesis, University of Nijmegen, 2010.Google ScholarGoogle Scholar
  37. Alexandra Silva. Position automata for Kleene algebra with tests. Scientific Annals of Computer Science, 22(2):367--394, 2012.Google ScholarGoogle ScholarCross RefCross Ref
  38. Alexandra Silva, Filippo Bonchi, Marcello M. Bonsangue, and Jan J. M. M. Rutten. Logical Methods in Computer Science, 9(1):9, 2013.Google ScholarGoogle Scholar
  39. Andreas Voellmy and Paul Hudak. Nettle: Functional reactive programming of OpenFlow networks. In PADL, pages 235--249, January 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Andreas Voellmy, Junchang Wang, Y. Richard Yang, Bryan Ford, and Paul Hudak. Maple: Simplifying SDN programming using algorithmic policies. In SIGCOMM, pages 87--98, August 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Geoffrey G. Xie, Jibin Zhan, David A. Maltz, Hui Zhang, Albert G. Greenberg, Gísli Hjálmtýsson, and Jennifer Rexford. On static reachability analysis of IP networks. In INFOCOM, March 2005.Google ScholarGoogle ScholarCross RefCross Ref
  42. Hongyi Zeng, Peyman Kazemian, George Varghese, and Nick McKeown. Automatic test packet generation. In CoNEXT, pages 241--252, December 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. A Coalgebraic Decision Procedure for NetKAT

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!