Clone this repo:
  1. c1ec853 [VOL-4652] Register UniTagInformationCodec to avoid exception on serialization for REST APIs by Elia Battiston · 2 months ago master
  2. 3b225bb [VOL-4617] - Update Sadis with nniDhcpTrapVid and doc for interpretation of UniTagInformation attributes for FTTB by amit.ghosh · 3 months ago
  3. 1e792b4 [VOL-4606] Try ignoring unknown parameters in case of parsing errors by Elia Battiston · 3 months ago
  4. cd431d9 Inserting empty mac instead of NONE (ONOS dummy) to be more accurate by Andrea Campanella · 4 months ago
  5. 9e3ebed configurable PPPoE flow per service by yasin sapli · 11 months ago

Subscriber / Access Device Information Service (SADIS)

When deploying at a customer there is often a need to access per-subscriber / access device information. This information is authoritatively stored by the customer and made available to the residential CORD or VOLTHA deployment. The purpose of this service is to define an optional service that provides a bridge to the customer's infrastructure to query / cache subsciber/access information and make it available to other services / applications within the ONOS/CORD infrastructure.

Overview

The below diagram is a high level block diagram for the Access Information Service that runs as an ONOS application and will be used within the CORD/vOLTHA context by other ONOS applications such as the DHCP Relay, iGMP, and AAA. The basic concept is that the service can run in two modes: local mode - in local mode the per subscriber / access device information can be established via ONOS's network configuration capability. In this mode all queries are answered based on the information from the network configuration remote mode - in the remove mode the service is configured with a URL and this URL is used to query an external source for subscriber / access device information using a URI structure that is defined as part of this service. Information retrieved from the external source is cached locally.

test

Pull Through Cache

The cache used for the remote mode is considered a pull through cache in which all queries are answered from the cache and if there is a cache miss the remote API is used and the cache is populated.

To prevent the cache from growing indefinitely a policy, initially time/use based, will be leveraged to kick / purge items from the cache. Additionally, the cache can be influenced via manually operations of the the CLI/API exposed as part of ONOS. The time limits for cache entry purging should be configurable.

Service Configuration

The service is configurable via both the the network configuration as well as via ONOS configuration. This configuration consists of service-wide properties such as operation mode, remote URL, cache purge options, etc.

Clustered Behavior

The in memory cache is not a clustered, distributed data structure, such that each instance of ONOS in a cluster might have a different set of objects in its cache. The thought behind this is that each instance in a cluster will be a master for a different set of devices and thus needs different information.

Configuration Paramters

"org.opencord.sadis" : {
      "sadis" : {
        "integration" : {
          "url": "http://localhost/src/test/resources/%s",
          "cache" : {
            "maxsize" : 50,
            "ttl" : "PT1m"
          }
        },
        "entries" : [ {
          "id" : "uni-1",
          "cTag" : 2,
          "sTag" : 2,
          "nasPortId" : "PON 1",
          "circuitId" : "VOLT-1",
        }, {
          "id" : "211702604597",
          "hardwareIdentifier" : "00:1e:67:d2:ef:66",
          "ipAddress" : "144.60.34.89",
          "nasId" : "66"
        }]
      }
    }
  • url - A url using which the subscriber and device data can be fetched. It is mandatory to have a %s in the url which will be substituted with the id for that subscriber/device to retrieve the data.
  • maxsize - Maximum number of entries that the cache may contain
  • ttl - Number of seconds after last access at which the cache entry expires

Entries can be for Subscribers and OLT Devices; they are differentiated by the id. If the url is specified the data for the subscribers/devices are picked from there else the local data is used.

For a subscriber
  • id - Unique identifier for the subscriber. This should match the name of the logical port name for this subscriber as can be seen from the ONOS ports command
  • nasPortId - NAS Port Id to be used for this subscriber; for example in RADIUS messages
  • circuitId - Circuit Id to be used for this subscriber; for example in DHCP messages
  • uniTagList - List of information about the various services and tags for that subscriber
    • uniTagMatch - The Tag from the CPE to match on
    • ponCTag - C-Tag to be used for this subscriber
    • ponSTag - S-Tag to be used for this subscriber
    • usPonCTagPriority - P-bit value to set on the C-Tag for upstream traffic
    • usPonSTagPriority - P-bit value to set on the S-Tag for upstream traffic
    • dsPonCTagPriority - P-bit value to set on the C-Tag for downstream traffic
    • dsPonSTagPriority - P-bit value to set on the S-Tag for downstream traffic
    • technologyProfileId - Identifier of the techprofile to be used for the flows with these C and S Tags
    • upstreamBandwidthProfile - Identifier of profile specifying the upstream bandwidths when using these VLANs
    • downstreamBandwidthProfile - Identifier of profile specifying the upstream bandwidths when using these VLANs
    • upstreamOltBandwidthProfile - In case of multi UNI this defines the upstream bandwidth profile for the flows on the OLT. It is always greater than the upstreamBandwidthProfile. Defaults to upstreamBandwidthProfile if not present
    • downstreamOltBandwidthProfile - In case of multi UNI this defines the downstream bandwidth profile for the flows on the OLT. It is always greater than the downstreamOltBandwidthProfile. Defaults to downstreamOltBandwidthProfile if not present
    • serviceName - An identifier to identify this specific service
    • enableMacLearning - Should MAC address be learnt using the DHCP packets
    • configuredMacAddress - Use this MAC address instead of learning it
    • isDhcpRequired - Should DHCP traps be installed
    • isIgmpRequired - Should IGMP traps be installed
    • isPppoeRequired- Should PPPoe traps be installed
For an OLT Device
  • id - Unique identifier for an OLT device. This should match the serial number of the device as can be seen from the ONOS devices command
  • hardwareIdentifier - MAC address for this device
  • ipAddress - IP address of this device
  • nasId - NAS Id to be used for this device; for example in RADIUS messages
  • nniDhcpTrapVid - This is the Vlan Id on which to trap the DHCP packets from the OLT NNI port to the controller. If this value is not present, then DHCP packets are trapped on all the VLANs from the NNI port. Also the enableDhcpOnNni and enableDhcpV4 flags on the olt app should be enabled to use this vid on the downstream DHCP trap flows on the NNI port.

In the case of FTTB; the interpretation of the above fields for a subscriber is different. The FTTB services are identified using the below serviceName in the UniTagInformation:

  • DPU_MGMT_TRAFFIC - This UniTag information is needed for the DPU Management traffic
  • DPU_ANCP_TRAFFIC - This UniTag information is needed for DPU ANCP traffic
  • FTTB_SUBSCRIBER_TRAFFIC - This UniTag information is needed for the DPUs subscriber traffic
DPU_MGMT_TRAFFIC

The interpretation of the UniTagInformation attributes for this service are as below:

  • ponCTag- Contains the VID_VENDOR_DPU_MGMT. This is the VLAN on which the DPU sends management traffic.
  • ponSTag - Contains the VID_NETWORK_DPU_MGMT. This is the VLAN on which the OLT needs to send the DPU management traffic upstream.
  • usPonSTagPriority - Contains the p-bit the DPU Management traffic needs to be remarked to. If this value is not present there would not be any p-bit re-marking done for the packets.
  • usPonCTagPriority - Contains the p-bit the DPU Management traffic that needs to be filtered on. If this value is not present there would not be any filtering.
  • technologyProfileId - The technology profile to use for the DPU Management traffic
  • upstreamBandwidthProfile - The bandwidth profile to use for upstream DPU Mgmt traffic
  • downstreamBandwidthProfile - The bandwidth profile to use for downstream DPU Mgmt traffic
DPU_ANCP_TRAFFIC

The interpretation of the UniTagInformation attributes for this service are as below:

  • ponCTag - Contains the VID_VENDOR_ANCP. This is the VLAN on which the DPU sends the ANCP traffic.
  • ponSTag - Contains the VID_NETWORK_ANCP. This is the VLAN on which the OLT needs to send the ANCP traffic upstream.
  • usPonSTagPriority - Contains the p-bit the ANCP needs to be remarked to. If this value is not present there would not be any p-bit re-marking done for the packets.
  • usPonCTagPriority - Contains the p-bit the DPU Management traffic that needs to be filtered on. If this value is not present there would not be any filtering.
  • technologyProfileId - The technology profile to use for the ANCP traffic
  • upstreamBandwidthProfile - The bandwidth profile to use for upstream ANCP traffic
  • downstreamBandwidthProfile - The bandwidth profile to use for downstream ANCP traffic
FTTB_SUBSCRIBER_TRAFFIC

The interpretation of the UniTagInformation attributes for this service are as below:

  • ponCTag - Contains the ANP Tag (also could be called as the ingress outer tag)
  • ponSTag - Contains the S-Tag of the subscriber (also could be called as the egress outer tag, unique within the OLT)
  • uniTagMatch - Contains the VLAN of the inner tag of the subscriber traffic, 4096 in the case of matching to any inner vid (transparent)
  • technologyProfileId - The technology profile to use for the FTTB subscriber traffic
  • _upstreamBandwidthProfile - The bandwidth profile to use for upstream FTTB subscriber traffic
  • downstreamBandwidthProfile - The bandwidth profile to use for downstream FTTB subscriber traffic