Clone this repo:
  1. 32cfc1a Starting snapshot 2.4.0-SNAPSHOT by Jenkins · 6 weeks ago master
  2. 869a783 Release version 2.3.0 by Jenkins · 6 weeks ago 2.3.0
  3. 5ca7da5 Moving sadis dependency to 5.2.0 by Matteo Scandolo · 6 weeks ago
  4. f0daba8 Merge "[VOL-3673] Adding per device filter to dhcpl2relay-allocations command" by Andrea Campanella · 8 weeks ago
  5. abcc73e [VOL-3673] Adding per device filter to dhcpl2relay-allocations command by Matteo Scandolo · 8 weeks ago

ONOS DHCP L2 RELAY Application

The ONOS dhcpl2relay application is a DHCP Relay Agent which does Layer 2 relay.

The DHCP packets sent towards the DHCP Server (DHCP DISCOVER and DHCP REQUEST) are double tagged by this app. It retrieves the tag values to be used from the Sadis Service. Similarly it replaces the tags on the packets received from the server (DHCP OFFER and DHCP ACK) with priority tags.

DHCP Option 82 with CircuitId and RemoteId are added to packets sent to the DHCP server and Option 82 received from the server are removed before relaying back to the client. The CircuitId and Remote Id are retrieved from Sadis Service.

There are two options to packet-in/packet-out to the DHCP Server.

  • To use a SDN controlled switch which can connect to the DHCP Server; using the configuration parameter dhcpserverConnectPoints
  • To use the uplink NNI port of the OLT (from which the DHCP Discover/Request was received) for doing the packet-out/packet-in; using the configuration parameter useOltUplinkForServerPktInOut


"org.opencord.dhcpl2relay" : {
      "dhcpl2relay" : {
        "dhcpServerConnectPoints" : [ "of:00000000000000b2/2" ],
        "useOltUplinkForServerPktInOut" : true

Configuration Parameters


Port on the switch through which the DHCP Server is reachable


The default value of this parameter is false. Only if this parameter is false the dhcpServerConnectPoints parameter is used else not

Example configuration of Sadis

   "org.opencord.sadis" : {
      "sadis" : {
        "integration" : {
          "cache" : {
            "enabled" : true,
            "maxsize" : 50,
            "ttl" : "PT1m"
        "entries" : [ {
          "id" : "uni-128", # (This is an entry for a subscriber) Same as the portName of the Port as seen in onos ports command
          "cTag" : 2, # C-tag of the subscriber
          "sTag" : 2, # S-tag of the subscriber
          "nasPortId" : "uni-128"  # NAS Port Id of the subscriber, could be different from the id above
        }, {
          "id" : "1d3eafb52e4e44b08818ab9ebaf7c0d4", # (This is an entry for an OLT device) Same as the serial of the OLT logical device as seen in the onos devices command
          "hardwareIdentifier" : "00:1b:22:00:b1:78", # MAC address to be used for this OLT
          "ipAddress" : "", # IP address to be used for this OLT
          "nasId" : "B100-NASID" # NAS ID to be used for this OLT
        } ]