Introduction

Router advertisement application is for enabling “Router Advertisement” and “Router Solicitation” functionalities supported by IPv6 routers. More details are available in RFC 4861.

Workflow

Application identifies which are the IPv6 interfaces currently configured in the system and from these interfaces it will try to send out unsolicited Router Advertisement(RA) messages (please refer RFC 4861 for packet format). Each such RA message will have two mandatory options namely “Source link-layer address” and “MTU”. Additional RA option “prefix” can be enabled using component configuration “raGlobalPrefixConfStatus”.

Application also processes “Router Solicitations”(RS ) sent from hosts. Upon receiving RS on a particular interface application stops RA transmission in that interface and immediately sends RA targeted to the solicited host. After that application continues unsolicited RA transmission on that interface.

Activation & Configuration

RA application can be activated from CLI as “app activate org.onosproject.routeradvertisement”

Behavior of RA application is controlled by ONOS component configuration subsystem and following are possible configuration options

ComponentDescription
raThreadDelay

Delay between consecutive RA transmissions

raPoolSizeCapacity of thread pool to be used for RA transmissions
raFlagMbitStatusRA flag “Managed address configuration” enabled/disabled
raFlagObitStatusRA flag “Other configuration” enabled/disabled
raOptionPrefixStatus

RA Option “prefix” is enabled/disabled. Router prefixes will be available in RA only if this flag is “true”.

raGlobalPrefixConfStatus

Enable switch level global prefix configuration.

Once “raGlobalPrefixConfStatus” is enabled, RA prefix option is generated from port configuration of device, see for more details.

 

Usually prefix details are picked up from network interface configuration; for example in following configuration

"of:0000000000000018/16" : {

    "interfaces" : [ {

      "ips" : [ "192.168.114.1/24", "2001:0558:FF10:04C9::2:1ff/120", "FE80::4EA8:2AFF:FE24:8E5F/120" ],

      "vlan-untagged" : "11",

      "name" : "18-15",

      "mac" : "8c:ea:1b:67:24:90"

    } ]

  },

Prefix will include only "2001:0558:FF10:04C9::2:1ff/120", ie. RA app will filter out link-local IPs while preparing prefixes.

Global prefix configuration

As explained earlier, RA application generally builds prefixes from IPv6 address configured on interfaces. For example if we have ports configuration as below

"of:0000000000000018/16" : {

    "interfaces" : [ {

      "ips" : [ "192.168.114.1/24", "2001:0558:FF10:04C9::2:1ff/120" ],

      "vlan-untagged" : "11",

      "name" : "18-15",

      "mac" : "8c:ea:1b:67:24:90"

    } ]

  },

Then all RAs transmitted from interface of:0000000000000018/16 will have prefix “2001:0558:FF10:04C9::2:1ff/120”.

 In somecases, we may need to have a set of global prefix for all interfaces in edge switches, such prefixes can be configured in “device” section in following way

"devices": {

    "of:0000000000000018": {

        ....................

    "routeradvertisement" : {

        "prefixes": [ "2001:0558:FF10:04C9::3:1ff/120"]

      },

    },

}

In those cases eventhough switch interfaces are having different IPv6 addresses configured, RA generated will not include those prefixes; ie. only global prefixes will get priority.