Patent Description:
The present disclosure relates to enabling peer-to-peer media parameter negotiation and communication. More particularly, the present disclosure relates to the design and operation of Service Enabler Architecture Layer for verticals (SEAL) to enable vertical application layer (VAL) server for Peer-to-Peer (P2P) media parameter negotiation.

A service enabler architecture layer (SEAL) may be used over 3GPP wireless networks to support vertical (VAL) applications (e.g., UAV, V2X applications). The SEAL functional architecture may include common application plane and signaling plane entities. A set of common services (e.g., group management, configuration management, location management) specified in this document can be shared across vertical applications.

With Peer-to-peer (P2P) media streaming technology becoming a promising media streaming method, methods of reducing the cost of a centralized media server and communication delays are needed.

<NPL>", discloses that WebRTC is a well-known peer-to-peer media streaming supporting service in which the signalling (e.g. SDP offer/answer media negotiation) happens via a WebRTC server and in which the transport issues related to NAT are considered solved using known STUN/TURN/ICE technical solutions (see page <NUM>, paragraph "NAT and Firewall traversal").

"3rd Generation Partnership Project; Technical Specification Group Services and System Aspects; Service Enabler Architecture Layer for Verticals (SEAL); Functional architecture and information flows; (Release <NUM>)", discloses that the SEAL server functional model to comprise HTTP interfaces and SIP interfaces, and specifies procedures, information flows and APis for each service within SEAL in order to support vertical applications over the 3GPP system. The document is applicable to vertical applications using E-UTRAN or NR access based on the EPC or SGS architecture defined in 3GPP TS <NUM> [<NUM>] and 3GPP TS <NUM> [<NUM>]. To ensure efficient use and deployment of vertical applications over 3GPP systems this specification for SEAL services includes the group management, configuration management, location management, identity management, key management and network resource management.

Preferred embodiments of the present disclosure are provided as defined in the appended claims, by which the protection scope is to be set. Embodiments relate to a method, system, and computer readable medium for enabling peer-to-peer media streaming using service enabler architecture layer (SEAL). According to one aspect, a method for enabling peer-to-peer media streaming using service enabler architecture layer (SEAL) may be provided. The method may be executed by one or more processors, and the method may include receiving, by a vertical application layer (VAL) server, a request for a media session negotiation between one or more client devices, and retrieving, by the vertical application layer (VAL) server, transport layer information associated with each of the one or more client devices using network address translation traversal. The method may further include transmitting, by the vertical application layer (VAL) server, agreed session description protocol (SDP) parameters based on the transport layer information, wherein the agreed session description protocol (SDP) parameters are used to establish a peer-to-peer media streaming session.

According to another aspect, an apparatus for enabling peer-to-peer media streaming using service enabler architecture layer (SEAL) may be provided. The apparatus may include at least one memory configured to store computer program code; and at least one processor configured to access the at least one memory and operate as instructed by the computer program code. The program code may include request receiving code configured to cause at least one processor to receive, by a vertical application layer (VAL) server, a request for a media session negotiation between one or more client devices; retrieving code configured to cause at least one processor to retrieve, by the vertical application layer (VAL) server, transport layer information associated with each of the one or more client devices using network address translation traversal; and transmitting code configured to cause at least one processor to transmit, by the vertical application layer (VAL) server, agreed session description protocol (SDP) parameters based on the transport layer information, wherein the agreed session description protocol (SDP) parameters are used to establish a peer-to-peer media streaming session.

According to yet another aspect, a non-transitory computer readable medium storing instructions for enabling peer-to-peer media streaming using service enabler architecture layer (SEAL) may be provided. The instructions may include one or more instructions that, when executed by one or more processors, cause the one or more processors to receive, by a vertical application layer (VAL) server, a request for a media session negotiation between one or more client devices; retrieve, by the vertical application layer (VAL) server, transport layer information associated with each of the one or more client devices using network address translation traversal; and transmit, by the vertical application layer (VAL) server, agreed session description protocol (SDP) parameters based on the transport layer information, wherein the agreed session description protocol (SDP) parameters are used to establish a peer-to-peer media streaming session.

These and other objects, features and advantages will become apparent from the following detailed description of illustrative embodiments, which is to be read in connection with the accompanying drawings. The various features of the drawings are not to scale as the illustrations are for clarity in facilitating the understanding of one skilled in the art in conjunction with the detailed description. In the drawings:.

Detailed embodiments of the claimed structures and methods are disclosed herein; however, it can be understood that the disclosed embodiments are merely illustrative of the claimed structures and methods that may be embodied in various forms. Those structures and methods may, however, be embodied in many different forms and should not be construed as limited to the exemplary embodiments set forth herein. Rather, these exemplary embodiments are provided so that this disclosure will be thorough and complete and will fully convey the scope to those skilled in the art. In the description, details of well-known features and techniques may be omitted to avoid unnecessarily obscuring the presented embodiments.

Aspects are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer readable media according to the various embodiments.

<FIG> illustrates an exemplary Service Enabler Architecture Layer of verticals (SEAL) functional architecture <NUM> for enabling peer-to-peer media streaming. As shown in <FIG>, SEAL functional architecture <NUM> may include a vertical application layer (VAL) client <NUM>, a VAL server <NUM>, a SEAL server <NUM>, a SEAL client <NUM>, one or more VAL-UU reference points <NUM>, one or more SEAL-UU reference points <NUM>, and user equipment <NUM>.

According to an embodiment of the present disclosure, the VAL client <NUM> may communicate with the VAL server <NUM> over one or more VAL-UU reference points <NUM>. VAL-UU <NUM> may support both unicast and multicast delivery modes.

The SEAL functional entities on the user equipment <NUM> and the SEAL server <NUM> are grouped into SEAL client <NUM> and SEAL server <NUM> respectfully. The SEAL functionalities consists of a common set of services (e.g., group management, location management) and reference points. The SEAL functionalities may provide its services to the vertical application layer (VAL).

The SEAL client <NUM> may communicate the SEAL server <NUM> over one or more of the SEAL-UU <NUM> reference points. The one or more SEAL-UU <NUM> may support both unicast and multicast delivery modes. The SEAL client <NUM> may provide the service enabler layer support functions to the VAL client <NUM> over one or more SEAL-C reference points <NUM>. The VAL server <NUM> may communicate with the SEAL server <NUM> over one or more SEAL-S reference points <NUM>. The SEAL server <NUM> may communicate with the underlying 3GPP network systems using the respective 3GPP interfaces specified by the 3GPP network system.

According to embodiments, specific SEAL clients and specific SEAL servers along with their specific SEAL-UU reference points and the specific network interfaces of 3GPP network system used may be described in the respective on-network functional model for each SEAL service.

The VAL client <NUM> may provide the client-side functionalities corresponding to the vertical applications (e.g., UAV, V2X client). The VAL client may support interactions with the SEAL client <NUM>. The VAL server <NUM> may provide the server-side functionalities corresponding to the vertical applications (e.g., UAV, V2X application servers).

The SEAL client <NUM> may provide the client-side functionalities corresponding to the specific SEAL service. The SEAL client <NUM> may support interactions with the VAL client <NUM>. The SEAL client may also support interactions with the corresponding SEAL client between one or more user equipment.

The SEAL server <NUM> may provide the server-side functionalities corresponding to the specific SEAL service. The SEAL server <NUM> may support interactions with the VAL server <NUM>.

According to embodiments, the SEAL functional architecture <NUM> takes into consideration the common capabilities to support mission critical and other vertical applications.

In some embodiments, the SEAL functional architecture <NUM> may provide the network resource management, and the network resource management client i.e., SEAL client <NUM>, may act as the Val client <NUM> for the management of network resources. The network resource management client may interact with the network resource management server, i.e., SEAL server <NUM>. The network resource management server may enable and allow management of 3GPP system network resources (e.g. unicast, multicast) to support the VAL client <NUM>. The interactions related to network resource management functions between the network resource management client (SEAL client <NUM>) and the network resource management server (SEAL server <NUM>) may be supported by the one or more NRM-UU reference points <NUM>. In some embodiments, The interactions related to network resource management functions between the VAL server <NUM> and the network resource management server (i.e., SEAL server <NUM>) may be supported by one or more NRM-S reference points <NUM>.

As an example, SDP used in SIP package may carry important information about media parameters may be sent from the VAL server <NUM> to network resource management using NRM-S:.

According to some embodiments, Peer-to-peer (P2P) media streaming technology, e.g., such as WebRTC, has been becoming a promising media streaming method. However, costs associated with a centralized media server need to be reduced and communication delays also need to be reduced. Using SEAL, with media payload in vertical application layers (VAL) (e.g., UASAPP and V2X), enabling P2P media parameter signaling is an essential step for establishing media sessions such as using session initiation protocol (SIP).

A key method of enabling media session communication, according to embodiments, may be to use network address translation (NAT) traversal techniques. As an example, techniques such as interactive connectivity establishment (ICE), session traversal utilities for NAT (STUN), traversal using relays around NAT (TURN), etc., may be used by a server to locate the IP addresses of all the peers. Session description protocol (SDP) is one of the protocols may be used for media session parameter negotiation.

Embodiments of the present disclosure relate to enabling the VAL server for P2P media parameters negotiation using existing SEAL signaling architecture such as NAT traversal offered by the NRM-S.

<FIG> illustrates an exemplary workflow <NUM> for enabling peer-to-peer media streaming using service enabler architecture layer (SEAL). As shown in <FIG>, workflow <NUM> may include a Val client <NUM><NUM>, VAL client <NUM><NUM>, VAL server <NUM>, a network resource management (NRM) server <NUM>, and a plurality of operations <NUM>-<NUM>.

According to embodiments, the workflow <NUM> may disclose specifying media session parameters carried in SDP sent by multiple VAL clients being negotiated between the VAL client and the VAL server. The request may be sent from the VAL client, and may include the VAL user identification, user equipment ID and SDP offers. The VAL server may utilize the NRM server for media session signaling and may use NAT traversal techniques for retrieving transport layer information associated with the VAL clients. The VAL server may return the agreed SDP parameters for all the VAL clients. The VAL clients may then use the agreed SDP parameters to establish a peer-to-peer media streaming session.

At operations <NUM>-<NUM>, VAL clients may send media session parameter negotiation requests to the VAL server. As an example, VAL client <NUM><NUM> and VAL client <NUM><NUM> may send media session parameter negotiation requests to the VAL server <NUM>. In some embodiments, the VAL server <NUM> may pull or receive requests for media session parameter negotiation from VAL client <NUM><NUM> and VAL client <NUM><NUM>. In some embodiments, the media session parameter negotiation requests ay include an identity of the requestor, a VAL user ID, a Val user equipment ID, and/or an SDP offer, as indicated in Table <NUM>.

At operation <NUM>, the VAL server may use a network resource management (NRM) server to locate the transport layer information for the VAL clients. The transport layer information may include the IP and port numbers for each connecting peer (e.g., VAL client) as specified by the SDP. The NRM server may utilize NAT traversal capabilities and return the transport layer information of each peer back to the VAL server. As an example, VAL server <NUM> may retrieve transport layer information of each VAL client <NUM><NUM> and VAL client <NUM><NUM> from the NRM server <NUM> using NAT traversal capabilities. In some embodiments, the VAL server may consolidate the transport layer information from the NRM server and send back the agreed SDP parameters to each peer. The SDP parameter or SDP feedback may include parameters as disclosed in Table <NUM>.

At operations <NUM> - <NUM>, the retrieved transport layer information and/or the agreed SDP parameters may be transmitted to each requesting VAL client. As an example, the parameters, as disclosed below, may be transmitted from VAL server <NUM> to VAL client <NUM><NUM> and VAL client <NUM><NUM>. As an example, the returned ICE Candidates list the IP addresses of other peers.

At operation <NUM>, each peer may the transport layer information to establish a P2P media streaming session. As an example, at operation <NUM>, VAL client <NUM><NUM> and VAL client <NUM><NUM> may establish a P2P media streaming session using the transport layer information.

Operations <NUM>-<NUM>, and <NUM>-<NUM> may be performed in any order. The present disclosure discloses but does not limit the order or operations <NUM>-<NUM>.

According to an embodiment, a P2P media streaming technology (e.g., WebRTC) may be used. WebRTC is a collection of communication protocols and utilizing webRTC may include <NUM> major steps: Signaling (e.g., using SDP), Connecting (e.g., using NAT traversal with STUN/TURN server or ICE agent for each peer), Securing (e.g., DTLS, SRTP), and Communicating (e.g., using RTP for media data or SCTP).

The P2P media streaming technology may use an offer/answer model. The model may include an agent being configured to make an "Offer" to start a call, and the other agents "Answers" if they are willing to accept what has been offered, giving the answerer a chance to reject offer (e.g., rejecting offer because of unsupported codecs in the Media Descriptions). The offer/answer model of some P2P media streaming technologies may enable two peers to understand what formats they are willing to exchange. As an example, transceivers are a WebRTC specific concept that may be seen in its application programming interface (API). The transceivers may expose the "Media Description" to the JavaScript API. Each Media Description may become a Transceiver. Thus, every time a transceiver is created, a new Media Description may be added to the local Session Description. Each Media Description in WebRTC may have a direction attribute. The direction attribute may allow a WebRTC Agent to declare "I am going to send you this codec, but I am not willing to accept anything back.

According to embodiments, WebRTC signaling using SDP may contain the following parameters as disclosed in Table <NUM>.

For P2P media communication, each peer may need to know the capacity and capability of each peers' offering. Capacity and capability may include CODEC support and bandwidth. To establish a P2P media streaming session, each peer may also need to know the public IP address of each peer since each peer may be behind a firewall. According to embodiments, the VAL server may be enabled to perform a P2P media negotiation by utilizing the SEAL NRM server.

<FIG> illustrates an exemplary flowchart <NUM> for enabling peer-to-peer media streaming using service enabler architecture layer (SEAL).

As seen in operation <NUM>, a VAL server may receive a request for a media session negotiation between one or more client devices. As an example, VAL server <NUM> may receive requests from VAL client <NUM><NUM> and VAL client <NUM><NUM>.

As seen in operation <NUM>, the VAL server may retrieve transport layer information associated with each of the one or more client devices using network address translation traversal. The VAL server may retrieve the transport layer information associated with each of the one or more client devices from a network resource management server. As an example, VAL server <NUM> may retrieve transport layer information associated with each of the one or more client devices using network address translation traversal from the NRM server <NUM>.

In some embodiments, the transport layer information may include one or more of respective IP addresses and respective port numbers associated each of the one or more client devices. In some embodiments, the VAL server may retrieve the agreed session description protocol (SDP) parameters. The agreed session description protocol (SDP) parameters may include one or more of accepted codecs, interactive connectivity establishment candidates, media types, available codec support, and bandwidth. In some embodiments, the agreed session description protocol (SDP) parameters may further include one or more of multiple synchronization sources, and parameters required by management protocols.

As seen in operation <NUM>, the VAL server may consolidate the retrieved transport layer information associated with each of the one or more client devices. In some embodiments, the VAL server may consolidate the retrieved transport layer information associated with each of the one or more client devices and the agreed SDP parameters. In some embodiments, the VAL server may consolidate information prior to transmitting the agreed session description protocol (SDP) parameters.

As seen in operation <NUM>, the VAL server may transmit the agreed session description protocol (SDP) parameters based on the transport layer information, wherein the agreed session description protocol (SDP) parameters are used to establish a peer-to-peer media streaming session. As an example, VAL server <NUM> may transmit the agreed session description protocol (SDP) parameters that VAL client <NUM><NUM> and VAL client <NUM><NUM> may use to establish a P2P media streaming session.

As seen in operation <NUM>, the one or more client devices may establish the peer-to-peer media streaming session based on the transport layer information associated with each of the one or more client devices and the agreed session description protocol (SDP) parameters. As an example, VAL client <NUM><NUM> and VAL client <NUM><NUM> may establish a P2P media streaming session between themselves.

The components shown in <FIG> for computer system <NUM> may be used to implement any of the devices disclosed in <FIG>, and are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing embodiments of the present disclosure. Neither should the configuration of components be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary embodiment of a computer system <NUM>.

Such a human interface input device may be responsive to input by one or more human users through, for example, tactile input (such as keystrokes, swipes, data glove movements), audio input (such as voice, clapping), visual input (such as gestures), olfactory input (not depicted). The human interface devices can also be used to capture certain media not necessarily directly related to conscious input by a human, such as audio (such as speech, music, ambient sound), images (such as scanned images, photographic images obtained from a still image camera), video (such as two-dimensional video, three-dimensional video including stereoscopic video).

Input human interface devices may include one or more of (only one of each depicted): keyboard <NUM>, mouse <NUM>, trackpad <NUM>, touch screen <NUM>, data-glove (not depicted), joystick <NUM>, microphone <NUM>, scanner <NUM>, camera <NUM>.

Computer system <NUM> may also include certain human interface output devices. Such human interface output devices may include tactile output devices (for example tactile feedback by the touch-screen <NUM>, data-glove (not depicted), or joystick <NUM>, but there can also be tactile feedback devices that do not serve as input devices), audio output devices (such as speakers <NUM>, headphones (not depicted)), visual output devices (such as screens <NUM> to include CRT screens, LCD screens, plasma screens, OLED screens, each with or without touch-screen input capability, each with or without tactile feedback capability-some of which may be capable to output two-dimensional visual output or more than three-dimensional output through means such as stereographic output; virtual-reality glasses (not depicted), holographic displays and smoke tanks (not depicted)), and printers (not depicted).

Computer system <NUM> can also include human accessible storage devices and their associated media such as optical media including CD/DVD ROM/RW <NUM> with CD/DVD or the like media <NUM>, thumb-drive <NUM>, removable hard drive or solid-state drive <NUM>, legacy magnetic media such as tape and floppy disc (not depicted), specialized ROM/ASIC/PLD based devices such as security dongles (not depicted), and the like.

Those skilled in the art should also understand that term "computer-readable media" as used in connection with the presently disclosed subject matter does not encompass transmission media, carrier waves, or other transitory signals.

Computer system <NUM> can also include an interface to one or more communication networks. Networks can, for example, be wireless, wireline, optical. Networks can further be local, wide-area, metropolitan, vehicular and industrial, real-time, delay-tolerant, and so on. Examples of networks include local area networks such as Ethernet, wireless LANs, cellular networks to include GSM, <NUM>, <NUM>, <NUM>, LTE and the like, TV wireline or wireless wide-area digital networks to include cable TV, satellite TV, and terrestrial broadcast TV, vehicular and industrial to include CANBus, and so forth. Certain networks commonly require external network interface adapters that attached to certain general-purpose data ports or peripheral buses (<NUM>) (such as, for example, USB ports of the computer system <NUM>; others are commonly integrated into the core of the computer system <NUM> by attachment to a system bus as described below (for example Ethernet interface into a PC computer system or cellular network interface into a smartphone computer system). Using any of these networks, computer system <NUM> can communicate with other entities. Such communication can be uni-directional, receive only (for example, broadcast TV), uni-directional send-only (for example, CANbus to certain CANbus devices), or bi-directional, for example to other computer systems using local or wide area digital networks. Certain protocols and protocol stacks can be used on each of those networks and network interfaces, as described above.

The aforementioned human interface devices, human-accessible storage devices, and network interfaces can be attached to a core <NUM> of the computer system <NUM>.

The core <NUM> can include one or more Central Processing Units (CPU) <NUM>, Graphics Processing Units (GPU) <NUM>, specialized programmable processing units in the form of Field Programmable Gate Areas (FPGA) <NUM>, hardware accelerators for certain tasks <NUM>, and so forth. These devices, along with Read-only memory (ROM) <NUM>, Random-access memory <NUM>, internal mass storage such as internal non-user accessible hard drives, SSDs, and the like <NUM>, maybe connected through a system bus <NUM>. In some computer systems, the system bus <NUM> can be accessible in the form of one or more physical plugs to enable extensions by additional CPUs, GPU, and the like. The peripheral devices can be attached either directly to the core's system bus <NUM>, or through a peripheral bus <NUM>.

CPUs <NUM>, GPUs <NUM>, FPGAs <NUM>, and accelerators <NUM> can execute certain instructions that, in combination, can make up the aforementioned computer code. That computer code can be stored in ROM <NUM> or RAM <NUM>. Transitional data can be also be stored in RAM <NUM>, whereas permanent data can be stored, for example, in the internal mass storage <NUM>. Fast storage and retrieval to any of the memory devices can be enabled through the use of cache memory, which can be closely associated with one or more CPU <NUM>, GPU <NUM>, mass storage <NUM>, ROM <NUM>, RAM <NUM>, and the like.

The computer-readable media can have computer code thereon for performing various computer-implemented operations. The media and computer code can be specially designed and constructed for the purposes of the present disclosure, or they can be of the kind well known and available to those having skill in the computer software arts.

As an example and not by way of limitation, the computer system having architecture <NUM>, and specifically the core <NUM> can provide functionality as a result of processor(s) (including CPUs, GPUs, FPGA, accelerators, and the like) executing software embodied in one or more tangible, computer-readable media. Such computer-readable media can be media associated with user-accessible mass storage as introduced above, as well as certain storage of the core <NUM> that are of non-transitory nature, such as core-internal mass storage <NUM> or ROM <NUM>. The software implementing various embodiments of the present disclosure can be stored in such devices and executed by core <NUM>. A computer-readable medium can include one or more memory devices or chips, according to particular needs. The software can cause the core <NUM> and specifically the processors therein (including CPU, GPU, FPGA, and the like) to execute particular processes or particular parts of particular processes described herein, including defining data structures stored in RAM <NUM> and modifying such data structures according to the processes defined by the software. In addition or as an alternative, the computer system can provide functionality as a result of logic hardwired or otherwise embodied in a circuit (for example, accelerator <NUM>), which can operate in place of or together with software to execute particular processes or particular parts of particular processes described herein. Reference to software can encompass logic, and vice versa, where appropriate. Reference to a computer-readable media can encompass a circuit (such as an integrated circuit (IC)) storing software for execution, a circuit embodying logic for execution, or both, where appropriate. The present disclosure encompasses any suitable combination of hardware and software.

Some embodiments may relate to a system, a method, and/or a computer readable medium at any possible technical detail level of integration. The computer readable medium may include a computer-readable non-transitory storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out operations.

Computer readable program code/instructions for carrying out operations may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, configuration data for integrated circuitry, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++, or the like, and procedural programming languages, such as the "C" programming language or similar programming languages. In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects or operations.

The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer readable media according to various embodiments. The method, computer system, and computer readable medium may include additional blocks, fewer blocks, different blocks, or differently arranged blocks than those depicted in the Figures. For example, two blocks shown in succession may, in fact, be executed concurrently or substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved.

No element, act, or instruction used herein should be construed as critical or essential unless explicitly described as such. Also, as used herein, the articles "a" and "an" are intended to include one or more items, and may be used interchangeably with "one or more. " Furthermore, as used herein, the term "set" is intended to include one or more items (e.g., related items, unrelated items, a combination of related and unrelated items, etc.), and may be used interchangeably with "one or more. " Where only one item is intended, the term "one" or similar language is used. Also, as used herein, the terms "has," "have," "having," or the like are intended to be open-ended terms. Further, the phrase "based on" is intended to mean "based, at least in part, on" unless explicitly stated otherwise.

Claim 1:
A method for enabling peer-to-peer media streaming using service enabler architecture layer, SEAL, the method being executed by one or more processors, the method comprising:
receiving (<NUM>), by a vertical application layer, VAL, server, two or more requests for a media session negotiation between two or more client devices from the two or more client devices, wherein each of the two or more requests comprises media session parameters carried in SDP;
retrieving (<NUM>), by the VAL server, transport layer information associated with each of the two or more client devices using network address translation traversal; and
transmitting (<NUM>), by the VAL server, agreed session description protocol, SDP, parameters for the two or more client devices, based on the transport layer information, to each of the two or more client devices, wherein the agreed SDP parameters are obtained by negotiating the media session parameters between the two or more client devices and the VAL server, and used to establish a peer-to-peer media streaming session.