Skip to content

Repository files navigation

SDN

Project to demonstrate a Software Defined Network

Application Layer:

The generation of a randomized key that will represent authentication. A number below 50 can represent an authorized value. A number above 50 will represent an unauthorized value.

SDN Controller:

The controller in a Software Defined Network is in charge of routing packets to devices on a network. In this project, a simplified idea is to route a packet containing an authorized value to devices on a networked. In our project, the controller will utilized Dijkstra's algorithm to route to different devices on a network. In a larger instance of a SDN, the controller may run a different routing method such as an OpenFlow implementation.

Device:

To demonstrate the advantage of an SDN, which is that each node in an SDN has a rich set of functions it can execute without having to rely on another physical device, the device program will contain a simple firewall function that will either accept authorized values or block unauthorized values. The device will contain a queue to store accepted values that will be removed after a certain amount of time to allow more values to be inserted. Each device will contain a value that represents the distance within the network from another node for the controller to apply Dijkstra's algorithm and build the routing table.

Defined terms:

Authenticator -> The application layer contains an authentication function which will generate random keys.

Controller -> A server application running on a computer utilizing sockets to send data to another computer on the same network that will run the device program.

Device/Node/Router -> A client application running on a computer which will handle the packets received to determine whether it is an authorized value or not.

Dijkstra's algorithm -> Dijkstra's algorithm is an algorithm for finding the shortest paths between nodes (devices or routers) in a graph, or in this case, a network.

Personal notes:

to run server.c: gcc server.c -o serv -lpthread ./serv

to run clients (on different terminals): ./cli ./cli2

About

Software-Defined Network

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages