Versions Compared

Key

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

...

ONOS-1.1 note: A subset of BGP Multiprotocol Extensions Capabilities (RFC 4760) is implemented: IPv4 and IPv6 unicast routes (AFI/SAFI). However, the receiving and processing of IPv6 routes has been tested only over IPv4 BGP peering.

Configuration

SDN-IP currently uses a simple JSON file format to import configuration data. There are two separate files: addresses.json for IP and MAC address data, and sdnip.json for BGP peering session data.

Image Removed

Network configuration files

These configuration files need to be placed in the config directory.

If you plan to deploy ONOS and SDN-IP manually you need to copy the configuration file in the config directory on each instance. This is located at KARAF_ROOT/../config, and the path is not currently configurable.

Otherwise, when using the ONOS cell mechansim to deploy an ONOS cluster, the config files can be placed in the ONOS_ROOT/tools/package/config directory, on the management node you use to deploy. Then, they will be automatically be copied to the correct location on the cell instances when the cluster is deployed.

There are two simple JSON files for configuring the network:

  • addresses.json is used to configure IP and MAC addresses.
  • sdnip.json is used to configure BGP peering sessions.

Addresses.json: configuring IP and MAC addresses

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.

ONOS-1.1 note: Multiple IP addresses (including IPv6) can be configured per interface:

Code Block
{
    "addresses" : [
        {
            ...
            "ips" : ["10.0.1.101/24", "2001:DB8::1/64"],
            ...
        },
        ...
    ]
}

BGP configuration

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.

 

New Configuration

Info

Please note the configuration file format has changed in ONOS 1.3 (Drake). For information on the older configuration format, please see an archived version of this page for the version of ONOS you are using.

SDN-IP requires some configuration so that it knows where the internal BGP speakers and external BGP peers are located, such that it can respond to ARPs correctly and program connectivity for the BGP traffic.

...

Once ONOS is running, SDN-IP has a couple of an additional application dependencies dependency that it relies on to ensure ARP requests are resolved properly.  

...

This is the org.onosproject.proxyarp

...

 application that responds to ARP requests on behalf of hosts and external routers.

It's usually best to ensure these are this is loaded before starting SDN-IP, either by adding them it to the ONOS_APPS variable in your cell file, or by loading them it manually:

Code Block
onos> app activate org.onosproject.config
onos> app activate org.onosproject.proxyarp

Once these dependencies are this dependency has been satisfied, the SDN-IP application can be activated:

...

At this point, SDN-IP will start up, read its configuration files and install intents in the network to establish connectivity for the BGP peering sessions. Then it will begin to receive routes, which are installed into the network using MultiPointToSinglePoint intents.

...

Please let us know via the onos-deploy mailing list. Details about ONOS mailing lists can be found here: ONOS Mailing Lists

We really welcome your help to ensure the code and documentation are clear and informative, so let us know if you have and issues.

...