Drawings
Figure 1 illustrates transactions between one embodiment of a Connection Data exchange (CDX) service
.
Turning now to Figure 1, in one embodiment, the mobile device A 102 and mobile device B 106 can be executing a collaborative application such as a multi-player game or a collaborative chat session which requires a P2P connection with one or more other computing devices. At NAT traversal request 110, mobile device A 102 transmits a CDX Hole-Punch Request to the CDX server 104. The CDX server 104 then responds with the CDX Hole-Punch Data at nat traversal response 112. In one embodiment, the hole punch data includes the public IP address and port of mobile device A and/or any other data needed to punch a hole through mobile device A‘s NAT (e.g., NAT type data defining mobile device A‘s NAT type). similar transactions are performed for mobile device B at NAT traversal request 116 and nat traversal response 118, respectively.
At match request 116 and match request 120, mobile devices A and B then send match requests including the CDX Hole-Punch Data to the matchmaking service, along with any additional matching criteria (described below). At this stage, mobile devices A and B may begin to construct the Connection Data needed to establish a P2P connection. This may be accomplished, for example, using a transaction such as a standard Internet Connectivity Establishment (“ICE”) transaction (e.g., by a NAT traversal service). However, the underlying principles of the invention are not limited to any particular mechanism for determining Connection Data.
In one embodiment, once the matchmaking service 108 has found a set of client devices with matching criteria, it may generate a unique CDX Session ID, a unique CDX Ticket for each member of the CDX Session, and a unique Session Key. In one embodiment, the matchmaking service 108 may encrypt the CDX Hole-Punch Data for the CDX Ticket using a unique CDX ticket key. At Ticket A 122 and Ticket B 124, the matchmaking service then may then send each of the mobile devices A and B their CDX Ticket and the Session Key.
Mobile device A receives the CDX Ticket and Session Key and encrypts its previously determined Connection Data using the Session Key, making a payload. In one embodiment, mobile device A constructs a CDX Request by appending the constructed Payload to the CDX Ticket. At Ticket A with Connection Data 126, mobile device A sends the CDX Request to the CDX server 104. Mobile device B could also performs the same operations and transmit a request to the CDX server at 138.
At authenticate Ticket A 128, the CDX server 104 receives the CDX Request, examines the ticket to ensure that it is valid and authentic (e.g., based on the Message Authentication Code 307). If the CDX Ticket is invalid, the request is dropped. In one embodiment, the CDX server then decrypts the CDX Hole-Punch Data set that is contained in the CDX Ticket using the CDX Ticket Key. In one embodiment, the CDX Ticket Key can include an expiration time/date which may also be transmitted with the tickets. The CDX service 104 and the matchmaker service 108 can store two (or more) different CDX ticket keys for encryption/decryption–a first which is currently active and a second which will become active upon reaching the expiration time/date of the first. Upon receiving a ticket, the CDX service 104 can read the expiration time/date to determine which ticket key to use. When a CDX Ticket Key has expired, both the CDX service 104 and the matchmaker service 108 can each generate a new ticket key (which will be the next key to be used after the current ticket key expires). In one embodiment, the CDX service 104 and matchmaker service 108 execute the same key generation algorithm to ensure consistency with the two ticket keys. For example, techniques such as those used for the well-known RSA SecurID authentication mechanism may be used in which a new authentication code is generated at fixed intervals. In one embodiment, a new CDX ticket key is generated on a daily basis. However, the underlying principles of the invention are not limited to any particular mechanism for generating CDX ticket keys.
The same operations could be performed as shown at 136 for mobile device B. The CDX server constructs a CDX Response from the CDX Request and then uses the CDX Hole-Punch Data to send the CDX Response to the participants in the CDX Session (sending to mobile device B at 130 and to mobile device A at 140).
mobile device B receives the CDX Response 130 from the CDX server. Client Device B examines the CDX Ticket Stub to ensure that the Session ID matches the Session ID of its own CDX Ticket. Mobile device B may then decrypt the payload using the Session Key, yielding the Connection Data from Mobile device A. Mobile device B then uses the Connection Data from mobile device A to begin the process of establishing the P2P session. In one embodiment, these involve standard ICE transactions. However, the underlying principles of the invention are not limited to any particular mechanism for establishing P2P communication.
As mentioned above, in one embodiment, mobile device A and B establish Hypertext Transfer Protocol Secure (“HTTPS”) sessions to communicate with the matchmaker service 108 (e.g., using HTTPS request/response transactions) and establish UDP sockets to communicate with the CDX service. The match requestsTicket A 122, Ticket B 124 can include the NAT type and the hole punch data (e.g., the public IP address and port) previously determined for each respective mobile device. In an embodiment which involves a multi-player game, each match request can identify the player on each mobile device (e.g., using a unique player ID code), the game that each user wishes to play, the number of players to participate in the game, and/or other game configuration variables associated with the desired game. By way of example, and not limitation, the game configuration variables associated with a game may include a level of difficulty (e.g., easy, normal, difficult), a user’s age (e.g., “under 13”), a sub-region of the game (e.g., “level 2”), and/or a level of player expertise (e.g., expert, beginner, intermediate). As described in detail below, these variables are sometimes referred to as a game “bucket” and are identified using a unique “bucket ID.” Each game may include different sets of bucket IDs to identify different game configuration variables.
In one embodiment, mobile device B sends and acknowledgement 132 and 134. Similarly, mobile device A‘s acknowledgement is transmitted at 146 and 144. If mobile device A‘s or B’s acknowledgements are not received after a specified period of time, then the Connection Data 130 may be resent to mobile device B 212. Either the CDX service 104 may initiate the retry and/or mobile device A 102 may initiate the retry.
Figure 2 illustrates transactions between one embodiment of a matchmaker service.
Figure 2 illustrates a more detailed example in which three different mobile devices 102-122 negotiate for P2P connections using the CDX service and matchmaker service 108. Figure 2 also illustrates two additional services used by the mobile devices 102-122 to establish a connection: a NAT traversal service 206 for determining NAT type and a NAT traversal service 204 for determining the full connection data for each mobile device (e.g., utilizing an ICE connection data transaction). It should be noted, however, that separate services are not required to comply with the underlying principles of the invention. For example, in an alternate embodiment, the NAT traversal functions performed by each of these services 204-206 may be integrated directly within the CDX service 104 and/or matchmaker service 108. Similarly, the functions performed by the both NAT traversal services 204-206 may be integrated within a single NAT traversal service. In summary, the specific functional separation shown in Figure 2 is not required for complying with the underlying principles of the invention.
Turning now to the specific details of Figure 2, at 214, mobile device A transmits a NAT type request to the NAT traversal service 206. In response, the NAT traversal service 206 may use various known techniques including implementing a series of transactions to determine the NAT type used by mobile device A. For example, the NAT traversal service 206 may attempt to open different IP addresses and ports on mobile device A‘s NAT and communicate with mobile device A through those ports using different IP/port combinations. In this manner, the NAT employed by mobile device A may be classified as one of the NAT types described above (e.g., full cone, restricted cone, port restricted cone, symmetric) or an alternative NAT type. This information may then be provided to mobile device A 102 as illustrated.
At 210, mobile device A 102 initiates a NAT traversal request with the CDX service 104. In response, the CDX service 104 can read the public IP address and public port number used for the request and transmits this information back to mobile device A 102. As described above, if a device is behind a NAT, its public port and IP address will be different from its private port and IP address, respectively. Thus, depending on the type of NAT being used, the public IP address and port may be used to “punch a hole” through the NAT device to reach the mobile device.
At 216, mobile device A 102 transmits a match request 216 to the matchmaker service 108. As described above, in one embodiment, mobile device A communicates to the matchmaker service 108 using Hypertext Transfer Protocol Secure (“HTTPS”) sessions (e.g., using HTTPS request/response transactions). The match request can include the NAT type and the hole punch data (e.g., the public IP address and port) previously determined for mobile device A 102. In an embodiment which involves a multi-player game, the match request can identify the player on mobile device A (e.g., using a unique player ID code), the game that the user wishes to play, the number of players to participate in the game, and/or other game configuration variables associated with the desired game (as previously described with respect to Figure 1).
At 212-220 a set of transactions corresponding to transactions 214-216 are performed for mobile device B 106 and at 222-226 a set of transactions corresponding to transactions 214-216 are performed for mobile device C 122. Thus, following transaction 226, the matchmaker service 108 has received match requests for all three of the mobile devices 102-122. In this specific example, the match requests result in mobile devices 102-122 being matched for a particular collaborative session such as a multi-player game (e.g., the users of these mobile devices may have selected the same game with the same, or similar, sets of variables, thereby resulting in a match by the matchmaker service 108).
The matchmaker service 108 uses the data contained in each of the match requests to generate Ticket A, which it transmits to mobile device A at 228; Ticket B, which it transmits to mobile device B at 230; and Ticket C, which it transmits to mobile device C at 246. Although not shown in Figure 2, the matchmaker service 108 may utilize a push notification service to pushTickets A, B and C to mobile devices A, B, and C, respectively.
At 232, mobile devicemobile device A 102communicates with NAT traversal service 204 to determine its own connection data. In one embodiment, this can include a standard ICE connection data transaction. As previously mentioned, the Connection Data may include public/private IP address, port and NAT type for mobile device A 102.
Mobile device A 102 appends its connection data to Ticket A and, at 244, transmits Ticket A with the Connection Data to the CDX service 104. In one embodiment, the CDX service 104 processes Ticket A as described above and, at 234, transmits the Connection Data (which may be encrypted) to mobile device B 106 and mobile device C 122. For these transactions, the CDX service 104 can utilize the NAT traversal data for mobile devices B and C included with Ticket A.
At 236-238, a set of transactions corresponding to transactions 232-234 are performed using Ticket B and at 238-240 a set of transactions corresponding to transactions 232-234 are performed for Ticket C. Thus, following transaction 240, Connection Data has been shared between each of the mobile devices 102-122. Using the Connection Data, P2P sessions are established between mobile devices A and B, mobile devices A and C, and mobile devices A and C.
Parts List
102
mobile device A
104
CDX service
106
mobile device B
108
matchmaker service
110
undefined
112
undefined
114
undefined
116
undefined
118
undefined
120
undefined
122
undefined
124
undefined
126
undefined
128
authenticate Ticket A
130
undefined
132
undefined
134
undefined
136
authenticate Ticket B
138
undefined
140
undefined
142
undefined
144
undefined
146
undefined
202
204
NAT traversal P2P service
206
NAT traversal service
208
mobile device C
210
nat traversal r/r
212
nat type r/r
214
nat type r/r
216
match request
218
nat traversal r/r
220
match request
222
nat type r/r
224
nat traversal r/r
226
match request
228
Ticket A
230
Ticket B
232
get a conn data
234
device a conn data
236
Ticket B with conn data
238
get c conn data
240
device c conn data
242
get b conn data
244
Ticket A w/ conn data
246
Ticket C
248
device b conn data
250
p2p connections
252
Ticket C w/ conn data
Terms/Definitions
invitation requests
NAT type request
game-specific player ID codes
tokens
multi-player game
NAT traversal functions
password
unique session
authenticated multicast reflector
cases
exchanged connection data
cone
user ID
standard Internet Connectivity Establishment
response
collaborative chat session
authorized entities
invention
involve standard ICE transactions
number
CDX service
hole”
well-known RSA SecurID authentication mechanism
exemplary series
transactions
mobile device B
CDX server
one or more other computing devices
same operations
level
telephone number
mobile devices B
acknowledgements
Push Notification Application
manner
NAT traversal service
unique CDX Session ID
Ticket A
embodiment
CDX Response
ticket
directory
ICE connection data transaction
clients
their CDX Ticket
NAT types
CDX Ticket Key
single NAT traversal service
NAT device
retry
services 290
Connection Data
hole
similar, sets
particular collaborative session
two parts
sub-region
other game configuration variables
limitation
part
message
identification codes
techniques
mobile devices
ports
specific functional separation
large integer
members
HTTPS request/response transactions
same key generation algorithm
match requests
public port number
forgery or tampering
constructed Payload
stage
client device
opaque data blob
participants
push notification service
specific mobile devices and/or users
player
device
connection
different IP addresses
bucket IDs
separate services
P2P session
game
alternate embodiment
new authentication code
lieu
difficulty
P2P communication
audio/video chat session
underlying principles
public IP address
participant
players
Hole-Punch Data
two additional services
push tokens
additional matching criteria
CDX ticket keys
Hypertext Transfer Protocol Secure
mobile device
encrypted “ticket”
Ticket C
encrypted ticket
push notifications
CDX Ticket Stub
registration directory associates
matching criteria
NAT type
data structures
stateless service
UDP sockets
fixed intervals
mobile device A
their individual CDX Tickets
device B’s
invitation session
CDX Request
respective mobile device
notification service
specific details
unique ID codes
three different mobile devices 120-122 negotiate
matchmaking service
data
push token
lookup
other information identifying mobile device B
full connection data
similar transactions
specific example
invitation service
unique CDX Ticket
NAT traversal P2P service
users
group
new ticket key
same types
one particular embodiment
encrypted list
daily basis
unique player ID code
user’s
CDX Hole-Punch Request
direct P2P connection
operation
alternative NAT type
public IP address and port
requesting device
member
arbitrary data
CDX Tickets
port restricted cone
game “bucket”
current ticket key
individual session
hole punch data
NAT traversal request
Session Key
collaborative application
Apple Push Notification Service
summary
one or more other users/devices–in
new CDX ticket key
CDX Hole-Punch Data set
Peer-To-Peer Session
process
P2P connections
type
different game configuration variables
invitation request
P2P sessions
encryption/decryption–a first
next key
full cone
other data
Message Authentication Code
information
Tickets A, B and C
expiration time/date
detail
given CDX Request
additional details
communicates
particular example
index
phone numbers
P2P connection
different IP/port combinations
push
one embodiment
relay service
Ticket B
unique CDX ticket key
and B, mobile devices
push service
CDX Hole-Punch Data
invitation response
two ticket keys
ticket key
CDX Ticket
unique “bucket ID
NAT traversal data
port
matchmaker service
case
associated text
match request
IP address
client
different sets
specified period
transaction
standard ICE connection data transaction
user
particular mechanism
communication
consistency
Session ID
same game
game configuration variables
various known techniques
assignee
central registration directory
one or more users
time
match
identification code
service
registration database
example
code
addition
CDX Session
wireless devices
second part
ID code
greater detail
two (or more) different CDX ticket keys
functions
other devices
more detailed example
public IP address/port
unique Session Key
current state
tickets A, B, and C
series
embodiments
potential peers
session
NAT type data
tickets
devices
Client Device B
request
player expertise
client devices
mobile device C
public/private IP address
payload
network
mechanism
present application
one embodiment, mobile device
variables
FIGS
ticket data structure