Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Border routers of external networks are connected at the edge of the SDN network. The border routers need not be physically connected to an SDN switch, however we assume that we are directly connected at the IP level to the peering address of each border routerrou+ter. That is, for each router we have a peering address in the same subnet as the router's peering address. We don't currently support multi-hop BGP peering sessions.

...

Finally, ONOS must be deployed either as a single instance or as a cluster.

Peering sessions

Reference scenario

BGP speakers a deployed as BGP software running on a Linux host.

 

Big Router abstraction

sdfdsfds

...

The addresses.json file is used to configure the addresses that ONOS uses to talk with the outside world. This configuration is mainly used for proxy ARP, so that the proxy ARP module knows how to respond to ARP requests coming from outside the network.

Code Block
{
    "addresses" : [
        {
            "dpid" : "00:00:00:00:00:00:00:a1",
            "port" : "1",
            "ips" : ["10.0.1.101/24"],
            "mac" : "00:00:00:00:00:01"
        },
        {
            "dpid" : "00:00:00:00:00:00:00:a2",
            "port" : "1",
            "ips" : ["10.0.2.101/24"],
            "mac" : "00:00:00:00:00:01"
        },
        {
            "dpid" : "00:00:00:00:00:00:00:a5",
            "port" : "1",
            "ips" : ["10.0.3.101/24"],
            "mac" : "00:00:00:00:00:01"
        },
        {
            "dpid" : "00:00:00:00:00:00:00:a6",
            "port" : "1",
            "ips" : ["10.0.4.101/24"],
            "mac" : "00:00:00:00:00:01"
        }
    ]
}

The file contains an addresses array which has multiple address entries. Each address entry describes a set of addresses which are bound to a port on a switch. Each entry contains the switch port the address is bound to (specified by DPID and port number), a set of IP addresses that are bound to the port, and a single MAC address to be used for ARP responses for each of the IP addresses.

When running SDN-IP, each address used by the SDN network to peer with an external router needs to be configured in the addresses.json file.

sdnip.json

The sdnip.json file contains details of the BGP peering sessions, as well as the connectivity between internal BGP speakers and external BGP peers.

Code Block
{                                                                                                                                                                                                                                                                              
    "bgpPeers" : [                                                                                                                                                                                                                                                             
        {                                                                                                                                                                                                                                                                      
            "attachmentDpid" : "00:00:00:00:00:00:00:a1",                                                                                                                                                                                                                      
            "attachmentPort" : "1",                                                                                                                                                                                                                                            
            "ipAddress" : "10.0.1.1"                                                                                                                                                                                                                                           
        },                                                                                                                                                                                                                                                                     
        {                                                                                                                                                                                                                                                                      
            "attachmentDpid" : "00:00:00:00:00:00:00:a2",                                                                                                                                                                                                                      
            "attachmentPort" : "1",                                                                                                                                                                                                                                            
            "ipAddress" : "10.0.2.1"                                                                                                                                                                                                                                           
        },                                                                                                                                                                                                                                                                     
        {                                                                                                                                                                                                                                                                      
            "attachmentDpid" : "00:00:00:00:00:00:00:a5",                                                                                                                                                                                                                      
            "attachmentPort" : "1",                                                                                                                                                                                                                                            
            "ipAddress" : "10.0.3.1"                                                                                                                                                                                                                                           
        },                                                                                                                                                                                                                                                                     
        {                                                                                                                                                                                                                                                                      
            "attachmentDpid" : "00:00:00:00:00:00:00:a6",                                                                                                                                                                                                                      
            "attachmentPort" : "1",                                                                                                                                                                                                                                            
            "ipAddress" : "10.0.4.1"                                                                                                                                                                                                                                           
        }                                                                                                                                                                                                                                                                      
    ],                                                                                                                                                                                                                                                                         
    "bgpSpeakers" : [                                                                                                                                                                                                                                                          
        {                                                                                                                                                                                                                                                                      
            "name" : "bgp",                                                                                                                                                                                                                                                    
            "attachmentDpid" : "00:00:00:00:00:00:00:a3",
            "attachmentPort" : "1",
            "macAddress" : "00:00:00:00:00:01",
            "interfaceAddresses" : [
                {
                    "interfaceDpid" : "00:00:00:00:00:00:00:a1",
                    "interfacePort" : "1",
                    "ipAddress" : "10.0.1.101"
                },
                {
                    "interfaceDpid" : "00:00:00:00:00:00:00:a2",
                    "interfacePort" : "1",
                    "ipAddress" : "10.0.2.101"
                },
                {
                    "interfaceDpid" : "00:00:00:00:00:00:00:a5",
                    "interfacePort" : "1",
                    "ipAddress" : "10.0.3.101"
                },
                {
                    "interfaceDpid" : "00:00:00:00:00:00:00:a6",
                    "interfacePort" : "1",
                    "ipAddress" : "10.0.4.101"
                }
            ]
        }
    ]
}

At the top level of the sdnip.json file are two lists: bgpPeers and bgpSpeakers.

The bgpPeers list contains an entry for every external peer that the SDN network peers with. Each peer has a peering address, and the attachment point where it is connected to the SDN network specified by DPID and port number.

The bgpSpeakers list contains an entry for each BGP speaker in the SDN network. The header for each BGP speaker includes an arbitrary name for the speaker, the attachment point where it is connected to the SDN network (specified by DPID and port number), and the MAC address of the BGP speaker. Then, each BGP speaker has a list of "interfaceAddresses", which are the external-facing interfaces this speaker has peering sessions on, and the IP address it uses for that peering session.

BGP speakers

Each BGP speaker potentially has multiple peering sessions to different external networks. It is possible for these peering sessions to be on different IP subnets, which means each BGP speaker can potentially have multiple IP addresses it is peering on. These addresses must be configured in the sdnip.json file, but they also need to be configured on the interfaces of the BGP speaker, so that it can receive packets sent to it on those addresses.