A Survey on SDN Programming Languages: Toward a Taxonomy
Network devices have always been considered as configurable black boxes until the emergence of software defined networking (SDN) SDN enables the networks to be programmed according to the user requirements; furthermore, it allows the network to be easily modified to suit transient demands. However, how do we program the network? SDN compliant switches offer a low level interface that makes programming error prone. The controllers provide application programming interfaces, but still low level, limited, and inflexible. High level languages have the potential to be a better alternative to program the network. There exist several SDN programming languages implementing different sets of functionalities, and focusing on solving various issues. In face of all this diversity, no published paper outlines a pragmatic view allowing to compare the SDN languages. This paper presents a systematic survey of up to date OpenFlow based SDN programming languages. Our approach relies on a taxonomy comprising all prominent features found in those languages. A detailed review of the existing works is carried out investigating the foundational parts of the languages with their contributions. Examples are discussed to illustrate the fundamental abstractions. Last, all gathered information is summarized, discussing the main ongoing research efforts and challenges. Future abstractions and features to be incorporated into the next generations of SDN programming languages are also considered.
IEEE Communications Surveys Tutorials