Peer grouping process in a peer-to-peer network

The peer-to-peer network grouping method optimizes peer connections using topological data to reduce energy consumption by grouping peers based on proximity and geographical location, improving multimedia stream segment exchange efficiency.

FR3169646A1Pending Publication Date: 2026-06-12QUANTEEC

Patent Information

Authority / Receiving Office
FR · FR
Patent Type
Applications
Current Assignee / Owner
QUANTEEC
Filing Date
2024-12-11
Publication Date
2026-06-12

AI Technical Summary

Technical Problem

Peer-to-peer networks consume significant electrical energy due to the large amount of network equipment used for multimedia stream segment exchanges.

Method used

A peer-to-peer network grouping method that involves a server receiving a grouping request from a peer, using topological data to identify candidate groups with peers in a temporal and proximity neighborhood, and commanding the peer to establish connections within selected groups for efficient segment exchange.

Benefits of technology

Reduces energy consumption by optimizing peer connections based on proximity and geographical location, enhancing the efficiency of multimedia stream segment downloads.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

A peer grouping method comprising the following steps performed by a server: receiving (200) a grouping request from a requesting peer; searching (202) 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: the candidate group includes at least one peer possessing a segment of a multimedia stream that is included in a temporal neighborhood of a next segment and includes at least one peer satisfying a proximity condition with the requesting peer; if at least one candidate group is found during the search, adding (208) the peer to a selected group, the selected group being a candidate group found during the search, and sending (210) to the requesting peer data enabling the requesting peer to establish connections with other peers belonging to the selected group. Figure for the abstract: Fig. 4
Need to check novelty before this filing date? Find Prior Art

Description

Title of the invention: Method for grouping peers in a peer-to-peer network. FIELD OF THE INVENTION

[0001] The present invention relates to a method for grouping peers in a peer-to-peer network. STATE OF THE ART

[0002] Peer-to-peer networks are a type of decentralized network commonly used for data sharing, and in particular multimedia streams.

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

[0004] Certain processes, implemented by a peer, are designed to identify in the peer-to-peer network another peer most likely to quickly provide a next segment that the peer needs, the objective being the speed of downloading the next segment.

[0005] However, the processes pursuing this objective tend to require a large amount of network equipment through which the segments pass, thus causing significant electrical consumption on the general scale of the peer-to-peer network. Description of the invention

[0006] A technical problem to be solved is that of contributing to reducing the energy consumption generated by exchanges of multimedia stream segments in a peer-to-peer network.

[0007] This technical problem is solved by a peer-to-peer network grouping method, the method comprising the following steps implemented by a server: • receiving a grouping request issued by a requesting peer, the grouping request comprising: • an identifier for the next segment of a multimedia stream requested by the requesting peer, • Topological data allowing the requesting peer to be located in relation to other peers in the peer-to-peer network, • search, within a plurality of previously established peer groups in the peer-to-peer network, for at least one candidate group meeting the following conditions: • The candidate group includes at least one peer with a segment of the media stream that is included in a neighborhood temporal of the next segment, the temporal neighborhood being of predefined length, and • The candidate group includes at least one peer that meets a proximity condition with the requesting peer, the proximity condition being assessed from topological data, • 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, • 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.

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

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

[0010] 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.

[0011] Preferably, 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.

[0012] Preferably, the topological data indicate a geographical area in which the requesting peer is located, and a peer located outside the geographical area does not satisfy the condition of proximity to the requesting peer.

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

[0014] Preferably, the topological data indicate a geographical area in which the requesting peer is located, and a peer located in the geographical area satisfies the proximity condition with the requesting peer.

[0015] Preferably, the geographical area is a city.

[0016] Preferably, at least one candidate group includes at least one peer located in the geographical area, then the selected group is a candidate group comprising the most peers located in the geographical area among the candidate groups.

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

[0018] Preferably, the topological data indicates an ASN number of an autonomous system through which the requesting peer accesses the internet, and a peer accessing the internet via the autonomous system having the ASN number satisfies the proximity condition with the requesting peer.

[0019] Preferably, if at least one candidate group accesses the internet via the autonomous system having the ASN number, then the selected group is a candidate group comprising the most peers accessing the internet via the autonomous system having the ASN number among the candidate groups.

[0020] 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: • No candidate group includes any peer with the same public IP address as the requesting peer. • no candidate group includes a peer located in the same geographical area as the applicant peer.

[0021] Preferably, the topological data indicate 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.

[0022] 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: • No candidate group includes any peer with the same public IP address as the requesting peer. • no applicant group includes any peer located in the same geographical area as the applicant peer, the geographical area being included in the region, • no applicant group includes any peer accessing the internet via the same autonomous system as the applicant peer.

[0023] 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: • No candidate group includes any peer with the same public IP address as the requesting peer. • No applicant group includes any peer located in the same region as the applicant peer. • no applicant group includes any peer having the same ASN as the applicant peer.

[0024] Preferably, the request includes a quality level requested by the requesting peer to play the multimedia stream, and any candidate group further complies with the following condition: the candidate group includes at least one peer possessing a segment of the multimedia stream in a format suitable for being played at the requested quality level.

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

[0026] Preferably, the process includes the following step: if no candidate group is found during the search, creation of a new group and addition of the peer to the new group.

[0027] A second object consists of a process implemented by a requesting peer belonging to a peer-to-peer network, comprising the following steps: • detect one of the following events: • a multimedia stream ceases to be played by the requesting peer, • A change in quality level for playing the multimedia stream is requested. • The requesting peer fails to download a segment of the media stream from other peers within a peer group within a predefined timeframe. • 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 constituting the first object described above.

[0028] A third object is constituted by 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. DESCRIPTION OF FIGURES

[0029] Other features, objectives 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:

[0030] Fig. 1 schematically illustrates equipment in a peer-to-peer network.

[0031] Figure [Fig. 2] represents internal components of a peer and a server of grouping, according to a method of implementation.

[0032] The [Fig.3] is a flowchart of steps of a process implemented by a peer, according to an embodiment.

[0033] The [Fig.4] is a flowchart of steps of a process implemented by a grouping server, according to an embodiment.

[0034] Throughout the figures, similar elements bear identical references. DETAILED DESCRIPTION OF THE INVENTION

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

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

[0037] Three pairs A, B, C, which are part of the peer-to-peer network, are shown as an example in [Fig.1]. Peer

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

[0039] Peer 1 includes a communication interface 10 for communicating with other peers in the peer-to-peer network, in particular for sending or receiving segments of a multimedia stream. The communication interface 10 is also suitable for communicating with the grouping server.

[0040] The communication interface 10 is of any type, wired (Ethernet) or wireless radio (cellular, Wi-Fi, Bluetooth or other).

[0041] Peer 1 also includes memory for storing 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.

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

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

[0044] Peer 1 also includes a segment management module 16. This segment management module 16 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. It will be seen later that the segment management module is capable of communicating with the grouping server, which also contributes to achieving this objective.

[0045] The segment management module 16 is, for example, a computer program executable by at least one processor of the pair. This computer program includes Code instructions 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.

[0046] The peer 1 also includes means for obtaining topological data that allow the peer to be located relative to other peers in the peer-to-peer network. It will be seen later that the topological data allows the controller 2 to assess whether the requesting peer is closer or farther 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 based 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.

[0047] These topological data considered in isolation are known to a person skilled in the art, as are the means to be used to enable a peer to obtain them. These topological data will be detailed later. Grouping Server

[0048] 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.

[0049] The controller 2 2 further includes a memory for storing indicative data of peer groups previously constituted by the controller 2 2. This data includes, for example, for each group constituted, a group identifier, and descriptive data of the peers who belong to this group.

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

[0051] Method for downloading a segment by a peer

[0052] It is assumed that peer 1, which will be referred to hereafter as the "requesting peer", has need 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.

[0053] With reference to [Fig.3], a method for downloading the next segment, implemented by the requesting peer 1 1, comprises the following steps.

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

[0055] 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 established 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.

[0056] The grouping query includes several parameters.

[0057] The parameters of the grouping request include a bandwidth of the requesting peer 1 in upload, 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.

[0058] The parameters also include a bit rate of the multimedia stream, denoted Bitrate. This bit rate is expressed, for example, in bits per second.

[0059] The parameters include an identifier of the next segment of the media stream (denoted CurrentSegmentNumber) that requesting peer 1 needs to download in order to play the media stream. This implies that requesting peer 1 already has 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).

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

[0061] The parameters also include a search restriction parameter restrictToSameASN and a blacklist BlackList, which allow influence on the internal operation of controller 2, as will be seen later.

[0062] The parameters also include the topological data mentioned previously 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.

[0063] In the following, we will discuss a non-limiting embodiment in which the topological data includes the following data, knowing that other embodiments may provide for using only one or more of these data and / or other data.

[0064] The topological data includes geolocation data of the requesting peer 1, denoted peerGeolocData.

[0065] The peerGeolocData geolocation data includes an identifier of a geographic area in which the requesting peer 1 is located. The area is, for example, a country. In this case, the identifier can be a country identifier conforming to the ISO 3166 standard.

[0066] The peerGeolocData geolocation data further includes an identifier of a geographic sector in which the requesting peer 1 is located, the geographic sector being included within the geographic area. The geographic sector is, for example, a city. In this case, the identifier can 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).

[0067] The peerGeolocData geolocation data further includes an identifier of a region in which the requesting peer 1 is located, the geographic area including the region, and the region including the geographic sector. The region is, for example, a French region in the administrative sense of the term, that is, an area made up of departments. In a federation such as the United States, the region may be a federated state. The region identifier conforms, for example, to the ISO 3166-2 standard.

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

[0069] The topological data also includes network data.

[0070] 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.

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

[0072] As is known, the internet network consists of interconnections of "autonomous systems." An autonomous system is administered by at least one internet service provider (ISP). In practice, an internet service provider often owns an autonomous system and is therefore assigned an ASN. However, it is possible for an internet service provider to have several ASNs, particularly in the case of a network or company acquisition. Thus, it is possible for a provider to have multiple ASNs. Internet access varies depending on the continent. Conversely, several internet service providers may use the same ASN.

[0073] All the preceding parameters are obtained by the requesting peer 1 using methods known to the art. Some of these parameters may in particular be provided to the requesting peer 1 by third-party equipment.

[0074] In a step 102, the requesting peer 1 receives a response to the grouping request from the controller 2. The response includes an identifier of a peer group to which the controller 2 has added the peer, during a grouping process which will be described later.

[0075] In a step 104, the peer sends to the controller 2 a request for information about the group, the request including the group identifier assigned to the requesting peer 1.

[0076] In a 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).

[0077] 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.

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

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

[0080] 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).

[0081] 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 group assigned to it is referenced. Consequently, controller 2 will assign another peer group to requesting peer 1.

[0082] 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: • The multimedia stream ceases to be played by requesting peer 1, • a change in the quality level for playing the multimedia stream is request, • Requesting peer 1 fails to download a segment of the media stream from other peers in the current peer group within a predefined timeframe (this case has already been described above). Pair grouping process

[0083] We will now describe an embodiment of the peer grouping process implemented by controller 2 with reference to [Fig. 4]. Unless otherwise stated, the steps described below are to be considered as implemented or caused by the peer grouping module 24 of controller 2.

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

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

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

[0087] Controller 2 checks whether the group includes at least one peer with a segment of the media stream that is included in a temporal neighborhood of the next segment, the neighborhood being of predefined length. The predefined length of the temporal neighborhood is, for example, measured in the number of segments of the media stream, via the segmented variable `umber s`. In the pseudocode provided in the appendix, this check is performed using the function `checklsInRange`, which returns a boolean value `isInRange` as a result. This boolean value is 1 if the group does indeed include such a segment, and 0 otherwise.

[0088] This check consists in a way of checking whether there is in the group a peer having a segment "close" to the next segment to be downloaded by the requesting peer 1. In a particular case in which segmentNumbers = 1 is chosen, the preceding check amounts to checking whether or not the group includes at least one peer having the next segment that the requesting peer 1 must download, which is a strict condition.

[0089] Controller 2 also checks whether the group includes at least one peer with a segment having the required quality level TargetQuality. The result of this check is recorded, in the attached pseudocode, in the boolean variable isSameQuality, which is 1 if yes and 0 otherwise.

[0090] The controller 2 also checks whether the group is full or not, that is, whether the number of peers present in the group has reached a maximum group size predefined. The result of this check is recorded in the boolean variable isGroupNotFu.il, which is 1 if the group is not full, and 0 if the group is full (maximum size reached).

[0091] Controller 2 retrieves geolocation data for group members (collected through requests previously sent by these members to controller 2) and checks whether 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 checkSanwCountry, 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.

[0092] Controller 2 also retrieves ASNs relating to the autonomous systems through which the members of the group access the internet, and checks whether or not the group includes at least one peer with the same ASN as that provided by the requesting peer 1. In the attached pseudocode, 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 the requesting peer 1 to access the internet, and with a value of 0 otherwise.

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

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

[0095] Once these checks are done, controller 2 makes the decision to add or not the group to a list of candidate groups, based on the respective results of these checks.

[0096] Generally, the group previously formed by controller 2 is retained as the candidate group provided that, at a minimum: • 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 • 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).

[0097] 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.

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

[0099] 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).

[0100] 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: • 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; • isSameQuality = - 1: this means that the group has at least one peer capable of providing at least one segment of the multimedia stream at the quality level requested via the TargetQuality parameter; • isGroupNotFidl — — 1: this means that the group is not yet full, • 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; • isGroupBlackListed == 0: this means that the group is not referenced in the BlackList provided by requesting peer 1; • isSameCountry = 1: this means that requesting peer 1 and at least one peer in the group are located in the same geographical area (country).

[0101] When the search is restricted (i.e., when one has If 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.

[0102] Furthermore, the group is added to an additional candidate list, called possibleGroupsWithSanwIP, when the following conditions are met: • isSamelP = 1; this means that the group includes a peer with 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; • isInRange = 1; • isSameQuality = 1; • isGroupBlackListed - =0.

[0103] If at least one of these conditions is not met, the group is not added to the list of additional candidates possibleGroupsWithSanwIP.

[0104] 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.

[0105] 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.

[0106] If at least one candidate group was found during search 202, controller 2 selects a candidate group in a 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.

[0107] 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 group created (step 206).

[0108] In a step 208, controller 2 adds requesting peer 1 to the selected group.

[0109] In a step 210, the controller 2 sends to the sending peer 1, via the 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).

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

[0111] 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.

[0112] By way of example, a candidate group comprising two peers having the public IP address of requesting peer 1 will be preferred to a candidate group comprising only one peer having this public IP address.

[0113] If on the contrary the additional candidate list possibleGroupsWithSamelP is empty, controller 2 examines the main candidate list possibleGroups.

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

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

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

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

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

[0119] In the attached pseudocode, this substep is implemented using the function selectGroupsWithMaxIdenticalASN, 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.

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

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

[0122] In the attached pseudocode, this substep is implemented using the function `selectGroupsWithMaxldenticalRegion` returns its result in a variable `groupWithSameRegion`. This function returns null if none of the candidate groups include a peer located in the same region as the requesting peer 1.

[0123] If none of the candidate groups includes a peer located in the same region as the requesting peer 1 (groupWithSameRegion == null), then the controller 2 examines the respective sizes of the candidate groups as a last resort.

[0124] The controller 2 then selects the group comprising the most peers from among the groups formed.

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

[0126] It is noted that the different data forming part of the topological data are hierarchically organized in the embodiment described above.

[0127] 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 exchanges of segments 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, thus resulting in significant energy savings.

[0128] Location in the same geographical area (city) is used as a rank 2 criterion. Indeed, exchanges of segments between peers located in the same city will require a reduced amount of network equipment, which allows for energy savings, but to a lesser extent than in the previous case from a statistical point of view.

[0129] The Autonomous System Number (ASN) is used as a rank 3 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 energy savings but to a lesser extent than in the previous case from a statistical point of view.

[0130] 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 energy savings but to a lesser extent than in the previous case from a statistical point of view.

[0131] Group size is used as a rank 5 (last resort) criterion. Indeed, it is estimated that a large group is more likely to quickly provide the next segment to applicant peer 1 than a small group.

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

[0133] 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.

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

[0135] Subsequently, controller 2 may provide information relating to peers belonging to an established group in response to the corresponding request issued by the requesting peer in step 102 described above.

[0136] Each peer in the peer-to-peer network is capable of acting as requesting peer 1. Controller 2 handles each grouping request it receives in the same way, regardless of the sending peer. Groups are formed or grow as such grouping requests are received and processed by controller 2. Other ways of implementing this

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

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

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

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

[0141] Furthermore, it may be envisaged that only some of the five aforementioned criteria will be used during the selection step (one, two, three or four). Preferably, the criteria retained from among the five are ordered in the same way.

[0142] Furthermore, it has been seen that the server responds to a grouping request with a selected group identifier, and only provides information about the group peers in response to a separate request, at a time. But in a variant, this information can be directly provided to the requesting peer in response to a grouping request.

[0143] Annex: illustrative pseudocode of an embodiment of the grouping process

[0144] [Math.l] Function: aiïœtGroup Data: UploatiBandwith, T n get Qua&ty, BlaçkList. Carrent-SegnientNuœiwsr, p^rGeokicData, rest: if » A initialization: » f fdoadBandwith / Bitrate; pOs-r» / » t P'* Soll ,< / '•«'ïw / P i - ||; pi> ^>bte Gf uii» * [] sf P ' P AP O t» * , < / '!< Search for potmtial groups:. for r / rwp. Video do ,w:pmenGV wn&ers, peer«Addrs ÿeiPeersJ nfatygrtmp. Peers) ; peersArray <— yaiPear#Arrayÿ(group.Pe$r#); isBameQuality prtnip.Targef.QuaBty ~~ Ta^ge^arthh,. ûfnftange f.ARnPlsrfnR.unffe((7um ;, v gmeniNumbers); f- cfieekGroupFul^group): tsSatneG'oawtrÿ t- eheakSamaCau.ntry(pwFfAnAoelPAa.^^^^^^ s à S a nu : / 1S N e~ checkSa me A 5 A? ( or at 6 o'clock in the morning a. À$ X) ; nAlwaysOK <■" irw; t - <di&ck(.lrav.p.Bki^ grMtp.n.uid)', ÿ&t(7apaâitÿTmp 0; ptuj rs ,4 rra y. 6' or l B y S e. ndetbleSeÿm&ii[} ; if peiswlrray. .«;:<? > 1 then î for J ™ pet:rsj4rray..sii2e — 2; j > 0: j -.....do ; for i :::; j r 1; i < peeFsÆTaÿ. swe; i + + do î i mpaeîtî / rmp+ .~s jmr^olrrôÿ[([.s€ndô&^^ end if m^îd.lyTmp < peCT\sArra;y.^^ - 1 ■ j then i i grnup(PiainAfa^^ ~ / dise; i i irafc: end end end if üSameîP and isSameQualttÿ and iv / niianffe and noi îxCAüupBïiïckL^ then i pos«^e(»r<>tjp«WWiSameJP^^ end if »»d B / nRangii and isBnjnpNatFtdl and and ■û&imnCa^ntrÿ and nai iÿCrTùupBlackLisistl then i if fis&med&V and or IrtvtrîcfToSA^^^ then end end end

[0145] [Math.2] if > 0 then | .wdectedGroup -« end if pw&st&iaGVuup.'s.sm; > 0 and sGzctedGdmp mdl then I grmtpSaineC’ity ~ salf'CtGfroupW\lJMaxïdenti <tâcity(pwime&roups,pew^ groupsame teffian ” Aderf£rGupl¥ithAfazld&TiïieMlJïeffùjn{^^^ ^wpSomeASlV ” seh-efG'raupWGdhM&eld^ if granpSatneCity / — nuU and ndetedGrwtp î,w7 then | sGçGvdGravp grwp$an&.Cïty; aise if ÿmupSameAÿiV / — nulî and aekadedGf'aKp =*~ n-udi! then ] sekadzdGmup ~ tpantpSamaASN: else îf $rotypeSam <dï^ - nnü and sekciedcrranp n«0 then [ sgandadgro-mp ~ groupsamnhegion', else | aeletAsdGrGup ~ ^eîeeiCrwplFdfÀMaæP^ | and end if ^GeetedGrcmp - nuU then | s&kGedGrmip ” (reMfoiNfnaGrca^ end ret ur» selecVxl Group ; Algorithm It Group sélection algorithm m QUANTEEC ControHer

Claims

Demands

1. A peer grouping method for a peer-to-peer network, the method comprising the following steps implemented by a server: • receiving (200) a grouping request issued by a requesting peer, the grouping request comprising: • an identifier of a next segment of a multimedia stream requested by the requesting peer, • topological data enabling the requesting peer to be located relative to other peers in the peer-to-peer network, • searching (202), in a plurality of previously constituted peer groups in the peer-to-peer network, for at least one candidate group satisfying the following conditions: • 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 • the candidate group includes at least one peer satisfying a proximity condition with the requesting peer,the proximity condition being evaluated from the topological data, • if at least one candidate group was found during the search, addition (208) of the peer to a selected group, the selected group being a candidate group found during the search, • sending 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 allow the requesting peer to exchange segments of the multimedia stream with the other peers.

2. A method according to the preceding claim, wherein • the topological data includes a public IP address of the requesting peer, • a peer having the public IP address satisfies the proximity condition with the requesting peer.

3. A method according to the preceding claim, wherein: • 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.

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

5. A method according to any one of the preceding claims, wherein: • The topological data indicate a geographic area in which the requesting peer is located, • a peer located outside the geographic area does not satisfy the proximity condition with 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: • the topological data indicate a geographic area in which the requesting peer is located, • a peer located in the geographic area satisfies the proximity condition with 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: • at least one candidate group includes at least one peer located in the geographic area, then the selected group is a candidate group comprising the most peers located in the geographic 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: • the topological data indicate an ASN of an autonomous system through which the requesting peer accesses the internet, • a peer accessing the internet through the autonomous system having the ASN satisfies the proximity condition with the requesting peer.

12. A method according to the preceding claim, wherein: • if at least one candidate group accesses the internet via the autonomous system having the ASN number, then the selected group is a candidate group comprising the most peers accessing the internet via the autonomous system having 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: • no candidate group includes any peer with the same public IP address as the requesting peer, • no candidate group includes any peer located in the same geographical area as the requesting peer.

14. A method according to any one of the preceding claims, wherein: • the topological data indicate a region in which the requesting peer is located, • 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: • no candidate group includes any peer with the same public IP address as the requesting peer, • 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.

16. A method according to any one 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: • no candidate group includes any peer with the same public IP address as the requesting peer, • no candidate group includes any peer located in the same region as the requesting peer, • no candidate group includes any peer accessing the internet via the same autonomous system as the requesting peer.

17. A method according to any one of the preceding claims, wherein: • the request includes a quality level requested by the requesting peer to play the multimedia stream, • any candidate group further satisfies the following condition: the candidate group includes at least one peer possessing a segment of the multimedia stream in a format suitable for playback at the requested quality level.

18. A method according to any one of the preceding claims, wherein: • the request includes an indicative blacklist of prohibited peer groups, • 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: • if no candidate group is found during the search, creation of a new group and addition of the peer to the new group.

20. A method implemented by a requesting peer belonging to a peer-to-peer network, comprising the following steps: • detecting one of the following events: • a multimedia stream ceases to be played by the requesting peer, • a change in a quality level for playing the multimedia stream is requested, • 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 method according to any one of the preceding claims.

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