Multicast data of data stream

By generating and multicasting the mapping between client identifiers and data streams through the server system, the problem of low efficiency in multicast data transmission is solved, and efficient and scalable multicast data transmission is achieved, ensuring that each client obtains its specific data stream.

CN120642302APending Publication Date: 2025-09-12TRADING TECHNOLOGIES INTERNATIONAL INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380093990.5
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-12-20
Filing Date
2023-12-19
Publication Date
2025-09-12

AI Technical Summary

Technical Problem

When multiple clients need different data, unicast technology is inefficient and non-scalable, and existing technologies find it difficult to achieve efficient and scalable multicast data transmission.

Method used

The server system generates and multicasts a mapping between the client's identifier and the data stream, transmits the data stream through the multicast stream, and the client receives the corresponding data stream according to the mapping matching and communicates using the same multicast address.

Benefits of technology

This enables efficient and scalable multicast data transmission, ensuring that each client receives its specific data stream, reducing redundant communications and separate address request steps.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120642302A_ABST
    Figure CN120642302A_ABST
Patent Text Reader

Abstract

Techniques for multicast of data to a plurality of clients are described. Each client stores an identifier indicating a data stream associated with (e.g., intended for) the client. A server receives data streams, determines an identifier for each received data stream, sends a mapping between the identifier and a corresponding multicast stream to a client, and multicasts data of the received data streams according to the mapping. Each client may obtain data of a particular data stream associated with they by sending the mapping to the clients and multicast the data of the received data streams according to the mapping.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application claims priority to U.S. patent application No. 18 / 084,856, filed on December 20, 2022, the entire contents of which are incorporated herein by reference. Technical Field

[0003] In computer networking, multicast refers to a communication technology in which data transmission is addressed to a group of receivers on a network. For example, Internet Protocol (IP) multicast is a multicast communication technology that leverages a network's IP infrastructure. Multicast technology provides scalable one-to-many communication because data only needs to be sent once, even if it is being delivered to a large number of receivers. Therefore, multicast technology is useful in systems where multiple clients require the same data from a data source. Background Art

[0004] In some cases, different clients may need different data from a data source, or different data from different data sources. Unicast technology allows a data source to communicate individually with different clients on a network. However, unicast technology may not be effective when there are many (e.g., hundreds or thousands) of clients. BRIEF DESCRIPTION OF THE DRAWINGS

[0005] Certain embodiments are disclosed with reference to the following drawings.

[0006] Figure 1 A block diagram of an example computing device that may be used to implement certain embodiments is shown.

[0007] Figure 2 A block diagram of an example system is shown in which certain embodiments may be implemented.

[0008] Figure 3 A schematic diagram showing a mapping according to a first example is shown.

[0009] Figure 4 A schematic diagram of a multicast packet according to a first example is shown.

[0010] Figure 5 A schematic diagram of a multicast packet according to a second example is shown.

[0011] Figure 6 A flow chart illustrating a method performed by a server system according to some embodiments is shown.

[0012] Figure 7 A flow chart illustrating a method performed by a client device according to some embodiments is shown.

[0013] Figure 8 A flow chart of a method performed by a server system according to a first example is shown.

[0014] Figure 9 A flow chart of a method performed by a server system according to a second example is illustrated.

[0015] Figure 10 A block diagram of an example electronic transaction system in which certain embodiments may be employed is shown.

[0016] Figure 11 A block diagram of another example electronic transaction system in which certain embodiments may be employed is shown. DETAILED DESCRIPTION

[0017] The disclosed embodiments generally relate to multicast communications, and more specifically to systems and methods for a server system to multicast data to multiple clients. Multicast technology is useful when multiple clients require the same data from a server system. Multicast technology is scalable relative to the number of clients because data only needs to be sent once, even if the data is being transmitted to a large number of clients. For these reasons, or for other reasons, a server system can be configured to multicast data to multiple clients, such as thousands or hundreds of thousands of clients. However, situations may arise where different clients require different data from the server system. This may occur, for example, when the server system receives multiple different data streams, each associated with and intended for a different client. Unicast technology would allow the server system to communicate separately with different clients and, therefore, allow different clients to receive different data streams from the server system. However, unicast technology is not scalable relative to the number of clients because the server system must send data to each client individually. Therefore, employing unicast technology can be inefficient and may not be feasible for many clients (such as tens of thousands or hundreds of thousands of clients). In this case, it is desirable to adapt a multicast system to different clients obtaining different data, which is efficient and scalable to the number of clients.

[0018] I. Specific Implementation Methods

[0019] Certain embodiments provide a server system comprising a memory and at least one processor configured to multicast data to multiple clients. Each client may comprise software running on a computing device. In one example, each device may have one client. More generally, multiple clients may run on one or more devices. Each client stores an identifier indicating a data stream associated with the client (e.g., intended for the client). For example, an ID server may generate an identifier for each of multiple data streams and, for each client, provide the client with an identifier indicating the data stream with which the client is associated. The ID server may also provide the generated identifier to the server system. The at least one processor of the server system is configured to receive data streams, for example, from a data source, and determine an identifier for each received data stream. The at least one processor of the server system is configured to transmit a mapping between each identifier and a corresponding multicast stream to the multiple clients and multicast data from the received data streams based on the mapping. These features enable efficient and scalable multicasting, allowing different clients to obtain different data streams. Specifically, by transmitting a mapping between identifiers and corresponding multicast streams and multicasting data from the received data streams based on the mapping, each client can obtain data associated with a specific data stream (e.g., a data stream relevant to and intended for them). Thus, targeted and scalable data transmission can be provided.

[0020] In some embodiments, each client receives a mapping, matches an identifier stored at the client with an identifier in the received mapping, and obtains data for the multicast stream mapped to the matched identifier. Thus, each client obtains data for a specific data stream associated with them (e.g., a data stream that is relevant to them and intended for them). Thus, different clients can obtain different data from the server system using multicast.

[0021] In some embodiments, the mapping sent to multiple clients includes a mapping between each identifier and a corresponding different multicast address, and at least one processor of the server system is configured to multicast the data for each data stream using the corresponding multicast address mapped to the identifier of the data stream. This can allow data from each data stream to be sent only to the clients or devices associated with the data stream. This can allow for efficient communication (e.g., compared to sending data for all received streams to all clients). Thus, efficient, targeted, and scalable communication can be provided. In these embodiments, each client can configure a communication interface to receive transmitted data where the destination address corresponds to the multicast address mapped to the identifier that matches the stored identifier. Thus, each client can obtain data from the multicast stream for the specific data stream associated with it.

[0022] In some embodiments, at least one processor of the server system is configured to broadcast the map over a network to which each of the plurality of clients is connected. This can help ensure that all clients receive the map. This allows for providing the map in an efficient and scalable manner (e.g., compared to providing the map to each client individually using, for example, unicast messaging).

[0023] In certain embodiments, at least one processor of the server system is configured to generate a multicast stream for each data stream, including an identifier for the data stream and the data of the data stream, thereby encoding the mapping into each multicast stream. The at least one processor of the server system is configured to multicast each of the generated multicast streams to multiple clients. Because the mapping is encoded into the multicast stream itself, no separate messaging is required to transmit the mapping to the clients. This allows for efficient and scalable communication. Furthermore, because the mapping is encoded into the multicast stream, each multicast stream can use the same multicast address. This allows for efficient and scalable use of multicast address allocation. Furthermore, because each multicast stream can use the same multicast address, there is no need to perform separate steps associated with different clients requesting to join a separate multicast address. This allows for efficient and scalable communication. In these embodiments, each client can receive multiple multicast streams and obtain data from a multicast stream among the multiple received multicast streams that includes an identifier that matches the stored identifier. Thus, each client can obtain data from the multicast stream for its associated specific data stream.

[0024] In certain embodiments, each multicast stream includes one or more multicast packets, each of which includes a header and a payload. For each generated multicast stream, the header includes an identifier for the received data stream, and the payload may include data from the received data stream. Including the identifier in the header of the multicast packet allows clients (e.g., their application programming interfaces) to efficiently identify which multicast packets include data from their associated data streams. For example, parsing the header for the identifier may be more efficient than parsing the payload. Thus, efficient and scalable communication can be provided.

[0025] In some embodiments, each of the generated multicast streams is multicast using the same multicast address. Thus, efficient and scalable use of multicast address allocation can be provided. Furthermore, this can eliminate the need to perform separate steps associated with different clients requesting to join separate multicast addresses. Thus, efficient and scalable communication can be provided.

[0026] In some embodiments, the at least one processor is configured to normalize data for each of the plurality of received streams to be multicast. For example, the data may be converted into a format that a client will understand, such as a client's API. This allows for centralized normalization, which may be more efficient than, for example, each client normalizing or converting received data locally.

[0027] In some embodiments, the at least one processor is configured to receive multiple data streams over corresponding multiple different connections and, for each of the received data streams, determine an identifier for the received data stream based on the connection over which the data stream was received. This can help ensure a one-to-one mapping between the connection over which the corresponding data stream was received and the multicast stream being multicasted. This can help simplify processing of the received data streams into multicast streams. For example, this can allow a data stream received over a particular connection to be used to provide data for a particular multicast stream. This can be more efficient than having to combine multiple data streams into a single multicast stream. Furthermore, this can allow for parallel processing of different received data streams and their corresponding different multicast streams. Efficient and / or fast processing can therefore be provided.

[0028] In certain embodiments, at least one processor is configured to: receive identifiers, each identifier associated with corresponding connection information for establishing a connection over which a corresponding one of the data streams is received; and, for each of a plurality of received data streams, determine, as the identifier of the data stream, the identifier associated with the connection information of the connection over which the data stream was received. This may provide a server system with an efficient way to determine the identifier of each data stream. For example, the server system may associate an identifier with the connection over which the data stream was received and determine the identifier of any data stream received on that connection. This may be more efficient than, for example, requiring the server system to parse the data streams in order to determine the identifier of the data stream. Thus, efficient processing of the data streams may be provided.

[0029] In some embodiments, each data stream is associated with a specific client, and the server system includes an ID server configured to: obtain connection information for each client; associate the connection information for each different client with a different one of the identifiers; for each client, provide the at least one processor with the identifier associated with the connection information for that client; and provide each client with the identifier associated with the client's connection information. This provides an efficient way for the server system and clients to be provided with identifiers. The ID server responsible for association and delivery can allow communications from the server system to the clients to be maintained as multicast or broadcast, and therefore scalable.

[0030] In certain embodiments, at least one processor is configured to: for each of a plurality of data streams: receive connection information for establishing a connection to a data source from which the data stream is to be received; establish a connection using the connection information; and receive the data stream via the connection. This can help allow a server system to receive the data stream on behalf of a client. This can allow data for the data stream to be provided by the server system to the client, for example, as part of a platform provided by the server system. For example, the data for the data stream can be provided along with other data that the server system multicasts to all clients as part of the platform. Thus, this can allow the data source to be integrated into the platform provided by the server system.

[0031] In some embodiments, each data stream is associated with a specific client, and for each data stream, the connection information includes login information for the client associated with the data stream to access the data source. This allows the data stream to include client-specific data, such as data already established in an account at the data source to be delivered to that specific account. This allows for efficient messaging tailored to individual clients.

[0032] In certain embodiments, a server system implements a price server for an electronic trading system. A primary role of a price server is to deliver the same data (e.g., the same market data) to many different clients. Therefore, the price server can use multicasting to transmit this data in an efficient and scalable manner. Implementing the server system in the price server allows the price server to not only multicast the same data to multiple clients, but also to multicast data in a manner that allows different clients to obtain data from different data streams.

[0033] In certain embodiments, the server system includes a data source configured to provide multiple data streams to the at least one processor, and the multiple different data streams may include price data provided by corresponding different liquidity providers or corresponding different combinations of liquidity providers. This is an example scenario in which different clients (or their users) may require different data streams. For example, each client (or their user) may have a pre-existing relationship with a particular provider or combination of providers and may therefore wish to receive data from that particular provider or a particular combination of providers. The particular provider or combination of providers may be different for different clients (or their users). Therefore, it is useful to be able to allow each client to obtain data from the data stream associated with it.

[0034] Certain embodiments provide a server system comprising a memory and at least one processor configured to multicast data to a plurality of clients, each client storing an identifier indicating a data stream associated with the client. The at least one processor is further configured to: receive a plurality of the data streams, each of the data streams comprising data; determine an identifier for each of the plurality of received data streams; generate a mapping between each identifier and a corresponding, distinct multicast address; broadcast the mapping to the plurality of clients; and, for each received data stream, multicast the data of the received data stream using the multicast address mapped to the identifier determined for the received data stream. This may allow data from each data stream to be transmitted only to the clients associated with the data stream. This may allow for efficient communication (e.g., compared to sending data for all received streams to all clients). Thus, efficient, targeted, and scalable communication may be provided.

[0035] Certain embodiments provide a server system comprising a memory and at least one processor configured to multicast data to a plurality of clients, each client storing an identifier indicating a data stream associated with the client. The at least one processor is further configured to: receive a plurality of the data streams, each of the data streams comprising data; determine the identifier for each of the plurality of received data streams; for each of the received data streams, generate a multicast stream comprising the identifier of the received data stream and the data of the received data stream; and multicast the generated multicast stream to the plurality of clients. Because the mapping is encoded within the multicast stream itself, no separate messaging is required to transmit the mapping to the clients. Thus, efficient and scalable communication can be provided. Furthermore, because the mapping is encoded within the multicast stream, each multicast stream can use the same multicast address. Thus, efficient and scalable use of multicast address allocation can be provided. Furthermore, because each multicast stream can use the same multicast address, separate steps associated with different clients requesting to join a separate multicast address are not required. Thus, efficient and scalable communication can be provided.

[0036] Certain embodiments provide a client system comprising a memory storing identifiers indicating data streams associated with a client of the client system and at least one processor. The memory stores identifiers indicating data streams associated with a client of the client system, and the at least one processor is configured to: receive a mapping between a plurality of identifiers and a corresponding plurality of multicast streams from a server system; match the stored identifiers with identifiers in the mapping; and obtain data for the multicast streams mapped to the matching identifiers in the mapping. This allows the client to obtain data associated with (e.g., intended for) the client from the multicast stream.

[0037] In some embodiments, the mapping includes mappings between the plurality of identifiers and corresponding plurality of different multicast addresses, and the at least one processor of the client system is further configured to configure a communication interface of the client system to receive data transmitted with a destination address corresponding to the multicast address mapped to the matching identifier in the mapping. This can allow a client to receive only its associated multicast streams. This can be more efficient than, for example, each client receiving multiple multicast streams and determining which multicast stream is associated with the client system.

[0038] In certain embodiments, a mapping is provided by including each identifier in a corresponding different one of a plurality of multicast streams, and at least one processor of the client system is further configured to: receive the plurality of multicast streams; and obtain data from the multicast stream of the plurality of multicast streams that includes an identifier that matches the stored identifier. Because the mapping is encoded within the multicast stream itself, no separate messaging is required to communicate the mapping to the client. Thus, efficient and scalable communication can be provided. Furthermore, because the mapping is encoded within the multicast stream, each multicast stream can use the same multicast address. This allows each client to be configured (e.g., pre-configured) to receive data with a destination address having a universal multicast address common to all clients. Thus, efficient and scalable use of multicast address allocation can be provided. Furthermore, no separate steps associated with different clients requesting to join a separate multicast address need to be performed. Thus, efficient and scalable communication can be provided.

[0039] Certain embodiments provide a method comprising multicasting data to a plurality of clients. Each client stores an identifier indicating a data stream associated with the client. The method comprises, by a server system: receiving a plurality of data streams, each of the data streams comprising data; determining an identifier for each of the plurality of received data streams; sending a mapping between each identifier and a corresponding multicast stream to the plurality of clients; and multicasting data from the plurality of received data streams according to the mapping. As described above, the method can provide targeted and scalable data transmission.

[0040] Certain embodiments provide a tangible computer-readable medium comprising instructions that, when executed, cause at least one processor of a server system to perform functions. The at least one processor is configured to multicast data to a plurality of clients, each client storing an identifier indicating a data stream associated with the client. The functions include at least: receiving a plurality of data streams, each of the data streams comprising data; determining an identifier for each of the plurality of received data streams; sending a mapping between each identifier and a corresponding multicast stream to the plurality of clients; and multicasting data from the plurality of received data streams according to the mapping. As described above, this method can provide targeted and scalable data transmission.

[0041] II. Example Computing Device

[0042] Figure 1 A block diagram of an example computing device 100 is illustrated. Computing device 100 can be used to implement certain embodiments described herein. In other examples, other computing devices may be used. Computing device 100 includes a communication bus 110, a processor 112, a memory 114, a network interface 116, an input device 118, and an output device 120. Processor 112, memory 114, network interface 116, input device 118, and output device 120 are coupled to communication bus 110. Computing device 100 is connected to an external network 140, such as a local area network (LAN) or a wide area network (WAN), such as the Internet. The computing device is connected to external network 140 via network interface 116. Computing device 100 may include additional, different, or fewer components. For example, multiple communication buses (or other types of component interconnects), multiple processors, multiple memory devices, multiple interfaces, multiple input devices, multiple output devices, or any combination thereof may be provided. As another example, computing device 100 may not include input device 118 or output device 120. As another example, one or more components of computing device 100 may be combined into a single physical element, such as a field programmable gate array (FPGA) or a system on a chip (SoC).

[0043] Communication bus 110 may include a channel, electrical or optical network, circuit, switch, fabric, or other mechanism for communicating data between components in computing device 100. Communication bus 110 may communicatively couple with and transfer data between any component of computing device 100.

[0044] The processor 112 may be any suitable processor, processing unit, or microprocessor. The processor 112 may include, for example, one or more general-purpose processors, digital signal processors, application-specific integrated circuits, FPGAs, analog circuits, digital circuits, programmed processors, and / or combinations thereof. The processor 112 may be a multi-core processor that may include multiple processing cores of the same or different types. The processor 112 may be a single device or a combination of devices, such as one or more devices associated with a network or distributed processing system. The processor 112 may support various processing strategies, such as multiprocessing, multitasking, parallel processing, and / or remote processing. Processing may be local or remote and may be moved from one processor to another. In some embodiments, the computing device 100 is a multi-processor system and, therefore, may include one or more additional processors communicatively coupled to the communication bus 110.

[0045] Processor 112 may be operable to execute logic and other computer-readable instructions encoded in one or more tangible media, such as memory 114. As used herein, logic encoded in one or more tangible media includes instructions executable by processor 112 or a different processor. For example, the logic may be stored as part of software, hardware, an integrated circuit, firmware, and / or microcode. The logic may be received from an external communication device via communication network 140. Processor 112 may execute the logic to perform the functions, actions, or tasks described herein.

[0046] The memory 114 can be one or more tangible media, such as computer-readable storage media. Computer-readable storage media can include various types of volatile and non-volatile storage media, including, for example, random access memory, read-only memory, programmable read-only memory, electrically programmable read-only memory, electrically erasable read-only memory, flash memory, any combination thereof, or any other tangible data storage device. As used herein, the term non-transitory or tangible computer-readable medium is expressly defined to include any type of computer-readable medium and exclude propagating signals. The memory 114 can include any desired type of mass storage device, including a hard drive, optical media, tape or disk, etc.

[0047] The memory 114 may include one or more memory devices. For example, the memory 114 may include cache memory, local memory, mass storage devices, volatile memory, non-volatile memory, or a combination thereof. The memory 114 may be adjacent to the processor 112, part of the processor 112, programmed with the processor 112, networked with the processor 112, and / or remote from the processor 112, so that data stored in the memory 114 can be retrieved and processed, for example, by the processor 112. The memory 114 may store instructions executable by the processor 112. The instructions may be executed to perform one or more of the actions or functions described herein.

[0048] The memory 114 may store an application 130 that implements the disclosed technology. In some embodiments, the application 130 may be accessed from or stored in different locations. The processor 112 may access the application 130 stored in the memory 114 and execute computer-readable instructions included in the application 130.

[0049] The network interface 116 may include one or more network adapters. The network adapter may be a wired or wireless network adapter. The network interface 116 may allow the computing device 100 to communicate with the external network 140. The computing device 100 may communicate with other devices via the network interface 116 using one or more network protocols such as Ethernet, Internet Protocol (IP), Transmission Control Protocol (TCP), User Datagram Protocol (UDP), wireless network protocols such as Wi-Fi, Long Term Evolution (LTE) protocol, or other suitable protocols.

[0050] The input device(s) 118 may include a position input device, such as a mouse, touchpad, touch screen, etc.; a keyboard, buttons, switches, etc.; and / or other human interface devices. The output device(s) 120 may include a display, which may be a liquid crystal display (LCD), a cathode ray tube (CRT), a light emitting diode (LED) display (such as an OLED display), or other suitable display.

[0051] In some embodiments, during the installation process, the application may be transferred from the input device 118 and / or the network 140 to the memory 114. When the computing device 100 is running or preparing to run the application 130, the processor 112 may retrieve instructions from the memory 114 via the communication bus 110.

[0052] III. Example System

[0053] Figure 2 2 shows an example system 200 in which some embodiments disclosed herein may be employed. The system 200 includes client devices 202a, 202b, an ID server 204, a server system 206, and a data source 208. One or more of the client devices 202a, 202b, the ID server 204, the server system 206, and the data source 208 may be managed by a computing device such as the one referenced above. Figure 1 In this example, each client device 202a, 202b includes a respective client (ie, software) running on the respective computing device.

[0054] Client devices 202a and 202b communicate with ID server 204 via a first network 210. For example, first network 210 can be a local area network or a wide area network, such as the Internet. Client devices 202a and 202b communicate with server system 206 via a second network 212. Second network 212 is a multicast network, i.e., a network capable of multicast messaging. For example, second network 212 can be a suitable local area network, intranet, private network, or virtual private network (VPN). ID server 204 communicates with server system 206 via a third network 214. For example, third network 214 can be a private network or a VPN. Server system 206 communicates with data source 208 via a fourth network 216. For example, fourth network 216 can be a local area network or a wide area network, such as the Internet. One or more of first network 210, second network 212, third network 214, and fourth network 216 can be the same network.

[0055] In this example, each client device 202a, 202b or its user has a pre-existing relationship with the data source 208. Specifically, each client device 202a, 202b or its user has an account with the data source 208. Figure 2 In arrangements other than that depicted in , each client device 202a, 202b may connect directly to the data source 208, log into a specific account at the data source 208, and be provided with a data stream including data tailored to the specific account by the data source 208. In such other cases, the data source 208 may provide different data streams to different client devices 202a, 202b via different connections. However, in Figure 2 In the example of FIG2 , client devices 202a, 202b are not directly connected to data source 208. Instead, in this example, client devices 202a, 202b communicate with server system 206, which is configured to multicast data to multiple client devices 202a, 202b via second network 212. This provides an efficient and scalable way for server system 206 to provide the same data to each of multiple client devices 202a, 202b. However, it is desirable that server system 206 also provide data from different data streams for different accounts of data source 208 to appropriate client devices 202a, 202b. That is, it is desirable that each client device 202a, 202b can obtain data from their respective associated data streams generated by data source 208 from server system 206. For example, this may be the case where each client device 202a, 202b is using a platform provided by server system 206 and desires data from a data stream to be provided within the context of that platform.

[0056] exist Figure 2In the example of FIG, each client device 202a, 202b is associated with a data stream provided by a data source 208. As mentioned, different client devices 202a, 202b may wish to obtain data from different data streams provided by the data source 208. For example, one or more of the client devices 202a, 202b may be a personal computer or mobile device operated by a user. A user of a particular client device 202a, 202b may wish to display data from a particular one of the data streams provided by the data source 208, particularly a data stream generated by the data source 208 for the user's account. As another example, one or more of the client devices 202a, 202b may be a server or other computing device. An algorithm or other process running on a particular one of the computing devices 202a, 202b may be configured to be provided with input data from a particular one of the data streams provided by the data source 208, particularly a data stream generated by the data source 208 for the account associated with the process.

[0057] Each client device 202a, 202b has connection information for establishing a connection with a data source 208, through which data streams associated with the client device 202a, 202b can be received. For example, the connection information may be connection information that a particular client device 202a, 202b may have originally used to directly connect to the data source 208 to receive data streams generated for an account associated with the particular client device 202a, 202b. The connection information for a particular client device 202a, 202b includes address information for the data source 208 and account information for accessing the data source 208. The address information includes an IP address and port number, which can be used to establish a TCP connection to receive data streams from the data source 208. The account information may include login information used by the data source 208 to identify and access a particular account at the data source 208. For each particular account, the data source 208 provides a corresponding different data stream.

[0058] Each client device 202a, 202b provides its corresponding connection information for connecting to the data source 208 to the ID server 204. For example, this may occur when each client device 202a, 202b registers with the platform provided by the server system 206. Thus, the ID server 204 obtains the connection information for each client device 202a, 202b. The ID server 204 associates the connection information for each different client device 202a, 202b with an identifier. As an example, the ID server 204 may generate an identifier for the connection information of each client device 202a, 202b. For example, a randomly generated identifier may be assigned to the connection information of each client device 202a, 202b. As another example, each identifier may be generated based on the connection information of the corresponding client device 202a, 202b. In yet another example, an identifier need not be generated. Instead, the ID server 204 may assign an identifier from a plurality of pre-generated identifiers to the connection information of each client device 202a, 202b. Each identifier may be unique at least among the plurality of client devices 202a, 202b.

[0059] For each client device 202a, 202b, ID server 204 provides connection information for the client device 202a, 202b, associated with an identifier associated with the connection information of the client device, to server system 206. Thus, server system 206 obtains the connection information for each client device 202a, 202b and the identifier associated with the connection information for each client device 202a, 202b. Server system 206 stores the connection information associated with the identifier for each client device 202a, 202b. For each client device 202a, 202b, server system 206 uses the connection information to establish a connection with data source 208. Specifically, for each client device 202a, 202b, server system 206 uses the associated address information to establish a TCP connection with data source 208 and uses the associated login information to access the associated account at data source 208. For a given account, data source 208 generates a data stream and sends the data stream via the associated connection with server system 206. In this case, there is a one-to-one mapping between the different data streams produced by data source 208 and the number of connections between server system 206 and data source 208 .

[0060] ID server 204 also provides each client device 202a, 202b with an identifier associated with the connection information of client device 202a, 202b. Thus, each client device 202a, 202b receives an identifier indicating a data stream associated with client device 202a, 202b. Each client device 202a, 202b stores the received identifier. Consequently, each client device 202a, 202b stores an identifier indicating a data stream associated with client device 202a, 202b.

[0061] As a result of the above steps, each client device 202a, 202b stores an identifier indicating the data stream associated with the client device 202a, 202b. The server system 206 receives multiple data streams, each of which includes data. Specifically, the server system 206 receives, for each client device 202a, 202b, a data stream provided for an account associated with the client device 202a, 202b and a connection established using the connection information of the client device 202a, 202b from a data source 208. As described in more detail below, the server system 206 multicasts the data of the received stream, so that each client device 202a, 202b can obtain the data of the data stream associated therewith. In this way, the data source 208 can be integrated with the platform provided by the server system 206. In an example, the server system 206 can perform conversion and / or translation of the data of each received data stream before multicasting the data. For example, server system 206 may perform protocol conversion from a protocol used and understood by data source 208 (and therefore received data streams from data source 208 according to which server system 206 receives data streams from data source 208 ) to a protocol used and understood by respective client devices 202a , 202b .

[0062] As described above, the server system 206 receives multiple data streams. In this example, the server system 206 receives the multiple data streams through corresponding multiple different connections with the data source 208, as described above. The server system 206 determines an identifier for each of the multiple data streams. Specifically, for each of the received data streams, the server system 206 determines the identifier of the received data stream based on the connection of the received data stream. The server system 206 can store identifiers, each of which is associated with the corresponding connection information for establishing the corresponding data stream connection through which the data stream is received. Therefore, for each of the multiple received data streams, the server system 206 can determine the identifier associated with the connection information of the connection through which the data stream is received as the identifier of the data stream. In other words, for a data stream received through a specific connection with the data source 208, the server system 206 can determine the identifier of the data stream as the identifier associated with the connection information of the connection.

[0063] The server system 206 sends a mapping between each identifier and a corresponding multicast stream to the plurality of client devices 202a, 202b and multicasts data (e.g., appropriately converted data) of the received data stream according to the mapping. Each client device 202a, 202b receives the mapping between the plurality of identifiers and the corresponding plurality of multicast streams, matches the identifier stored at the client device 202a, 202b with the identifier in the mapping, and receives the data of the multicast stream mapped to the matching identifier in the mapping. As described below with reference to Figure 5 and Figure 6 As described in more detail, in some examples, this may involve multicasting the data of the received data stream using a different multicast address. Figure 7 As described in more detail, in some examples, this can involve generating multicast streams, each including a different identifier. In either case, providing a mapping to multiple client devices 202a, 202b and multicasting data from the received data streams according to the mapping allows the client devices 202a, 202b to obtain data from the associated data streams via multicast. This provides customized and scalable communication.

[0064] IV. Multicast Address

[0065] Typically, server system 206 is configured to multicast data to multiple client devices 202a, 202b. In some examples, IP multicast can be used. IP multicast utilizes the IP infrastructure in a network, such as second network 212. In IPv4 and IPv6, a specially reserved multicast IP address block is used. Server system 206 includes the multicast address as the IP destination address in the packets it sends on second network 212. Nodes in second network 212, such as network switches and routers, replicate the packets so that they reach multiple client devices 202a, 202b. Specifically, each client device 202a, 202b first registers its interest in receiving data transmitted using a specific multicast address by sending a join request indicating the multicast address to the network. For example, the Internet Group Management Protocol (IGMP) can be used to send the join request. Based on the received join request, nodes in second network 212 construct a multicast distribution tree for the specific multicast address. This can be accomplished, for example, using Protocol Independent Multicast (PIM). Using the multicast distribution tree, the second network 212 routes multicast packets from the server system 206 having a particular multicast address as a destination address to be received by each of the client devices 202a, 202b.

[0066] As mentioned, the server system 206 receives a plurality of data streams from the data source 208, determines an identifier for each received data stream, and transmits a mapping between each identifier and a corresponding multicast stream to the plurality of client devices 202a, 202b. In some examples, the mapping includes a mapping between each identifier and a corresponding different multicast address for the multicast stream. The different multicast addresses in the mapping represent different destination addresses to which data of the different data streams will be multicasted by the server system 206. The server system 206 can generate the mapping. For example, for each data stream received by the server system 206, the server system 206 associates an identifier determined for the data stream with a multicast address. The server system 206 can assign a multicast address to a specific identifier from a pool of available multicast addresses. The server system 206 can store these assignments in a data structure such as a table, thereby generating the mapping.

[0067] Figure 3 An example mapping 302 between identifiers and corresponding multicast addresses is shown. In this example, each multicast address includes an IP address and a port number. Specifically, Figure 3 In the example shown in FIG3 , a first identifier 28454930 associated with a first data stream associated with a first client device 202a has been assigned a first multicast address having an IP address of 239.225.225.X and a port number of P, and a second identifier 74504482 associated with a second data stream associated with a second client device 202b has been assigned a second multicast address having an IP address of 239.225.225.Y and a port number of Q. In the example, the IP address of the first multicast address and the second multicast address can be the same, and the port numbers can be different. In the example, the IP address of the first multicast address and the second multicast address can be different, and the port numbers can be the same or different. In either case, a different multicast address is assigned to each different identifier, thereby generating a mapping 302.

[0068] return Figure 2 In this example, the server system 206 broadcasts the mapping 302 to the plurality of client devices 202a, 202b. Specifically, the server system 206 broadcasts the mapping over the second network 212 for reception by all client devices 202a, 202b connected to the second network 212. For example, in IPv4, a packet can be broadcast to all devices on a network by including a special value in the host identification portion of the IP address. As another example, in IPv6, a broadcast to all client devices 202a, 202b connected to the second network 212 can be achieved by including an "all IPv6 devices" multicast address in the destination address. In either case, the mapping 302 is broadcast to all of the plurality of client devices 202a, 202b. The mapping 302 can be included in the payload of one or more broadcast packets.

[0069] Each client device 202a, 202b receives a mapping 302 between a plurality of identifiers and a corresponding plurality of multicast addresses from the server system 602. Each client device 202a, 202b can extract the mapping 302 from the received broadcast packet and match the identifier stored at the client device with the identifier included in the mapping 302. For example, for a first client device 202a, the first identifier stored at the first client device 202a is 28454930. The first client device 202a parses the mapping 302 to match the first identifier 28454930 with the identifier 28454930 in the mapping 302. Each client device 202a, 202b can then configure the communication interface of the client device 202a, 202b to receive transmitted data where the destination address corresponds to the multicast address mapped to the matching identifier in the mapping 302. For example, for the first client device 202a, the multicast address mapped to the matching identifier in mapping 302 is the first multicast address, specifically the IP address 239.225.225.X and the port number P. The first client device 202a accordingly sends a join request to the second network 212, the join request specifying the first multicast address, specifically the IP address 239.225.225.X and the port number P. The second network 212 is then configured such that packets with the first multicast address as a destination address are routed to the first client device 202a. The communication interface of the first client device 202a is configured to receive (e.g., as opposed to discarding) packets with the first multicast address as a destination address.

[0070] Then, for each received data stream, the server system 206 multicasts the data of the received data stream using the multicast address mapped to the identifier determined for the received data stream. For example, for each received data stream, the server system 206 may extract data from the received data stream and include the data (or data derived therefrom) in packets of the multicast stream. The server system 206 includes the multicast address mapped to the identifier determined for the received data stream as the destination address of the packets of the multicast stream. For example, referring again to Figure 3 For the first data stream having the first identifier 28454930 determined, the server system generates a multicast stream based on data from the first data stream, wherein all packets of the generated multicast stream have the first multicast address (ie, IP address 239.225.225.X and port number P) as destination addresses.

[0071] Figure 4Multicast stream packets 400 according to an example are shown. For each received data stream, the associated multicast stream can be composed of one or more such multicast packets 400. The multicast packets 400 include a header 410 and a payload 420. For each received data stream, the header 410 of the associated multicast packet includes a multicast address 412 mapped to an identifier determined for the data stream as a destination address, and the payload 420 includes data 422 for the received data stream. The data 422 for the received data stream can include data included in the received data stream and / or data derived from data included in the received data stream. For example, for each received stream, the server system 206 can process (e.g., normalize) the data of the received data stream and include the resulting processed (e.g., normalized) data as data 422 in one or more packets 400 of the associated multicast stream.

[0072] Thus, for each received data stream, the server system 206 is able to multicast the corresponding multicast stream using the multicast address mapped to the identifier determined for the received data stream. Thus, data from different received data streams can be received by different client devices 202a, 202b based on the different multicast addresses used for multicast data. Specifically, as described above, each client device 202a, 202b receives a transmitted multicast stream from the server system 206, where the destination address corresponds to the multicast address mapped to the identifier in the mapping 302, which matches the identifier stored by the client device 202a, 202b. In this example, since different multicast streams are multicast to corresponding different client devices 202a, 202b, each client device 202a, 202b can receive data from its associated data stream (e.g., compared to sending data from all received data streams to all client devices 202a, 202b). Thus, efficient, scalable communication can be provided.

[0073] V. Multicast Streams Including Identifiers

[0074] As mentioned, the server system 206 receives a plurality of data streams from a data source 208, determines an identifier for each received data stream, and transmits a mapping between each identifier and a corresponding multicast stream to a plurality of client devices 202a, 202b. In some examples, the server system 206 generates a multicast stream for each of the plurality of received data streams, the multicast stream comprising the identifier determined for the received data stream and the data for the received data stream. The server system 206 then multicasts the generated multicast stream to the plurality of client devices 202a, 202b. In these examples, the mapping between each identifier and the corresponding multicast stream is encoded into the multicast stream itself. That is, because each multicast stream is generated to include data from a received data stream and the identifier determined for the received data stream, each client device 202a, 202b is able to determine which multicast stream includes data from the data stream associated with it.

[0075] Figure 5 Multicast stream packets 500 according to another example are shown. For each received data stream, the associated multicast stream may be composed of one or more such multicast packets 500. Multicast packets 500 include a header 510 and a payload 520. For each of the generated multicast streams, header 510 includes an identifier 514 for the received data stream, and the payload includes data 522 for the received data stream. The data 522 for the received data stream may include data included in the received data stream and / or data derived from the data included in the received data stream. For example, for each received stream, server system 206 may process (e.g., normalize) the data of the received data stream and include the resulting processed (e.g., normalized) data as data 522 in one or more packets 500 of the associated multicast stream. For example, normalizing the data of the data stream may include converting the data into a format that client devices 202a, 202b will understand. Different multicast streams may be distinguished by different identifiers 514 included in the headers 510 of the packets 500 of the multicast streams. In the example, each of the generated multicast streams is multicasted by the server system 206 using the same multicast address 512. That is, each of the packets 500 of the different multicast streams may all include the same multicast address 512 as the destination address in the header 510. As an example, this may be the multicast address that the client devices 202a, 202b are configured to request the second network 212 to join as a default.

[0076] The server system 206 can generate a first multicast stream of the first received data stream by including data of the first data stream in the payload 520 of one or more multicast packets 500 and including a first identifier determined for the first data stream in the header 510 of each of the multicast packets 500. The server system 206 can generate a second multicast stream of the second received data stream by including data of the second data stream in the payload 520 of one or more multicast packets 500 and including a second identifier determined for the first data stream in the header 510 of each of those multicast packets 500. The server system 206 can multicast the multicast stream to all of the plurality of client devices 202a, 202b, for example, using a multicast address 512 to which all of the client devices 202a, 202b are subscribed as the destination address in the header of the packets 500. Thus, both the first multicast stream and the second multicast stream are transmitted to both the first client device 202a, 202b.

[0077] Each client device 202a, 202b is configured to match an identifier stored at the client device 202a, 202b with an identifier in the mapping and receive data for the multicast stream mapped to the matching identifier in the mapping. As mentioned, in this example, the mapping is provided by including each identifier in a corresponding different one of the multicast streams. Each client device 202a, 202b is configured to receive multiple multicast streams and obtain data from a multicast stream in the multiple received multicast streams that includes an identifier that matches the identifier stored at the client device 202a, 202b. For example, the client devices 202a, 202b may be configured with an application programming interface (API) that is configured to receive the multicast streams and parse a given multicast stream (or each packet thereof) to determine whether it includes an identifier 514 that matches the identifier stored at the client device 202a, 202b. For example, the API functionality can examine the header 510 of each received multicast packet 500 to determine whether it includes an identifier 514 that matches an identifier stored by the client device 202a, 202b. If the multicast stream (or its packets) does not include an identifier that matches the stored identifier, the API functionality can discard the multicast stream or packet. However, if the multicast stream (or its packets) does include an identifier that matches the stored identifier, the API functionality can pass the packet (or at least a portion of its data 522) to the client device 202a, 202b. Thus, each client device 202a, 202b obtains data for its associated data stream.

[0078] In this example, because the mapping is encoded into the multicast stream itself, there is no need for the server system 206 to perform separate messaging to transmit the mapping to the client devices 202a, 202b. Thus, efficient, scalable communication can be provided. Furthermore, in this example, because the mapping is encoded into the multicast stream itself, each multicast stream can use the same multicast address. Thus, efficient and scalable use of multicast address allocation can be provided. Furthermore, because each multicast stream can use the same multicast address, there is no need to perform separate steps associated with different client devices 202a, 202b requesting to join separate multicast addresses. Thus, efficient, scalable communication can be provided.

[0079] In some examples, ID server 204 includes a licensing server (not shown) that stores the permissions for each client device 202a, 202b (or its user) to obtain data from specific data streams. In these examples, for each client device 202a, 202b (or its user), the licensing server stores client device information for the client device 202a, 202b in association with one or more identifiers of the corresponding one or more data streams from which the client device 202a, 202b (or its user) is permitted to obtain data. In these examples, an API of each client device 202a, 202b communicates with the licensing server via the first network 202a, 202b. Specifically, for each client device 202a, 202b, the API of the client device 202a, 202b provides the client device information of the client device 202a, 202b to the licensing server. The licensing server uses the provided client device information to determine one or more identifiers of the corresponding one or more data streams from which the client device 202a, 202b is permitted to obtain data. The licensing server then provides the determined one or more identifiers to the API, and the API can store the one or more identifiers at the client device 202a, 202b. The API then uses these stored identifiers to match (or not match) identifiers included in the multicast stream received by the client device 202a, 202b. This provides a way to achieve central control of the data stream, from which each client device 202a, 202b may or may not obtain data via the server system 206.

[0080] VI. variants

[0081] Reference above Figures 2 to 5 The system 200, its components, and the operation of the components described relate to illustrative examples. In other examples, variations can be made to the above examples.

[0082] For example, in the above example, the ID server 204 generates an identifier associated with the connection information, provides the identifier to the corresponding client device 202a, 202b, and provides the identifier and the connection information to the server system 206. However, it should be understood that this is not necessarily the case, and in other examples, other ways of providing identifiers can be used. For example, each received data stream itself can contain an identifier, such as an identifier of the stream. For example, the identifier can encode or otherwise indicate the type of data in the data stream or a specific combination of data. Each client device 202a, 202b can also store such an identifier. For example, each client device 202a, 202b can store such an identifier that indicates the type of data or a specific combination of data that the client device is to obtain or be configured to use. In these examples, the server system 206 can determine the identifier of each data stream in the multiple received data streams directly from each data stream. In such examples, the system 200 does not necessarily need to include the ID server 204.

[0083] As another example, the above examples describe receiving multiple data streams from data source 208. However, it should be understood that this is not necessarily the case, and in other examples, multiple data streams may be received from multiple data sources (not shown). In these examples, server system 206 may receive multiple data streams from two or more data sources. For example, each different data source may provide a corresponding different data stream to server system 206. In such examples, the connection information provided by each client device 202a, 202b may be used to establish a connection with the corresponding different data source 208, over which the associated data stream is transmitted. Alternatively or additionally, in such examples, each data stream received by server system 206 from a given data source may itself include an identifier for the data stream. For example, the identifier may indicate the data source from which the data stream was received. Server system 206 may determine the identifier for each data stream as indicating the identifier of the data source from which the data stream was received. In such examples, each client device 202a, 202b may store such an identifier, which indicates the data source providing the data stream that the client device is to use or is configured to use.

[0084] As another example, in the above examples, multiple data streams are described as being received from data source 208. However, it should be understood that this is not necessarily the case, and in other examples, a separate data source 208 need not be used. For example, in some examples, a component of server system 206 may act as a data source and generate different data streams received by a processor of server system 206. In these examples, server system 206 may determine an identifier for each stream by assigning an identifier to each generated stream. For example, as described above, each identifier may encode or otherwise indicate a type of data or a specific combination of data in the data stream. In these examples, the system need not include a separate data source 208.

[0085] As another example, in the above examples, data source 208 and ID server 204 are described as being separate from server system 206. That is, ID server 204 communicates with server system 206 via third network 214, and data source 208 communicates with server system 206 via fourth network. However, it should be understood that this is not necessarily the case, and in other examples (not shown), data source 208 and / or ID server 204 may be part of or otherwise incorporated into server system 206. That is, in some examples, server system 206 may additionally provide the functionality of ID server 204 and / or data source 208 as described above.

[0086] As another example, in some of the above examples, there are two client devices 202a, 202b, and each client device 202a, 202b is described as being associated with a different data stream provided by data source 208, and each client device 202a, 202b stores a different identifier and obtains data from a corresponding different multicast stream. However, it should be understood that this is not necessarily the case, and in other examples, any number of client devices 202a, 202b may exist, and in some examples, two or more of client devices 202a, 202b may be associated with the same data stream provided by data source 208 and may store the same identifier and obtain the same data from the same multicast stream. For example, two or more of client devices 202a, 202b may each be used by or operated on behalf of the same user. These two or more client devices 202a, 202b may store the same identifier and obtain the same data from the same multicast stream. In this case, for example, a third client device 202a, 202b may store a different identifier and obtain data from a different multicast stream, such as described above.

[0087] As another example, in the above example, system 200 is described as including multiple client devices 202a and 202b. That is, in the above example, multiple computing devices are described, each running a corresponding client. However, it should be understood that this is not necessarily the case, and more generally, system 200 may include multiple clients running on one or more computing devices. For example, as described above, each different client may run on a corresponding different computing device (each computing device forming a different client device 202a and 202b). However, in other examples, each different client (i.e., an application or other software) may run on one or more computing devices. For example, there may be multiple different clients running on a single computing device, such as when the device is operating on behalf of multiple users. In either case, each client may be associated with a different data stream (e.g., provided by data source 208), and each client may store a different identifier and obtain data from a different multicast stream, as described above. Therefore, server system 206 may be configured to multicast data to multiple clients, with each client storing an identifier indicating the data stream associated with the client, such as described above for multiple client devices 202a and 202b. Thus, it should be understood that references to "client devices 202a, 202b" in the examples described herein may be viewed as referring more generally to "clients 202a, 202b," where "clients 202a, 202b" may run on one or more computing devices. Other variations are possible.

[0088] VII. Example Method

[0089] refer to Figure 6 , there is a flow chart showing a method according to an example. The method can be performed by a server system, for example according to the above reference Figures 1 to 5 The server system 206 of any of the examples described. In an example, the server system includes a processor (e.g., Figure 1 processor 112) and memory (e.g., Figure 1 The method may be performed by a processor. The processor may be configured to perform the method. The memory may store instructions that, when executed, cause at least one processor of the server system (e.g., Figure 1 The processor 112 of the processor 112 executes the method or the functions defined by the method. For example, the memory may store an application including instructions (e.g., Figure 1 The server system, such as its processor, is configured according to the above reference Figures 1 to 5Any of the examples described multicasts data to multiple clients, such as client devices 202a, 202b. The multiple clients each store an identifier that indicates a data stream associated with the client.

[0090] The method includes receiving a plurality of data streams, each data stream including data, at step 602. For example, as described above, the plurality of data streams may be received via a corresponding plurality of different connections to the data source 208.

[0091] The method includes determining an identifier for each of a plurality of received data streams in step 604. For example, for each received data stream, the identifier of the received data stream may be determined based on the connection over which the data stream is received, as described above.

[0092] The method includes, in step 606, sending a mapping between each identifier and a corresponding multicast stream to a plurality of clients.

[0093] The method includes, in step 608, multicasting data of the plurality of received data streams according to the mapping.

[0094] In a first example, the mapping may include a mapping between each identifier and a corresponding different multicast address for the multicast stream. In this first example, sending the mapping to the plurality of clients may include broadcasting the mapping over a network to which each of the plurality of clients is connected. In this first example, multicasting data of the plurality of received data streams according to the mapping includes, for each received data stream, multicasting the data of the received data stream using the multicast address mapped to the identifier determined for the data stream.

[0095] In a second example, transmitting a mapping to a plurality of clients and multicasting data of a plurality of received data streams according to the mapping includes: for each of the received data streams, generating a multicast stream including an identifier of the received data stream and the data of the received data stream, encoding the mapping into each multicast stream, and multicasting each of the generated multicast streams to the plurality of clients. In this second example, each generated multicast stream may include one or more multicast packets, each multicast packet including a header and a payload, and for each of the generated multicast streams, generating the multicast stream including the identifier includes including the identifier of the received data stream in a header of a packet of the multicast stream and including the data of the received data stream in a payload of the packet of the multicast stream.

[0096] refer to Figure 7 , there is a flow chart showing a method according to another example. Figures 1 to 5In any of the examples described, the method can be performed by a client system, such as each of one or more of the client devices 202a, 202b, or more generally by a computing system running one or more clients. In an example, each client is comprised of a processor (e.g., Figure 1 processor 112) and memory (e.g., Figure 1 The method may be performed by a processor. The processor may be configured to perform the method. The memory 114 may store instructions that, when executed, cause at least one processor of the client system (e.g., Figure 1 The processor 112 of the client system executes the method or the functions defined by the method. The memory of the client system stores an identifier indicating a data stream associated with the client system. For example, the data stream can be one of the data streams received by the server system 206, as described above with reference to Figures 1 to 5 As stated.

[0097] The method includes, in step 702, from a server system (e.g., according to the above reference Figures 1 to 5 The server system 206 of any of the described examples receives a mapping between a plurality of identifiers and a corresponding plurality of multicast streams.

[0098] The method includes, in step 704, matching the stored identifier with an identifier in a mapping.

[0099] The method comprises, in step 706, obtaining data of the multicast flow mapped to the matching identifier in the mapping.

[0100] In a first example, the mapping includes mappings between a plurality of identifiers and a corresponding plurality of different multicast addresses, and obtaining data of the multicast stream mapped to a matching identifier in the mapping includes configuring a communication interface of the client system (e.g., Figure 1 The network interface 116 of the embodiment of the present invention is configured to receive the transmitted data, wherein the destination address corresponds to the multicast address mapped to the matching identifier in the mapping.

[0101] In a second example, the mapping is provided by including each identifier in a corresponding different one of a plurality of multicast streams, and receiving the mapping includes receiving the plurality of multicast streams. In this second example, obtaining data for the multicast stream mapped to the matching identifier in the mapping includes obtaining data from a multicast stream of the plurality of received multicast streams that includes an identifier that matches the stored identifier.

[0102] refer to Figure 8 , there is a flow chart showing a method according to an example. The method can be performed by a server system, for example according to the above reference Figures 1 to 5The server system 206 of any of the examples described. In an example, the server system includes a processor (e.g., Figure 1 processor 112) and memory (e.g., Figure 1 The method may be performed by a processor. The processor may be configured to perform the method. The memory may store instructions that, when executed, cause at least one processor of the server system (e.g., Figure 1 The processor 112 of the processor 112 executes the method or the functions defined by the method. For example, the memory may store an application including instructions (e.g., Figure 1 The server system (e.g., its processor) is configured to multicast data to multiple clients, such as client devices 202a, 202b or more generally according to the above reference Figures 1 to 5 The client of any of the examples described, wherein each of the plurality of clients stores an identifier indicating a data stream associated with the client.

[0103] The method includes receiving a plurality of data streams, each data stream including data, at step 802. For example, as described above, the plurality of data streams may be received via a corresponding plurality of different connections to the data source 208.

[0104] The method includes determining an identifier for each of a plurality of received data streams in step 804. For example, for each received data stream, the identifier of the received data stream may be determined based on the connection from which the data stream was received, as described above.

[0105] The method includes, in step 806, generating a mapping between each identifier and a corresponding different multicast address.

[0106] The method includes, in step 808, broadcasting the mapping to a plurality of clients.

[0107] The method comprises, in step 810, for each received data stream, multicasting data of the received data stream using a multicast address mapped to an identifier determined for the received data stream.

[0108] refer to Figure 9 , there is a flow chart showing a method according to an example. The method can be performed by a server system, for example according to the above reference Figures 1 to 5 The server system 206 of any of the examples described. In an example, the server system includes a processor (e.g., Figure 1 processor 112) and memory (e.g., Figure 1 The method may be performed by a processor. The processor may be configured to perform the method. The memory may store instructions that, when executed, cause at least one processor of the server system (e.g., Figure 1 The processor 112 of the processor 112 executes the method or the functions defined by the method. For example, the memory may store an application including instructions (e.g., Figure 1 The server system (e.g., its processor) is configured to multicast data to multiple clients, such as client devices 202a, 202b or more generally according to the above reference Figures 1 to 5 The client of any of the examples described, wherein each of the plurality of clients stores an identifier indicating a data stream associated with the client.

[0109] The method includes receiving a plurality of data streams, each data stream including data, at step 902. For example, as described above, the plurality of data streams may be received via a corresponding plurality of different connections to the data source 208.

[0110] The method includes determining an identifier for each of the plurality of received data streams in step 904. For example, for each received data stream, the identifier of the received data stream may be determined based on the connection from which the data stream was received, as described above.

[0111] The method includes, for each of the received data streams, generating a multicast stream including an identifier of the received data stream and data of the received data stream in step 906. For example, each generated multicast stream may include one or more multicast packets, each multicast packet including a header and a payload, and for each of the generated multicast streams, generating the multicast stream including the identifier may include including the identifier of the received data stream in a header of a packet of the multicast stream and including the data of the received data stream in a payload of the packet of the multicast stream.

[0112] The method includes, in step 908, multicasting the generated multicast stream to a plurality of clients.

[0113] VIII. Example Electronic Trading System

[0114] Figure 10 A block diagram is shown representing an example electronic trading system 1000 in which certain embodiments may be employed. System 1000 includes a trading device 1010, a gateway 1020, and an exchange 1030. Trading device 1010 communicates with gateway 1020. Gateway 1020 communicates with exchange 1030. As used herein, the phrase "in communication with" encompasses direct communication and / or indirect communication through one or more intermediary components. Trading device 1010, gateway 1020, and / or exchange 1030 may include Figure 1 One or more computing devices 100. Figure 10The exemplary electronic transaction system 1000 depicted in FIG. 1 may communicate with additional components, subsystems, and elements to provide additional functionality and capabilities without departing from the teachings and disclosure provided herein.

[0115] In operation, trading device 1010 may receive market data from exchange 1030 via gateway 1020. Trading device 1010 may send messages to exchange 1030 via gateway 1020. A user may utilize trading device 1010 to monitor market data and / or make decisions based on sending order messages to exchange 1030 to buy or sell one or more tradable objects. Trading device 1010 may use market data to take trading actions, such as sending order messages to exchange 1030. For example, the trading device may execute an algorithm that uses market data as input and outputs a trading action, such as sending an order message to exchange 1030. The algorithm may or may not require input from the user in order to take a trading action.

[0116] Market data may include data about the market for a tradable entity. For example, market data may include the internal market, market depth, last traded price ("LTP"), last traded quantity ("LTQ"), or a combination thereof. The internal market refers to the highest available bid (best bid) and lowest available ask (best ask or best ask) in the market for a tradable entity at a specific point in time (as the internal market may vary over time). Market depth refers to the quantity available at price levels both within and away from the internal market. Market depth may have "gaps" due to the absence of prices based on the number of orders in the market.

[0117] Price levels associated with internal markets and market depth can be provided as value levels, which can include a price and a derived and / or calculated value representation. For example, a value level can be displayed as the net change relative to the opening price. As another example, a value level can be provided as a value calculated based on prices in two other markets. In another example, a value level can include a consolidated price level.

[0118] A tradable object is anything that can be traded. For example, a certain quantity of a tradable object can be bought or sold at a specific price. Tradable objects may include, for example, financial instruments, stocks, options, bonds, futures contracts, currencies, warrants, fund derivatives, securities, commodities, swaps, interest rate products, index-based products, trading events, goods, or any combination thereof. Tradable objects may include products listed and / or managed by an exchange, user-defined products, combinations of real or synthetic products, or any combination thereof. Synthetic tradable objects may correspond to and / or be similar to real tradable objects.

[0119] An order message is a message that includes a trade order. A trade order can be, for example, a command to place an order to buy or sell a tradable object; a command to initiate a management order according to a defined trading strategy; a command to change, modify, or cancel an order; an instruction to an electronic exchange related to an order; or a combination thereof.

[0120] Trading device 1010 may include one or more electronic computing platforms. For example, trading device 1010 may include a desktop computer, a handheld device, a laptop computer, a server, a portable computing device, a trading terminal, an embedded trading system, a workstation, an algorithmic trading system such as a "black box" or "gray box" system, a computer cluster, or a combination thereof. As another example, trading device 1010 may include a single-core or multi-core processor in communication with a memory or other storage medium configured to accessibly store one or more computer programs, applications, libraries, computer-readable instructions, etc. for execution by the processor.

[0121] For example, trading device 1010 may comprise a computing device, such as a personal computer or a mobile device, that communicates with one or more servers, where the computing device and the one or more servers are collectively trading device 1010. For example, trading device 1010 may comprise a computing device and one or more servers that together run the TT® platform, an electronic trading platform provided by Trading Technologies International, Inc. ("Trading Technologies") of Chicago, Illinois. For example, one or more servers may run a portion of the TT platform, such as a portion that provides a web server, and the computing device may run another portion of the TT platform, such as a portion that provides user interface functionality within a web browser. The computing device and server may communicate with each other using, for example, browser session requests and responses or web sockets to implement the TT platform. As another example, trading device 1010 may comprise a computing device, such as a personal computer or a mobile device, that runs an application such as TT® Desktop or TT® Mobile, both of which are electronic trading applications also provided by Trading Technologies. As another example, the trading device 1010 may be one or more server trading applications running trading tools such as ADL®, AUTOSPREADER®, AUTOTRADER™, and / or MD TRADER®, also provided by Trading Technologies.

[0122] Trading device 1010 may be controlled or used by a user. As used herein, the term "user" may include, but is not limited to, a person (e.g., a trader), a trading group (e.g., a group of traders), or an electronic trading device (e.g., an algorithmic trading system). One or more users may participate in the control or other use of a trading device.

[0123] The trading device 1010 may include one or more trading applications. As used herein, a trading application is an application that facilitates or improves electronic trading. A trading application provides one or more electronic trading tools. For example, a trading application stored by the trading device may be executed to arrange and display market data in one or more trading windows. In another example, a trading application may include an automated spread trading application that provides spread trading tools. In yet another example, a trading application may include an algorithmic trading application that automatically processes algorithms and performs certain actions, such as placing orders, modifying existing orders, and deleting orders. In yet another example, a trading application may provide one or more trading screens. A trading screen may provide one or more trading tools that allow interaction with one or more markets. For example, a trading tool may allow a user to obtain and view market data, set order entry parameters, submit order messages to an exchange, deploy trading algorithms, and / or monitor positions while implementing various trading strategies. The electronic trading tools provided by the trading application may be always available or may only be available in certain configurations or operating modes of the trading application.

[0124] The trading application may be implemented using computer-readable instructions stored in a computer-readable medium and executable by a processor. Computer-readable media may include various types of volatile and non-volatile storage media, including, for example, random access memory, read-only memory, programmable read-only memory, electrically programmable read-only memory, electrically erasable read-only memory, flash memory, any combination thereof, or any other tangible data storage device. As used herein, the term non-transitory or tangible computer-readable medium is expressly defined to include any type of computer-readable storage medium and to exclude propagating signals.

[0125] One or more components or modules of the transaction application can be loaded into the computer-readable medium of transaction device 1010 from another computer-readable medium. For example, the transaction application (or updates to the transaction application) can be stored by the manufacturer, developer, or publisher on one or more CDs, DVDs, or USB drives, which can then be loaded onto transaction device 1010 or onto a server from which transaction device 1010 retrieves the transaction application. As another example, transaction device 1010 can receive the transaction application (or updates to the transaction application) from a server, for example, via the Internet or an intranet. Transaction device 1010 can receive the transaction application or updates upon request by transaction device 1010 (e.g., "pull distribution") and / or without request by transaction device 1010 (e.g., "push distribution").

[0126] The trading device 1010 may be adapted to send an order message. For example, the order message may be sent to the exchange 1030 via the gateway 1020. As another example, the trading device 1010 may be adapted to send an order message to a simulated exchange in a simulated environment that does not implement real-world trading.

[0127] An order message can be sent at the user's request. For example, a trader can use trading device 1010 to send an order message or manually enter one or more parameters for a trade order (e.g., order price and / or quantity). As another example, an automated trading tool provided by a trading application can calculate one or more parameters for a trade order and automatically send an order message. In some cases, the automated trading tool may prepare an order message for sending but may not actually send the order message without confirmation from the user.

[0128] The command message can be sent in one or more data packets or through a shared memory system. For example, an order message can be sent from trading device 1010 to exchange 1030 through gateway 1020. Trading device 1010 can communicate with gateway 1020 using a local area network, a wide area network, a multicast network, a wireless network, a virtual private network, an intranet, a cellular network, a peer-to-peer network, a point of presence, a dedicated line, the Internet, a shared memory system, and / or a proprietary network.

[0129] The gateway 1020 may include one or more electronic computing platforms. For example, the gateway 1020 may be implemented as one or more desktop computers, handheld devices, laptop computers, servers, portable computing devices, trading terminals, embedded trading systems, workstations with single-core or multi-core processors, algorithmic trading systems such as "black box" or "grey box" systems, computer clusters, or any combination thereof.

[0130] The gateway 1020 facilitates communication. For example, the gateway 1020 can perform protocol conversion on data communicated between the trading device 1010 and the exchange 1030. The gateway 1020 can process order messages received from the trading device 1010 into a data format understood by the exchange 1030, for example. Similarly, for example, the gateway 1020 can convert market data received from the exchange 1030 in an exchange-specific format into a format understood by the trading device 1010. Figure 11 As described in more detail, in some examples, gateway 1020 may communicate with a cloud service that may support the functionality of gateway 1020 and / or transaction device 1010 .

[0131] Gateway 1020 may include a trading application that facilitates or improves electronic trading, similar to the trading applications discussed above. For example, gateway 1020 may include a trading application that tracks orders from trading device 1010 and updates the status of the orders based on trade confirmations received from exchange 1030. As another example, gateway 1020 may include a trading application that consolidates market data from exchange 1030 and provides it to trading device 1010. In yet another example, gateway 1020 may include a trading application that provides risk processing, calculates implied terms, handles order processing, handles market data processing, or a combination thereof.

[0132] In certain embodiments, gateway 1020 communicates with exchange 1030 using a local area network, a wide area network, a multicast network, a wireless network, a virtual private network, an intranet, a cellular network, a peer-to-peer network, a point of presence, a dedicated line, the Internet, a shared memory system, and / or a proprietary network.

[0133] Exchange 1030 may be owned, operated, controlled, or used by an exchange entity. Example exchange entities include CME Group, CBOE, Intercontinental Exchange, and Singapore Exchange. Exchange 1030 may be an electronic exchange that includes an electronic matching system, such as a computer, server, or other computing device, adapted to allow tradable items offered for trading by the exchange to be bought and sold. Exchange 1030 may include separate entities, some of which list and / or manage tradable items, while others receive and match orders. Exchange 1030 may include, for example, an electronic communications network ("ECN").

[0134] Exchange 1030 is adapted to receive order messages and match counter-party trade orders for buying and selling tradable objects. Unmatched trade orders may be listed for trading by exchange 1030. Once an order to buy or sell a tradable object is received and confirmed by the exchange, it is considered a working order until it is filled or canceled. If only a portion of the order quantity is matched, the partially filled order remains a working order. For example, trade orders may include trade orders received from trading device 1010 or other devices in communication with exchange 1030. For example, exchange 1030 will typically communicate with various other trading devices (which may be similar to trading device 1010) that also provide trade orders to be matched.

[0135] Exchange 1030 is adapted to provide market data. Market data may be provided in one or more messages or data packets, or via a shared memory system. For example, exchange 1030 may publish data feeds to subscribing devices such as trading device 1010 or gateway 1020. The data feeds may include market data.

[0136] System 1000 may include additional, different, or fewer components. For example, system 1000 may include multiple transaction devices, gateways, and / or exchanges. In another example, system 1000 may include other communication devices, such as middleware, firewalls, hubs, switches, routers, servers, switch-specific communication equipment, modems, security managers, and / or encryption / decryption devices.

[0137] In an example, the transaction device 1010 may be used by the client devices 202a, 202b according to the above reference Figures 1 to 9 For example, the transaction device 1010 may be configured to provide the same functionality as described above. Figures 1 to 9 The gateway 1020 may be configured as described above with reference to the client devices 202a and 202b. Figures 1 to 9 The server system 206 of any example described herein may provide or include the server system 206. For example, the gateway 1010 may be configured as described above with reference to Figures 1 to 9 Any of the examples described provide the same or similar functionality as the server system 206. For example, the gateway 1020 may multicast data to the transaction device 1010 (and a plurality of other such transaction devices) Figure 10 For example, gateway 1020 may obtain market data from exchange 1030 and multicast the data to trading device 1010.

[0138] In an example, the gateway 1020 may receive multiple data streams. The gateway 1020 may multicast data from the multiple received data streams to the transaction device 1010 according to the mapping, for example, as described above with reference to Figures 1 to 9 As described for the server system 206. For example, the gateway 1020 can convert the data of the data stream into a format that the transaction device 1010 will understand. Figure 10 (not shown) (for example, according to the above reference Figures 1 to 9 The data source 208 of any of the described examples receives multiple streams. In examples, the data source 208 can be separate from the exchange 1030, for example, in addition to the exchange 1030. In these examples, the data source 208 can represent a server or other computing device that provides data to the gateway 1020 in addition to the market data provided by the exchange 1030. For example, the data source 208 can provide price data provided by a liquidity provider. For example, different liquidity providers can provide different liquidity prices. In these instances, the multiple different data streams can include price data provided by corresponding different liquidity providers or corresponding different combinations of liquidity providers. By multicasting the same market data from the exchange 1030 to all trading devices 1010, and also multicasting data from multiple different receiving streams, different trading devices can obtain different data (as described above with reference to Figures 1 to 9 As described above, gateway 1020 can provide efficient, scalable, and customized messaging. In an example, trading device 1010 can use data from the associated data stream of data source 208 to inform trading decisions. For example, trading decisions can be implemented as order messages sent to exchange 1030 via gateway 1020, such as described above.

[0139] IX. Specific example electronic transaction system

[0140] Figure 11 A block diagram of an example electronic trading system 1100 in which certain embodiments may be employed is shown. The electronic trading system 1100 includes a trading device 1110, a hybrid cloud system 1120, and an exchange 1130. The trading device 1110 may be similar to the one described above. Figure 10 The exchange 1130 may be the same as or similar to the trading device 1010 described above. Figure 10 The hybrid cloud system 1120 or one or more of its components may be the same or similar to the exchange 1030 described above. Figure 10 One or more functions of the gateway 1020 described above. Figure 10 The described functionality of gateway 1020 , or one or more portions of that functionality, may be included within hybrid cloud system 1120 .

[0141] The hybrid cloud system 1120 includes a cloud service 1140 and a data center 1160. Figure 11In the example shown, cloud service 1140 and its components are separate from data center 1160. However, in other examples (not shown), one or more or all of the components and / or functions of cloud service 1140 may instead be implemented in data center 1160. In such an example, or in addition, electronic transaction system 1100 may not include cloud service 1140. In such an example, the above reference to Figure 10 One or more of the functions described for gateway 1020 may be provided solely by data center 1160 or one or more components thereof.

[0142] To provide lower latency for time-sensitive processes, data center 1160 can be co-located with or located near exchange 1130. Thus, functions of hybrid cloud system 1120 that are time-sensitive or otherwise benefit from the lower latency of exchange 1130 can be performed by data center 1160. Typically, functions of hybrid cloud system 1120 that are not time-sensitive or do not benefit from the lower latency of exchange 1130 can be performed by cloud services 1140. Hybrid cloud system 1120 allows electronic trading system 1100 to be scalable relative to non-time-critical functions while still providing relatively low latency for transactions 1130.

[0143] exist Figure 11 In the example, trading device 1110 communicates with cloud service 1140 via a first network 1171. For example, first network 1171 may be a wide area network, such as the Internet using a Hypertext Transfer Protocol (HTTP) connection. Trading device 1110 communicates with data center 1160 via a second network 1172. For example, trading device 1110 may communicate with data center 1160 via a virtual private network (VPN) or using secure web sockets or TCP connections. First network 1171 and second network 1172 may be the same network. Data center 1160 communicates with cloud service 1140 via a third network 1173. For example, data center 1160 may communicate with cloud service 1140 via a private network or a virtual private network (VPN) tunnel. Third network 1173 may be the same as first network 1171 and / or second network 1172. Data center 1160 communicates with exchange 1130 via a fourth network 1174. For example, data center 1160 can communicate with exchange 1130 using a local area network, a wide area network, a multicast network, a wireless network, a virtual private network, an intranet, a cellular network, a peer-to-peer network, a point of presence, a dedicated line, the Internet, a shared storage system, and / or a proprietary network. Fourth network 1174 can be the same as first network 1171, second network 1172, and / or third network 1173.

[0144] Cloud service 1140 can be implemented as a virtual private cloud that can be provided by a logically isolated portion of the overall web service cloud. In this example, cloud service 1140 includes a web database 1141 and associated web server 1142, a product database 1143 and associated product data server (PDS) 1144, a user settings database 1145 and associated user settings server 1146, and a transaction database 1147 and associated transaction server 1148.

[0145] Trading device 1110 can communicate with web server 1142. As an example, trading device 1110 can run a web browser (referred to herein as a browser) that establishes a browsing session with web server 1142. This can occur after the appropriate domain name is resolved to the IP address of cloud service 1140 and / or after trading device 1110 (or its user) is properly authenticated with cloud service 1140. The browser sends a request to web server 1142, and web server 1142 provides a response to the browser, for example, using the Hypertext Transfer Protocol (HTTP) or Hypertext Transfer Protocol Secure (HTTPS). Web server 1142 can provide a user interface to the browser, through which the user can interact with the electronic trading platform. The user interface can display market data and / or allow for the placement of trade orders. As another example, trading device 1110 can run an application that communicates with web server 1142, such as via an application programming interface (API), to allow the user to interact with the electronic trading platform. The application can provide a user interface through which the user can interact with the electronic trading platform.

[0146] Trading device 1110 can communicate with PDS 1144. PDS 1144 interfaces with product database 1143. Product database 1143 stores instrument definitions and user permissions associated with these instruments. Specifically, product database 1143 stores definitions of tradable objects and user permissions to place trade orders on these objects. This information can be provided to trading device 1110. The user interface of trading device 1110 can use this information to determine which tradable objects a given user of trading device 1110 is permitted to place trade orders on.

[0147] Trading device 1110 can communicate with user settings server 1146. User settings server 1146 interfaces with user settings database 1145, which stores user settings, preferences, and other information associated with the user's account. This information can be provided to user settings server 1146 by trading device 1110 when the user registers or at some time thereafter, and user settings server 1146 can store this information in user settings database 1145. This information can be provided to trading device 1110. The user interface of trading device 1110 can use this information to determine which market data to display and in what format.

[0148] Trade database 1147 stores information about trades executed using electronic trading system 1100. Trade database 1147 may store all trade orders submitted by users and all corresponding order execution reports provided by exchange 1130 when trade orders are executed. Trade server 1148 may query trade database 1147 to generate, for example, an audit trail 1149 for a given user. This audit trail 1149 may be provided to trading device 1110 (or another device) to allow for review and / or analysis of the given user's trading activity.

[0149] Data center 1160 includes a multicast bus 1161, a price server 1162, an edge server 1163, a risk server 1164, a ledger upload server 1165, an order connector 1166, and a strategy engine server 1167. Various components within data center 1160 communicate with each other using multicast bus 1161. This allows for efficient and scalable communication between components within data center 1160. For example, information provided by one component can be received by multiple other components within the data center 1160. Transmitting this information over multicast bus 1161, to which other components subscribe, allows the information to be delivered in a single message, regardless of how many components may receive it.

[0150] Price server 1162 receives market data from exchange 1130. Price server 1162 converts this information into a format and / or syntax associated with (e.g., used by) electronic trading system 1100. Price server 1162 transmits the converted information as one or more multicast messages over multicast bus 1161. Specifically, price server 1162 multicasts this information over first multicast bus A for receipt by price clients. Edge server 1163 and policy engine server 1167 subscribe to first multicast bus A and receive market data from price server 1162. Price server 1162 can communicate with cloud service 1140. For example, price server 1162 can provide information about products or tradable objects to PDS server 1144 for use in defining tradable objects.

[0151] Edge server 1163 communicates with trading device 1110. For example, trading device 1110 can communicate with edge server 1163 via a secure network socket or TCP connection. In some examples, edge server 1163 can be implemented as a server cluster. The number of servers in the cluster can be determined and scaled as needed based on utilization. Edge server 1163 receives market data via a first multicast bus A and routes the market data to trading device 1110. Users of trading device 1110 can decide to place trade orders based on the market data. Edge server 1163 routes the trade orders from trading device 1110 to exchange 1130. Specifically, when edge server 1163 receives an order message from trading device 1110, it multicasts the order message (or at least a portion thereof) onto a second multicast bus B for receipt by order clients. Risk server 1164 subscribes to second multicast bus B and receives command messages from edge server 1163.

[0152] Risk server 1164 is responsible for determining the pre-trade risk of a given trade order contained in a given order message. For example, for a given trade order, risk server 1164 may determine whether the user placing the trade order is permitted to do so. Risk server 1164 may determine whether the user is permitted to trade the quantity of the tradable object specified in the trade order. Risk server 1164 may prevent the issuance of unauthorized trade orders. Risk server 1164 receives order messages from edge server 1163 via second multicast bus B and processes the order messages to determine the risk of the trade order in the message. If risk server 1164 determines that the trade order should not be placed (e.g., because the risk associated with the trade order exceeds a threshold), risk server 1164 prevents the trade order from being placed. For example, in this case, risk server 1164 may not transmit the order message to order connector 1166, but instead may transmit a message indicating to the user that the trade order was not placed. If risk server 1164 determines that the trade order should be placed (e.g., because the risk associated with the trade order is below a threshold), risk server 1164 forwards the order message to order connector 1166. Specifically, the risk server 1164 multicasts the order message on the second multicast bus B. The order connector 1166 and the ledger uploader 1165 subscribe to the second multicast bus B and receive the order message from the risk server 1164 .

[0153] The ledger uploader server 1165 communicates with the transaction database 1147 of the cloud service 1140. The ledger uploader server 1165 receives the order message from the risk server 1164 and transmits the order message to the transaction database 1147. The transaction database 1147 then stores the order message (or at least a portion of its content) in a ledger stored in the transaction database 1147.

[0154] Order connector 1166 communicates with exchange 1130. Order connector 1166 receives order messages from risk server 1164, processes the order messages for transmission to exchange 1130, and sends the processed order messages to exchange 1130. Specifically, processing includes converting order messages into a data format understood by exchange 1130. If the trade order within the order message is executed by exchange 1130, exchange 1130 sends a corresponding execution report message to order connector 1166. The execution report message includes an execution report detailing the execution of the trade order. Order connector 1166 applies processing to the execution report message. Specifically, this processing includes converting the execution report message into a data format understood by the electronic trading system and trading device 1110. Order connector 1166 multicasts the processed execution report message on the third multicast bus C for reception by execution report clients. Edge server 1163 and ledger uploader 1165 subscribe to third multicast bus C and receive the processed execution report message. Ledger uploader 1165 communicates with trade database 1147 to update the ledger with the execution report message (or at least a portion of its contents). Edge server 1163 forwards the execution report message to trade device 1110. Trade device 1110 may display information based on the execution report message to indicate that the trade order has been executed.

[0155] In some examples, order messages may be submitted by a strategy engine server 1167. For example, strategy engine server 1167 may implement one or more strategy engines using an algorithmic strategy engine and / or an automated spreader strategy engine. Strategy engine 1167 may receive market data from price server 1162 (via first multicast bus A) and automatically generate order messages based on the market data and appropriately configured algorithms. Strategy engine server 1167 may transmit the order message to order connector 1166 (via risk server 1164 and second multicast bus B), which processes the order message in the same manner as described above. Similarly, when exchange 1130 executes an order, strategy engine 1167 may receive a corresponding order execution report message from order connector 1166 (via third multicast bus C). The order message and execution report message may be transmitted to ledger uploader 1165 in a similar manner to that described above, so that ledger uploader 1165 can update the ledger stored by trade database 1147.

[0156] In some examples, the trade orders sent by trading device 1110 may not be submitted by a human. For example, trading device 1110 may be a computing device implementing an algorithmic trading application. In these examples, trading device 1110 may not communicate with web server 1142, PDS 1144, and / or user settings server 1146, and may not utilize a browser or user interface to submit trades. Applications running on trading device 1110 may communicate with an adapter associated with edge server 1163. For example, the application and adapter may communicate using Financial Information Exchange (FIX) messages. In these examples, the adapter may be a FIX adapter. The application running on trading device 1110 may receive market data in FIX format (provided by price server 1162 and converted to FIX format by a FIX adapter associated with edge server 1163). The application running on trading device 1110 may generate a trade order based on the received market data and transmit the FIX-formatted order message to the FIX adapter associated with edge server 1163. A FIX adapter associated with edge server 1163 may process order messages received in FIX format into a format understood by components of data center 1160 .

[0157] It should be understood that the electronic trading system 1100 is merely an example and other electronic trading systems may be used. As an example, the electronic trading system 1100 does not necessarily need to include the cloud service 1140. As another example, the data center 1160 may include more than the above referenced Figure 11 More or fewer components may be described. As another example, forms of messaging between components of data center 1160 other than multicast messaging may be used.

[0158] In the example, the price server 1162 may be referenced above Figures 1 to 9 The server system 206 of any example described herein may provide or include the server system 206. For example, the price server 1162 may be configured as described above with reference to Figures 1 to 9 Any of the examples described provide the same or similar functionality as the server system 206. Thus, in the examples, the server system 206 may be configured as described above with reference to the server system 206. Figures 1 to 9 Any of the example server systems 206 described can implement the price server 1162 of the example electronic trading system 1100. In an example, according to the above reference Figures 1 to 9 The second network 212 of any of the described examples may be provided by a multicast bus 1161 of a data center 1160 of the electronic trading system 1100 .

[0159] In an example, the price server 1162 can receive multiple data streams. Figure 11 Not shown, for example, according to the above reference Figures 1 to 9 A data source 208 (as described in any of the examples described) receives multiple data streams. In some examples, data source 208 may be separate from exchange 1130, for example, in addition to exchange 1130. In these examples, data source 208 may represent a server or other computing device that provides data to price server 1162 in addition to the market data provided by exchange 1130. For example, data source 208 may provide price data from liquidity providers. For example, different liquidity providers may provide different liquidity prices. In these instances, the multiple different data streams may include price data provided by different liquidity providers or different combinations of liquidity providers. Price server 1162 may perform conversion and / or transformation of the data in the multiple different data streams before multicasting the data via multicast bus 1161. For example, data source 208 may provide data streams using the FIX protocol, while price server 1162 may multicast the data using a proprietary protocol. Price server 1162 may therefore be configured to convert the multiple received data streams from a format understood and used by data source 208 to a format understood and used by price clients in data center 1160.

[0160] In the example, according to the above reference Figures 1 to 9 In any of the examples described, one or more components of the data center 1160 may be provided by a client device 202a, 202b, or more generally, a client. Thus, in an example, one or more of the components of the data center 1160 may be a price client of the price server 1162.

[0161] As an example, Figure 11 Reference numeral "1163" in the figure may generally refer to a computing device or system (such as Figure 1 ), the computing device or system is configured with software that enables the computing device 1163 to function as an edge server (e.g., as described above), and is configured with software that enables the computing device 1163 to function as a price client. For example, the computing device 1163 may be configured as described above with reference to Figures 1 to 9The client may be run on any of the examples described. For example, a client may be associated with a trading device 1100 (or a user thereof). For example, when the trading device 1100 is connected to the computing device 1163, the computing device 1163 may establish a client on behalf of the trading device (or its user). The client may store an identifier representing a data stream from a data source 208 associated with the client, for example, associated with the trading device 1100 (or its user) on whose behalf the client is established. The price server 1162 may multicast data to the client running on the computing device 1163 using the multicast bus 1161 as described above. The price server 1162 may multicast data (or a transformed version thereof) of the data stream received from the data source 208 to the client running on the computing device 1163 according to a mapping, for example as described above with reference to Figures 1 to 9 As described for server system 206. A client running on computing device 1163 may match the stored identifier with an identifier in the mapping and obtain data for the multicast stream that is mapped to the matching identifier in the mapping, e.g., as described above with reference to Figures 1 to 9 As described above. Thus, a client running on computing device 1163 can obtain data from a data stream associated with the client, such as data from a data stream associated with trading device 1100 (or its user) on whose behalf the client was established. Thus, computing device 1163 can function as a price client for price server 1163.

[0162] Computing device 1163 can provide data obtained by a client on behalf of trading device 1100 to trading device 1100. For example, computing device 1163 can run software to provide edge server functionality to trading device 1100. For example, the server software can obtain data from a client running on computing device 1163. The server software running on computing device 1163 can perform protocol conversion on the multicast stream data received by the client, converting it into a format understood by trading device 1110. The server software running on computing device 1163 can then transmit the (converted) data to trading device 1100, establishing a client on its behalf, via a connection with trading device 1100. For example, this can be transmitted over second network 1172, such as TCP, web sockets, or a FIX connection. Trading device 1100 can then use this data to inform trading decisions. For example, trading decisions can be implemented as order messages sent via data center 1160 to exchange 1130, as described above. For example, an order message may be sent to server software running on computing device 1163. This server software may perform protocol conversion of the order message into a format understood by data center 1160 and transmit the (converted) order message over multicast bus 1161, as described above. Thus, computing device 1163 may function as an edge server for trading device 1100. In an example, the server software running on computing device 1163 may provide a front-end application for trading device 1100. The front-end application may provide data (e.g., price data) to trading device 1100 and may receive data (e.g., trade orders) from trading device 1100 (or its users).

[0163] In an example, computing device 1163 (or one or more of a cluster of computing devices 1163) may run multiple clients. For example, each client may be associated with a corresponding one of the multiple transaction devices 1100 (or its users). Each client of computing device 1163 may be configured to provide a transaction according to the above reference. Figures 1 to 9 The price server 1162 can multicast data (or transformed versions thereof) from multiple data streams received from the data source 208 to the clients running on the computing device 1163 according to the mapping, for example, as described above with reference to the client 202a, 202b. Figures 1 to 9As described for the server system 206. For each client, the computing device 1163 (or more specifically, the server software running thereon) can obtain data from the client, convert the data into a format understood by the trading device 1100 associated with the client, and transmit the (converted) data to the trading device 1110 associated with the client via a corresponding connection (e.g., TCP, web socket, or FIX connection) with the trading device 1110. By multicasting data from multiple different received data streams, different clients running on the computing device 1163 can obtain different data (as described above with reference to Figures 1 to 9 As described above), the price server 1162 can provide efficient, scalable and customized messaging.

[0164] As another example, the policy engine 1167 can be configured to Figures 1 to 9 Any of the examples described provide the same or similar functionality as the client devices 202a, 202b or more generally the client. For example, the policy engine 1167 may include the Figures 1 to 9 In an example, the data center 1160 may include a plurality of such policy engines 1167 ( Figure 11 (not shown in FIG. 1 ), for example, each policy engine 1167 is associated with a different user account. The price server 1162 may use the multicast bus 1161 as described above to multicast data to the clients of the policy engines 1167. The price server 1162 may multicast data (or translated versions thereof) of the multiple data streams received from the data source 208 to the clients of the policy engines 1167 according to the mapping, for example, as described above with reference to FIG. Figures 1 to 9 As described above for the server system 206. By multicasting data of multiple different received data streams, clients of different policy engines 1167 can obtain different data (as described above with reference to Figures 1 to 9 As described above, the price server 1162 can provide efficient, scalable, and customized messaging. In an example, for each strategy engine 1167, a client associated with the strategy engine 1167 can provide acquired data to the strategy engine 1167, and the strategy engine 1167 can use data from the associated data stream of the data source 208 to inform trading decisions. For example, a trading decision can be implemented as an order message sent to the exchange 1130 via the order connector 1166, such as described above.

[0165] According to the above reference Figures 1 to 9In any of the described examples, other components of the data center 1160 (such as other back-end applications (not shown)) that may need to obtain data from specific ones of the data streams (e.g., because they are associated with specific user accounts) can be configured to provide the same or similar functionality as the client devices 202a, 202b, or more generally, the client. For example, each component can run, include, or otherwise be associated with the client, as described above with reference to Figures 1 to 9 For example, the client of each component may be provided with and store an identifier indicating a particular data stream, and thus obtain data from the appropriate multicast stream multicasted by the price server 1162 on the multicast bus 1161, such as described above.

[0166] In an example, the user setting server 1146 can be provided by the ID server 204 according to the above reference Figures 1 to 9 For example, the user settings server 1146 can be configured according to the above reference Figures 1 to 9 Any of the examples described provide the same or similar functionality as the ID server 204. For example, each trading device 1110 and / or policy engine 1167 (or its user) may provide their respective connection information for connecting to the data source 208 to the user setup server 1146. This may be provided, for example, when the trading device 1110 and / or policy engine 1167 registers or is set up with the trading platform provided by the hybrid cloud system 1120, and / or from time to time thereafter. In an example, the user setup server 1146 may associate the connection information for each different trading device 1110 and / or policy engine 1167 (or its user) with an identifier. The user setup server 1146 may provide the connection information for each trading device 1110 and / or policy engine 1167 (or its user) to the price server 1162, the connection information associated with the identifier associated with the connection information. As a result, the price server 1162 can use the connection information to establish a connection with the data source 208 for each trading device 1110 and / or policy engine 1167 (or its user), and accordingly receive multiple data streams and determine an identifier for each received data stream. The user settings server 1146 can also provide the client associated with each trading device 1110 and / or policy engine 1167 with the identifier associated with the connection information from the trading device 1110 and / or policy engine 1167 (or its user). As a result, the client associated with each trading device 1110 and / or policy engine 1167 can store the identifier representing the data stream associated with the trading device 1110 and / or policy engine 1167.

[0167] In an example, the PDS server 1144 may be provided by the ID server 204 according to the above reference Figures 1 to 9For example, the PDS server 1144 may be configured as described above. Figures 1 to 9 Any of the examples described provide the same or similar functionality as the ID server 204. In this example, the PDS server 1144 can define a new instrument for each corresponding data stream. For example, a trading device 1110 and / or strategy engine 1167 (or its user) can provide the PDS server 1144 with connection information for establishing a connection with the data source 208 to receive a specific data stream. The PDS server 1144 can define a new instrument for each different trading device 1110 and / or strategy engine 1167 (or its user). Each new instrument definition can itself be an identifier for the corresponding data stream. The PDS server 1144 can provide the price server 1162 with the connection information for each trading device 1110 and / or strategy engine 1167, associated with the instrument definition associated with the connection information. Consequently, the price server 1162 can use the connection information to establish a connection with the data source 208 for each trading device 1110 and / or strategy engine 1167, receive multiple data streams accordingly, and determine the identifier (in this case, a ticket definition) for each received data stream.

[0168] In an example, the PDS server 1144 may store permissions for a client associated with each transaction device 1110 and / or policy engine 1167 (or its user) to obtain data from a specific data stream, such as received via a specific connection. In other words, the PDS server 1144 may store permissions for a client associated with each transaction device 1110 and / or policy engine 1167 (or its user) to access data for certain tickets defined by the PDS server 1144. For example, these permissions may be established when the transaction device 1110 and / or policy engine 1167 (or its user) registers or sets up with the platform provided by the hybrid cloud system 1120 and / or from time to time thereafter. For example, a transaction device 1110 and / or policy engine 1167 may establish permissions for a specific ticket by providing connection information for establishing a connection with the data source 208 to receive the data stream defining the ticket.

[0169] The PDS server 1144 may store, for each trading device 1110 and / or policy engine 1167 (or its user), identification information, such as a user ID or device ID, associated with one or more instruments defined for corresponding one or more data flows from which a client associated with the trading device 1110 and / or policy engine 1167 (or its user) is permitted to retrieve data. An API of a client associated with each trading device 1110 and / or policy engine 1167 may communicate with the PDS server 1144. For example, the API may provide the PDS server 1144 with the identification information of the trading device 1110 and / or policy engine 1167 (or its user). The PDS server 1144 may use the provided identification information to determine one or more tickets for which the client associated with the trading device 1110 and / or policy engine 1167 (or its user) is permitted to retrieve data. The PDS server 1144 may then provide the determined one or more instrument definitions (i.e., identifiers) to the API, which may store the one or more instrument definitions (i.e., identifiers) on the client associated with the trading device 1110 and / or policy engine 1167. As a result, the client associated with each trading device 1110 and / or policy engine 1167 may store a ticket definition (i.e., identifier) ​​representing the data flow associated with the trading device 1110 and / or policy engine 1167. In other words, the client associated with each trading device 1110 and / or policy engine 1167 may store an instrument definition (i.e., identifier) ​​that indicates the data flow from which the PDS server 1144 permits the client associated with the trading device 1110 and / or policy engine 1167 to obtain data. This permission-based approach may allow for centralized control of the data flows from which each trading device 1110 and / or policy engine 1167 may obtain data.

[0170] As used herein, the phrases "configured to" and "adapted to" encompass that an element, structure or apparatus has been modified, arranged, changed or adapted to perform a particular function or for a particular purpose.

[0171] Some of the described figures depict example block diagrams, systems, and / or flow diagrams representing methods that can be used to implement all or part of certain embodiments. For example, one or more of the components, elements, blocks, and / or functions of the example block diagrams, systems, and / or flow diagrams may be implemented, alone or in combination, in hardware, firmware, discrete logic, as a set of computer-readable instructions stored on a tangible computer-readable medium, and / or any combination thereof. For example, the example block diagrams, systems, and / or flow diagrams may be implemented using any combination of an application-specific integrated circuit (ASIC), a programmable logic device (PLD), a field-programmable logic device (FPLD), discrete logic, hardware, and / or firmware.

[0172] For example, one or more processors, controllers, and / or other processing devices may be used to execute the example block diagrams, systems, and / or flow diagrams. For example, the examples may be implemented using coded instructions (e.g., computer-readable instructions) stored on a tangible computer-readable medium. Tangible computer-readable media may include various types of volatile and non-volatile storage media, including, for example, random access memory (RAM), read-only memory (ROM), programmable read-only memory (PROM), electrically programmable read-only memory (EPROM), electrically erasable read-only memory (EEPROM), flash memory, hard drives, optical media, magnetic tape, file servers, any other tangible data storage devices, or any combination thereof. Tangible computer-readable media are non-transitory.

[0173] Furthermore, although example block diagrams, systems, and / or flow diagrams have been described above with reference to the accompanying drawings, other implementations may be employed. For example, the order in which components, elements, blocks, and / or functions are executed may be changed and / or some of the components, elements, blocks, and / or functions described may be changed, eliminated, subdivided, or combined. Furthermore, any or all of the components, elements, blocks, and / or functions may be executed sequentially and / or in parallel by, for example, separate processing threads, processors, devices, discrete logic, and / or circuits.

[0174] Although embodiments have been disclosed, various changes may be made and equivalents may be substituted. In addition, many modifications may be made to adapt to particular circumstances or materials. Therefore, it is intended that the disclosed technology is not limited to the particular embodiments disclosed, but is intended to include all embodiments falling within the scope of the appended claims.

[0175] Terms

[0176] 1. A server system comprising: a memory; and at least one processor configured to multicast data to a plurality of clients, each client storing an identifier indicating a data stream associated with the client, wherein the at least one processor is further configured to: receive a plurality of data streams, each of the data streams comprising data; determine an identifier for each of the plurality of received data streams; send a mapping between each identifier and a corresponding multicast stream to the plurality of clients; and multicast data of the plurality of received data streams according to the mapping.

[0177] 2. A server system according to clause 1, wherein the mapping comprises a mapping between each identifier and a corresponding different multicast address of the multicast stream, and wherein at least one processor is configured to: for each received data stream, multicast the data of the received data stream using the multicast address mapped to the identifier determined for the data stream.

[0178] 3. The server system of clause 1 or clause 2, wherein the at least one processor is configured to: broadcast the map over a network to which each of the plurality of clients is connected.

[0179] 4. A server system according to any one of clauses 1 to 3, wherein at least one processor is configured to: for each of the received data streams, generate a multicast stream including an identifier of the received data stream and data of the received data stream, thereby encoding the mapping into each multicast stream; and multicast each of the generated multicast streams to multiple clients.

[0180] 5. A server system according to clause 4, wherein each multicast stream comprises one or more multicast packets, each multicast packet comprises a header and a payload, and wherein, for each of the generated multicast streams, the header comprises an identifier of the received data stream and the payload comprises data of the received data stream.

[0181] 6. A server system according to clause 4 or 5, wherein each of the generated multicast streams is multicast using the same multicast address.

[0182] 7. The server system of any one of clauses 1 to 6, wherein the at least one processor is configured to normalize data for each of the plurality of received streams to be multicast.

[0183] 8. A server system according to any one of clauses 1 to 7, wherein at least one processor is configured to: receive multiple data streams on a corresponding multiple different connections, wherein, for each of the received data streams, an identifier of the received data stream is determined based on the connection through which the data stream is received.

[0184] 9. A server system according to any one of clauses 1 to 8, wherein at least one processor is configured to: receive identifiers, each identifier being associated with corresponding connection information for establishing a connection through which a corresponding data stream in a data stream is received; and for each of a plurality of received data streams, determine the identifier associated with the connection information of the connection through which the data stream is received as an identifier of the data stream.

[0185] 10. A server system according to any one of clauses 1 to 9, wherein each data stream is associated with a specific client, and the server system comprises: a server configured to: obtain connection information for each client; associate the connection information for each different client with a different identifier in the identifiers; for each client, provide the identifier associated with the client's connection information to at least one processor; and provide the identifier associated with the client's connection information to each client.

[0186] 11. A server system according to any one of clauses 1 to 10, wherein at least one processor is configured to: for each of a plurality of data streams: receive connection information for establishing a connection to a data source from which the data stream is to be received; establish a connection using the connection information; and receive the data stream via the connection.

[0187] 12. The server system of clause 11, wherein each data flow is associated with a specific client, and wherein for each data flow, the connection information includes login information for the client associated with the data flow to access a data source.

[0188] 13. The server system according to any one of clauses 1 to 12, wherein the server system implements a price server of an electronic trading system.

[0189] 14. A server system according to any of clauses 1 to 13, wherein the server system comprises a data source configured to provide a plurality of data streams to the at least one processor, and wherein the plurality of different data streams comprise price data provided by respective different liquidity providers or respective different combinations of liquidity providers.

[0190] 15. A method for multicasting data to a plurality of clients, each client storing an identifier indicating a data stream associated with the client, the method comprising, by a server system: receiving a plurality of data streams, each of the data streams comprising data; determining an identifier for each of the plurality of received data streams; sending a mapping between each identifier and a corresponding multicast stream to the plurality of clients; and multicasting data of the plurality of received data streams according to the mapping.

[0191] 16. A method according to clause 15, wherein the mapping comprises a mapping between each identifier and a corresponding different multicast address of the multicast stream, and wherein the method comprises, by the server system: for each received data stream, multicasting the data of the received data stream using the multicast address mapped to the identifier determined for the data stream.

[0192] 17. A method according to clause 15 or clause 16, wherein the method comprises, by the server system: broadcasting the mapping over a network to which each of the plurality of clients is connected.

[0193] 18. A method according to any one of clauses 15 to 17, wherein the method comprises, by the server system: generating, for each of the received data streams, a multicast stream comprising an identifier of the received data stream and data of the received data stream, thereby encoding the mapping into each multicast stream; and multicasting each of the generated multicast streams to multiple clients.

[0194] 19. A method according to clause 18, wherein each multicast stream comprises one or more multicast packets, each multicast packet comprises a header and a payload, and wherein, for each of the generated multicast streams, the header comprises an identifier of the received data stream and the payload comprises data of the received data stream.

[0195] 20. A method according to clause 18 or 19, wherein each of the generated multicast streams is multicast using the same multicast address.

[0196] 21. A method according to any one of clauses 15 to 20, wherein the method comprises, by the server system: normalising data for each of the plurality of received streams to be multicast.

[0197] 22. A method according to any one of clauses 15 to 21, wherein the method comprises, by the server system: receiving a plurality of data streams over a corresponding plurality of different connections, wherein, for each of the received data streams, an identifier of the received data stream is determined based on the connection over which the data stream is received.

[0198] 23. A method according to any one of clauses 15 to 22, wherein the method comprises, by a server system: receiving identifiers, each identifier being associated with corresponding connection information for establishing a connection through which a corresponding data stream in a data stream is received; and for each of a plurality of received data streams, determining an identifier associated with the connection information of the connection through which the data stream is received as an identifier of the data stream.

[0199] 24. A method according to any one of clauses 15 to 23, wherein each data stream is associated with a specific client, and the method comprises: by the server: obtaining connection information for each client; associating the connection information for each different client with a different identifier in the identifiers; for each client, providing the server system with the identifier associated with the client's connection information; and providing each client with the identifier associated with the connection information of the client.

[0200] 25. A method according to any one of clauses 15 to 14, wherein the method comprises, by a server system: for each of a plurality of data streams: receiving connection information for establishing a connection to a data source from which the data stream is to be received; establishing a connection using the connection information; and receiving the data stream via the connection.

[0201] 26. The method of clause 25, wherein each data flow is associated with a particular client, and wherein for each data flow, the connection information includes login information for the client associated with the data flow to access a data source.

[0202] 27. A method according to any one of clauses 15 to 26, wherein the server system implements a price server of an electronic trading system.

[0203] 28. A method according to any of clauses 15 to 27, wherein a plurality of data streams are received by the server system from a data source, and wherein the plurality of different data streams comprise price data provided by respective different liquidity providers or respective different combinations of liquidity providers.

[0204] 29. A tangible computer-readable medium comprising instructions that, when executed, cause at least one processor of a server system to perform functions, the at least one processor being configured to multicast data to a plurality of clients, each client storing an identifier indicating a data stream associated with the client, the functions comprising at least: receiving a plurality of data streams, each of the data streams comprising data; determining an identifier for each of the plurality of received data streams; sending a mapping between each identifier and a corresponding multicast stream to the plurality of clients; and multicasting data of the plurality of received data streams according to the mapping.

[0205] 30. A tangible computer-readable medium according to clause 29, wherein the mapping includes a mapping between each identifier and a corresponding different multicast address for the multicast stream, and wherein the function further comprises: for each received data stream, multicasting data of the received data stream using the multicast address mapped to the identifier determined for the data stream.

[0206] 31. The tangible computer-readable medium of clause 29 or clause 30, wherein the functions further comprise: broadcasting the map over a network to which each of the plurality of clients is connected.

[0207] 32. A tangible computer-readable medium according to any one of clauses 29 to 31, wherein the function further includes: for each of the received data streams, generating a multicast stream including an identifier of the received data stream and data of the received data stream, thereby encoding the mapping into each multicast stream; and multicasting each of the generated multicast streams to multiple clients.

[0208] 33. A tangible computer-readable medium according to clause 32, wherein each multicast stream comprises one or more multicast packets, each multicast packet comprises a header and a payload, and wherein, for each of the generated multicast streams, the header comprises an identifier of the received data stream and the payload comprises data of the received data stream.

[0209] 34. The tangible computer-readable medium of clause 32 or 33, wherein each of the generated multicast streams is multicast using the same multicast address.

[0210] 35. The tangible computer-readable medium of any one of clauses 29 to 34, wherein the functions further comprise normalizing data for each of the plurality of received streams to be multicast.

[0211] 36. A tangible computer-readable medium according to any one of clauses 29 to 35, wherein the functions further comprise: receiving a plurality of data streams via a corresponding plurality of different connections, wherein, for each of the received data streams, an identifier of the received data stream is determined based on the connection via which the data stream is received.

[0212] 37. A tangible computer-readable medium according to any one of clauses 29 to 36, wherein the function further comprises: receiving identifiers, each identifier being associated with corresponding connection information for establishing a connection through which a corresponding data stream in the data stream is received; and for each of a plurality of received data streams, determining an identifier associated with the connection information of the connection through which the data stream is received as an identifier of the data stream.

[0213] 38. A tangible computer-readable medium according to any one of clauses 29 to 37, wherein each data stream is associated with a particular client, and wherein the instructions, when executed, cause at least one processor of a server of a server system to perform functions comprising at least: obtaining connection information for each client; associating the connection information for each different client with a different identifier in the identifiers; for each client, providing to at least one processor of the server system an identifier associated with the client's connection information; and providing to each client an identifier associated with the connection information for that client.

[0214] 39. A tangible computer-readable medium according to any one of clauses 29 to 38, wherein the functionality further comprises: for each of a plurality of data streams: receiving connection information for establishing a connection to a data source from which the data stream is to be received; establishing a connection using the connection information; and receiving the data stream via the connection.

[0215] 40. The tangible computer-readable medium of clause 39, wherein each data flow is associated with a particular client, and wherein for each data flow, the connection information includes login information for the client associated with the data flow to access a data source.

[0216] 41. The tangible computer readable medium of any one of clauses 29 to 40, wherein the server system implements a price server of the electronic trading system.

[0217] 42. The tangible computer-readable medium of any one of clauses 29 to 41, wherein a plurality of data streams are received by the server system from a data source, and wherein the plurality of different data streams comprise price data provided by respective different liquidity providers or respective different combinations of liquidity providers.

[0218] 43. A server system comprising: a memory; and at least one processor configured to multicast data to a plurality of clients, each client storing an identifier indicating a data stream associated with the client, wherein the at least one processor is further configured to: receive a plurality of data streams, each of the data streams comprising data; determine an identifier for each of a plurality of received data streams; generate a mapping between each identifier and a corresponding different multicast address; broadcast the mapping to the plurality of clients; and for each received data stream, multicast the data of the received data stream using the multicast address mapped to the identifier determined for the received data stream.

[0219] 44. The server system of clause 43, wherein the at least one processor is configured to: normalize data for each of the plurality of received streams to be multicast.

[0220] 45. A server system according to clause 43 or clause 44, wherein the at least one processor is configured to: receive a plurality of data streams via a corresponding plurality of different connections, wherein, for each of the received data streams, an identifier of the received data stream is determined based on the connection via which the data stream is received.

[0221] 46. ​​A server system according to any one of clauses 43 to 45, wherein the at least one processor is configured to: receive identifiers, each identifier being associated with corresponding connection information for establishing a connection through which a corresponding data stream in the data stream is received; and for each of a plurality of received data streams, determine the identifier associated with the connection information of the connection through which the data stream is received as the identifier of the data stream.

[0222] 47. A server system according to any one of clauses 43 to 46, wherein each data stream is associated with a specific client, and the server system comprises: a server configured to: obtain connection information for each client; associate the connection information of each different client with a different identifier in the identifiers; for each client, provide the identifier associated with the client's connection information to at least one processor; and provide the identifier associated with the client's connection information to each client.

[0223] 48. A server system according to any one of clauses 43 to 47, wherein the at least one processor is configured to: for each of a plurality of data streams: receive connection information for establishing a connection to a data source from which the data stream is to be received; establish a connection using the connection information; and receive the data stream via the connection.

[0224] 49. The server system of clause 48, wherein each data flow is associated with a specific client, and wherein for each data flow, the connection information includes login information for the client associated with the data flow to access the data source.

[0225] 50. A server system according to any one of clauses 43 to 49, wherein the server system implements a price server of an electronic trading system.

[0226] 51. A server system according to any of clauses 43 to 50, wherein the server system comprises a data source configured to provide a plurality of data streams to the at least one processor, and wherein the plurality of different data streams comprise price data provided by respective different liquidity providers or respective different combinations of liquidity providers.

[0227] 52. A method for multicasting data to a plurality of clients, each client storing an identifier indicating a data stream associated with the client, wherein the method comprises, by a server system: receiving a plurality of data streams, each of the data streams comprising data; determining an identifier for each of the plurality of received data streams; generating a mapping between each identifier and a corresponding different multicast address; broadcasting the mapping to the plurality of clients; and for each received data stream, multicasting the data of the received data stream using the multicast address mapped to the identifier determined for the received data stream.

[0228] 53. A tangible computer-readable medium comprising instructions that, when executed, cause at least one processor of a server system to perform functions, the at least one processor being configured to multicast data to a plurality of clients, each client storing an identifier indicating a data stream associated with the client, the functions comprising at least: receiving a plurality of data streams, each of the data streams comprising data; determining an identifier for each of the plurality of received data streams; generating a mapping between each identifier and a corresponding different multicast address; broadcasting the mapping to the plurality of clients; and for each received data stream, multicasting the data of the received data stream using the multicast address mapped to the identifier determined for the received data stream.

[0229] 54. A server system comprising: a memory; and at least one processor configured to multicast data to a plurality of clients, each client storing an identifier indicating a data stream associated with the client, wherein the at least one processor is further configured to: receive a plurality of data streams, each of the data streams comprising data; determine an identifier for each of a plurality of received data streams; for each of the received data streams, generate a multicast stream comprising an identifier of the received data stream and data of the received data stream; and multicast the generated multicast stream to the plurality of clients.

[0230] 55. A server system according to clause 54, wherein each multicast stream comprises one or more multicast packets, each multicast packet comprises a header and a payload, and wherein, for each of the generated multicast streams, the header comprises an identifier of the received data stream and the payload comprises data of the received data stream.

[0231] 56. A server system according to clause 54 or clause 55, wherein each of the generated multicast streams is multicast using the same multicast address.

[0232] 57. The server system of any one of clauses 54 to 56, wherein the at least one processor is configured to normalize data for each of the plurality of received streams to be multicast.

[0233] 58. A server system according to any one of clauses 54 to 57, wherein at least one processor is configured to: receive multiple data streams via a corresponding multiple different connections, wherein, for each of the received data streams, an identifier of the received data stream is determined based on the connection from which the data stream is received.

[0234] 59. A server system according to any one of clauses 54 to 58, wherein at least one processor is configured to: receive identifiers, each identifier being associated with corresponding connection information for establishing a connection through which a corresponding data stream in a data stream is received; and for each of a plurality of received data streams, determine the identifier associated with the connection information of the connection through which the data stream is received as an identifier of the data stream.

[0235] 60. A server system according to any one of clauses 54 to 59, wherein each data stream is associated with a specific client, and the server system comprises: a server configured to: obtain connection information for each client; associate the connection information of each different client with a different identifier in the identifiers; for each client, provide the identifier associated with the client's connection information to at least one processor; and provide the identifier associated with the client's connection information to each client.

[0236] 61. A server system according to any one of clauses 54 to 60, wherein at least one processor is configured to: for each of a plurality of data streams: receive connection information for establishing a connection to a data source from which the data stream is to be received; establish a connection using the connection information; and receive the data stream via the connection.

[0237] 62. The server system of clause 61, wherein each data flow is associated with a specific client, and wherein for each data flow, the connection information includes login information for the client associated with the data flow to access a data source.

[0238] 63. A server system according to any one of clauses 54 to 62, wherein the server system implements a price server of an electronic trading system.

[0239] 64. A server system according to any one of clauses 54 to 63, wherein the server system comprises a data source configured to provide a plurality of data streams to at least one processor, and wherein the plurality of different data streams comprise price data provided by respective different liquidity providers or respective different combinations of liquidity providers.

[0240] 65. A method for multicasting data to multiple clients, each client storing an identifier indicating a data stream associated with the client, wherein the method comprises, by a server system: receiving multiple data streams, each of the data streams comprising data; determining an identifier for each of the multiple received data streams; for each of the received data streams, generating a multicast stream comprising an identifier of the received data stream and the data of the received data stream; and multicasting the generated multicast stream to the multiple clients.

[0241] 66. A tangible computer-readable medium comprising instructions that, when executed, cause at least one processor of a server system to perform functions, the at least one processor being configured to multicast data to a plurality of clients, each client storing an identifier indicating a data stream associated with the client, the functions comprising at least: receiving a plurality of data streams, each data stream comprising data; determining an identifier for each of a plurality of received data streams; for each of the received data streams, generating a multicast stream comprising an identifier of the received data stream and data of the received data stream; and multicasting the generated multicast stream to the plurality of clients.

[0242] 67. A client system comprising: a memory storing identifiers indicating data streams associated with the client system; and at least one processor configured to: receive a mapping between multiple identifiers and corresponding multiple multicast streams from a server system; match the stored identifiers with identifiers in the mapping; and obtain data of the multicast streams mapped to the matching identifiers in the mapping.

[0243] 68. A client system according to clause 67, wherein the mapping comprises mappings between a plurality of identifiers and a corresponding plurality of different multicast addresses, and wherein the at least one processor is further configured to: configure a communication interface of the client system to receive transmitted data having a destination address corresponding to a multicast address mapped to a matching identifier in the mapping.

[0244] 69. A client system according to clause 67, wherein the mapping is provided by including each identifier in a corresponding different multicast stream in a plurality of multicast streams, and wherein the at least one processor is further configured to: receive the plurality of multicast streams; and obtain data from a multicast stream in the plurality of multicast streams that includes an identifier that matches the stored identifier.

[0245] 70. A method comprising storing, by a client system, identifiers indicating data streams associated with the client system: receiving, from a server system, a mapping between a plurality of identifiers and a corresponding plurality of multicast streams; matching the stored identifiers with identifiers in the mapping; and obtaining data for the multicast streams mapped to the matched identifiers in the mapping.

[0246] 71. A method according to clause 70, wherein the mapping comprises mappings between a plurality of identifiers and a corresponding plurality of different multicast addresses, and wherein the method comprises, by the client system: configuring a communication interface of the client system to receive data transmitted along with a destination address corresponding to a multicast address mapped to a matching identifier in the mapping.

[0247] 72. A method according to clause 70, wherein the mapping is provided by including each identifier in a corresponding different multicast stream in a plurality of multicast streams, and wherein the method comprises, by a client system: receiving the plurality of multicast streams; and obtaining data from a multicast stream in the plurality of multicast streams that includes an identifier that matches the stored identifier.

[0248] 73. A tangible computer-readable medium comprising instructions that, when executed, cause at least one processor of a client system to perform functions, the client system storing identifiers indicating data streams associated with the client system, the functions comprising at least: receiving a mapping between a plurality of identifiers and a corresponding plurality of multicast streams from a server system; matching the stored identifiers with identifiers in the mapping; and obtaining data for the multicast streams mapped to the matched identifiers in the mapping.

[0249] 74. Tangible computer-readable media according to clause 73, wherein the mapping includes mappings between a plurality of identifiers and a corresponding plurality of different multicast addresses, and wherein the function includes: configuring a communication interface of the client system to receive data transmitted along with a destination address corresponding to a multicast address mapped to a matching identifier in the mapping.

[0250] 75. A tangible computer-readable medium according to clause 73, wherein the mapping is provided by including each identifier in a corresponding different multicast stream in a plurality of multicast streams, and wherein the function comprises: receiving the plurality of multicast streams; and obtaining data from a multicast stream in the plurality of multicast streams that includes an identifier that matches the stored identifier.

[0251] 76. A system comprising a server system according to any one of clauses 1 to 14, and a client system according to any one of clauses 67 to 69.

[0252] 73. A method comprising the method according to any one of clauses 15 to 28 and the method according to any one of clauses 70 to 72.

Claims

1. A server system comprising: Memory; and at least one processor configured to multicast data to a plurality of clients, each client storing an identifier indicating a data stream associated with the client, Wherein, the at least one processor is further configured to: receiving a plurality of said data streams, each of said data streams comprising data; determining said identifier for each of a plurality of received data streams; sending a mapping between each identifier and a corresponding multicast stream to the plurality of clients; and Data of the plurality of received data streams is multicast according to the mapping.

2. The server system of claim 1 , wherein the mapping comprises a mapping between each identifier and a corresponding different multicast address of the multicast stream, and wherein the at least one processor is configured to: For each received data stream, data of the received data stream is multicast using a multicast address mapped to the identifier determined for the data stream.

3. The server system of claim 2, wherein the at least one processor is configured to: The mapping is broadcast over a network to which each of the plurality of clients is connected.

4. The server system of claim 1 , wherein the at least one processor is configured to: for each of the received data streams, generating a multicast stream comprising an identifier of the received data stream and data of the received data stream, such that the mapping is encoded in each multicast stream; and Each of the generated multicast streams is multicast to the plurality of clients.

5. The server system of claim 4, wherein each multicast stream comprises one or more multicast packets, each multicast packet comprises a header and a payload, and wherein, For each of the generated multicast streams, the header includes an identifier of the received data stream, and the payload includes data of the received data stream. The server system of claim 4 , wherein each of the generated multicast streams is multicast using the same multicast address.

7. The server system of claim 1 , wherein the at least one processor is configured to: Normalizes the data for each of the multiple received streams to be multicast.

8. The server system of claim 1 , wherein the at least one processor is configured to: receiving multiple data streams on corresponding multiple different connections, in, For each of the received data streams, an identifier of the received data stream is determined based on the connection over which the data stream is received.

9. The server system of claim 1 , wherein the at least one processor is configured to: receiving the identifiers, each identifier being associated with respective connection information for establishing a connection through which a respective one of the data streams is received; and For each of the plurality of received data flows, an identifier associated with the connection information of the connection over which the data flow is received is determined as an identifier of the data flow.

10. The server system of claim 9, wherein each data stream is associated with a specific client, and the server system comprises: A server, the server being configured to: Get the connection information of each client; associating connection information for each different client with a different one of the identifiers; for each client, providing said at least one processor with said identifier associated with said connection information of said client; and Each client is provided with the identifier associated with the connection information of the client.

11. The server system of claim 1 , wherein the at least one processor is configured to: For each of the multiple data streams: receiving connection information for establishing a connection to a data source from which the data stream is to be received; Use the connection information to establish a connection; and The data stream is received over the connection.

12. The server system of claim 11, wherein each data flow is associated with a specific client, and wherein for each data flow, the connection information includes login information for the client associated with the data flow to access the data source.

13. The server system of claim 1, wherein the server system implements a price server of an electronic trading system.

14. The server system of claim 13, wherein the server system comprises a data source configured to provide a plurality of data streams to the at least one processor, and wherein the plurality of different data streams comprise price data provided by respective different liquidity providers or respective different combinations of liquidity providers.

15. A server system comprising: Memory; and At least one processor configured to multicast data to a plurality of clients, each client storing an identifier indicating a data stream associated with the client, wherein the at least one processor is further configured to: receiving a plurality of said data streams, each of said data streams comprising data; determining said identifier for each of a plurality of received data streams; generating a mapping between each identifier and a corresponding distinct multicast address; broadcasting the mapping to the plurality of clients; For each received data stream, data of the received data stream is multicast using a multicast address mapped to the identifier determined for the received data stream.

16. A server system comprising: Memory; and At least one processor configured to multicast data to a plurality of clients, each client storing an identifier indicating a data stream associated with the client, wherein the at least one processor is further configured to: receiving a plurality of said data streams, each of said data streams comprising data; determining said identifier for each of a plurality of received data streams; for each of the received data streams, generating a multicast stream comprising an identifier of the received data stream and data of the received data stream; and The generated multicast stream is multicasted to the plurality of clients.

17. A client system comprising: a memory storing an identifier indicating a data flow associated with a client of the client system; and At least one processor configured to: receiving, from a server system, a mapping between a plurality of identifiers and a corresponding plurality of multicast streams; matching the stored identifiers with identifiers in the mapping; and Data for the multicast stream mapped to a matching identifier in the mapping is obtained.

18. The client system of claim 17, wherein the mapping comprises a mapping between the plurality of identifiers and a corresponding plurality of different multicast addresses, and wherein the at least one processor is further configured to: A communication interface of the client system is configured to receive data transmitted with a destination address corresponding to the multicast address mapped to a matching identifier in the mapping.

19. The client system of claim 17, wherein the mapping is provided by including each identifier in a respective different one of a plurality of multicast streams, and wherein the at least one processor is further configured to: receiving the plurality of multicast streams; and Data is obtained from a multicast stream of the plurality of multicast streams, the multicast stream including an identifier that matches the stored identifier.

20. A method of multicasting data to a plurality of clients, each client storing an identifier indicating a data stream associated with the client, the method comprising, by a server system: receiving a plurality of said data streams, each of said data streams comprising data; determining an identifier for each of a plurality of received data streams; sending a mapping between each identifier and a corresponding multicast stream to the plurality of clients; and Data of the plurality of received data streams is multicast according to the mapping.

21. A tangible computer-readable medium comprising instructions that, when executed, cause at least one processor of a server system to perform functions, the at least one processor being configured to multicast data to a plurality of clients, each client storing an identifier indicating a data stream associated with the client, the functions comprising at least: receiving a plurality of said data streams, each of said data streams comprising data; determining an identifier for each of a plurality of received data streams; sending a mapping between each identifier and a corresponding multicast stream to the plurality of clients; and Data of the plurality of received data streams is multicast according to the mapping.