From aca15602de1932a8641865ebbfae5c203d366526 Mon Sep 17 00:00:00 2001 From: hammadzf Date: Tue, 3 Mar 2026 11:27:12 +0100 Subject: [PATCH 1/2] clarify distributed architecture in Annex B --- GS_NFV-SOL_026.md | 52 ++++++++++++++++++++++++++++------------------ media/image46.png | Bin 0 -> 21284 bytes 2 files changed, 32 insertions(+), 20 deletions(-) create mode 100644 media/image46.png diff --git a/GS_NFV-SOL_026.md b/GS_NFV-SOL_026.md index b0180fe..cf36134 100644 --- a/GS_NFV-SOL_026.md +++ b/GS_NFV-SOL_026.md @@ -286,21 +286,6 @@ NOTE: The software inventory collections available at all the listed Redfish® Editor's Note: The above list to be updated if more relevant Redfish® objects are identified to be mapped against the IFA053 NfviPopInfo object. -### 5.3.5 Physical resource inventory object - -The physical resource inventory object, specified as PhysicalResourceInventory in ETSI GS NFV-IFA 053 [\[1\]](#_ref_1), does not correspond to any specific object in the Redfish® data model specification. However, it can be related with the NFVI-PoP object as specified in table 5.3.5-1. - -**Table 5.3.5-1: Definition of the Physical resource inventory object** - -|Attribute Name|Data Type|Cardinality|Description| -|-|-|-|-| -|id|Identifier|1|Identifier of the resource.| -|nfviPops|NFVI-PoP|1..N|List of relevant NFVI-PoP data objects.| - -In a distributed scenario where each NFVI-PoP is managed by its own Redfish® service, the collective physical resource inventory information can be represented as a collection of the respective NFVI-PoP data objects. - -Editor's Note: The physical resource inventory object is candidate to be omitted from this version of the present document to avoid any confusion. It can be included once it is clear how to aggregate the overall physical resource inventory belonging to different NFVI-PoPs. - ## 5.4 Performance management related objects ### 5.4.1 PMJob @@ -784,8 +769,6 @@ The operations supported over this service interface are the following: - Subscribe to notifications related to changes in inventory - Notify subscribers according to the subscriptions -Editor's Note: Retrieving and updating inventory information across different NFVI-PoPs managed by the PIM requires further consideration as Redfish may lack support for distributed architecture. An additional aggregation/abstraction layer may need to be provided by the PIM to offer a consolidated view and management functionality across different NFVI-PoPs, and to interact with individual Redfish services operating within each NFVI-PoP. This aspect can potentially be explained by an informative annex in this document. The normative provisions related to this aspect may be omitted from the scope of the first edition of the present document. - ## 7.2 API version The API {VERSION} for the profiled Redfish® interface [\[2\]](#_ref_2) shall be set to \"v1\". Details about the API structure of the Redfish® interface [\[2\]](#_ref_2) are provided in clause 4.3.2 of the present document. @@ -2737,11 +2720,40 @@ The procedure consists of the following steps as illustrated in figure A.5-1.
-# Annex B (normative or informative): Title of annex +# Annex B (informative): Relationship between the PIM and the standard Redfish® service + +## B.1 Introduction + +According to the PIM architectural framework and the information model specified in the ETSI GS NFV-IFA 053 [\[1\]](#_ref_1), the PIM function can manage multiple NFVI-PoPs and the physical resources within those NFVI-PoPs. In such a scenario, the PIM can provide a centralized entrypoint for managing the physical infrastructure of each NFVI-PoP. The Redfish® standard on the other hand lacks a clear centralized architecture. Instead the standard Redfish® service can be seen as responsible for managing the hardware resources within an individual NFVI-PoP, or a site. This relationship is demonstrated with the help of an example manifestation of a distributed architecutre comprising of multiple NFVI-PoPs as illustrated in figure B.1-1. + +> NOTE: Within the NFV framework, the concept of NFVI-PoP represents a physical site or a point of presence (PoP) that offers infrastructure (NFVI) for the NFV workloads. The NFVI can further contain different kinds of infrastructure resources, e.g., physical, virtual, CIS cluster. See ETSI GR NFV 003 [\[i.1\]](#_ref_i.1) for more clarification on the concepts of NFVI, NFVI-PoP and examples of variours kinds of NFVI resources. -## B.1 First clause of the annex +![Figure B.1-1: Relationship between the PIM and Redfish® services in a distributed architecture](media/image46.png) -### B.1.1 First subdivided clause of the annex +**Figure B.1-1: Relationship between the PIM and Redfish® services in a distributed architecture** + +In a distributed scenario, the PIM function acts as a central gateway towards individual Redfish® services running within each NFVI-PoP, which offer entry points to managing the NFVI physical resources via their corresponding service roots \".../redfish/v1\". Subsequent Redfish® resources and services (such as Chassis, Systems, Managers, CompositionService, TelemetryService, EventService, LogService) for a corresponding NFVI-PoP can be reached under the root URI preceeded by the appropriate address space of the respective NFVI-PoP, e.g., the IP address and port on which the Redfish® service is exposed on. + +## B.2 Management considerations for the distributed architecture + +### B.2.1 General considerations + +The different PIM service interfaces specified in the present document are specified from the perspective of an individual NFVI-PoP. The physical resources within an NFVI-PoP are managed via the Redfish® protocol and its applicable API endpoints that are profiled to realize different PIM service interfaces. The root URI (\".../redfish/v1\") for these API endpoints stays the same for an NFVI-PoP. In case of multiple NFVI-PoPs, the PIM identifies the appropriate Redfish® service and its root URI for managing the physical resources across NFVI-PoPs. + +### B.2.2 Considerations for inventory management + +The PhysicalResourceInventory information model specified in ETSI GS NFV-IFA 053 [\[1\]](#_ref_1) represents inventory related information for all the NFVI-PoPs managed by the PIM. In a distributed scenario concerning multiple NFVI-PoPs where each NFVI-PoP is managed by its own Redfish® service, the overall physical resource inventory information can be represented as a collection of the respective NFVI-PoP data objects (see clause 5.3.4 for the definition of NFVI-PoP object.) + +Retrieving and updating inventory information across different NFVI-PoPs managed by the PIM requires the PIM to identify the appropriate Redfish® services of corresponding NFVI-PoPs and invoke inventory management operations towards those services on a per NFVI-PoP basis. Furthermore, a central aggregation layer is required at the PIM which offers a consolidated view of physical resource inventory across different NFVI-PoPs. This version of the present document does not specify any normative provisions related to this aggregation aspect. + +According to the approach mentioned above, an example definition of the physical resource inventory object corresponding to PhysicalResourceInventory in ETSI GS NFV-IFA 053 [\[1\]](#_ref_1) is demonstrated in table B.2.2-1. However, such object is not managed via the physical resource inventory management service interface in this version of the present document. + +**Table B.2.2-1: Example definition of the Physical resource inventory object** + +|Attribute Name|Data Type|Cardinality|Description| +|-|-|-|-| +|id|Identifier|1|Identifier of the resource.| +|nfviPops|NFVI-PoP|1..N|List of relevant NFVI-PoP data objects.|
diff --git a/media/image46.png b/media/image46.png new file mode 100644 index 0000000000000000000000000000000000000000..e9a839d38b44cb01bffd438ce047f6354f1bb3fc GIT binary patch literal 21284 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 literal 0 HcmV?d00001 -- GitLab From 7dfafd62be3ef6b8d0d3c04a349c9bc6ed9cd661 Mon Sep 17 00:00:00 2001 From: Hammad Zafar Date: Tue, 10 Mar 2026 13:08:56 +0000 Subject: [PATCH 2/2] update image --- media/image46.png | Bin 21284 -> 12021 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/media/image46.png b/media/image46.png index e9a839d38b44cb01bffd438ce047f6354f1bb3fc..5466cfa661cd278f02f6300fd6b39baeff0ec5cc 100644 GIT binary patch literal 12021 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 -- GitLab