Design Patterns and Extensibility of REST API for Networking Applications

REST architectural style has become a prevalent choice for distributed resources, such as the northbound API of software-defined networking (SDN). As services often undergo frequent changes and updates, the corresponding REST APIs need to change and update accordingly. To allow REST APIs to change and evolve without breaking its clients, a REST API can be designed to facilitate hypertext-driven navigation and its related mechanisms to deal with structure changes in the API. This paper addresses the issues in hypertext-driven navigation in REST APIs from three aspects. First, we present REST Chart, a Petri-Net-based REST service description framework and language to design extensible REST APIs, and it is applied to cope with the rapid evolution of SDN northbound APIs. Second, we describe some important design patterns, such as backtracking and generator, within the REST Chart framework to navigate through large scale APIs in the RESTful architecture. Third, we present a client side differential cache mechanism to reduce the overhead of hypertext-driven navigation, addressing a major issue that affects the application of REST API. The proposed approach is applied to applications in SDN, which is integrated with a generalized SDN controller, SOX. The benefits of the proposed approach are verified in different conditions. Experimental results on SDN applications show that on average, the proposed cache mechanism reduces the overhead of using the hypertext-driven REST API by 66%, while fully maintaining the desired flexibility and extensibility of the REST API.

[1]  Tadao Murata,et al.  Petri nets: Properties, analysis and applications , 1989, Proc. IEEE.

[2]  Wu Chou,et al.  REST API Design Patterns for SDN Northbound API , 2014, 2014 28th International Conference on Advanced Information Networking and Applications Workshops.

[3]  Martín Casado,et al.  NOX: towards an operating system for networks , 2008, CCRV.

[4]  Roy Fielding,et al.  Architectural Styles and the Design of Network-based Software Architectures"; Doctoral dissertation , 2000 .

[5]  Nathaniel S. Borenstein,et al.  Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types , 1996, RFC.

[6]  Wu Chou,et al.  An XML Based Monadic Framework for REST Service Compositions , 2015, 2015 IEEE International Conference on Web Services.

[7]  Sujata Banerjee,et al.  DevoFlow: cost-effective flow management for high performance enterprise networks , 2010, Hotnets-IX.

[8]  Jürgen Schönwälder,et al.  Network Configuration Protocol (NETCONF) , 2011, RFC.

[9]  I. Melzer Web Services Description Language , 2010 .

[10]  Wu Chou,et al.  Design and Describe REST API without Violating REST: A Petri Net Based Approach , 2011, 2011 IEEE International Conference on Web Services.

[11]  Anees Shaikh,et al.  Meridian: an SDN platform for cloud network services , 2013, IEEE Communications Magazine.

[12]  Wu Chou,et al.  Compatibility Modeling and Testing of REST API based on REST Chart , 2015, WEBIST.

[13]  David Walker,et al.  Frenetic: a high-level language for OpenFlow networks , 2010, PRESTO '10.

[14]  Ludmila Cherkasova,et al.  Improving WWW Proxies Performance with Greedy-Dual- Size-Frequency Caching Policy , 1998 .

[15]  Wu Chou,et al.  Automated Creation of Navigable REST Services Based on REST Chart , 2015 .

[16]  Roy T. Fielding,et al.  Hypertext Transfer Protocol - HTTP/1.1 , 1997, RFC.

[17]  Nick McKeown,et al.  OpenFlow: enabling innovation in campus networks , 2008, CCRV.

[18]  Tim Berners-Lee,et al.  Hypertext transfer protocol--http/i , 1993 .

[19]  Sam Ruby,et al.  RESTful Web Services , 2007 .

[20]  Alan L. Cox,et al.  Maestro: A System for Scalable OpenFlow Control , 2010 .

[21]  Wu Chou,et al.  Designing Large Scale REST APIs Based on REST Chart , 2015, 2015 IEEE International Conference on Web Services.

[22]  Nick Feamster,et al.  Procera: a language for high-level reactive network control , 2012, HotSDN '12.

[23]  Martín Casado,et al.  Practical declarative network management , 2009, WREN '09.

[24]  Rainer Fehling,et al.  A Concept of Hierarchical Petri Nets with Building Blocks , 1991, Applications and Theory of Petri Nets.

[25]  Paul Meyer,et al.  Simple Network Management Protocol (SNMP) Applications , 2002, RFC.

[26]  Martín Casado,et al.  Onix: A Distributed Control Platform for Large-scale Production Networks , 2010, OSDI.

[27]  Christos G. Cassandras,et al.  Introduction to Discrete Event Systems , 1999, The Kluwer International Series on Discrete Event Dynamic Systems.

[28]  Erik Wilde,et al.  Linking Data from RESTful Services , 2010 .

[29]  Martin Bjorklund,et al.  YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF) , 2010 .

[30]  Wu Chou,et al.  Design Patterns for RESTful Communication Web Services , 2010, 2010 IEEE International Conference on Web Services.

[31]  Roy T. Fielding,et al.  URI Template , 2012, RFC.