WO2021176458A1 - First node, proxy-agent, and methods performed thereby for handling communications between a publisher node and a subscriber node - Google Patents

First node, proxy-agent, and methods performed thereby for handling communications between a publisher node and a subscriber node Download PDF

Info

Publication number
WO2021176458A1
WO2021176458A1 PCT/IN2020/050207 IN2020050207W WO2021176458A1 WO 2021176458 A1 WO2021176458 A1 WO 2021176458A1 IN 2020050207 W IN2020050207 W IN 2020050207W WO 2021176458 A1 WO2021176458 A1 WO 2021176458A1
Authority
WO
WIPO (PCT)
Prior art keywords
proxy
agent
node
publisher
subscriber
Prior art date
Application number
PCT/IN2020/050207
Other languages
French (fr)
Inventor
Ganapathy Raman MADANAGOPAL
Sambit Nayak
Chakri PADALA
Anshu SHUKLA
Original Assignee
Telefonaktiebolaget Lm Ericsson (Publ)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Telefonaktiebolaget Lm Ericsson (Publ) filed Critical Telefonaktiebolaget Lm Ericsson (Publ)
Priority to PCT/IN2020/050207 priority Critical patent/WO2021176458A1/en
Publication of WO2021176458A1 publication Critical patent/WO2021176458A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/2876Pairs of inter-processing entities at each side of the network, e.g. split proxies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/562Brokering proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services

Definitions

  • the present disclosure relates generally to a first node, and methods performed thereby, for handling communications between a publisher node and a subscriber node.
  • the present disclosure also relates generally to a proxy-agent, and methods performed thereby, for handling communications between a publisher node and a subscriber node.
  • the present disclosure further relates generally to a programmable switch comprising the proxy-agent.
  • Computer systems in a communications network may comprise one or more nodes, which may also be referred to simply as nodes.
  • a node may comprise one or more processors which, together with computer program code may perform different functions and actions, a memory, a receiving port and a sending port.
  • a node may be, for example, a server. Nodes may perform their functions entirely on the cloud.
  • a publisher-subscriber system may be understood as a communication system whereby a node willing to send messages, also known as a publisher, to one or more specific receivers, also known as subscribers, instead of sending the messages directly to the subscribers, may categorize the messages into classes without knowing which subscribers there may be, if any. Similarly, subscribers may receive one or more classes of messages they may declare an interest in receiving, and only receive messages in those classes of interest, without knowing who may be the publishers, if any.
  • Typical publisher-subscriber messaging systems may be brokered. That is, an intermediary node or a set of nodes, the broker, may mediate between publisher nodes and subscriber nodes, and manage the delivery of the messages to the subscribers.
  • a message broker may be understood to offer one or more features, such as message persistence and guaranteed message delivery to subscribers.
  • Brokerage services may be, e.g., public cloud providers such as AWS SQS, SNS or Google Pub/Sub, as well as others such as Apache Kafka, Apache Pulsar, etc.
  • Broker-less messaging solutions may be understood to offer the model of peer-to-peer, or direct publisher- to-subscriber, messaging without involving an intermediary broker.
  • the brokered approach adds extra latency owing to the broker overhead, which may be understood to include extra network hops through the broker, which may not necessarily be in the optimal publisher-subscriber network path.
  • the broker-less approach puts extra requirements on the publisher and subscriber in order to provide similar guarantees.
  • Some of such extra requirements may be: message persistence on a publisher until the subscribers receive the messages, tighter coupling between publishers and subscribers, and direct network connections between them leading to resource load, buffering of messages at the subscriber end if the subscriber is slower than the publisher, and retry overhead on the publisher or the subscriber for guaranteed message delivery.
  • the object is achieved by a method performed by a first node.
  • the method is for handling communications between a publisher node and a subscriber node over a communications network.
  • the first node instantiates a) a first proxy-agent of the publisher node in-line between the publisher node and the subscriber node, and b) a second proxy-agent of the subscriber node in-line between the publisher node and the subscriber node.
  • the first node also instructs i) the first proxy-agent to connect with and subscribe to the publisher node, ii) the subscriber node to connect with and subscribe to the second proxy-agent, and iii) at least one of the first proxy-agent and the second proxy- agent to establish a connection with each other.
  • the first node enables communication exchanges between the publisher node and the subscriber node via the first proxy-agent and the second proxy-agent.
  • the object is achieved by a method performed by a proxy-agent.
  • the method is for handling communications between the publisher node and the subscriber node.
  • the proxy-agent, the publisher node and the subscriber node operate in the communications network.
  • the proxy-agent receives a first instruction from the first node operating in the communications network to instantiate as one of: a) the first proxy-agent of the publisher node in-line between the publisher node and the subscriber node, b) the second proxy-agent of the subscriber node in-line between the publisher node and the subscriber node, and c) a third proxy-agent in-line between the publisher node and the subscriber node.
  • the proxy-agent receives a second instruction from the first node to one of: i) as first proxy-agent, to connect with and subscribe to the publisher node, ii) as first proxy-agent or second proxy-agent, to establish a connection with each other, thereby enabling communication exchanges between the publisher node and the subscriber node via the first proxy-agent and the second proxy-agent, and c) as third proxy-agent, to connect with one of: the first proxy-agent, the second proxy-agent and a fourth proxy-agent in line between the publisher node and the subscriber node.
  • the object is achieved by the first node, for handling communications between the publisher node and the subscriber node over the communications network.
  • the first node is configured to instantiate: a) the first proxy- agent of the publisher node in-line between the publisher node and the subscriber node, and b) the second proxy-agent of the subscriber node in-line between the publisher node and the subscriber node.
  • the first node then instructs: i) the first proxy-agent to connect with and subscribe to the publisher node, ii) the subscriber node to connect with and subscribe to the second proxy-agent, and iii) at least one of the first proxy-agent and the second proxy-agent to establish a connection with each other.
  • the first node is configured to enable communication exchanges between the publisher node and the subscriber node via the first proxy-agent and the second proxy-agent.
  • the object is achieved by the proxy- agent.
  • the proxy-agent is for handling communications between the publisher node and the subscriber node.
  • the proxy-agent, the publisher node and the subscriber node are configured to operate in the communications network.
  • the proxy-agent is further configured to receive the first instruction from the first node configured to operate in the communications network to instantiate as one of: a) the first proxy-agent of the publisher node in-line between the publisher node and the subscriber node, b) the second proxy-agent of the subscriber node in line between the publisher node and the subscriber node, and the third proxy-agent in-line between the publisher node and the subscriber node.
  • the proxy-agent is further configured to receive the second instruction from the first node to one of: i) as first proxy-agent, to connect with and subscribe to the publisher node, ii) as first proxy-agent or second proxy-agent, to establish a connection with each other, thereby being configured to enable communication exchanges between the publisher node and the subscriber node via the first proxy-agent and the second proxy-agent, and iii) as the third proxy-agent, to connect with one of: the first proxy- agent, the second proxy-agent and the fourth proxy-agent in-line between the publisher node and the subscriber node.
  • the proxy-agent is also configured to establish a connection with one of: i) as first proxy-agent with the second proxy-agent and/or with the publisher node, ii) as second proxy-agent, with the first proxy-agent, and iii) as the third proxy-agent, with one of: the first proxy-agent, the second proxy-agent and the fourth proxy-agent in-line between the publisher node and the subscriber node.
  • the proxy-agent is further configured to exchange communications with at least one of: i) as first proxy-agent, with the second proxy-agent and the publisher node, ii) as second proxy-agent, with the first proxy-agent and the subscriber node, and iii) as the third proxy-agent, with one of: the first proxy-agent, the second proxy- agent and the fourth proxy-agent.
  • the object is achieved by a programmable switch comprising the proxy-agent.
  • the first node instantiating the first proxy-agent, and the second proxy-agent and instructing the first proxy-agent to connect with and subscribe to the publisher node, the subscriber node to connect with and subscribe to the second proxy-agent, and at least one of the first proxy-agent and the second proxy-agent to connect with each other, the first node enables communication exchanges between the publisher node and the subscriber node via the first proxy-agent and the second proxy-agent.
  • the proxy-agents may now handle the messages sent by publisher, and the number of acknowledgements sent back to the publisher. Hence, the number of messages sent by publisher, and the number of acknowledgements sent back to the publisher are enabled to be reduced.
  • the overhead on the publisher node is further enabled to be reduced, since in accordance with this, the risk of publisher failure due to buffer depletion is also reduced.
  • the publisher is now enabled to rely on the cache of the first proxy node, and therefore, the impact of slow subscribers on the publisher is also enabled to be reduced.
  • the first node is therefore enabled to orchestrate and dynamically place proxy-agents at appropriate locations with respect to changes in the communications network and the subscribers count and location.
  • proxy-agents also enables to reduce the serialization load, that is, the sending to different subscribers of the topic, in a sequence, at the publisher.
  • This load may be understood to get distributed between proxy(leaf) nodes.
  • a further advantage of embodiments herein is that the retransmission of messages to slow subscribers on their recovery is generally faster. That is because, for slow readers, messages may be enabled to be cached on proxy-agent(s) closest to the subscribers, as opposed to caching in the publisher or a designated broker.
  • Figure 1 is a schematic diagram illustrating a non-limiting example of a communications network, according to embodiments herein.
  • Figure 2 is a flowchart depicting a non-limiting example of a method in a first node, according to embodiments herein.
  • Figure 3 is a flowchart depicting a non-limiting example of a method in a proxy-agent, according to embodiments herein.
  • Figure 4 is a schematic diagram illustrating a non-limiting example of methods in a communications network according to embodiments herein.
  • Figure 5 is a schematic diagram illustrating a non-limiting example of methods in a communications network according to embodiments herein.
  • Figure 6 is a schematic diagram illustrating , in panels a) and b), a non-limiting example of methods in a communications network according to embodiments herein.
  • Figure 7 is a schematic diagram illustrating a non-limiting example of methods in a communications network according to embodiments herein.
  • Figure 8 is a schematic diagram illustrating, in panels a) and b), a non-limiting example of methods in a communications network according to embodiments herein.
  • Figure 9 is a schematic diagram illustrating a non-limiting example of methods in a communications network according to embodiments herein.
  • Figure 10 is a schematic diagram of some aspects of methods in a communications network, according to embodiments herein.
  • Figure 11 is a schematic block diagram illustrating two non-limiting examples, a) and b), of a first node, according to embodiments herein.
  • Figure 12 is a schematic block diagram illustrating two non-limiting examples, a) and b), of a proxy-agent, according to embodiments herein.
  • Figure 13 is a schematic block diagram illustrating two non-limiting examples, a) and b), of a programmable switch, according to embodiments herein.
  • Embodiments herein may be understood to be drawn to a system and methods for designing a Publisher-Subscriber (Pub-Sub) system.
  • the system and methods of embodiments herein may use network switches.
  • Embodiments herein may use the “programmability” capabilities of datacenter switches with sufficient compute and memory, popularly known as in-network computing.
  • Switches may be understood as devices that may connect computers within a local area network.
  • programmable switches have become available.
  • a programmable switch may be understood as a switch that may allow custom logic to be programmed on to the chip on the switch, to enable capabilities such as data plane processing, e.g., custom forwarding, packet processing etc. Examples of such programmable switches are Barefoot Tofino2, Intel Flexpipe, Cisco Doppler, and Cavium Xpliant.
  • the potential of in-network computing is gaining substantial traction, backed by switch vendors as well as open source consortiums such as P4. It is expected that these switches will get more powerful thereby accelerating the possibilities of offloading computation on to them.
  • embodiments herein provide methods to instantiate and utilize proxy-agents in the network paths between publishers and subscribers to provide transparent broker-like functionality for their messaging traffic.
  • the methods described herein may place such proxying logic as required on programmable switches, in in-network computing, in a datacenter network in the same path between publisher and subscriber when compared to a brokered system, while being transparent to publishers and subscribers in terms of messaging Application Program Interface (API).
  • API Application Program Interface
  • Figure 1 depicts a non-limiting example of a communications network 100, in which embodiments herein may be implemented.
  • the communications network 100 may be a computer network.
  • the communications network 100 may be implemented in a telecommunications network, sometimes also referred to as a cellular radio system, cellular network or wireless communications system.
  • the telecommunications network may comprise network nodes which may serve receiving nodes, such as wireless devices, with serving beams.
  • the telecommunications network may for example be a network such as 5G system, or Next Gen network or an Internet service provider (ISP)-oriented network.
  • 5G system or Next Gen network
  • ISP Internet service provider
  • the telecommunications network may also support other technologies, such as a Long-Term Evolution (LTE) network, e.g. LTE Frequency Division Duplex (FDD), LTE Time Division Duplex (TDD), LTE Half-Duplex Frequency Division Duplex (HD-FDD), LTE operating in an unlicensed band, Wideband Code Division Multiple Access (WCDMA), Universal Terrestrial Radio Access (UTRA) TDD, GSM/Enhanced Data Rate for GSM Evolution (EDGE) Radio Access Network (GERAN) network, Ultra-Mobile Broadband (UMB), EDGE network, network comprising of any combination of Radio Access Technologies (RATs) such as e.g.
  • LTE Frequency Division Duplex FDD
  • TDD Time Division Duplex
  • HD-FDD LTE Half-Duplex Frequency Division Duplex
  • WCDMA Wideband Code Division Multiple Access
  • UTRA Universal Terrestrial Radio Access
  • EDGE GSM/Enhanced Data Rate for GSM Evolution
  • GERAN GSM/Enhanced Data Rate for GSM Evolution
  • Multi- Standard Radio (MSR) base stations multi-RAT base stations etc., any 3rd Generation Partnership Project (3GPP) cellular network, Wreless Local Area Network/s (WLAN) or WiFi network/s, Worldwide Interoperability for Microwave Access (WiMax), IEEE 802.15.4-based low-power short-range networks such as IPv6 over Low-Power Wreless Personal Area Networks (6LowPAN), Zigbee, Z-Wave , Bluetooth Low Energy (BLE), or any cellular network or system.
  • 3GPP 3rd Generation Partnership Project
  • WiMax Worldwide Interoperability for Microwave Access
  • IEEE 802.15.4-based low-power short-range networks such as IPv6 over Low-Power Wreless Personal Area Networks (6LowPAN), Zigbee, Z-Wave , Bluetooth Low Energy (BLE), or any cellular network or system.
  • Other wireless systems, supporting similar or equivalent functionality may also benefit from exploiting the ideas covered within this disclosure.
  • future radio access e.g., in the sixth generation
  • a plurality of nodes may be comprised in the communications network 100, whereof a publisher node 101, a subscriber node 102, a first node 111, a second node 112, and a third node 113, are depicted in Figure 1.
  • Each of the publisher node 101, the subscriber node 102, the first node 111 , the second node 112, and the third node 113 may be understood, respectively, as a first computer system or server, a second computer system or server, a third computer system or server, a fourth computer system or server, and a fifth computer system or server. Any of the publisher node 101, the subscriber node 102, the first node 111 , the second node 112, and the third node 113, may be implemented as a standalone server in e.g., a host computer in the cloud 120.
  • any of the publisher node 101, the subscriber node 102, the first node 111, the second node 112, and the third node 113 may be a distributed node or distributed server, such as a virtual node in the cloud 120, and may perform some of its respective functions locally, e.g., by a client manager, and some of its functions in the cloud 120, by e.g., a server manager.
  • any of the publisher node 101, the subscriber node 102, the first node 111, the second node 112, and the third node 113 may perform its functions entirely on the cloud 120, or partially, in collaboration or collocated with a network node.
  • any of the publisher node 101, the subscriber node 102, the first node 111 , the second node 112, and the third node 113 may also be implemented as processing resource in a server farm. Any of the publisher node 101 , the subscriber node 102, the first node 111 , the second node 112, and the third node 113, may be under the ownership or control of a service provider, or may be operated by the service provider or on behalf of the service provider.
  • any of the publisher node 101, the subscriber node 102, the first node 111 , the second node 112, and the third node 113 may be a core network node in a core network, which may be e.g., a 3GPP SBA based 5GC core network.
  • the first node 111, the second node 112, and the third node 113 may be Fog nodes.
  • the publisher node 101 may be understood as a node that may have the capability to create and publish messages for a topic, to which the subscriber node 102 may subscribe in order to receive such messages for the topic.
  • the publisher node 101 may publish messages for a plurality of topics, and the subscriber node 102 may subscribe to one or more topics that may be of interest to the subscriber node 102.
  • the publisher node 101 may support a publisher-subscriber API interface and/or Software Development Kit (SDK).
  • SDK Software Development Kit
  • Embodiments herein allow the publisher node 101 and the subscriber node 102 to use standard messaging APIs while instrumenting such libraries/SDKs to implement embodiments herein.
  • applications in a cloud provider platform such as Amazon Web Services (AWS) may use their existing cloud provider API to create, subscribe and publish messages for a topic, and such library/SDK may be instrumented.
  • AWS SNS Java SDK for Pub-Sub system may be as follows:
  • the first node 111 may be understood as a node having a capability to perform control place actions, such as instantiation and/or removal, command communication, etc. on the various components described in embodiments herein.
  • the first node 111 may be a located in the cloud 120.
  • the first node 111 may be a cloud controller, that is, a cloud control plane component, which may typically termed controller and/or orchestrator, etc..
  • the first node 111 may be understood as a provider of the infrastructure of embodiments herein, as will be described later.
  • the second node 112 and the third node 113 may be each understood as monitoring agents. That is, nodes having the capability to monitor metrics and health aspects, such as the number of subscribers per topic on the node, messages arrival rate for each topic, network traffic, average latency experienced by the subscribers, average message buffers utilization by the subscribers, load on the subscriber’s node, crash and restart of subscribers, flow stats, e.g., per topic basis, available buffer capability etc.
  • the second node 112 and the third node 113 may report such information to the first node 111.
  • the communications network 100 comprises a first proxy-agent 121, a second proxy- agent 122, and may further comprise a third proxy-agent 123 and one or more additional proxy-agents, such as a fourth proxy-agent 124.
  • a first proxy-agent 121, the second proxy-agent 122, the third proxy-agent 123 and the one or more additional proxy-agents, such as the fourth proxy-agent 124 may be understood as a node, as described above, namely, a respective computer system or server which may be implemented as a standalone server in e.g., a host computer in the cloud 120.
  • any of the first proxy-agent 121, the second proxy-agent 122, the third proxy-agent 123 and the one or more additional proxy- agents, such as the fourth proxy-agent 124 may be a distributed node or distributed server, such as a virtual node in the cloud 120, and may perform some of its respective functions locally, e.g., by a client manager, and some of its functions in the cloud 120, by e.g., a server manager.
  • any of the first proxy-agent 121, the second proxy-agent 122, the third proxy-agent 123 and the one or more additional proxy-agents, such as the fourth proxy- agent 124 may perform its functions entirely on the cloud 120, or partially, in collaboration or collocated with a network node.
  • any of the first proxy-agent 121, the second proxy-agent 122, the third proxy-agent 123 and the one or more additional proxy- agents, such as the fourth proxy-agent 124 may also be implemented as processing resource in a server farm.
  • any of the first proxy-agent 121 , the second proxy-agent 122, the third proxy- agent 123 and the one or more additional proxy-agents, such as the fourth proxy-agent 124, may be under the ownership or control of a service provider, or may be operated by the service provider or on behalf of the service provider. Any of the first proxy-agent 121, the second proxy-agent 122, the third proxy-agent 123 and the one or more additional proxy- agents, such as the fourth proxy-agent 124 may be understood to have the capability to abstract the publisher and subscriber(s) from the underlying topology.
  • proxy program capable of acting as a subscriber to its upstream entities, which may be a publisher such as the publisher node 101, or other proxy agents, and as a publisher to its downstream entities, which may be a subscriber such as the subscriber node 102, or other proxy agents.
  • proxy-agent 121, 122, 123, 124 may be understood to refer to any of the first proxy-agent 121 , the second proxy-agent 122, the third proxy-agent 123, or any of the one or more additional proxy-agents, such as the fourth proxy-agent 134, unless otherwise noted.
  • some of the nodes and proxy-agents just described may be co located, or be the same node.
  • the publisher node 101 may be co- located with the second node 112 and the first proxy-agent 121 in a first server 131.
  • the subscriber node 102 may be co-located with the third node 113 and the second proxy-agent 122 in a second server 132.
  • the first server 131 and the second server 132 may typically be located in separate locations geographically.
  • the monitoring functionality may also be in-built in the proxy-agents. That is, the second node 112 may be a same node as the first proxy-agent 121 and the third node 113 may be a same node as the second proxy-agent 122.
  • the communications network 100 may further comprise a first programmable switch 141, a second programmable switch 142, and a third programmable switch 143.
  • Any of the first programmable switch 141, the second programmable switch 142, and the third programmable switch 143 may be understood as as a switch having the capability to allow custom logic to be programmed on to the chip on the switch, to enable capabilities such as data plane processing, e.g., custom forwarding, packet processing etc..
  • the communications network 100 may comprise additional nodes.
  • the publisher node 101 may have subscriber nodes 150, which may comprise the subscriber node 102.
  • the communications network may comprise a fourth node.
  • the fourth node may be a sixth computer system or server, which be implemented as a standalone server in e.g., a host computer in the cloud 120.
  • the fourth node may be a distributed node or distributed server, such as a virtual node in the cloud 120, and may perform some of its respective functions locally, e.g., by a client manager, and some of its functions in the cloud 120, by e.g., a server manager.
  • the fourth node may perform its functions entirely on the cloud 120, or partially, in collaboration or collocated with a network node.
  • the fourth node may also be implemented as processing resource in a server farm.
  • the fourth node may be under the ownership or control of a service provider, or may be operated by the service provider or on behalf of the service provider.
  • the fourth node may have the capability to keep track of, or to be used by the first node 111 to keep track of, publishers such as the publisher node 101 , the topics they may expose, their corresponding subscribers such as the subscriber node 102, and locations of publishers and subscribers, information about the physical topology, etc.
  • the fourth node may be understood to have the capability to provide a directory service.
  • the fourth node may be a standard form of an internal service of the first node 111.
  • the directory service may maintain information about (i) what topics exist, identified by topic identifiers (topiclds), (ii) what publishers, subscribers, proxy-agents exist, and their locations, their ports (iii) logical graph of proxy-agents - information such as, for each proxy-agent, what are its upstream publishers or upstream proxy-agents, which topics it is subscribed to, what are its downstream proxy-agents or downstream subscribers.
  • the telecommunications network that may be comprised in the communications network 100 may also comprise a plurality of radio network nodes, e.g., access nodes, or radio network nodes.
  • the telecommunications network that may be comprised in the communications network 100 may cover a geographical area, which in some embodiments may be divided into cell areas, wherein each cell area may be served by a radio network node, although, one radio network node may serve one or several cells.
  • Any of the radio network nodes may be e.g., a gNodeB. That is, a transmission point such as a radio base station, for example an eNodeB, or a Home Node B, a Home eNode B or any other network node capable to serve a wireless device in the communications network 100.
  • any of the radio network nodes may be of different classes, such as, e.g., macro eNodeB, home eNodeB or pico base station, based on transmission power and thereby also cell size.
  • any of the radio network nodes may serve receiving nodes with serving beams.
  • Any of the radio network nodes may support one or several communication technologies, and its name may depend on the technology and terminology used.
  • Any of the radio network nodes may be directly connected to one or more core networks in the telecommunications network.
  • the telecommunications network that may be comprised in the communications network 100 may also comprise a plurality of devices. Any of the devices may be a UE or a Customer Premises Equipment (CPE) which may be understood to be enabled to communicate data, with another entity, such as a server, a laptop, a Machine-to-Machine (M2M) device, device equipped with a wireless interface, or any other radio network unit capable of communicating over a wired or radio link in a communications system such as the telecommunications network.
  • the devices may be also e.g., a mobile terminal, wireless device, wireless terminal and/or mobile station, mobile telephone, cellular telephone, or laptop, just to mention some further examples.
  • any of the devices may be, for example, portable, pocket-storable, hand held, computer-comprised, a sensor, camera, or a vehicle-mounted mobile device, enabled to communicate voice and/or data, via a RAN, with another entity, such as a server, a laptop, a Personal Digital Assistant (PDA), or a tablet computer, sometimes referred to as a tablet with wireless capability, or simply tablet, a Machine-to-Machine (M2M) device, a device equipped with a wireless interface, such as a printer or a file storage device, modem, Laptop Embedded Equipped (LEE), Laptop Mounted Equipment (LM E), USB dongles or any other radio network unit capable of communicating over a wired or radio link in the communications network 100.
  • Any of the devices may be enabled to communicate wirelessly in the telecommunications network. The communication may be performed e.g., via a RAN and possibly one or more core networks, comprised within the telecommunications network.
  • the communications that will be described in relation to embodiments herein may be understood to be configured to be performed with a respective link e.g., a radio link, an infrared link, or a wired link. Only some of the links are represented in Figure 1 to avoid crowding the Figure.
  • a respective link e.g., a radio link, an infrared link, or a wired link. Only some of the links are represented in Figure 1 to avoid crowding the Figure.
  • the first node 111 may be configured to communicate with the first proxy-agent 121 within the communications network 100 over a first link 151.
  • the first proxy-agent 121 may be configured to communicate with the publisher node 101 within the communications network 100 over a second link 152.
  • the first proxy-agent 121 may be configured to communicate within the communications network 100 with the third proxy-agent 123 over a third link 153.
  • the third proxy-agent 123 may be configured to communicate within the communications network 100 with the fourth proxy-agent 124 over a fourth link 154.
  • the fourth proxy-agent 124 may be configured to communicate with second proxy-agent 122 within the communications network 100 over a fifth link 155.
  • the second proxy-agent 122 may be configured to communicate with the subscriber node 102 within the communications network 100 over a sixth link 156.
  • any of the links may be a direct link or may be comprised of a plurality of individual links, wherein it may go via one or more computer systems or one or more core networks, which are not depicted in Figure 1, or it may go via an optional intermediate network.
  • the intermediate network may be one of, or a combination of more than one of, a public, private or hosted network.
  • the intermediate network if any, may be a backbone network or the Internet; in particular, the intermediate network may comprise two or more sub-networks, which is not shown in Figure 1.
  • first”, “second”, “third”, “fourth”, “fifth” and/or “sixth” herein may be understood to be an arbitrary way to denote different elements or entities, and may be understood to not confer a cumulative or chronological character to the nouns they modify.
  • Embodiments of a method, performed by the first node 111, will now be described with reference to the flowchart depicted in Figure 2.
  • the method may be understood to be for handling communications between the publisher node 101 and the subscriber node 102 over the communications network 100.
  • the method may comprise the actions described below. In some embodiments, some of the actions may be performed. In other embodiments, all the actions may be performed. In Figure 2, optional actions are indicated with a dashed box. One or more embodiments may be combined, where applicable. All possible combinations are not described to simplify the description. It should be noted that the examples herein are not mutually exclusive. Components from one example may be tacitly assumed to be present in another example and it will be obvious to a person skilled in the art how those components may be used in the other examples.
  • the publisher node 101 and the corresponding subscriber(s), such as the subscriber node 102 may be understood to not establish a direct connection with one another, though their interaction may seem to them to be direct. This may be achieved by transparent functioning of one or more proxy-agents between the publisher node 101 and subscriber(s), e.g., the subscriber node 102, thereby abstracting the publisher node 101 and the subscriber(s), e.g., the subscriber node 102, from the underlying topology.
  • the first node 111 may orchestrate the dynamic instantiation and removal of proxy-agents, and the session establishment between them, to provide a transparent publish-subscribe experience to the publisher node 101 and subscribers such as the subscriber node 102
  • the first node 111 instantiates the first proxy-agent 121, as proxy- agent of the publisher node 101 , in-line between the publisher node 101 and the subscriber node 102.
  • the first node 111 also instantiates the second proxy-agent 122, as proxy-agent of the subscriber node 102, in-line between the publisher node 101 and the subscriber node 102.
  • the first node 111 may perform the instantiation in this Action 201 by sending a first instruction to at least one of: a) the first proxy-agent 121, to instantiate as proxy-agent of the publisher node 101, in-line between the publisher node 101 and the subscriber node 102, b) the second proxy-agent 122, to instantiate as proxy-agent of the subscriber node 102, in-line between the publisher node 101 and the subscriber node 102, and c) the third proxy-agent 123, to instantiate as proxy-agent in-line between the publisher node 101 and the subscriber node 102.
  • the first node 111 may perform this instantiating Action 201 for example, when at least one the publisher node 101 and the subscriber node 102 may initiate a publish/subscribe action, respectively, for a topic.
  • the request may be directed to the first node 111, e.g., by their respective SDK.
  • the first node 111 may instantiate the first proxy-agent 121, as well as the second node 112, co-localized with the publisher node 101, if no such agent is already available on that node.
  • the first node 111 may also instantiate the second proxy-agent 122, as well as the third node 113, co-localized with the subscriber node 102, if no such agent is already available on that node.
  • the first node 111 instructs: i) the first proxy-agent 121 to connect with and subscribe to the publisher node 101, ii) the subscriber node 102 to connect with and subscribe to the second proxy-agent 122, and iii) at least one of the first proxy-agent 121 and the second proxy-agent 122 to establish a connection with each other, thereby enabling communication exchanges between the publisher node 101 and the subscriber node 102 via the first proxy-agent 121 and the second proxy-agent 122.
  • the first node 111 may instruct the third proxy-agent 123, to connect with one of: the first proxy-agent 121, the second proxy-agent 122 and the fourth proxy-agent 124, in-line between the publisher node 101 and the subscriber node 102.
  • the first node 111 may perform the instructing in this Action 202 by sending a second instruction to at least one of: i) the first proxy-agent 121, to connect with and subscribe to the publisher node 101, ii) the subscriber node 102, to connect with and subscribe to the second proxy-agent 122, iii) to at least one of the first proxy-agent 121 and the second proxy-agent 122, to establish a connection with each other, thereby enabling communication exchanges between the publisher node 101 and the subscriber node 102 via the first proxy-agent 121 and the second proxy-agent 122, and iv) to the third proxy-agent 123, to connect with one of: the first proxy-agent 121, the second proxy-agent 122 and the fourth proxy-agent 124, in-line between the publisher node 101 and the subscriber node 102.
  • a topic which may be identified by topicld, may have multiple publishers, identified by publisherld (publd).
  • publisherld publisherld
  • the first node 111 may establish an end-to-end new connection via proxy-agents to all the subscribers interested the in the topic, e.g., the subscriber node 102.
  • each message flow from different publishers may be treated as separate individual flows with a respective identifier (flowid), and may or may not flow through the same proxy-agents.
  • the second instruction may comprise the publd for the publisher node 101, the topicld, an identifier for the port of the publisher node 101 (portld), an identifier for server where the publisher node 101 is located (serverNode), here the first server 131, the flowid, as well as the IP address of the publisher node 101, denoted as “pubJP”, and the publisher node 101’s port address on which the publisher node 101 may be listening to establish communication for the incoming connections from the proxy- nodes/subscribers denoted as “pub_listen_porf . It may be understood that other methods may be used to implement the second instruction.
  • the first node 111 may inform the first proxy- agent 121 about the new topic.
  • the first node 111 may inform the second proxy-agent 122 about the topic, and also about the first proxy-agent 121 to establish connection.
  • mapping information about publishers, subscribers, their proxy-agents and topics etc. may be maintained in the fourth node, e.g., a directory service.
  • the proxy-agents 121, 122, 123, 124 may be designed to handle subscribers from same topic or different topics.
  • the first node 111 may pre-offload such proxy-agent code and/or logic functionality on to the programmable switches, and they may be used in embodiments herein. Such functionality may also be enabled on-demand. Particular non-limiting examples of this process will be illustrated later in Figure 7 and Figure 8.
  • the first proxy-agent 121 may be instantiated on: i) a same first server 131 as the publisher node 101, ii) the first programmable switch 141 on the first server 131, or iii) the first programmable switch 141, in-line between the publisher node 101 and the subscriber node 102.
  • the second proxy-agent 122 may be instantiated on: i) the same second server 132 as the subscriber node 102, ii) the second programmable switch 142 on the second server 132, or iii) the second programmable switch 142, in-line between the publisher node 101 and the subscriber node 102.
  • the proxy-agents 121, 122, 123, 124 may be provisioned on the SmartNIC.
  • embodiments herein may be used by a Pub-Sub solution built using multicast over UDP so that the Negative Acknowledgements (NACKs) do not flood back to the publisher node 101.
  • Rendezvous Points (RP) that may be identified by the multicast protocols may in such instances be used as a potential location for placing the proxy-agents 121, 122, 123, 124.
  • the first node 111 may receive information on at least one of: a) first traffic at the first proxy- agent 121 from at least one of: the second node 112 monitoring the publisher node 101, and the first proxy-agent 121, b) second traffic at the second proxy-agent 122 from at least one or: the third node 113 monitoring the subscriber node 102, and the second proxy-agent 122, c) number of subscriber nodes 150 to the publisher node 101, d) proxy-agent failure, e) switch failure, and f) a forward and cache request from a proxy-agent 121, 122, 123 in-line between the publisher node 101 and the subscriber node 102.
  • the first node 111 by performing this Action 203, may get to know if it may have lost a proxy-agent running on a particular node, which may then enable the first node 111 to perform a recovery mechanism based on it.
  • the failure and recovery mechanism is described later in detail with a particular non-limiting example, in relation to Figure 9.
  • Action 204
  • the first node 111 may have obtained metrics information from monitoring agents such as the second node 112 and the third node 113, as well as any kind of control information back from the existing proxy-agents, such as the first proxy-agent 121 and the second proxy-agent 122.
  • the first node 111 may use such information to decide whether it may need to instantiate or remove proxy-agent(s) in the network path between existing proxy- agents). That is, the invocation of proxy-agents according to embodiments herein may be understood to be dynamic.
  • the first node 111 may determine, based on the received information in Action 203, whether or not to at least one of: a) instantiate one or more additional proxy- agents, b) re-instantiate a failed proxy-agent, and c) remove already instantiated one or more proxy-agents, thereby adapting a number of proxy-agents to traffic changes.
  • Determining may be understood as calculating, deriving, or similar.
  • the first node 111 may employ various prevalent techniques and algorithms for analysis, prediction and decision of whether to add or remove in-network proxies, and even whether to keep and reuse such proxies expecting load to spike back up.
  • the first node 111 may decide to enable the pre-offloaded proxy-agent program on the corresponding Top-of-Rack Switch (ToR switch), e.g., the fourth programmable switch 144, to act as an intermediary proxy-agent between the publisher and subscriber proxy-agents, that is, between the first proxy-agent 121 and the second proxy-agent 122, with a goal to reduce the load on the first proxy-agent 121 in the face of growing subscriber count, while off-loading the proxying feature in-network directly in the network path between the publisher node 101 and the subscriber node 102.
  • ToR switch Top-of-Rack Switch
  • the first node 111 may, in this Action 205, instantiate the one or more additional proxy-agents or re instantiate the failed proxy-agent. For example, assuming in a non-limiting example that the first proxy-agent 121, the second proxy-agent 122 and the third proxy-agent 123 were already instantiated in the communications network 100, the first node 111 may decide in this Action 205 to instantiate the four proxy-agent 124.
  • the first node 111 may remove 206 one or more of the already instantiated one or more proxy- agents. For example, assuming in a non-limiting example that the first proxy-agent 121, the second proxy-agent 122 and the third proxy-agent 123 were already instantiated in the communications network 100, the first node 111 may decide in this Action 206, to remove the third proxy-agent 123.
  • the first node 111 may rearrange existing connections between the publisher node 101 and the subscriber node 102, based on the instantiated one or more additional proxy-agents 124 and/or the removed already instantiated one or more proxy-agents, e.g., the third proxy-agent 123, thereby enabling communication exchanges between the publisher node 101 and the subscriber node 102 via the first proxy-agent 121 and the second proxy-agent 122, via the one or more additional proxy-agents 124 and/or with the rearranged proxy-agents.
  • the first node 111 in this Action 207 may reorganize the sessions between the proxy-agents.
  • the first node 111 may enable the one or more additional proxy-agents 124, e.g., the fourth proxy-agent 124, which may be an in-network proxy-agent, and may direct it to establish session with the first proxy-agent 121. Then the first node 111 may direct the subscriber proxy-agents, e.g. the second proxy-agent 122, to establish sessions with the fourth proxy-agent 124. Finally, the first node 111 may direct the subscriber proxy-agents, such as the second proxy-agent 122, to terminate their previous sessions with the first proxy-agent 121.
  • the fourth proxy-agent 124 which may be an in-network proxy-agent
  • a topicld may be understood as a global identifier for a topic, that publishers such as the publisher node 101 may create and publish messages to, and subscribers such as the subscriber node 102 may subscribe to. Since multiple publishers may publish messages on a topic, a combination of topicld and publisher identity, e.g., location/I P/id etc., publisherld may be used to distinguish between multiple input streams for a given topic, as required.
  • the sessions between the publisher node 101 and the subscriber node 102 with their respective local proxy-agents may be understood to remain unaltered.
  • the internal session changes may be understood to be completely transparent to end publisher and subscribers, that is, to the publisher node 101 and the subscriber node 102. This scenario is illustrated with a non-limiting example in Figure 6, which will be described later.
  • Such in-network proxying as performed according to embodiments herein may be understood to lessen the load on the publisher end, owing to seemingly lesser number of subscribers from the publisher’s viewpoint, and thus, lesser connections and message acknowledgements on the publisher end. Further, such in-network proxy ing may be directly in the network path between the publisher node 101 and the subscriber node 102, so it may be understood to avoid extra network hops and latency.
  • in-network proxy orchestration may be extended. It may be understood that the method just described may iterate from Action 203 to Action 207. As subscribers and messaging volumes may increase across multiple racks, more in-network proxies may be instantiated, according to a new iteration of Action 205, on further upstream switches beyond the subscribers’s ToR switch, thereby having a hierarchy of in-network proxies.
  • the first node 111 may decide, according to a new iteration of Action 204, to scale down the number of in-network proxies, as the subscriber and messaging load may be reduced, by removing, according to a new iteration of Action 206, an in-network proxy and directing the proxies on either end to establish fresh sessions between them.
  • Embodiments of a method performed by a proxy-agent 121, 122, 123, 124, will now be described with reference to the flowchart depicted in Figure 3.
  • the method may be understood to be for handling the communications between the publisher node 101 and the subscriber node 102 over the communications network 100.
  • the method may comprise the following actions. Several embodiments are comprised herein. In some embodiments, some actions may be performed. In other embodiments, all actions may be performed. One or more embodiments may be combined, where applicable.
  • the fourth proxy-agent 124 may be comprised in a ToR switch 144 to the subscriber node 102.
  • the proxy-agent 121, 122, 123, 124 receives the first instruction from the first node 111 operating in the communications network 100 to instantiate as one of: a) the first proxy-agent 121 of the publisher node 101, in-line between the publisher node 101 and the subscriber node 102, b) the second proxy-agent 122 of the subscriber node 102 in-line between the publisher node 101 and the subscriber node 102, and c) the third proxy-agent 123 in-line between the publisher node 101 and the subscriber node 102.
  • the proxy-agent 121, 122 may be instantiated in one of the following options.
  • the proxy-agent 121 , 122 may be instantiated as the first proxy-agent 121, on: i) the same second server 132 as the publisher node 101, ii) the first programmable switch 141 on the first server 131, or iii) the first programmable switch 141 in line between the publisher node 101 and the subscriber node 102.
  • the proxy-agent 121, 122 may be instantiated as a second proxy-agent 122 on: i) the same second server 132 as the subscriber node 102, ii) the second programmable 142 switch comprised on the second server 132, or iii) the second programmable switch 142, in-line between the publisher node 101 and the subscriber node 102.
  • the proxy-agent 121, 122 may be instantiated as the third proxy-agent 123, in the third programmable switch 143 in-line between the publisher node 101 and the subscriber node 102.
  • the proxy-agent 121, 122, 123, 124 receives the second instruction from the first node 111 to one of: i) as the first proxy-agent 121, to connect with and subscribe to the publisher node 101 , ii) as at least one of the first proxy-agent 121 and the second proxy- agent 122, to establish a connection with each other, thereby enabling communication exchanges between the publisher node 101 and the subscriber node 102 via the first proxy- agent 121 and the second proxy-agent 122, and iii) as the third proxy-agent 123, to connect with one of: the first proxy-agent 121, the second proxy-agent 122 and the fourth proxy-agent 124, in-line between the publisher node 101 and the subscriber node 102.
  • the proxy-agent 121, 122, 123, 124 establishes a connection with one of: i) as first proxy-agent 121 with the second proxy-agent 122 and/or with the publisher node 101 , ii) as second proxy-agent 122, with the first proxy-agent 121 , and iii) as the third proxy- agent 123, with one of: the first proxy-agent 121, the second proxy-agent 122 and the fourth proxy-agent 124, in-line between the publisher node 101 and the subscriber node 102.
  • the respective local proxy-agent on the same server as the publisher node 101 or the subscriber node 102 may then then establish the local connection with the respective SDK of the publisher and/or subscriber.
  • the proxy-agent 121, 122, 123, 124 may as a result of Action 303, update a mapping table it may keep, such that, as a non-limiting example, for each topicld, it may map each (sessionld & pub_port) to a list of subscriber ports (subscribed IP & port, subscribed IP &
  • the subscriber proxy-agents may in turn establish session with the publisher proxy-agents, such as the first proxy-agent 121, or reuse any existing sessions between them.
  • the publisher node 101 may try to send a new message to all registered subscribers, such as the subscriber node 102. But, if any subscriber, e.g., the subscriber node 102 is unable to receive it, the publisher node 101 may not keep a copy of the message for later retry.
  • the proxy-agents may instead handle message persistence and delivery guarantees, up to a limit or threshold, for slow and/or unavailable subscribers, if configured so.
  • the proxy-agent 121, 122, 123, 124 may cache undelivered messages to subscribers.
  • the proxy-agent 122, 123, 124 on the subscriber’s server may cache, according to this Action 305, undelivered messages and an associated state, such as which subscribers to send these to, retry counts, etc. For other subscribers, new messages may be forwarded as usual. When the affected subscribers recover, the cached messages may be forwarded to the subscribers.
  • the proxy-agents 121, 122, 123, 124 may be provisioned on the SmartNIC and may potentially cache the messages on the server.
  • the proxy-agent 121, 122, 123, 124 may maintain information about the message-delivery-state for each downstream proxy-agent or subscriber, that is, for each downstream client for a given topic stream, e.g., topic, publisher tuple, which messages received from upstream have not been delivered or acknowledged by the client.
  • a proxy-agent may drop messages.
  • Such situations may arise when a proxy- agent and its upstream proxy-agent(s) may not be able to cache anymore for one or more downstream clients, and the first node 111 may not be able to find any better proxy-agent placement strategy for that path.
  • Such configurable values may be administered by/through the first node 111, and alternate embodiments may also include typical variations such as priorities associated with some subscribers/topics over others, monitoring and history associated with subscribers/topics, e.g., spikes, cache build up, etc.
  • the proxy-agent 121, 122, 123, 124 may also maintain information about: (i) its upstream endpoints (publishers or upstream proxy-agents) and topics subscribed to, and (ii) its downstream endpoints and topics for which it has downstream subscribers.
  • the proxy-agent 121, 122, 123, 124 may request for upstream forward and cache functionality for new incoming messages on the corresponding topic for which caching may be required. Because it is forward and cache, the unaffected subscribers may keep receiving messages as usual.
  • proxy-agent 121, 122 This may be performed in multiple ways.
  • the requesting proxy-agent 121, 122, 123, 124 may send the request to the first node 111, which in turn may take a better decision as to whether a new in-network proxy-agent needs to be instantiated, and/or which proxy-agent 121, 122, 123, 124 may need to provide the forward and cache functionality.
  • the proxy-agent 121, 122, 123, 124 may, in this Action 306, send a request to one of: the first node 111 and another proxy-agent in-line between the publisher node 101 and the subscriber node 102, to forward and cache one or more undelivered messages to subscribers.
  • proxy-agent 121, 122, 123, 124 may request the upstream proxy-agents to forward the cached messages downstream.
  • memory may be pre-allocated and/or dedicated for message caching in the in-network switches, e.g., any of the first programmable switch 141, the second programmable switch 142, and the third programmable switch 143, with various cache expiry strategies and thresholds. This may be understood as an on-demand caching of the incoming messages on the in-network switches.
  • Control signalling, and related information exchange may be done between the proxy- agent 121, 122, 123, 124 in programmable switches leveraging in-band telemetry framework such as In-band Network Telemetry (I NT).
  • I NT In-band Network Telemetry
  • a P4 switch, (source) may append the required information in a standard INT header format over the regular packets and may address it to a specific remote switch (sink).
  • Intermediate switches may forward the packets.
  • the sink switch may receive the packet and may perform processing as per the information appended in the packet.
  • such in-band communication may also be used by the proxy-agent 121, 122, 123, 124 to exchange information such as resource capabilities, e.g., cache availability, at proxy-agents, cache expiry timeouts, priority levels for caching for critical applications, etc.
  • resource capabilities e.g., cache availability, at proxy-agents, cache expiry timeouts, priority levels for caching for critical applications, etc.
  • Action 205 As a result of Action 205, Action 206 and/or Action 207, which may be performed by the first node 111 , the proxy-agent 121, 122, 123, 124 may receive a third instruction to be instantiated, to be terminated and/or to rearrange its existing connections between the publisher node 101 and the subscriber node 102.
  • the proxy-agent 121, 122, 123, 124 may rearrange existing connections between the publisher node 101 and the subscriber node 102, based on an instruction received from the first node 111, that is, the third instruction just described.
  • Figure 4 is a schematic diagram illustrating a non-limiting example of embodiments herein, wherein the communications network 100 comprises few subscribers.
  • the diagram depicts how the first proxy-agent 121 has been instantiated, according to Action 201, by the first node 111, a “Cloud Controller” in the example, in the same server as the publisher node
  • the first proxy-agent 121 has, according to Action 303, established a connection with the publisher node 101, via the second link 152.
  • the first proxy-agent 121 has also established, according to Action 303, a connection with the second proxy-agent 122, via a further link 420 which is routed via the third programmable switch 143, located upstream of the subscriber node 102.
  • the 102 is a first subscriber node, denoted as Sub-1, to a particular topic of the publisher node 101.
  • the topic has a second subscriber node 402 denoted as Sub-2.
  • the second proxy-agent 122, the subscriber node 102, the second subscriber node 402, and the third node 113, denoted as “Monitoring-Agent” are comprised in the second server 132, denoted as “Server A”.
  • a fourth server 434, denoted as “Server -C” and fifth server 435, denoted as “Server-D” are all downstream of the fourth programmable switch 144, which is a ToR switch.
  • the second proxy-agent 122 is sufficient to mediate communications between the subscriber node 102, the second subscriber node 402, and the publisher node 101. Illustrated in the figure, is also the fourth node as a Pub-Sub Directory service 415.
  • Figure 5 is a schematic diagram illustrating a non-limiting example of the embodiments herein, when the number of subscribers increases in the the communications network 100.
  • Figure 5 depicts the same components as in Figure 4, with additional components.
  • Each of the third server 433, the fourth server 434, and the fifth server 435 comprise now two new subscriber nodes to the same topic as the subscriber node 102 and the second subscriber node 402.
  • the third server 433 comprises a third subscriber node 503 denoted as Sub-3 and a fourth subscriber node 504 denoted as Sub-4, the fourth server 434 comprises a fifth subscriber node 505 denoted as Sub-5, and a sixth subscriber node 506 denoted as Sub-6,
  • the fifth server 435 comprises a seventh subscriber node 507 denoted as Sub-7 and an eighth subscriber node 508 denoted as Sub-8.
  • a sixth server 511 denoted as “Server-E” comprises a ninth subscriber node 509 denoted as Sub-9, and a tenth subscriber node 510 denoted as Sub-10.
  • a seventh server 514 denoted as “Server-F”, comprises an eleventh subscriber node 512 denoted as Sub-11, and a twelfth subscriber node 513 denoted as Sub-12.
  • the first node 111 may decide to instantiate, according to Action 205 a respective proxy-agent 520 in each of the servers comprising newly added subscribers, as well as a respective monitoring agent 521. Note that not all reference signs are included in the Figure to avoid overcrowding it.
  • the first node 111 may also according to Action 204, decide to enable the pre-offloaded fourth proxy-agent 124 on the corresponding ToR switch, in this example, the fourth programmable switch 144, to act as an intermediary proxy-agent between the first proxy-agent 121 and second proxy-agent 122, with a goal to reduce the load on the first proxy-agent 121 in the face of growing subscriber count, while off-loading the proxy ing feature in-network directly in the network path between the publisher node 101 and the subscriber node 102.
  • the first node 111 may also decide in Action 204 to instantiate, in agreement with Action 205, the third proxy-agent 123 in the third programmable switch 143, and a fifth proxy-agent 525 in a fifth programmable switch 530, also a ToR switch, for the sixth server 511 and the seventh server 514.
  • the first node 111 may instruct, according to Action 202, the respective proxy-agents 520 to establish connections with its respective subscribers on one end, and with its respective ToR switch on the other.
  • Each of the fourth proxy-agent 124 and the fifth proxy-agent 525 may be instructed according to Action 202, to establish respective connections with the third proxy- agent 123, located in the third programmable switch 143, upstream of the fourth programmable switch 144 and the fifth programmable switch 530.
  • the third proxy-agent 123 may have also been instructed to establish a connection with the first proxy agent 121.
  • the first node 111 may have rearranged, according to Action 207, the connections between the publisher node 101 and the subscriber node 102 depicted in Figure 4, based on the instantiated additional proxy agents 123 and 124, thereby enabling communication exchanges between the publisher node 101 and the subscriber node 102 via the first proxy agent 121 and the second proxy agent 122, and via the additional proxy agents 123, 124.
  • the first node 111 may reduce the load on the first proxy-agent 121 in the face of growing subscriber count, while off-loading the proxying feature in-network directly in the network path between the publisher node 101 and the subscriber node 102, and hence avoiding extra network hops and latency that would otherwise be used if a brokered system were to be used.
  • Figure 6a is a schematic representation of some of the actions that may be performed in the communications network 100, according to a non-limiting example of embodiments herein.
  • the initial Pub-Sub and session establishment is illustrated.
  • the first node 111 a cloud controller in this example, via a global scheduler 601, launches the first proxy-agent 121 on the first server 131, where the publisher node 101 is located, and the second proxy agent 122 on the second server 132, where the subscriber node 102 is located.
  • the first node 111 via the global scheduler 601, launches the second node 112, denoted as “Monitoring Agent” on the first server 131, and the third node 113 on the second server 132.
  • the first proxy agent 121 and the second proxy agent 122 respectively receive the first instruction to instantiate, in agreement with Action 301.
  • the first node 111 launches the publisher node 101 on the first server 131.
  • the publisher node 101 at 603, registers with the fourth node 415, the directory service co- located with the first node 111 in this example.
  • the publisher node 101 indicates to the fourth node 415 its identifier (publd), the topicld, an identifier for its port (pub_portld), an identifier for the first server 131 (serverNode), an identifier for a particular flow (flowld), as well as the “Use Publisher APIQ”.
  • the first node 111 via the fourth node 415, instructs the first proxy agent 121 to connect with and subscribe to the publisher node 101, by sending the second instruction, as described earlier.
  • the first proxy agent 121 in agreement with Action 302, receives the second instruction, and according to Action 303(i), it establishes a connection with the publisher node 101.
  • the publisher node 101 acknowledges (ACK) the establishment of the connection, by indication a session identifier (sessionld).
  • the first proxy-agent 121 may then, at 605, update its mapping table, as described earlier.
  • the first proxy agent 121 indicates to the first node 111, via the fourth node 415, that it has successfully connected to the publisher node 101, indicating its own identifier, pub_proxyld, and that of the publisher node 101, publd.
  • the first node 111 via the fourth node 415, updates its own table with the mapping indicated by the first proxy-agent 121, for the topicld.
  • the flow of messages and acknowledgements (ACKs) begins between the publisher node 101 and the first proxy agent 121.
  • Figure 6b is a continuation of Figure 6a.
  • the first node 111 launches the subscriber node 102 on the second server 132.
  • the subscriber node 102 registers with the fourth node 415.
  • the subscriber node 102 indicates to the fourth node 415 its identifier (subld), the identifier of the topic it is interested in subscribing to (topicld), an identifier for its port (sub_portld), an identifier for the first server 131 (serverNode), an identifier for a particular flow (flowld), as well as the “Use Subscriber APIQ”.
  • the first node 111 via the fourth node 415, creates one, and opens a socket to listen to establish connection from subscribers.
  • the first node 111 also via the fourth node 415, instructs, in accordance with Action 202(iii), the second proxy-agent 122 to establish a connection with the upstream proxy-agent , that is, the first proxy-agent 121, by sending the first instruction indicating the pub_proxyld, the topicld, the flowld, the serverNode, the port of the first proxy-agent 121 it may need to listen to (pub_proxy_listen_port).
  • the second proxy- agent 122 receives the second instruction in agreement with Action 302 and, in agreement with Action 303, it establishes a connection with the first proxy-agent 121.
  • the flow of messages and acknowledgements (ACKs) begins between the second proxy-agent 122 and the first proxy-agent 121.
  • the second proxy-agent 122 may send to the fourth node 415, information confirming the successfully established connection between the first proxy-agent 121 and the second proxy-agent 122, indicating its respective identifiers.
  • the first node 111 via the fourth node 415, updates its own table with the mapping indicated by the second proxy-agent 122, for the topicld.
  • the flow of messages and acknowledgements (ACKs) begins between the publisher node 101 and the first proxy agent 121.
  • the first node 111 instructs, in accordance with Action 202(ii), the subscriber node 102 to connect with and subscribe to the second proxy agent 122, by sending the first instruction indicating the sub_proxyld, the identifier of the second server 132, the sub_proxy_IP, and the sub_proxy_listen_port.
  • the subscriber node 102 establishes a connection with the second proxy-agent 122 and subscribes to the topicld, sub_proxy_IP and the port of the proxy to the subscriber node 102, denoted as sub_proxy_port.
  • the second proxy-agent 122 updates its mapping table for each topicld , by mapping each (sessionld & pub_proxy_port) to the list of subscriber ports subcriber_port1 , subcriber_port2 .
  • the flow of messages and acknowledgements (ACKs) begins between the subscriber node 102 and the second proxy-agent 122.
  • Figure 7 is a schematic representation of some of the actions that may be performed in the communications network 100, according to a non-limiting example of embodiments herein.
  • the top panel depicts further details on how Action 304 may be performed for the initial message flow.
  • the publisher node 101 publishes messages onto the first proxy agent 121 , which the first proxy agent 121 acknowledges at 702.
  • the first proxy agent 121 forwards the published messages to the downstream proxy-agents, the second proxy-agent 122 in this example, which the second proxy-agent 122 acknowledges at 704.
  • the second proxy-agent 122 forwards the messages to the subscriber node 102, which the subscriber node 102 acknowledges at 706.
  • the bottom panel depicts further details on how Action 203 may be performed for the monitoring.
  • the first proxy agent 121 sends a list of entities to be monitored to the second node 112, the monitoring agent in the first server 131.
  • the list may comprise the publd, the pub_proxyld of the entities to monitor.
  • the second node 112 continuously monitors the entities and resources on the server.
  • the second node 112 frequently sends updates of the status about the first server 131 to the first node 111 via the global scheduler 601.
  • the first node 111 receives the information according to Action 203.
  • the process is repeated for the second server 132 and the third node 113, at 710, 711 and 712.
  • the first node 111 receives the information about the second server 132 according to Action 203.
  • Figure 8a is a schematic representation illustrating the dynamic Invocation of proxy- agents and re-establishment of sessions that may be performed in the communications network 100, according to a non-limiting example of embodiments herein.
  • the first node 111 in agreement with Action 203(a) and 203(c), receives information from the second node 112 reporting that it has more downstream proxy-agent/subscribers for a topicld.
  • the first node 111 using the physical topology and in agreement with Action 204, identifies servers, racks, and/or switches with more downstream subscribers.
  • the additional subscriber nodes 150 are located in additional respective servers, here going up to Server-M 801.
  • the first node 111 identifies a potential in-network switch, here the fourth programmable switch 124, intermediate between the affected upstream proxy-agent, here the third proxy-agent 123, and the servers 801, racks, and/or switches with more subscribers 150 .
  • the first node 111 in agreement with Action 205, instantiates the fourth proxy-agent 124 as additional proxy-agent, if not instantiated, in the fourth programmable switch 144, which is a ToR switch.
  • the fourth proxy-agent 124 receives the first instruction from the first node 111 to instantiate, and receives the second instruction according to Action 302 to establish connection with upstream first proxy-agent 121.
  • the second instruction comprises the pub_proxyld, pub_proxy_IP, pub_proxy_port, of the first proxy-agent 121 for a topcild.
  • the fourth proxy-agent 124 then opens a socket port and starts listening on the indicated topicld.
  • the fourth proxy-agent 124 then establishes a session with the upstream proxy-agent, that is, the first proxy agent 121.
  • the flow of messages and acknowledgements begins between the first proxy agent 121 and the fourth proxy- agent 124.
  • the fourth proxy-agent 124 sends further information to the first node 111 to indicate that it has successfully connected to the publisher node 101, indicating its publd, and an identifier of the fourth programmable switch 144, tor_switch_proxy I d .
  • Figure 8b is a continuation of Figure 8a.
  • the first node 111 according to Action 207, rearranges the existing connections between the publisher node 101 and the subscriber node 102, based on the instantiated fourth proxy-agent 124 and/or the removed already instantiated one or more proxy-agents 123
  • the first node 111 instructs each of the first proxy agent 121 and an additional proxy-agent 804 on the Server-M 801 to a) establish session with the fourth proxy-agent 124 by indicating its tor_switch_proxyld, tor_proxy_IP, tor_proxy_port, and topicID, and to b) tear down the old session with the third proxy-agent 123, by indicating its identifier, the pub_proxyld.
  • the second proxy agent 122 establishes a session with the new upstream proxy-agent, the fourth proxy-agent 124.
  • the flow of messages and ACKs between the second proxy agent 122 and the fourth proxy-agent 124 begins.
  • the additional proxy-agent 804 also, in as another example of Action 303, establishes a session with upstream fourth proxy-agent 124, and as a further example of Action 307, the flow of messages and ACKs begins between the additional proxy- agent 804 and the fourth proxy-agent 124.
  • Both of the second proxy-agent 122 and the additional proxy-agent 802 terminate, in agreement with Action 307, their respective old sessions with the first proxy agent 121 , indicated by its pub_proxyld.
  • the publisher node 101 sends messages to the first proxy agent 121 , which it acknowledges at 806.
  • the first proxy agent 121 forwards the messages received to the downstream, here the fourth proxy-agent 124 on the ToR switch, the fourth programmable switch 144.
  • the fourth proxy-agent 124 at 808, forwards the messages received to the downstream proxy-agent, the second proxy-agent 122 on the second server 132.
  • the second proxy-agent 122 sends the messages to the subscriber node 102.
  • the additional proxy-agent 802 on the Server-M 801.
  • the fourth proxy- agent 124 forwards the messages received to the additional downstream proxy-agent, here the additional proxy-agent 802 in the Server-M 801.
  • the additional proxy-agent 802 sends the messages to the additional subscriber nodes 150.
  • Figure 9 is a schematic representation illustrating the identification of proxy-agent failure and recovery mechanism that may be adopted by the first node 111 according to a non-limiting example of embodiments herein.
  • the first node 111 is represented in Figure 9 as the “Controller”.
  • the particular scenario illustrated in Figure 9 considers the failed proxy-agent location, either on a server node, e.g., of the first server 131 and the second server 132, or on a switch, e.g., of the first programmable switch 141 , the second programmable switch 142, and the third programmable switch 143, and performs the recovery mechanism based on it.
  • the first node 111 may try to re-instantiate the proxy-agent on the same node, as a part of determining, in Action 204, whether a new proxy-agent needs to be re instantiated or not. If it is able to re-instantiate the proxy-agent successfully, then the first node 111 may request the existing upstream and downstream proxy-agents to reconnect and establish sessions with the newly instantiated proxy-agent, in accordance with Action 205 and Action 207.
  • the first node 111 may update, at 901, the directory service managed by the fourth node 415 with the new proxy-agent and its corresponding peer session mappings. If the first node 111 is unable to re-instantiate the proxy-agent on the required node after ‘N’ attempts, the first node 111 may start to initiate the recovery mechanism. Based on the type of the node, server or switch, of the failed proxy-agent, the first node 111 may decide, at 902 or 903, the recovery method.
  • the proxy-agent that failed is on a switch, e.g., one of the first programmable switch 141, the second programmable switch 142, and the third programmable switch 143
  • the first node 111 identifies another potential switch, based on upstream and downstream réellewhile sessions and/or subscribers of the failed proxy- agent, instantiates, according to Action 205, an additional proxy-agent on the switch, if not running already as determined according to Action 204, and then requests the upstream and down-stream proxy-agents, according to Action 207, to establish sessions with the newly instantiated proxy-agent and updates its directory mapping with the fourth node.
  • the first node 111 may directly connect the failed proxy-agent’s upstream proxy-agent with the downstream proxy- agent/subscribers. In the worst case, if the first node 111 is unable to find a suitable solution to recover, the last resort actions mentioned in the below paragraph may be applied. If, as determined at 903, the proxy-agent is down on a server, e.g., of the first server 131 and the second server 132, then the first node 111 may, according to Action 207, try to map the subscribers on the affected server to directly re-establish session with suitable upstream proxy-agents. If successful, the first node 111 may, at 901, update the new session details in the directory service at the fourth node 415.
  • the last resort action may be to connect the subscriber(s), e.g., the subscriber node 102, directly to the publisher(s), e.g., the publisher node 101.
  • rerouting the traffic, according to Action 207, across the affected switch may depend on the network deployment in the datacenter.
  • the first node 111 may instantiate, according to Action 205, a proxy- agent on a suitable switch and may reroute, according to Action 207, the flow via the new switch with suitable flow rules.
  • Figure 10 is a schematic representation illustrating a sliding-window mechanism for cache management that may be implemented in Action 305, e.g., to maintain cache state, in the proxy-agent 121, 122, 123, 124, according to a non-limiting example of embodiments herein.
  • the proxy-agent 121, 122, 123, 124 may need to maintain data on what messages may be being delivered to which subscribers.
  • the proxy-agent 121, 122, 123, 124 may use a multiple-sliding-window algorithm for the message caching and delivery.
  • Messages from each publisher, as identified by publisherld, may have a sequence number which may be appended to the end of the corresponding flow-list in ascending order.
  • a sliding window may be maintained for each downstream receiver/subscriber. As the packets are forwarded to a subscriber, the corresponding receiver’s window may expand till the sequence number it has forwarded the message. Once the subscribers acknowledge for the sequence numbers, the corresponding sliding window for the particular publisher and for the particular subscriber may shrink till the sequence number for which the ACK may be received.
  • This sliding-window mechanism may be understood to make the task of discarding the message from the cache easier.
  • a min(windowl ⁇ head ⁇ , window2 ⁇ head ⁇ ...) may provide the minimum sequence number from which the cache messages may be discarded.
  • the same min(window ⁇ head ⁇ ) may provide the information about potential slow-readers.
  • a similar mechanism may be used in other upstream-proxies to cache and forward to downstream proxies. Without explicitly requesting to cache, if the sliding-window is too large for a long time, then the proxy-agent may discard the messages from cache. This may help the proxy- agent 121, 122, 123, 124 running out of cache.
  • the downstream proxy-agent 121, 122, 123, 124 may send a signal to the upstream proxy-agent to start caching the message above the sequence number of a publisherld provided in the control signal packet.
  • the corresponding sliding-window may then be paused and the window ⁇ head] will not be counted for calculation in the upstream proxy-agent.
  • Each message above the requested sequence number may be stored in a designated memory.
  • proxy-agents may transparently abstract the publishers and subscribers communicating with each other. Proxy-agents on in-network switches may be dynamically invoked based on the number of downstream subscribers. Sessions between the proxy- agents may be hierarchically cascaded and re-established to reduce the number of messages. Incoming messages may be cached on the switches on-demand, and the caching logic may be dynamically extended to upstream switches as the buffers in the downstream switches may get depleted.
  • One advantage of embodiments herein is that, as compared to a broker-less Pub-Sub model, the embodiments herein reduce overhead on publishers.
  • embodiments herein lessen the number of messages sent by publisher, and the number of acknowledgements sent back to the publisher.
  • embodiments herein vastly reduce the risk of publisher failure due to buffer depletion.
  • embodiments herein reduce the impact of slow subscribers on the publisher.
  • embodiments herein reduce the latency of message delivery.
  • the proxy- agents may always be provisioned in-line between the publisher and subscriber, thus making packets travel less network hops compared to a brokered Pub-Sub model.
  • the instantiation of proxy-agents reduces the serialization load, that is, sending to different subscribers of the topic, in a sequence, at the publisher. This load may be understood to get distributed between proxy(leaf) nodes, thus, increasing the likelihood of messages reaching the subscriber early on a topology with a large number of subscribers.
  • a further advantage of embodiments herein is that the retransmission of messages to slow subscribers on their recovery is generally faster - as compared to a broker-less or broker Pub-Sub model. That is because, for slow readers, messages may be cached on proxy- agents) closest to the subscribers, as opposed to caching in the publisher or a designated broker.
  • brokers typically run at static locations, e.g., servers, which may not be adaptive to changes in network or subscriber’s location.
  • proxy-agents it may be possible to orchestrate and dynamically place proxy-agents at appropriate locations with respect to changes in the communications network and the subscribers count and location.
  • using an in-band telemetry framework to communicate between the switches may be able to provide low-overhead control plane signalling.
  • hierarchical in-network caching may enable to extend the caching space into the network domain, and this may increase overall caching capabilities.
  • Embodiments herein may be understood to be transparent to the publishers and subscribers.
  • FIG 11 depicts two different examples in panels a) and b), respectively, of the arrangement that the first node 111 may comprise.
  • the first node 111 may comprise the following arrangement depicted in Figure 11a.
  • the first node 111 may be understood to be for handling communications between the publisher node 101 and the subscriber node 102 over the communications network 100.
  • the second instruction may be configured to comprise the publd for the publisher node 101.
  • the first node 111 is configured to perform the instantiating of Action 201, e.g., by means of an instantiating unit 1101 within the first node 111, configured to instantiate: a) the first proxy-agent 121 of the publisher node 101 in-line between the publisher node 101 and the subscriber node 102, and b) the second proxy-agent 122 of the subscriber node 102 in-line between the publisher node 101 and the subscriber node 102.
  • the first node 111 is further configured to perform the instructing of Action 202, e.g., by means of an instructing unit 1102 within the first node 111, configured to instruct: i) the first proxy-agent 121 to connect with and subscribe to the publisher node 101, ii) the subscriber node 102 to connect with and subscribe to the second proxy-agent 122, and iii) at least one of the first proxy-agent 121 and the second proxy-agent 122 to establish a connection with each other, thereby the first node 111 being configured to enable communication exchanges between the publisher node 101 and the subscriber node 102 via the first proxy-agent 121 and the second proxy-agent 122.
  • the first proxy-agent 121 may be configured to be instantiated on: i) the same first server 131 as the publisher node 101, ii) the first programmable switch 141 on the first server 131, or iii) the first programmable switch 141 in-line between the publisher node 101 and the subscriber node 102
  • the second proxy-agent 122 may be configured to be instantiated on: i) the same second server 132 as the subscriber node 102, ii) the second programmable switch 142 on the second server 132, or iii) the second programmable switch 142 in-line between the publisher node 101 and the subscriber node 102.
  • the first node 111 may be further configured to perform the receiving of Action 203, e.g., by means of a receiving unit 1103 within the first node 111, configured to receive the information on at least one of: a) the first traffic at the first proxy-agent 121 from at least one of: the second node 112 configured to monitor the publisher node 101, and the first proxy-agent 121, b) the second traffic at the second proxy-agent 122 from at least one or: the third node 113 configured to monitor the subscriber node 102, and the second proxy-agent 122, c) the number of subscriber nodes 150 to the publisher node 101, d) the proxy-agent failure, e) the switch failure, f) the forward and cache request from a proxy- agent 121, 122, 123 in-line between the publisher node 101 and the subscriber node 102.
  • a receiving unit 1103 within the first node 111, configured to receive the information on at least one of: a) the first
  • the first node 111 may be further configured to perform the determining of Action 204, e.g., by means of a determining unit 1104 within the first node 111, configured to determine, based on the information configured to be received, whether or not to at least one of: a) instantiate the one or more additional proxy-agents, b) re- instantiate the failed proxy-agent, and c) remove the already instantiated one or more proxy-agents, thereby the first node 111 being configured to adapt the number of proxy-agents to traffic changes.
  • the first node 111 further may be further configured to one or more of the following three optional actions.
  • the first node 111 may be further configured to perform the instantiating of Action 205, e.g., by means of the instantiating unit 1101 within the first node 111, configured to instantiate, the one or more additional proxy-agents 124 or re-instantiate the failed proxy-agent.
  • the first node 111 may be further configured to perform the removing of Action 206, e.g., by means of a removing unit 1105 within the first node 111, configured to remove one or more of the already instantiated one or more proxy-agents 123.
  • the first node 111 may be further configured to perform the rearranging of Action 207, e.g., by means of a rearranging unit 1106 within the first node 111, configured to rearrange the existing connections between the publisher node 101 and the subscriber node 102, based on the one or more additional proxy-agents 124 configured to be the instantiated and/or the already instantiated one or more proxy-agents 123 configured to be removed.
  • the first node 111 may be configured to enable communication exchanges between the publisher node 101 and the subscriber node 102 via the first proxy-agent 121 and the second proxy-agent 122, via the one or more additional proxy-agents 124 and/or with the proxy-agents configured to be rearranged.
  • the embodiments herein in the first node 111 may be implemented through one or more processors, such as a processor 1107 in the first node 111 depicted in Figure 110a, together with computer program code for performing the functions and actions of the embodiments herein.
  • a processor as used herein, may be understood to be a hardware component.
  • the program code mentioned above may also be provided as a computer program product, for instance in the form of a data carrier carrying computer program code for performing the embodiments herein when being loaded into the first node 111.
  • One such carrier may be in the form of a CD ROM disc. It is however feasible with other data carriers such as a memory stick.
  • the computer program code may furthermore be provided as pure program code on a server and downloaded to the first node 111.
  • the first node 111 may further comprise a memory 1108 comprising one or more memory units.
  • the memory 1108 is arranged to be used to store obtained information, store data, configurations, schedulings, and applications etc. to perform the methods herein when being executed in the first node 111.
  • the first node 111 may receive information from, e.g., the publisher node 101, the subscriber node 102, the second node 112, the third node 113, the fourth node 114, the fourth node 115, the first proxy-agent 121 , the second proxy-agent 122, the third proxy-agent 123, the fourth proxy-agent 124, the additional proxy-agents, the first server 131, the second server 132, the first programmable switch 141, the second programmable switch 142, the third programmable switch 143, the fourth programmable switch 144, and/or, any other nodes, servers, proxy-agents or programmable switches, through a receiving port 1109.
  • the receiving port 1109 may be, for example, connected to one or more antennas in first node 111.
  • the first node 111 may receive information from another structure in the communications network 100 through the receiving port 1109. Since the receiving port 1109 may be in communication with the processor 1107, the receiving port 1109 may then send the received information to the processor 1107.
  • the receiving port 1109 may also be configured to receive other information.
  • the processor 1107 in the first node 111 may be further configured to transmit or send information to e.g., the publisher node 101, the subscriber node 102, the second node 112, the third node 113, the fourth node 114, the fourth node 115, the first proxy-agent 121, the second proxy-agent 122, the third proxy-agent 123, the fourth proxy-agent 124, the additional proxy- agents, the first server 131, the second server 132, the first programmable switch 141, the second programmable switch 142, the third programmable switch 143, the fourth programmable switch 144, and/or, any other nodes, servers, proxy-agents or programmable switches, and/or or another structure in the communications network 100, through a sending port 1110, which may be in communication with the processor 1107, and the memory 1108.
  • a sending port 1110 which may be in communication with the processor 1107, and the memory 1108.
  • the units 1101-1106 described above may refer to a combination of analog and digital circuits, and/or one or more processors configured with software and/or firmware, e.g., stored in memory, that, when executed by the one or more processors such as the processor 1107, perform as described above.
  • processors as well as the other digital hardware, may be included in a single Application-Specific Integrated Circuit (ASIC), or several processors and various digital hardware may be distributed among several separate components, whether individually packaged or assembled into a System-on-a-Chip (SoC).
  • ASIC Application-Specific Integrated Circuit
  • SoC System-on-a-Chip
  • the different units 1101-1106 described above may be implemented as one or more applications running on one or more processors such as the processor 1107.
  • the methods according to the embodiments described herein for the first node 111 may be respectively implemented by means of a computer program 1111 product, comprising instructions, i.e. , software code portions, which, when executed on at least one processor 1107, cause the at least one processor 1107 to carry out the actions described herein, as performed by the first node 111.
  • the computer program 1111 product may be stored on a computer-readable storage medium 1112.
  • the computer-readable storage medium 1112, having stored thereon the computer program 1111 may comprise instructions which, when executed on at least one processor 1107, cause the at least one processor 1107 to carry out the actions described herein, as performed by the first node 111.
  • the computer-readable storage medium 1112 may be a non-transitory computer-readable storage medium, such as a CD ROM disc, or a memory stick.
  • the computer program 1111 product may be stored on a carrier containing the computer program 1111 just described, wherein the carrier is one of an electronic signal, optical signal, radio signal, or the computer-readable storage medium 1112, as described above.
  • the first node 111 may comprise a communication interface configured to facilitate, or an interface unit to facilitate, communications between the first node 111 and other nodes or devices, e.g., the publisher node 101, the subscriber node 102, the second node 112, the third node 113, the fourth node 114, the fourth node 115, the first proxy-agent 121, the second proxy-agent 122, the third proxy-agent 123, the fourth proxy-agent 124, the additional proxy- agents, the first server 131, the second server 132, the first programmable switch 141, the second programmable switch 142, the third programmable switch 143, the fourth programmable switch 144, and/or, any other nodes, servers, proxy-agents or programmable switches, and/or or another structure in the communications network 100.
  • the interface may, for example, include a transceiver configured to transmit and receive radio signals over an air interface in accordance with a suitable standard.
  • the first node 111 may comprise the following arrangement depicted in Figure 11b
  • the first node 111 may comprise a processing circuitry 1107, e.g., one or more processors such as the processor 1107, in the first node 111 and the memory 1108.
  • the first node 111 may also comprise a radio circuitry 1113, which may comprise e.g., the receiving port 1109 and the sending port 1110.
  • the processing circuitry 1107 may be configured to, or operable to, perform the method actions according to Figure 2, and/or any of Figures 4-9, in a similar manner as that described in relation to Figure 11a.
  • the radio circuitry 1113 may be configured to set up and maintain at least a wireless connection with the publisher node 101, the subscriber node 102, the second node 112, the third node 113, the fourth node 114, the fourth node 115, the first proxy-agent 121 , the second proxy-agent 122, the third proxy-agent 123, the fourth proxy-agent 124, the additional proxy-agents, the first server 131, the second server 132, the first programmable switch 141, the second programmable switch 142, the third programmable switch 143, the fourth programmable switch 144, and/or, any other nodes, servers, proxy-agents or programmable switches, and/or or another structure in the communications network 100. Circuitry may be understood herein as a hardware component.
  • inventions herein also relate to the first node 111 operative to operate in the communications network 100.
  • the first node 111 may comprise the processing circuitry 1107 and the memory 1108, said memory 1108 containing instructions executable by said processing circuitry 1107, whereby the first node 111 is further operative to perform the actions described herein in relation to the first node 111, e.g., in Figure 2, and/or any of Figures 4-9.
  • Figure 12 depicts two different examples in panels a) and b), respectively, of the arrangement that the proxy-agent 121, 122, 123, 124, may comprise.
  • the proxy-agent 121, 122, 123, 124 may comprise the following arrangement depicted in Figure 12a.
  • the proxy-agent 121, 122, 123, 124 may be understood to be for handling communications between the publisher node 101 and the subscriber node 102.
  • the proxy- agent 121, 122,123, 124, the publisher node 101 and the subscriber node 102 may be configured to operate in the communications network 100.
  • the second instruction may be configured to comprise the publd for the publisher node 101.
  • the proxy-agent 121, 122, 123, 124 is configured to perform the receiving of Action 301, e.g. by means of a receiving unit 1201 within the proxy-agent 121, 122, 123, 124, configured to, receive the first instruction from the first node 111 configured to operate in the communications network 100 to instantiate as one of: a) the first proxy-agent 121 of the publisher node 101 in-line between the publisher node 101 and the subscriber node 102, b) the second proxy-agent 122 of the subscriber node 102 in-line between the publisher node 101 and the subscriber node 102, and c) the third proxy-agent 123 in-line between the publisher node 101 and the subscriber node 102.
  • the proxy-agent 121, 122, 123, 124 is also configured to perform the receiving of Action 302, e.g., by means of the receiving unit 1201 within the proxy-agent 121, 122, 123, 124, configured to, receive the second instruction from the first node 111 to one of: i) as first proxy- agent 121, to connect with and subscribe to the publisher node 101, ii) as first proxy-agent 121 or second proxy-agent 122, to establish a connection with each other, thereby being configured to enable communication exchanges between the publisher node 101 and the subscriber node 102 via the first proxy-agent 121 and the second proxy-agent 122, and iii) as the third proxy-agent 123, to connect with one of: the first proxy-agent 121, the second proxy- agent 122 and the fourth proxy-agent 124 in-line between the publisher node 101 and the subscriber node 102.
  • the proxy-agent 121, 122, 123, 124 is further configured to perform the establishing of Action 303, e.g., by means of an establishing unit 1202 within the proxy-agent 121, 122, 123, 124, configured to, establish the connection with one of: i) as first proxy-agent 121 with the second proxy-agent 122 and/or with the publisher node 101, ii) as second proxy-agent 122, with the first proxy-agent 121, and iii) as a third proxy-agent 123, with one of: the first proxy- agent 121, the second proxy-agent 122 and the fourth proxy-agent 124 in-line between the publisher node 101 and the subscriber node 102.
  • the proxy-agent 121, 122, 123, 124 is further configured to perform the establishing of Action 304, e.g., by means of an exchanging unit 1203 within the proxy-agent 121, 122, 123, 124, configured to, exchange communications with at least one of: i) as first proxy-agent 121, with the second proxy-agent 122 and the publisher node 101, ii) as second proxy-agent 122, with the first proxy-agent 121 and the subscriber node 102, and c) as the third proxy-agent 123, with one of: the first proxy-agent 121, the second proxy-agent 122 and the fourth proxy- agent 124.
  • the proxy-agent 121, 122 may be configured to be instantiated in one of: a) as first proxy-agent 121 on: i) the same second server 132 as the publisher node 101, ii) the first programmable switch 141 on the first server 131, or iii) the first programmable switch 141 in-line between the publisher node 101 and the subscriber node 102, b) as the second proxy-agent 122 on: i) the same second server 132 as the subscriber node 102, ii) the second programmable 142 switch comprised on the second server 132, or iii) the second programmable switch 142 in-line between the publisher node 101 and the subscriber node
  • the proxy-agent 121, 122, 123, 124 may be further configured to perform the caching of Action 305, e.g., by means of a caching unit 1204 within the proxy- agent 121, 122, 123, 124, configured to, cache undelivered messages to subscribers.
  • the proxy-agent 121, 122, 123, 124 may be further configured to perform the rearranging of Action 1206, e.g., by means of a rearranging unit
  • the proxy-agent 121, 122, 123, 124 may be further configured to, after determining that availability of the cache comprised in the proxy-agent 121, 122, 123 is below the threshold, perform the sending of Action 307, e.g., by means of a sending unit
  • proxy-agent 121, 122, 123, 124 configured to, send the request to one of: the first node 111 and another proxy-agent in-line between the publisher node 101 and the subscriber node 102 to forward and cache the one or more undelivered messages to the subscribers.
  • the embodiments herein in the proxy-agent 121, 122, 123, 124 may be implemented through one or more processors, such as a processor 1207 in the proxy-agent 121, 122, 123, 124 depicted in Figure 12a, together with computer program code for performing the functions and actions of the embodiments herein.
  • a processor as used herein, may be understood to be a hardware component.
  • the program code mentioned above may also be provided as a computer program product, for instance in the form of a data carrier carrying computer program code for performing the embodiments herein when being loaded into the proxy-agent 121, 122, 123, 124.
  • One such carrier may be in the form of a CD ROM disc. It is however feasible with other data carriers such as a memory stick.
  • the computer program code may furthermore be provided as pure program code on a server and downloaded to the proxy-agent 121, 122, 123, 124.
  • the proxy-agent 121, 122, 123, 124 may further comprise a memory 1208 comprising one or more memory units.
  • the memory 1208 is arranged to be used to store obtained information, store data, configurations, schedulings, and applications etc. to perform the methods herein when being executed in the proxy-agent 121, 122, 123, 124.
  • the proxy-agent 121, 122, 123, 124 may receive information from, e.g., the publisher node 101, the subscriber node 102, the first node 111 , the second node 112, the third node 113, the fourth node 114, the fourth node 115, the first proxy-agent 121 , the second proxy-agent 122, the third proxy-agent 123, the fourth proxy-agent 124, the additional proxy-agents, the first server 131, the second server 132, the first programmable switch 141, the second programmable switch 142, the third programmable switch 143, the fourth programmable switch 144, and/or, any other nodes, servers, proxy-agents or programmable switches, in the communications network 100, through a receiving port 1209.
  • the receiving port 1209 may be, for example, connected to one or more antennas in proxy-agent 121, 122, 123, 124.
  • the proxy-agent 121, 122, 123, 124 may receive information from another structure in the communications network 120 through the receiving port 1209. Since the receiving port 1209 may be in communication with the processor 1207, the receiving port 1209 may then send the received information to the processor 1207.
  • the receiving port 1209 may also be configured to receive other information.
  • the processor 1207 in the proxy-agent 121, 122, 123, 124 may be further configured to transmit or send information to e.g., the publisher node 101, the subscriber node 102, the first node 111 , the second node 112, the third node 113, the fourth node 114, the fourth node 115, the first proxy-agent 121, the second proxy-agent 122, the third proxy-agent 123, the fourth proxy-agent 124, the additional proxy-agents, the first server 131, the second server 132, the first programmable switch 141, the second programmable switch 142, the third programmable switch 143, the fourth programmable switch 144, and/or, any other nodes, servers, proxy- agents or programmable switches, and/or or another structure in the communications network 100, through a sending port 1210, which may be in communication with the processor 1207, and the memory 1208.
  • a sending port 1210 which may be in communication with the processor 1207, and
  • the units 1201-1206 described above may refer to a combination of analog and digital circuits, and/or one or more processors configured with software and/or firmware, e.g., stored in memory, that, when executed by the one or more processors such as the processor 1207, perform as described above.
  • processors as well as the other digital hardware, may be included in a single Application-Specific Integrated Circuit (ASIC), or several processors and various digital hardware may be distributed among several separate components, whether individually packaged or assembled into a System-on-a-Chip (SoC).
  • ASIC Application-Specific Integrated Circuit
  • SoC System-on-a-Chip
  • the different units 1201-1206 described above may be implemented as one or more applications running on one or more processors such as the processor 1207.
  • the methods according to the embodiments described herein for the proxy-agent 121, 122, 123, 124 may be respectively implemented by means of a computer program 1211 product, comprising instructions, i.e. , software code portions, which, when executed on at least one processor 1207, cause the at least one processor 1207 to carry out the actions described herein, as performed by the proxy-agent 121, 122, 123, 124.
  • the computer program 1211 product may be stored on a computer-readable storage medium 1212.
  • the computer- readable storage medium 1212 having stored thereon the computer program 1211, may comprise instructions which, when executed on at least one processor 1207, cause the at least one processor 1207 to carry out the actions described herein, as performed by the proxy-agent 121, 122, 123, 124.
  • the computer-readable storage medium 1212 may be a non-transitory computer-readable storage medium, such as a CD ROM disc, or a memory stick.
  • the computer program 1211 product may be stored on a carrier containing the computer program 1211 just described, wherein the carrier is one of an electronic signal, optical signal, radio signal, or the computer-readable storage medium 1212, as described above.
  • the proxy-agent 121, 122, 123, 124 may comprise a communication interface configured to facilitate, or an interface unit to facilitate, communications between the proxy-agent 121, 122, 123, 124 and other nodes or devices, e.g., the network node 114, the second node 112, the third node 113, and/or, any other nodes in the plurality of nodes 112, any of the devices in the respective plurality of devices 170 and/or any node in the cloud 120, and/or or another structure in the communications network 120.
  • the interface may, for example, include a transceiver configured to transmit and receive radio signals over an air interface in accordance with a suitable standard.
  • the proxy-agent 121, 122, 123, 124 may comprise the following arrangement depicted in Figure 12b.
  • the proxy-agent 121, 122, 123, 124 may comprise a processing circuitry 1207, e.g., one or more processors such as the processor 1207, in the proxy-agent 121, 122, 123, 124 and the memory 1208.
  • the proxy-agent 121, 122, 123, 124 may also comprise a radio circuitry 1213, which may comprise e.g., the receiving port 1209 and the sending port 1210.
  • the processing circuitry 1207 may be configured to, or operable to, perform the method actions according to Figure 3, and/or any of Figures 4-10, in a similar manner as that described in relation to Figure 12a.
  • the radio circuitry 1213 may be configured to set up and maintain at least a wireless connection with the publisher node 101 , the subscriber node 102, the first node 111 , the second node 112, the third node 113, the fourth node 114, the fourth node 115, the first proxy-agent 121, the second proxy-agent 122, the third proxy-agent 123, the fourth proxy-agent 124, the additional proxy-agents, the first server 131, the second server 132, the first programmable switch 141, the second programmable switch 142, the third programmable switch 143, the fourth programmable switch 144, and/or, any other nodes, servers, proxy-agents or programmable switches, and/or or another structure in the communications network 100. Circuitry may be understood here
  • embodiments herein also relate to the proxy-agent 121, 122, 123, 124 operative to operate in the communications network 120.
  • the proxy-agent 121, 122, 123, 124 may comprise the processing circuitry 1207 and the memory 1208, said memory 1208 containing instructions executable by said processing circuitry 1207, whereby the proxy-agent 121, 122,
  • 123, 124 is further operative to perform the actions described herein in relation to the proxy- agent 121, 122, 123, 124, e.g., in Figure 3, and/or any of Figures 4-10.
  • Figure 13 depicts two different examples in panels a) and b), respectively, of the arrangement that the programmable switch 141, 142, 143, 144, may comprise.
  • the programmable switch 141, 142, 143, 144 may comprise the following arrangement depicted in Figure 13a.
  • the programmable switch 141, 142, 143, 144 may be understood to be for handling communications between the publisher node 101 and the subscriber node 102.
  • the programmable switch 141, 142, 143, 144 comprises the proxy-agent 121, 122, 123,
  • the embodiments herein in the programmable switch 141, 142, 143, 144 may be implemented through one or more processors, such as a processor 1307 in the programmable switch 141, 142, 143, 144 depicted in Figure 13a, together with computer program code for performing the functions and actions of the embodiments herein.
  • a processor as used herein, may be understood to be a hardware component.
  • the program code mentioned above may also be provided as a computer program product, for instance in the form of a data carrier carrying computer program code for performing the embodiments herein when being loaded into the programmable switch 141, 142, 143, 144.
  • One such carrier may be in the form of a CD ROM disc. It is however feasible with other data carriers such as a memory stick.
  • the computer program code may furthermore be provided as pure program code on a server and downloaded to the programmable switch 141, 142, 143, 144.
  • the programmable switch 141, 142, 143, 144 may further comprise a memory 1308 comprising one or more memory units.
  • the memory 1308 is arranged to be used to store obtained information, store data, configurations, schedulings, and applications etc. to perform the methods herein when being executed in the programmable switch 141, 142, 143, 144.
  • the programmable switch 141, 142, 143, 144 may receive information from, e.g., the publisher node 101, the subscriber node 102, the first node 111 , the second node 112, the third node 113, the fourth node 114, the fourth node 115, the first proxy- agent 121, the second proxy-agent 122, the third proxy-agent 123, the fourth proxy-agent 124, the additional proxy-agents, the first server 131, the second server 132, the first programmable switch 141, the second programmable switch 142, the third programmable switch 143, the fourth programmable switch 144, and/or, any other nodes, servers, proxy-agents or programmable switches, in the communications network 100, through a receiving port 1309.
  • the receiving port 1309 may be, for example, connected to one or more antennas in programmable switch 141, 142, 143, 144.
  • the programmable switch 141, 142, 143, 144 may receive information from another structure in the communications network 100 through the receiving port 1309. Since the receiving port 1309 may be in communication with the processor 1307, the receiving port 1309 may then send the received information to the processor 1307.
  • the receiving port 1309 may also be configured to receive other information.
  • the processor 1307 in the programmable switch 141, 142, 143, 144 may be further configured to transmit or send information to e.g., the publisher node 101, the subscriber node 102, the first node 111 , the second node 112, the third node 113, the fourth node 114, the fourth node 115, the first proxy-agent 121, the second proxy-agent 122, the third proxy-agent 123, the fourth proxy-agent 124, the additional proxy-agents, the first server 131, the second server 132, the first programmable switch 141, the second programmable switch 142, the third programmable switch 143, the fourth programmable switch 144, and/or, any other nodes, servers, proxy-agents or programmable switches, and/or or another structure in the communications network 100, through a sending port 1310, which may be in communication with the processor 1307, and the memory 1308.
  • a sending port 1310 which may be in communication with the processor 1307
  • the units 1201-1206 described above may refer to a combination of analog and digital circuits, and/or one or more processors configured with software and/or firmware, e.g., stored in memory, that, when executed by the one or more processors such as the processor 1307, perform as described above.
  • processors as well as the other digital hardware, may be included in a single Application-Specific Integrated Circuit (ASIC), or several processors and various digital hardware may be distributed among several separate components, whether individually packaged or assembled into a System-on-a-Chip (SoC).
  • ASIC Application-Specific Integrated Circuit
  • SoC System-on-a-Chip
  • the different units 1201-1206 described above may be implemented as one or more applications running on one or more processors such as the processor 1307.
  • the methods according to the embodiments described herein for the programmable switch 141, 142, 143, 144 may be respectively implemented by means of a computer program 1311 product, comprising instructions, i.e. , software code portions, which, when executed on at least one processor 1307, cause the at least one processor 1307 to carry out the actions described herein, as performed by the proxy-agent 121, 122, 123, 124.
  • the computer program 1311 product may be stored on a computer-readable storage medium 1312.
  • the computer-readable storage medium 1312 having stored thereon the computer program 1311, may comprise instructions which, when executed on at least one processor 1307, cause the at least one processor 1307 to carry out the actions described herein, as performed by the programmable switch 141, 142, 143, 144.
  • the computer-readable storage medium 1312 may be a non-transitory computer-readable storage medium, such as a CD ROM disc, or a memory stick.
  • the computer program 1311 product may be stored on a carrier containing the computer program 1311 just described, wherein the carrier is one of an electronic signal, optical signal, radio signal, or the computer-readable storage medium 1312, as described above.
  • the programmable switch 141, 142, 143, 144 may comprise a communication interface configured to facilitate, or an interface unit to facilitate, communications between the programmable switch 141, 142, 143, 144 and other nodes or devices, e.g., the network node 114, the second node 112, the third node 113, and/or, any other nodes in the plurality of nodes 112, any of the devices in the respective plurality of devices 170 and/or any node in the cloud 130, and/or or another structure in the communications network 100.
  • the interface may, for example, include a transceiver configured to transmit and receive radio signals over an air interface in accordance with a suitable standard.
  • the programmable switch 141, 142, 143, 144 may comprise the following arrangement depicted in Figure 13b.
  • the programmable switch 141, 142, 143, 144 may comprise a processing circuitry 1307, e.g., one or more processors such as the processor 1307, in the programmable switch 141, 142, 143, 144 and the memory 1308.
  • the programmable switch 141, 142, 143, 144 may also comprise a radio circuitry 1312, which may comprise e.g., the receiving port 1309 and the sending port 1310.
  • the processing circuitry 1307 may be configured to, or operable to, perform the method actions according to Figure 3, and/or any of Figures 4-10, in a similar manner as that described in relation to Figure 13a.
  • the radio circuitry 1312 may be configured to set up and maintain at least a wireless connection with the publisher node 101, the subscriber node 102, the first node 111 , the second node 112, the third node 113, the fourth node 114, the fourth node 115, the first proxy- agent 121, the second proxy-agent 122, the third proxy-agent 123, the fourth proxy-agent 124, the additional proxy-agents, the first server 131, the second server 132, the first programmable switch 141, the second programmable switch 142, the third programmable switch 143, the fourth programmable switch 144, and/or, any other nodes, servers, proxy-agents or programmable switches, and/or or another structure in the communications network 100. Circuitry may be understood herein as
  • embodiments herein also relate to the programmable switch 141, 142, 143, 144 operative to operate in the communications network 100.
  • the programmable switch 141, 142, 143, 144 may comprise the proxy-agent 121, 122, 123, 124, the processing circuitry 1307 and the memory 1308, said memory 1308 containing instructions executable by said processing circuitry 1307, whereby the programmable switch 141, 142, 143, 144 is further operative to perform the actions described herein in relation to the proxy-agent 121, 122, 123, 124, e.g., in Figure 3, and/or any of Figures 4-10.
  • the expression “at least one of:” followed by a list of alternatives separated by commas, and wherein the last alternative is preceded by the “and” term, may be understood to mean that only one of the list of alternatives may apply, more than one of the list of alternatives may apply or all of the list of alternatives may apply.
  • This expression may be understood to be equivalent to the expression “at least one of:” followed by a list of alternatives separated by commas, and wherein the last alternative is preceded by the “or” term.
  • Any of the terms processor and circuitry may be understood herein as a hardware component.

Abstract

A method performed by a first node (111). The method is for handling communications between a publisher node (101) and a subscriber node (102) over a communications network (100). The first node (111), instantiates (201): a) a first proxy-agent (121) of the publisher node (101) in-line between the publisher node (101) and the subscriber node (102), and b) a second proxy-agent (122) of the subscriber node (102) in-line between the publisher node (101) and the subscriber node (102). The first node (111) also instructs (202): i) the first proxy-agent (121) to connect with and subscribe to the publisher node (101), ii) the subscriber node (102) to connect with and subscribe to the second proxy-agent (122), and iii) at least one of the first proxy-agent (121) and the second proxy-agent (122) to establish a connection with each other. Thereby, the first node (111) enables communication exchanges between the nodes (101, 102) via the proxy-agents (121, 122).

Description

FIRST NODE, PROXY-AGENT, AND METHODS PERFORMED THEREBY FOR HANDLING COMMUNICATIONS BETWEEN A PUBLISHER NODE AND A SUBSCRIBER NODE
TECHNICAL FIELD
The present disclosure relates generally to a first node, and methods performed thereby, for handling communications between a publisher node and a subscriber node. The present disclosure also relates generally to a proxy-agent, and methods performed thereby, for handling communications between a publisher node and a subscriber node. The present disclosure further relates generally to a programmable switch comprising the proxy-agent.
BACKGROUND
Computer systems in a communications network may comprise one or more nodes, which may also be referred to simply as nodes. A node may comprise one or more processors which, together with computer program code may perform different functions and actions, a memory, a receiving port and a sending port. A node may be, for example, a server. Nodes may perform their functions entirely on the cloud.
Publisher-subscriber messaging
In computer networks, a publisher-subscriber system may be understood as a communication system whereby a node willing to send messages, also known as a publisher, to one or more specific receivers, also known as subscribers, instead of sending the messages directly to the subscribers, may categorize the messages into classes without knowing which subscribers there may be, if any. Similarly, subscribers may receive one or more classes of messages they may declare an interest in receiving, and only receive messages in those classes of interest, without knowing who may be the publishers, if any.
Typical publisher-subscriber messaging systems may be brokered. That is, an intermediary node or a set of nodes, the broker, may mediate between publisher nodes and subscriber nodes, and manage the delivery of the messages to the subscribers. A message broker may be understood to offer one or more features, such as message persistence and guaranteed message delivery to subscribers. Brokerage services may be, e.g., public cloud providers such as AWS SQS, SNS or Google Pub/Sub, as well as others such as Apache Kafka, Apache Pulsar, etc.
Another approach to publisher-subscriber messaging is using broker-less solutions using libraries such as ZeroMQ, which aim to provide low-latency messaging. Broker-less messaging solutions may be understood to offer the model of peer-to-peer, or direct publisher- to-subscriber, messaging without involving an intermediary broker. When compared to broker-less messaging, the brokered approach adds extra latency owing to the broker overhead, which may be understood to include extra network hops through the broker, which may not necessarily be in the optimal publisher-subscriber network path.
On the other hand, the broker-less approach puts extra requirements on the publisher and subscriber in order to provide similar guarantees. Some of such extra requirements may be: message persistence on a publisher until the subscribers receive the messages, tighter coupling between publishers and subscribers, and direct network connections between them leading to resource load, buffering of messages at the subscriber end if the subscriber is slower than the publisher, and retry overhead on the publisher or the subscriber for guaranteed message delivery.
These overheads compound with increasingly complex networks of publishers and subscribers, and variability in messaging traffic volume, thereby leading to resource exhaustion issues on publishers and subscribers.
SUMMARY
It is an object of embodiments herein to improve the handling of communications between a publisher node and a subscriber node over a communications network.
According to a first aspect of embodiments herein, the object is achieved by a method performed by a first node. The method is for handling communications between a publisher node and a subscriber node over a communications network. The first node instantiates a) a first proxy-agent of the publisher node in-line between the publisher node and the subscriber node, and b) a second proxy-agent of the subscriber node in-line between the publisher node and the subscriber node. The first node also instructs i) the first proxy-agent to connect with and subscribe to the publisher node, ii) the subscriber node to connect with and subscribe to the second proxy-agent, and iii) at least one of the first proxy-agent and the second proxy- agent to establish a connection with each other. Thereby, the first node enables communication exchanges between the publisher node and the subscriber node via the first proxy-agent and the second proxy-agent.
According to a second aspect of embodiments herein, the object is achieved by a method performed by a proxy-agent. The method is for handling communications between the publisher node and the subscriber node. The proxy-agent, the publisher node and the subscriber node operate in the communications network. The proxy-agent receives a first instruction from the first node operating in the communications network to instantiate as one of: a) the first proxy-agent of the publisher node in-line between the publisher node and the subscriber node, b) the second proxy-agent of the subscriber node in-line between the publisher node and the subscriber node, and c) a third proxy-agent in-line between the publisher node and the subscriber node. The proxy-agent receives a second instruction from the first node to one of: i) as first proxy-agent, to connect with and subscribe to the publisher node, ii) as first proxy-agent or second proxy-agent, to establish a connection with each other, thereby enabling communication exchanges between the publisher node and the subscriber node via the first proxy-agent and the second proxy-agent, and c) as third proxy-agent, to connect with one of: the first proxy-agent, the second proxy-agent and a fourth proxy-agent in line between the publisher node and the subscriber node.
According to a third aspect of embodiments herein, the object is achieved by the first node, for handling communications between the publisher node and the subscriber node over the communications network. The first node is configured to instantiate: a) the first proxy- agent of the publisher node in-line between the publisher node and the subscriber node, and b) the second proxy-agent of the subscriber node in-line between the publisher node and the subscriber node. The first node then instructs: i) the first proxy-agent to connect with and subscribe to the publisher node, ii) the subscriber node to connect with and subscribe to the second proxy-agent, and iii) at least one of the first proxy-agent and the second proxy-agent to establish a connection with each other. Thereby, the first node is configured to enable communication exchanges between the publisher node and the subscriber node via the first proxy-agent and the second proxy-agent.
According to a fourth aspect of embodiments herein, the object is achieved by the proxy- agent. The proxy-agent is for handling communications between the publisher node and the subscriber node. The proxy-agent, the publisher node and the subscriber node are configured to operate in the communications network. The proxy-agent is further configured to receive the first instruction from the first node configured to operate in the communications network to instantiate as one of: a) the first proxy-agent of the publisher node in-line between the publisher node and the subscriber node, b) the second proxy-agent of the subscriber node in line between the publisher node and the subscriber node, and the third proxy-agent in-line between the publisher node and the subscriber node. The proxy-agent is further configured to receive the second instruction from the first node to one of: i) as first proxy-agent, to connect with and subscribe to the publisher node, ii) as first proxy-agent or second proxy-agent, to establish a connection with each other, thereby being configured to enable communication exchanges between the publisher node and the subscriber node via the first proxy-agent and the second proxy-agent, and iii) as the third proxy-agent, to connect with one of: the first proxy- agent, the second proxy-agent and the fourth proxy-agent in-line between the publisher node and the subscriber node. The proxy-agent is also configured to establish a connection with one of: i) as first proxy-agent with the second proxy-agent and/or with the publisher node, ii) as second proxy-agent, with the first proxy-agent, and iii) as the third proxy-agent, with one of: the first proxy-agent, the second proxy-agent and the fourth proxy-agent in-line between the publisher node and the subscriber node. The proxy-agent is further configured to exchange communications with at least one of: i) as first proxy-agent, with the second proxy-agent and the publisher node, ii) as second proxy-agent, with the first proxy-agent and the subscriber node, and iii) as the third proxy-agent, with one of: the first proxy-agent, the second proxy- agent and the fourth proxy-agent.
According to a fifth aspect of embodiments herein, the object is achieved by a programmable switch comprising the proxy-agent.
By the first node instantiating the first proxy-agent, and the second proxy-agent and instructing the first proxy-agent to connect with and subscribe to the publisher node, the subscriber node to connect with and subscribe to the second proxy-agent, and at least one of the first proxy-agent and the second proxy-agent to connect with each other, the first node enables communication exchanges between the publisher node and the subscriber node via the first proxy-agent and the second proxy-agent. By the first node enabling such an architecture, the proxy-agents may now handle the messages sent by publisher, and the number of acknowledgements sent back to the publisher. Hence, the number of messages sent by publisher, and the number of acknowledgements sent back to the publisher are enabled to be reduced. Furthermore, the overhead on the publisher node is further enabled to be reduced, since in accordance with this, the risk of publisher failure due to buffer depletion is also reduced. The publisher is now enabled to rely on the cache of the first proxy node, and therefore, the impact of slow subscribers on the publisher is also enabled to be reduced.
Since the proxy-agents are provisioned in-line between the publisher and subscriber, the packets travel less network hops, and therefore the latency of message delivery is also enabled to be reduced. The first node is therefore enabled to orchestrate and dynamically place proxy-agents at appropriate locations with respect to changes in the communications network and the subscribers count and location. Such an instantiation of proxy-agents also enables to reduce the serialization load, that is, the sending to different subscribers of the topic, in a sequence, at the publisher. This load, according to embodiments herein, may be understood to get distributed between proxy(leaf) nodes. Thus, the likelihood of messages reaching the subscriber early on a topology with a large number of subscribers is thereby increased. A further advantage of embodiments herein is that the retransmission of messages to slow subscribers on their recovery is generally faster. That is because, for slow readers, messages may be enabled to be cached on proxy-agent(s) closest to the subscribers, as opposed to caching in the publisher or a designated broker. BRIEF DESCRIPTION OF THE DRAWINGS
Examples of embodiments herein are described in more detail with reference to the accompanying drawings, and according to the following description.
Figure 1 is a schematic diagram illustrating a non-limiting example of a communications network, according to embodiments herein.
Figure 2 is a flowchart depicting a non-limiting example of a method in a first node, according to embodiments herein.
Figure 3 is a flowchart depicting a non-limiting example of a method in a proxy-agent, according to embodiments herein.
Figure 4 is a schematic diagram illustrating a non-limiting example of methods in a communications network according to embodiments herein.
Figure 5 is a schematic diagram illustrating a non-limiting example of methods in a communications network according to embodiments herein.
Figure 6 is a schematic diagram illustrating , in panels a) and b), a non-limiting example of methods in a communications network according to embodiments herein.
Figure 7 is a schematic diagram illustrating a non-limiting example of methods in a communications network according to embodiments herein.
Figure 8 is a schematic diagram illustrating, in panels a) and b), a non-limiting example of methods in a communications network according to embodiments herein.
Figure 9 is a schematic diagram illustrating a non-limiting example of methods in a communications network according to embodiments herein.
Figure 10 is a schematic diagram of some aspects of methods in a communications network, according to embodiments herein.
Figure 11 is a schematic block diagram illustrating two non-limiting examples, a) and b), of a first node, according to embodiments herein.
Figure 12 is a schematic block diagram illustrating two non-limiting examples, a) and b), of a proxy-agent, according to embodiments herein.
Figure 13 is a schematic block diagram illustrating two non-limiting examples, a) and b), of a programmable switch, according to embodiments herein.
DETAILED DESCRIPTION
Certain aspects of the present disclosure and their embodiments may provide solutions to the challenges discussed in the background section. There are, proposed herein, various embodiments which address one or more of the issues disclosed herein. Embodiments herein may be understood to be drawn to a system and methods for designing a Publisher-Subscriber (Pub-Sub) system. The system and methods of embodiments herein may use network switches.
Programmable switches
Embodiments herein may use the “programmability” capabilities of datacenter switches with sufficient compute and memory, popularly known as in-network computing. Switches may be understood as devices that may connect computers within a local area network. In recent years, programmable switches have become available. A programmable switch may be understood as a switch that may allow custom logic to be programmed on to the chip on the switch, to enable capabilities such as data plane processing, e.g., custom forwarding, packet processing etc. Examples of such programmable switches are Barefoot Tofino2, Intel Flexpipe, Cisco Doppler, and Cavium Xpliant. The potential of in-network computing is gaining substantial traction, backed by switch vendors as well as open source consortiums such as P4. It is expected that these switches will get more powerful thereby accelerating the possibilities of offloading computation on to them.
As an general overview, embodiments herein provide methods to instantiate and utilize proxy-agents in the network paths between publishers and subscribers to provide transparent broker-like functionality for their messaging traffic. The methods described herein may place such proxying logic as required on programmable switches, in in-network computing, in a datacenter network in the same path between publisher and subscriber when compared to a brokered system, while being transparent to publishers and subscribers in terms of messaging Application Program Interface (API).
Some of the embodiments contemplated will now be described more fully hereinafter with reference to the accompanying drawings, in which examples are shown. In this section, the embodiments herein will be illustrated in more detail by a number of exemplary embodiments. Other embodiments, however, are contained within the scope of the subject matter disclosed herein. The disclosed subject matter should not be construed as limited to only the embodiments set forth herein; rather, these embodiments are provided by way of example to convey the scope of the subject matter to those skilled in the art. It should be noted that the exemplary embodiments herein are not mutually exclusive. Components from one embodiment may be tacitly assumed to be present in another embodiment and it will be obvious to a person skilled in the art how those components may be used in the other exemplary embodiments.
Figure 1 depicts a non-limiting example of a communications network 100, in which embodiments herein may be implemented. In some example implementations, such as that depicted in the non-limiting example of Figure 1, the communications network 100 may be a computer network. In other example implementations, the communications network 100 may be implemented in a telecommunications network, sometimes also referred to as a cellular radio system, cellular network or wireless communications system. In some examples, the telecommunications network may comprise network nodes which may serve receiving nodes, such as wireless devices, with serving beams.
In some examples, the telecommunications network may for example be a network such as 5G system, or Next Gen network or an Internet service provider (ISP)-oriented network.
The telecommunications network may also support other technologies, such as a Long-Term Evolution (LTE) network, e.g. LTE Frequency Division Duplex (FDD), LTE Time Division Duplex (TDD), LTE Half-Duplex Frequency Division Duplex (HD-FDD), LTE operating in an unlicensed band, Wideband Code Division Multiple Access (WCDMA), Universal Terrestrial Radio Access (UTRA) TDD, GSM/Enhanced Data Rate for GSM Evolution (EDGE) Radio Access Network (GERAN) network, Ultra-Mobile Broadband (UMB), EDGE network, network comprising of any combination of Radio Access Technologies (RATs) such as e.g. Multi- Standard Radio (MSR) base stations, multi-RAT base stations etc., any 3rd Generation Partnership Project (3GPP) cellular network, Wreless Local Area Network/s (WLAN) or WiFi network/s, Worldwide Interoperability for Microwave Access (WiMax), IEEE 802.15.4-based low-power short-range networks such as IPv6 over Low-Power Wreless Personal Area Networks (6LowPAN), Zigbee, Z-Wave , Bluetooth Low Energy (BLE), or any cellular network or system. Other wireless systems, supporting similar or equivalent functionality may also benefit from exploiting the ideas covered within this disclosure. In future radio access, e.g., in the sixth generation (6G), the terms used herein may need to be reinterpreted in view of possible terminology changes in future radio access technologies.
A plurality of nodes may be comprised in the communications network 100, whereof a publisher node 101, a subscriber node 102, a first node 111, a second node 112, and a third node 113, are depicted in Figure 1.
Each of the publisher node 101, the subscriber node 102, the first node 111 , the second node 112, and the third node 113 may be understood, respectively, as a first computer system or server, a second computer system or server, a third computer system or server, a fourth computer system or server, and a fifth computer system or server. Any of the publisher node 101, the subscriber node 102, the first node 111 , the second node 112, and the third node 113, may be implemented as a standalone server in e.g., a host computer in the cloud 120. In other examples, any of the publisher node 101, the subscriber node 102, the first node 111, the second node 112, and the third node 113 may be a distributed node or distributed server, such as a virtual node in the cloud 120, and may perform some of its respective functions locally, e.g., by a client manager, and some of its functions in the cloud 120, by e.g., a server manager. In other examples, any of the publisher node 101, the subscriber node 102, the first node 111, the second node 112, and the third node 113, may perform its functions entirely on the cloud 120, or partially, in collaboration or collocated with a network node. Yet in other examples, any of the publisher node 101, the subscriber node 102, the first node 111 , the second node 112, and the third node 113, may also be implemented as processing resource in a server farm. Any of the publisher node 101 , the subscriber node 102, the first node 111 , the second node 112, and the third node 113, may be under the ownership or control of a service provider, or may be operated by the service provider or on behalf of the service provider.
Any of the publisher node 101, the subscriber node 102, the first node 111 , the second node 112, and the third node 113, may be a core network node in a core network, which may be e.g., a 3GPP SBA based 5GC core network.
In typical embodiments, the first node 111, the second node 112, and the third node 113, may be Fog nodes.
The publisher node 101 may be understood as a node that may have the capability to create and publish messages for a topic, to which the subscriber node 102 may subscribe in order to receive such messages for the topic. The publisher node 101 may publish messages for a plurality of topics, and the subscriber node 102 may subscribe to one or more topics that may be of interest to the subscriber node 102.
The publisher node 101 may support a publisher-subscriber API interface and/or Software Development Kit (SDK). Embodiments herein allow the publisher node 101 and the subscriber node 102 to use standard messaging APIs while instrumenting such libraries/SDKs to implement embodiments herein. As an example, applications in a cloud provider platform such as Amazon Web Services (AWS) may use their existing cloud provider API to create, subscribe and publish messages for a topic, and such library/SDK may be instrumented. An example snippet from AWS SNS Java SDK for Pub-Sub system may be as follows:
For the publisher node 101 :
CreateT opicRequest topicReq = new CreateT opicRequest(“Some_T opicj D”);
PublishRequest request = new PublishRequest(topic, message)
PublishResult result = publish(request)
For the subscriber node 102:
SubscribeRequest subscribeRequest = new SubscribeRequest(topic, subscriptionld); SubscribeResponse subscribeResponse = client.Subscribe(subscribeRequest);
The first node 111 may be understood as a node having a capability to perform control place actions, such as instantiation and/or removal, command communication, etc. on the various components described in embodiments herein. In typical examples, the first node 111 may be a located in the cloud 120. In such typical examples, as the one depicted in Figure 1, the first node 111 may be a cloud controller, that is, a cloud control plane component, which may typically termed controller and/or orchestrator, etc.. The first node 111 may be understood as a provider of the infrastructure of embodiments herein, as will be described later.
The second node 112 and the third node 113 may be each understood as monitoring agents. That is, nodes having the capability to monitor metrics and health aspects, such as the number of subscribers per topic on the node, messages arrival rate for each topic, network traffic, average latency experienced by the subscribers, average message buffers utilization by the subscribers, load on the subscriber’s node, crash and restart of subscribers, flow stats, e.g., per topic basis, available buffer capability etc. The second node 112 and the third node 113 may report such information to the first node 111.
The communications network 100 comprises a first proxy-agent 121, a second proxy- agent 122, and may further comprise a third proxy-agent 123 and one or more additional proxy-agents, such as a fourth proxy-agent 124. Any of the first proxy-agent 121, the second proxy-agent 122, the third proxy-agent 123 and the one or more additional proxy-agents, such as the fourth proxy-agent 124 may be understood as a node, as described above, namely, a respective computer system or server which may be implemented as a standalone server in e.g., a host computer in the cloud 120. In other examples, any of the first proxy-agent 121, the second proxy-agent 122, the third proxy-agent 123 and the one or more additional proxy- agents, such as the fourth proxy-agent 124 may be a distributed node or distributed server, such as a virtual node in the cloud 120, and may perform some of its respective functions locally, e.g., by a client manager, and some of its functions in the cloud 120, by e.g., a server manager. In other examples, any of the first proxy-agent 121, the second proxy-agent 122, the third proxy-agent 123 and the one or more additional proxy-agents, such as the fourth proxy- agent 124, may perform its functions entirely on the cloud 120, or partially, in collaboration or collocated with a network node. Yet in other examples, any of the first proxy-agent 121, the second proxy-agent 122, the third proxy-agent 123 and the one or more additional proxy- agents, such as the fourth proxy-agent 124 may also be implemented as processing resource in a server farm. Any of the first proxy-agent 121 , the second proxy-agent 122, the third proxy- agent 123 and the one or more additional proxy-agents, such as the fourth proxy-agent 124, may be under the ownership or control of a service provider, or may be operated by the service provider or on behalf of the service provider. Any of the first proxy-agent 121, the second proxy-agent 122, the third proxy-agent 123 and the one or more additional proxy- agents, such as the fourth proxy-agent 124 may be understood to have the capability to abstract the publisher and subscriber(s) from the underlying topology. That is, to run a proxy program capable of acting as a subscriber to its upstream entities, which may be a publisher such as the publisher node 101, or other proxy agents, and as a publisher to its downstream entities, which may be a subscriber such as the subscriber node 102, or other proxy agents.
Any reference herein to the proxy-agent 121, 122, 123, 124 may be understood to refer to any of the first proxy-agent 121 , the second proxy-agent 122, the third proxy-agent 123, or any of the one or more additional proxy-agents, such as the fourth proxy-agent 134, unless otherwise noted.
In some examples, some of the nodes and proxy-agents just described may be co located, or be the same node. In typical examples, the publisher node 101 may be co- located with the second node 112 and the first proxy-agent 121 in a first server 131. Also in typical examples, the subscriber node 102 may be co-located with the third node 113 and the second proxy-agent 122 in a second server 132.
As depicted in the example of Figure 1, the first server 131 and the second server 132 may typically be located in separate locations geographically.
It is worth noting that the monitoring functionality may also be in-built in the proxy-agents. That is, the second node 112 may be a same node as the first proxy-agent 121 and the third node 113 may be a same node as the second proxy-agent 122.
The communications network 100 may further comprise a first programmable switch 141, a second programmable switch 142, and a third programmable switch 143. Any of the first programmable switch 141, the second programmable switch 142, and the third programmable switch 143 may be understood as as a switch having the capability to allow custom logic to be programmed on to the chip on the switch, to enable capabilities such as data plane processing, e.g., custom forwarding, packet processing etc..
It may be understood that the communications network 100 may comprise additional nodes. For example, the publisher node 101 may have subscriber nodes 150, which may comprise the subscriber node 102.
In some examples not depicted in Figure 1, the communications network may comprise a fourth node. The fourth node may be a sixth computer system or server, which be implemented as a standalone server in e.g., a host computer in the cloud 120. In other examples, the fourth node may be a distributed node or distributed server, such as a virtual node in the cloud 120, and may perform some of its respective functions locally, e.g., by a client manager, and some of its functions in the cloud 120, by e.g., a server manager. In other examples, the fourth node, may perform its functions entirely on the cloud 120, or partially, in collaboration or collocated with a network node. Yet in other examples, the fourth node may also be implemented as processing resource in a server farm. The fourth node may be under the ownership or control of a service provider, or may be operated by the service provider or on behalf of the service provider. The fourth node may have the capability to keep track of, or to be used by the first node 111 to keep track of, publishers such as the publisher node 101 , the topics they may expose, their corresponding subscribers such as the subscriber node 102, and locations of publishers and subscribers, information about the physical topology, etc. The fourth node may be understood to have the capability to provide a directory service. Typically, the fourth node may be a standard form of an internal service of the first node 111. The directory service may maintain information about (i) what topics exist, identified by topic identifiers (topiclds), (ii) what publishers, subscribers, proxy-agents exist, and their locations, their ports (iii) logical graph of proxy-agents - information such as, for each proxy-agent, what are its upstream publishers or upstream proxy-agents, which topics it is subscribed to, what are its downstream proxy-agents or downstream subscribers.
The telecommunications network that may be comprised in the communications network 100 may also comprise a plurality of radio network nodes, e.g., access nodes, or radio network nodes. The telecommunications network that may be comprised in the communications network 100 may cover a geographical area, which in some embodiments may be divided into cell areas, wherein each cell area may be served by a radio network node, although, one radio network node may serve one or several cells. Any of the radio network nodes may be e.g., a gNodeB. That is, a transmission point such as a radio base station, for example an eNodeB, or a Home Node B, a Home eNode B or any other network node capable to serve a wireless device in the communications network 100. Any of the radio network nodes may be of different classes, such as, e.g., macro eNodeB, home eNodeB or pico base station, based on transmission power and thereby also cell size. In some examples, any of the radio network nodes may serve receiving nodes with serving beams. Any of the radio network nodes may support one or several communication technologies, and its name may depend on the technology and terminology used. Any of the radio network nodes may be directly connected to one or more core networks in the telecommunications network.
The telecommunications network that may be comprised in the communications network 100 may also comprise a plurality of devices. Any of the devices may be a UE or a Customer Premises Equipment (CPE) which may be understood to be enabled to communicate data, with another entity, such as a server, a laptop, a Machine-to-Machine (M2M) device, device equipped with a wireless interface, or any other radio network unit capable of communicating over a wired or radio link in a communications system such as the telecommunications network. The devices may be also e.g., a mobile terminal, wireless device, wireless terminal and/or mobile station, mobile telephone, cellular telephone, or laptop, just to mention some further examples. Any of the devices may be, for example, portable, pocket-storable, hand held, computer-comprised, a sensor, camera, or a vehicle-mounted mobile device, enabled to communicate voice and/or data, via a RAN, with another entity, such as a server, a laptop, a Personal Digital Assistant (PDA), or a tablet computer, sometimes referred to as a tablet with wireless capability, or simply tablet, a Machine-to-Machine (M2M) device, a device equipped with a wireless interface, such as a printer or a file storage device, modem, Laptop Embedded Equipped (LEE), Laptop Mounted Equipment (LM E), USB dongles or any other radio network unit capable of communicating over a wired or radio link in the communications network 100. Any of the devices may be enabled to communicate wirelessly in the telecommunications network. The communication may be performed e.g., via a RAN and possibly one or more core networks, comprised within the telecommunications network.
The communications that will be described in relation to embodiments herein may be understood to be configured to be performed with a respective link e.g., a radio link, an infrared link, or a wired link. Only some of the links are represented in Figure 1 to avoid crowding the Figure.
The first node 111 may be configured to communicate with the first proxy-agent 121 within the communications network 100 over a first link 151. The first proxy-agent 121 may be configured to communicate with the publisher node 101 within the communications network 100 over a second link 152. The first proxy-agent 121 may be configured to communicate within the communications network 100 with the third proxy-agent 123 over a third link 153. The third proxy-agent 123 may be configured to communicate within the communications network 100 with the fourth proxy-agent 124 over a fourth link 154. The fourth proxy-agent 124 may be configured to communicate with second proxy-agent 122 within the communications network 100 over a fifth link 155. The second proxy-agent 122 may be configured to communicate with the subscriber node 102 within the communications network 100 over a sixth link 156.
Any of the links may be a direct link or may be comprised of a plurality of individual links, wherein it may go via one or more computer systems or one or more core networks, which are not depicted in Figure 1, or it may go via an optional intermediate network. The intermediate network may be one of, or a combination of more than one of, a public, private or hosted network. The intermediate network, if any, may be a backbone network or the Internet; in particular, the intermediate network may comprise two or more sub-networks, which is not shown in Figure 1.
In general, the usage of “first”, “second”, “third”, “fourth”, “fifth” and/or “sixth” herein may be understood to be an arbitrary way to denote different elements or entities, and may be understood to not confer a cumulative or chronological character to the nouns they modify.
Generally, all terms used herein are to be interpreted according to their ordinary meaning in the relevant technical field, unless a different meaning is clearly given and/or is implied from the context in which it is used. All references to a/an/the element, apparatus, component, means, step, etc. are to be interpreted openly as referring to at least one instance of the element, apparatus, component, means, step, etc., unless explicitly stated otherwise. The steps of any methods disclosed herein do not have to be performed in the exact order disclosed, unless a step is explicitly described as following or preceding another step and/or where it is implicit that a step must follow or precede another step. Any feature of any of the embodiments disclosed herein may be applied to any other embodiment, wherever appropriate. Likewise, any advantage of any of the embodiments may apply to any other embodiments, and vice versa. Other objectives, features and advantages of the enclosed embodiments will be apparent from the following description.
Several embodiments are comprised herein. It should be noted that the examples herein are not mutually exclusive. Components from one embodiment may be tacitly assumed to be present in another embodiment and it will be obvious to a person skilled in the art how those components may be used in the other exemplary embodiments.
Embodiments of a method, performed by the first node 111, will now be described with reference to the flowchart depicted in Figure 2. The method may be understood to be for handling communications between the publisher node 101 and the subscriber node 102 over the communications network 100.
The method may comprise the actions described below. In some embodiments, some of the actions may be performed. In other embodiments, all the actions may be performed. In Figure 2, optional actions are indicated with a dashed box. One or more embodiments may be combined, where applicable. All possible combinations are not described to simplify the description. It should be noted that the examples herein are not mutually exclusive. Components from one example may be tacitly assumed to be present in another example and it will be obvious to a person skilled in the art how those components may be used in the other examples.
Action 201
According to embodiments herein, the publisher node 101 and the corresponding subscriber(s), such as the subscriber node 102 may be understood to not establish a direct connection with one another, though their interaction may seem to them to be direct. This may be achieved by transparent functioning of one or more proxy-agents between the publisher node 101 and subscriber(s), e.g., the subscriber node 102, thereby abstracting the publisher node 101 and the subscriber(s), e.g., the subscriber node 102, from the underlying topology. According to embodiments herein, the first node 111 may orchestrate the dynamic instantiation and removal of proxy-agents, and the session establishment between them, to provide a transparent publish-subscribe experience to the publisher node 101 and subscribers such as the subscriber node 102
In this Action 201 , the first node 111, instantiates the first proxy-agent 121, as proxy- agent of the publisher node 101 , in-line between the publisher node 101 and the subscriber node 102. The first node 111 also instantiates the second proxy-agent 122, as proxy-agent of the subscriber node 102, in-line between the publisher node 101 and the subscriber node 102.
The first node 111 may perform the instantiation in this Action 201 by sending a first instruction to at least one of: a) the first proxy-agent 121, to instantiate as proxy-agent of the publisher node 101, in-line between the publisher node 101 and the subscriber node 102, b) the second proxy-agent 122, to instantiate as proxy-agent of the subscriber node 102, in-line between the publisher node 101 and the subscriber node 102, and c) the third proxy-agent 123, to instantiate as proxy-agent in-line between the publisher node 101 and the subscriber node 102.
The first node 111 may perform this instantiating Action 201 for example, when at least one the publisher node 101 and the subscriber node 102 may initiate a publish/subscribe action, respectively, for a topic. The request may be directed to the first node 111, e.g., by their respective SDK.
The first node 111 may instantiate the first proxy-agent 121, as well as the second node 112, co-localized with the publisher node 101, if no such agent is already available on that node. The first node 111 may also instantiate the second proxy-agent 122, as well as the third node 113, co-localized with the subscriber node 102, if no such agent is already available on that node.
Action 202
In this Action 202, the first node 111 instructs: i) the first proxy-agent 121 to connect with and subscribe to the publisher node 101, ii) the subscriber node 102 to connect with and subscribe to the second proxy-agent 122, and iii) at least one of the first proxy-agent 121 and the second proxy-agent 122 to establish a connection with each other, thereby enabling communication exchanges between the publisher node 101 and the subscriber node 102 via the first proxy-agent 121 and the second proxy-agent 122.
The first node 111 may instruct the third proxy-agent 123, to connect with one of: the first proxy-agent 121, the second proxy-agent 122 and the fourth proxy-agent 124, in-line between the publisher node 101 and the subscriber node 102.
The first node 111 may perform the instructing in this Action 202 by sending a second instruction to at least one of: i) the first proxy-agent 121, to connect with and subscribe to the publisher node 101, ii) the subscriber node 102, to connect with and subscribe to the second proxy-agent 122, iii) to at least one of the first proxy-agent 121 and the second proxy-agent 122, to establish a connection with each other, thereby enabling communication exchanges between the publisher node 101 and the subscriber node 102 via the first proxy-agent 121 and the second proxy-agent 122, and iv) to the third proxy-agent 123, to connect with one of: the first proxy-agent 121, the second proxy-agent 122 and the fourth proxy-agent 124, in-line between the publisher node 101 and the subscriber node 102.
A topic, which may be identified by topicld, may have multiple publishers, identified by publisherld (publd). When a new publisher, e.g., the publisher node 101, for a topic may arrive, the first node 111 may establish an end-to-end new connection via proxy-agents to all the subscribers interested the in the topic, e.g., the subscriber node 102. But each message flow from different publishers may be treated as separate individual flows with a respective identifier (flowid), and may or may not flow through the same proxy-agents.
In a particular non-limiting example, the second instruction may comprise the publd for the publisher node 101, the topicld, an identifier for the port of the publisher node 101 (portld), an identifier for server where the publisher node 101 is located (serverNode), here the first server 131, the flowid, as well as the IP address of the publisher node 101, denoted as “pubJP”, and the publisher node 101’s port address on which the publisher node 101 may be listening to establish communication for the incoming connections from the proxy- nodes/subscribers denoted as “pub_listen_porf . It may be understood that other methods may be used to implement the second instruction.
For a request from the publisher node 101 , the first node 111 may inform the first proxy- agent 121 about the new topic. For a request from the subscriber node 102, the first node 111 may inform the second proxy-agent 122 about the topic, and also about the first proxy-agent 121 to establish connection.
Such mapping information about publishers, subscribers, their proxy-agents and topics etc. may be maintained in the fourth node, e.g., a directory service.
It may be understood that while the methods herein are described with a single publisher node, the publisher node 101, and a single subscriber, the subscriber node 102, there may be a plurality of publisher nodes and subscriber nodes in the communications network 100. In accordance with this, it is worth noting that variations may be possible to the scheme just described with respect to aspects such as: (i) whether multiple publishers/subscribers on a node may reuse the same local proxy-agent, or whether the agent may be per entity, per topic etc. (ii) whether sessions between agents may be reused or not (iii) when the proxy-agents may be instantiated, etc. But such variations do not change the principles of functioning of the methods described herein.
In some examples, the proxy-agents 121, 122, 123, 124 may be designed to handle subscribers from same topic or different topics.
In some embodiments, the first node 111 may pre-offload such proxy-agent code and/or logic functionality on to the programmable switches, and they may be used in embodiments herein. Such functionality may also be enabled on-demand. Particular non-limiting examples of this process will be illustrated later in Figure 7 and Figure 8.
In some embodiments, the first proxy-agent 121 may be instantiated on: i) a same first server 131 as the publisher node 101, ii) the first programmable switch 141 on the first server 131, or iii) the first programmable switch 141, in-line between the publisher node 101 and the subscriber node 102. Additionally, the second proxy-agent 122 may be instantiated on: i) the same second server 132 as the subscriber node 102, ii) the second programmable switch 142 on the second server 132, or iii) the second programmable switch 142, in-line between the publisher node 101 and the subscriber node 102.
Apart from the programmable in-network switches, if a certain server has programmable SmartNICs, then the proxy-agents 121, 122, 123, 124 may be provisioned on the SmartNIC.
In some examples, embodiments herein may be used by a Pub-Sub solution built using multicast over UDP so that the Negative Acknowledgements (NACKs) do not flood back to the publisher node 101. Rendezvous Points (RP) that may be identified by the multicast protocols may in such instances be used as a potential location for placing the proxy-agents 121, 122, 123, 124.
Action 203
In the course of communications in the communications network 100, in this Action 203, the first node 111 may receive information on at least one of: a) first traffic at the first proxy- agent 121 from at least one of: the second node 112 monitoring the publisher node 101, and the first proxy-agent 121, b) second traffic at the second proxy-agent 122 from at least one or: the third node 113 monitoring the subscriber node 102, and the second proxy-agent 122, c) number of subscriber nodes 150 to the publisher node 101, d) proxy-agent failure, e) switch failure, and f) a forward and cache request from a proxy-agent 121, 122, 123 in-line between the publisher node 101 and the subscriber node 102.
As a non-limiting example, the first node 111, by performing this Action 203, may get to know if it may have lost a proxy-agent running on a particular node, which may then enable the first node 111 to perform a recovery mechanism based on it. The failure and recovery mechanism is described later in detail with a particular non-limiting example, in relation to Figure 9. Action 204
In Action 203, the first node 111 may have obtained metrics information from monitoring agents such as the second node 112 and the third node 113, as well as any kind of control information back from the existing proxy-agents, such as the first proxy-agent 121 and the second proxy-agent 122. The first node 111 may use such information to decide whether it may need to instantiate or remove proxy-agent(s) in the network path between existing proxy- agents). That is, the invocation of proxy-agents according to embodiments herein may be understood to be dynamic.
In this Action 204, the first node 111 may determine, based on the received information in Action 203, whether or not to at least one of: a) instantiate one or more additional proxy- agents, b) re-instantiate a failed proxy-agent, and c) remove already instantiated one or more proxy-agents, thereby adapting a number of proxy-agents to traffic changes.
Determining may be understood as calculating, deriving, or similar.
The first node 111 may employ various prevalent techniques and algorithms for analysis, prediction and decision of whether to add or remove in-network proxies, and even whether to keep and reuse such proxies expecting load to spike back up.
As an example, as the number of subscribers 150 for a topic may scale up on the nodes in a particular rack, e.g., a datacenter on which servers hardware may be mounted, the first node 111 may decide to enable the pre-offloaded proxy-agent program on the corresponding Top-of-Rack Switch (ToR switch), e.g., the fourth programmable switch 144, to act as an intermediary proxy-agent between the publisher and subscriber proxy-agents, that is, between the first proxy-agent 121 and the second proxy-agent 122, with a goal to reduce the load on the first proxy-agent 121 in the face of growing subscriber count, while off-loading the proxying feature in-network directly in the network path between the publisher node 101 and the subscriber node 102.
Action 205
In accordance with the foregoing, based on a result of the determination, the first node 111 may, in this Action 205, instantiate the one or more additional proxy-agents or re instantiate the failed proxy-agent. For example, assuming in a non-limiting example that the first proxy-agent 121, the second proxy-agent 122 and the third proxy-agent 123 were already instantiated in the communications network 100, the first node 111 may decide in this Action 205 to instantiate the four proxy-agent 124.
A non-limiting example of a scenario of such a dynamic instantiation is illustrated in Figure 5, which will be described later. Action 206
Based on a result of the determination performed in Action 203, in this Action 206, the first node 111 may remove 206 one or more of the already instantiated one or more proxy- agents. For example, assuming in a non-limiting example that the first proxy-agent 121, the second proxy-agent 122 and the third proxy-agent 123 were already instantiated in the communications network 100, the first node 111 may decide in this Action 206, to remove the third proxy-agent 123.
Action 207
Based on a result of the determination performed in Action 203, in this Action 207, the first node 111 may rearrange existing connections between the publisher node 101 and the subscriber node 102, based on the instantiated one or more additional proxy-agents 124 and/or the removed already instantiated one or more proxy-agents, e.g., the third proxy-agent 123, thereby enabling communication exchanges between the publisher node 101 and the subscriber node 102 via the first proxy-agent 121 and the second proxy-agent 122, via the one or more additional proxy-agents 124 and/or with the rearranged proxy-agents. In other words, the first node 111 in this Action 207 may reorganize the sessions between the proxy-agents.
Accordingly, the first node 111 may enable the one or more additional proxy-agents 124, e.g., the fourth proxy-agent 124, which may be an in-network proxy-agent, and may direct it to establish session with the first proxy-agent 121. Then the first node 111 may direct the subscriber proxy-agents, e.g. the second proxy-agent 122, to establish sessions with the fourth proxy-agent 124. Finally, the first node 111 may direct the subscriber proxy-agents, such as the second proxy-agent 122, to terminate their previous sessions with the first proxy-agent 121.
A topicld may be understood as a global identifier for a topic, that publishers such as the publisher node 101 may create and publish messages to, and subscribers such as the subscriber node 102 may subscribe to. Since multiple publishers may publish messages on a topic, a combination of topicld and publisher identity, e.g., location/I P/id etc., publisherld may be used to distinguish between multiple input streams for a given topic, as required.
It is to be noted that the sessions between the publisher node 101 and the subscriber node 102 with their respective local proxy-agents, that is, the first proxy-agent 121 and the second proxy-agent 122 on their respective server may be understood to remain unaltered.
The internal session changes may be understood to be completely transparent to end publisher and subscribers, that is, to the publisher node 101 and the subscriber node 102. This scenario is illustrated with a non-limiting example in Figure 6, which will be described later.
Such in-network proxying as performed according to embodiments herein may be understood to lessen the load on the publisher end, owing to seemingly lesser number of subscribers from the publisher’s viewpoint, and thus, lesser connections and message acknowledgements on the publisher end. Further, such in-network proxy ing may be directly in the network path between the publisher node 101 and the subscriber node 102, so it may be understood to avoid extra network hops and latency.
In general, such in-network proxy orchestration may be extended. It may be understood that the method just described may iterate from Action 203 to Action 207. As subscribers and messaging volumes may increase across multiple racks, more in-network proxies may be instantiated, according to a new iteration of Action 205, on further upstream switches beyond the subscribers’s ToR switch, thereby having a hierarchy of in-network proxies.
Equivalently, the first node 111 may decide, according to a new iteration of Action 204, to scale down the number of in-network proxies, as the subscriber and messaging load may be reduced, by removing, according to a new iteration of Action 206, an in-network proxy and directing the proxies on either end to establish fresh sessions between them.
Embodiments of a method performed by a proxy-agent 121, 122, 123, 124, will now be described with reference to the flowchart depicted in Figure 3. The method may be understood to be for handling the communications between the publisher node 101 and the subscriber node 102 over the communications network 100.
The method may comprise the following actions. Several embodiments are comprised herein. In some embodiments, some actions may be performed. In other embodiments, all actions may be performed. One or more embodiments may be combined, where applicable.
All possible combinations are not described to simplify the description. It should be noted that the examples herein are not mutually exclusive. Components from one example may be tacitly assumed to be present in another example and it will be obvious to a person skilled in the art how those components may be used in the other examples. In Figure 3, optional actions are represented in boxes with dashed lines.
The detailed description of some of the following corresponds to the same references provided above, in relation to the actions described for the first node 111, and will thus not be repeated here to simplify the description. For example, the fourth proxy-agent 124 may be comprised in a ToR switch 144 to the subscriber node 102.
Action 301
In this Action 301, the proxy-agent 121, 122, 123, 124 receives the first instruction from the first node 111 operating in the communications network 100 to instantiate as one of: a) the first proxy-agent 121 of the publisher node 101, in-line between the publisher node 101 and the subscriber node 102, b) the second proxy-agent 122 of the subscriber node 102 in-line between the publisher node 101 and the subscriber node 102, and c) the third proxy-agent 123 in-line between the publisher node 101 and the subscriber node 102.
In some embodiments, the proxy-agent 121, 122 may be instantiated in one of the following options. In a first option, the proxy-agent 121 , 122 may be instantiated as the first proxy-agent 121, on: i) the same second server 132 as the publisher node 101, ii) the first programmable switch 141 on the first server 131, or iii) the first programmable switch 141 in line between the publisher node 101 and the subscriber node 102. In a second option, the proxy-agent 121, 122 may be instantiated as a second proxy-agent 122 on: i) the same second server 132 as the subscriber node 102, ii) the second programmable 142 switch comprised on the second server 132, or iii) the second programmable switch 142, in-line between the publisher node 101 and the subscriber node 102. In a third option, the proxy-agent 121, 122 may be instantiated as the third proxy-agent 123, in the third programmable switch 143 in-line between the publisher node 101 and the subscriber node 102.
Action 302
In this Action 302, the proxy-agent 121, 122, 123, 124 receives the second instruction from the first node 111 to one of: i) as the first proxy-agent 121, to connect with and subscribe to the publisher node 101 , ii) as at least one of the first proxy-agent 121 and the second proxy- agent 122, to establish a connection with each other, thereby enabling communication exchanges between the publisher node 101 and the subscriber node 102 via the first proxy- agent 121 and the second proxy-agent 122, and iii) as the third proxy-agent 123, to connect with one of: the first proxy-agent 121, the second proxy-agent 122 and the fourth proxy-agent 124, in-line between the publisher node 101 and the subscriber node 102.
Action 303
In this Action 303, the proxy-agent 121, 122, 123, 124 establishes a connection with one of: i) as first proxy-agent 121 with the second proxy-agent 122 and/or with the publisher node 101 , ii) as second proxy-agent 122, with the first proxy-agent 121 , and iii) as the third proxy- agent 123, with one of: the first proxy-agent 121, the second proxy-agent 122 and the fourth proxy-agent 124, in-line between the publisher node 101 and the subscriber node 102.
That is, according to examples of this Action 303, the respective local proxy-agent on the same server as the publisher node 101 or the subscriber node 102 may then then establish the local connection with the respective SDK of the publisher and/or subscriber.
The proxy-agent 121, 122, 123, 124 may as a result of Action 303, update a mapping table it may keep, such that, as a non-limiting example, for each topicld, it may map each (sessionld & pub_port) to a list of subscriber ports (subscribed IP & port, subscribed IP &
The subscriber proxy-agents, e.g., the second proxy-agent 122 and/or the third proxy- agent 123, may in turn establish session with the publisher proxy-agents, such as the first proxy-agent 121, or reuse any existing sessions between them.
Action 304
The proxy-agent 121, 122, 123, 124, in this Action 304, exchanges communications with at least one of: i) as the first proxy-agent 121 , with the second proxy-agent 122 and the publisher node 101, ii) as the second proxy-agent 122, with the first proxy-agent 121 and the subscriber node 102, and iii) as the third proxy-agent 123, with one of: the first proxy-agent 121, the second proxy-agent 122 and the fourth proxy-agent 124.
Action 305
In the course of communications in the communications network 100, the publisher node 101 may try to send a new message to all registered subscribers, such as the subscriber node 102. But, if any subscriber, e.g., the subscriber node 102 is unable to receive it, the publisher node 101 may not keep a copy of the message for later retry. In embodiments herein, the proxy-agents may instead handle message persistence and delivery guarantees, up to a limit or threshold, for slow and/or unavailable subscribers, if configured so.
Accordingly, in this Action 305, the proxy-agent 121, 122, 123, 124 may cache undelivered messages to subscribers.
The proxy-agent 122, 123, 124 on the subscriber’s server may cache, according to this Action 305, undelivered messages and an associated state, such as which subscribers to send these to, retry counts, etc. For other subscribers, new messages may be forwarded as usual. When the affected subscribers recover, the cached messages may be forwarded to the subscribers.
If a certain server has programmable SmartNICs, then the proxy-agents 121, 122, 123, 124 may be provisioned on the SmartNIC and may potentially cache the messages on the server.
Further details on how this Action 305 may be performed are provided later, in relation to Figure 10.
Action 306
When caching is enabled, the proxy-agent 121, 122, 123, 124 may maintain information about the message-delivery-state for each downstream proxy-agent or subscriber, that is, for each downstream client for a given topic stream, e.g., topic, publisher tuple, which messages received from upstream have not been delivered or acknowledged by the client.
One approach to maintain such state may be by employing typical sliding-window mechanisms, which are elaborated later, in relation to Figure 10. There may be multiple other approaches.
Besides, there may be configurable thresholds for maximum cache sizes or timeouts, beyond which a proxy-agent may drop messages. Such situations may arise when a proxy- agent and its upstream proxy-agent(s) may not be able to cache anymore for one or more downstream clients, and the first node 111 may not be able to find any better proxy-agent placement strategy for that path. Such configurable values may be administered by/through the first node 111, and alternate embodiments may also include typical variations such as priorities associated with some subscribers/topics over others, monitoring and history associated with subscribers/topics, e.g., spikes, cache build up, etc.
The proxy-agent 121, 122, 123, 124 may also maintain information about: (i) its upstream endpoints (publishers or upstream proxy-agents) and topics subscribed to, and (ii) its downstream endpoints and topics for which it has downstream subscribers.
As the cache buffer availability on the proxy-agent 121, 122, 123, 124 is reduced, the proxy-agent 121, 122, 123, 124 may request for upstream forward and cache functionality for new incoming messages on the corresponding topic for which caching may be required. Because it is forward and cache, the unaffected subscribers may keep receiving messages as usual.
This may be performed in multiple ways. As a first option, the proxy-agent 121, 122,
123, 124 may request its upstream proxy-agent to forward and cache. If the upstream proxy- agent rejects such a request, or if an upstream proxy-agent does not exist, the requesting proxy-agent 121, 122, 123, 124 may send the request to the first node 111, which in turn may take a better decision as to whether a new in-network proxy-agent needs to be instantiated, and/or which proxy-agent 121, 122, 123, 124 may need to provide the forward and cache functionality.
According to the foregoing, in some embodiments, after determining that availability of a cache comprised in the proxy-agent 121, 122, 123 is below a threshold, the proxy-agent 121, 122, 123, 124 may, in this Action 306, send a request to one of: the first node 111 and another proxy-agent in-line between the publisher node 101 and the subscriber node 102, to forward and cache one or more undelivered messages to subscribers.
As the affected subscribers revive, their proxy-agent 121, 122, 123, 124 may request the upstream proxy-agents to forward the cached messages downstream. If required, memory may be pre-allocated and/or dedicated for message caching in the in-network switches, e.g., any of the first programmable switch 141, the second programmable switch 142, and the third programmable switch 143, with various cache expiry strategies and thresholds. This may be understood as an on-demand caching of the incoming messages on the in-network switches.
Control signalling, and related information exchange may be done between the proxy- agent 121, 122, 123, 124 in programmable switches leveraging in-band telemetry framework such as In-band Network Telemetry (I NT). Such capabilities may allow appending information that may be required on top of the packets flowing between switches. A P4 switch, (source) may append the required information in a standard INT header format over the regular packets and may address it to a specific remote switch (sink). Intermediate switches may forward the packets. The sink switch may receive the packet and may perform processing as per the information appended in the packet. Also, it may be noted that such in-band communication may also be used by the proxy-agent 121, 122, 123, 124 to exchange information such as resource capabilities, e.g., cache availability, at proxy-agents, cache expiry timeouts, priority levels for caching for critical applications, etc.
Further details on how this Action 306 may be performed are provided later in a non limiting example, in relation to Figure 10.
Action 307
As a result of Action 205, Action 206 and/or Action 207, which may be performed by the first node 111 , the proxy-agent 121, 122, 123, 124 may receive a third instruction to be instantiated, to be terminated and/or to rearrange its existing connections between the publisher node 101 and the subscriber node 102.
In this Action 307, the proxy-agent 121, 122, 123, 124 may rearrange existing connections between the publisher node 101 and the subscriber node 102, based on an instruction received from the first node 111, that is, the third instruction just described.
Figure 4 is a schematic diagram illustrating a non-limiting example of embodiments herein, wherein the communications network 100 comprises few subscribers. The diagram depicts how the first proxy-agent 121 has been instantiated, according to Action 201, by the first node 111, a “Cloud Controller” in the example, in the same server as the publisher node
101 (“Pub”), that is, the first server 131, denoted as “Server-X” . The first proxy-agent 121 has, according to Action 303, established a connection with the publisher node 101, via the second link 152. The first proxy-agent 121 has also established, according to Action 303, a connection with the second proxy-agent 122, via a further link 420 which is routed via the third programmable switch 143, located upstream of the subscriber node 102. The subscriber node
102 is a first subscriber node, denoted as Sub-1, to a particular topic of the publisher node 101. The topic has a second subscriber node 402 denoted as Sub-2. The second proxy-agent 122, the subscriber node 102, the second subscriber node 402, and the third node 113, denoted as “Monitoring-Agent” are comprised in the second server 132, denoted as “Server A”. A third server 433 denoted as “Server-B”, a fourth server 434, denoted as “Server -C” and fifth server 435, denoted as “Server-D” are all downstream of the fourth programmable switch 144, which is a ToR switch. In this non-limiting example with few subscribers, the second proxy-agent 122 is sufficient to mediate communications between the subscriber node 102, the second subscriber node 402, and the publisher node 101. Illustrated in the figure, is also the fourth node as a Pub-Sub Directory service 415.
Figure 5 is a schematic diagram illustrating a non-limiting example of the embodiments herein, when the number of subscribers increases in the the communications network 100. Figure 5 depicts the same components as in Figure 4, with additional components. Each of the third server 433, the fourth server 434, and the fifth server 435 comprise now two new subscriber nodes to the same topic as the subscriber node 102 and the second subscriber node 402. The third server 433 comprises a third subscriber node 503 denoted as Sub-3 and a fourth subscriber node 504 denoted as Sub-4, the fourth server 434 comprises a fifth subscriber node 505 denoted as Sub-5, and a sixth subscriber node 506 denoted as Sub-6, The fifth server 435 comprises a seventh subscriber node 507 denoted as Sub-7 and an eighth subscriber node 508 denoted as Sub-8. In addition, further subscribers have been added to further servers. A sixth server 511 denoted as “Server-E”, comprises a ninth subscriber node 509 denoted as Sub-9, and a tenth subscriber node 510 denoted as Sub-10. A seventh server 514 denoted as “Server-F”, comprises an eleventh subscriber node 512 denoted as Sub-11, and a twelfth subscriber node 513 denoted as Sub-12. As the number of subscribers 150 for the topic scales up, the first node 111, according to Action 204, may decide to instantiate, according to Action 205 a respective proxy-agent 520 in each of the servers comprising newly added subscribers, as well as a respective monitoring agent 521. Note that not all reference signs are included in the Figure to avoid overcrowding it. The first node 111, may also according to Action 204, decide to enable the pre-offloaded fourth proxy-agent 124 on the corresponding ToR switch, in this example, the fourth programmable switch 144, to act as an intermediary proxy-agent between the first proxy-agent 121 and second proxy-agent 122, with a goal to reduce the load on the first proxy-agent 121 in the face of growing subscriber count, while off-loading the proxy ing feature in-network directly in the network path between the publisher node 101 and the subscriber node 102. The first node 111, may also decide in Action 204 to instantiate, in agreement with Action 205, the third proxy-agent 123 in the third programmable switch 143, and a fifth proxy-agent 525 in a fifth programmable switch 530, also a ToR switch, for the sixth server 511 and the seventh server 514. For every additional server, the first node 111 may instruct, according to Action 202, the respective proxy-agents 520 to establish connections with its respective subscribers on one end, and with its respective ToR switch on the other. That is, the fourth proxy-agent 124 in the fourth programmable switch 144 for the third server 433, the fourth server 434 and the fifth server 435, and a fifth proxy-agent 525 in the fifth programmable switch 530, also a ToR switch, for the sixth server 511 and the seventh server 514. Each of the fourth proxy-agent 124 and the fifth proxy-agent 525 may be instructed according to Action 202, to establish respective connections with the third proxy- agent 123, located in the third programmable switch 143, upstream of the fourth programmable switch 144 and the fifth programmable switch 530. The third proxy-agent 123 may have also been instructed to establish a connection with the first proxy agent 121. In order to establish the connections depicted in Figure 5, the first node 111 may have rearranged, according to Action 207, the connections between the publisher node 101 and the subscriber node 102 depicted in Figure 4, based on the instantiated additional proxy agents 123 and 124, thereby enabling communication exchanges between the publisher node 101 and the subscriber node 102 via the first proxy agent 121 and the second proxy agent 122, and via the additional proxy agents 123, 124. By instantiating more in-network proxies as subscribers and messaging volumes increase across multiple racks, on further upstream switches beyond the subscribers’s ToR switch, thereby establishing a cascading hierarchy of in-network proxies, the first node 111 may reduce the load on the first proxy-agent 121 in the face of growing subscriber count, while off-loading the proxying feature in-network directly in the network path between the publisher node 101 and the subscriber node 102, and hence avoiding extra network hops and latency that would otherwise be used if a brokered system were to be used.
Figure 6a is a schematic representation of some of the actions that may be performed in the communications network 100, according to a non-limiting example of embodiments herein. In this example, the initial Pub-Sub and session establishment is illustrated. In accordance with Action 201 , the first node 111, a cloud controller in this example, via a global scheduler 601, launches the first proxy-agent 121 on the first server 131, where the publisher node 101 is located, and the second proxy agent 122 on the second server 132, where the subscriber node 102 is located. Also in accordance with Action 201, the first node 111, via the global scheduler 601, launches the second node 112, denoted as “Monitoring Agent” on the first server 131, and the third node 113 on the second server 132. The first proxy agent 121 and the second proxy agent 122 respectively receive the first instruction to instantiate, in agreement with Action 301. At 602, the first node 111 launches the publisher node 101 on the first server 131. The publisher node 101, at 603, registers with the fourth node 415, the directory service co- located with the first node 111 in this example. The publisher node 101 indicates to the fourth node 415 its identifier (publd), the topicld, an identifier for its port (pub_portld), an identifier for the first server 131 (serverNode), an identifier for a particular flow (flowld), as well as the “Use Publisher APIQ”. In accordance with Action 202, the first node 111, via the fourth node 415, instructs the first proxy agent 121 to connect with and subscribe to the publisher node 101, by sending the second instruction, as described earlier. The first proxy agent 121, in agreement with Action 302, receives the second instruction, and according to Action 303(i), it establishes a connection with the publisher node 101. It further subscribes to the topicld, flowld, pubJP, pub_proxy_port indicated by the first node 111 in the second instruction. At 604, the publisher node 101 acknowledges (ACK) the establishment of the connection, by indication a session identifier (sessionld). The first proxy-agent 121 may then, at 605, update its mapping table, as described earlier. At 606, the first proxy agent 121 indicates to the first node 111, via the fourth node 415, that it has successfully connected to the publisher node 101, indicating its own identifier, pub_proxyld, and that of the publisher node 101, publd. At 607, the first node 111, via the fourth node 415, updates its own table with the mapping indicated by the first proxy-agent 121, for the topicld. In agreement with Action 304, the flow of messages and acknowledgements (ACKs) begins between the publisher node 101 and the first proxy agent 121.
Figure 6b is a continuation of Figure 6a. At 608, the first node 111 launches the subscriber node 102 on the second server 132. The subscriber node 102, at 609, registers with the fourth node 415. The subscriber node 102 indicates to the fourth node 415 its identifier (subld), the identifier of the topic it is interested in subscribing to (topicld), an identifier for its port (sub_portld), an identifier for the first server 131 (serverNode), an identifier for a particular flow (flowld), as well as the “Use Subscriber APIQ”. At 610, if no message queue for the topicld exists, the first node 111, via the fourth node 415, creates one, and opens a socket to listen to establish connection from subscribers. The first node 111, also via the fourth node 415, instructs, in accordance with Action 202(iii), the second proxy-agent 122 to establish a connection with the upstream proxy-agent , that is, the first proxy-agent 121, by sending the first instruction indicating the pub_proxyld, the topicld, the flowld, the serverNode, the port of the first proxy-agent 121 it may need to listen to (pub_proxy_listen_port). The second proxy- agent 122 receives the second instruction in agreement with Action 302 and, in agreement with Action 303, it establishes a connection with the first proxy-agent 121. In agreement with Action 304, the flow of messages and acknowledgements (ACKs) begins between the second proxy-agent 122 and the first proxy-agent 121. At 611, the second proxy-agent 122 may send to the fourth node 415, information confirming the successfully established connection between the first proxy-agent 121 and the second proxy-agent 122, indicating its respective identifiers. It may also, indicate that it is now listening on tuple {sub_proxy_IP, sub_proxy_listen_port}, so that the subscriber 102 may connect and establish a session with the proxy-agent 122. At 612, the first node 111, via the fourth node 415, updates its own table with the mapping indicated by the second proxy-agent 122, for the topicld. In agreement with Action 304, the flow of messages and acknowledgements (ACKs) begins between the publisher node 101 and the first proxy agent 121. The first node 111, also via the fourth node 415, instructs, in accordance with Action 202(ii), the subscriber node 102 to connect with and subscribe to the second proxy agent 122, by sending the first instruction indicating the sub_proxyld, the identifier of the second server 132, the sub_proxy_IP, and the sub_proxy_listen_port. At 613, the subscriber node 102 establishes a connection with the second proxy-agent 122 and subscribes to the topicld, sub_proxy_IP and the port of the proxy to the subscriber node 102, denoted as sub_proxy_port. At 614, the second proxy-agent 122 updates its mapping table for each topicld , by mapping each (sessionld & pub_proxy_port) to the list of subscriber ports subcriber_port1 , subcriber_port2 . In agreement with Action
304, the flow of messages and acknowledgements (ACKs) begins between the subscriber node 102 and the second proxy-agent 122.
Figure 7 is a schematic representation of some of the actions that may be performed in the communications network 100, according to a non-limiting example of embodiments herein. The top panel depicts further details on how Action 304 may be performed for the initial message flow. At 701, the publisher node 101, publishes messages onto the first proxy agent 121 , which the first proxy agent 121 acknowledges at 702. At 703, the first proxy agent 121 forwards the published messages to the downstream proxy-agents, the second proxy-agent 122 in this example, which the second proxy-agent 122 acknowledges at 704. At 705, the second proxy-agent 122 forwards the messages to the subscriber node 102, which the subscriber node 102 acknowledges at 706. The bottom panel depicts further details on how Action 203 may be performed for the monitoring. At 707, the first proxy agent 121 sends a list of entities to be monitored to the second node 112, the monitoring agent in the first server 131. The list may comprise the publd, the pub_proxyld of the entities to monitor. At 708, the second node 112 continuously monitors the entities and resources on the server. At 709, the second node 112 frequently sends updates of the status about the first server 131 to the first node 111 via the global scheduler 601. The first node 111 receives the information according to Action 203. The process is repeated for the second server 132 and the third node 113, at 710, 711 and 712. The first node 111 receives the information about the second server 132 according to Action 203. Figure 8a is a schematic representation illustrating the dynamic Invocation of proxy- agents and re-establishment of sessions that may be performed in the communications network 100, according to a non-limiting example of embodiments herein. The first node 111 in agreement with Action 203(a) and 203(c), receives information from the second node 112 reporting that it has more downstream proxy-agent/subscribers for a topicld. The first node 111 using the physical topology and in agreement with Action 204, identifies servers, racks, and/or switches with more downstream subscribers. In this example, the additional subscriber nodes 150 are located in additional respective servers, here going up to Server-M 801. To reduce the load on upstream third proxy-agent 123, not shown in the Figure, the first node 111 identifies a potential in-network switch, here the fourth programmable switch 124, intermediate between the affected upstream proxy-agent, here the third proxy-agent 123, and the servers 801, racks, and/or switches with more subscribers 150 . The first node 111, in agreement with Action 205, instantiates the fourth proxy-agent 124 as additional proxy-agent, if not instantiated, in the fourth programmable switch 144, which is a ToR switch. The fourth proxy-agent 124, according to Action 301 , receives the first instruction from the first node 111 to instantiate, and receives the second instruction according to Action 302 to establish connection with upstream first proxy-agent 121. The second instruction comprises the pub_proxyld, pub_proxy_IP, pub_proxy_port, of the first proxy-agent 121 for a topcild. The fourth proxy-agent 124 then opens a socket port and starts listening on the indicated topicld. In accordance with Action 303, the fourth proxy-agent 124 then establishes a session with the upstream proxy-agent, that is, the first proxy agent 121. In agreement with Action 304, the flow of messages and acknowledgements (ACKs) begins between the first proxy agent 121 and the fourth proxy- agent 124. At 803, the fourth proxy-agent 124 sends further information to the first node 111 to indicate that it has successfully connected to the publisher node 101, indicating its publd, and an identifier of the fourth programmable switch 144, tor_switch_proxy I d .
Figure 8b is a continuation of Figure 8a. The first node 111, according to Action 207, rearranges the existing connections between the publisher node 101 and the subscriber node 102, based on the instantiated fourth proxy-agent 124 and/or the removed already instantiated one or more proxy-agents 123 The first node 111, instructs each of the first proxy agent 121 and an additional proxy-agent 804 on the Server-M 801 to a) establish session with the fourth proxy-agent 124 by indicating its tor_switch_proxyld, tor_proxy_IP, tor_proxy_port, and topicID, and to b) tear down the old session with the third proxy-agent 123, by indicating its identifier, the pub_proxyld. In agreement with Action 307, the second proxy agent 122 establishes a session with the new upstream proxy-agent, the fourth proxy-agent 124. In a new iteration of Action 304, the flow of messages and ACKs between the second proxy agent 122 and the fourth proxy-agent 124 begins. The additional proxy-agent 804 also, in as another example of Action 303, establishes a session with upstream fourth proxy-agent 124, and as a further example of Action 307, the flow of messages and ACKs begins between the additional proxy- agent 804 and the fourth proxy-agent 124. Both of the second proxy-agent 122 and the additional proxy-agent 802 terminate, in agreement with Action 307, their respective old sessions with the first proxy agent 121 , indicated by its pub_proxyld. At 805, the publisher node 101 sends messages to the first proxy agent 121 , which it acknowledges at 806. At 807, in agreement with Action 304, the first proxy agent 121 forwards the messages received to the downstream, here the fourth proxy-agent 124 on the ToR switch, the fourth programmable switch 144. The fourth proxy-agent 124, at 808, forwards the messages received to the downstream proxy-agent, the second proxy-agent 122 on the second server 132. Finally, at 809, the second proxy-agent 122 sends the messages to the subscriber node 102. The same is repeated for the additional proxy-agent 802 on the Server-M 801. At 810, the fourth proxy- agent 124 forwards the messages received to the additional downstream proxy-agent, here the additional proxy-agent 802 in the Server-M 801. At 811 , the additional proxy-agent 802 sends the messages to the additional subscriber nodes 150.
Figure 9 is a schematic representation illustrating the identification of proxy-agent failure and recovery mechanism that may be adopted by the first node 111 according to a non-limiting example of embodiments herein. The first node 111 is represented in Figure 9 as the “Controller”. The particular scenario illustrated in Figure 9 considers the failed proxy-agent location, either on a server node, e.g., of the first server 131 and the second server 132, or on a switch, e.g., of the first programmable switch 141 , the second programmable switch 142, and the third programmable switch 143, and performs the recovery mechanism based on it. If the first node 111 gets to know about losing a proxy-agent running on a particular node in accordance with Action 203, the first node 111 may try to re- instantiate the proxy-agent on the same node, as a part of determining, in Action 204, whether a new proxy-agent needs to be re instantiated or not. If it is able to re-instantiate the proxy-agent successfully, then the first node 111 may request the existing upstream and downstream proxy-agents to reconnect and establish sessions with the newly instantiated proxy-agent, in accordance with Action 205 and Action 207. Also, the first node 111 may update, at 901, the directory service managed by the fourth node 415 with the new proxy-agent and its corresponding peer session mappings. If the first node 111 is unable to re-instantiate the proxy-agent on the required node after ‘N’ attempts, the first node 111 may start to initiate the recovery mechanism. Based on the type of the node, server or switch, of the failed proxy-agent, the first node 111 may decide, at 902 or 903, the recovery method.
If, as determined at 902, the proxy-agent that failed is on a switch, e.g., one of the first programmable switch 141, the second programmable switch 142, and the third programmable switch 143, then the first node 111, according to Action 204, identifies another potential switch, based on upstream and downstream erstwhile sessions and/or subscribers of the failed proxy- agent, instantiates, according to Action 205, an additional proxy-agent on the switch, if not running already as determined according to Action 204, and then requests the upstream and down-stream proxy-agents, according to Action 207, to establish sessions with the newly instantiated proxy-agent and updates its directory mapping with the fourth node. In case the first node 111 is unable to identify a new potential switch, the first node 111 may directly connect the failed proxy-agent’s upstream proxy-agent with the downstream proxy- agent/subscribers. In the worst case, if the first node 111 is unable to find a suitable solution to recover, the last resort actions mentioned in the below paragraph may be applied. If, as determined at 903, the proxy-agent is down on a server, e.g., of the first server 131 and the second server 132, then the first node 111 may, according to Action 207, try to map the subscribers on the affected server to directly re-establish session with suitable upstream proxy-agents. If successful, the first node 111 may, at 901, update the new session details in the directory service at the fourth node 415.
As a last resort effort, if the first node 111 is unable to instantiate the proxy-agent, according to Action 205, or identify another suitable proxy-agent in accordance with Action 204, then the last resort action may be to connect the subscriber(s), e.g., the subscriber node 102, directly to the publisher(s), e.g., the publisher node 101.
It may be noted that rerouting the traffic, according to Action 207, across the affected switch may depend on the network deployment in the datacenter. In case of a Software Defined Network (SDN), the first node 111 may instantiate, according to Action 205, a proxy- agent on a suitable switch and may reroute, according to Action 207, the flow via the new switch with suitable flow rules.
Figure 10 is a schematic representation illustrating a sliding-window mechanism for cache management that may be implemented in Action 305, e.g., to maintain cache state, in the proxy-agent 121, 122, 123, 124, according to a non-limiting example of embodiments herein. In case of multiple slow-readers connected to one of the proxy-agent 121, 122, 123, 124, the proxy-agent 121, 122, 123, 124 may need to maintain data on what messages may be being delivered to which subscribers. The proxy-agent 121, 122, 123, 124 may use a multiple-sliding-window algorithm for the message caching and delivery. Messages from each publisher, as identified by publisherld, may have a sequence number which may be appended to the end of the corresponding flow-list in ascending order. A sliding window may be maintained for each downstream receiver/subscriber. As the packets are forwarded to a subscriber, the corresponding receiver’s window may expand till the sequence number it has forwarded the message. Once the subscribers acknowledge for the sequence numbers, the corresponding sliding window for the particular publisher and for the particular subscriber may shrink till the sequence number for which the ACK may be received. This is illustrated in Figure 10 with two different flow lists for two different publishers, Pub-1 and Pub-2, and for four different subscribers to each flow: Subscriber-1, Subscriber-2, Subscriber-3 and Subscriber-4. This sliding-window mechanism may be understood to make the task of discarding the message from the cache easier. A min(windowl{head}, window2{head} ...) may provide the minimum sequence number from which the cache messages may be discarded. Also, the same min(window{head }) may provide the information about potential slow-readers. A similar mechanism may be used in other upstream-proxies to cache and forward to downstream proxies. Without explicitly requesting to cache, if the sliding-window is too large for a long time, then the proxy-agent may discard the messages from cache. This may help the proxy- agent 121, 122, 123, 124 running out of cache. When the cache buffer may be above a threshold, e.g., close to full, the downstream proxy-agent 121, 122, 123, 124 may send a signal to the upstream proxy-agent to start caching the message above the sequence number of a publisherld provided in the control signal packet. The corresponding sliding-window may then be paused and the window{head] will not be counted for calculation in the upstream proxy-agent. Each message above the requested sequence number may be stored in a designated memory. Once the downstream proxy-agent may request to forward the cached messages, messages may be added back to the flow-list queue and the sliding-window may be resumed for the particular downstream receiver.
As a brief overview of the methods disclosed, embodiments herein may be understood to provide systems and methods for a pub-sub system using in-network switches. According to embodiments herein, proxy-agents may transparently abstract the publishers and subscribers communicating with each other. Proxy-agents on in-network switches may be dynamically invoked based on the number of downstream subscribers. Sessions between the proxy- agents may be hierarchically cascaded and re-established to reduce the number of messages. Incoming messages may be cached on the switches on-demand, and the caching logic may be dynamically extended to upstream switches as the buffers in the downstream switches may get depleted. One advantage of embodiments herein is that, as compared to a broker-less Pub-Sub model, the embodiments herein reduce overhead on publishers. This may be understood to be enabled by the fact that, first, embodiments herein lessen the number of messages sent by publisher, and the number of acknowledgements sent back to the publisher. Second, embodiments herein vastly reduce the risk of publisher failure due to buffer depletion. Third, embodiments herein reduce the impact of slow subscribers on the publisher.
Another advantage of embodiments herein is that, as compared to a brokered Pub-Sub model, embodiments herein reduce the latency of message delivery. First, because unlike the brokered model, where the messages are always sent to a designated broker which may not be in the same path between publisher and subscriber, in embodiments herein the proxy- agents may always be provisioned in-line between the publisher and subscriber, thus making packets travel less network hops compared to a brokered Pub-Sub model. Second, the instantiation of proxy-agents reduces the serialization load, that is, sending to different subscribers of the topic, in a sequence, at the publisher. This load may be understood to get distributed between proxy(leaf) nodes, thus, increasing the likelihood of messages reaching the subscriber early on a topology with a large number of subscribers.
A further advantage of embodiments herein is that the retransmission of messages to slow subscribers on their recovery is generally faster - as compared to a broker-less or broker Pub-Sub model. That is because, for slow readers, messages may be cached on proxy- agents) closest to the subscribers, as opposed to caching in the publisher or a designated broker.
Yet another advantage of embodiments herein is that, in a broker Pub-Sub model, the brokers typically run at static locations, e.g., servers, which may not be adaptive to changes in network or subscriber’s location. However, with the embodiments herein, it may be possible to orchestrate and dynamically place proxy-agents at appropriate locations with respect to changes in the communications network and the subscribers count and location.
Moreover, using an in-band telemetry framework to communicate between the switches may be able to provide low-overhead control plane signalling.
Furthermore, hierarchical in-network caching may enable to extend the caching space into the network domain, and this may increase overall caching capabilities.
Embodiments herein may be understood to be transparent to the publishers and subscribers.
Yet a further advantage of embodiments herein is that, by applications in a cloud provider platform being able to use their existing cloud provider API, the existing pub-sub applications may be understood to not need to be rewritten to leverage the benefits from the embodiments herein. Figure 11 depicts two different examples in panels a) and b), respectively, of the arrangement that the first node 111 may comprise. In some embodiments, the first node 111 may comprise the following arrangement depicted in Figure 11a. The first node 111 may be understood to be for handling communications between the publisher node 101 and the subscriber node 102 over the communications network 100.
Several embodiments are comprised herein. It should be noted that the examples herein are not mutually exclusive. One or more embodiments may be combined, where applicable.
All possible combinations are not described to simplify the description. Components from one embodiment may be tacitly assumed to be present in another embodiment and it will be obvious to a person skilled in the art how those components may be used in the other exemplary embodiments. In Figure 11, optional units are indicated with dashed boxes.
The detailed description of some of the following corresponds to the same references provided above, in relation to the actions described for the first node 111, and will thus not be repeated here. For example, in some examples, the second instruction may be configured to comprise the publd for the publisher node 101.
The first node 111 is configured to perform the instantiating of Action 201, e.g., by means of an instantiating unit 1101 within the first node 111, configured to instantiate: a) the first proxy-agent 121 of the publisher node 101 in-line between the publisher node 101 and the subscriber node 102, and b) the second proxy-agent 122 of the subscriber node 102 in-line between the publisher node 101 and the subscriber node 102.
The first node 111 is further configured to perform the instructing of Action 202, e.g., by means of an instructing unit 1102 within the first node 111, configured to instruct: i) the first proxy-agent 121 to connect with and subscribe to the publisher node 101, ii) the subscriber node 102 to connect with and subscribe to the second proxy-agent 122, and iii) at least one of the first proxy-agent 121 and the second proxy-agent 122 to establish a connection with each other, thereby the first node 111 being configured to enable communication exchanges between the publisher node 101 and the subscriber node 102 via the first proxy-agent 121 and the second proxy-agent 122.
In some embodiments, a) the first proxy-agent 121 may be configured to be instantiated on: i) the same first server 131 as the publisher node 101, ii) the first programmable switch 141 on the first server 131, or iii) the first programmable switch 141 in-line between the publisher node 101 and the subscriber node 102, and b) the second proxy-agent 122 may be configured to be instantiated on: i) the same second server 132 as the subscriber node 102, ii) the second programmable switch 142 on the second server 132, or iii) the second programmable switch 142 in-line between the publisher node 101 and the subscriber node 102. In some embodiments, the first node 111 may be further configured to perform the receiving of Action 203, e.g., by means of a receiving unit 1103 within the first node 111, configured to receive the information on at least one of: a) the first traffic at the first proxy-agent 121 from at least one of: the second node 112 configured to monitor the publisher node 101, and the the first proxy-agent 121, b) the second traffic at the second proxy-agent 122 from at least one or: the third node 113 configured to monitor the subscriber node 102, and the second proxy-agent 122, c) the number of subscriber nodes 150 to the publisher node 101, d) the proxy-agent failure, e) the switch failure, f) the forward and cache request from a proxy- agent 121, 122, 123 in-line between the publisher node 101 and the subscriber node 102.
In some embodiments, the first node 111 may be further configured to perform the determining of Action 204, e.g., by means of a determining unit 1104 within the first node 111, configured to determine, based on the information configured to be received, whether or not to at least one of: a) instantiate the one or more additional proxy-agents, b) re- instantiate the failed proxy-agent, and c) remove the already instantiated one or more proxy-agents, thereby the first node 111 being configured to adapt the number of proxy-agents to traffic changes.
In some embodiments, based on the result of the determination, the first node 111 further may be further configured to one or more of the following three optional actions.
In some embodiments, the first node 111 may be further configured to perform the instantiating of Action 205, e.g., by means of the instantiating unit 1101 within the first node 111, configured to instantiate, the one or more additional proxy-agents 124 or re-instantiate the failed proxy-agent.
In some embodiments, the first node 111 may be further configured to perform the removing of Action 206, e.g., by means of a removing unit 1105 within the first node 111, configured to remove one or more of the already instantiated one or more proxy-agents 123.
In some embodiments, the first node 111 may be further configured to perform the rearranging of Action 207, e.g., by means of a rearranging unit 1106 within the first node 111, configured to rearrange the existing connections between the publisher node 101 and the subscriber node 102, based on the one or more additional proxy-agents 124 configured to be the instantiated and/or the already instantiated one or more proxy-agents 123 configured to be removed.
Thereby the first node 111 may be configured to enable communication exchanges between the publisher node 101 and the subscriber node 102 via the first proxy-agent 121 and the second proxy-agent 122, via the one or more additional proxy-agents 124 and/or with the proxy-agents configured to be rearranged.
The embodiments herein in the first node 111 may be implemented through one or more processors, such as a processor 1107 in the first node 111 depicted in Figure 110a, together with computer program code for performing the functions and actions of the embodiments herein. A processor, as used herein, may be understood to be a hardware component. The program code mentioned above may also be provided as a computer program product, for instance in the form of a data carrier carrying computer program code for performing the embodiments herein when being loaded into the first node 111. One such carrier may be in the form of a CD ROM disc. It is however feasible with other data carriers such as a memory stick. The computer program code may furthermore be provided as pure program code on a server and downloaded to the first node 111.
The first node 111 may further comprise a memory 1108 comprising one or more memory units. The memory 1108 is arranged to be used to store obtained information, store data, configurations, schedulings, and applications etc. to perform the methods herein when being executed in the first node 111.
In some embodiments, the first node 111 may receive information from, e.g., the publisher node 101, the subscriber node 102, the second node 112, the third node 113, the fourth node 114, the fourth node 115, the first proxy-agent 121 , the second proxy-agent 122, the third proxy-agent 123, the fourth proxy-agent 124, the additional proxy-agents, the first server 131, the second server 132, the first programmable switch 141, the second programmable switch 142, the third programmable switch 143, the fourth programmable switch 144, and/or, any other nodes, servers, proxy-agents or programmable switches, through a receiving port 1109. In some embodiments, the receiving port 1109 may be, for example, connected to one or more antennas in first node 111. In other embodiments, the first node 111 may receive information from another structure in the communications network 100 through the receiving port 1109. Since the receiving port 1109 may be in communication with the processor 1107, the receiving port 1109 may then send the received information to the processor 1107. The receiving port 1109 may also be configured to receive other information.
The processor 1107 in the first node 111 may be further configured to transmit or send information to e.g., the publisher node 101, the subscriber node 102, the second node 112, the third node 113, the fourth node 114, the fourth node 115, the first proxy-agent 121, the second proxy-agent 122, the third proxy-agent 123, the fourth proxy-agent 124, the additional proxy- agents, the first server 131, the second server 132, the first programmable switch 141, the second programmable switch 142, the third programmable switch 143, the fourth programmable switch 144, and/or, any other nodes, servers, proxy-agents or programmable switches, and/or or another structure in the communications network 100, through a sending port 1110, which may be in communication with the processor 1107, and the memory 1108.
Those skilled in the art will also appreciate that the units 1101-1106 described above may refer to a combination of analog and digital circuits, and/or one or more processors configured with software and/or firmware, e.g., stored in memory, that, when executed by the one or more processors such as the processor 1107, perform as described above. One or more of these processors, as well as the other digital hardware, may be included in a single Application-Specific Integrated Circuit (ASIC), or several processors and various digital hardware may be distributed among several separate components, whether individually packaged or assembled into a System-on-a-Chip (SoC).
Also, in some embodiments, the different units 1101-1106 described above may be implemented as one or more applications running on one or more processors such as the processor 1107.
Thus, the methods according to the embodiments described herein for the first node 111 may be respectively implemented by means of a computer program 1111 product, comprising instructions, i.e. , software code portions, which, when executed on at least one processor 1107, cause the at least one processor 1107 to carry out the actions described herein, as performed by the first node 111. The computer program 1111 product may be stored on a computer-readable storage medium 1112. The computer-readable storage medium 1112, having stored thereon the computer program 1111, may comprise instructions which, when executed on at least one processor 1107, cause the at least one processor 1107 to carry out the actions described herein, as performed by the first node 111. In some embodiments, the computer-readable storage medium 1112 may be a non-transitory computer-readable storage medium, such as a CD ROM disc, or a memory stick. In other embodiments, the computer program 1111 product may be stored on a carrier containing the computer program 1111 just described, wherein the carrier is one of an electronic signal, optical signal, radio signal, or the computer-readable storage medium 1112, as described above.
The first node 111 may comprise a communication interface configured to facilitate, or an interface unit to facilitate, communications between the first node 111 and other nodes or devices, e.g., the publisher node 101, the subscriber node 102, the second node 112, the third node 113, the fourth node 114, the fourth node 115, the first proxy-agent 121, the second proxy-agent 122, the third proxy-agent 123, the fourth proxy-agent 124, the additional proxy- agents, the first server 131, the second server 132, the first programmable switch 141, the second programmable switch 142, the third programmable switch 143, the fourth programmable switch 144, and/or, any other nodes, servers, proxy-agents or programmable switches, and/or or another structure in the communications network 100. The interface may, for example, include a transceiver configured to transmit and receive radio signals over an air interface in accordance with a suitable standard.
In other embodiments, the first node 111 may comprise the following arrangement depicted in Figure 11b The first node 111 may comprise a processing circuitry 1107, e.g., one or more processors such as the processor 1107, in the first node 111 and the memory 1108. The first node 111 may also comprise a radio circuitry 1113, which may comprise e.g., the receiving port 1109 and the sending port 1110. The processing circuitry 1107 may be configured to, or operable to, perform the method actions according to Figure 2, and/or any of Figures 4-9, in a similar manner as that described in relation to Figure 11a. The radio circuitry 1113 may be configured to set up and maintain at least a wireless connection with the publisher node 101, the subscriber node 102, the second node 112, the third node 113, the fourth node 114, the fourth node 115, the first proxy-agent 121 , the second proxy-agent 122, the third proxy-agent 123, the fourth proxy-agent 124, the additional proxy-agents, the first server 131, the second server 132, the first programmable switch 141, the second programmable switch 142, the third programmable switch 143, the fourth programmable switch 144, and/or, any other nodes, servers, proxy-agents or programmable switches, and/or or another structure in the communications network 100. Circuitry may be understood herein as a hardware component.
Hence, embodiments herein also relate to the first node 111 operative to operate in the communications network 100. The first node 111 may comprise the processing circuitry 1107 and the memory 1108, said memory 1108 containing instructions executable by said processing circuitry 1107, whereby the first node 111 is further operative to perform the actions described herein in relation to the first node 111, e.g., in Figure 2, and/or any of Figures 4-9.
Figure 12 depicts two different examples in panels a) and b), respectively, of the arrangement that the proxy-agent 121, 122, 123, 124, may comprise. In some embodiments, the proxy-agent 121, 122, 123, 124 may comprise the following arrangement depicted in Figure 12a. The proxy-agent 121, 122, 123, 124 may be understood to be for handling communications between the publisher node 101 and the subscriber node 102. The proxy- agent 121, 122,123, 124, the publisher node 101 and the subscriber node 102 may be configured to operate in the communications network 100.
Several embodiments are comprised herein. It should be noted that the examples herein are not mutually exclusive. One or more embodiments may be combined, where applicable.
All possible combinations are not described to simplify the description. Components from one embodiment may be tacitly assumed to be present in another embodiment and it will be obvious to a person skilled in the art how those components may be used in the other exemplary embodiments. In Figure 12, optional units are indicated with dashed boxes.
The detailed description of some of the following corresponds to the same references provided above, in relation to the actions described for the proxy-agent 121, 122, 123, 124, and will thus not be repeated here. For example, in some examples, the second instruction may be configured to comprise the publd for the publisher node 101.
The proxy-agent 121, 122, 123, 124 is configured to perform the receiving of Action 301, e.g. by means of a receiving unit 1201 within the proxy-agent 121, 122, 123, 124, configured to, receive the first instruction from the first node 111 configured to operate in the communications network 100 to instantiate as one of: a) the first proxy-agent 121 of the publisher node 101 in-line between the publisher node 101 and the subscriber node 102, b) the second proxy-agent 122 of the subscriber node 102 in-line between the publisher node 101 and the subscriber node 102, and c) the third proxy-agent 123 in-line between the publisher node 101 and the subscriber node 102.
The proxy-agent 121, 122, 123, 124 is also configured to perform the receiving of Action 302, e.g., by means of the receiving unit 1201 within the proxy-agent 121, 122, 123, 124, configured to, receive the second instruction from the first node 111 to one of: i) as first proxy- agent 121, to connect with and subscribe to the publisher node 101, ii) as first proxy-agent 121 or second proxy-agent 122, to establish a connection with each other, thereby being configured to enable communication exchanges between the publisher node 101 and the subscriber node 102 via the first proxy-agent 121 and the second proxy-agent 122, and iii) as the third proxy-agent 123, to connect with one of: the first proxy-agent 121, the second proxy- agent 122 and the fourth proxy-agent 124 in-line between the publisher node 101 and the subscriber node 102.
The proxy-agent 121, 122, 123, 124 is further configured to perform the establishing of Action 303, e.g., by means of an establishing unit 1202 within the proxy-agent 121, 122, 123, 124, configured to, establish the connection with one of: i) as first proxy-agent 121 with the second proxy-agent 122 and/or with the publisher node 101, ii) as second proxy-agent 122, with the first proxy-agent 121, and iii) as a third proxy-agent 123, with one of: the first proxy- agent 121, the second proxy-agent 122 and the fourth proxy-agent 124 in-line between the publisher node 101 and the subscriber node 102.
The proxy-agent 121, 122, 123, 124 is further configured to perform the establishing of Action 304, e.g., by means of an exchanging unit 1203 within the proxy-agent 121, 122, 123, 124, configured to, exchange communications with at least one of: i) as first proxy-agent 121, with the second proxy-agent 122 and the publisher node 101, ii) as second proxy-agent 122, with the first proxy-agent 121 and the subscriber node 102, and c) as the third proxy-agent 123, with one of: the first proxy-agent 121, the second proxy-agent 122 and the fourth proxy- agent 124.
In some embodiments, the proxy-agent 121, 122 may be configured to be instantiated in one of: a) as first proxy-agent 121 on: i) the same second server 132 as the publisher node 101, ii) the first programmable switch 141 on the first server 131, or iii) the first programmable switch 141 in-line between the publisher node 101 and the subscriber node 102, b) as the second proxy-agent 122 on: i) the same second server 132 as the subscriber node 102, ii) the second programmable 142 switch comprised on the second server 132, or iii) the second programmable switch 142 in-line between the publisher node 101 and the subscriber node
102, and c) as the third proxy-agent 123, in the third programmable 143 switch in-line between the publisher node 101 and the subscriber node 102.
In some embodiments, the proxy-agent 121, 122, 123, 124 may be further configured to perform the caching of Action 305, e.g., by means of a caching unit 1204 within the proxy- agent 121, 122, 123, 124, configured to, cache undelivered messages to subscribers.
In some of such embodiments, the proxy-agent 121, 122, 123, 124 may be further configured to perform the rearranging of Action 1206, e.g., by means of a rearranging unit
1205 configured to, rearrange existing connections between the publisher node 101 and the subscriber node 102, based on an instruction received from the first node 111.
In some embodiments, the proxy-agent 121, 122, 123, 124 may be further configured to, after determining that availability of the cache comprised in the proxy-agent 121, 122, 123 is below the threshold, perform the sending of Action 307, e.g., by means of a sending unit
1206 within the proxy-agent 121, 122, 123, 124, configured to, send the request to one of: the first node 111 and another proxy-agent in-line between the publisher node 101 and the subscriber node 102 to forward and cache the one or more undelivered messages to the subscribers.
The embodiments herein in the proxy-agent 121, 122, 123, 124 may be implemented through one or more processors, such as a processor 1207 in the proxy-agent 121, 122, 123, 124 depicted in Figure 12a, together with computer program code for performing the functions and actions of the embodiments herein. A processor, as used herein, may be understood to be a hardware component. The program code mentioned above may also be provided as a computer program product, for instance in the form of a data carrier carrying computer program code for performing the embodiments herein when being loaded into the proxy-agent 121, 122, 123, 124. One such carrier may be in the form of a CD ROM disc. It is however feasible with other data carriers such as a memory stick. The computer program code may furthermore be provided as pure program code on a server and downloaded to the proxy-agent 121, 122, 123, 124.
The proxy-agent 121, 122, 123, 124 may further comprise a memory 1208 comprising one or more memory units. The memory 1208 is arranged to be used to store obtained information, store data, configurations, schedulings, and applications etc. to perform the methods herein when being executed in the proxy-agent 121, 122, 123, 124. In some embodiments, the proxy-agent 121, 122, 123, 124 may receive information from, e.g., the publisher node 101, the subscriber node 102, the first node 111 , the second node 112, the third node 113, the fourth node 114, the fourth node 115, the first proxy-agent 121 , the second proxy-agent 122, the third proxy-agent 123, the fourth proxy-agent 124, the additional proxy-agents, the first server 131, the second server 132, the first programmable switch 141, the second programmable switch 142, the third programmable switch 143, the fourth programmable switch 144, and/or, any other nodes, servers, proxy-agents or programmable switches, in the communications network 100, through a receiving port 1209. In some embodiments, the receiving port 1209 may be, for example, connected to one or more antennas in proxy-agent 121, 122, 123, 124. In other embodiments, the proxy-agent 121, 122, 123, 124 may receive information from another structure in the communications network 120 through the receiving port 1209. Since the receiving port 1209 may be in communication with the processor 1207, the receiving port 1209 may then send the received information to the processor 1207. The receiving port 1209 may also be configured to receive other information.
The processor 1207 in the proxy-agent 121, 122, 123, 124 may be further configured to transmit or send information to e.g., the publisher node 101, the subscriber node 102, the first node 111 , the second node 112, the third node 113, the fourth node 114, the fourth node 115, the first proxy-agent 121, the second proxy-agent 122, the third proxy-agent 123, the fourth proxy-agent 124, the additional proxy-agents, the first server 131, the second server 132, the first programmable switch 141, the second programmable switch 142, the third programmable switch 143, the fourth programmable switch 144, and/or, any other nodes, servers, proxy- agents or programmable switches, and/or or another structure in the communications network 100, through a sending port 1210, which may be in communication with the processor 1207, and the memory 1208.
Those skilled in the art will also appreciate that the units 1201-1206 described above may refer to a combination of analog and digital circuits, and/or one or more processors configured with software and/or firmware, e.g., stored in memory, that, when executed by the one or more processors such as the processor 1207, perform as described above. One or more of these processors, as well as the other digital hardware, may be included in a single Application-Specific Integrated Circuit (ASIC), or several processors and various digital hardware may be distributed among several separate components, whether individually packaged or assembled into a System-on-a-Chip (SoC).
Also, in some embodiments, the different units 1201-1206 described above may be implemented as one or more applications running on one or more processors such as the processor 1207.
Thus, the methods according to the embodiments described herein for the proxy-agent 121, 122, 123, 124 may be respectively implemented by means of a computer program 1211 product, comprising instructions, i.e. , software code portions, which, when executed on at least one processor 1207, cause the at least one processor 1207 to carry out the actions described herein, as performed by the proxy-agent 121, 122, 123, 124. The computer program 1211 product may be stored on a computer-readable storage medium 1212. The computer- readable storage medium 1212, having stored thereon the computer program 1211, may comprise instructions which, when executed on at least one processor 1207, cause the at least one processor 1207 to carry out the actions described herein, as performed by the proxy-agent 121, 122, 123, 124. In some embodiments, the computer-readable storage medium 1212 may be a non-transitory computer-readable storage medium, such as a CD ROM disc, or a memory stick. In other embodiments, the computer program 1211 product may be stored on a carrier containing the computer program 1211 just described, wherein the carrier is one of an electronic signal, optical signal, radio signal, or the computer-readable storage medium 1212, as described above.
The proxy-agent 121, 122, 123, 124 may comprise a communication interface configured to facilitate, or an interface unit to facilitate, communications between the proxy-agent 121, 122, 123, 124 and other nodes or devices, e.g., the network node 114, the second node 112, the third node 113, and/or, any other nodes in the plurality of nodes 112, any of the devices in the respective plurality of devices 170 and/or any node in the cloud 120, and/or or another structure in the communications network 120. The interface may, for example, include a transceiver configured to transmit and receive radio signals over an air interface in accordance with a suitable standard.
In other embodiments, the proxy-agent 121, 122, 123, 124 may comprise the following arrangement depicted in Figure 12b. The proxy-agent 121, 122, 123, 124 may comprise a processing circuitry 1207, e.g., one or more processors such as the processor 1207, in the proxy-agent 121, 122, 123, 124 and the memory 1208. The proxy-agent 121, 122, 123, 124 may also comprise a radio circuitry 1213, which may comprise e.g., the receiving port 1209 and the sending port 1210. The processing circuitry 1207 may be configured to, or operable to, perform the method actions according to Figure 3, and/or any of Figures 4-10, in a similar manner as that described in relation to Figure 12a. The radio circuitry 1213 may be configured to set up and maintain at least a wireless connection with the publisher node 101 , the subscriber node 102, the first node 111 , the second node 112, the third node 113, the fourth node 114, the fourth node 115, the first proxy-agent 121, the second proxy-agent 122, the third proxy-agent 123, the fourth proxy-agent 124, the additional proxy-agents, the first server 131, the second server 132, the first programmable switch 141, the second programmable switch 142, the third programmable switch 143, the fourth programmable switch 144, and/or, any other nodes, servers, proxy-agents or programmable switches, and/or or another structure in the communications network 100. Circuitry may be understood herein as a hardware component.
Hence, embodiments herein also relate to the proxy-agent 121, 122, 123, 124 operative to operate in the communications network 120. The proxy-agent 121, 122, 123, 124 may comprise the processing circuitry 1207 and the memory 1208, said memory 1208 containing instructions executable by said processing circuitry 1207, whereby the proxy-agent 121, 122,
123, 124 is further operative to perform the actions described herein in relation to the proxy- agent 121, 122, 123, 124, e.g., in Figure 3, and/or any of Figures 4-10.
Figure 13 depicts two different examples in panels a) and b), respectively, of the arrangement that the programmable switch 141, 142, 143, 144, may comprise. In some embodiments, the programmable switch 141, 142, 143, 144 may comprise the following arrangement depicted in Figure 13a. The programmable switch 141, 142, 143, 144 may be understood to be for handling communications between the publisher node 101 and the subscriber node 102.
Several embodiments are comprised herein. It should be noted that the examples herein are not mutually exclusive. One or more embodiments may be combined, where applicable.
All possible combinations are not described to simplify the description. Components from one embodiment may be tacitly assumed to be present in another embodiment and it will be obvious to a person skilled in the art how those components may be used in the other exemplary embodiments.
The detailed description of some of the following corresponds to the same references provided above, in relation to the actions described for the proxy-agent 121, 122, 123, 124, and will thus not be repeated here.
The programmable switch 141, 142, 143, 144, comprises the proxy-agent 121, 122, 123,
124, configured as described in Figure 12. This configuration will not be repeated here.
The embodiments herein in the programmable switch 141, 142, 143, 144 may be implemented through one or more processors, such as a processor 1307 in the programmable switch 141, 142, 143, 144 depicted in Figure 13a, together with computer program code for performing the functions and actions of the embodiments herein. A processor, as used herein, may be understood to be a hardware component. The program code mentioned above may also be provided as a computer program product, for instance in the form of a data carrier carrying computer program code for performing the embodiments herein when being loaded into the programmable switch 141, 142, 143, 144. One such carrier may be in the form of a CD ROM disc. It is however feasible with other data carriers such as a memory stick. The computer program code may furthermore be provided as pure program code on a server and downloaded to the programmable switch 141, 142, 143, 144.
The programmable switch 141, 142, 143, 144 may further comprise a memory 1308 comprising one or more memory units. The memory 1308 is arranged to be used to store obtained information, store data, configurations, schedulings, and applications etc. to perform the methods herein when being executed in the programmable switch 141, 142, 143, 144.
In some embodiments, the programmable switch 141, 142, 143, 144 may receive information from, e.g., the publisher node 101, the subscriber node 102, the first node 111 , the second node 112, the third node 113, the fourth node 114, the fourth node 115, the first proxy- agent 121, the second proxy-agent 122, the third proxy-agent 123, the fourth proxy-agent 124, the additional proxy-agents, the first server 131, the second server 132, the first programmable switch 141, the second programmable switch 142, the third programmable switch 143, the fourth programmable switch 144, and/or, any other nodes, servers, proxy-agents or programmable switches, in the communications network 100, through a receiving port 1309. In some embodiments, the receiving port 1309 may be, for example, connected to one or more antennas in programmable switch 141, 142, 143, 144. In other embodiments, the programmable switch 141, 142, 143, 144 may receive information from another structure in the communications network 100 through the receiving port 1309. Since the receiving port 1309 may be in communication with the processor 1307, the receiving port 1309 may then send the received information to the processor 1307. The receiving port 1309 may also be configured to receive other information.
The processor 1307 in the programmable switch 141, 142, 143, 144 may be further configured to transmit or send information to e.g., the publisher node 101, the subscriber node 102, the first node 111 , the second node 112, the third node 113, the fourth node 114, the fourth node 115, the first proxy-agent 121, the second proxy-agent 122, the third proxy-agent 123, the fourth proxy-agent 124, the additional proxy-agents, the first server 131, the second server 132, the first programmable switch 141, the second programmable switch 142, the third programmable switch 143, the fourth programmable switch 144, and/or, any other nodes, servers, proxy-agents or programmable switches, and/or or another structure in the communications network 100, through a sending port 1310, which may be in communication with the processor 1307, and the memory 1308.
Those skilled in the art will also appreciate that the units 1201-1206 described above may refer to a combination of analog and digital circuits, and/or one or more processors configured with software and/or firmware, e.g., stored in memory, that, when executed by the one or more processors such as the processor 1307, perform as described above. One or more of these processors, as well as the other digital hardware, may be included in a single Application-Specific Integrated Circuit (ASIC), or several processors and various digital hardware may be distributed among several separate components, whether individually packaged or assembled into a System-on-a-Chip (SoC).
Also, in some embodiments, the different units 1201-1206 described above may be implemented as one or more applications running on one or more processors such as the processor 1307.
Thus, the methods according to the embodiments described herein for the programmable switch 141, 142, 143, 144 may be respectively implemented by means of a computer program 1311 product, comprising instructions, i.e. , software code portions, which, when executed on at least one processor 1307, cause the at least one processor 1307 to carry out the actions described herein, as performed by the proxy-agent 121, 122, 123, 124. The computer program 1311 product may be stored on a computer-readable storage medium 1312. The computer-readable storage medium 1312, having stored thereon the computer program 1311, may comprise instructions which, when executed on at least one processor 1307, cause the at least one processor 1307 to carry out the actions described herein, as performed by the programmable switch 141, 142, 143, 144. In some embodiments, the computer-readable storage medium 1312 may be a non-transitory computer-readable storage medium, such as a CD ROM disc, or a memory stick. In other embodiments, the computer program 1311 product may be stored on a carrier containing the computer program 1311 just described, wherein the carrier is one of an electronic signal, optical signal, radio signal, or the computer-readable storage medium 1312, as described above.
The programmable switch 141, 142, 143, 144 may comprise a communication interface configured to facilitate, or an interface unit to facilitate, communications between the programmable switch 141, 142, 143, 144 and other nodes or devices, e.g., the network node 114, the second node 112, the third node 113, and/or, any other nodes in the plurality of nodes 112, any of the devices in the respective plurality of devices 170 and/or any node in the cloud 130, and/or or another structure in the communications network 100. The interface may, for example, include a transceiver configured to transmit and receive radio signals over an air interface in accordance with a suitable standard.
In other embodiments, the programmable switch 141, 142, 143, 144 may comprise the following arrangement depicted in Figure 13b. The programmable switch 141, 142, 143, 144 may comprise a processing circuitry 1307, e.g., one or more processors such as the processor 1307, in the programmable switch 141, 142, 143, 144 and the memory 1308. The programmable switch 141, 142, 143, 144 may also comprise a radio circuitry 1312, which may comprise e.g., the receiving port 1309 and the sending port 1310. The processing circuitry 1307 may be configured to, or operable to, perform the method actions according to Figure 3, and/or any of Figures 4-10, in a similar manner as that described in relation to Figure 13a. The radio circuitry 1312 may be configured to set up and maintain at least a wireless connection with the publisher node 101, the subscriber node 102, the first node 111 , the second node 112, the third node 113, the fourth node 114, the fourth node 115, the first proxy- agent 121, the second proxy-agent 122, the third proxy-agent 123, the fourth proxy-agent 124, the additional proxy-agents, the first server 131, the second server 132, the first programmable switch 141, the second programmable switch 142, the third programmable switch 143, the fourth programmable switch 144, and/or, any other nodes, servers, proxy-agents or programmable switches, and/or or another structure in the communications network 100. Circuitry may be understood herein as a hardware component.
Hence, embodiments herein also relate to the programmable switch 141, 142, 143, 144 operative to operate in the communications network 100. The programmable switch 141, 142, 143, 144 may comprise the proxy-agent 121, 122, 123, 124, the processing circuitry 1307 and the memory 1308, said memory 1308 containing instructions executable by said processing circuitry 1307, whereby the programmable switch 141, 142, 143, 144 is further operative to perform the actions described herein in relation to the proxy-agent 121, 122, 123, 124, e.g., in Figure 3, and/or any of Figures 4-10.
When using the word "comprise" or “comprising”, it shall be interpreted as non- limiting, i.e. meaning "consist at least of".
The embodiments herein are not limited to the above described preferred embodiments. Various alternatives, modifications and equivalents may be used. Therefore, the above embodiments should not be taken as limiting the scope of the invention.
Generally, all terms used herein are to be interpreted according to their ordinary meaning in the relevant technical field, unless a different meaning is clearly given and/or is implied from the context in which it is used. All references to a/an/the element, apparatus, component, means, step, etc. are to be interpreted openly as referring to at least one instance of the element, apparatus, component, means, step, etc., unless explicitly stated otherwise. The steps of any methods disclosed herein do not have to be performed in the exact order disclosed, unless a step is explicitly described as following or preceding another step and/or where it is implicit that a step must follow or precede another step. Any feature of any of the embodiments disclosed herein may be applied to any other embodiment, wherever appropriate. Likewise, any advantage of any of the embodiments may apply to any other embodiments, and vice versa. Other objectives, features and advantages of the enclosed embodiments will be apparent from the following description.
As used herein, the expression “at least one of:” followed by a list of alternatives separated by commas, and wherein the last alternative is preceded by the “and” term, may be understood to mean that only one of the list of alternatives may apply, more than one of the list of alternatives may apply or all of the list of alternatives may apply. This expression may be understood to be equivalent to the expression “at least one of:” followed by a list of alternatives separated by commas, and wherein the last alternative is preceded by the “or” term. Any of the terms processor and circuitry may be understood herein as a hardware component.
As used herein, the expression “in some embodiments” has been used to indicate that the features of the embodiment described may be combined with any other embodiment or example disclosed herein. As used herein, the expression “in some examples” has been used to indicate that the features of the example described may be combined with any other embodiment or example disclosed herein.

Claims

CLAIMS:
1. A method, performed by a first node (111), the method being for handling communications between a publisher node (101) and a subscriber node (102) over a communications network (100), the method comprising:
- instantiating (201): a) a first proxy-agent (121) of the publisher node (101) in-line between the publisher node (101) and the subscriber node (102), and b) a second proxy-agent (122) of the subscriber node (102) in-line between the publisher node (101) and the subscriber node (102), and
- instructing (202): o the first proxy-agent (121) to connect with and subscribe to the publisher node
(101), o the subscriber node (102) to connect with and subscribe to the second proxy- agent (122), and o at least one of the first proxy-agent (121) and the second proxy-agent (122) to establish a connection with each other, thereby enabling communication exchanges between the publisher node (101) and the subscriber node (102) via the first proxy-agent (121) and the second proxy- agent (122)
2. The method according to claim 1, wherein: a. the first proxy-agent (121) is instantiated on: i) a same first server (131) as the publisher node (101), ii) a first programmable switch (141) on the first server (131), or (iii) a first programmable switch (141) in-line between the publisher node (101) and the subscriber node (102), and b the second proxy-agent (122) is instantiated on: i) a same second server (132) as the subscriber node (102), ii) a second programmable switch (142) on the second server (132), or (iii) a second programmable switch (142) in-line between the publisher node (101) and the subscriber node (102).
3. The method according to any of claims 1-2, wherein the method further comprises:
- receiving (203) information on at least one of: a) first traffic at the first proxy-agent (121) from at least one of:
• a second node (112) monitoring the publisher node (101), and
• the first proxy-agent (121), b) second traffic at the second proxy-agent (122) from at least one or:
• a third node (113) monitoring the subscriber node (102), and
• the second proxy-agent (122), c) number of subscriber nodes (150) to the publisher node (101), d) proxy-agent failure, e) switch failure, f) a forward and cache request from a proxy-agent (121, 122, 123) in-line between the publisher node (101) and the subscriber node (102), and
- determining (204), based on the received information, whether or not to at least one of: a) instantiate one or more additional proxy-agents, b) re-instantiate a failed proxy-agent, and c) remove already instantiated one or more proxy-agents, thereby adapting a number of proxy-agents to traffic changes.
4. The method according to claim 3, wherein, based on a result of the determination, the method further comprises one or more of:
- instantiating (205), the one or more additional proxy-agents (124) or re-instantiating the failed proxy-agent,
- removing (206) one or more of the already instantiated one or more proxy-agents (123), and
- rearranging (207) existing connections between the publisher node (101) and the subscriber node (102), based on the instantiated one or more additional proxy- agents (124) and/or the removed already instantiated one or more proxy-agents
(123), thereby enabling communication exchanges between the publisher node (101) and the subscriber node (102) via the first proxy-agent (121) and the second proxy-agent
(122), via the one or more additional proxy-agents (124) and/or with the rearranged proxy-agents.
5. A method, performed by a proxy-agent (121, 122, 123, 124), the method being for handling communications between a publisher node (101) and a subscriber node (102), the proxy-agent (121, 122,123, 124), the publisher node (101) and the subscriber node (102) operating in a communications network (100), the method comprising:
- receiving (301) a first instruction from a first node (111) operating in the communications network (100) to instantiate as one of: a) a first proxy-agent (121) of the publisher node (101) in-line between the publisher node (101) and the subscriber node (102), b) a second proxy-agent (122) of the subscriber node (102) in-line between the publisher node (101) and the subscriber node (102), and c) a third proxy-agent (123) in-line between the publisher node (101) and the subscriber node (102),
- receiving (302) a second instruction from the first node (111) to one of: o as first proxy-agent (121), to connect with and subscribe to the publisher node
(101), o as first proxy-agent 121 or second proxy-agent 122, to establish a connection with each other, thereby enabling communication exchanges between the publisher node 101 and the subscriber node 102 via the first proxy-agent 121 and the second proxy-agent 122, and o as third proxy-agent (123), to connect with one of: the first proxy-agent (121), the second proxy-agent (122) and a fourth proxy-agent (124) in-line between the publisher node (101) and the subscriber node (102),
- establishing (303) a connection with one of: o as first proxy-agent (121) with the second proxy-agent (122) and/or with the publisher node (101), o as second proxy-agent (122), with the first proxy-agent (121), and o as a third proxy-agent (123), with one of: the first proxy-agent (121), the second proxy-agent (122) and a fourth proxy-agent (124) in-line between the publisher node (101) and the subscriber node (102), and
- exchanging (304) communications with at least one of: o as first proxy-agent (121), with the second proxy-agent (122) and the publisher node (101), o as second proxy-agent (122), with the first proxy-agent (121) and the subscriber node (102), and o as a third proxy-agent (123), with one of: the first proxy-agent (121), the second proxy-agent (122) and the fourth proxy-agent (124).
6. The method according to claim 5, wherein the proxy-agent (121, 122) is instantiated in one of: a. as first proxy-agent (121) on: i) a same second server (132) as the publisher node (101), ii) a first programmable switch (141) on the first server (131), or (iii) a first programmable switch (141) in-line between the publisher node (101) and the subscriber node (102), b. as a second proxy-agent (122) on: i) a same second server (132) as the subscriber node (102), ii) a second programmable (142) switch comprised on the second server (132), or (iii) a second programmable switch (142) in-line between the publisher node (101) and the subscriber node (102), and c. as a third proxy-agent (123), in a third programmable (143) switch in-line between the publisher node (101) and the subscriber node (102).
7. The method according to claim 6, the method further comprising at least one of:
- caching (305) undelivered messages to subscribers, and
- rearranging (307) existing connections between the publisher node (101) and the subscriber node (102), based on an instruction received from the first node (111).
8. The method according to claim 7, wherein after determining that availability of a cache comprised in the proxy-agent (121, 122, 123) is below a threshold, the method further comprises:
- sending (306) a request to one of: the first node (111) and another proxy-agent in line between the publisher node (101) and the subscriber node (102) to forward and cache one or more undelivered messages to subscribers.
9. A first node (111), for handling communications between a publisher node (101) and a subscriber node (102) over a communications network (100), the first node (111) being configured to:
- instantiate: a) a first proxy-agent (121) of the publisher node (101) in-line between the publisher node (101) and the subscriber node (102), and b) a second proxy-agent (122) of the subscriber node (102) in-line between the publisher node (101) and the subscriber node (102), and
- instruct: o the first proxy-agent (121) to connect with and subscribe to the publisher node
(101), o the subscriber node (102) to connect with and subscribe to the second proxy- agent (122), and o at least one of the first proxy-agent (121) and the second proxy-agent (122) to establish a connection with each other, thereby being configured to enable communication exchanges between the publisher node (101) and the subscriber node (102) via the first proxy-agent (121) and the second proxy-agent (122).
10. The first node (111) according to claim 9, wherein: a. the first proxy-agent (121) is configured to be instantiated on: i) a same first server (131) as the publisher node (101), ii) a first programmable switch (141) on the first server (131), or (iii) a first programmable switch (141) in-line between the publisher node (101) and the subscriber node (102), and b. the second proxy-agent (122) is configured to be instantiated on: i) a same second server (132) as the subscriber node (102), ii) a second programmable switch (142) on the second server (132), or (iii) a second programmable switch (142) in-line between the publisher node (101) and the subscriber node (102).
11. The first node (111) according to any of claims 9-10, wherein the first node (111) is further configured to:
- receive (203) information on at least one of: a) first traffic at the first proxy-agent (121) from at least one of:
• a second node (112) configured to monitor the publisher node
(101), and
• the first proxy-agent (121), b) second traffic at the second proxy-agent (122) from at least one or:
• a third node (113) configured to monitor the subscriber node
(102), and
• the second proxy-agent (122), c) number of subscriber nodes (150) to the publisher node (101), d) proxy-agent failure, e) switch failure, f) a forward and cache request from a proxy-agent (121, 122, 123) in-line between the publisher node (101) and the subscriber node (102), and
- determine, based on the information configured to be received, whether or not to at least one of: a) instantiate one or more additional proxy-agents, b) re-instantiate a failed proxy-agent, and c) remove already instantiated one or more proxy-agents, thereby being configured to adapt a number of proxy-agents to traffic changes.
12. The first node (111) according to claim 11, wherein, based on a result of the determination, the first node (111) further is further configured to one or more of:
- instantiate, the one or more additional proxy-agents (124) or re- instantiate the failed proxy-agent,
- remove one or more of the already instantiated one or more proxy-agents (123), and
- rearrange existing connections between the publisher node (101) and the subscriber node (102), based on one or more additional proxy-agents (124) configured to be the instantiated and/or the already instantiated one or more proxy- agents (123) configured to be removed, thereby being configured to enable communication exchanges between the publisher node (101) and the subscriber node (102) via the first proxy-agent (121) and the second proxy-agent (122), via the one or more additional proxy-agents (124) and/or with the proxy-agents configured to be rearranged.
13. A proxy-agent (121, 122, 123, 124), for handling communications between a publisher node (101) and a subscriber node (102), the proxy-agent (121, 122,123, 124), the publisher node (101) and the subscriber node (102) being configured to operate in a communications network (100), the proxy-agent (121, 122, 123, 124) being further configured to:
- receive a first instruction from a first node (111) configured to operate in the communications network (100) to instantiate as one of: a) a first proxy-agent (121) of the publisher node (101) in-line between the publisher node (101) and the subscriber node (102), b) a second proxy-agent (122) of the subscriber node (102) in-line between the publisher node (101) and the subscriber node (102), and c) a third proxy-agent (123) in-line between the publisher node (101) and the subscriber node (102),
- receive a second instruction from the first node (111) to one of: o as first proxy-agent (121), to connect with and subscribe to the publisher node
(101), o as first proxy-agent 121 or second proxy-agent 122, to establish a connection with each other, thereby being configured to enable communication exchanges between the publisher node 101 and the subscriber node 102 via the first proxy-agent 121 and the second proxy-agent 122, and o as a third proxy-agent (123), to connect with one of: the first proxy-agent (121), the second proxy-agent (122) and a fourth proxy-agent (124) in-line between the publisher node (101) and the subscriber node (102),
- establish a connection with one of: o as first proxy-agent (121) with the second proxy-agent (122) and/or with the publisher node (101), o as second proxy-agent (122), with the first proxy-agent (121), and o as third proxy-agent (123), with one of: the first proxy-agent (121), the second proxy-agent (122) and a fourth proxy-agent (124) in-line between the publisher node (101) and the subscriber node (102), and
- exchange communications with at least one of: o as first proxy-agent (121), with the second proxy-agent (122) and the publisher node (101), o as second proxy-agent (122), with the first proxy-agent (121) and the subscriber node (102), and o as a third proxy-agent (123), with one of: the first proxy-agent (121), the second proxy-agent (122) and the fourth proxy-agent (124).
14. The proxy-agent (121, 122, 123, 124) according to claim 13, wherein the proxy-agent (121, 122) is configured to be instantiated in one of: a. as first proxy-agent (121) on: i) a same second server (132) as the publisher node (101), ii) a first programmable switch (141) on the first server (131), or (iii) a first programmable switch (141) in-line between the publisher node (101) and the subscriber node (102), b. as a second proxy-agent (122) on: i) a same second server (132) as the subscriber node (102), ii) a second programmable (142) switch comprised on the second server (132), or (iii) a second programmable switch (142) in-line between the publisher node (101) and the subscriber node (102), and c. as a third proxy-agent (123), in a third programmable (143) switch in-line between the publisher node (101) and the subscriber node (102).
15. The proxy-agent (121, 122, 123, 124) according to claim 14, the proxy-agent (121, 122, 123, 124) being further configured to at least one of:
- cache undelivered messages to subscribers, and .
- rearrange existing connections between the publisher node (101) and the subscriber node (102), based on an instruction received from the first node (111).
16. The proxy-agent (121, 122, 123, 124) according to claim 15, wherein the proxy-agent (121, 122, 123, 124) is further configured to, after determining that availability of a cache comprised in the proxy-agent (121, 122, 123) is below a threshold: - send a request to one of: the first node (111) and another proxy-agent in-line between the publisher node (101) and the subscriber node (102) to forward and cache one or more undelivered messages to subscribers.
17. A programmable switch (141, 142, 143, 144), comprising a proxy-agent (121, 122, 123, 124) configured according to any of claims 13-16.
PCT/IN2020/050207 2020-03-06 2020-03-06 First node, proxy-agent, and methods performed thereby for handling communications between a publisher node and a subscriber node WO2021176458A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/IN2020/050207 WO2021176458A1 (en) 2020-03-06 2020-03-06 First node, proxy-agent, and methods performed thereby for handling communications between a publisher node and a subscriber node

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IN2020/050207 WO2021176458A1 (en) 2020-03-06 2020-03-06 First node, proxy-agent, and methods performed thereby for handling communications between a publisher node and a subscriber node

Publications (1)

Publication Number Publication Date
WO2021176458A1 true WO2021176458A1 (en) 2021-09-10

Family

ID=77612595

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IN2020/050207 WO2021176458A1 (en) 2020-03-06 2020-03-06 First node, proxy-agent, and methods performed thereby for handling communications between a publisher node and a subscriber node

Country Status (1)

Country Link
WO (1) WO2021176458A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114095356A (en) * 2021-11-16 2022-02-25 北京中科晶上科技股份有限公司 Real-time configuration method and device for node task strategy
CN114095356B (en) * 2021-11-16 2024-04-19 北京中科晶上科技股份有限公司 Method and device for configuring node task strategy in real time

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090157888A1 (en) * 2003-08-12 2009-06-18 Riverbed Technology, Inc. Cooperative proxy auto-discovery and connection interception
US8635368B2 (en) * 2005-08-20 2014-01-21 International Business Machines Corporation Methods, apparatus and computer programs for data communication efficiency

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090157888A1 (en) * 2003-08-12 2009-06-18 Riverbed Technology, Inc. Cooperative proxy auto-discovery and connection interception
US8635368B2 (en) * 2005-08-20 2014-01-21 International Business Machines Corporation Methods, apparatus and computer programs for data communication efficiency

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114095356A (en) * 2021-11-16 2022-02-25 北京中科晶上科技股份有限公司 Real-time configuration method and device for node task strategy
CN114095356B (en) * 2021-11-16 2024-04-19 北京中科晶上科技股份有限公司 Method and device for configuring node task strategy in real time

Similar Documents

Publication Publication Date Title
US20150271255A1 (en) Systems and methods for adaptive load balanced communications, routing, filtering, and access control in distributed networks
US20160337223A1 (en) Bandwidth and latency estimation in a communication network
US9253015B2 (en) Transparent proxy architecture for multi-path data connections
US10491716B2 (en) Providing functional requirements for a network connection from a local library
CN108234309B (en) Network data transmission method
US11088957B2 (en) Handling of data packet transfer via a proxy
CN114128228B (en) Transmitting MTNC-ID through SRv head to realize 5G transmission
Nasimi et al. Edge-assisted congestion control mechanism for 5G network using software-defined networking
US20220191765A1 (en) Communication method, apparatus, and system
US11558491B2 (en) Information-centric networking over 5G or later networks
EP3534574A1 (en) Techniques for policy management of multi-connectivity network protocols
WO2023091352A1 (en) Predictive user plane function (upf) load balancing based on network data analytics
EP3125472A1 (en) Telecommunication system, method and computer readable medium to control how a transmission of packets of a data flow is realized
US8638724B1 (en) Machine-to-machine traffic indicator
CN114128227B (en) Transmitting MTNC-ID on SRv 6-enabled data plane to enable 5G transmission
CN114710975B (en) Method, base station, network element and device for multi-domain transmission and multi-transmission network context identification
US10091645B1 (en) Handling mobile device administration in anchorless mobile networks
WO2021176458A1 (en) First node, proxy-agent, and methods performed thereby for handling communications between a publisher node and a subscriber node
WO2021078792A1 (en) Mechanism for controlling service migration
US10594593B2 (en) Methods and apparatus for transmitting data
WO2023005745A1 (en) Message forwarding method, device and system, and computer-readable storage medium
WO2023185286A1 (en) Communication method and apparatus
US20240080275A1 (en) Method and apparatus for quality of service assurance for webrtc sessions in 5g networks
US20230291679A1 (en) Dynamic use of a packet recovery mechanism to avoid congestion along a network path
RU2772710C2 (en) Method for processing request and corresponding object

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20923632

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20923632

Country of ref document: EP

Kind code of ref document: A1