This is an archive of the ONOS 1.1 wiki. For the current ONOS wiki, look here.

This section describes ONOS features that are still experimental. Such features have not been tested thoroughly, might have various issues, or might be removed in the future.

 

This section assumes that the reader has installed and is able to run ONOS by following Installing and Running ONOS.

Reactive Forwarding

Description

Reactive Forwarding refers to the mechanism used to install forwarding entries into the network switches - those entries are installed on-demand after a sender starts transmitting packets. The alternative, Proactive Forwarding, refers to installing the forwarding entries proactively, i.e., before a sender starts the transmission. In ONOS, the Reactive Forwarding can be enabled by installing the  onos-app-fwd application, either by adding it to the ONOS_FEATURES for the ONOS deployment cell, or by loading it manually from the ONOS CLI:

onos> feature:install onos-app-fwd

Prerequisites

It is highly recommended that the onos-app-proxyarp application is also installed.

Configuration 

The behavior of the onos-app-fwd application can be defined in the org.onosproject.fwd.ReactiveForwarding.cfg configuration file. A sample of that file can be found in the tools/package/etc/samples directory. The file should be copied to the tools/package/etc directory and edited as appropriate. All configuration options are listed and described inside that file.

 

Prerequisites

After each editing of the configuration file, ONOS should be packaged and installed as described in Installing and Running ONOS.


 

Testing Reactive Forwarding

The simplest way to test Reactive Forwarding between two hosts is to configure those hosts with IP addresses that belong to the same subnet:

  • Host A: 10.0.0.2/24
  • Host B: 10.0.0.3/24
user@HostA:~$ ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:00:00:00:00:02  
          inet addr:10.0.0.2  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::200:ff:fe00:2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:180 errors:0 dropped:162 overruns:0 frame:0
          TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:14542 (14.5 KB)  TX bytes:996 (996.0 B)
...

user@HostB:~$ ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:00:00:00:00:03  
          inet addr:10.0.0.3  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::200:ff:fe00:3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:292 errors:0 dropped:268 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:23644 (23.6 KB)  TX bytes:780 (780.0 B)
...
 

Before installing onos-app-fwd, running ping between the hosts should not work:

user@HostA:~$ ping 10.0.0.3
PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.
^C
--- 10.0.0.3 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2014ms

After installing onos-app-fwd, running ping between the hosts should work:

onos> feature:install onos-app-fwd
onos> 

user@HostA:~$ ping 10.0.0.3
PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.
64 bytes from 10.0.0.3: icmp_seq=1 ttl=64 time=23.5 ms
64 bytes from 10.0.0.3: icmp_seq=2 ttl=64 time=0.394 ms
64 bytes from 10.0.0.3: icmp_seq=3 ttl=64 time=0.052 ms
64 bytes from 10.0.0.3: icmp_seq=4 ttl=64 time=0.054 ms
64 bytes from 10.0.0.3: icmp_seq=5 ttl=64 time=0.055 ms
64 bytes from 10.0.0.3: icmp_seq=6 ttl=64 time=0.047 ms
^C
--- 10.0.0.3 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 4999ms
rtt min/avg/max/mdev = 0.047/4.033/23.596/8.749 ms
user@HostA:~$

While ping is running, the corresponding flow entries should be visible in the ONOS CLI. In the example below, there are two switches between the hosts, and each switch has two flow entries, one for each direction:

 
onos> flows | grep -B 1 -A 1 ETH_DST
   id=70000f3319c4c, state=ADDED, bytes=10486, packets=107, duration=107, priority=10, tableId=DEFAULT appId=org.onosproject.fwd
      selector=[ETH_TYPE{ethType=800}, ETH_SRC{mac=00:00:00:00:00:03}, ETH_DST{mac=00:00:00:00:00:02}, IN_PORT{port=2}]
      treatment=[OUTPUT{port=3}]
   id=70000f3319fee, state=ADDED, bytes=10486, packets=107, duration=107, priority=10, tableId=DEFAULT appId=org.onosproject.fwd
      selector=[ETH_TYPE{ethType=800}, ETH_SRC{mac=00:00:00:00:00:02}, ETH_DST{mac=00:00:00:00:00:03}, IN_PORT{port=3}]
      treatment=[OUTPUT{port=2}]
--
   id=70000f33210ab, state=ADDED, bytes=10486, packets=107, duration=107, priority=10, tableId=DEFAULT appId=org.onosproject.fwd
      selector=[ETH_TYPE{ethType=800}, ETH_SRC{mac=00:00:00:00:00:02}, ETH_DST{mac=00:00:00:00:00:03}, IN_PORT{port=2}]
      treatment=[OUTPUT{port=3}]
   id=70000f332144d, state=ADDED, bytes=10486, packets=107, duration=107, priority=10, tableId=DEFAULT appId=org.onosproject.fwd
      selector=[ETH_TYPE{ethType=800}, ETH_SRC{mac=00:00:00:00:00:03}, ETH_DST{mac=00:00:00:00:00:02}, IN_PORT{port=3}]
      treatment=[OUTPUT{port=2}]
onos> 

After ping is stopped, those flow entries should expire within 10 seconds. This expiration time period is configurable.

IPv6

Description

IPv6 support is an experimental feature that is disabled by default. Currently, the following IPv6-related features have been implemented and tested:

  • IPv6 Host Discovery
  • IPv6-to-MAC Address Resolution
  • IPv6 Reactive Forwarding
  • IPv6 Routes for the ONOS SDN-IP Use Case

IPv6 Host Discovery Configuration 

IPv6 Host Discovery support can be enabled in the org.onosproject.provider.host.impl.HostLocationProvider.cfg configuration file. A sample of that file can be found in the tools/package/etc/samples directory. The file should be copied to the tools/package/etc directory and the following option should be enabled:

ipv6NeighborDiscovery = true

IPv6-to-MAC Address Resolution Configuration 

 

IPv6-to-MAC Address Resolution support can be enabled in the org.onosproject.proxyarp.ProxyArp.cfg configuration file. A sample of that file can be found in the tools/package/etc/samples directory. The file should be copied to the tools/package/etc directory and the following option should be enabled:

 

ipv6NeighborDiscovery = true

IPv6 Neighbor Discovery Config

For all practical purposes, the ipv6NeighborDiscovery  option should be set to true in both files listed above: org.onosproject.provider.host.impl.HostLocationProvider.cfg and org.onosproject.proxyarp.ProxyArp.cfg.

IPv6 Reactive Forwarding Configuration 

IPv6 Reactive Forwarding can be enabled and configured in the org.onosproject.fwd.ReactiveForwarding.cfg configuration file. A sample of that file can be found in the tools/package/etc/samples directory. The file should be copied to the tools/package/etc directory and configured as appropriate. All configuration options are listed and described inside that file.

 

IPv6 Reactive Forwarding Config

It is recommended to enable the following two configuration options. The result Flow Entries will have the IPv6 source and destination addresses in the matching conditions:

 

ipv6Forwarding = true
matchIpv6Address = true

IPv6 Routes for the ONOS SDN-IP Use Case 

Currently, there is no explicit configuration to enable IPv6 routes for the SDN-IP Use Case. BGP-originated IPv6 routes are received in BGP Multiprotocol Extension Capabilities from any BGP peer that advertises them. Such IPv6 routes are handled and processed similarly to the IPv4.

 

IPv6 SDN-IP Config

Currently, the receiving of BGP IPv6 routes (BGP UPDATEs) has been tested only over IPv4 BGP peering sessions. Such sessions might have to be explicitly configured for such purpose. Below is a sample configuration file for the Quagga BGP  implementation:

 
hostname bgp2e
password xxxxxx
router bgp 65002
  bgp router-id 10.0.0.2
  bgp scan-time 5
  timers bgp 10 30
  neighbor 10.0.0.1 remote-as 65001
  neighbor 10.0.0.1 timers connect 3
  neighbor 10.0.0.1 advertisement-interval 3
  network 12.0.0.0/24
  address-family ipv6
  network 2001:db8:1:2::/64
  neighbor 10.0.0.1 activate
  neighbor 10.0.0.1 route-map ipv6-nexthop out
  exit-address-family
route-map ipv6-nexthop permit 10
 set ipv6 next-hop global 2012::2
log stdout
 

Previous : Applications and Use Cases
Next : Appendix A: CLI commands


 

 

  • No labels