Separated publish subscription based on control and data functionality

By separating the control plane and data plane in the communication system, allowing the publishing and subscription client to dynamically select and migrate data functions, the problem of difficulty in supporting dynamics and diversity in the prior art is solved, and efficient management and optimization of the publishing and subscription system is achieved.

CN119865525APending Publication Date: 2025-04-22NOKIA NETWORKS OY
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411454137.4
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-10-20
Filing Date
2024-10-17
Publication Date
2025-04-22

AI Technical Summary

Technical Problem

The prior art has difficulty in effectively supporting the publish subscription paradigm in communication systems, especially the need for dynamics and diversity has not been adequately addressed.

Method used

By separating control plane functions and data plane functions in the communication system, the publishing and subscription clients allow independent sessions with control functions and data functions, and dynamically select and migrate data functions based on specific needs.

Benefits of technology

It realizes dynamic management and optimization of publish and subscription systems, supports large-scale, huge dynamics and extreme diversity, and improves the flexibility and efficiency of communication systems.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119865525A_ABST
    Figure CN119865525A_ABST
Patent Text Reader

Abstract

The invention relates to a separate publish subscription based on control and data functionality. Various example embodiments are presented for supporting a publish-subscribe (pub-sub) system. Various example embodiments for supporting a pub-sub system may be configured to support communication between pub-sub clients of the pub-sub system based on separation of control plane functionality and data plane functionality of a legacy pub-sub proxy, which generally facilitates establishment and use of a pub-sub session by the pub-sub clients. Various example embodiments for supporting a pub-sub system may be configured to support communication between pub-sub clients of a pub-sub system based on individual logical entities that separate control plane functionality and data plane functionality of a legacy pub-sub agent into control function (CF) and data function (DF) forms, respectively. Various example embodiments for supporting a pub-sub system may be configured to support communications of a pub-sub client of the pub-sub system based on appropriate DF selection at the time of pub-sub session establishment and DF reselection within an active pub-sub session as conditions change.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Various example embodiments relate generally to communication systems and, more particularly, but not exclusively, to supporting a publish-subscribe paradigm in communication systems. Background Art

[0002] Various communication technologies may be used to support communications in various types of communication systems. Summary of the invention

[0003] In at least some example embodiments, an apparatus includes at least one processor and at least one memory including instructions, which when executed by the at least one processor causes the apparatus to at least send a request to a control function to establish a publish-subscribe control session between a publish-subscribe client and the control function, receive a response from a data function based on the publish-subscribe control session, the data function identification to be used by the publish-subscribe client for a publish-subscribe data session, and send a request to the data function to establish a publish-subscribe data session between the publish-subscribe client and the data function. In at least some example embodiments, the request to establish the publish-subscribe control session is sent through a connection between the publish-subscribe client and the control function and using a message of a publish-subscribe protocol. In at least some example embodiments, the request to establish the publish-subscribe control session includes parameters specified for the publish-subscribe data session, and the data function is selected from a set of available data functions based on the parameters specified for the publish-subscribe data session. In at least some example embodiments, the parameters specified for the publish-subscribe data session include at least one of a content type of content to be transmitted on the publish-subscribe data session, a client type of the publish-subscribe client, or a location of the publish-subscribe client. In at least some example embodiments, the request to establish the publish-subscribe data session is sent through a connection between the publish-subscribe client and the data function and using a message of a publish-subscribe protocol. In at least some example embodiments, the instructions, when executed by at least one processor, cause the device to send a request to publish content or a request to subscribe to content to a data function based on a publish-subscribe data session. In at least some example embodiments, the instructions, when executed by at least one processor, cause the device to at least receive a message from a second data function, the second data function identifying a publish-subscribe data session to be used by a publish-subscribe client; and send a request to the second data function to establish a publish-subscribe data session between the publish-subscribe client and the second data function. In at least some example embodiments, the message identifying the second data function is received via a publish-subscribe control session. In at least some example embodiments, the message identifying the second data function is received via a publish-subscribe data session.

[0004] In at least some example embodiments, a non-transitory computer-readable medium stores computer program instructions that, when executed by an apparatus, cause the apparatus to at least send a request to a control function to establish a publish-subscribe control session between a publish-subscribe client and the control function, receive a response from a data function based on the publish-subscribe control session, the data function identifying a publish-subscribe data session to be used by the publish-subscribe client, and send a request to the data function to establish a publish-subscribe data session between the publish-subscribe client and the data function. In at least some example embodiments, the request to establish the publish-subscribe control session is sent through a connection between the publish-subscribe client and the control function and using a message of a publish-subscribe protocol. In at least some example embodiments, the request to establish the publish-subscribe control session includes parameters specified for the publish-subscribe data session, and the data function is selected from a set of available data functions based on the parameters specified for the publish-subscribe data session. In at least some example embodiments, the parameters specified for the publish-subscribe data session include at least one of a content type of content to be transmitted on the publish-subscribe data session, a client type of the publish-subscribe client, or a location of the publish-subscribe client. In at least some example embodiments, the request to establish the publish-subscribe data session is sent through a connection between the publish-subscribe client and the data function and using a message of a publish-subscribe protocol. In at least some example embodiments, the computer program instructions, when executed by an apparatus, cause the apparatus to send a request to publish content or a request to subscribe to content to a data function based on at least a publish-subscribe data session. In at least some example embodiments, the computer program instructions, when executed by an apparatus, cause the apparatus to at least receive a message from a second data function, the second data function identifying a publish-subscribe data session to be used by a publish-subscribe client, and sending a request to the second data function to establish a publish-subscribe data session between the publish-subscribe client and the second data function. In at least some example embodiments, the message identifying the second data function is received via a publish-subscribe control session. In at least some example embodiments, the message identifying the second data function is received via a publish-subscribe data session.

[0005] In at least some example embodiments, a method includes sending a request to a control function to establish a publish-subscribe control session between a publish-subscribe client and the control function, receiving a response from a data function based on the publish-subscribe control session, the data function identification to be used by the publish-subscribe client for the publish-subscribe data session, and sending a request to the data function to establish a publish-subscribe data session between the publish-subscribe client and the data function. In at least some example embodiments, the request to establish the publish-subscribe control session is sent through a connection between the publish-subscribe client and the control function and using a message of a publish-subscribe protocol. In at least some example embodiments, the request to establish the publish-subscribe control session includes parameters specified for the publish-subscribe data session, and the data function is selected from a set of available data functions based on the parameters specified for the publish-subscribe data session. In at least some example embodiments, the parameters specified for the publish-subscribe data session include at least one of a content type of content to be transmitted on the publish-subscribe data session, a client type of the publish-subscribe client, or a location of the publish-subscribe client. In at least some example embodiments, the request to establish the publish-subscribe data session is sent through a connection between the publish-subscribe client and the data function and using a message of a publish-subscribe protocol. In at least some example embodiments, the method includes sending a request to publish content or a request to subscribe to content to a data function based on a publish-subscribe data session. In at least some example embodiments, the method includes receiving a message from a second data function, the second data function identifying a publish-subscribe data session to be used by a publish-subscribe client, and sending a request to the second data function to establish a publish-subscribe data session between the publish-subscribe client and the second data function. In at least some example embodiments, the message identifying the second data function is received via a publish-subscribe control session. In at least some example embodiments, the message identifying the second data function is received via a publish-subscribe data session.

[0006] In at least some example embodiments, an apparatus includes a component for sending a request to establish a publish-subscribe control session between a publish-subscribe client and the control function to a control function, a component for receiving a response from a data function based on the publish-subscribe control session and the data function identification is to be used by the publish-subscribe client for a publish-subscribe data session, and a component for sending a request to establish a publish-subscribe data session between the publish-subscribe client and the data function to the data function. In at least some example embodiments, the request to establish the publish-subscribe control session is sent through a connection between the publish-subscribe client and the control function and using a message of a publish-subscribe protocol. In at least some example embodiments, the request to establish the publish-subscribe control session includes parameters specified for the publish-subscribe data session, and the data function is selected from a set of available data functions based on the parameters specified for the publish-subscribe data session. In at least some example embodiments, the parameters specified for the publish-subscribe data session include at least one of a content type of content to be transmitted on the publish-subscribe data session, a client type of the publish-subscribe client, or a location of the publish-subscribe client. In at least some example embodiments, the request to establish the publish-subscribe data session is sent through a connection between the publish-subscribe client and the data function and using a message of a publish-subscribe protocol. In at least some example embodiments, the apparatus includes a component for sending a request to publish content or a request to subscribe to content to a data function based on a publish-subscribe data session. In at least some example embodiments, the apparatus includes a component for receiving a message from a second data function that identifies a component to be used by a publish-subscribe client for a publish-subscribe data session, and a component for sending a request to the second data function to establish a publish-subscribe data session between the publish-subscribe client and the second data function. In at least some example embodiments, the message identifying the second data function is received via a publish-subscribe control session. In at least some example embodiments, the message identifying the second data function is received via a publish-subscribe data session.

[0007] In at least some example embodiments, an apparatus includes at least one processor and at least one memory including instructions that, when executed by the at least one processor, cause the apparatus to at least receive a request from a publish-subscribe client to establish a publish-subscribe control session between the publish-subscribe client and a control function, select a data function to be used by the publish-subscribe client for a publish-subscribe data session between the publish-subscribe client and the data function based on the request to establish the publish-subscribe control session between the publish-subscribe client and the control function, and send a message to the publish-subscribe client identifying the data function to be used by the publish-subscribe client for the publish-subscribe data session between the publish-subscribe client and the data function based on the publish-subscribe control session. In at least some example embodiments, the request to establish the publish-subscribe control session between the publish-subscribe client and the control function includes parameters specified for the publish-subscribe data session, and the data function is selected from a set of available data functions based on the parameters specified for the publish-subscribe data session. In at least some example embodiments, the parameters specified for the publish-subscribe data session include at least one of a content type of content to be transmitted on the publish-subscribe data session, a client type of the publish-subscribe client, or a location of the publish-subscribe client. In at least some example embodiments, the instructions, when executed by at least one processor, cause the apparatus to at least select a second data function to be used by the publish-subscribe client for a publish-subscribe data session between the publish-subscribe client and the data function, and send a message to the publish-subscribe client identifying the second data function to be used by the publish-subscribe client for a publish-subscribe data session between the publish-subscribe client and the second data function. In at least some example embodiments, the message identifying the second data function is sent via a publish-subscribe control session. In at least some example embodiments, the message identifying the second data function is sent to the data function for delivery via the publish-subscribe data session.

[0008] In at least some example embodiments, a non-transitory computer-readable medium stores computer program instructions that, when executed by an apparatus, cause the apparatus to at least receive a request from a publish-subscribe client to establish a publish-subscribe control session between the publish-subscribe client and a control function, select a data function to be used by the publish-subscribe client for a publish-subscribe data session between the publish-subscribe client and the data function based on the request to establish the publish-subscribe control session between the publish-subscribe client and the control function, and send a message to the publish-subscribe client identifying the data function to be used by the publish-subscribe client for the publish-subscribe data session between the publish-subscribe client and the data function based on the publish-subscribe control session. In at least some example embodiments, the request to establish the publish-subscribe control session between the publish-subscribe client and the control function includes parameters specified for the publish-subscribe data session, and the data function is selected from a set of available data functions based on the parameters specified for the publish-subscribe data session. In at least some example embodiments, the parameters specified for the publish-subscribe data session include at least one of a content type of content to be transmitted on the publish-subscribe data session, a client type of the publish-subscribe client, or a location of the publish-subscribe client. In at least some example embodiments, the computer program instructions, when executed by the apparatus, cause the apparatus to at least select a second data function to be used by the publish-subscribe client for a publish-subscribe data session between the publish-subscribe client and the data function, and send a message to the publish-subscribe client identifying the second data function to be used by the publish-subscribe client for a publish-subscribe data session between the publish-subscribe client and the second data function. In at least some example embodiments, the message identifying the second data function is sent via a publish-subscribe control session. In at least some example embodiments, the message identifying the second data function is sent to the data function for delivery via the publish-subscribe data session.

[0009] In at least some example embodiments, a method includes receiving a request from a publish-subscribe client to establish a publish-subscribe control session between the publish-subscribe client and a control function, selecting a data function to be used by the publish-subscribe client for a publish-subscribe data session between the publish-subscribe client and the data function based on the request to establish the publish-subscribe control session between the publish-subscribe client and the control function, and sending a message to the publish-subscribe client identifying the data function to be used by the publish-subscribe client for the publish-subscribe data session between the publish-subscribe client and the data function based on the publish-subscribe control session. In at least some example embodiments, the request to establish the publish-subscribe control session between the publish-subscribe client and the control function includes parameters specified for the publish-subscribe data session, and the data function is selected from a set of available data functions based on the parameters specified for the publish-subscribe data session. In at least some example embodiments, the parameters specified for the publish-subscribe data session include at least one of a content type of content to be transmitted on the publish-subscribe data session, a client type of the publish-subscribe client, or a location of the publish-subscribe client. In at least some example embodiments, the method includes selecting a second data function to be used by the publish-subscribe client for a publish-subscribe data session between the publish-subscribe client and the data function, and sending a message to the publish-subscribe client identifying the second data function to be used by the publish-subscribe client for a publish-subscribe data session between the publish-subscribe client and the second data function. In at least some example embodiments, the message identifying the second data function is sent via a publish-subscribe control session. In at least some example embodiments, the message identifying the second data function is sent to the data function for delivery via the publish-subscribe data session.

[0010] In at least some example embodiments, an apparatus includes components for receiving a request from a publish-subscribe client to establish a publish-subscribe control session between the publish-subscribe client and a control function, components for selecting a data function to be used by the publish-subscribe client for a publish-subscribe data session between the publish-subscribe client and the data function based on the request to establish the publish-subscribe control session between the publish-subscribe client and the control function, and components for sending a message to the publish-subscribe client identifying the data function to be used by the publish-subscribe client for the publish-subscribe data session between the publish-subscribe client and the data function based on the publish-subscribe control session. In at least some example embodiments, the request to establish the publish-subscribe control session between the publish-subscribe client and the control function includes parameters specified for the publish-subscribe data session, and the data function is selected from a set of available data functions based on the parameters specified for the publish-subscribe data session. In at least some example embodiments, the parameters specified for the publish-subscribe data session include at least one of a content type of content to be transmitted on the publish-subscribe data session, a client type of the publish-subscribe client, or a location of the publish-subscribe client. In at least some example embodiments, the apparatus includes means for selecting a second data function to be used by a publish-subscribe client for a publish-subscribe data session between the publish-subscribe client and the data function, and means for sending a message to the publish-subscribe client identifying the second data function to be used by the publish-subscribe client for a publish-subscribe data session between the publish-subscribe client and the second data function. In at least some example embodiments, the message identifying the second data function is sent via a publish-subscribe control session. In at least some example embodiments, the message identifying the second data function is sent to the data function for delivery via the publish-subscribe data session.

[0011] In at least some example embodiments, an apparatus includes at least one processor and at least one memory including instructions that, when executed by the at least one processor, cause the apparatus to at least maintain a publish-subscribe data session between a publish-subscribe client and a data function, receive a message from a control function including an indication of a second data function to be used by the publish-subscribe client for the publish-subscribe data session, send a message to the publish-subscribe client via the publish-subscribe data session including an indication of the second data function to be used by the publish-subscribe client for the publish-subscribe data session, and receive a request from the publish-subscribe client to terminate the publish-subscribe data session between the publish-subscribe client and the data function. In at least some example embodiments, a non-transitory computer-readable medium stores computer program instructions that, when executed by the apparatus, cause the apparatus to at least maintain a publish-subscribe data session between the publish-subscribe client and the data function, receive a message from the control function including an indication of the second data function to be used by the publish-subscribe client for the publish-subscribe data session, send a message to the publish-subscribe client via the publish-subscribe data session including an indication of the second data function to be used by the publish-subscribe client for the publish-subscribe data session, and receive a request from the publish-subscribe client to terminate the publish-subscribe data session between the publish-subscribe client and the data function. In at least some example embodiments, a method includes maintaining a publish-subscribe data session between a publish-subscribe client and a data function, receiving a message from a control function including an indication of a second data function to be used by the publish-subscribe client for the publish-subscribe data session, sending a message to the publish-subscribe client via the publish-subscribe data session including an indication of the second data function to be used by the publish-subscribe client for the publish-subscribe data session, and receiving a request from the publish-subscribe client to terminate the publish-subscribe data session between the publish-subscribe client and the data function. In at least some example embodiments, an apparatus includes components for maintaining a publish-subscribe data session between a publish-subscribe client and a data function, components for receiving a message from a control function including an indication of a second data function to be used by the publish-subscribe client for the publish-subscribe data session, components for sending a message to the publish-subscribe client via the publish-subscribe data session including an indication of the second data function to be used by the publish-subscribe client for the publish-subscribe data session, and components for receiving a request from the publish-subscribe client to terminate the publish-subscribe data session between the publish-subscribe client and the data function. BRIEF DESCRIPTION OF THE DRAWINGS

[0012] The teachings herein may be readily understood by considering the following detailed description in conjunction with the accompanying drawings, in which:

[0013] Figure 1An example embodiment of a pub-sub architecture for a publish-subscribe (pub-sub) client is depicted, the architecture being based on a logical separation of pub-sub control functions and pub-sub data functions to support pub-sub communications by the pub-sub client;

[0014] Figure 2 Describes the use Figure 1 An example embodiment of a pub-sub architecture for providing a service selection function that performs initial data function selection for a pub-sub client to support a pub-sub data session of the pub-sub client;

[0015] Figure 3 Describes the use of pub-sub clients to support Figure 2 An example embodiment of a method of presenting a service selection function;

[0016] Figure 4 Describes the use of control functions to support Figure 2 An example embodiment of a method of presenting a service selection function;

[0017] Figure 5 Describes the use of data functions to support Figure 2 An example embodiment of a method of presenting a service selection function;

[0018] Figure 6 Describes the use Figure 1 An example embodiment of a pub-sub architecture for providing a service migration function that performs data function migration for a pub-sub client to change a data function used during a pub-sub data session of the pub-sub client;

[0019] Figure 7 Describes the use of pub-sub clients to support Figure 6 An example embodiment of a method of presenting a service migration function;

[0020] Figure 8 Describes the use of control functions to support Figure 6 An example embodiment of a method of presenting a service migration function;

[0021] Fig. 9 Describes the use of data functions to support Figure 6 An example embodiment of a method of service selection migration is presented;

[0022] Fig.10An example embodiment of a pub-sub system based on a pub-sub architecture including separate control functions and data functions configured to support pub-sub communications by pub-sub clients is depicted;

[0023] Fig.11 Depicted are example embodiments of a pub-sub architecture configured to provide publish-subscribe-as-a-service (PSaaS);

[0024] Fig.12 Describes an example embodiment of using a pub-sub system to support diversity in protocol usage;

[0025] Fig.13 Describes an example embodiment of using a pub-sub system to support diversity in content and content session types;

[0026] Fig.14 Describes an example embodiment of using a pub-sub system to support dynamics of client behavior;

[0027] Fig.15 Describes the use of the term in the context of a specific type of communication network. Fig.11 An example embodiment of a pub-sub architecture of; and

[0028] Fig.16 An example embodiment of a computer suitable for performing the various functions presented herein is depicted.

[0029] To facilitate understanding, identical reference numerals have been used herein, where possible, to designate identical elements that are common to the various figures. DETAILED DESCRIPTION

[0030] Various example embodiments for supporting a publish-subscribe (pub-sub) system are presented herein. In general, pub-sub is a paradigm for content distribution that supports distributing content from one or more content producers (commonly referred to as content publishers, or more generally referred to as publishers) to one or more content consumers (commonly referred to as content subscribers, or more generally referred to as subscribers) using a pub-sub session that supports delivery of content from producers to consumers. A pub-sub system can support one-to-many distribution (e.g., distribution of content from one producer to many consumers), many-to-one distribution (e.g., distribution of content from many producers to one consumer), or many-to-many distribution (e.g., distribution of content from many producers to many consumers). It should be understood that when the roles played by content producers (publishers) and content consumers (subscribers) are not necessarily context-dependent, they can be more generally referred to as pub-sub clients (i.e., clients of a pub-sub system). Various example embodiments for supporting a pub-sub system can be configured to support communication between pub-sub clients of a pub-sub system.

[0031] Various example embodiments for supporting a pub-sub system may be configured to support communication between pub-sub clients of a pub-sub system based on the separation of control plane functions and data plane functions of a traditional pub-sub proxy, which generally facilitates the establishment and use of pub-sub sessions by pub-sub clients. Various example embodiments for supporting a pub-sub system may be configured to support communication between pub-sub clients of a pub-sub system based on the separation of control plane functions and data plane functions of a traditional pub-sub proxy into individual logical entities in the form of control functions (CF) and data functions (DF), respectively. Various example embodiments for supporting a pub-sub system may be configured to support communication of pub-sub clients of a pub-sub system based on an extension of a pub-sub client interface of a pub-sub client to support the pub-sub client to interact with the CF using a pub-sub control session and to interact with the DF using a pub-sub data session. Various example embodiments for supporting a pub-sub system may be configured to support communication of pub-sub clients of a pub-sub system based on extensions of the pub-sub client interface of the pub-sub clients to allow appropriate DF selection when a pub-sub session is established and to allow subsequent DF reselection within an active pub-sub session as conditions change (e.g., pub-sub client requirements, pub-sub client location, content type, network conditions, etc., and various combinations thereof).

[0032] Various example embodiments for supporting a pub-sub system may be configured to provide a pub-sub architecture that supports large scale (e.g., handling a large number of pub-sub clients), enormous dynamics (e.g., dynamics in the number of pub-sub clients in a pub-sub system, dynamics in the locations at which pub-sub clients join the pub-sub system (including movement relative to the network), dynamics in the length of time that pub-sub clients remain active within the pub-sub system (e.g., relatively long or short durations, widely variable durations, etc.), etc., and various combinations thereof), and extreme diversity (e.g., diversity in the types of content delivered, diversity in the protocols used for content delivery, diversity in the business characteristics of the business transport content, and diversity in the fan-out characteristics of groups of pub-sub clients within the pub-sub system (e.g., unicast versus multicast), etc.). Various example embodiments for supporting a pub-sub system may be configured to provide a pub-sub architecture that supports Publish-Subscribe-as-a-Service (PSaaS).

[0033] Various example embodiments for supporting a pub-sub system may be configured to support communications between pub-sub clients of a pub-sub system in various communication contexts. For example, various example embodiments for supporting a pub-sub system may be configured to support communications between pub-sub clients of a pub-sub system, which have been implemented to support communications in service provider networks (e.g., supporting communications in cellular communication networks, such as fifth generation (5G) networks and sixth generation (6G) cellular networks, or various other types of service provider communication networks), communications in industrial Internet environments (e.g., Industrial Internet of Things (IIoT), or other industrial Internet applications that may be used for manufacturing management, energy management, etc.), communications in a large number of sensing contexts (e.g., asset management, inventory optimization, health monitoring, wearable connectivity, smart environmental control, etc.), etc., and various combinations thereof.

[0034] It should be understood that these and various other example embodiments for supporting pub-sub systems, as well as the advantages or potential advantages of example embodiments for supporting pub-sub systems, can be further understood by first considering various aspects of the publish-subscribe paradigm and the various contexts in which the publish-subscribe paradigm can be deployed.

[0035] Figure 1 Depicted are example embodiments of a publish-subscribe (pub-sub) architecture based on a logical separation of pub-sub control plane functions and pub-sub data plane functions to support pub-sub communications for pub-sub clients.

[0036] The pub-sub architecture 100 is configured to provide a pub-sub system that supports the propagation of content from content producers to content consumers. The pub-sub architecture 100 includes a pair of pub-sub clients 110 (illustratively, a publisher pub-sub client 110-P configured to operate as a content producer of the pub-sub system and a subscriber pub-sub client 110-S configured to operate as a content consumer of the pub-sub system) and a pair of pub-sub functions 120 (illustratively, a control function (CF) 120-C and a data function (DF) 120-D). It should be understood that the pub-sub architecture 100 can be used to provide a pub-sub system that supports the propagation of content from content producers to content consumers in various contexts using pub-sub (e.g., communication service provider networks, industrial Internet, mass sensing, etc., and various combinations thereof).

[0037] The pub-sub client 110 is configured to participate in the pub-sub system to support the transmission of pub-sub content from a producer of the pub-sub content (e.g., a publisher pub-sub client 110-P) to a consumer of the pub-sub content (e.g., a subscriber pub-sub client 110-S). The pub-sub client 110 may include various types of clients that can operate within the pub-sub system, which may vary for different contexts in which the pub-sub system is deployed. For example, the pub-sub client 110 may include a network function (NF), wherein the pub-sub system is used in the context of a service provider network (e.g., a NF of a fifth generation (5G) cellular network, a NF of a sixth generation (6G) cellular network, etc.). For example, the pub-sub client 110 may include field instruments and workstations, wherein the pub-sub system is used in the context of an industrial Internet environment. For example, the pub-sub client 110 may include sensors and controllers, wherein the pub-sub system is used in the context of a large number of sensing environments. It should be appreciated that pub-sub client 110 may include various other types of endpoints depending on the context in which the pub-sub system is deployed.

[0038] The pub-sub function 120 is configured to support the delivery of pub-sub content from the publisher pub-sub client 110-P to the subscriber pub-sub client 110-S, including establishing and using a pub-sub session that can be used to support the delivery of pub-sub content from the publisher pub-sub client 110-P to the subscriber pub-sub client 110-S. The pub-sub function 120 is logically separated so that each pub-sub client 110 communicates independently with each of the CF 120-C and the DF 120-D using a separate pub-sub session, respectively, as opposed to the case of a conventional pub-sub proxy, in which the pub-sub control function and the pub-sub data function are logically combined in the conventional pub-sub proxy so that each pub-sub client only supports a single pub-sub session to the conventional pub-sub proxy (so that the pub-sub control and data communications of the pub-sub client are limited to being conducted through a single pub-sub session). That is, as Figure 1 As shown, based on the separation of control plane functions and data plane functions in the form of CF 120-C and DF 120-D, pub-sub clients 110-P and 110-S support corresponding pub-sub control sessions 121-CP and 121-CS (collectively referred to as pub-sub control sessions 121-C) to CF 120-C, and support corresponding pub-sub data sessions 121-DP and 121-DS (collectively referred to as pub-sub data sessions 121-D) to DF 120-D, and pub-sub control sessions 121-C and pub-sub data sessions 121-D may be collectively referred to as pub-sub sessions 121 in this document).

[0039] CF 120-C is configured to support establishment and management of pub-sub sessions 121 for pub-sub clients 110. CF 120-C is configured to support management of various events associated with establishment and management of pub-sub sessions for pub-sub clients 110 (e.g., pub-sub client join / leave, pub-sub client authentication, etc.). CF 120-C is configured to support configuration of DF 120-D for propagation of pub-sub content (e.g., exchange creation / deletion, queue binding / unbinding, etc.). It should be understood that CF 120-C may be configured to support various other functions typically provided by the control plane of a traditional pub-sub proxy in a pub-sub system. For the purpose of supporting the establishment and management of pub-sub data sessions 121-D, CF 120-C is configured to support the establishment of pub-sub control sessions 121-C (illustratively, control connection 121-CP for pub-sub client 110-P and control connection 121-CS for pub-sub client 110-S) with pub-sub client 110 for use by pub-sub client 110 to support the delivery of pub-sub content in the pub-sub system.

[0040] DF 120-D is configured to support the establishment and use of pub-sub data sessions 121-D for communication between pub-sub clients 110, including supporting the propagation of pub-sub content between pub-sub clients 110 via the pub-sub sessions. DF 120-D is configured to provide various functions for supporting the propagation of pub-sub content between pub-sub clients 110 via the pub-sub sessions (e.g., data ingress / egress, data buffering, data filtering, etc.). It should be understood that DF 120-D can be configured to support various other functions typically provided by the data plane of a traditional pub-sub proxy in a pub-sub system. DF 120-D is configured to support establishment of a pub-sub data session 121-D (illustratively, a pub-sub data session 121-DP for pub-sub client 110-P and a pub-sub data session 121-DS for pub-sub client 110-S) with pub-sub client 110 for use by pub-sub client 110 to support delivery of pub-sub content in the pub-sub system.

[0041] The pub-sub session 121 between the pub-sub client 110 and the pub-sub function 120 may be provided in various ways. As discussed further below, for example, the pub-sub session 121 of the pub-sub client 110 may operate at the pub-sub layer based on one or more pub-sub protocols and may be supported based on an underlying connection that may be based on various communication protocols that may operate at various communication layers.

[0042] As described above, the pub-sub session 121 of the pub-sub client 110 may operate at the pub-sub layer based on one or more pub-sub protocols. For example, the one or more pub-sub protocols may be used to establish the pub-sub session 121 of the pub-sub client 110, and to transfer pub-sub content between the pub-sub clients 110 using the pub-sub session 121 of the pub-sub client 110. For example, the pub-sub protocol may support various message types, which may include message types for establishing and terminating the pub-sub session 121 of the pub-sub client 110 (e.g., CONNECT, REDIRECT, DISCONNECT, etc., and various combinations thereof, or various other types of messages that may be used for this purpose), and message types for exchanging pub-sub content between the pub-sub clients 110 in the context of the pub-sub session 121 of the pub-sub client 110. It should be understood that although example embodiments are primarily presented with respect to where pub-sub client 110 supports a pub-sub protocol configured to enable separation of a traditional pub-sub proxy into CF 120-C and DF 120-D, traditional pub-sub clients that do not support a pub-sub protocol configured to enable separation of a traditional pub-sub proxy into CF 120-C and DF 120-D may still participate in the pub-sub system based on separation of the traditional pub-sub proxy into CF 120-C and DF 120-D using a protocol converter placed between such traditional pub-sub client and the separate functions (i.e., CF 120-C and DF 120-D), wherein the protocol converter is configured to convert between the traditional pub-sub protocol and the pub-sub protocol configured to enable separation of the traditional pub-sub proxy into CF 120-C and DF 120-D.

[0043] The pub-sub session 121 may be supported using an underlying connection that may be implemented in a variety of ways. For example, the underlying connection supporting the pub-sub session 121 may be implemented using various communication protocols or combinations of communication protocols (e.g., one or more reliable protocols of the transport layer, one or more reliable protocols of the session layer, etc., and various combinations thereof). For example, the underlying connection supporting the pub-sub session 121 may be implemented as a Transmission Control Protocol (TCP) connection, or at least based on a TCP connection, may be implemented as a Hypertext Transfer Protocol (HTTP) connection, or at least based on an HTTP connection, and so on, and various combinations thereof. It should be understood that the connection underlying the pub-sub session 121 may be implemented in a variety of other ways (e.g., using various other communication layers or combinations of communication layers, using various other communication protocols or combinations of communication protocols, and so on, and various combinations thereof).

[0044] The pub-sub architecture 100 is configured to support dynamic control of the association of pub-sub clients 110 with DFs to support pub-sub communications of the pub-sub clients 110. The pub-sub architecture 100 is configured to support dynamic DF selection of the pub-sub clients 110 (including initial DF selection based on initial conditions and subsequent DF reselection as conditions change), thereby ensuring that at any given time, each pub-sub client 110 supports delivery of pub-sub content via a pub-sub data session 121-D established with a DF 120-D that is best suited to support the pub-sub client 110. More specifically, as further discussed herein, the pub-sub architecture 100 is configured to allow appropriate DF selection to be made upon establishment of a pub-sub session of a pub-sub client 110, and to allow subsequent DF reselection to be made within an active pub-sub session of a pub-sub client 110 as conditions change (e.g., changes in one or more of pub-sub client requirements, pub-sub client location, content type being distributed, network conditions of an underlying network supporting pub-sub content distribution, etc., and various combinations thereof). The pub-sub architecture 100 is configured to support a service selection function that performs initial DF selection for a pub-sub client 110 (an example embodiment of which may be described by reference to Figure 2-Figure 5 Further understanding) and the service migration function for performing DF migration for the pub-sub client 110 (an example embodiment of which can be referred to Figure 6-Figure 9 It should be further understood that the pub-sub architecture 100 may be configured to support various other functions to support the transmission of pub-sub content between pub-sub clients 110 in the pub-sub system.

[0045] It should be appreciated that, as discussed further below, pub-sub architecture 100 may be configured to support scale, dynamics, and diversity in a pub-sub system that supports content dissemination to pub-sub clients.

[0046] Figure 2 Describes the use Figure 1 An example embodiment of a pub-sub architecture is provided to provide a service selection function that performs initial data function selection for a pub-sub client to support a pub-sub data session of the pub-sub client.

[0047] like Figure 2 As shown, pub-sub system 200 supports a service selection function, wherein an initial data function is selected for a pub-sub client to support a pub-sub data session of the pub-sub client. The service selection function is performed for pub-sub client 210 based on using a pair of pub-sub functions 220 including CF 220-C and DF 220-D. Note that pub-sub client 210 and the pair of pub-sub functions 220 can communicate based on a pub-sub protocol, which can support various pub-sub protocol message types, which can be used to support the service selection function of pub-sub client 210.

[0048] In the first step of the service selection function, the pub-sub client 210 establishes a pub-sub control session 221-C with the CF 220-C. The pub-sub control session 221-C may be established via a connection (e.g., a TCP connection, an HTTP connection, or any other suitable connection) between the pub-sub client 210 and the CF 220-C, where such a connection may be established in the context of the first step. The pub-sub control session 221-C may be established by sending a message of the pub-sub protocol (e.g., a CONNECT message or other suitable message of the pub-sub protocol) from the pub-sub client 210 to the CF 220-C. The message sent by the pub-sub client 210 to establish the pub-sub control session 221-C between the pub-sub client 210 and the CF 220-C may include information for the CF 220-C to use in selecting the DF 220-D as the data function of the pub-sub client 210. For example, the information used by CF 220-C to select DF 220-D as the data function of pub-sub client 210 may include one or more requirements of a pub-sub data session (e.g., the type of content to be transmitted in the context of the pub-sub data session, a topic identifier under which pub-sub client 210 publishes or consumes content, parameters or features to be supported by the pub-sub data session (e.g., high throughput, low latency, support for deterministic communications, etc.), etc.), one or more parameters associated with pub-sub client 210 (e.g., an identifier of pub-sub client 210, a client type of pub-sub client 210, capabilities of pub-sub client 210, operating parameters of pub-sub client 210, a location of the pub-sub client (e.g., a geographic location, a network location, etc.), etc., and various combinations thereof. This first step is performed in Figure 2 It is represented as connection (CONNECT) 201.

[0049] In the second step of the service selection function, CF 220-C selects a DF that will be used by pub-sub client 210 for pub-sub communication (e.g., for providing pub-sub content if pub-sub client 210 is a publisher, or for receiving pub-sub content if pub-sub client 210 is a subscriber). Figure 2 In the example of FIG. 1 , the selected DF is the depicted DF (i.e., DF 220-D); however, it should be understood that DF 220-D is selected from a set of available DFs (for clarity, Figure 2CF 220-C may select a DF to be used by pub-sub client 210 based on the message sent by pub-sub client 210 to establish a pub-sub control session 221-C between pub-sub client 210 and CF 220-C. CF 220-C may select a DF to be used by pub-sub client 210 to establish pub-sub control session 221-C between pub-sub client 210 based on information included in a message sent by pub-sub client 210 to establish pub-sub control session 221-C between pub-sub client 210 (e.g., one or more requirements of a pub-sub data session (e.g., type of content to be transmitted in the context of the pub-sub data session, parameters or features to be supported by the pub-sub data session (e.g., high throughput, low latency, support for deterministic communication, etc.), etc.), one or more parameters associated with pub-sub client 210 (e.g., an identifier of pub-sub client 210, a client type of pub-sub client 210, capabilities of pub-sub client 210, operating parameters of pub-sub client 210, location of pub-sub client 210 (e.g., geographic location, network location, etc.), etc.), and various combinations thereof. CF 220-C may select a DF to be used by pub-sub client 210 based on one or more DF selection rules, which may utilize various types of information to select a DF for pub-sub client 210. CF CF 220-C may select a DF to be used by pub-sub client 210 based on one or more DF selection algorithms, which may utilize various types of information to select a DF for pub-sub client 210. CF 220-C may select the best DF for pub-sub client 210 to use, or may select a suitable DF for pub-sub client 210 to use. It should be appreciated that CF 220-C may select a DF for pub-sub client 210 in a variety of other ways. Figure 2 It is represented as selection (SELECT) 202.

[0050] In a third step of the service selection function, pub-sub client 210 receives, via a pub-sub control session 221-C between pub-sub client 210 and CF 220-C, an indication that DF 220-D is to be used for pub-sub communications by pub-sub client 210. The indication that DF 220-D is to be used for pub-sub communications by pub-sub client 210 may be received from CF 220-C in a message of the pub-sub protocol (e.g., a redirect message or other suitable message type) by pub-sub client 210. The message may include information identifying DF 220-D selected by CF 220-C for pub-sub client 210. The message may include information that may be used by the pub-sub client 210 to establish a pub-sub data session 221-D between the pub-sub client 210 and the DF 220-D, which may vary depending on one or more of the pub-sub protocol used for the pub-sub data session 221-D between the pub-sub client 210 and the DF 220-D, the type of connection that will be used to support the underlying connection for the pub-sub data session 221-D between the pub-sub client 210 and the DF 220-D, and various combinations thereof. For example, the message may include an address of the DF 220-D, a uniform resource locator (URL) identifying the DF 220-D, and the like, and various combinations thereof. It should be understood that the message for the selected DF 220-D received by the pub-sub client 210 from the CF 220-C may include various other types of information identifying the DF 220-D selected by the CF 220-C for the pub-sub client 210. The third step in Figure 2 It is represented as redirect (REDIRECT) 203.

[0051] In the fourth step of the service selection function, pub-sub client 210 establishes a pub-sub data session 221-D with DF 220-D. Pub-sub data session 221-D may be established through a connection (e.g., a TCP connection, an HTTP connection, or any other suitable connection) between pub-sub client 210 and DF 220-D, wherein such a connection may be established in the context of the fourth step based on information included in a message received by pub-sub client 210 from CF 220-C. Pub-sub data session 221-D may be established by sending a message of a pub-sub protocol (e.g., a CONNECT message or other suitable message of a pub-sub protocol) from pub-sub client 210 to DF 220-D. The message sent by pub-sub client 210 to establish pub-sub data session 221-D between pub-sub client 210 and DF 220-D may include information used by DF 220-D to support pub-sub data session 221-D, information used by DF 220-D to use pub-sub data session 221-D for delivery of pub-sub content, etc., and various combinations thereof. Figure 2 It is represented as connection (CONNECT) 204.

[0052] exist Figure 2 , after a pub-sub data session 221-D has been established between the pub-sub client 210 and the DF 220-D, the pub-sub client 210 may use the pub-sub data session 221-D to support the transfer of pub-sub content between the pub-sub client 210 and other pub-sub clients (omitted for clarity), such as by operating as a publisher and sending pub-sub content to one or more other pub-sub clients operating as subscribers, and / or operating as a subscriber and receiving pub-sub content from one or more other clients operating as publishers.

[0053] Figure 3 Describes the use of pub-sub clients to support Figure 2 It should be understood that although primarily presented as being performed sequentially, at least a portion of the functionality of method 300 may be performed simultaneously or in a manner similar to that described with respect to FIG. Figure 3At box 301, method 300 begins. At box 310, a request is sent to a control function to establish a pub-sub control session between the pub-sub client and the control function. At box 320, a response is received identifying a data function to be used by the pub-sub client for a pub-sub data session based on the pub-sub control session. At box 330, a request is sent to the data function to establish a pub-sub data session between the pub-sub client and the data function. At box 399, method 300 ends. It should be understood that the description herein of the pub-sub control session and the data function is not limited to the description herein. Figure 1 and Figure 2 The various functions presented can be combined in Figure 3 In the context of method 300 .

[0054] Figure 4 Describes the use of control functions to support Figure 2 It should be understood that although primarily presented as being performed sequentially, at least a portion of the functionality of method 400 may be performed simultaneously or in a manner similar to that described with respect to FIG. Figure 4 The method 400 is performed in the different order presented. At box 401, the method 400 starts. At box 410, a request is received from a pub-sub client to establish a pub-sub control session between the pub-sub client and a control function. At box 420, a data function to be used by the pub-sub client for a pub-sub data session between the pub-sub client and the data function is selected based on the request to establish a pub-sub control session between the pub-sub client and the control function. At box 430, a message is sent to the pub-sub client identifying the data function to be used by the pub-sub client for a pub-sub data session between the pub-sub client and the data function based on the pub-sub control session. At box 499, the method 400 ends. It should be understood that the description herein of the data function to be used by the pub-sub client for the pub-sub data session between the pub-sub client and the data function is not limited to the description herein. Figure 1 and Figure 2 The various functions presented can be combined in Figure 4 In the context of method 400 .

[0055] Figure 5 Describes the use of data functions to support Figure 2 It should be understood that although primarily presented as being performed sequentially, at least a portion of the functionality of method 500 may be performed simultaneously or in a manner similar to that described with respect to FIG. Figure 5At block 501, method 500 begins. At block 510, a request is received from a pub-sub client to establish a pub-sub data session between the pub-sub client and the data function. At block 520, a request is received from the pub-sub client related to supporting pub-sub communications between the pub-sub client and the data function via the pub-sub data session. At block 599, method 500 ends. It should be understood that the present disclosure with respect to Figure 1 and Figure 2 The various functions presented can be combined in Figure 5 In the context of method 500 .

[0056] Figure 6 Describes the use Figure 1 An example embodiment of a pub-sub architecture is provided to provide a service migration function that performs data capability migration for a pub-sub client to change data capabilities used during a pub-sub data session of the pub-sub client.

[0057] like Figure 6 As shown, the pub-sub system 600 supports a service migration function in which a pub-sub data session of a pub-sub client is migrated from an initial data function to a new data function. The service migration function is performed for a pub-sub client 610 based on the use of a set of pub-sub functions 620 (including a CF 620-C and a pair of DFs 620-D1 and 620-D2). Note that the pub-sub client 610 and the set of pub-sub functions 620 can communicate based on a pub-sub protocol, which can support various pub-sub protocol message types, which can be used to support the service selection function of the pub-sub client 610.

[0058] exist Figure 6 In the example, pub-sub client 610 has established pub-sub control session 621-C with CF 620-C and has established pub-sub data session 621-D with DF 620-D1. Figure 2 Use of the presented service selection functionality establishes a pub-sub control session 621-C with CF 620-C and a pub-sub data session 621-D with DF 620-D1; however, it should be understood that either or both of the pub-sub control session 621-C with CF 620-C and the pub-sub data session 621-D with DF 620-D1 may be established in various other ways.

[0059] exist Figure 6 , after pub-sub data session 621-D has been established between pub-sub client 610 and DF 620-D1, pub-sub client 610 may begin using pub-sub data session 621-D to support transmission of pub-sub content between pub-sub client 610 and other pub-sub clients (omitted for clarity), such as by operating as a publisher and sending pub-sub content to one or more other pub-sub clients operating as subscribers, and / or operating as a subscriber and receiving pub-sub content from one or more other clients operating as publishers.

[0060] In the first step of the service migration function, CF 620-C selects DF 620-D2 to be used for pub-sub communication by pub-sub client 610. Note that since pub-sub client 610 is already associated with the DF (i.e., associated with DF 620-D1 based on pub-sub data session 621-D between pub-sub client 610 and DF 620-D1), the selection of the DF to be used for pub-sub communication by pub-sub client 610 can also be viewed as determining whether pub-sub client 610 should maintain the existing DF associated with pub-sub data session 621-D (which was associated with DF 620-D1 in the previous step). Figure 6 620-D1 in the example, or whether pub-sub client 610 should be migrated to a different DF (which is in Figure 6 In the example of FIG. 6 , DF 620-D2 is selected by CF 620-C for migration of pub-sub data session 621-D. This first step is Figure 6 It is represented as selection (SELECT) 601.

[0061] The selection of the DF 620 - D2 to be used by the pub-sub client 610 for pub-sub communication may be triggered in various ways. For example, CF 620-C may perform selection of DF 620-D2 to be used by pub-sub client 610 for pub-sub communication as follows: continuously (e.g., continuously re-evaluating whether pub-sub client 610 should continue to remain associated with DF 620-D1 or should migrate to a different DF 620-D2 for pub-sub data session 621-D), periodically (e.g., periodically re-evaluating whether pub-sub client 610 should continue to remain associated with DF 620-D1 or should migrate to a different DF 620-D2 for pub-sub data session 621-D), based on detection of conditions (e.g., conditions associated with pub-sub data session 621-D, conditions associated with DF 620-D1, conditions associated with pub-sub client 610, conditions associated with an underlying communication network supporting pub-sub data session 621-D, etc., and various combinations thereof), etc., and various combinations thereof.

[0062] The selection of the DF 620 - D2 to be used by the pub-sub client 610 for pub-sub communication may be performed in various ways. CF 620-C can select DF 620-D2 to be used by pub-sub client 610 based on various types of information, at least some of which may have changed since DF 620-D1 was initially selected for pub-sub client 610, such as one or more requirements of pub-sub data session 621-D (e.g., the type of content to be transmitted in the context of the pub-sub data session, parameters or features to be supported by the pub-sub data session (e.g., high throughput, low latency, support for deterministic communications, etc.), etc.), one or more parameters associated with pub-sub client 610 (e.g., an identifier of pub-sub client 610, a client type of pub-sub client 610, capabilities of pub-sub client 610, operating parameters of pub-sub client 610, a location of the pub-sub client (e.g., geographic location, network location, etc.), etc.), one or more parameters associated with DF 620-D1 (e.g., DF processing capabilities, underlying hardware issues, etc.), etc., and various combinations thereof. CF 620-C may select DF 620-D2 to be used by pub-sub client 610 based on one or more DF selection rules, which may utilize various types of information to select DF 620-D2 for pub-sub client 610. CF 620-C may select DF 620-D2 to be used by pub-sub client 610 based on one or more DF selection algorithms, which may utilize various types of information to select DF for pub-sub client 610. CF 620-C may select the best DF 620-D2 for use by pub-sub client 610, or select a suitable DF 620-D2 for use by pub-sub client 610. It should be understood that CF 620-C may select DF 620-D2 for pub-sub client 610 in various other ways.

[0063] exist Figure 66. In order to explain the manner in which migration of pub-sub data session 621-D is accomplished, it is assumed that CF 620-C determines that it is beneficial to migrate pub-sub data session 621-D from DF 620-D1 to DF 620-D2. For example, this is the case when CF 620-C determines that DF 620-D2 is more suitable than DF 620-D1 to support pub-sub data session 621-D of pub-sub client 610. In other words, in the first step of the service migration function as described above, CF 620-C selects DF 620-D2 as the new DF for pub-sub data session 621-D of pub-sub client 610.

[0064] In the second step of the service migration function, CF 620-C triggers the migration of pub-sub data session 621-D from DF 620-D1 that currently supports pub-sub data session 621-D to DF 620-D2 that has been selected for pub-sub data session 621-D (i.e., DF 620-D2). CF 620-C triggers the migration of pub-sub data session from DF 620-D1 to DF 620-D2 by sending an indication that DF 620-D2 will be used by pub-sub client 610 for pub-sub communication for delivery to pub-sub client 610. The indication that DF 620-D2 will be used by pub-sub client 210 for pub-sub communication can be sent by CF 620-C in a message of the pub-sub protocol (e.g., a redirect message or other suitable message type). The message may include information identifying DF 620-D2 selected by CF 620-C for pub-sub client 610. The message may include information that can be used by the pub-sub client 610 to establish a pub-sub data session 621-D between the pub-sub client 610 and the DF 620-D2, which may vary depending on one or more of the pub-sub protocol used for the pub-sub data session 621-D between the pub-sub client 610 and the DF 620-D2, the connection type of the underlying connection that will be used to support the pub-sub data session 621-D between the pub-sub client 610 and the DF 620-D2, and various combinations thereof. For example, the message may include an address of the DF 620-D2, a URL identifying the DF 620-D2, and the like, and various combinations thereof. It should be understood that the message for the selected DF 620-D2 received by the pub-sub client 610 from the CF 620-C may include various other types of information that identifies the DF 620-D2 selected by the CF 620-C for the pub-sub client 610. This second step is in Figure 6 620 -D1 to DF 620 -D2 to indicate two different ways in which CF 620 -C can trigger the migration of the pub-sub data session from DF 620 -D1 to DF 620 -D2.

[0065] CF 620-C may use pub-sub control session 621-C to trigger migration of pub-sub data session 621-D from the current DF 620 (i.e., DF 620-D1) that currently supports pub-sub data session 621-D to the DF 620 (i.e., DF 620-D2) that has been selected as the new DF 620 for pub-sub data session 621-D. In this case, CF 620-C sends an indication via pub-sub control session 621-C that DF 620-D2 is to be used by pub-sub client 610. This may be used in situations where pub-sub client 610 keeps pub-sub control session 621-C active after DF 620-D1 was initially selected for pub-sub client 610. This version of step 2 is described in Figure 6 602-C, where pub-sub control session 621-C is used to notify pub-sub client 610 of the decision to migrate pub-sub data session 621-D to new DF 620-D2.

[0066] CF 620-C may use pub-sub data session 621-D between pub-sub client 610 and DF 620-D1 to trigger migration of pub-sub data session 621-D from current DF 620 (i.e., DF 620-D1) currently supporting pub-sub client session 621-D to DF 620 (i.e., DF 620-D2) that has been selected as new DF 620 for pub-sub data session 621-D. In this case, CF 620-C sends an indication to DF 620-D1 that DF 620-D2 will be used by pub-sub client 610 to be forwarded to pub-sub client 610 via pub-sub data session 621-D. This can be used in the following situations: pub-sub client 610 terminates pub-sub control session 621-C after the initial selection of DF 620-D1 for pub-sub client 610, or pub-sub client 610 keeps pub-sub control session 621-C active after the initial selection of DF 620-D1 for pub-sub client 610. This version of the second step is in Figure 6602-D, where pub-sub data session 621-D is used to notify pub-sub client 610 of the decision to migrate pub-sub data session 621-D to new DF 620-D2.

[0067] In the third step of the service migration function, the pub-sub client 610 establishes a pub-sub data session 621-D with the new DF 620-D2. The pub-sub data session 621-D may be established via a connection (e.g., a TCP connection, an HTTP connection, or any other suitable connection) between the pub-sub client 610 and the DF 620-D2, wherein in the context of the third step, such a connection may be established based on information included in a message received by the pub-sub client 610 from the CF 620-C. The pub-sub data session 621-D with the DF 620-D2 may be established by sending a message of the pub-sub protocol (e.g., a CONNECT message or other suitable message of the pub-sub protocol) from the pub-sub client 610 to the DF 620-D2. The message sent by pub-sub client 610 to establish pub-sub data session 621-D between pub-sub client 610 and DF 620-D2 may include information used by DF 620-D2 to support pub-sub data session 621-D, information used by DF 620-D2 to use pub-sub data session 621-D for delivery of pub-sub content, etc., and various combinations thereof. Figure 3 It is represented as connection (CONNECT) 603.

[0068] In the fourth step of the service migration function, the pub-sub client 610 terminates the pub-sub data session 621-D with the original DF 620-D1. The pub-sub data session 621-D with the DF 620-D1 can be terminated by sending a message of the pub-sub protocol (e.g., a DISCONNECT message or other suitable message of the pub-sub protocol) from the pub-sub client 610 to the DF 620-D1. It should be understood that although the presentation is mainly focused on the situation in which the pub-sub client 610 terminates the pub-sub data session 621-D with the original DF 620-D1 after establishing the pub-sub data session 621-D with the new DF 620-D2, in some cases, the pub-sub client 610 may not terminate the pub-sub data session 621-D with the original DF 620-D1 after establishing the pub-sub data session 621-D, or at least may not terminate the pub-sub data session 621-D with the original DF 620-D1 until a condition is met (for example, a threshold time length has passed, it has been determined that all data sent through the pub-sub data session 621-D before the migration is completed has been successfully received, etc.), thereby ensuring that no data is lost during service migration.

[0069] It should be understood that although the service migration is primarily presented for a single pub-sub client 610 (in order to clearly describe various aspects of pub-sub service migration), service migration can be initiated for multiple pub-sub clients. For example, CF 620-C can initiate service migration for multiple pub-sub clients concurrently or simultaneously in various scenarios. For example, CF620-C can initiate service migration for multiple pub-sub clients associated with DF 620-D1 based on determining that DF 620-D1 is overloaded (e.g., unloading multiple pub-sub clients from DF 620-D1 to one or more other DFs until DF 620-D1 is no longer overloaded, where it can be understood that at least some of the pub-sub clients associated with DF 620-D1 can remain associated with DF 620-D1). For example, when multiple pub-sub clients are associated with the same content delivery, (e.g., a producer and multiple consumers under the same content topic), CF 620-C can initiate service migration for multiple pub-sub clients associated with DF 620-D1. It should be appreciated that service migration may be initiated for a group of multiple pub-sub clients in response to various other conditions, in various other scenarios, and so forth, as well as various combinations thereof.

[0070] Figure 7Describes the use of pub-sub clients to support Figure 6 It should be understood that although primarily presented as being performed sequentially, at least a portion of the functionality of method 700 may be performed simultaneously or in a manner similar to that described with respect to FIG. Figure 7 At block 701, method 700 begins. At block 710, a pub-sub data session between a pub-sub client and a first data function is maintained for the pub-sub client. At block 720, a message is received from a control function including an indication of a second data function to be used by the pub-sub client for the pub-sub data session. At block 730, a request is sent to the second data function to establish a pub-sub data session between the pub-sub client and the second data function. At block 799, method 700 ends. It should be understood that the description herein of Figure 1 and Figure 6 The various functions presented can be combined in Figure 7 In the context of method 700 .

[0071] Figure 8 Describes the use of control functions to support Figure 6 It should be understood that although primarily presented as being performed sequentially, at least a portion of the functionality of method 800 may be performed simultaneously or in a manner similar to that described with respect to FIG. Figure 8 At block 801, method 800 begins. At block 810, a second data function is selected for a pub-sub client having a pub-sub data session to a first data function to be used by the pub-sub client for the pub-sub data session. At block 820, a message is sent to the pub-sub client including an indication of the second data function to be used by the pub-sub client for the pub-sub data session. At block 899, method 800 ends. It should be understood that the description herein of the second data function is not limited to the description of the second data function. Figure 1 and Figure 6 The various functions presented can be combined in Figure 8 In the context of method 800 .

[0072] Fig. 9 Describes the use of data functions to support Figure 6 An example embodiment of a method for service selection migration is presented. It should be understood that although primarily presented as being performed sequentially, at least a portion of the functionality of method 900 may be performed simultaneously or in a manner similar to that described with respect to FIG. Fig. 9The method 900 is performed in the different order presented. At box 901, the method 900 starts. At box 910, a pub-sub data session between the pub-sub client and the first data function is maintained for the pub-sub client. At box 920, a message is received from the control function including an indication of a second data function to be used by the pub-sub client for the pub-sub data session. At box 930, a message is sent to the pub-sub client via the pub-sub data session including an indication of the second data function to be used by the pub-sub client for the pub-sub data session. At box 940, a request is received from the pub-sub client to terminate the pub-sub data session between the pub-sub client and the first data function. At box 999, the method 900 ends. It should be understood that the description herein of Figure 1 and Figure 6 The various functions presented can be combined in Fig. 9 In the context of method 900 .

[0073] Fig.10 An example embodiment of a pub-sub system is depicted that includes separate control and data functions configured to support pub-sub communications by pub-sub clients.

[0074] like Fig.10As shown, the pub-sub system 1000 includes a pub-sub client 1010 and a set of pub-sub functions, including a set of control functions (CFs) 1020-C1 to 1020-CN (collectively referred to as CFs 1020-C) and a set of data functions (DFs) 1020-D1 to 1020-DM (collectively referred to as DFs 1020-D). CFs 1020-C provide a logical pub-sub control plane, and DFs 1020-D provide a logical pub-sub data plane. CFs 1020-C may communicate with one of DFs 1020-D to facilitate service selection and service migration (illustratively, CF 1020-C1 is associated with DFs 1020-D1 and 1020-D2, CF 1020-2 is associated with DFs 1020-D2 and 1020-D3, CF 1020-CN is associated with CF 1020-DM, and so on). It should be understood that, although omitted for clarity, service selection and migration functions can be facilitated based on support for mutual communication of one CF in CF 1020-C and / or support for mutual communication of one DF in DF 1020-D. Pub-sub client 1010 can connect to any one of CF 1020-C for control-related communications and can be directed by CF 1020-C to any one of DF 1020-D to establish a pub-sub data session to support pub-sub communications.

[0075] exist Fig.10 In the example of , pub-sub client 1010 establishes pub-sub control session 1021-C with CF 1020-C2, then CF 1020-C2 initially selects DF 1020-D2 for pub-sub client 1010, and then based on the movement of pub-sub client 1010 (based on a determination by CF 1020-C2 that, after the movement of pub-sub client 1010, DF 1020-DM can better serve pub-sub client 1010 than DF 1020-D2), triggers the migration of pub-sub client 1010 from DF 1020-D2 to DF 1020-DM. Fig.10As shown, this results in the migration of pub-sub data session 1021-D from DF 1020-D2 to DF 1020-DM. Note that this migration may be facilitated by other communications omitted for clarity, such as communications between CF 1020-C2 associated with DF 1020-D2 and CF 1020-CN associated with DF 1020-DM (e.g., to facilitate establishment of pub-sub data session 1021-D with new DF 1020-DM), communications between DF 1020-D2 and DF 1020-DM (e.g., to facilitate data delivery in transit during migration), etc.

[0076] Fig.11 Depicted are example embodiments of a pub-sub architecture configured to provide pub-sub as a service (PSaaS).

[0077] like Fig.11 As shown, the pub-sub architecture 1100 includes a set of pub-sub (PS) clients 1110-1 to 1110-5 (collectively referred to as pub-sub clients 1110), a pair of pub-sub (PS) data functions 1120-D1 and 1120-D2 (collectively referred to as PS data functions 1120-D), and a pub-sub (PS) control function 1120-C, wherein communication between the various elements is supported based on three communication interface types (represented as PS1 interface, PS2 interface, and PS3 interface). The combination of the PS control function 1120-C and the PS data function 1120-D provides a pub-sub substrate 1130, which includes a logically centralized control function (i.e., PS control function 1120-C) and a distributed data function (i.e., PS data function 1120-D). The pub-sub substrate 1130 and the associated communication interface types support a pub-sub service model that enables PSaaS for the pub-sub clients 1110.

[0078] The PS1 interface supports CF-DF communication between the PS control function 1120-C and the PS data function 1120-D. The PS1 interface can be used by the PS control function 1120-C to notify the PS data function 1120-D about various aspects of the pub-sub data session that the PS client 1110 can establish with the PS data function 1120-D (e.g., notifying the PS data function 1120-D of incoming / outgoing PS clients 1110, parameters of the pub-sub data function established by the PS client 1110 (e.g., the PS client 1110's demand for a pub-sub data session, the content types supported in the context of the pub-sub data session, etc.), etc., and various combinations thereof). The PS1 interface between the PS control function 1120-C and the PS data function 1120-D can be a persistent connection or session between the PS control function 1120-C and the PS data function 1120-D.

[0079] The PS2 interface supports DF client communication between PS data function 1120-D and PS client 1110. The PS2 interface can be used by PS client 1110 to establish a pub-sub data session with PS data function 1120-D and use the pub-sub data session to support the transmission of pub-sub content (e.g., providing pub-sub content to PS data function 1120-D for distribution to other pub-sub clients 1110 as subscribers and / or receiving pub-sub content from PS data function 1120-D, where the pub-sub content comes from other pub-sub clients as publishers). The PS2 interface can be used by PS client 1110 to communicate with PS control function 1120-C via PS data function 1120 (e.g., where after PS client 1110 establishes a pub-sub data session with PS data function 1120-D, PS client 1110 disconnects from PS control function 1120-C). The PS2 interface between pub-sub client 1110 and PS data function 1120 -D may be a persistent session between pub-sub client 1110 and PS data function 1120 -D.

[0080] The PS3 interface supports CF client communications between the PS control function 1120-C and the PS client 1110. The PS3 interface can be used by the PS client 1110 to establish a pub-sub control session with the PS control function 1120-C and use the pub-sub control session to support the transmission of pub-sub control messages. The PS3 interface between the pub-sub client 1110 and the PS control function 1120-C can be a persistent session between the pub-sub client 1110 and the PS control function 1120-C, or after the PS client 1110 establishes a pub-sub data session with the PS data function 1120-D, the PS3 interface between the PS client and the PS control function 1120-C can be disconnected.

[0081] It should be understood that although the pub-sub architecture 1100 is depicted and described as including a specific number and arrangement of elements based on specific types of interfaces (illustratively, a single PS control function 1120-C, two PS data functions 1120-D1 and 1120-D2, and five PS clients 1110 based on three interface types), various other numbers and arrangements of elements may be supported (e.g., multiple PS control functions, more than two (and a large number) PS data functions, fewer or more (and a large number) PS clients, etc., and various combinations thereof), other interface types may be supported (e.g., a fourth type of interface may be supported for direct communication between PS control functions 1120-C), etc., and various combinations thereof.

[0082] As described herein, various example embodiments for supporting a pub-sub system may be configured to provide support for large scale (e.g., a large number of producers producing a large amount of content for distribution to subscribers), massive dynamics (e.g., the number of pub-sub clients in a pub-sub system, the locations where pub-sub clients join the pub-sub system, the length of time a pub-sub client remains active within the pub-sub system, etc., and various combinations thereof), and extreme diversity (e.g., the type of content delivered, the type of protocol used for content delivery, the business characteristics of the business transmission content, the fan-out characteristics of each group of pub-sub clients within the pub-sub system (e.g., unicast versus multicast), etc., and various combinations thereof). It should be understood that such features enabled by the various example embodiments of the pub-sub system presented herein may be useful in the context of various types of environments in which pub-sub capabilities may be applied to support communications between endpoints (e.g., 6G networks, industrial Internet contexts, large-scale sensing, etc.), which will be further discussed below. It should be appreciated that such features enabled by the various example embodiments of the pub-sub systems presented herein may be further understood by considering various aspects of applying such example embodiments in the context of 6G networks, as further discussed below.

[0083] In 6G wireless networking (the next evolution of wireless networks), it is expected that various entities in the network will generate and consume a large amount of network and application data. The 5G system architecture is defined as a service-based architecture, i.e., a system architecture in which system functions are implemented using a set of network functions (NFs), wherein NFs communicate to access services that support end-user communications, and the communication between NFs is mainly based on peer-to-peer communication. On the other hand, in 6G wireless networking, several challenges are expected. For example, it is expected that subscription-based message propagation will be one-to-many, many-to-one, or many-to-many in both the core and RAN parts of the 6G network. In addition, it is expected that additional function types (in addition to NFs) (e.g., new function types, such as application functions (AFs), etc.) will need to be supported. For example, such communication can be used for analytical data distribution, machine learning (ML) model distribution, base station IQ model sharing, conditional switching, multi-party XR applications, etc. In addition, it is expected that different categories of pub-sub groups will coexist with their own data generation and consumption patterns and delivery requirements.

[0084] Various example embodiments for supporting pub-sub systems can be configured to support various other capabilities that can enable various use cases while providing various benefits. For example, various example embodiments can be configured to support the movement of notification server functions from NF to DF in the network to address many peer sessions (e.g., sub-notify) that are typically supported at the NF notification server, thereby reducing the session load at the NF notification server. For example, various example embodiments can be configured to support DF migration to different locations to support the increase in client concentration in these areas, thereby reducing client latency and providing better network resource usage. For example, various example embodiments can be configured to support dynamic expansion of DF capacity (e.g., splitting a single DF into multiple DFs and / or instantiating new DFs) and contraction of DF capacity (e.g., combining multiple DFs into a single DF, and / or terminating existing DFs) to enable support for dynamic client concentration changes in different geographic areas, thereby reducing DF workload, reducing client latency, and providing better network resource usage. For example, various example embodiments can be configured to enable business engineering paths between DFs and clients, thereby providing better quality of service and better network resource usage. For example, various example embodiments may be configured to support different pub-sub service policies for each content type, since not all content types require the same treatment, thereby enabling content-specific QoS, differentiated network services, etc. For example, various example embodiments may be configured to support switching between unicast services and multicast services based on changes in the number of peer (e.g., sub-notify) sessions at the NF, thereby reducing multiple copies and session load on the DF. It should be understood that, as further discussed below, with respect to Figure 12-14 At least some of these capabilities are presented. It should be appreciated that various example embodiments for supporting a pub-sub system may be configured to support various other capabilities that may enable various other use cases while providing various other benefits.

[0085] Various example embodiments may be configured to support diversity in the context of 6G architecture evolution and in various other contexts where pub-sub may be employed. For example, diversity may be diversity in protocol usage (e.g., switching between non-pub-sub and pub-sub protocols, switching between unicast and multicast protocols, etc.), diversity in content type (e.g., in terms of delivery requirements, etc.), and various combinations thereof. It should be appreciated that by reference to the further discussion below, Fig.12 and Fig.13 , support for diversity can be further understood in the context of 6G architecture evolution and in various other contexts where pub-sub can be adopted.

[0086] Fig.12Describes an example embodiment of using a pub-sub system to support diversity in protocol usage. Fig.12 As shown, as the number of subscribers increases, the pub-sub system can dynamically (1) transition from using peer-to-peer communication between clients to using pub-sub communication based on using DF, where clients establish pub-sub sessions with DF based on unicast to support communication between clients, and (2) transition from using DF in which clients establish pub-sub sessions with DF based on unicast to support communication between clients to using DF in which clients establish pub-sub sessions with DF based on multicast to support communication between clients.

[0087] For example, the load at the producer NF can be monitored, and the pub-sub system can switch between using sub-notify and pub-sub based on the load at the NF producer (e.g., when the load at the producer NF rises above a threshold, switch to a more scalable architecture such as pub-sub, and when the load at the producer NF drops below a threshold, switch back to sub-notify), and the pub-sub system can also switch between using unicast-based pub-sub and using multicast-based pub-sub based on the number of active subscribers within the system.

[0088] For example, when the load on the notification server built into the producer NF exceeds a certain predetermined threshold, the PS1 interface can be used to make the CF aware of this situation, and then the CF can decide to move the notification server load from the NF to the network using a DF of a suitable data center (e.g., an existing DF or instantiating a new DF), and therefore send a REDIRECT message to all clients (including publishers at the producer NF) to move from the notification server at the producer NF to the newly selected target DF within the network. This process helps to reduce the load at the producer NF. In addition, after all sessions are brought to the target DF belonging to the pub-sub base, multiple unicast sessions can also be replaced with a single multicast session, thereby reducing the multi-copy cost at the DF and the link load in the network.

[0089] Fig.13 Described is an example embodiment of using a pub-sub system to support diversity in content and content session types. Fig.13 As shown, different arrangements of clients and DFs may be created and used depending on various factors, such as supported content, location of the client, etc., and various combinations thereof. Fig.13 Four types are shown in FIG. 1 ). For example, Fig.13 As shown on the left side of , peer-to-peer sessions between clients can be used. For example, Fig.13As shown in the middle left of , when the number of participating producer and consumer clients is relatively equal, DF can be located at a relatively equidistant position between the producer client and the consumer client. Fig.13 As shown in the middle right of , in the case where a large number of clients are located at one location and a relatively small number of clients are located at another location, the DF can be located relatively close to the larger group of clients. Fig.13 As shown on the right side of , in the case where a large number of clients are located in multiple different locations, multiple DFs can be located near the client group, and the DFs can be interconnected using various communication technologies.

[0090] Various example embodiments may be configured to support dynamics in the context of 6G architecture evolution and in various other contexts where pub-sub may be employed. For example, the dynamics may be in terms of the number of pub-sub clients to be supported, the locations of the pub-sub clients to be supported (especially when the pub-sub clients are mobile), etc., and various combinations thereof. For example, in a 6G network, (multiple) NFs / (multiple) AFs will reside in the cloud and may be started / shutdown on demand at any location within the network (because there will be many data centers within the network), and (multiple) NFs / (multiple) AFs may dynamically join pub-sub-based content distribution sessions and / or move around the network while connected to a pub-sub session. It should be understood that by reference to the further discussion below, Fig.14 , support for dynamicity can be further understood in the context of 6G architecture evolution and in various other contexts where pub-sub can be adopted.

[0091] Fig.14 Describes an example embodiment of using a pub-sub system to support the dynamic nature of client behavior. Fig.14 As shown in the upper left corner of , DFs are initially placed towards the west because there are more clients there than in the east. DFs can be interconnected based on traffic engineering paths for better QoS for pub-sub clients and better network resource usage. For example, Fig.14 As shown in the upper middle and upper right of , as more and more clients join from the east, DF migrates from the west to the east to reduce client latency and provide better network resource usage. Fig.14 As shown in the lower right and lower middle corners of , as more and more clients join from the north, the initial DF is split into multiple DFs close to the client group, thereby reducing the DF load, reducing client latency, and providing better network resource usage. Fig.14As shown in the lower left of , DFs can be interconnected based on traffic engineering paths for better QoS and better network resource usage for pub-sub clients. In this way, various example embodiments presented herein (including example embodiments supporting PSaaS) can be configured to support dynamic migration and splitting of DF loads, including bringing DFs closer to pub-sub clients to support low-latency connections as conditions change (e.g., as pub-sub clients join / leave, as pub-sub clients migrate, etc.).

[0092] In this manner, various example embodiments may be configured to enable the pub-sub system to support large scale (e.g., handling large numbers of pub-sub clients), massive dynamics (e.g., individual pub-sub clients may join and remain in the pub-sub system for long periods of time (potentially their lifetimes) and / or widely variable durations, initiate pub-sub sessions from anywhere in the network and move around the network, have highly dynamic numbers, etc.), and extreme diversity (e.g., the content being propagated may have widely varying traffic and fan-out characteristics between different groups of clients, where the characteristics may also vary over the lifetime of a session, and clients may also have the option of switching content delivery protocols (e.g., switching between sub-notify and pub-sub, or between multiple unicast and multicast).

[0093] Fig.15 Describes the use of the term in the context of a specific type of communication network. Fig.11 An example embodiment of a pub-sub architecture. That is, Fig.15 Describes the use Fig.11The pub-sub architecture 1100 is provided to support a data collection coordination function (DCCF) defined in version 17.4.0 of the 3rd Generation Partnership Project (3GPP) Technical Specification (TS) 23.288 Release 17. In the 3GPP standard, the definition of DCCF is as follows: "Data collection coordination and delivery coordination coordinates the collection and distribution of data requested by NF consumers. It prevents the data source from having to handle multiple subscriptions to the same data and sending multiple notifications containing the same information due to uncoordinated requests from data consumers. According to the delivery options configured on the DCCF, the data is provided to the consumer or notification endpoint. The delivery options are: (1) Delivery via DCCF: the consumer or notification endpoint receives data from the DCCF; and (2) Delivery via the messaging framework: the consumer and notification endpoint receive data from the messaging framework via the services provided by the MFAF." In at least some example embodiments, the mapping of 3GGP functions to the pub-sub architecture can be performed such that the PS control function 1120-C is mapped to the DCCF 1501, the set of PS data functions 1120-D is mapped to the MFAF 1502, and the two PS clients in the PS client 1110 are mapped to the data source NF 1503-P and the consumer NF 1503-C. It should be understood that Fig.11 The PSaaS architecture may be mapped to the 3GGP functionality of 3GPP TS 23.288 Release 17, Version 17.4.0 in various other ways. It should be understood that Fig.11 The PSaaS architecture may be mapped to various communication networks in various ways to provide improved pub-sub based communications to support the implementation of such communication networks.

[0094] Various example embodiments for supporting pub-sub systems can provide various advantages or potential advantages. For example, various example embodiments for supporting pub-sub systems can support the separation of control plane functions and data plane functions of a traditional pub-sub proxy into control functions and data functions, which pub-sub clients can use to establish separate sessions, thereby enabling pub-sub clients to use pub-sub control sessions with control functions for more general control plane operations, and use pub-sub data sessions with data functions specifically selected for pub-sub clients to improve or optimize pub-sub communications of pub-sub clients (e.g., based on the type of content to be transmitted, the protocol to be used, etc., and various combinations thereof). For example, various example embodiments for supporting pub-sub systems can separate the control and data plane operations of a traditional pub-sub proxy in the context of a cloud-integrated networking architecture, where a logically centralized but physically distributed pub-sub control plane can be implemented, and the data plane operations of the traditional pub-sub proxy can be dynamically turned on / off on demand in the cloud. For example, various example embodiments for supporting a pub-sub system may separate the control and data plane operations of a traditional pub-sub proxy while extending the client interface of a pub-sub client so that an appropriate data function may be selected for a pub-sub client based on the requirements of the pub-sub client upon initial connection, and an appropriate data function may be reselected for a pub-sub client (even in an active pub-sub session) to ensure that the pub-sub operation of the pub-sub client is continually improved or even optimized. For example, various example embodiments for supporting a pub-sub system may enable a pub-sub client to selectively connect to different data functions based on its pub-sub client requirements, thereby enabling different data functions to be optimized in various ways (e.g., supporting specializations in handling data plane functions), and thereby eliminating the need for each data function to support all possible data plane requirements (an extremely expensive approach). For example, various example embodiments for supporting a pub-sub system may support dynamic selection and reselection of data functions for a pub-sub session of a pub-sub client.For example, various example embodiments for supporting pub-sub systems can support scale, dynamics, and diversity in pub-sub systems without using a federation of brokers (e.g., where several traditional pub-sub brokers can be interconnected over a wide area network, and pub-sub clients can join at any traditional pub-sub broker and obtain the same service as if the traditional pub-sub brokers were logically centralized), which may be limited in communication capabilities (e.g., bandwidth efficiency and end-to-end latency) and support for dynamics and diversity, although it will be appreciated that in at least some example embodiments, various aspects of a federation of brokers may also be applied. For example, various example embodiments for supporting pub-sub systems can support scale, dynamics, and diversity in pub-sub systems without using software defined networking (SDN) based pub-sub (e.g., using OpenFlow to support multicast delivery required by pub-sub applications), which may be limited by data plane scalability and control plane overhead and support for dynamics and diversity, although it will be appreciated that in at least some example embodiments, various aspects of SDN-aware pub-sub may also be applied. For example, various example embodiments for supporting pub-sub systems can support scale, dynamics, and diversity in pub-sub systems without requiring a new pub-sub data plane (e.g., based on in-network packet filtering), which may require disruptive changes to the network infrastructure and may be limited in supporting dynamics and diversity, but it should be understood that various aspects of SDN-aware pub-sub can also be applied in at least some example embodiments. For example, various example embodiments for supporting pub-sub systems can support scale, dynamics, and diversity in pub-sub systems without using traditional pub-sub proxy-based network-assisted pub-sub (e.g., where traditional pub-sub proxies are placed at various edge locations of the network where publishers and subscribers connect and pub-sub data is propagated between edge locations via network-level multicast rather than point-to-point connections), which may be limited in supporting dynamics and diversity, but it should be understood that various aspects of network-assisted pub-sub can also be applied in at least some example embodiments. It should be understood that various example embodiments for supporting pub-sub systems can provide various other advantages or potential advantages.

[0095] Fig.16 An example embodiment of a computer suitable for performing the various functions presented herein is depicted.

[0096] The computer 1600 includes a processor 1602 (e.g., a central processing unit (CPU), a processor, a processor having a set of processor cores, a processor core of a processor, etc.) and a memory 1604 (e.g., a random access memory (RAM), a read-only memory (ROM), etc.). In at least some example embodiments, the computer 1600 may include at least one processor and at least one memory storing instructions that, when executed by the at least one processor, cause the computer to perform various functions presented herein.

[0097] The computer 1600 may also include a cooperating element 1605. The cooperating element 1605 may be a hardware device. The cooperating element 1605 may be a process that may be loaded into the memory 1604 and executed by the processor 1602 to implement the various functions presented herein (in which case, for example, the cooperating element 1605 (including associated data structures) may be stored on a non-transitory computer-readable medium, such as a storage device or other suitable type of storage element (e.g., a magnetic drive, an optical drive, etc.)).

[0098] The computer 1600 may also include one or more input / output devices 1606. The input / output devices 1606 may include one or more of the following: user input devices (e.g., keyboard, keypad, mouse, microphone, camera, etc.), user output devices (e.g., display, speaker, etc.), one or more network communication devices or elements (e.g., input ports, output ports, receivers, transmitters, transceivers, etc.), one or more storage devices (e.g., tape drives, floppy disk drives, hard disk drives, optical disk drives, etc.), etc., and various combinations thereof.

[0099] It should be understood that computer 1600 may represent a general architecture and functionality suitable for implementing the functional elements described herein, portions of the functional elements described herein, etc., and various combinations thereof. For example, computer 1600 may provide a general architecture and functionality suitable for implementing one or more elements presented herein. For example, computer 1600 may provide a general architecture and functionality suitable for implementing at least one of a pub-sub client or a portion thereof, a CF or a portion thereof, a DF or a portion thereof, a combination of a CF and a DF, etc., and various combinations thereof.

[0100] It should be understood that at least some of the functionality presented herein may be implemented in software (e.g., by implementing the software on one or more processors for execution on a general-purpose computer (e.g., executed by one or more processors) to provide a special-purpose computer, etc.), and / or may be implemented in hardware (e.g., using a general-purpose computer, one or more application-specific integrated circuits, and / or any other hardware equivalents).

[0101] It should be understood that at least some of the functions presented herein can be implemented in hardware, for example, as a circuit system that cooperates with a processor to perform various functions. Some of the functions / elements described herein can be implemented as a computer program product, in which computer instructions adapt the operation of the computer when processed by the computer, thereby calling or otherwise providing the methods and / or techniques described herein. Instructions for calling various methods can be stored in fixed or removable media (e.g., non-transitory computer-readable media), sent via a data stream in a broadcast or other signal-bearing medium, and / or stored in a memory within a computing device that operates according to the instructions.

[0102] It should be understood that the term "non-transitory" as used herein is a limitation on the medium itself (ie, tangible, rather than a signal), rather than a limitation on the persistence of data storage (eg, RAM versus ROM).

[0103] It should be understood that, as used herein, “at least one of ” and “at least one of: ” and similar expressions (wherein a list of two or more elements is connected by “and” or “or”) refer to at least any one of these elements, or at least any two or more of these elements, or at least all of these elements.

[0104] It should be understood that, as used herein, the term "or" refers to a non-exclusive "or" unless otherwise indicated (eg, with use of "otherwise" or "or in the alternative").

[0105] It will be appreciated that although various embodiments incorporating the teachings presented herein have been shown and described in detail, those skilled in the art can readily devise numerous other varied embodiments that still incorporate these teachings.

Claims

1. A device for supporting publish-subscribe, comprising: at least one processor; as well as at least one memory comprising instructions that, when executed by the at least one processor, cause the apparatus to at least: Sending a request to the control function to establish a publish-subscribe control session between the publish-subscribe client and the control function; receiving, based on the publish-subscribe control session, a response identifying a data function to be used by the publish-subscribe client for the publish-subscribe data session; as well as A request is sent to the data function to establish the publish-subscribe data session between the publish-subscribe client and the data function. 2 . The apparatus according to claim 1 , wherein the request to establish the publish-subscribe control session is sent through a connection between the publish-subscribe client and the control function and using a message of a publish-subscribe protocol.

3. An apparatus according to claim 1 or 2, wherein the request to establish the publish-subscribe control session includes parameters specified for the publish-subscribe data session, and wherein the data function is selected from a set of available data functions based on the parameters specified for the publish-subscribe data session.

4. An apparatus according to claim 3, wherein the parameters specified for the publish-subscribe data session include at least one of the following: a content type of content to be transmitted on the publish-subscribe data session, a client type of the publish-subscribe client, or a location of the publish-subscribe client. 5 . The apparatus according to claim 1 , wherein the request to establish the publish-subscribe data session is sent through a connection between the publish-subscribe client and the data function and using a message of a publish-subscribe protocol.

6. The apparatus according to claim 1 or 2, wherein the instructions, when executed by the at least one processor, cause the apparatus to at least: Based on the publish-subscribe data session, a request for publishing content or a request for subscribing to content is sent to the data function.

7. The apparatus according to claim 1 or 2, wherein the instructions, when executed by the at least one processor, cause the apparatus to at least: receiving a message identifying a second data function to be used by the publish-subscribe client for the publish-subscribe data session; and A request is sent to the second data function to establish the publish-subscribe data session between the publish-subscribe client and the second data function.

8. The apparatus of claim 7, wherein the message identifying the second data function is received via the publish-subscribe control session.

9. The apparatus of claim 7, wherein the message identifying the second data function is received via the publish-subscribe data session.

10. A method for supporting publish-subscribe, comprising: Sending a request to the control function to establish a publish-subscribe control session between the publish-subscribe client and the control function; receiving, based on the publish-subscribe control session, a response identifying a data function to be used by the publish-subscribe client for the publish-subscribe data session; as well as A request is sent to the data function to establish the publish-subscribe data session between the publish-subscribe client and the data function.

11. The method according to claim 10, further comprising: receiving a message identifying a second data function to be used by the publish-subscribe client for the publish-subscribe data session; as well as A request is sent to the second data function to establish the publish-subscribe data session between the publish-subscribe client and the second data function.

12. The method of claim 11, wherein the message identifying the second data function is received via the publish-subscribe control session.

13. The method of claim 11, wherein the message identifying the second data function is received via the publish-subscribe data session.

14. A non-transitory computer readable medium storing computer program instructions which, when executed by at least one device, cause the device to perform the method according to claim 10.