Method for grouping peers in a peer-to-peer network

The peer-to-peer network grouping process optimizes segment exchanges by selecting topologically close peers, reducing energy consumption and network equipment usage, addressing the high power consumption issue in existing peer-to-peer networks.

WO2026124984A1PCT designated stage Publication Date: 2026-06-18QUANTEEC
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
QUANTEEC
Filing Date
2025-11-25
Publication Date
2026-06-18

Smart Images

  • Figure EP2025084216_18062026_PF_FP_ABST
    Figure EP2025084216_18062026_PF_FP_ABST
Patent Text Reader

Abstract

The invention relates to a method for grouping peers, comprising the following steps carried out by a server: receiving (200) a grouping request transmitted by a requesting peer; searching (202) a plurality of previously constituted peer groups of the peer-to-peer network for at least one candidate group that fulfils the following conditions: the candidate group comprises at least one peer having a segment of a multimedia stream that is included within a temporal neighbourhood of a subsequent segment and comprises at least one peer fulfilling a condition of proximity with the requesting peer; if at least one candidate group was found during the search, adding (208) the peer to a selected group, the selected group being a candidate group that was found during the search; and commanding (210) that the requesting peer is sent data that enables the requesting peer to establish connections with the other peers belonging to the selected group.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] DESCRIPTION

[0002] TITLE: Method for grouping peers in a peer-to-peer network FIELD OF THE INVENTION

[0003] The present invention relates to a method for grouping peers in a peer-to-peer network.

[0004] STATE OF THE ART

[0005] Peer-to-peer networks are a type of decentralized network commonly used for sharing data, including multimedia streams.

[0006] A peer can thus download different segments of a multimedia stream from other peers.

[0007] Some processes, implemented by a peer, are designed to identify in the peer-to-peer network another peer best able to quickly provide a next segment that the peer needs, the objective being the speed of downloading the next segment.

[0008] However, the processes pursuing this objective tend to require a lot of network equipment through which the segments pass, thus causing significant power consumption on the overall scale of the peer-to-peer network.

[0009] DESCRIPTION OF THE INVENTION

[0010] One technical problem to solve is that of helping to reduce the energy consumption generated by the exchange of multimedia stream segments in a peer-to-peer network.

[0011] This technical problem is solved by a peer-to-peer network grouping process, the process comprising the following steps implemented by a server:

[0012] • receipt of a grouping request issued by a requesting peer, the grouping request including:

[0013] o an identifier of the next segment of a multimedia stream requested by the requesting peer,

[0014] o topological data allowing the requesting peer to be situated in relation to other peers in the peer-to-peer network,

[0015] • search, within a plurality of previously established peer groups in the peer-to-peer network, for at least one candidate group that meets the following conditions: o the candidate group includes at least one peer possessing a segment of the multimedia stream that is included in a time neighborhood of the next segment, the time neighborhood being of predefined length, and

[0016] o The candidate group includes at least one peer that satisfies a proximity condition with the requesting peer, the proximity condition being assessed from topological data,

[0017] • if at least one candidate group was found during the search, the peer is added to a selected group, the selected group being a candidate group that was found during the search,

[0018] • command to send data to the requesting peer, enabling the requesting peer to establish connections with other peers belonging to the selected group, in order to allow the requesting peer to exchange segments of the multimedia stream with other peers.

[0019] The peer grouping process, constituting a first object, may include the following optional characteristics.

[0020] Preferably, the topological data includes a public IP address of the requesting peer, and a peer with the public IP address satisfies the proximity condition with the requesting peer.

[0021] Preferably, if at least one candidate group including at least one peer with the same public IP address was found during the search, the selected group is a candidate group including at least one peer with the same public IP address as the requesting peer.

[0022] Preferably, if multiple candidate groups including at least one peer with a public IP address were found during the search, the selected group is the candidate group with the most peers with a public IP address among the candidate groups.

[0023] Preferably, the topological data indicates a geographical area in which the requesting peer is located, and a peer located outside the geographical area does not satisfy the proximity condition with the requesting peer.

[0024] Preferably, the geographical area is a country.

[0025] Preferably, the topological data indicates a geographic area in which the requesting peer is located, and a peer located in the geographic area satisfies the proximity condition with the requesting peer.

[0026] Preferably, the geographic area is a city. Preferably, at least one candidate group includes at least one peer located in the geographic area; therefore, the selected group is the candidate group with the most peers located in the geographic area among the candidate groups.

[0027] Preferably, the selected group is the candidate group comprising the most peers located in the geographic area among the candidate groups, provided that no candidate group includes any peer with the same public IP address as the requesting peer.

[0028] Preferably, the topological data indicates an ASN (Autonomous System Number) of an autonomous system through which the requesting peer accesses the internet, and a peer accessing the internet via the autonomous system with that ASN satisfies the proximity condition with the requesting peer. Preferably, if at least one candidate group accesses the internet via the autonomous system with that ASN, then the selected group is the candidate group comprising the most peers accessing the internet via the autonomous system with that ASN among the candidate groups.

[0029] Preferably, the candidate group comprising the most peers accessing the internet via the autonomous system with the ASN number is selected, provided that at least one of the following conditions is met:

[0030] • No candidate group includes any peer with the same public IP address as the requesting peer.

[0031] • no candidate group includes a peer located in the same geographical area as the applicant peer.

[0032] Preferably, the topological data indicates a region in which the requesting peer is located, and if at least one candidate group includes at least one peer located in the region then the selected group is a candidate group comprising the most peers located in the region among the candidate groups.

[0033] Preferably, the candidate group comprising the most peers located in the region is selected, provided that at least one of the following conditions is met:

[0034] • No candidate group includes any peer with the same public IP address as the requesting peer.

[0035] • no candidate group includes any peer located in the same geographic area as the requesting peer, the geographic area being included in the region, • no candidate group includes any peer accessing the internet via the same autonomous system as the requesting peer.

[0036] Preferably, the selected group is the candidate group with the most peers among the candidate groups, provided that at least one of the following conditions is met:

[0037] • No candidate group includes any peer with the same public IP address as the requesting peer.

[0038] • No applicant group includes any peer located in the same region as the applicant peer.

[0039] • no applicant group includes any peer having the same ASN as the applicant peer.

[0040] Preferably, the request includes a quality level requested by the requesting peer to play the media stream, and any candidate group further meets the following condition: the candidate group includes at least one peer possessing a segment of the media stream in a format suitable for playback at the requested quality level.

[0041] Preferably, the request includes an indicative blacklist of prohibited peer groups; any candidate group further meets the following condition: the candidate group is not in the blacklist.

[0042] Preferably, the process includes the following step: if no candidate group is found during the search, a new group is created and the peer is added to the new group. A second object is constituted by a process implemented by a requesting peer within a peer-to-peer network, comprising the following steps:

[0043] • detect one of the following events:

[0044] o a multimedia stream ceases to be played by the requesting peer,

[0045] A change in the quality level for playing the multimedia stream is requested.

[0046] or the requesting peer fails to download a segment of the media stream from other peers within a peer group within a predefined timeframe,

[0047] • A command to send a request to the server to group the requesting peer into a different group, the server being configured to implement the grouping process constituting the first object described above. A third object is a computer program product comprising program code instructions for executing the steps of the process constituting the first object, when this program is executed by a server.

[0048] DESCRIPTION OF THE FIGURES

[0049] Other features, purposes and advantages of the invention will become apparent from the following description, which is purely illustrative and not limiting, and which should be read in conjunction with the accompanying drawings on which:

[0050] Figure 1 schematically illustrates the equipment of a peer-to-peer network.

[0051] Figure 2 represents internal components of a peer and a grouping server, according to one embodiment.

[0052] Figure 3 is a flowchart of steps of a process implemented by a peer, according to a method of embodiment.

[0053] Figure 4 is a flowchart of steps of a process implemented by a grouping server, according to one embodiment.

[0054] Across all figures, similar elements bear identical references.

[0055] DETAILED DESCRIPTION OF THE INVENTION

[0056] With reference to Figure 1, a peer-to-peer network comprises a plurality of peers and a grouping server 2.

[0057] Peers are electronic devices capable of connecting to each other in order to exchange segments that are part of a multimedia stream.

[0058] As an example, three pairs A, B, C, which are part of the peer-to-peer network, are shown in Figure 1.

[0059] Peer

[0060] We will now describe a peer 1 of the peer-to-peer network with reference to Figure 2, knowing that this description is applicable to any other peer of the peer-to-peer network.

[0061] Peer 1 includes a communication interface 10 for communicating with other peers in the peer-to-peer network, specifically for sending or receiving segments of a multimedia stream. The communication interface 10 is also suitable for communicating with the aggregation server. The communication interface 10 can be of any type, wired (Ethernet) or wireless (cellular, Wi-Fi, Bluetooth, or other).

[0062] Peer 1 also includes memory to store segments that have been downloaded from other peers, and segments that can be uploaded to other peers. For example, a buffer of predefined size is allocated in memory for this purpose.

[0063] The pair further includes a player 14 configured to play a multimedia stream from segments relating to that multimedia stream that are located in the buffer. The player is known from the prior art.

[0064] The segments of a multimedia stream are ordered temporally: each segment is associated with, or includes, its own unique timestamp. These timestamps determine the order in which the different segments of the multimedia stream should be played by the player.14

[0065] Peer 1 also includes a segment management module. This segment management module is designed to trigger the downloading of segments of an up-to-date multimedia stream from other peers by the player under reasonable conditions and with reduced energy consumption in the peer-to-peer network. As we will see later, the segment management module is capable of communicating with the grouping server, which also contributes to achieving this objective.

[0066] The segment management module 16 is, for example, a computer program executable by at least one processor of the peer. This computer program comprises code instructions that trigger the implementation of a process, which will be described later, when executed by the processor(s) of the peer. The processor can be of any type: it can be a generic CPU or a dedicated circuit. In one embodiment, the segment management module takes the form of a plugin for another program, such as a web browser. Peer 1 also includes means for obtaining topological data that allows the peer to be located relative to other peers in the peer-to-peer network. We will see later that the topological data allows the controller 2 to evaluate whether the requesting peer is closer to or further from another peer.In particular, the proximity between a requesting peer and another peer can be assessed based on geographic data (the requesting peer is then geographically located relative to the other peer) or on network data (the requesting peer is then located relative to the other peer within the peer-to-peer network). The term "topological data" should be understood in this text as encompassing these different possibilities. This topological data, considered in isolation, is known to a person skilled in the art, as are the means to enable the peer to obtain it. This topological data will be detailed later.

[0067] Grouping Server

[0068] The grouping server 2, also referred to as "controller 2 2" in the remainder of this text for brevity, includes a communication interface 20 suitable for communicating with peer 1 and any other peer in the peer-to-peer network.

[0069] The controller 2 2 also includes a memory for storing indicative data of peer groups previously formed by the controller 2 2. This data includes, for example, for each group formed, a unique identifier for the group, and descriptive data of the peers who belong to that group.

[0070] Controller 2 further includes a peer grouping module 24 configured, as its name suggests, to form peer groups using a method that will be described below. The peer grouping module can take the form of a computer program comprising code instructions for implementing this peer grouping method when executed by at least one processor of Controller 2. The processor can be of any type: it can be a generic CPU or a dedicated circuit.

[0071] Method for downloading a segment by a peer

[0072] We assume that peer 1, which we will subsequently call the "requesting peer," needs to download a segment that is part of a media stream to be played. By convention, this segment will be called the "next segment" to be downloaded.

[0073] A process for downloading the next segment, implemented by requesting peer 1 1, includes the following steps.

[0074] In step 100, requesting peer 1 sends a grouping request to controller 2, via its communication interface.

[0075] A grouping request is a request in which the requesting peer 1 asks the controller 2 to join a peer group in the peer-to-peer network, which may have been previously created by the controller 2. It is within a peer group that exchanges of segments of the multimedia stream can take place. The objective of grouping is to prioritize exchanges of segments between peers that are relatively close to each other topologically, in order to reduce the electrical energy consumed in the network. The grouping request includes several parameters.

[0076] The parameters of the grouping request include the upload bandwidth of requesting peer 1, denoted UploadBandwith. This bandwidth illustrates the capacity of requesting peer 1 to provide segments to other peers; thus, this bandwidth may be a fraction of the theoretical maximum upload bandwidth of requesting peer 1.

[0077] The parameters also include the bitrate of the multimedia stream. This bitrate is expressed, for example, in bits per second.

[0078] The parameters include an identifier for the next segment of the media stream (denoted CurrentSegmentNumber), which requesting peer 1 needs to download to play the media stream. This implies that requesting peer 1 already possesses the segment that immediately precedes the next segment in the media stream (in other words, the segment to be played just before the next segment).

[0079] The parameters also include a TargetQuality level requested by requesting peer 1 to play the next segment of the media stream. The quality level is indicative, for example, of the video resolution of the media stream (e.g., 720p, 1080p, or 4K).

[0080] The settings also include a search restriction parameter restrictToSameASN and a blacklist, which allow you to influence the internal workings of controller 2, as will be seen later.

[0081] The parameters also include the topological data mentioned earlier in the context of the description of a peer, allowing the requesting peer 1 to be situated in relation to other peers in the peer-to-peer network.

[0082] In what follows, we will discuss a non-limiting embodiment in which the topological data includes the following data, noting that other embodiments may use only one or more of these data and / or other data. The topological data includes geolocation data for requesting peer 1, denoted peerGeolocData.

[0083] PeerGeolocData geolocation data includes an identifier for a geographic area in which requesting peer 1 is located. This area could be, for example, a country. In this case, the identifier could be a country identifier conforming to the ISO standard. PeerGeolocData geolocation data also includes an identifier for a geographic sector in which requesting peer 1 is located, with the sector being included within the geographic area. The geographic sector could be, for example, a city. In this case, the identifier could be a city identifier conforming to the standard used in the country. For example, in France, the names of municipalities are referenced in the INSEE's official geographic code (COG).

[0084] The peerGeolocData geolocation data also includes an identifier for a region where the requesting peer is located, the geographic area encompassing the region, and the region encompassing the geographic sector. For example, the region could be a French region in the administrative sense, i.e., an area comprised of departments. In a federation such as the United States, the region could be a state. The region identifier conforms, for example, to the ISO 3166-2 standard.

[0085] Ultimately, the geographic area, the region, and the geographic sector are geolocation data of different scales.

[0086] Topological data also includes network data.

[0087] The network data includes a public IP address of the requesting peer 1. The public IP address is the one visible to any other peer that seeks to communicate with the requesting peer 1 and that does not belong to the same local network as the requesting peer 1. Any other peer located in the same local network as the requesting peer 1 has the same public IP address as the requesting peer 1.

[0088] The network data also includes the Autonomous System Number (ASN) of an autonomous system through which requesting peer 1 accesses the internet. The ASN is 32 bits long and its format conforms to RFC 4893.

[0089] The internet, as is well known, consists of interconnected "autonomous systems." An autonomous system is administered by at least one internet service provider (ISP). In practice, an ISP often owns one autonomous system and is therefore assigned an ASN. However, an ISP may have multiple ASNs, particularly in the case of a network or company acquisition. Thus, an ISP may have several ASNs depending on the continent. Conversely, several ISPs may use the same ASN. All the preceding parameters are obtained by the requesting peer 1 using methods known to the art. Some of these parameters may be provided to the requesting peer 1 by third-party equipment.

[0090] In step 102, requesting peer 1 receives a response to the grouping request from controller 2. The response includes an identifier for a peer group to which controller 2 added the peer during a grouping process that will be described later. In step 104, the peer sends controller 2 a request for information about the group; the request includes the identifier of the group assigned to requesting peer 1.

[0091] In step 106, the peer receives a response to the group information request, the response including data enabling the peer to identify each peer in the group (e.g., the respective public IP address of each peer in the group).

[0092] In step 108, requesting peer 1 uses this data to establish a communication channel with another peer in the group. The other peer then becomes connected to requesting peer 1.

[0093] In step 110, requesting peer 1 sends a request to download the next segment to the other now connected peer.

[0094] If requesting peer 1 does not receive the next segment within a predefined timeframe, the peer repeats steps 108 and 110 for another peer in the group.

[0095] If none of the peers in the group proves capable of providing the next segment within the allotted time, then requesting peer 1 sends controller 2 a degrouping request, in which requesting peer 1 asks controller 2 to leave the group that has been assigned to it (step 112).

[0096] Furthermore, requesting peer 1 adds the group to the Blacklist and returns to step 100. Thus, requesting peer 1 generates a new grouping request including a Blacklist in which the assigned group is referenced. Consequently, controller 2 will assign another peer group to requesting peer 1.

[0097] More generally, an implementation of step 100 with a blacklist referencing the last group assigned to requesting peer 1 by the control can be triggered following the detection, by requesting peer 1, of one of the following events:

[0098] • The multimedia stream ceases to be played by requesting peer 1,

[0099] • a change in the quality level for playing the media stream is requested, • requesting peer 1 fails to download a segment of the media stream from other peers in the current peer group within a predefined time (this case has already been described above).

[0100] Pair grouping process

[0101] We will now describe an embodiment of the peer grouping process implemented by controller 2. Unless otherwise stated, it is to be considered that the steps described below are implemented or caused by the peer grouping module 24 of controller 2.

[0102] In step 202, controller 2 receives the grouping request issued by requesting peer 1 via its communication interface 20. The request is then communicated to the peer grouping module 24.

[0103] In a step 202, the controller 2 searches, in a plurality of peer groups previously constituted by the controller, if there are candidate groups that meet certain conditions, which are evaluated on the basis of the parameters contained in the grouping query.

[0104] We will now detail sub-steps carried out for a group previously formed during this research 202, knowing that these sub-steps can be repeated for each group previously formed.

[0105] Controller 2 checks whether the group contains at least one peer with a segment of the media stream that falls within a predefined time neighborhood of the next segment. This neighborhood length is measured, for example, in the number of media stream segments using the variable `segmentNumbers`. In the pseudocode provided in the appendix, this check is performed using the `checklsInRange` function, which returns a boolean value `IsInRange`. This boolean value is 1 if the group contains such a segment, and 0 otherwise.

[0106] This check essentially verifies whether there is a peer within the group whose segment is "close" to the next segment to be downloaded by requesting peer 1. In the specific case where `segmentNumbers == 1` is chosen, the preceding check becomes a strict condition for verifying whether the group includes at least one peer possessing the next segment that requesting peer 1 must download. Controller 2 also checks whether the group includes at least one peer with a segment meeting the requested quality level, `TargetQuality`. The result of this check is recorded in the attached pseudocode as a boolean variable, `IsSameQuality`, which is 1 if `IsSameQuality` and 0 otherwise.

[0107] Controller 2 also checks whether the group is full or not, that is, whether the number of peers in the group has reached a predefined maximum group size. The result of this check is logged in the boolean variable `isGroupNotFull`, which is 1 if the group is not full, and 0 if the group is full (maximum size reached). Controller 2 retrieves geolocation data for the group members (collected through requests previously sent by these members to Controller 2) and checks if the group includes at least one peer located in the same geographic area as requesting peer 1, as provided in the grouping request parameters.In the attached pseudocode, this check is implemented by the function checks ameCountry, which returns a boolean variable isSameCountry with a value of 1 if at least one peer in the group has the same CountryCode as requesting peer 1, and a value of 0 otherwise.

[0108] Controller 2 also retrieves ASNs relating to the autonomous systems through which the group members access the internet, and checks whether the group includes at least one peer with the same ASN as that provided by requesting peer 1. In the pseudocode in the appendix, this check is implemented by the checkSameASN function, which returns a boolean variable IsSameASN with a value of 1 if at least one peer in the group goes through the same autonomous system as requesting peer 1 to access the internet, and with a value of 0 otherwise.

[0109] Controller 2 checks if the group is present in the Blacklist provided as a parameter by requesting peer 1, and records the result of this check in a boolean variable, which is noted as isGroupBlackListed in the attached pseudocode, and equals 1 if the group is present in the blacklist and equals 0 otherwise.

[0110] In addition, controller 2 checks whether, under the assumption of adding requesting peer 1 to the group, the sum of the number of segments of the media stream that can be sent by the group, calculated from the upload bandwidth of each peer and the bit rate of the media stream in a current quality, is greater than the number of peers in the group, and logs the result of this check in a boolean variable isGroupChainAlwaysOK.

[0111] Once these checks are completed, Controller 2 decides whether or not to add the group to a list of candidate groups, based on the respective results of these checks. Generally, the group previously identified by Controller 2 is accepted as a candidate group provided that, at a minimum:

[0112] • the group includes at least one peer possessing a segment that is in the same sequence of consecutive segments of predefined length as the next segment requested by requesting peer 1 (isInRange == 1), and

[0113] • the candidate group includes at least one peer satisfying a proximity condition with the requesting peer 1, the proximity condition being evaluated from the topological data (isSameASN == 1).

[0114] In one embodiment, the group is added to a main candidate list, called possibleGroups, when certain conditions are met. If at least one of these conditions is not met, the group is not added to the possibleGroups main candidate list.

[0115] These conditions differ depending on the value of the search restriction parameter restrictToSameASN.

[0116] The search restriction parameter restrictToSameASN can take an indicative value indicating that the search performed in step 202 is restricted to groups of the same ASN as the requesting peer 1 (value 1) or an indicative value indicating that the search is not restricted in this way (value 0).

[0117] When the search is not restricted (i.e., when restrictToSameASN == 0), then the conditions that the group must cumulatively meet to be added to the main candidate list possibleGroups are as follows:

[0118] • isInRange == 1: this means that the group includes at least one peer with a segment of the media stream that is "close" to the next segment in the media stream, according to the terms set out above;

[0119] • isSameQuality == 1: this means that the group has at least one peer capable of providing at least one segment of the media stream at the quality level requested via the TargetQuality parameter;

[0120] • isGroupNotFull == 1: this means that the group is not yet full,

[0121] • groupChainlsAlwaysOK == 1: this means that, assuming the addition of requesting peer 1 to the group, the sum of the total number of segments that can be sent by the peers in the group is greater than or equal to the number of peers in the group;

[0122] • isGroupBlackListed == 0: this means that the group is not referenced in the Blacklist provided by requesting peer 1; • isSame Country == 1: this means that requesting peer 1 and at least one peer in the group are located in the same geographical area (country).

[0123] When the search is restricted (i.e., when `restrictToSameASN == 1`), then the group must meet the condition `IsSameASN == 1` to be added to the main list of possibleGroups candidates. In the attached pseudocode, this condition is an additional condition on top of those used in the case of an unrestricted search.

[0124] Furthermore, the group is added to an additional list of candidates, called possibleGroupsWithSamelP, when the following conditions are met:

[0125] • isSamelP == 1: this means that the group includes a peer having the same public IP address as requesting peer 1, in other words that this peer and requesting peer 1 are in the same local network;

[0126] • IsInRange == 1;

[0127] • isSameQuality == 1;

[0128] • isGroupBlackListed == 0.

[0129] If at least one of these conditions is not met, the group is not added to the list of additional possible candidates GroupsWithSamel P.

[0130] The preceding sub-steps are repeated for each group previously formed by controller 2. At the end of this possible repetition, step 202 of searching for candidate groups is completed.

[0131] At the end of search 202, controller 2 may have found zero, one, or more candidate groups. In particular, the main candidate list possibleGroups may or may not be empty, and the additional candidate list possibleGroupsWithSamelP may or may not be empty.

[0132] If at least one candidate group was found during search 202, controller 2 selects a candidate group in step 204. Of course, if only one candidate group was found during the search, it is this only candidate group that is selected in step 206.

[0133] If no candidate group was found during search 202, or if no group has yet been formed by controller 2, then controller 2 creates a new peer group, and selects the created group (step 206).

[0134] In step 208, controller 2 adds requesting peer 1 to the selected group. In step 210, controller 2 sends sending peer 1, via communication interface 20, a response to the grouping request, the response containing an identifier of the selected group (this response being received by the requesting peer in step 102 discussed above).

[0135] We will detail a method of implementing selection step 204 in relation to the pseudocode in the appendix.

[0136] If the list of additional possible candidates, `GroupsWithSamelP`, is not empty, then controller 2 selects the candidate group containing the most peers with the public IP address of requesting peer 1, from among the candidate groups. In the attached pseudocode, this selection is performed using the `selectGroupWithMaxIdenticallPs` function.

[0137] For example, a candidate group comprising two peers with the public IP address of requesting peer 1 will be preferred to a candidate group comprising only one peer with that public IP address.

[0138] If, on the other hand, the additional candidate list possibleGroupsWithSamelP is empty, controller 2 examines the main candidate list possibleGroups.

[0139] If the main possibleGroups candidate list is not empty, then controller 2 implements the following substeps.

[0140] If at least one candidate group including at least one peer located in the geographic area of ​​requesting peer 1 was found during the search, then controller 2 selects the candidate group including the most peers located in the sub-geographic area of ​​requesting peer 1 from among the candidate groups.

[0141] In the attached pseudocode, this substep is implemented using the `selectGroupsWithMaxIdenticalCity` function, which returns its result in a variable `groupWithSameCity`. This function returns null if none of the candidate groups includes a peer located in the geographic sub-area of ​​requesting peer 1.

[0142] If none of the candidate groups includes a peer located in the geographic sub-area of ​​requesting peer 1 (groupWithSameCity == null), then controller 2 examines the Autonomous System Numbers (ASNs) through which the peers of the candidate groups pass to access the internet.

[0143] If at least one candidate group including at least one peer with the same ASN as requesting peer 1 was found during the search, then controller 2 selects the candidate group including the most peers with the same ASN as requesting peer 1 from among the candidate groups.

[0144] In the attached pseudocode, this substep is implemented using the `selectGroupsWithMaxIdenticalASN` function, which returns its result in a variable `groupWithSameASN`. This function returns null if none of the candidate groups includes a peer with the same ASN as the requesting peer 1.

[0145] If none of the candidate groups includes a peer with the same ASN as the requesting peer 1 (groupWithSameASN == null), then controller 2 examines the regions of the candidate groups.

[0146] If at least one candidate group including at least one peer located in the same region as requesting peer 1 was found during the search, then controller 2 selects the candidate group including the most peers located in the region of requesting peer 1 from among the candidate groups.

[0147] In the attached pseudocode, this substep is implemented using the `selectGroupsWithMaxIdenticalRegion` function, which returns its result in a variable `groupWithSameRegion`. This function returns null if none of the candidate groups includes a peer located in the same region as requesting peer 1. If none of the candidate groups includes a peer located in the same region as requesting peer 1 (`groupWithSameRegion == null`), then controller 2 examines the respective sizes of the candidate groups as a last resort.

[0148] Controller 2 then selects the group with the most peers from among the groups formed.

[0149] In the attached pseudocode, this substep is implemented using the selectGroupsWithMaxPeers function.

[0150] We observe that the different data that make up the topological data are hierarchically organized in the embodiment described above.

[0151] The existence of peers with the same public IP address as requesting peer 1 is considered a first-order criterion, sufficient on its own to justify the selection of a candidate group. This is justified by the fact that segment exchanges between peers belonging to the same local network (and therefore having the same public IP address) will not require network equipment outside that local network, resulting in significant energy savings. Location within the same geographic area (city) is used as a second-order criterion. Indeed, segment exchanges between peers located in the same city will require less network equipment, resulting in energy savings, although to a lesser extent than in the previous case from a statistical perspective. The Autonomous System Number (ASN) is used as a third-order criterion.Indeed, peer-to-peer segment exchanges passing through the same autonomous system to access the internet may only require network equipment belonging solely to that same autonomous system, which allows for energy savings but to a lesser extent than in the previous case on a statistical level.

[0152] The region is used as a rank 4 criterion. Indeed, peer-to-peer segment exchanges in the same region may only require network equipment located in that region, which allows for energy savings but to a lesser extent than in the previous case from a statistical point of view.

[0153] Group size is used as a fifth-rank criterion (as a last resort). This is because a larger group is estimated to be more likely to quickly provide the next segment to applicant peer 1 than a smaller group.

[0154] It should also be noted that, in this embodiment, the geographical area is not explicitly used during selection step 24. Indeed, the geographical area was only used as a filter to identify candidates and eliminate other groups, during search step 202 (in this case, groups not including any peers located in the geographical area).

[0155] In step 210, controller 2 commands the sending to requesting peer 1 of an identifier of the selected group, in order to allow requesting peer 1 to exchange segments of the multimedia stream with other peers of the selected group.

[0156] The parameters of a request received by controller 2 can be stored in memory 22 so that they can be examined by controller 2 when processing a subsequent request. For example, the next segment CurrentSegmentNumber provided as an even parameter is stored by controller 2 and can later be inspected by controller 2 during the search 202, specifically when calling the checklsInRange function.

[0157] Subsequently, Controller 2 can provide information about peers belonging to a group formed in response to the corresponding request issued by the requesting peer in step 102 described earlier. Every peer in the peer-to-peer network is capable of acting as requesting peer 1. Controller 2 processes each grouping request it receives in the same way, regardless of the issuing peer. Groups are formed or grow as such grouping requests are received and processed by Controller 2.

[0158] Other ways of implementing this

[0159] The pseudocode in the appendix is ​​only one embodiment among others of the process implemented by controller 2 to form peer groups in the peer-to-peer network.

[0160] In particular, controller 2 can use only one list of candidate groups, rather than splitting the candidate groups into two separate lists and then examining them one after the other.

[0161] The restrictToSameASN search restriction parameter provides flexibility in the operation of controller 2, but remains optional.

[0162] The geolocation data, operating at three different scales in the embodiment discussed above, can vary. In particular, it may be possible for the geolocation data to include only two of the three aforementioned data points (geographic area, region, geographic sector). Specifically, the filtering performed during the candidate search step based on geographic area can be omitted.

[0163] Furthermore, it may be planned to use only some of the five aforementioned criteria during the selection stage (one, two, three, or four). Preferably, the criteria retained from among the five are ordered in the same way.

[0164] Furthermore, we have seen that the server responds to a grouping request with a selected group identifier and only provides information about the group's peers in response to a separate request. However, in a variant, this information can be directly provided to the requesting peer in response to a grouping request. Appendix: Illustrative pseudocode of an implementation of the grouping process. Function: affectGroup

[0165] Data: UploadBandwith, Bitrate, TargetQuality, BlackList, CurrentSegmentNumber, peerGeolocData, restrictToSameASN

[0166] initialization;

[0167] groupsVideo ← video.getGroups();

[0168] sendableSegments ← UploadBandwith / Bitrate;

[0169] possibleGroupsWithSameIP ← [];

[0170] possibleGroups <- [];

[0171]

[0172] selectedGroup 4- null;

[0173] Search for potential groups;

[0174] for group in groupsVideo do seg nient Numbers, peersAddrs getPeersIn fos(group. Peers); peersArray <— getPeersArray(group. Peers)'; isSameQuality 4— group. TargetQuality == TargetQuality; isInRange <- check IsInRang e(CurrentSegmentNumber, segmentNumbers); isGroupN otFull <— checkGroupFull(group); isSameCountry <— checkSameCountry(peerGeolocData. CountryCode); isSameASN e- checkSameASN (peerGeolocData. ASN); groupChainAlwaysOK <— true; isGroupBlackListed f- chedcGroupBlackListed(BlackList,group.uuid); getCapacityTmp <— 0; peersArray. SortBySendableSegmentQ; if peersArray. size > 1 then. for j = peersArray. size — 2; j > 0; j — — do for i = j + 1; i < peersArray.size; i + + do I capacityTmp+ = peersArray[i].seiidableSegmeTits; end if capacity Tmp < peers Array, size — 1 — j then groupChainAlwaysOK = false; break; end end end if isSamelP and isSameQuality and isIn. Ran.ge and not isGroupBlackListed then I possibleGroupsWithSamelP.add(group); end if isSameQuality and isInRange and isGroupNotFull and groupChainAlwaysOK and isSameCountry and not isGroupBlackListed then if (isSameASN and restrictToSameASN) or IrestrictToSameASN then | possibleGroups.add / group); end.

[0175]

[0176] end end if possibleGroupsWithSameIP.size > 0 then | selectedGroup = selectGroupWithMaxIdenticalIPs(possibleGroupsWithSameIP); end if possibleGroups.size > 0 and selectedGroup == null then groupSameCity = selectGroupWithMaxIdenticalCity(possibleGroups,peerGeolocData.cityName); groupSameRegion =

[0177]

[0178] selectGroupWithMaxIdenticalRegion(possibleGroups, peerGeolocData.regionName); groupSameASN = selectGroupWithMaxIdenticalASN(possibleGroups, peerGeolocData.ASN);

[0179] if groupSameCity != null and selectedGroup == null then | selectedGroup = groupSameCity; else if groupSameASN != null and selectedGroup == null then | selectedGroup = groupSameASN; else if groupSameRegion != null and selectedGroup == null then | selectedGroup = groupSameRegion; else | selectedGroup = selectGroupWithMaxPeers(possibleGroups); end end if selectedGroup == null then | selectedGroup = createNewGroup(TargetQuality); end return selectedGroup; Algorithm 1: Group selection algorithm in QUANTEEC Controller

Claims

1. CLAIMS 1. Peer grouping method of a peer-to-peer network, the method comprising the following steps implemented by a server:

3. • Receipt (200) of a grouping request issued by a requesting peer, the grouping request comprising:

4. • an identifier of the next segment of a multimedia stream requested by the requesting peer, 5. • Topological data allowing the requesting peer to be situated in relation to other peers in the peer-to-peer network, 6.• search (202), in a plurality of peer groups of the previously constituted peer-to-peer network, for at least one candidate group meeting the following conditions:

7. The candidate group includes at least one peer possessing a segment of the multimedia stream that is included in a temporal neighborhood of the next segment of predefined length, and 8. • The candidate group includes at least one peer satisfying a proximity condition with the requesting peer, the proximity condition being evaluated from topological data, 9.• If at least one candidate group was found during the search, add (208) the peer to a selected group, the selected group being a candidate group that was found during the search, 10.• Send command (210) to the requesting peer of data enabling the requesting peer to establish connections with other peers belonging to the selected group, in order to enable the requesting peer to exchange segments of the multimedia stream with the other peers.

2. A method according to any one of the preceding claims, wherein 12.• Topological data includes a public IP address of the requesting peer, • A peer with a public IP address satisfies the proximity condition with the requesting peer.

3. A method according to the preceding claim, wherein:

14. If at least one candidate group comprising at least one peer with the same public IP address was found during the search, the selected group is a candidate group comprising at least one peer with the same public IP address as the requesting peer.

4. A method according to any one of claims 2 and 3, wherein: 15.• If several candidate groups including at least one peer with a public IP address were found during the search, the selected group is the candidate group with the most peers with a public IP address among the candidate groups.

5. A method according to any one of the preceding claims, wherein:

17. • Topological data indicates a geographical area in which the requesting peer is located, 18.• A peer located outside the geographical area does not meet the condition of proximity to the requesting peer.

6. A method according to the preceding claim, wherein the geographical area is a country.

7. A method according to any one of the preceding claims, wherein:

21. • Topological data indicates a geographical area in which the requesting peer is located, 22.• a peer located in the geographical area satisfies the condition of proximity to the requesting peer.

8. A method according to the preceding claim, wherein the geographical area is a city.

9. A method according to any one of claims 7 and 8, wherein: 25.• at least one candidate group includes at least one peer located in the geographical area, then the selected group is a candidate group including the most peers located in the geographical area among the candidate groups.

10. A method according to the preceding claim, wherein the selected group is the candidate group comprising the most peers located in the geographic area among the candidate groups, provided that no candidate group includes any peer with the same public IP address as the requesting peer.

11. A method according to any one of the preceding claims, wherein:

27. • The topological data indicates an ASN number of an autonomous system through which the requesting peer accesses the internet, 28.• A peer accessing the internet via the autonomous system with the ASN number satisfies the proximity condition with the requesting peer.

12. A method according to the preceding claim, wherein: 30.• If at least one candidate group accesses the internet via the autonomous system with the ASN number, then the selected group is a candidate group comprising the most peers accessing the internet via the autonomous system with the ASN number among the candidate groups.

13. A method according to the preceding claim, wherein the candidate group comprising the most peers accessing the internet via the autonomous system having the ASN number is selected provided that at least one of the following conditions is met:

32. • No candidate group includes any peer with the same public IP address as the requesting peer, 33.• no candidate group includes a peer located in the same geographical area as the applicant peer.

14. A method according to any one of the preceding claims, wherein:

35. • Topological data indicates a region in which the requesting peer is located, 36.• if at least one candidate group includes at least one peer located in the region, then the selected group is a candidate group comprising the most peers located in the region among the candidate groups.

15. A method according to the preceding claim, wherein the candidate group comprising the most peers located in the region is selected provided that at least one of the following conditions is met:

38. • No candidate group includes any peer with the same public IP address as the requesting peer, 39.• No candidate group includes any peer located in the same geographical area as the applicant peer, the geographical area being included in the region, 40. No candidate group includes any peer accessing the internet via the same autonomous system as the requesting peer.

16. A method according to any of the preceding claims, wherein the selected group is the candidate group with the most peers among the candidate groups, provided that at least one of the following conditions is met:

41. • No candidate group includes any peer with the same public IP address as the requesting peer, 42.• No candidate group includes any peer located in the same region as the applicant peer, 43.• no applicant group includes any peer having the same internet service provider as the applicant peer.

17. A method according to any one of the preceding claims, wherein:

45. • The request includes a quality level requested by the requesting peer to play the multimedia stream, 46.• any candidate group shall also meet the following condition: the candidate group shall include at least one peer possessing a segment of the multimedia stream in a format suitable for playback at the required quality level.

18. A method according to any one of the preceding claims, wherein:

48. The request includes an indicative blacklist of prohibited peer groups, 49.• any candidate group must also meet the following condition: the candidate group is not on the blacklist.

19. A method according to any one of the preceding claims, further comprising 51.• If no candidate group is found during the search, a new group is created and the peer is added to the new group.

20. A process implemented by a requesting peer who is part of a peer-to-peer network, comprising the following steps:

53. • Detect one of the following events:

54. • A multimedia stream ceases to be played by the requesting peer, 55. A change to a higher quality level for playing the multimedia stream is requested. 56.• The requesting peer fails to download a segment of the multimedia stream from other peers belonging to a peer group within a predefined time, • command to send to the server a request to group the requesting peer into a different group, the server being configured to implement the grouping process according to any of the preceding claims.

21. Product computer program comprising program code instructions for executing the steps of the process according to any one of claims 1 to 19, when this program is executed by a server.