Versions Compared

Key

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

...

  1. Abstract
  2. Demo slide 
  3. Demo poster
  4. Demo video

Requirements

This work basically requires

  • Ubuntu 18.04 with kernel version >= v4.14

Following software are also required:

  • Python 2.7

...

  • python-pip

...

mininet

Build ONOS

...

  • , mininet, InfluxDB, Grafana

Provision emulator VM

Install p4tools

Code Block
$ onos-setup-p4-dev 

Install BPFCollector

...

Provision emulator VM

Install p4tools

...

...

  • gitlab.com/

...

  • tunv_ebpf/BPFCollector.git
    $ cd BPFCollector
    $ git checkout -t origin/spec_1.0
  • Enable JIT for eBPF to make BPFCollector run faster

    Code Block
    $ 

...

Install BPFCollector

...

  • sudo sysctl net/core/bpf_jit_enable=1
  • Install Cython to run the InfluxDB Client with better performance

    Code Block
    $ pip install Cython
  • Add virtual interfaces for collector

    Code Block
    $ sudo ip link add veth_

...

  • 1 type veth peer name veth_

...

  • 
    $ sudo ip link set dev veth_

...

  • 1 up 
    $ sudo ip link set dev veth_

...

  • 2 up 

Modify Mininet topology script

  • Modify the file $ONOS_ROOT/tools/test/topos/bmv2-demo.py
    • Look for this line: 

      Code Block
      from mininet.link import TCLink
    • Change the line as follows:

      Code Block
      from mininet.link import TCLink, Intf
    • Look for this line: 

      Code Block
      net.build()
    • Below this line, add the followings:

      Code Block
      collectorIntf = Intf( 'veth_1', node=net.nameToNode[ "s12" ] )

How to run

  • Configure

    Run ONOS

    apps

    Code Block
    $ ONOS_APPS=drivers.bmv2,proxyarp,lldpprovider,hostprovider,fwd 

...

  • bazel run onos-local -- clean
  • Launch Mininet

    Code Block
    $ sudo -E 

...

  • $ONOS_ROOT/tools/test/topos/bmv2-demo

...

  • .py --onos-ip=127.0.0.1 --pipeconf-id=org.onosproject.pipelines.int
  • Launch

...

  • the collector

    Code Block
    $ sudo systemctl start influxdb

...

  • 
    $ sudo python

...

  •  BPFCollector/InDBClient.py veth_

...

  • 2
  • Activate

...

  • In-band telemetry control application 

    Code Block
    $ onos-app localhost activate org.onosproject.inbandtelemetry
  • Add mirroring configuration on the switch for telemetry report

    Code Block
    $ simple_switch_CLI --thrift-port `cat /tmp/bmv2-s12-thrift-

...

  • port` 
    RuntimeCmd: mirroring_add 500 5 
    (500: REPORT_MIRROR_SESSION_ID defined in int_definitions.p4) 
    (5: port number to send mirrored packet, in this case veth_

...

  • Add host to host intent
Code Block
$ onos localhost onos> add-host-intent 00:00:00:00:01:01/None 00:00:00:00:02:02/None

...

  • 1)

...

    • Type 127.0.0.1

...

    •  to "

...

    • IPv4 address" field

...

    • and 54321 to "port" field in "INT Collector Configuration" section
    • Clink "Apply Configuration

...

    • " button
  • Add IntIntent to specify traffic to monitor

    ...

      • Open "In-band Telemetry Control"

    ...

      • in the ONOS GUI menu
      • Fill in "

    ...

      • Source IP address", "

    ...

      • Destination IP address", "

    ...

      • Source port", "

    ...

      • Destination port" and "Protocol" field

      ...

          • Source and Destination IP address fields accepts IP address with mask (e.g., 10.0.0.0/24)

      ...

          • Source and

      ...

          • Destination port number requires exact port number
          • Protocol supports either TCP or UDP
          • Any field remained empty, except Protocol field, means wildcard.
        • Choose metadata to collect

        ...

            • Switch Id

        ...

            •  and Egress timestamp

        ...

            •  must be chosen so as to make

        ...

            • the collector to work properly.
            • "

        ...

            • Egress Port Tx Utilization" are not supported in current version of BMv2 software switch yet.
          • Click "

        ...

          • Apply Watchlist Rule" button below the metadata to deploy INT Intent.
          • Created INT Intent will be appeared in the table below.
        • Generate some traffic to monitor

          Code Block
          mininet> h11 iperf -c h22 -u -t 10000

        ...