Software Defined Networking (SDN) is an emerging network technology where network control plane, which is programmable, is decoupled from the data forwarding plane and moved to the SDN controller. Originally, an SDN network is controlled by a single controller. As the SDN architecture becomes more complex with multiple SDN domains and corresponding domain controllers, inter-domain routing becomes an important design issue.
There are a number of approaches for SDN inter-domain routing. The most popular approach is the hierarchical approach where a central controller coordinates with lower level domain controllers to control the data flow. The main drawback of the hierarchical approach is that it is not scalable, and the central controller represents a single point of failure. In this thesis, we proposed and designed a distributed inter-domain routing mechanism. The distributed approach enables domain controllers to exchange information with each other directly instead of communicating through the central controller. We also proposed and designed a new load balancing scheme which makes use of the network traffic information to choose a less-congested path among equal-cost multiple paths. We successfully implement the proposed inter-domain routing mechanism and load balancing scheme using Python/Java in the OpenDayLight SDN controller, which is a popular open-source SDN platform. In addition, the test result of the proposed load-balancing scheme shows that it performs better than the scheme based on the roundrobin mechanism.