PROCEDE POUR ASSURER LE TEMPS DE LATENCE DES COMMUNICATIONS ENTRE AU MOINS DEUX POINTS DE PASSAGE DE METHOD FOR ENSURING THE LATENCY TIME OF COMMUNICATIONS BETWEEN AT LEAST TWO PASSAGE POINTS
DONNEESDATA
La présente invention a pour objet un procédé pour assurer le temps de latence des communications entre au moins deux points de passage de données.The present invention relates to a method for ensuring the latency of communications between at least two data crossing points.
Dans les systèmes de traitement de données distribuées à fonctionnement en temps réel, les exigences en matière de temps de traitement obligent à prendre en compte la prédiction du temps de traitement . Les techniques de réservation de ressources offrent des solutions à ces exigences, mais dans certains cas seulement, comme on le verra ci-dessous.In real-time distributed data processing systems, the processing time requirements make it necessary to take into account the prediction of processing time. Resource reservation techniques provide solutions to these requirements, but only in some cases, as discussed below.
Le langage Java a déjà été utilisé dans les systèmes à fonctionnement en temps réel.The Java language has already been used in real-time systems.
Cependant, ce langage ne permet pas de limiter facilement les temps de latence et les temps de blocage, en particulier pour des traitements tels que le « ramassage de miettes » (However, this language does not make it possible to easily limit the latency times and the blocking times, in particular for treatments such as “crumb collection” (
« garbage collection » en anglais), les algorithmes de planification (« scheduling algorithms » en anglais) et les protocoles des processus de synchronisation. Des groupes de travail Java (« Java Consortium », « Real-Time for Java Experts Group ») ont proposé d'étendre les spécifications et les A.P.I. (Interfaces de programmation d'applications) de Java. Ces extensions permettent de mettre en oeuvre des programmes à possibilité de prédiction en Java, en fournissant des possibilités de réservation du temps de calcul, et d'autres ressources telles que le temps de ramassage des déchets. Cependant, ces extensions ne prennent pas en compte les principes de programmation distribuée inhérents à Java, et ne proposent pas de solutions à l'absence actuelle de possibilité de prédiction des caractéristiques distribuées de Java, telles que R.M.I. (« Remote Method Invocation »), E.J.B. (« Enterprise Java Beans ») et J.N.D.I. (« Java Naming and Directory Interface »). Pour limiter les effets de ces problèmes, D.Jensen a établi avec un groupe la spécification « J.S.R. 000050 Distributed Real-Time Systems » , « J.S.R. » signifiant « Java Spécification Request ». Ce groupe, ainsi que la Société SUN ont établi une nouvelle J.S.R. afin de développer les concepts liés à cette spécification. L'objectif principal de cette requête Java est d'étendre les spécifications de Java Temps-réel et de Java lui-même afin de rendre possible la prédiction du temps de traitement des programmes Java dans une communication noeud à noeud.“Garbage collection” in English, scheduling algorithms and protocols of synchronization processes. Java working groups (“Java Consortium”, “Real-Time for Java Experts Group”) have proposed to extend the specifications and the A.P.I. (Application programming interfaces) of Java. These extensions make it possible to implement programs with the possibility of prediction in Java, by providing possibilities for reserving the calculation time, and other resources such as the time for collecting waste. However, these extensions do not take into account the principles of distributed programming inherent in Java, and do not offer solutions to the current lack of possibility of predicting the distributed characteristics of Java, such as R.M.I. ("Remote Method Invocation"), E.J.B. ("Enterprise Java Beans") and J.N.D.I. ("Java Naming and Directory Interface"). To limit the effects of these problems, D. Jensen established with a group the specification "J.S.R. 000050 Distributed Real-Time Systems ”,“ J.S.R. Meaning "Java Specification Request". This group, along with the SUN Company, has established a new J.S.R. in order to develop the concepts related to this specification. The main objective of this Java request is to extend the specifications of Java Real-Time and Java itself in order to make it possible to predict the processing time of Java programs in node-to-node communication.
Par ailleurs, on connaît une plate-forme logicielle (« Framework » en anglais) de couche intermédiaire entre le système d'exploitation et les couches d'application (couche intermédiaire couramment dénommée « Middleware » en anglais, et qui sera dénommée
MW par la suite) appelé CORBA. Les programmes Java-RMI et CORBA comportent une couche MW permettant aux utilisateurs d'invoquer des opérations effectuées par des objets distribués. Un groupe de travail bien connu, dénommé O.M.G. (« Object Management Group ») a publié en Mars 1999 un standard OMG pour les applications CORBA en temps réel. En Août 2000, ce groupe publie les spécifications « Dynamic Scheduling Real-Time CORBA » étendant le standard précité afin de lui faire supporter les algorithmes de planification dynamique qui n'étaient pas pris en compte par le standard CORBA temps réel. Le but de ces spécifications est d'étendre le standard CORBA afin de faciliter sa possibilité de prédiction de bout en bout des activités d'un système distribué et de fournir un support pour la gestion des ressources de l'environnement CORBA. La faculté de prédire de bout en bout l'exécution des tâches en temps voulu n'est possible que si l'on respecte les priorités des processus entre client et serveur pour résoudre les problèmes d'accaparement de ressources (« resource contention » en anglais), si l'on limite les inversions de priorité d'utilisation de ressources et si l'on limite le temps de latence des invocations d'opérations. Mais il est clairement précisé dans cette publication que les auteurs ne proposent pas de solution permettant de limiter les temps de latence relatifs au système d'exploitation, à des applications spécifiques et surtout aux moyens de communication.Furthermore, there is a software platform (“Framework” in English) of intermediate layer between the operating system and the application layers (intermediate layer commonly called “Middleware” in English, which will be called MW thereafter) called CORBA. The Java-RMI and CORBA programs include an MW layer allowing users to invoke operations performed by distributed objects. A well-known working group, called OMG ("Object Management Group") published in March 1999 an OMG standard for CORBA applications in real time. In August 2000, this group published the "Dynamic Scheduling Real-Time CORBA" specifications extending the above-mentioned standard in order to make it support dynamic planning algorithms which were not taken into account by the CORBA real-time standard. The purpose of these specifications is to extend the CORBA standard in order to facilitate its possibility of end-to-end prediction of the activities of a distributed system and to provide support for the management of resources in the CORBA environment. The ability to predict the end-to-end execution of tasks in a timely manner is only possible if we respect the priorities of the processes between client and server to resolve resource grabbing problems ("resource contention" in English ), if we limit the resource use priority inversions and if we limit the latency time of invocations of operations. But it is clearly specified in this publication that the authors do not offer a solution making it possible to limit the latency times relating to the operating system, to specific applications and especially to the means of communication.
On connaît d'après l'article de Chao-Ju Hou , Ching Chih Han et Yao-Min Chen "Communication middleware and software for QoS control in distributed real-time environments", publié dans COMPUTER SOFTWARE AND APPLICATIONS CONFERENCE, 1997. COMPSAC '97. PROCEEDINGS, THE TWENTY FIRST ANNUAL INTERNATIONAL WASHINGTON, DC, USA 13-15 AUG. 1997, LOS ALAMITOS, CA, USA, IEEE COMPUT. SOC, US. du 13 Août 1997, pages 558 à 564, un procédé de. communication faisant appel au protocole RSNP, mais ce document n'apporte aucune solution aux problèmes qu'entraîne l'utilisation de ce protocole, et, d'autre part, ce document évoque le M.W. , mais ne l'associe ni à CORBA ni à JANA- RMI.We know from the article by Chao-Ju Hou, Ching Chih Han and Yao-Min Chen "Communication middleware and software for QoS control in distributed real-time environments", published in COMPUTER SOFTWARE AND APPLICATIONS CONFERENCE, 1997. COMPSAC ' 97. PROCEEDINGS, THE TWENTY FIRST ANNUAL INTERNATIONAL WASHINGTON, DC, USA 13-15 AUG. 1997, LOS ALAMITOS, CA, USA, IEEE COMPUT. SOC, US. of August 13, 1997, pages 558 to 564, a process of. communication using the RSNP protocol, but this document does not provide any solution to the problems caused by the use of this protocol, and, on the other hand, this document evokes WM, but does not associate it with CORBA or JANA- RMI.
La présente invention a pour objet un procédé permettant de prédire le temps de traitement de programmes, en particulier en langage Java temps réel sur plates-formes client- serveur, exécutés sur plusieurs noeuds et utilisant la méthode RMI dans la couche « MW » . De façon plus générale, la présente invention a pour objet un procédé permettant d'assurer le temps de latence des communications entre au moins deux points (noeuds) par réservation des ressources de l'infrastructure de communication dans une couche MW.
Selon l'invention, le procédé pour assurer le temjps de latence des communications entre au moins deux points de passage de données selon un protocole orienté objet Java- RMI ou CORBA, est caractérisé en ce qu'il met en oeuvre dans chaque point de passage un protocole RSNP de réservation de ressources dans la couche de Java-RMI ou CORBA, intermédiaire entre le système d'exploitation et les couches d'application , en intégrant les processus et services de réservation de ressources et les processus de communication dans la couche MW.The subject of the present invention is a method for predicting the processing time of programs, in particular in real time Java language on client-server platforms, executed on several nodes and using the RMI method in the "MW" layer. More generally, the subject of the present invention is a method for ensuring the latency of communications between at least two points (nodes) by reserving the resources of the communication infrastructure in an MW layer. According to the invention, the method for ensuring the latency time of communications between at least two data crossing points according to an object-oriented protocol Java-RMI or CORBA, is characterized in that it implements in each crossing point an RSNP resource reservation protocol in the Java-RMI or CORBA layer, intermediate between the operating system and the application layers, by integrating the resource reservation processes and services and the communication processes in the MW layer .
Selon une caractéristique de l'invention, on réalise les extensions de l'interface de la couche MW avec l'application pour lui donner l'accès aux services de réservation selon le protocole RSVP.According to a characteristic of the invention, extensions of the interface of the MW layer are carried out with the application to give it access to reservation services according to the RSVP protocol.
Selon une autre caractéristique de l'invention, on associe la réservation aux différents éléments logiciels intervenant dans la communication selon l'approche des références distantes. Les opérations associées aux références distantes comprennent les opérations de détermination de la largeur de bande à utiliser, la taille maximale des paquets de données et la taille maximale des tampons nécessaires. Le protocole RSNP assure la réservation des ressources sur le trajet compris entre deux objets distants Java-RMI ou CORBA. Chaque référence distante spécifie la répartition temporelle de ses invocations, et une réservation spécifique est faite pour chaque référence distante.According to another characteristic of the invention, the reservation is associated with the various software elements involved in the communication according to the approach of remote references. The operations associated with the remote references include the operations of determining the bandwidth to be used, the maximum size of the data packets and the maximum size of the buffers required. The RSNP protocol ensures the reservation of resources on the path between two remote Java-RMI or CORBA objects. Each remote reference specifies the time distribution of its invocations, and a specific reservation is made for each remote reference.
Ainsi, le procédé de l'invention met en oeuvre un protocole de réservation de ressources dans la couche M.W. , en intégrant les processus et services de réservation de ressources et les processus de communication dans la couche MW. Il en résulte que cette intégration rend compatibles les protocoles réalisant la communication au niveau de la couche MW et les protocoles de réservation de ressources.Thus, the method of the invention implements a resource reservation protocol in the M.W. layer, by integrating the resource reservation processes and services and the communication processes in the MW layer. As a result, this integration makes compatible the protocols carrying out the communication at the MW layer and the resource reservation protocols.
Grâce au fait que l'on réalise les extensions de l'interface de la couche MW avec l'application pour lui donner l'accès aux services de réservation, ces extensions permettent de faire la spécification des besoins en temps lorsque l'on établit la communication distante, et d'assurer un temps de réponse déterminé.Thanks to the fact that extensions are made to the interface of the MW layer with the application to give it access to reservation services, these extensions make it possible to specify the time requirements when establishing the remote communication, and to ensure a determined response time.
La présente invention sera mieux comprise à la lecture de la description détaillée d'un mode de réalisation, pris à titre d'exemple non limitatif et illustré par le dessin annexé, sur lequel :The present invention will be better understood on reading the detailed description of an embodiment, taken by way of nonlimiting example and illustrated by the appended drawing, in which:
-La figure 1 est un diagramme d'un nœud de réservation de ressources connu, etFIG. 1 is a diagram of a known resource reservation node, and
-La figure 2 est un diagramme simplifié des éléments essentiels mettant en œuvre le procédé de l'invention.
La présente invention est décrite ci-dessous en référence à l'échange de données entre deux noeuds ou plus (micro- odinateurs par exemple) reliés entre eux par un réseau tel qu'Internet et utilisant un protocole tel que Java-RMI, mais il est bien entendu qu'elle n'est pas limitée à cette seule application et à ce seul protocole, et qu'elle peut être mise en oeuvre dans d'autres applications nécessitant la transmission de données par paquets entre au moins deux points (ou noeuds) , que ce soit selon un protocole Java-RMI, ou CORBA. Ces protocoles sont décrits par exemple dans les spécifications de la Société Sun Microsystems (Java Remote Method Invocation Spécification pour JDK 1.2 ) et dans le document du groupe de travail "Object Management Group" intitulé "Real-Time CORBA 1.0 Spec, OMG Document number ptc/00-09-02", respectivement.FIG. 2 is a simplified diagram of the essential elements implementing the method of the invention. The present invention is described below with reference to the exchange of data between two or more nodes (micro-computers for example) linked together by a network such as the Internet and using a protocol such as Java-RMI, but it it is understood that it is not limited to this single application and to this single protocol, and that it can be implemented in other applications requiring the transmission of data in packets between at least two points (or nodes ), whether according to a Java-RMI protocol, or CORBA. These protocols are described for example in the specifications of the Sun Microsystems Company (Java Remote Method Invocation Specification for JDK 1.2) and in the document of the working group "Object Management Group" entitled "Real-Time CORBA 1.0 Spec, OMG Document number ptc / 00-09-02 ", respectively.
On a illustré en figure 1 le principe de mise en oeuvre d'un protocole connu de réservation de ressources via une interface API (Interface de programmation d'application). Ce protocole est principalement mis en oeuvre dans un noeud par une routine d'arrière-plan 1 (communément appelée « DAEMON »). Ce protocole est ici du type RSVP (« Resource Réservation Protocole») , bien connu en soi, par exemple d'après l'article de Zhang, S. Berson, S. Herzog et S. Jamin, intitulé "Resource ReSerVation Protocol (RSNP) - Version 1 Function Spécification ", Internet RFC 2205, 1997. La routine 1 est en liaison bidirectionnelle avec un programme 2 de contrôle de processus et un programme 3 de contrôle d'admission , ainsi qu'avec une interface 4 de réservation (RAPI) , telle que décrite par exemple dans le document de R. Braden et D. Hoffman : "RAPI - An RSNP Application Programming Interface", Internet Draft d'Août 1998 fonctionnant avec une "Windows QoS Socket Library" décrite dans le document de Y. Bernet, J. Stewart, R. Yavatkar, D. Andersen, C. Tai, B. Quinn et K. Lee , intitulé "Winsock Generic QoS Mapping (Draft)", de la Société Microsoft. Cette interface 4 est elle-même en liaison bidirectionnelle avec une application 5. La routine 1 commande un classificateur de paquets 6 et un planificateur d'envoi de paquets 7. Le classificateur 6 reçoit un flot de données 8 qu'il réarrange en paquets, et le planificateur 7 envoie ces paquets selon les possibilités du réseau par lequel ils doivent transiter. La plupart des fonctions de l'API 4 utilisent en tant que paramètre d'entrée un descripteur de session. Une session est produite dans le noeud émetteur, et le noeud récepteur identifie les adresses « socket » des paquets de la session (les adresses J-P et le numéro de port du récepteur) . L'interface 4 doit être utilisée conjointement avec une interface API de « socket ». Les descripteurs de fichiers de « socket », qui fournissent les fonctions de « socket »
( bound », « accept » et « connect » ) sont utilisés pour créer des sessions de réservation de l'interface 4 .The principle of implementing a known protocol for reserving resources via an API (Application Programming Interface) has been illustrated in FIG. 1. This protocol is mainly implemented in a node by a background routine 1 (commonly called "DAEMON"). This protocol is here of the RSVP type ("Resource Reservation Protocol"), well known per se, for example according to the article by Zhang, S. Berson, S. Herzog and S. Jamin, entitled "Resource ReSerVation Protocol (RSNP ) - Version 1 Function Specification ", Internet RFC 2205, 1997. Routine 1 is in bidirectional connection with a process control program 2 and an admission control program 3, as well as with a reservation interface 4 (LPR) ), as described for example in the document by R. Braden and D. Hoffman: "RAPI - An RSNP Application Programming Interface", Internet Draft of August 1998 operating with a "Windows QoS Socket Library" described in the document by Y Bernet, J. Stewart, R. Yavatkar, D. Andersen, C. Tai, B. Quinn and K. Lee, entitled "Winsock Generic QoS Mapping (Draft)", from Microsoft. This interface 4 is itself in two-way connection with an application 5. The routine 1 controls a packet classifier 6 and a packet sending scheduler 7. The classifier 6 receives a stream of data 8 which it rearranges into packets, and the scheduler 7 sends these packets according to the possibilities of the network through which they must transit. Most API 4 functions use a session descriptor as an input parameter. A session is produced in the sending node, and the receiving node identifies the "socket" addresses of the session packets (the JP addresses and the port number of the receiver). Interface 4 must be used in conjunction with a “socket” API interface. "Socket" file descriptors, which provide "socket" functions (bound "," accept "and" connect ") are used to create reservation sessions for interface 4.
La routine 1 communique avec les routines des routeurs inclus sur le trajet de la session, et toutes ces routines assurent ensemble la réservation des ressources indiquées par l'émetteur et le récepteur. Les objets de la réservation permettent de spécifier le débit des grappes de jetons (« token bucket » en anglais), la profondeur de ces grappes, le débit maximal et la dimension maximale des grappes. Dans le processus de réservation, la caractérisation du flux de données décrit la qualité désirée de service. Le paramètre « qualité de service garantie » assure que les paquets de données vont arriver à destination dans le temps imparti garanti et ne seront pas rejetés s'il y avait des débordements dans les files d'attente. Ce paramètre caractérise la largeur de bande maximale pour une transmission de bout en bout sur le trajet des données. L'application du récepteur fournit une spécification de filtre indiquant aux routeurs intermédiaires à services de réservation quels émetteurs doivent faire partie du processus de réservation. Ainsi, les applications du récepteur peuvent rattacher la qualité de service correspondante aux seules données provenant des applications de l'émetteur.Routine 1 communicates with the routines of the routers included in the session path, and all these routines together ensure the reservation of the resources indicated by the transmitter and the receiver. The objects of the reservation make it possible to specify the speed of the token bucket, the depth of these clusters, the maximum flow and the maximum dimension of the clusters. In the reservation process, the characterization of the data flow describes the desired quality of service. The “guaranteed quality of service” parameter ensures that the data packets will arrive at their destination within the guaranteed time limit and will not be rejected if there were overflows in the queues. This parameter characterizes the maximum bandwidth for end-to-end transmission on the data path. The receiver application provides a filter specification telling intermediary routers to reservation services which transmitters should be part of the reservation process. Thus, the applications of the receiver can relate the corresponding quality of service to the only data coming from the applications of the transmitter.
Dans le diagramme de noeud (émetteur ou récepteur) de la figure 2, on a indiqué les principaux composants logiques intervenant dans un processus de réservation de ressources conforme à l'invention. Les couches de ce noeud sont : l'application 9, la couche MW 10, et le système d'exploitation 11. L'application 9 communique avec la couche 10 par l'intermédiaire d'une interface API de communication 12 et lui envoie ses requêtes de réservation via une interface API de réservation 13.In the node diagram (transmitter or receiver) of FIG. 2, the main logic components involved in a resource reservation process in accordance with the invention have been indicated. The layers of this node are: the application 9, the MW layer 10, and the operating system 11. The application 9 communicates with the layer 10 via a communication API interface 12 and sends it its reservation requests via a reservation API 13.
La couche 10 communique avec la routine de protocole de communication 14 du système d'exploitation 11. D'autre part, une routine RSVP de réservation de ressources 15 de la couche 10 communique avec une routine de protocole de réservation 16 du système d'exploitation 11. De cette façon, la routine 16 du système d'exploitation n'a pas besoin d'être adaptée à chaque nouvelle application, et elle peut donc être une routine standard. Seule la routine 15 est spécifique de la couche MW 10, mais comme elle est située dans la couche MW 10, elle est adaptable à chaque application, car la couche 10 est bien plus facile à modifier que le système d'exploitation. Dans l'exemple décrit ici, la couche 10 est une couche Java-RMI, mais pourrait être de type CORBA .Layer 10 communicates with the communication protocol routine 14 of the operating system 11. On the other hand, an RSVP resource reservation routine 15 of layer 10 communicates with a reservation protocol routine 16 of the operating system 11. In this way, the routine 16 of the operating system does not need to be adapted to each new application, and it can therefore be a standard routine. Only routine 15 is specific to the MW layer 10, but since it is located in the MW layer 10, it is adaptable to each application, since the layer 10 is much easier to modify than the operating system. In the example described here, layer 10 is a Java-RMI layer, but could be of CORBA type.
Le but de l'invention est de mettre en oeuvre des logiciels distribués Java (ou similaire) produisant des processus d'invocation distante et des réponses en un temps limité que l'on peut prédire. Les protocoles de réservation fournissent un support
permettant de limiter le temps de transit au cours de communications. Ces protocoles ont deux types différents de sessions : sessions d'invocations associées à l'invocation distante et sessions de réponses associées aux réponses aux invocations distantes.The object of the invention is to implement distributed Java software (or similar) producing remote invocation processes and responses in a limited time which can be predicted. Reservation protocols provide support allowing to limit the transit time during communications. These protocols have two different types of sessions: invocation sessions associated with remote invocation and response sessions associated with responses to remote invocations.
Différentes solutions peuvent associer la réservation aux différents éléments logiciels. Selon un aspect préféré de l'invention, cette association se fait selon l'approche des références distantes. Dans ces cas, chaque référence distante spécifie la répartition temporelle de ses invocations, et une réservation spécifique est faite pour chaque référence distante. Selon l'invention, les références distantes Java identifient l'émetteur de la réservation à l'origine de la session d'invocation, et le serveur en fait autant pour les sessions de réponse. La référence distante est associée à deux sessions de réservation. Deux références distantes différentes, faisant partie du même objet ou machine virtuelle peuvent référencer le même serveur et peuvent être associées à des réservations distantes.Different solutions can associate the reservation with different software elements. According to a preferred aspect of the invention, this association is made according to the approach of remote references. In these cases, each remote reference specifies the temporal distribution of its invocations, and a specific reservation is made for each remote reference. According to the invention, the Java remote references identify the sender of the reservation at the origin of the invocation session, and the server does the same for the response sessions. The remote reference is associated with two reservation sessions. Two different remote references, belonging to the same object or virtual machine can reference the same server and can be associated with remote reservations.
Parmi les autres solutions possibles d'association de réservation, on peut d'abord noter l'approche « objet client » , selon laquelle le client spécifie la distribution temporelle de ses invocations distantes pour chaque serveur. Selon l'invention, on associe alors l'objet client à l'émetteur des sessions d'invocation et au récepteur des sessions de. retour. Du côté client, on associe deux sessions de réservation à chaque serveur utilisé. Cette solution réserve des ressources pour chaque communication d'un client à un serveur.Among the other possible reservation association solutions, we can first note the "client object" approach, according to which the client specifies the time distribution of its remote invocations for each server. According to the invention, the client object is then associated with the transmitter of the invocation sessions and with the receiver of the sessions. return. On the client side, two reservation sessions are associated with each server used. This solution reserves resources for each communication from a client to a server.
Une autre approche pouvant être mise en oeuvre par l'invention dans le cas de l'utilisation du langage Java. Cette approche est celle de la machine Java , selon laquelle la machine virtuelle spécifie la distribution temporelle des ses invocations distantes pour chaque serveur. Selon l'invention, on associe la machine virtuelle client à l'émetteur des sessions d'invocation et au récepteur des sessions de réponse. On associe à la machine virtuelle deux sessions de réservation pour chaque serveur distant. Cette solution permet de réserver des ressources à chaque communication entre une machine client et un serveur.Another approach that can be implemented by the invention in the case of the use of the Java language. This approach is that of the Java machine, according to which the virtual machine specifies the time distribution of its remote invocations for each server. According to the invention, the client virtual machine is associated with the transmitter of the invocation sessions and the receiver of the response sessions. We associate to the virtual machine two reservation sessions for each remote server. This solution allows resources to be reserved for each communication between a client machine and a server.
Comme précisé ci-dessus, la solution préférée de l'invention est l'approcheAs stated above, the preferred solution of the invention is the approach
« références distantes » parce qu'elle permet à différentes tâches (« threads ») d'établir leur propre réservation, et ainsi de pouvoir encapsuler leur propre réservation, ce qui évite les effets de concurrence que peuvent produire les autres solutions. En effet, selon la deuxième et la troisième approches décrites ci-dessus, une deuxième tâche peut modifier la réservation d'une première tâche, ce qui va en changer le temps de réponse. Dans ces deux dernières solutions, les tâches doivent approuver leur temps de réservation. Selon la première approche, la référence peut être une variable locale de la tâche, et la réservation est fixe au sein de la tâche.
Dans la première approche, le serveur et les références négocient la réservation à partir d'un ensemble Java-Réservation qui est une extension de l'interface API de Java- RMI.. Ces extensions permettent l'identification des méthodes qui seront invoquées par la référence vers le serveur , ainsi que la distribution temporelle des invocations. Un autre type de réservation est la réservation simple, selon laquelle les références établissent la largeur de bande des sessions d'invocation et de réponse. La deuxième approche est intéressante lorsque la taille de l'ensemble des invocations et des réponses ne peut pas être évaluée statistiquement.“Remote references” because it allows different tasks (“threads”) to establish their own reservation, and thus to be able to encapsulate their own reservation, which avoids the effects of competition that other solutions can produce. In fact, according to the second and third approaches described above, a second task can modify the reservation of a first task, which will change the response time. In the latter two solutions, the tasks must approve their reservation time. According to the first approach, the reference can be a local variable of the task, and the reservation is fixed within the task. In the first approach, the server and the references negotiate the reservation from a Java-Reservation set which is an extension of the Java-RMI API interface. These extensions allow the identification of the methods which will be invoked by the reference to the server, as well as the temporal distribution of the invocations. Another type of reservation is simple reservation, whereby the references establish the bandwidth of the invocation and response sessions. The second approach is interesting when the size of the set of invocations and responses cannot be statistically evaluated.
La méthode d'invocation RMI peut être mise en œuvre avec l'outil JDK (« Java Development Kit »), dans sa version 1.2 par exemple. Cependant, cette mise en œuvre pose plusieurs problèmes que l'invention résout de la façon décrite ci -dessous, dans le cas de l'approche des références distantes.The RMI invocation method can be implemented with the JDK tool (“Java Development Kit”), in version 1.2 for example. However, this implementation poses several problems which the invention solves in the manner described below, in the case of the approach of remote references.
Lorsque deux tâches utilisent en parallèle la même référence distante, elles utilisent deux connexions différentes, et donc deux « sockets » différents. Ceci peut également se produire lorsque l'on utilise deux rappels (« callbacks » en anglais) de type RMI, et si le client rappelle le serveur à partir du rappel client, alors que le premier rappel n'est pas encore fini. Dans ce cas, la procédure RMI utilise deux « sockets » pour faire communiquer la même référence avec le même serveur. Ce procédé présente des incompatibilités avec l'approche des sessions de réservation par les interfaces API, et avec les trois approches décrites ci-dessus (association de la réservation aux différents éléments logiciels). En effet, le protocole RSNP est « orienté sessions », alors que l'implémentation JDK 1.2 est « orientée connexions ». L'implémentation JDK 1.2 utilise un nombre non limité de « sockets » pour chaque référence, tandis que les réservations sont associées à des sessions RSNP qui ne requièrent qu'un seul « socket ». Pour résoudre ce problème, l'invention propose la solution suivante, valable dans le cas de l'utilisation de Java-RMI, avec l'outil JDK 1.2. Les sessions de réservation associées aux communications entre références distantes et serveur nécessitent un seul « socket » pour toutes les invocations. L'outil JDK 1.2 utilise (ou réutilise) une connexion pour l'invocation , et un « socket » est associé à chaque connexion. L'implémentation JDK 1.2 ne permet pas d'utiliser la même connexion en parallèle pour deux invocations, sinon cela produirait des conditions de concurrence pendant les séquences d'envoi de données d'appel (« marshalling » en anglais) et la création d'appels distants. L'approche « orientée connexion » permet d'associer les réponses aux invocations (les valeurs retournées sont envoyées en utilisant la même connexion que pour
l'invocation), ce qui peut être à l'origine d'une autre condition de concurrence si l'on ne respecte pas la solution présente. Le protocole JRMP (voir l'article de SUN MICROSYSTEMS : « Java Remote Method Invocation Spécification » paru en Octobre 1998) assure des possibilités de multiplexage. Leur but est de fournir un modèle dans lequel deux points terminaux peuvent ouvrir chacun des connexions multiples en duplex intégral avec l'autre point dans un environnement dans lequel seulement l'un des points terminaux est capable d'ouvrir une telle connexion bidirectionnelle en utilisant d'autres possibilités. Dans le cas présent, on utilise les facultés de multiplexage de l'invocation RMI pour réutiliser le même « socket » pour toutes les méthodes d'invocation de la même référence, et la session de réservation est générée avec ce « socket ». L'outil JDK 1.2 reconnaît l'arrivée de paquets multiplexes dans la tâche de transport (« TCPTransport ») et produit un canal TCP multiplexe pour acheminer ces paquets. Cependant, cet outil ne permet pas de configurer le multiplexage client et l'implémentation côté récepteur entraîne des temps de blocage non limités : l'implémentation fait appel à des instructions « wait » d'attente et inclut des tâches nouvelles qui ne limitent pas les temps de blocage. Il faut alors adapter les classes serveur de l'outil JDK, comme du côté client. Un autre problème lié à JDK 1.2 est le suivant. L'adresse de « socket » est encapsulée dans le sous-système JDK. Cette information est pourtant nécessaire pour créer des sessions de réservation. Si l'on crée une nouvelle couche (couche de réservation), le couches des références et de transport doivent inclure des fonctions nouvelles. L'invention propose de modifier l'implémentation de JDK 1.2 pour que le « socket » soit associé à la référence distante en utilisant les extensions ayant servi à la construction des sessions de réservation.When two tasks use the same remote reference in parallel, they use two different connections, and therefore two different "sockets". This can also occur when two callbacks (RMI) are used, and if the client calls the server from the client callback, when the first callback is not yet finished. In this case, the RMI procedure uses two "sockets" to communicate the same reference with the same server. This process has incompatibilities with the approach of reservation sessions by API interfaces, and with the three approaches described above (association of the reservation with the different software elements). Indeed, the RSNP protocol is “session oriented”, while the JDK 1.2 implementation is “connection oriented”. The JDK 1.2 implementation uses an unlimited number of "sockets" for each reference, while reservations are associated with RSNP sessions which require only one "socket". To solve this problem, the invention proposes the following solution, valid in the case of the use of Java-RMI, with the JDK 1.2 tool. The reservation sessions associated with communications between remote references and the server require a single "socket" for all invocations. The JDK 1.2 tool uses (or reuses) a connection for invocation, and a "socket" is associated with each connection. The JDK 1.2 implementation does not allow the same parallel connection to be used for two invocations, otherwise this would produce conditions of competition during the sequences of sending of call data ("marshalling" in English) and the creation of remote calls. The “connection-oriented” approach makes it possible to associate responses with invocations (the returned values are sent using the same connection as for the invocation), which can be the source of another condition of competition if the present solution is not respected. The JRMP protocol (see the article by SUN MICROSYSTEMS: "Java Remote Method Invocation Specification" published in October 1998) provides multiplexing possibilities. Their purpose is to provide a model in which two endpoints can each open multiple full duplex connections with the other point in an environment in which only one of the endpoints is capable of opening such a two-way connection using d other possibilities. In this case, we use the multiplexing capabilities of the RMI invocation to reuse the same "socket" for all the methods of invoking the same reference, and the reservation session is generated with this "socket". The JDK 1.2 tool recognizes the arrival of multiplexed packets in the transport task (“TCPTransport”) and produces a multiplexed TCP channel to route these packets. However, this tool does not allow client multiplexing to be configured and the receiver-side implementation results in unrestricted blocking times: the implementation calls for wait wait instructions and includes new tasks which do not limit the blocking time. It is then necessary to adapt the server classes of the JDK tool, as on the client side. Another problem with JDK 1.2 is as follows. The "socket" address is encapsulated in the JDK subsystem. This information is however necessary to create reservation sessions. If a new layer (reservation layer) is created, the reference and transport layers must include new functions. The invention proposes to modify the implementation of JDK 1.2 so that the "socket" is associated with the remote reference by using the extensions that were used to build the reservation sessions.
Ces problèmes et leurs solutions sont décrits dans l'article de Miguel A. de Miguel paru dans "Proceedings of ISORC 2001 (Mai 2001) et intitulé "Solutions to make Java RMI Time Predictable" .
These problems and their solutions are described in the article by Miguel A. de Miguel published in "Proceedings of ISORC 2001 (May 2001) and entitled" Solutions to make Java RMI Time Predictable ".