CORD : Technology Profile Instance

Overview

Technology Profile Instances are created by the OLT Adapters when they receive Open Flow messages referencing a Flow Table ID in the Range 64 - 255; this Flow Table ID (TID) range is reserved to designate that the TID can be used to access a Technology Profile pre-created in the KV Store.

The OLT Adapter will read the Technology Profile Referenced by the Flow ID and the Adapter Technology {XPON, GPON, NGPON2, EPON etc}.  

The key structure used to access technology profiles is /voltha/technology_profiles/<TID>/<TECHNOLOGY>; where TID is the numeric ID of the technology profile and TECHNOLOGY specifies the technology being utilized by the adapter, i.e. xpon. While the TID key is a directory, the TECHNOLOGY key should be set to the JSON data that represents the technology profile values. 

The OLT Adapter will access a Resource Manager for the PON Interface and ONU Port (OpenFlow vSwitch Logical Port) which is having service added and reserve an Alloc-ID and the number of XGEM Port-IDs specified in the Technology Profile. The Technology Profile JSON Data plus the Reserved Resource data will be stored in a Technology Profile Instance with an easily derivable Key so that the ONU Adapter can retrieve the Technology Profile Instance when it is ready to create the OMCI messages for the ONU. 

The key structure used to access a Technology Profile Instance is /voltha/technology_profile_instance/<TID>/<TECHNOLOGY>/<logical_port>; where TID is the numeric ID of the technology profile and TECHNOLOGY specifies the technology being utilized by the adapter, e.g. xpon. While the TID key is a directory, the TECHNOLOGY key should be set to the JSON data that represents the technology profile values, the logical_port is the logical port assigned to the ONU interface.

It may be that multiple Flows will use the same Technology Profile Instance in which case the same Instance can be accessed by different Keys.

Example:

Example Technology Profile Instance Tree
/255/xpon/1024	{
				"name": "4QueueHybridProfileMap1-instance-1",
				"profile Type": "XPON-Instance",
				"version": 1.0,
				"instance_control": {
					"onu": "multi-instance",
					"uni": "single-instance",
					"num_gem_ports": 4
				},
				"alloc-id" : 1024,                         // Assigned by OLT Adapter
				"DBA-Extended-Mode" : "disable",		   // Derived from PON Level configuration
				"u_s_DBA_traffic_descripter": {            // Added by OLT from Upstream Meter Bands
					"Fixed-bw": 0,
					"Assured-bw": 0,
					"Max-bw": 0,
					"Additional-bw-eligibility": "best_effort"   // derived from Meter Bands when u_s_scheduler 'additional_bw' attribute == 'auto'
				},
				"u_s_scheduler": {
					"additional_bw": "auto",
					"priority": 0,
					"weight": 0,
					"q_sched_policy": "hybrid"
				},
				"d_s_traffic_descripter": {            // Added by OLT from Downstream Meter Bands
					"CIR": 0,
					"CBS": 0,
					"EIR": 0,
					"EBS": 0
				},
				"d_s_scheduler": {
					"priority": 0,
					"weight": 0,
					"q_sched_policy": "hybrid"
				},
				 "Upstream GEM_Port_attribute_List" : [
       				{
                    "gem_port_id" : 1024,				// Assigned by OLT Adapter
            		"pbit_map": 0b00000101,
            		"AES_Encryption": "TRUE",
					"Scheduling_Policy": "WRR",
					"Priority_Q": 4,
					"Weight": 25,
					"Discard_Policy": "Tail-Drop",
					"Max_Q_Size": "auto", //Use hardware default Q Size
					"Discard_Config": {
						"Min_Threshold" : 0,
						"Max_Threshold" : 0,
						"Max_Probability" : 0
						},
					"GEM_Traffic_Descriptor" : "disable",  // Enabled if OpenFlow Upstream Queue Configuration defined
					"u_s_traffic_descripter": {            // Added by OLT from Upstream OpenFlow Queue Configuration
						"CIR": 0,
						"CBS": 0,
						"EIR": 0,
						"EBS": 0
						},
        			},
        			{
					"gem_port_id" : 1025,				// Assigned by OLT Adapter
            		"pbit_map": 0b00011010,
            		"AES_Encryption": "TRUE",
					"Scheduling_Policy": "WRR",
					"Priority_Q": 3,
					"Weight": 75,
					"Discard_Policy": "Tail-Drop",
					"Max_Q_Size": "auto", //Use hardware default Q Size
					"Discard_Config": {
						"Min_Threshold" : 0,
						"Max_Threshold" : 0,
						"Max_Probability" : 0
						},
					"GEM_U_S_Traffic_Descriptor" : "disable",  	// Enabled if OpenFlow Upstream Queue Configuration defined
					"u_s_traffic_descripter": {            		// Added by OLT from Upstream OpenFlowQueue Configuration
						"CIR": 0,
						"CBS": 0,
						"EIR": 0,
						"EBS": 0
						},
        			},
        			{
					"gem_port_id" : 1026,				// Assigned by OLT Adapter
            		"pbit_map": 0b00100000,
            		"AES_Encryption": "TRUE",
					"Scheduling_Policy": "Strict-Priority",
					"Priority_Q": 2,
					"Weight": 0,
					"Discard_Policy": "Tail-Drop",
					"Max_Q_Size": "auto", //Use hardware default Q Size
					"Discard_Config": {
						"Min_Threshold" : 0,
						"Max_Threshold" : 0,
						"Max_Probability" : 0
						},
					"GEM_U_S_Traffic_Descriptor" : "disable",  	// Enabled if OpenFlow Upstream Queue Configuration defined
					"u_s_traffic_descripter": {            		// Added by OLT from Upstream OpenFlowQueue Configuration
						"CIR": 0,
						"CBS": 0,
						"EIR": 0,
						"EBS": 0
						},
        			},
        			{
					"gem_port_id" : 1027,				// Assigned by OLT Adapter
            		"pbit_map": 0b11000000,
            		"AES_Encryption": "TRUE",
					"Scheduling_Policy": "Strict-Priority",
					"Priority_Q": 1,
					"Weight": 0,
					"Discard_Policy": "Tail-Drop",
					"Max_Q_Size": "auto", //Use hardware default Q Size
					"Discard_Config": {
						"Min_Threshold" : 0,
						"Max_Threshold" : 0,
						"Max_Probability" : 0
						},
					"GEM_U_S_Traffic_Descriptor" : "disable",  	// Enabled if OpenFlow Upstream Queue Configuration defined
					"u_s_traffic_descripter": {            		// Added by OLT from Upstream OpenFlowQueue Configuration
						"CIR": 0,
						"CBS": 0,
						"EIR": 0,
						"EBS": 0
						},
        			}
    			],
				 "Downstream GEM_Port_attribute_List" : [
       				{
					"gem_port_id" : 1024,				// Assigned by OLT Adapter
            		"pbit_map": 0b00000101,
            		"AES_Encryption": "TRUE",
					"Scheduling_Policy": "WRR",
					"Priority_Q": 4,
					"Weight": 10,
					"Discard_Policy": "Tail-Drop",
					"Max_Q_Size": "auto", //Use hardware default Q Size
					"Discard_Config": {
						"Min_Threshold" : 0,
						"Max_Threshold" : 0,
						"Max_Probability" : 0
						},
					"GEM_D_S_Traffic_Descriptor" : "disable",  	// Enabled if OpenFlow Downstream Queue Configuration defined
					"d_s_traffic_descripter": {            		// Added by OLT from Downstream OpenFlowQueue Configuration
						"CIR": 0,
						"CBS": 0,
						"EIR": 0,
						"EBS": 0
						},
        			},
        			{
					"gem_port_id" : 1025,				// Assigned by OLT Adapter
            		"pbit_map": 0b00011010,
            		"AES_Encryption": "TRUE",
					"Scheduling_Policy": "WRR",
					"Priority_Q": 3,
					"Weight": 90,
					"Discard_Policy": "Tail-Drop",
					"Max_Q_Size": "auto", //Use hardware default Q Size
					"Discard_Config": {
						"Min_Threshold" : 0,
						"Max_Threshold" : 0,
						"Max_Probability" : 0
						},
					"GEM_D_S_Traffic_Descriptor" : "disable",  	// Enabled if OpenFlow Downstream Queue Configuration defined
					"d_s_traffic_descripter": {            		// Added by OLT from Downstream OpenFlowQueue Configuration
						"CIR": 0,
						"CBS": 0,
						"EIR": 0,
						"EBS": 0
						},
        			},
        			{
					"gem_port_id" : 1026,				// Assigned by OLT Adapter
            		"pbit_map": 0b00100000,
            		"AES_Encryption": "TRUE",
					"Scheduling_Policy": "Strict-Priority",
					"Priority_Q": 2,
					"Weight": 0,
					"Discard_Policy": "Tail-Drop",
					"Max_Q_Size": "auto", //Use hardware default Q Size
					"Discard_Config": {
						"Min_Threshold" : 0,
						"Max_Threshold" : 0,
						"Max_Probability" : 0
						},
					"GEM_D_S_Traffic_Descriptor" : "disable",  	// Enabled if OpenFlow Downstream Queue Configuration defined
					"d_s_traffic_descripter": {            		// Added by OLT from Downstream OpenFlowQueue Configuration
						"CIR": 0,
						"CBS": 0,
						"EIR": 0,
						"EBS": 0
						},
        			},
        			{
					"gem_port_id" : 1027,				// Assigned by OLT Adapter
            		"pbit_map": 0b11000000,
            		"AES_Encryption": "TRUE",
					"Scheduling_Policy": "Strict-Priority",
					"Priority_Q": 1,
					"Weight": 25,
					"Discard_Policy": "Tail-Drop",
					"Max_Q_Size": "auto", //Use hardware default Q Size
					"Discard_Config": {
						"Min_Threshold" : 0,
						"Max_Threshold" : 0,
						"Max_Probability" : 0
						},
					"GEM_D_S_Traffic_Descriptor" : "disable",  	// Enabled if OpenFlow Downstream Queue Configuration defined
					"d_s_traffic_descripter": {            		// Added by OLT from Downstream OpenFlowQueue Configuration
						"CIR": 0,
						"CBS": 0,
						"EIR": 0,
						"EBS": 0
						},
        			}
    			]
			}
/254/xpon	{
				"name": "8QueueStrictProfileMap1",
				"instance_control": {
					"onu": "multi-instance",
					"uni": "single-instance",
					"num_gem_ports": 4
				},
				"u_s_scheduler": {
					"fixed_bandwidth": 0,
					"additional_bw": "auto",
					"priority": 0,
					"weight": 0,
					"q_sched_policy": "hybred"
				},
				"d_s_scheduler": {
					"priority": 0,
					"wieght": 0,
					"q_sched_policy": "hybred"
				}
				.
				.
				.
			}
/254/g.fast	{
				"name": "GFastProfileMap",
				.
				.
				.
			}

Creating Technology Profile Instances

Technology Profile Instances are a simple JSON objects created by the OLT Adapters. Once a file is created with the JSON object it can be stored in VOLTHA key/value store.