[1] Broadband Forum (BBF) has defined an object model for managing the software modules in a CPE. The BBF Software Modules object defines Execution Environments, Deployment Units, and Execution Units. These concepts are mapped in the following table.
Table 155.1 Mapping of concepts
Software Modules Concept | OSGi Concept |
---|---|
Execution Environment |
OSGi Framework |
Deployment Unit |
Bundle |
Execution Unit |
Bundle |
There can be multiple Execution Environments of the same or different types. The parent Execution Environment is either the native environment, for example Linux, or it can be another Framework. A BBF Deployment Unit and Execution Unit both map to a bundle since there is no need to separate those concepts in OSGi. An implementation of this object model should have access to all the Execution Environments as the Deployment Units and Execution Units are represented in a single table.
This section is not a specification in the normal sense. The intention of this chapter is to provide guidelines for implementers of the [4] TR-157a3 Internet Gateway Device Software Modules on an OSGi Framework.
The Broadband Forum TR-157 Software Modules standard provides a uniform view of the different execution environments that are available in a device. Execution Environments can model the underlying operating system, an OSGi framework, or other environments that support managing the execution of code.
Most parameters in the Software Modules object model map very well to their OSGi counter parts. However, there are a number of issues that require support from a management agent. This management agent must maintain state to implement the contract implied by the Software Modules standard. For example, the OSGi Framework does not have an Initial Start Level, an OSGi Framework always starts at an environment property defined start level. However, the standard requires that a Framework must start at a given level after it is launched.
There are many other actions that require a management agent to provide the functionality required by TR-157 that is not build into the OSGi Framework since the standard requires a view that covers the whole device, not just the OSGi environment. The assumed architecture is depicted in Figure 155.1.
The following table provides OSGi specific information for the different parameters in the Software Modules object model.
Table 155.2 OSGi Specific Information for the BBF Software Modules object model
TR-069 Software Module Object Parameter |
Mapping in case of OSGi |
---|---|
Device.SoftwareModules. |
|
ExecEnvNumberOfEntries |
|
DeploymentUnitNumberOfEntries |
|
ExecutionUnitNumberOfEntries |
|
Device.SoftwareModules.ExecEnv.{i}. |
|
Enable |
Indicates whether or not this OSGi Framework is enabled. Disabling an enabled OSGi Framework must stop it, while enabling a disabled OSGi Framework must launch it. When an Execution Environment is disabled, Bundles installed in that OSGi Framework will be unaffected, but any Bundles on that OSGi Framework are automatically made inactive. When an OSGi Framework is disabled it is impossible to make changes to the installed bundles, install new bundles, or query any information about the bundles. Disabling the OSGi Framework could place the device in a non-manageable state. For example, if the OSGi Framework runs the Protocol Adapter or has a management agent then it is possible that the device can no longer be restarted. |
Status |
Indicates the status of the OSGi Framework. Enumeration of:
|
Reset |
Setting this parameter to
The value of this parameter is not part of
the device configuration and is always |
Alias |
A non-volatile handle used to reference this instance for alias based addressing. |
Name |
A Name that adequately distinguishes this OSGi
Framework from all other OSGi Frameworks. This must be the OSGi
Framework UUID as stored in the
|
Type |
Indicates the complete type and specification version
of this
Where
the |
InitialRunLevel |
The run level that this If the value of |
RequestedRunLevel |
Sets the start level of this OSGi Framework, meaning
that altering this parameter's value will change the value of the
|
CurrentRunLevel |
The start level that this OSGi Framework is currently
operating in. This value is altered by changing the
If Run Levels are not supported by this OSGi
Framework then |
Version |
The Version of this OSGi Framework as specified by
its Vendor. This is not the version of its specification. Must be
the value of the System Bundle's |
Vendor |
The vendor that produced this OSGi Framework, the
value of the |
ParentExecEnv |
The value must be the path name of a row in the
|
AllocatedDiskSpace |
Implementation specific. |
AvailableDiskSpace |
Implementation specific. |
AllocatedMemory |
Implementation specific. |
AvailableMemory |
Implementation specific. |
ProcessorRefList |
Comma-separated list of paths into the
|
ActiveExecutionUnits |
Comma-separated list of paths into the
|
|
This table serves as the Bundles inventory and contains status information about each Bundle. A new instance of this table gets created during the installation of a Bundle. |
UUID |
A Universally Unique Identifier either provided by the ACS, or generated by the CPE, at the time of Deployment Unit Installation. The format of this value is defined by [2] RFC 4122 A Universally Unique IDentifier (UUID) URN Namespace Version 3 (Name-Based) and [5] TR-069a3 CPE WAN Management Protocol. This value must not be altered when the Bundle is updated. A management agent should use the UUID as the bundle location since the location plays the same role. |
DUID |
The Bundle id from the |
Alias |
A non-volatile handle used to reference this instance. |
Name |
Indicates the Bundle Symbolic Name of this Bundle. The value of this parameter is used in the generation of the UUID based on the rules defined in [5] TR-069a3 CPE WAN Management Protocol. |
Status |
Indicates the status of this Bundle. Enumeration of:
|
Resolved |
Indicates whether or not this
|
URL |
Contains the URL used by the most recent
|
Description |
Textual description of this Bundle, must be the value of the Bundle-Description manifest header or an empty string if not present. |
Vendor |
The author of this |
Version |
Version of this Bundle, it mist be he value of the
|
VendorLogList |
Empty String |
VendorConfigList |
Empty String |
ExecutionUnitList |
A path into the |
ExecutionEnvRef |
The value must be the path name of a row in the
|
|
This table serves as the Execution Unit inventory and contains both status information about each Execution Unit as well as configurable parameters for each Execution Unit. This list contains all the bundles since in an OSGi Framework Deployment Unit and Execution Unit are mapped to Bundles. |
EUID |
Table wide identifier for a bundle chosen by the OSGi
Framework during installation of the associated
|
Alias |
A non-volatile handle used to reference this instance. |
Name |
The name should be unique across all Bundles
instances contained within its associated
|
ExecEnvLabel |
The name must be unique across all Bundles contained within a specific OSGi Framework. This must therefore be the Bundle Id. |
AutoStart |
If An OSGi
bundle is persistently started or transiently started. It is not
possible to change this state without affecting the active state
of the bundle. Therefore, if the |
RunLevel |
Determines when this Bundle will be started. If
|
Status |
Indicates the status of this
|
RequestedState |
Indicates the state transition that the ACS is requesting for this Bundle. Enumeration of:
If this Bundle is disabled and an attempt
is made to alter this value, then a CWMP Fault must be generated.
The value of this parameter is not part of the device
configuration and is always an empty string when read. Bundles
must be started transiently when the |
ExecutionFaultCode |
If while running or transitioning between states this Bundle raises an Exception then this parameter embodies the problem. Enumeration of:
For fault codes not included in this list, the vendor can include vendor-specific values, which must use the format defined in Section 3.3 of [6] TR-106a4 Data Model Template for TR-069-Enabled Devices. |
ExecutionFaultMessage |
If while running or transitioning between states this
Bundle identifies a fault this parameter provides a more detailed
explanation of the problem enumerated in the
If
|
Vendor |
Vendor of this Bundle. The value of the Bundle-Vendor manifest header |
Description |
Textual description of this Bundle. The value of the Bundle-Description manifest header |
Version |
Version of the Bundle. The value of the
|
VendorLogList |
Empty string. |
VendorConfigList |
Empty string. |
DiskSpaceInUse |
Implementation defined |
MemoryInUse |
Implementation defined |
References |
Empty String |
AssociatedProcessList |
Empty String as an OSGi bundle reuses the process of the VM. |
SupportedDataModelList |
Comma-separated list of strings. Each list item must
be the path name of a row in the DeviceInfo.SupportedDataModel
table. If the referenced object is deleted, the corresponding item
must be removed from the list. Represents the CWMP-DT schema
instances that have been introduced to this device because of the
existence of this |
ExecutionEnvRef |
The path to the OSGi Framework that hosts this bundle
in the |
|
This object proposes a general location for vendor extensions specific to this Execution Unit, which allows multiple Execution Units to expose parameters without the concern of conflicting parameter names. This part is not used in OSGi. |
[1]Broadband Forumhttps://www.broadband-forum.org
[2]RFC 4122 A Universally Unique IDentifier (UUID) URN Namespacehttps://www.ietf.org/rfc/rfc4122.txt
[3]TR-157a3 Component Objects for CWMPhttps://www.broadband-forum.org/technical/download/TR-157_Amendment-3.pdf
[4]TR-157a3 Internet Gateway Device Software Moduleshttps://www.broadband-forum.org/cwmp/tr-157-1-3-0-igd.html#D.InternetGatewayDevice.SoftwareModules
[5]TR-069a3 CPE WAN Management Protocolhttps://www.broadband-forum.org/technical/download/TR-069_Amendment-3.pdf
[6]TR-106a4 Data Model Template for TR-069-Enabled Deviceshttps://www.broadband-forum.org/technical/download/TR-106_Amendment-4.pdf