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
Component | Description |
---|---|
raThreadDelay | Delay between consecutive RA transmissions |
raPoolSize | Capacity of thread pool to be used for RA transmissions |
raFlagMbitStatus | RA flag “Managed address configuration” enabled/disabled |
raFlagObitStatus | RA 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.