This page describes the building-blocks components of SDN-IP and how they interact together. This is a deeper view of the SDN-IP component, created specifically for developers interested in contributing to the code base.

 

Software Modules

The following figure illustrates the SDN-IP application components, and the relationship among those components.




The gray box represents the SDN-IP module, consisting of different well-defined components, while the green boxes represent the external ONOS services that SDN-IP depends on. The yellow boxes represent the SDN-IP interfaces exposed to the external modules, while the red boxes are the Java classes that implement a specific interface. The main SDN-IP application components are:

The SDN-IP application uses the following ONOS services:

The BgpSessionManager

The BgpSessionManager is responsible for interfacing with the BGP speakers. It listens for incoming iBGP connections, and creates a BgpSession instance per-session. The BgpSession instance is responsible for the following:

The BgpSessionManager collects all the BGP routing updates from the iBGP peers, and uses the BGP rules to select the best next-hop router for each IP routing prefix. Then it generates the corresponding routing entries and submits them to the RouteListener. The following figure summarizes this function:



Interaction with the ARP Service

 

The ARP Service is used to resolve the MAC address of each IP address that is used as the best next-hop router. The number of such IP addresses is limited by the number of the external eBGP routers. SDN-IP subscribes for receiving the ARP updates for each potential next-hop IP address. If a BGP routing update is received before the MAC address is resolved, the routing update is placed into a queue until the address is resolved.