Title of Invention

A SERVER UNIT AND A CLIENT UNIT IN A COMMUNICATION NETWORK

Abstract The real-time performance in communications networks is improved, especially between a large number of participants, by means of a server unit comprising receiving means for receiving information from at least a client unit, said information comprising at least part of the state information about a distributed interactive application, said server unit comprising: state information storing means for storing application state information received from at least one of said client unit, transmission means for forwarding the state information received from said client to at least one other node in the network, and for transmitting at least part of the information stored in said state information storing means to said at least one client. In this way the whole state of the application can be kept in one or more units in the network, which removes the need for each client to store the entire state, thereby reducing memory and banwidth requirements for each client.
Full Text FORM 2
THE PATENTS ACT 1970
[39 OF 1970]
COMPLETE SPECIFICATION
[See Section 10]
"METHOD AND APPARATUS IN A COMMUNICATION NETWORK"


TELEFONAKTIEBOLAGET LM ERICSSON [PUBL], a Swedish company, of S-126 25 Stockholm, Sweden,
The following specification particularly describes the nature of the invention and the manner in which it is to be performed:-




WQ-G&68864- -PCT/SE00/0Q93T
2
Method and Apparatus in a Communication Network
Technical Field
The present invention relates to communications networks and in particular to the
5 real-time communication between several users of an application in such a network.
Description of Related Art
Multi-user communications applications are currently being developed, for example for multi-user games. Such games may be played by a number of users connected to
10 the same LAN or even to different pans of larger networks, such as the Internet. For such applications, three main synchronization models are used: client-server synchronization, peer-to-peer synchronization or broadcast synchronization. Some multi-user games on die Internet today involve up to 100 000 players, of which several thousand may be playing at the same time. All synchronization methods used
15 today cause rather long delays. Therefore, the multi-user games played over the
Internet today are games in which the speed is not critical. For example, fast action games, such as car racing games or battle games, in which the user must react to what is happening within fractions of a second cannot be played with acceptable quality using any of the standard synchronization methods.
20
Dial-in networks typically use client-server synchronization. In this case, a server receives data from all players. It has to find out what information each player needs and send it. The central server is an obvious bottleneck in the system. Central client-server games can support 2 - 250 players. The higher number refers to servers
25 where the update rate is as low as 2 Hz. The central server adds latency both because of the increased transport distance and the processing and scheduling delay in the server. Consider e.g. a situation where the clients are on the U.S. West coast while the server is on the U.S. East coast. About 80 ms of transport latency and at least several 10 ms of processing latency are caused by the client-server mode of
30 operation.

-WO 00/68864- - PCT/SE0Q&Q932-
Therefore, client-server synchronization is not feasible for real-time applications with large numbers of players in which the delay is critical.
Peer-to-peer synchronization means that all clients send application data directly to
5 all other clients. This model is frequently used for games that are played over the
public Internet. Game developers provide a free application lobby server where players meet for setting up games and for joining ongoing games. Once a game has started it is played in the peer-to-peer mode without drawing any resources from the game developer's site.
10
Peer-to-peer synchronization has obvious scaleability problems since the network load is proportional to the square of the number of players; the client access bandwidth and CPU power requirement are proportional to the number of players. The payload in each packet is 10-40 bytes, which means that the protocol overhead
15 usually is more than 50%. Small game packets give a large protocol overhead. With header compression methods, however, this overhead can be reduced significantly. Peer-to-peer games over the Internet suffer from unpredictable delays and frequent collapses because of loss of synchronization.
20 It follows that peer-to-peer synchronization, too, is best adapted to small networks, with communication over relatively short distances and between a limited number of users.
Broadcast synchronization can be used by a limited number of players on a Local
25 Area Network (LAN) but is not suitable for larger networks.
Because of the restrictions posed i.a. by the synchronization methods, multi-
participant communications with good real-time characteristics is not possible with
current technology
30 With multicast the information that has to be transmitted in the network can be sig-
nificantly reduced, in that information only has to be transmitted once to each mul-

ticast server, instead of once to each user. Each multicast server then copies the information and transmits it to the users connected to it. A selection of the information each user needs to receive may be made. This may reduce traffic both between servers and between each server and its users. Such a solution for use in gaming is
5 disclosed in US 5 841 980,
In the system disclosed in US 5 841 980 each user only has the information related to the part of the game which is relevant to the user in the current situation, e.g. information about the geographical area he is in. If the circumstances change, for ex-
10 ample, if the user moves to another room, information that is important in the new circumstances will not be available to the user.
Object of the Invention
It is an object of the present invention to improve the real-time performance in
15 communications networks, especially for collaborative communication between a large number of participants.
Summary of the Invention
This object is achieved according to the invention by a server unit for use in a
20 communications network, said server unit comprising receiving means for receiving information from at least a first client unit, said information comprising at least part of the state information about a distributed interactive application, said server unit being characterized in that it comprises
- state information storing means for storing application state information com-
25 prised in the information received through the receiving means from at least one
of said first and second client units,
- first transmission means for forwarding the state information received from said
at least first client unit to at least one other node in the network,
- second transmission means for transmitting at least pan of the information stored
30 in said state information storing means to said at least one client unit.

WO 00/68864 5 FCT/SE 00/00937
This enables keeping the whole state of the application in one or more units in the network, which removes die need for each client to store the entire state, thereby reducing the need for memory capacity in each client and also the bandwidth needed for communication with each client. If each part of the state of the applica-
5 tion is stored in more than one network node or client, a back-up facility is achieved.
The object is also achieved according to the invention by a client unit for use in a terminal in a communications network, comprising an application software for a
10 distributed interactive application client unit being characterized in that it comprises
- at least one input means for reading an input from said terminal, said input con
stituting at least application state information for the distributed interactive appli
cation
- transmission means for transmitting application state information to an applica-
15 tion access server
- receiving means for receiving at least application state information for the distributed interactive application from said application access server
- means for displaying said state information.
20 The method and apparatus according to the invention are particularly useful for
distributed interactive applications, especially involving real-time communication.
Preferably, the receiving means of said server means is adapted to
- receive subscription information from at least said first client, said subscription
25 information identifying objects of the distributed interactive application about
which said first client wishes receive information,
- transmit information to said at least one client unit in dependence of the sub
scription information received from that client unit,
- said server unit further comprising at least one client subscription list for storing
30 said subscription information.

Accordingly, said client unit further comprises means for setting subscription information for specifying at least one object of the distributed interactive application from which available information should be received and means for transmitting said subscription information to said application access server.
5
This reduces the amount of information to be transmitted to each user, thereby reducing the transmission delay and also helping each user analyze the information, since only the most imponant information for a particular user is shown to that user. Each client is able to decide for itself what is important.
10
In a preferred embodiment, the receiving means is adapted to receive urgency information relating to said first client from at least a second client. The urgency information may be transmitted to the first client, or application state information regarding said second client may be forwarded to at least said first client in depend-
15 ence of said urgency information. The urgency information may also be used to indicate that certain application state information should not be forwarded to said first client. The urgency information may be used to change a client subscription.
In said preferred embodiment the client unit further comprises means for setting ur-
20 gency data for specifying at least one other client that should receive state information from the client as soon as possible.
Advantageously, the transmission means of the client unit for transmitting application state information is adapted to arrange information in object information pack-
25 ets, each packet relating to one object constituting part of the application, before transmitting the packets to the server unit, and said receiving means is adapted to extract information from packets received from the server unit.
The application access server system is independent of the application and can
30 therefore support a wide range of different applications.

WO-60/68864 I PCT/SE00/00932 -
Application access server units working together could communicate over a network, which preferably offers reserved or managed transmission capacity. The aggregated bandwidth requirement of an application can be estimated by the network management system and sufficient network resources can be allocated to the re-
5 served network that is connecting the application access server units. New applications are allowed only if resources are available. The network management also controls the resending and duplication policy of the application access server units. Multicasting and resource reservation protocols can be used on "the aggregated streams between the application access server units. The advantage of this system is
10 that resource reservation on the player level is not necessary. Application clients can usually handle occasional lost packets if the overall statistical performance is good. Using the application access server according to the invention means that a game client never will lose synchronization permanently since the application access server units always maintain the game state.
15
Brief Description of the Drawings
The apparatus and method according to the invention will be described in more detail in the following, with reference to the appended drawings, in which: Figure 1 illustrates an embodiment of a network according to the invention;
20 Figure 2 illustrates an application access server according to a first embodiment of the invention;
Figure 3 shows an embodiment of an application state record according to the invention; Figure 4 shows an application client according to an embodiment of the invention;
25 Figure 5 illustrates the communication stacks used according to an embodiment the invention;
Figure 6 shows a second embodiment of the application access server according to the invention; Figure 7 shows an application router used in the second embodiment of the applica-
30 don access server;

00/08864 l *PCT/SE00/00932-
Figure 8 is a schematic representation of a hierarchical structure of application access servers used in an embodiment of the invention.
Detailed Description of Embodiments
Figure 1 shows an embodiment of a communications network according to the invention. According to the invention, the network comprises at least one application access server. In Figure 1, a first 1, a second 3 and a third 5 application access server are shown, connected to each other through a network 7, for example, a reserved telecommunications network. It may also be any other type of network, however, networks in which it is not possible to reserve network resources, such as the Internet, may provide a lower quality if heavily loaded. A number of clients 11, 12, 13, 14, 15 are also connected to the network 7. A client can connect to the appropriate application access server 1, 3 or 5 in any way known in the art, as will be discussed in more detail below.
Clients can communicate with each other through the application access servers for the purpose of running a distributed interactive application, in which a large member of participants simultaneously affect and contribute to the state of the application, for example a real-time multi-user game. Between each client and the application access server to which it is connected there will usually be a low capacity connection, such as a modem connection. Between two application access servers, on the other hand, high and variable network capacities will be available. The application access servers according to the invention are therefore adapted to handle the information about the state of the application in such a way as to reduce the amount of information transmitted to each client, by transmitting to each client only the information that is most relevant to this client. Between the application access servers, the transmission capacity will not normally be a problem and therefore more information can be transmitted between application access servers.

W0 00/65864 9 PCT/SE00/00932
One or more application lobby servers 21, of a kind known per se, may also be present in the network. These servers typically comprise functions that allow the clients to register for a particular type of service, handle billing functions, etc.
5 According to the invention, the software required for the application is found in the client 11, 12, 13, 14, 15. To use the communication functions according to the invention, therefore, the user must make sure he has the application software needed. The application software may be retrieved in any way known in the art, for example, downloaded from the Internet or installed from CD-ROM. If required for the
10 application he must also register with the application lobby server. Typically, the application lobby server 21 will provide an address, usually an IP address and port number of one or more application access servers 1, 3, 5, but this address may also be obtained in any other way.
15 The user connects to an application access server in the way common in the art,
normally by entering the IP address of the application access server or a pool of application access servers. Several algorithms exist for selecting the appropriate one of a number of nodes in the network identified by the same address. The application access server receives information from the user and starts transmitting information
20 to the user, as will be described in more detail in the following. Instead of the client logging in to the application access server, the application lobby server can also transmit client network addresses to the application access servers.
The application is assumed to consist of a set of objects, which are controlled by the
25 participants. An object is an entity in the application that is controlled by a human participant or that is generated in a client and cannot be regenerated locally in each application client, e.g. controlled by a random generator or other unpredictable computing process. Application objects can be things that the participants will intuitively recognize as objects, or game figures, but they can also be background data
30 structures such as environment variables that are controlled by players. An application object is controlled by one or several players. Each object typically has a set of

WO00/68864 10 PCT/SE00/00932
properties and attributes that may be changed while the application is running. In a game these properties may be a character's strength and other capabilities, or the maximum speed of a car, and the attributes may be, for example, items collected by the character.
5
The information received from the user will normally comprise three different types of information, in addition to the signalling overhead: state information, subscription information, control data and urgency information. The state information is information about the object or objects that are controlled by the user, which should
10 . be distributed to other users of the application. The subscription information lists the client's priorities regarding different application objects provided by the application access servers. For example, information regarding a certain group of objects should be received at once it becomes available, or as often as possible, whereas information from another group of objects is not that urgent. Several priority levels
15 may be set, for example, in the form of acceptable delays or precedence in case of lack of bandwidth. The urgency information generated by a client may be used to override or change the subscriptions of another client so that the other client will receive information about objects that are not included in its subscription, or to make sure that the client does not receive certain information. All three types of in-
20 formation will be discussed in more detail below.
As an example, the application of a real-time game being played by a large number of users, will be described. Such games are played today with a limited number of players, located fairly near each other, for example in a local area network (LAN).
25 Played over a wide area network, such a game may in the future involve several thousands of players, typically distributed over a large game field, or virtual geographical area. With prior art technology this is not possible with an acceptable quality, as discussed above.
30 Each player is immediately affected only by the things that happen near him in the virtual game area. The farther away another player is. the less important changes to

WO 00/68864 11 'FCT/SE00/00932
this player will be. For example, a player may be involved in a fight with a first hostile player, a friendly player may be coming to rescue and a second hostile player may be trying to stop the friendly player. At the same time, other players will be doing.things that may become interesting at a later time, but for the time being,
5 the player's main concern is to survive the fight. Therefore, the movements of the first hostile player must be displayed immediately. The movements of the friendly player and the second hostile player should also be given a high priority, while the things happening farther away should be given a low priority. "
l0 In the example discussed above, obviously, the configuration of the players will
change so that at another time information from other players will have the highest priority, usually the players who are located near the user at any given time.
The application access server handles communication with application clients. It re-
15 ceives information about the actions of the client that affect the application state and other information. It also transmits application state information from other participants to the participants according to their subscriptions. Each application client sets subscriptions regarding which application information to receive and transmits information about these subscriptions to the application access server. The application
20 access server stores and updates a record of the subscriptions of the clients that are served by the application access server. The subscriptions of each client are used to determine which data is to be sent to this client. A client might also set subscriptions for another client. In one mode of operation, a master client might for example set the subscriptions of all other clients.
The application access server to which a client is connected is that client's local application access server, and the client is referred to as a local client of that application access server.
30 The application access server also keeps a client authority list. Each client has the right to change the state of one or more game objects. The client authority list has

WO 00/68864 12 -PCT/SEOO/00932
one entry for each client where the identifiers of the objects that are controlled by the client are stored. The application access server checks the authority each time it receives object state information from a client. The game state will be updated only if an identifier found in the information packet matches one of the numbers in the
5 entry for the client in the authority list, otherwise the information is ignored. Object state information arriving from other application access server units is not verified ;ince the sending application access server has already checked for authority.
Each application access server also communicates with other application access
10 server units, sending application state information and, optionally, aggregated subscriptions to them and receiving the same type of information from them. Usually, the information to be transmitted to the other application access servers is packaged according to an appropriate protocol and transmitted without being prioritized or sorted in any way. It would of course be possible to select the information to be
15 transmitted to each application access server in dependence of the users' subscriptions of its local clients. Aggregated subscriptions are the sum of all application object requests from clients belonging to a given application access server. For example, the application access server may use multicasting to other application access server units. This ensures that each application access server unit receives all
20 needed updates and that the game state is distributed efficiently over the application access server units.
Urgency data is set by a client if the data is important to another client but this other client is not aware of this and therefore cannot set his own subscriptions. The ur-
25 gency is therefore defined by the sending client and may be different for different receiving clients. The application access server alerts the receiving client if urgent data is waiting. The urgency information may also be used to prohibit the forwarding of certain information to one or more clients.
30 Each application access server also stores and updates a complete or partial copy of the application state. Between them, the application access server units that are allo-

WO 00/68864 PCT/SEOO/00932-
cated to a communication session must store the complete application state. In the simplest case, every application access server stores the complete application state, but it is also possible to split the information between the application access servers, with or without overlapping information. Such solutions require special software to . handle the distribution of the appropriate data to each application access server.
The application access server communicates with the application lobby server for setting up the application, adding and removing participants while the application is running and handling errors and network failures.
Figure 2 shows an application access server 50 according to an embodiment of the invention, with its functional entities. This application access server could be implemented in hardware or in software. In connection with Figure 2, only a general description is given. Appropriate formats and protocols will be discussed later.
The application access server receives data from each client in the network, and from other units, such as other application access servers, through input buffers 51. There is one input buffer for each client, remote application access server and application lobby server, although in Figure 2, for clarity, only one input buffer is shown.
The actions of each local participant are sent as payload in application object packets that arrive in the input buffer of the application access server associated with this client. These application object packets update application objects that are controlled by the participant. The application object packets are written into the application state record using-a set of insertion rules.
The data received from the clients may comprise three types of data: data about the state of the application (state data), data about the subscriptions of the client (priority data) and other control information, such as requests for time reference, status of other clients and other information from the system. The state data is passed

WO 00/68804 14 PCT/SE00/00932
through an application object packet pipeline 53, to an application state record 55. The application state record 55 keeps all the state data for all the relevant objects, as will be described in more detail in the following. The application state record also keeps the urgency data as described above. –
5- Groups of clients may be defined, said group for example comprising the participants in a working group or, in the case of a game, in die same team. In this case, subscriptions and/or urgency data may also be specified for groups of users, not only for individual users.
10 Control data, especially data that does not have to be handled in real time, such as information on added or removed application objects, is passed from the input buffer 51 to the application access server control unit 57. In a hardware implementation the control unit 57 may be a microprocessor. Control data handled by the . control unit could be related, for example, to the creation and destruction of players
15 and objects, and to groups of players and objects.
Subscriptions are passed through an application priority control protocol message pipeline 59 to a Client Priority List (CPL) 61 containing the subscriptions of each client that is supported by die application access server. The subscriptions can be
20 updated by the clients and by the application access server control unit. The control unit could decide, for example, to update the subscriptions of a client in response to an urgency message received from another client.
Several different prioritization strategies can be employed by die application clients
25 using the application access server system.
A simple method is that application clients send an enumerated list of objects to the CPL 61. In this case objects not on the list could be updated, for example, in a round-robin mode when all the objects on the list have been updated. If all objects in the list have been updated the remaining objects could be updated, for example in
30 a round robin mode. The subscriptions of a particular client comprises a list of all
objects for which a subscription has been set by this client. In addition the list stored

WO 00/68864 15 PCT/SE00/00932
in the application access server preferably comprises a flag for each object indicating if new information for the object has been received. The flag is used to determine whether or not information about a certain object needs to be sent to the client. When the information has been sent to the client, the flag is reset. When a new up-
5 date for an object is received by the application access server, the flag is set again.
The client subscriptions could also be defined with a time interval associated to each object. The client would then send a series of requests, for example of the format:
10 , , . A simple list could simply have the format , The application access server will try to send updates to the client so that each object is updated at least once during each time interval with the priority given according to the field in the request. An infinity symbol could be
l5 used so that some objects are not updated at all. A special "send only new complete object state" flag can be set. This option is used when the client wants to receive updates for the object with long intervals (several seconds). It would be wasteful to send incremental updates if the wanted time resolution is longer than the state refresh interval.
20
An output pipeline 63 receives subscription information from the client priority list 61 and uses this information to search the application state record 55 for information to be transmitted to the client in question, using an appropriate algorithm as discussed above. The selected state information passes from the application state
25 record 55 through the output pipeline 63 to an output buffer 65 and from the output buffer to the client. The control unit 57 sends control messages to clients and remote servers, for example, for the purpose of synchronizing clocks or providing latency estimates to clients.
30 Although the application access server shown in Figure 2 is shown to have only one
of each type of unit, preferably the application access server comprises one input

WO 00/68864 16 PCT/SEOO/OO932
buffer 51, one application object packet input pipeline 53, one priority message pipeline 55, and one output processing pipeline 63 and one output buffer 65 for each client,, and for each other server, etc. in the network with which the application access server exchanges information. Alternatively, a group of clients or servers,
5 could share one input buffer 51, one application object packet input pipeline 53, one priority message pipeline 55, and one output processing pipeline 63 and one output buffer 65. The application access server also comprises one client priority list 61 for each client, server, etc.
10 The data received from other application access servers comprises object state data from other clients. It may also comprise priority information from these clients, which is preferably aggregated in such a way that each object appears on the priority list only once. In this case, the information will be packaged so that there is one priority list for each application access server, that is. each application access server
15 is treated like a client. The information received from another application access server is treated in the same way as the information received from a client, except that the input and output buffers 51, 65, also have to perform certain protocol handling, as will be discussed below. Alternatively, no subscription information will be received from other application access servers, in which case all state information
20 will be transmitted to these application access servers.
The application access server may also handle optional fair play modes where all players are updated simultaneously (see below).
25 As mentioned above, one or more application lobby servers (21 in Figure 1), of a kind known per se, may be present in the network. Application lobby servers are responsible for updating the configuration data during the game providing the application access server with data such as: • IP addresses or other network addresses of new application access server units
30 that enter the game

17
• Updated lists of network addresses identifying the participants served by the application access server. This enables new participants to join an ongoing application.
• Updated lists of enumerated game objects. For each object it is specified which
| application access server is responsible for storing the state, if the state is distrib-
uted between the application access servers. It might also be specified who is authorized to update the state. This enables creation, destruction and change of control of game objects. Clients can also create and destroy game objects.
• A new complete or partial game state. This enables recovery after a pause or fail-
10 ure in the game when the application access server system has discarded the
game state.
Figure 3 shows an example of an application state record used in the application access server according to the invention:
15 The state of each application object is stored in the application state record as a set of enumerated application object states AOSl - AOS4. Each application object state consists of a series of application object packets AOP11- AOP13, AOP21-AOP24, AOP31 and AOP41-AOP42, respectively. An object packet is a container for object data. All data that is sent from an application to a remote application client or server
20 is wrapped in an application object package so that it can be handled by the application access server system.
The information received by an application access server from all other application access servers to which it is connected is used to update the application object in-
35 formation in the application state record. Preferably, there are two types of application object packet: 1) a reference application object packet comprising all current data about an object, and 2) an incremental packet comprising only information about what has changed since a time that is given by the time stamp of the APO to which the incremental packet refers. The first AOP in an AOS must be a Reference

WO 00/68864 PCT/SE00/00932
packet, which may be followed by a set of Incremental Packets, or by a reference packet. Some games will only generate reference packets.
The application state record also keeps a record of the application object packets that need to be delivered to other application access server units. This may be done using a data structure new_client_data that can be implemented as a matrix new_client_data(i, k) where each element is a flag. The parameter i is a client number and the parameter k is an application access server number. The flag is set if the application object packet should be delivered to the external application access server.
As an example of how application object states can be used to describe application objects, Figure 3 shows an application object state AOS1. This object might describe the position of a vehicle in a racing game. The position of vehicle (xl, yl) is first sent as game payload in a reference application object packet AOP11 at game time tl. To save bandwidth, the relative change in the position (Δx2, Δy2) at game time t2 is transmitted as an incremental application object packet AOP12. The incremental application object packet AOP12 points to the reference application object packet AOP11 as reference. At game time t3 a new incremental position (Δx3, Δy3) is sent in a mird application object packet AOP13. The third application object packet AOP13 has the second application object packet AOP12 as reference. After having received all three application object packets AOP11, AOP12, AOP13, the client can calculate the position of the vehicle at time t3 according to (xl+Δx2+Δx3, yl+Δy2+Δy3).
When a new reference application object packet is received for a particular object, the application state record can delete all previous packets belonging to the object and just store the new reference packet. Note that the syntax and semantics of the game payload can only be understood by the game application running on the client

19
terminal. Applications should send reference packets frequently in order to avoid long interrupts caused by lost data.
An alternative way of coding the application would be to let the third application _
.5 . .. object packet AOP13 at time t3 use the reference application object packet AOP11 as reference and state only the change of position, Sx, 5y relative to (xl, yl). This would save application access server memory since the second application object packet AOP12 at time t2 could be deleted as soon as the third application object packet AOP13 arrives. The client would now calculate the position of the vehicle at
10 time t3 according to (xl+δx3,yl+δy3). The application access server uses information in the application object packet header for determining if a previous application object packet is expired and can be deleted. In Figure 3 AOS 2 consists of four application object packets AOP21, AOP22, AOP23 and AOP24, where the first one AOP21 is a reference packet and the three following application object packets
15 AOP22, AOP23, AOP23 are incremental. The last increment has time stamp t8.
AOS 2 thus describes the state of object 2 up to game time t8. The AOS 3 in Fig. 3 consists only of one reference application object packet AOP31, which is sufficient for describing the object.
20 Before allowing a new client to sign on to the application, the application access
server may, according to a preferred embodiment, estimate the increased bandwidth needed and ensure that this bandwidth is available in the network. Methods for doing this are well known in the art. If no capacity problems are foreseen, this step will not be needed.
25
Figure 4 shows an embodiment of a computer on which a client according to the invention is running. The computer comprises a processing unit 101 in which programs are run, for example an application program 103 according to the invention. The processing unit also communicates with an application access server (not
30 shown) and possibly other units in the network, by means of communications soft-

WO 00/68864 19
ware 105. The application program 103 communicates with communication software 105 through a network application interface 107. The network application interface has functions for sending,and receiving application data from the application program.
The computer also comprises a screen 109 for displaying data about the application, for example an overview of the part of the game that is of immediate interest to the participant. For inputting data to the application, for example, the computer may have a keyboard 111, a mouse 113 and/or a joystick 115 connected to it, by means of which an object in the game may be moved, or other types of changes may be entered.
The client application 103 receives said input, processes it and displays the result of it on the screen 109, and/or by means of for example loudspeakers and/or haptic
15 display means. It also forwards application state data based on said input to the
network application interface 107, from which it is forwarded to the application access server.
Through the communications software 105 and the network application interface
20 107 the application 103 also receives application state information concerning other objects from the game access server, processes it and displays the result on the screen 105.
In this embodiment the network application interface 107 comprises two parts: an
25 application programming interface 107A and an application access interface (AAI) 107B. This solution was chosen to enable the use of a standard program module, such as Microsoft DirectPlay, for implementing the network AAI 107B, as discussed below.
30 The application access interface (AAI) 107B is a software module in the client terminal. It is an intermediate module between the network interface and the network

WO 00/68864 21 PCT/SE00/00932
API 107A. The application access interface 107B receives and terminates application object packets and control messages, and removes application object packet headers before the application object packet payload is passed to the network application interface 107. It also translates control messages and passes them to die API
5 107A or handles them directly. The AAI 107B handles functions that are required for the communication with the application access server to function but that are not implemented in the client application program. Therefore, it may not be necessary for clients that have been developed for use with an application access server according to the invention. For example, the AAI can handle the clock that places
l0 time stamps on the application object packages, if the client does not have functions for this.
In the upstream direction, AAI 107B receives messages and objects from the API 107B. Data concerning application objects from the client is transformed into the
15 application object packet format. Application object packets are transmitted over the communication link to the application access server.
The AAI 107B also generates upstream application control protocol messages, in particular, application control protocol subscription messages. The information that
20 is needed for setting up subscriptions and other application control protocol messages must be extracted from the application via the network API and from urgency list messages from the application access server.
A physical client e.g. a game console could be engaged in several games or host
25 several human players in the same game. Each physical application client can run several logical application clients where a logical application client corresponds to one instance of an application connected to one instance of the Application Access Interface. Application clients in this document correspond to a logical application client. A network address pointing to a logical application client could consist of the
30 IP address of the physical client combined with the port number of the application access interface.

WO 00/68864 PCT/SE00/00932
21
The best performance is achieved if the application access server system is considered when the application program is developed. Functions for determining subscriptions indicating the preferred order of receiving data can then be included in the application program. Messages could be. directly directed to a co-player with high urgency if it is apparent from the situation in the game that the receiving player cannot predict the high priority of the message. Consider e.g. a situation in a game where player 1 is stalking player 2. Player 2 is suddenly attacked by player 1 without having any warning. Player 2 is unable to set the correct priority for messages from player 1 but player 1 can send a high urgency message to player 2.
For developing the network API, for example, the Microsoft DirectPlay API may be used. The AAI is then needed to format the output such as ACP and AOP, and may be written as a DirectPlay service provider.
Using the Microsoft DirectPlay API .there are at least two different ways of extracting subscriptions. Note that the subscription should show the priority of the local participant for receiving updates about enumerated application objects. Application objects in this document are the same as "players" in the DirectPlay notation since DirectPlay "players" are application entities that can send and receive messages. A DirectPlay "player" can be controlled by a human player or it could be an autonomous game object.
In the first method information gained from DirectPlay's receive method is used. By setting the DPRECEIVE_FROMPLAYER flag and specifying the lpidFrom parameter appropriately, the method can retrieve the first message from the "player" that is identified by the lpidFrom parameter. This information can be used by the application access interface for making the subscription. If no message from the identified "player" was available in the DirectPlay message queue, it would be reasonable to put the identified application object at the top of the priority list.

WO 00/68864 . PCT/SE00/00932
In the second method the DirectPlay Send method is used, in which the idTo parameter identifies the "player" or player group that should receive the messages. It is reasonable to assume that "players" receiving frequent messages are associated with application objects with which the local player is presently interacting. The
5- - AAI could hence subscribe to "players" identified by the idTo parameter.
Figure 5 shows an example of the communication stacks that may be used according to the invention. One communication stack is used for the communication between a client such as the one shown in Figure 4 and an application access server.
10 The client and the application access server comprise essentially the same type of stack. In the client the uppermost layer of the stack communicates with the application access interface layer 10 of Figure 4, and in the application access server the stack communicates with an application access server software is also shown. Figure 5 also shows a communication stack for use between an application access
15 server and another unit in the network. This other unit may be, for example, another application access server, or an application lobby server. The communication stacks used conform to the OSI model.
The client communication stack communicates with the application programming
20 interface 107 in the client. The uppermost level of the stack, is the ACP/AOP layer 109. This level is handled by the application access interface 107 in Figure 4.
From the ACP/AOP layer 109 ACP/AOP packets containing information such as application object data or subscription information are delivered to a link layer 111.
25 The link protocol may be for example PPP. In the opposite direction, the ACP/AOP layer 109 removes header information from information packets received from the application access server and forwards the application state information to the client application. The ACP packets may be terminated in AAI. The subscription itself can be handled by the client itself, if it comprises functions for handling the subscrip-
30 tion.

WO 00/68864 PCT/SE00/00932
The lowest layer is a channel layer 113, comprising channel coding and the actual physical connection.
The application access server comprises essentially the same type of stack for –
5 communication with the client: a channel layer 113' corresponds to the channel
layer of the client. The channel layer 113' is connected to an AOP/ACP layer 109' through a link layer 111'.
An AOP/ACO layer 109' in the application access server communicates directly
10 with an application access server software 115 which is arranged to handle the AOP and ACP information.
The application access server can be built with interfaces to many different client link protocols. Ideally, an application access server should be able to handle any
15 link protocol, including UDP, TCP and RTP. RTP is a protocol developed specifically for the transmission of voice and video data.
The link protocol should be designed so .that the protocol overhead on the link from the application access server to the client is kept low. This can be done, for exam-
20 pie, by using an appropriate link protocol where IP/UDP/RTP is not used or by efficient IP/UDP/RTP header compression. The link layer should further minimize latency and provide information to the application access server on the properties of the link. Such information could include expected bandwidth, bit error rate and link latency.
An appropriate transport protocol, here called the application transport protocol, ATP should be used on the link but application object packets and application control packet messages could also be sent directly via the link protocol.
30 For communication between two or more application access servers, a stream of IP packets are sent from the output buffer 65 of the local application access server (see

WO 00/68864 25 PCT/SE00/00932
Figure 2) to one or more remote application access server units participating in the ongoing application. Each IP packet contains a TCP or UDP packet and the TCP or UDP payload is an Application Transport Protocol (ATP) packet.
| The uppermost protocol layer of the communication stack for communication between two application access servers is an AOP/ACP layer 117 similar to the one used in the client communication -stack. An application object packet might be quite small, that is, ~ 40 bytes or less. To make the communication between two application access servers more efficient, several application object packets are therefore
10 aggregated in an application transport protocol (ATP) layer 119. The next layer is a TCP or UDP layer 121 and the lowermost layer is an IP layer 123, both of which 121, 123 are well known in the art. From the IP layer information packets are transmitted to remote application access server units. The output buffer unit (65 in Figure 2) keeps a set of sorting buffers for collecting application object packets that
15 will be the ATP payload. The structure of these buffers depends on the distribution strategy. There might be one sorting buffer for each remote application access server.
An application object packet may include a field listing the clients that should get
20 the update. This field is translated to a list of application access server units that
should receive the application object packet. The application access server keeps a table that matches client numbers to application access server numbers. This means that all relevant application access server units eventually will get the update. The application access server units will then dispatch the application object packets to
25 their local clients. A simple optional mode of operation is that all application access server units receive all application data.
The local application access server identifies application object packets that need to be sent to remote clients via remote application access server units. The application
30 state receiver of the local application access server is therefore scanned and application object packets with the new_client_data flag set are found. An application

WO 00/68864 PCT/SE00/00932
26
object packet header comprises a recipient group field listing one or more client addresses to which the application object packet should be sent. This recipient group field is examined. Client addresses are translated to remote application access server addresses and copies of the application object packet are put into the sorting buffers
5 that correspond to the recipient application access server units. The recipient group field is modified for each application object packet copy so that only recipient clients that belong to the receiving application access server or group of application access servers remain. The new_client_data flag is reset.
10 Application Object Packets contain payload from the game application. The application access server system cannot read the internal payload format of the games. Such messages are therefore wrapped in an application object packet (AOP). The header of an AOP can be read by the application access server system. It is used for appending information that is needed for the timely delivery of the game payload,
15
In the embodiment discussed here, three non-standard protocols are used in addition to standard Internet protocols such as IP, TCP, UDP and RTP:
• Application Object Packet (AOP) is a container for game data. All data that is
sent from a game application to a remote game client or server is wrapped in an
20 AOP so that it can be handled by the application access server system.
• Application Control Protocol (ACP) is used for sending control messages. Con
trol messages are sent between application access server units, clients and appli
cation lobby servers.
• Application Transport Protocol (ATP) is used for sending aggregated game data
25 between application access server units and optionally also between application
access servers and clients.
Application Object Packets contain messages from the game application. The application access server system can not read the internal message format of the games.
30 Such messages are therefore wrapped in an application object packet (AOP). The

27
WO 00/68864 PCT/SE00/00932
header of an AOP can be read by the application access server system. It is used for appending information that is needed for the timely delivery of the game payload.
Application messages can completely define the state of an application object or
5 they can alternatively describe the application object relative to a reference state.
AOPs are therefore of two types: Reference packet (BP) and Incremental Packet
(IP).
An application object packet consists of a header followed by game specific pay-load: Header fields that may be used in the AOP include:
l0 1) Application object number
2) Time stamp showing the time in the game when the AOP was generated
3) Optional packet number. Combined with the object number and the time stamp it creates a unique identifier of the packet. Packet numbers are only used if several AOPs, belonging to the same game object, have the same time stamp.
15 4) If, for example, voice and/or video information may be transmitted, a flag showing if the packet contains this type of information may be included.
5) A flag showing if the AOP is a reference packet or an incremental packet
6) If the AOP is incremental, a pointer to the reference AOP. This pointer could consist of the time stamp and the packet number of the reference AOP. The ref-
20 erence AOP could be either a basic AOP or an incremental AOP.
7) A record describing the clients that should receive the message. This can be
done by listing the clients or use a predefined client group. The default is that all
clients receive the data. An urgency field is associated with each receiving client
or client group. This field is used for alerting the receiver if the message is ur-
25 gent-Three urgency bits would be sufficient.

WO 00/6886-4- PCT/SE00/00932
Flags that can be set in the urgency field are,
Forbidden: the AOP should not distributed to the client or client group
Fair_Play: use fair play mode (see below)
Very_Urgent: overrides client priorities
5 Urgent: client will be alerted
Normal: delivered according to client priorities
Not_Urgent: delivered by best effort
A simple format could be:
l0 client2>
Later items in the list overrides previous items. The field:
2, all Forbidden, client_3 Urgent
could e.g. mean that all clients are forbidden to receive the AOP with me exception of client number 3 that will get the AOP in the Urgent mode.
15 8) Size of payload.
The application control protocol (ACP) is used for sending control messages between game clients, application access server units and the application lobby server (ALS). An outline of ACP is provided here. Each ACP packet consists of a header
20 and a message body.
An ACP message may include the following fields:
1) ACP message type
2) Time stamp showing the time in the game when the message was generated
' 3) Size of message
4) Message body
Note that the source of the message is identified by higher protocol levels. In the
following the messages that can be transmitted using ACP will be outlined.

WO 00/68864 PCT/SE00/00932
ACP messages from client to the application access server may include the following:
• Terminate client. The, application access server management system removes the
client from all records and notifies the Application Lobby Server (ALS). The cli
ent is responsible for notifying the ALS if it is leaving the game. The ALS is re
sponsible for finalizing the contact with the terminated client e.g. by sending the
. final scores and notifying other players.
• Subscriptions
• Add game object. A new game object number is generated by the application access server and an application access server memory is allocated for receiving object state information from the client.
• Remove game object. The object is removed from all application access server memory after all clients and remote application access server units that are listed for receiving updates have received the last'update.
• Send estimated latencies for objects. This request includes a list of object numbers. The application access server responds by sending the estimated end-to-end latencies for the objects. The client application uses the estimates for latency hiding.
• Define object group. Object groups are useful for giving short names to long lists of object numbers that otherwise might have to be sent on the client link. Direct-Play handles hierarchical "player" groups so the game API will be able to provide useful group definitions. The application access server stores object group information and treats an object group as an alias for a list of objects. The message might have the format:
message type = define object group; >
• Define client group. Client groups are useful for setting short names on long lists
of client numbers that otherwise might have to be sent over the client link in
AOP fields. The application access server stores client group information and
treats a client group as an alias for a list of clients. The message might have the

WO 00/68864 PCT/SE00/00932
format.
message type = define client group
• Send time reference. This message is used for downloading a reference time from
the application access server.
5
ACP messages from the application access server to the client include the following:
• Urgency list. This message is used for alerting the client if urgent unread AOPs
are waiting. The application access server scans all unread AOPs that has the
10 present client on the AOP recipient list. The urgency list could have the format:
and so on
• Latency estimate. This consists of a set of entries according to:

15
A "don't know" symbol can be used for any field except the first.
• Confirm object group number. The application access server has received a "de
fine object group" message from a client. It confirms that a global object group
number has been allocated. The message body would include.
20 . A simple method for allocating object numbers would be: Assume that a total of N application access server units are active. Enumerate all active application access server units. If application access server number k is asked for a new object number it allocates the lowest free object number from the
25 series {k, N+k, 2N+k, 3N+k, ....}
• Confirm client group number. The application access server has received a "de
fine client group message" from a client. It confirms that a global client group
number has been allocated. The message body would include


WO 00/68864 31 PCT/3E00/00932
The same algorithm that is used for allocating global object group names could
be used for allocating client group names.
• Clock synchronization. The application access server sends a time reference ac
cording to:
5 =

Documents:

in-pct-2001-01372-mum-cancelled pages(09-05-2005).pdf

in-pct-2001-01372-mum-claims(granted)-(09-05-2005).doc

in-pct-2001-01372-mum-claims(granted)-(09-05-2005).pdf

in-pct-2001-01372-mum-correspondence(ipo)-(13-05-2005).pdf

in-pct-2001-01372-mum-correspondence1(21-02-2005).pdf

in-pct-2001-01372-mum-correspondence2(25-07-2007).pdf

in-pct-2001-01372-mum-drawing-(09-05-2005).pdf

in-pct-2001-01372-mum-form 13(05-12-2001).pdf

in-pct-2001-01372-mum-form 13(17-07-2006).pdf

in-pct-2001-01372-mum-form 19(27-04-2004).pdf

in-pct-2001-01372-mum-form 1a(21-02-2005).pdf

in-pct-2001-01372-mum-form 2(granted)-(09-05-2005).doc

in-pct-2001-01372-mum-form 2(granted)-(09-05-2005).pdf

in-pct-2001-01372-mum-form 26(19-05-2006).pdf

in-pct-2001-01372-mum-form 3(07-11-2001).pdf

in-pct-2001-01372-mum-form 3(20-07-2004).pdf

in-pct-2001-01372-mum-form 5(07-11-2000).pdf

in-pct-2001-01372-mum-power of authority(09-01-2001).pdf

in-pct-2001-01372-mum-power of authority(21-02-2005).pdf


Patent Number 217918
Indian Patent Application Number IN/PCT/2001/01372/MUM
PG Journal Number 19/2008
Publication Date 09-May-2008
Grant Date 31-Mar-2008
Date of Filing 07-Nov-2001
Name of Patentee TELEFONAKTIEBOLAGET LM ERICSSON (PUBL)
Applicant Address SE-126 25 STOCKHOLM, SWEDEN
Inventors:
# Inventor's Name Inventor's Address
1 TONI BRANDT KVARNHAGSVAGEN 135, S-145 60 NORSBORG, SWEDEN
2 HÄGGBLAD PAR Djäkneg. 9:650 S-754 23 Uppsala (SE).
3 JONSSON JONAS Hjortvägen 26 S-178 32 Ekerö (SE).
4 JÄNDEL MAGNUS Vårvägen 10 S-194 60 Upplands Väsby (SE).
5 KARLSSON KRISTER Lindhagensgatan 69 S-112 43 Stockholm (SE).
6 KARLSSON ROLAND Drakenbergsg. 3 IV S-117 21 Stockholm (SE).
PCT International Classification Number G 06 F 19/00
PCT International Application Number PCT/SE2000/000932
PCT International Filing date 2000-05-10
PCT Conventions:
# PCT Application Number Date of Convention Priority Country
1 9901694-1 1999-05-10 Sweden