Skip to content

A QUIC based implementation of software defined networking (SDN). This allows using QUIC instead of TCP for southbound communication in SDNs.

Notifications You must be signed in to change notification settings

SIOTLAB/quicSDN

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 

Repository files navigation

/* This is an ongoing research work, any copy or usage of this material before paper publish is a violation */


Introduction:
  quicSDN is an architecture developed here in SIOTLAB Santa Clara University. 
  Primary author for this file is Puneet Kumar, PhD student at Santa Clara University, under Professor Behnam Dezfouli. quicSDN is an attempt to run SDN components on QUIC protocol. 
  These components are composed of the following:
    1) 	RYU: A SDN controller, modified to be based on UDP protocol. Which can communicate QUIC Server. 
    	As soon ryu fires up, it opens 6653 and 6640 ports and start listening on these ports for localhost
    2) 	Eventlet : A packet processing libary modified to fill the needs of RYU.
    3) 	OpenSSL : SSL library, unchanged, standard to assist QUIC Code.
    4) 	OVS: A SDN switch, based on UDP, which can communicate to QUIC Client. SDN Connections starts sending OpenFlow or 
    	OVSDB packets on port 6653 and 6640 locally on UDP.
    4) 	quic-code: QUIC code, based on ngtcp2 implementation. Heavily tailored to fit the need to a QUIC bridge between RYU and OVS.
    
    
 Usage:
 	This feature is purely experimental based and would require some work if it has to be scaled. 
	Please use the OVS in this git repo as normal OVS wouldn't support UDP and hence would not work.
	RYU is based on existing RYU/TCP and in addition to changing the transportation, this feature is heavily modified for greenio sockets and event handlers.
	RYU: It will start a UDP server on 6653 port for ryu as controller
	OVS: OVS will start as usual however, please use "ovs-vsctl set-controller udp::6653" in order to talk to RYU
	
	
Installation:
	sudo apt update
	sudo apt install python3-pip
	sudo apt install python-pip
	sudo apt-get install build-essential checkinstall
	sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
	cd /usr/src
	sudo wget https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tgz
	sudo tar xzf Python-3.4.4.tgz
	cd Python-3.4.4
	sudo ./configure
	make
	sudo make install
	sudo apt-get install dh-autoreconf
	sudo apt-get install libev-dev
	
	The following packages are required to configure the build system:
		pkg-config >= 0.20 autoconf automake autotools-dev libtool libngtcp2 uses cunit for its unit test frame work:
		cunit >= 2.1 To build sources under the examples directory, libev is required:
		libev The client and server under examples directory require OpenSSL (master branch) as crypto backend:

	next steps are same for client and server. Go to each folder and run the following
		cd openssl
		./config enable-tls1_3 --prefix=$PWD/build
		make -j$(nproc)
		make install_sw
		cd client or server whichever folder you are in
		autoreconf -i
		./configure PKG_CONFIG_PATH=$PWD/../openssl/build/lib/pkgconfig LDFLAGS="-Wl,-rpath,$PWD/../openssl/build/lib"
		make -j$(nproc) check

About

A QUIC based implementation of software defined networking (SDN). This allows using QUIC instead of TCP for southbound communication in SDNs.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published