ES2488672T3 - Integridad de un flujo de mensajes - Google Patents

Integridad de un flujo de mensajes Download PDF

Info

Publication number
ES2488672T3
ES2488672T3 ES12758719.4T ES12758719T ES2488672T3 ES 2488672 T3 ES2488672 T3 ES 2488672T3 ES 12758719 T ES12758719 T ES 12758719T ES 2488672 T3 ES2488672 T3 ES 2488672T3
Authority
ES
Spain
Prior art keywords
message
data
heartbeat
data message
sent
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES12758719.4T
Other languages
English (en)
Inventor
Erica Joan Grant Bradnick
Leslie Michael Brody
Scott F. Singer
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Trading Technologies International Inc
Original Assignee
Trading Technologies International Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Trading Technologies International Inc filed Critical Trading Technologies International Inc
Application granted granted Critical
Publication of ES2488672T3 publication Critical patent/ES2488672T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/06Asset management; Financial planning or analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1642Formats specially adapted for sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0823Errors, e.g. transmission errors
    • H04L43/0847Transmission error
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Development Economics (AREA)
  • Technology Law (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • Operations Research (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Game Theory and Decision Science (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)
  • Communication Control (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Un método que incluye: enviar, mediante un dispositivo informático (100), un primer mensaje de datos, en el que el primer mensaje de datos incluye un número de secuencia de primer mensaje de datos con un valor de un número de secuencia inicial predefinido, en el que el primer mensaje de datos incluye un número de fase de primer mensaje de datos; enviar, mediante el dispositivo informático, un primer mensaje de latido de corazón, en el que el primer mensaje de latido de corazón se envía en un primer intervalo de tiempo después de enviarse el primer mensaje de datos, en el que el primer mensaje de latido de corazón incluye un número de fase de primer mensaje de latido de corazón, y el número de fase de primer mensaje de latido de corazón es el mismo que el número de fase de primer mensaje de datos; enviar, mediante el dispositivo informático, un primer mensaje de parada, en el que el primer mensaje de parada incluye un número de fase de mensaje de parada, en el que el número de fase de mensaje de parada es el mismo que el número de fase de primer mensaje de datos; y enviar, mediante el dispositivo informático, un segundo mensaje de datos, en el que el segundo mensaje de datos se envía después del primer mensaje de parada, en el que el segundo mensaje de datos incluye un número de secuencia de segundo mensaje de datos con un valor del número de secuencia inicial predefinido, en el que el segundo mensaje de datos incluye un número de fase de segundo mensaje de datos, en el que el número de fase de segundo mensaje de datos es diferente del número de fase de primer mensaje de datos.

Description

E12758719
04-08-2014
DESCRIPCIÓN
Integridad de un flujo de mensajes
5 Antecedentes
Los mensajes que se transmiten a través de una red, de un dispositivo a otro, contienen habitualmente contenido que se extrae cuando se reciben en un dispositivo de destino. Posteriormente se llevan a cabo varias acciones de procesamiento en función del contenido.
Puesto que los eventos dependen del contenido del mensaje, es deseable mantener la integridad del flujo de mensajes (véase, por ejemplo, el documento US 6.389.016 B1). En particular, la capacidad de detectar mensajes perdidos y conseguir una reducción en los datos del flujo de mensajes es particularmente beneficioso. Un área de aplicación en la que tal detección de mensajes perdidos y tal reducción en los datos de flujo de mensajes es
15 particularmente relevante es el campo de las transacciones electrónicas.
Breve descripción de los dibujos
Se describen determinadas realizaciones con referencia a los siguientes dibujos. La figura 1 ilustra un diagrama de bloques de un dispositivo informático según determinadas realizaciones. La figura 2A ilustra mensajes de ejemplo que usan una técnica de “latido de corazón” (heartbeat) con intervalos fijos.
25 La figura 2B ilustra mensajes de ejemplo que usan una técnica de latido de corazón con intervalos crecientes. La figura 2C ilustra un diagrama de flujo de un método de ejemplo para enviar mensajes según las figuras 2A y 2B. La figura 2D ilustra un diagrama de flujo de un método de ejemplo para recibir mensajes según las figuras 2A y 2B. La figura 3A ilustra mensajes de ejemplo que utilizan una técnica de latido de corazón con intervalos crecientes. La figura 3B ilustra mensajes de ejemplo que utilizan una técnica de mensajes de parada.
35 Las figuras 3C a 3D ilustran mensajes de ejemplo que usan mensajes de parada. La figura 3E ilustra mensajes de ejemplo que usan mensajes de parada y borrado de flujo mensajes. Las figuras 3F a 3H ilustran mensajes de ejemplo que usan mensajes de parada, borrado de flujo de mensajes y
números de fase. La figura 4 ilustra un diagrama de flujo de un método de ejemplo para enviar mensajes usando números de fase según determinadas realizaciones.
45 La figura 5 ilustra un diagrama de flujo de un método de ejemplo para recibir mensajes usando números de fase según determinadas realizaciones. La figura 6 ilustra un diagrama de bloques de un dispositivo emisor de ejemplo según determinadas realizaciones. La figura 7 ilustra un diagrama de bloques de un dispositivo receptor de ejemplo según determinadas realizaciones. La figura 8 ilustra un diagrama de bloques de un sistema de transacciones electrónicas en el que pueden utilizarse
determinadas realizaciones. 55 La figura 9 ilustra un diagrama de bloques de un sistema de transacciones electrónicas de ejemplo de la figura 8. Ciertas realizaciones se entenderán mejor cuando se lean junto con los dibujos proporcionados, que ilustran ejemplos. Sin embargo, debe entenderse que las realizaciones no están limitadas a las disposiciones e instrumentos mostrados en los dibujos adjuntos.
Descripción detallada
Un flujo de mensajes es un canal de comunicación lógico para mensajes relacionados. La detección de mensajes perdidos, en particular de mensajes que contienen datos, mejora la integridad del flujo de mensajes. Si se pierde un 65 mensaje pueden llevarse a cabo varias acciones, tales como solicitar la retransmisión del mensaje perdido, interrumpir o reiniciar el flujo de mensajes, crear una entrada en un archivo de registro, proporcionar un mensaje de
E12758719
04-08-2014
error, generar una interrupción, informar acerca del mensaje perdido a una aplicación o protocolo de mayor nivel que procese los datos recibidos, abortar la ejecución de un programa, notificar a uno o más usuarios de que se ha perdido un mensaje, finalizar el flujo de mensajes y establecer un nuevo flujo de mensajes, revocar y volver a adquirir una licencia, volver a autenticarse con un servidor y/o volver a descargar un conjunto de datos completo.
5 Además, la información de estado debe almacenarse para mantener un flujo de mensajes y la integridad del flujo de mensajes. La información de estado puede almacenarse en el emisor y el receptor, así como en dispositivos intermedios. Esta información de estado puede consumir recursos limitados, tales como memoria. Por tanto, es deseable reducir la información de estado que debe almacenarse para los flujos de mensajes.
Para detectar mensajes perdidos, algunos sistemas actuales usan un número de secuencia o identificador de mensaje que se incrementa en una cantidad predeterminada para cada mensaje, de manera que un destinatario puede determinar el orden en que se enviaron los mensajes y si se perdió algún mensaje. Sin embargo, cuando los mensajes se envían con poca frecuencia, puede haber un retardo inaceptable antes de que se detecte un mensaje
15 perdido.
Algunos sistemas actuales utilizan mensajes de latido de corazón para aumentar la probabilidad de detectar mensajes perdidos. Los mensajes de latido de corazón pueden enviarse a intervalos fijos para detectar un mensaje perdido en una cantidad de tiempo razonable. Sin embargo, el envío de un gran número de mensajes de latido de corazón puede usar de manera ineficaz un ancho de banda de red limitado y/o aumentar la latencia para la difusión de otros mensajes de datos en la red.
Las realizaciones desveladas se refieren a técnicas para mejorar la integridad de los flujos de mensajes detectando mensajes perdidos y reduciendo la información de estado almacenada para flujos de mensajes. En algunas
25 realizaciones se usa una técnica de latido de corazón con intervalos crecientes para aumentar la probabilidad de detectar mensajes perdidos reduciendo a su vez el tráfico de red provocado por los mensajes de latido de corazón. En algunas realizaciones se implementa una técnica de mensaje de parada para aumentar la probabilidad de detectar mensajes perdidos reduciendo a su vez un tráfico de red excesivo no formado por datos. En algunas realizaciones se implementa una técnica de borrado de estado de flujo de mensajes para reducir la información de estado almacenada para los flujos de mensajes y, por tanto, el uso de memoria. En algunas realizaciones se implementa una técnica de número de fase para aumentar la probabilidad de detectar mensajes perdidos. La invención está definida por las reivindicaciones adjuntas. Realizaciones que no están dentro del alcance de las reivindicaciones son útiles para entender la invención.
35 Aunque lo siguiente desvela realizaciones que incluyen, entre otros componentes, software ejecutado en hardware, debe observarse que las realizaciones son simplemente ilustrativas y no deben considerarse limitativas. Por ejemplo, se contempla que algunos o todos estos componentes de hardware y software puedan realizarse exclusivamente en hardware, exclusivamente en software, exclusivamente en firmware o en cualquier combinación de hardware, software y/o firmware. Por consiguiente, las realizaciones desveladas pueden implementarse de otras maneras.
I. Breve descripción
Determinadas realizaciones proporcionan un método que incluye enviar, mediante un dispositivo informático, un primer mensaje de datos; enviar, mediante el dispositivo informático, un primer mensaje de parada; y enviar,
45 mediante el dispositivo informático, un segundo mensaje de datos. El primer mensaje de datos incluye un número de secuencia de primer mensaje de datos con un valor de un número de secuencia inicial predefinido. El primer mensaje de datos incluye un número de fase de primer mensaje de datos. El primer mensaje de parada incluye un número de fase de mensaje de parada. El número de fase de mensaje de parada es el mismo que el número de fase de primer mensaje de datos. El segundo mensaje de datos se envía después del primer mensaje de parada. El segundo mensaje de datos incluye un número de secuencia de segundo mensaje de datos con un valor del número de secuencia inicial predefinido. El segundo mensaje de datos incluye un número de fase de segundo mensaje de datos. El número de fase de segundo mensaje de datos es diferente del número de fase de primer mensaje de datos. En algunas realizaciones, el primer mensaje de datos y el segundo mensaje de datos pueden incluir datos relacionados con una orden para un objeto negociable.
55 Determinadas realizaciones proporcionan un medio de almacenamiento tangible legible por ordenador que incluye instrucciones que, cuando se ejecutan, hacen que un dispositivo informático al menos envíe un primer mensaje de datos; envíe un primer mensaje de parada; y envíe un segundo mensaje de datos. El primer mensaje de datos incluye un número de secuencia de primer mensaje de datos con un valor de un número de secuencia inicial predefinido. El primer mensaje de datos incluye un número de fase de primer mensaje de datos. El primer mensaje de parada incluye un número de fase de mensaje de parada. El número de fase de mensaje de parada es el mismo que el número de fase de primer mensaje de datos. El segundo mensaje de datos se envía después del primer mensaje de parada. El segundo mensaje de datos incluye un número de secuencia de segundo mensaje de datos con un valor del número de secuencia inicial predefinido. El segundo mensaje de datos incluye un número de fase
65 de segundo mensaje de datos. El número de fase de segundo mensaje de datos es diferente del número de fase de primer mensaje de datos. En algunas realizaciones, el primer mensaje de datos y el segundo mensaje de datos
E12758719
04-08-2014
pueden incluir datos relacionados con una orden para un objeto negociable.
Determinadas realizaciones proporcionan un sistema que incluye un emisor de primer mensaje de datos para enviar un primer mensaje de datos; un emisor de primer mensaje de parada para enviar un primer mensaje de parada; y un 5 emisor de segundo mensaje de datos para enviar un segundo mensaje de datos. El primer mensaje de datos incluye un número de secuencia de primer mensaje de datos con un valor de un número de secuencia inicial predefinido. El primer mensaje de datos incluye un número de fase de primer mensaje de datos. El primer mensaje de parada incluye un número de fase de mensaje de parada. El número de fase de mensaje de parada es el mismo que el número de fase de primer mensaje de datos. El segundo mensaje de datos se envía después del primer mensaje de
10 parada. El segundo mensaje de datos incluye un número de secuencia de segundo mensaje de datos con un valor del número de secuencia inicial predefinido. El segundo mensaje de datos incluye un número de fase de segundo mensaje de datos. El número de fase de segundo mensaje de datos es diferente del número de fase de primer mensaje de datos. En algunas realizaciones, el primer mensaje de datos y el segundo mensaje de datos pueden incluir datos relacionados con una orden para un objeto negociable.
15 Determinadas realizaciones proporcionan un sistema que incluye un generador de números de fase para proporcionar un número de fase para un mensaje; un generador de números de secuencia para proporcionar un número de secuencia para el mensaje; un emisor de primer mensaje de datos para enviar un primer mensaje de datos; un emisor de primer mensaje de parada para enviar un primer mensaje de parada; y un emisor de segundo
20 mensaje de datos para enviar un segundo mensaje de datos. El primer mensaje de datos incluye un número de secuencia de primer mensaje de datos proporcionado por el generador de números de secuencia con un valor de un número de secuencia inicial predefinido. El primer mensaje de datos incluye un número de fase de primer mensaje de datos proporcionado por el generador de números de fase. El primer mensaje de parada incluye un número de fase de mensaje de parada proporcionado por el generador de números de fase. El número de fase de mensaje de
25 parada es el mismo que el número de fase de primer mensaje de datos. El segundo mensaje de datos se envía después del primer mensaje de parada. El segundo mensaje de datos incluye un número de secuencia de segundo mensaje de datos proporcionado por el generador de números de secuencia con un valor del número de secuencia inicial predefinido. El segundo mensaje de datos incluye un número de fase de segundo mensaje de datos proporcionado por el generador de números de fase. El número de fase de segundo mensaje de datos es diferente
30 del número de fase de primer mensaje de datos. En algunas realizaciones, el primer mensaje de datos y el segundo mensaje de datos pueden incluir datos relacionados con una orden para un objeto negociable.
Determinadas realizaciones proporcionan un método que incluye detectar, mediante un dispositivo informático, un nuevo mensaje que va a enviarse; determinar, mediante el dispositivo informático, un número de fase para el nuevo
35 mensaje; determinar, mediante el dispositivo informático, un número de secuencia para el nuevo mensaje; y enviar, mediante el dispositivo informático, el nuevo mensaje con el número de fase y el número de secuencia.
Determinadas realizaciones proporcionan un medio de almacenamiento tangible legible por ordenador que incluye instrucciones que, cuando se ejecutan, hacen que un dispositivo informático al menos detecte un nuevo mensaje
40 que va a enviarse; determine un número de fase para el nuevo mensaje; determine un número de secuencia para el nuevo mensaje; y envíe el nuevo mensaje con el número de fase y el número de secuencia.
Determinadas realizaciones proporcionan un sistema que incluye un detector de nuevo mensaje para detectar un nuevo mensaje que va a enviarse; un generador de números de fase para determinar un número de fase para el
45 nuevo mensaje; un generador de números de secuencia para determinar un número de secuencia para el nuevo mensaje; y un emisor de mensajes para enviar el nuevo mensaje con el número de fase y el número de secuencia.
Determinadas realizaciones proporcionan un método que incluye recibir, mediante un dispositivo informático, un nuevo mensaje que incluye un número de fase de mensaje y un número de secuencia de mensaje; determinar, 50 mediante el dispositivo informático, un número de fase esperado para el nuevo mensaje; determinar, mediante el dispositivo informático, un número de secuencia esperado para el nuevo mensaje; comparar, mediante el dispositivo informático, el número de fase de mensaje con el número de fase esperado; comparar, mediante el dispositivo informático, el número de secuencia de mensaje con el número de secuencia esperado; y notificar, mediante el dispositivo informático, un mensaje perdido cuando al menos uno de entre (a) el número de fase de mensaje y el
55 número de fase esperado y (b) el número de secuencia de mensaje y el número de secuencia esperado no coinciden.
Determinadas realizaciones proporcionan un medio de almacenamiento tangible legible por ordenador que incluye instrucciones que, cuando se ejecutan, hacen que un dispositivo informático al menos reciba un nuevo mensaje que 60 incluye un número de fase de mensaje y un número de secuencia de mensaje; determine un número de fase esperado para el nuevo mensaje; determine un número de secuencia esperado para el nuevo mensaje; compare el número de fase de mensaje con el número de fase esperado; compare el número de secuencia de mensaje con el número de secuencia esperado; y notifique un mensaje perdido cuando al menos uno de entre (a) el número de fase de mensaje y el número de fase esperado y (b) el número de secuencia de mensaje y el número de secuencia
65 esperado no coinciden.
E12758719
04-08-2014
Determinadas realizaciones proporcionan un sistema que incluye un receptor de mensajes para recibir un nuevo mensaje que incluye un número de fase de mensaje y un número de secuencia de mensaje; un generador de número de fase esperado para determinar un número de fase esperado para el nuevo mensaje; un generador de número de secuencia esperado para determinar un número de secuencia esperado para el nuevo mensaje; un
5 comparador de números de fase para comparar el número de fase de mensaje con el número de fase esperado; un comparador de números de secuencia para comparar el número de secuencia de mensaje con el número de secuencia esperado; y un notificador de mensaje perdido para notificar un mensaje perdido cuando al menos uno de entre (a) el número de fase de mensaje y el número de fase esperado y (b) el número de secuencia de mensaje y el número de secuencia esperado no coinciden.
Determinadas realizaciones proporcionan un método que incluye enviar, mediante un dispositivo informático, un primer mensaje de datos; enviar, mediante el dispositivo informático, un primer mensaje de latido de corazón; y enviar, mediante el dispositivo informático, un segundo mensaje de latido de corazón. El primer mensaje de latido de corazón se envía en un primer intervalo de tiempo después de enviarse el primer mensaje de datos. El primer
15 intervalo de tiempo tiene una longitud predefinida. El segundo mensaje de latido de corazón se envía en un segundo intervalo de tiempo después de enviarse el primer mensaje de latido de corazón. El segundo intervalo de tiempo aumenta con respecto al primer intervalo de tiempo.
Determinadas realizaciones proporcionan un medio de almacenamiento tangible legible por ordenador que incluye instrucciones que, cuando se ejecutan, hacen que un dispositivo informático al menos envíe un primer mensaje de datos; envíe un primer mensaje de latido de corazón; y envíe un segundo mensaje de latido de corazón. El primer mensaje de latido de corazón se envía en un primer intervalo de tiempo después de enviarse el primer mensaje de datos. El primer intervalo de tiempo tiene una longitud predefinida. El segundo mensaje de latido de corazón se envía en un segundo intervalo de tiempo después de enviarse el primer mensaje de latido de corazón. El segundo
25 intervalo de tiempo aumenta con respecto al primer intervalo de tiempo.
Determinadas realizaciones proporcionan un sistema que incluye un emisor de primer mensaje de datos para enviar un primer mensaje de datos; un emisor de primer mensaje de latido de corazón para enviar un primer mensaje de latido de corazón; y un emisor de segundo mensaje de latido de corazón para enviar un segundo mensaje de latido de corazón. El primer mensaje de latido de corazón se envía en un primer intervalo de tiempo después de enviarse el primer mensaje de datos. El primer intervalo de tiempo tiene una longitud predefinida. El segundo mensaje de latido de corazón se envía en un segundo intervalo de tiempo después de enviarse el primer mensaje de latido de corazón. El segundo intervalo de tiempo aumenta con respecto al primer intervalo de tiempo.
35 Determinadas realizaciones proporcionan un método que incluye enviar, mediante un dispositivo informático, un primer mensaje de datos; y enviar, mediante el dispositivo informático, un primer mensaje de parada.
Determinadas realizaciones proporcionan un medio de almacenamiento tangible legible por ordenador que incluye instrucciones que, cuando se ejecutan, hacen que un dispositivo informático al menos envíe un primer mensaje de datos; y envíe un primer mensaje de parada.
Determinadas realizaciones proporcionan un sistema que incluye un emisor de primer mensaje de datos para enviar un primer mensaje de datos; y un emisor de primer mensaje de parada para enviar un primer mensaje de parada.
45 Determinadas realizaciones proporcionan un método que incluye enviar, mediante un dispositivo informático, un mensaje que incluye un número de secuencia y un número de fase.
Determinadas realizaciones proporcionan un medio de almacenamiento tangible legible por ordenador que incluye instrucciones que, cuando se ejecutan, hacen que un dispositivo informático al menos envíe un mensaje que incluye un número de secuencia y un número de fase.
Determinadas realizaciones proporcionan un sistema que incluye un emisor de mensajes para enviar un mensaje que incluye un número de secuencia y un número de fase.
55 Determinadas realizaciones proporcionan un método que incluye recibir, mediante un dispositivo informático, un mensaje que incluye un número de secuencia y un número de fase; y notificar, mediante el dispositivo informático, un mensaje perdido en función del número de secuencia y el número de fase.
Determinadas realizaciones proporcionan un medio de almacenamiento tangible legible por ordenador que incluye instrucciones que, cuando se ejecutan, hacen que un dispositivo informático al menos reciba un mensaje que incluye un número de secuencia y un número de fase; y notifique un mensaje perdido en función del número de secuencia y el número de fase.
Determinas realizaciones proporcionan un sistema que incluye un receptor de mensajes para recibir un mensaje que
65 incluye un número de secuencia y un número de fase; y un notificador de mensajes perdidos para notificar un mensaje perdido en función del número de secuencia y el número de fase.
E12758719
04-08-2014
II. Dispositivo informático de ejemplo
La figura 1 ilustra un diagrama de bloques de un dispositivo informático 100 de ejemplo que puede usarse para
5 implementar las realizaciones desveladas. Uno o más dispositivos informáticos 100 pueden implementarse en, por ejemplo, un ordenador terminal o un sistema servidor configurados para procesar datos que se reciben desde, y se envían a, muchos dispositivos diferentes.
El dispositivo informático 100 incluye un procesador 102, un bus de interconexión 104, un conjunto de chips 106, un controlador de memoria 108, un controlador de entrada/salida (E/S) 110, una memoria de sistema 112, una memoria de almacenamiento masivo 114, un bus de E/S 116, una interfaz de red 118, un dispositivo de visualización 120, un dispositivo de entrada 122 y un dispositivo de salida 124. El dispositivo informático 100 puede incluir componentes adicionales, diferentes o menos componentes. Por ejemplo, puede proporcionarse múltiples buses, múltiples procesadores, múltiples dispositivos de memoria, múltiples interfaces de red, múltiples dispositivos de visualización, 15 múltiples dispositivos de entrada, múltiples dispositivos de salida o cualquier combinación de los mismos. Como otro ejemplo, el dispositivo informático 100 puede no incluir un dispositivo de salida 124 distinto al dispositivo de visualización 120. Como otro ejemplo, el dispositivo informático 100 puede no incluir un dispositivo de visualización
120. Como otro ejemplo, el dispositivo informático 100 puede no incluir un dispositivo de entrada 122. En cambio, por ejemplo, el dispositivo informático 100 puede controlarse mediante un dispositivo de entrada externo o remoto a través de la interfaz de red 118.
El dispositivo informático 100 incluye un procesador 102 que está acoplado a un bus de interconexión 104. El bus de interconexión 104 puede incluir un bus de comunicación, un canal, una red, un circuito, un conmutador, una línea u otro mecanismo para comunicar datos entre componentes en el dispositivo informático 100. El bus de interconexión
25 104 puede estar acoplado de manera comunicativa a y transferir datos entre cualquiera de los componentes del dispositivo informático 100. Por ejemplo, durante un proceso de instalación de una aplicación, una o más instrucciones legibles por ordenador que van a ser ejecutadas por el procesador 102 pueden transferirse desde el dispositivo de entrada 122 y/o la interfaz de red 118 a la memoria de sistema 112 y/o la memoria de almacenamiento masivo 114. Cuando el dispositivo informático 100 está ejecutando o preparándose para ejecutar la aplicación almacenada en la memoria de sistema 112 y/o la memoria de almacenamiento masivo 114, el procesador 102 puede recuperar las instrucciones de la memoria de sistema 112 y/o la memoria de almacenamiento masivo 114 a través del bus de interconexión 104.
El procesador 102 puede ser un procesador, una unidad de procesamiento o un microprocesador, por ejemplo. El
35 procesador 102 puede incluir uno o más procesadores generales, procesadores de señales digitales, circuitos integrados de aplicación específica, matrices de puertas de campo programable, circuitos analógicos, circuitos digitales, procesadores programados y/o combinaciones de los mismos, por ejemplo. El procesador 102 puede ser un único dispositivo o una combinación de dispositivos, tal como uno o más dispositivos asociados a un procesamiento en red o distribuido. Puede usarse cualquier estrategia de procesamiento, tal como multiprocesamiento, multitarea, procesamiento paralelo y/o procesamiento remoto. El procesamiento puede ser local
o remoto y puede pasar de un procesador a otro procesador. El dispositivo informático 100 puede ser un sistema multiprocesador y, por tanto, puede incluir uno o más procesadores adicionales que estén acoplados de manera comunicativa al bus de interconexión 104.
45 El procesador 102 puede hacerse funcionar para ejecutar lógica codificada en uno o más medios tangibles, tales como la memoria de sistema 112, la memoria de almacenamiento masivo 114, y/o a través de la interfaz de red 118. Tal y como se usa en el presente documento, la lógica codificada en uno o más medios tangibles incluye instrucciones que pueden ser ejecutadas por el procesador 102 o un procesador diferente. La lógica puede almacenarse como parte del software, hardware, circuitos integrados, firmware y/o microcódigo, por ejemplo. La lógica puede recibirse desde un dispositivo de comunicación externo a través de una red de comunicación, por ejemplo, conectada a Internet. El procesador 102 puede ejecutar la lógica para llevar a cabo las funciones, acciones
o tareas ilustradas en las figuras o descritas en el presente documento.
El procesador 102 de la figura 1 está acoplado al conjunto de chips 106, que incluye el controlador de memoria 108
55 y el controlador de E/S 110. Un conjunto de chips proporciona normalmente funciones de E/S y de gestión de memoria, así como una pluralidad de registros de propósito general y/o de propósito especial, y temporizadores a los que pueden acceder o ser usados por uno o más procesadores acoplados al conjunto de chips 106. El controlador de memoria 108 lleva a cabo funciones que permiten al procesador 102 (o a procesadores si hay múltiples procesadores) acceder a la memoria de sistema 112 y a la memoria de almacenamiento masivo 114.
La memoria de sistema 112 y la memoria de almacenamiento masivo 114 pueden ser uno o más medios tangibles, tales como medios de almacenamiento legibles por ordenador, por ejemplo. La memoria de sistema 112 puede incluir varios tipos de medios de almacenamiento volátiles y no volátiles que incluyen, por ejemplo, memoria de acceso aleatorio (RAM), memoria de solo lectura (ROM), memoria de solo lectura programable (PROM), memoria de 65 solo lectura eléctricamente programable (EPROM), memoria de solo lectura eléctricamente borrable (EEPROM), memoria flash, cualquier otro dispositivo de almacenamiento de datos tangible y cualquier combinación de los
E12758719
04-08-2014
15
25
35
45
55
mismos. La memoria de almacenamiento masivo 114 puede incluir varios tipos de dispositivos de almacenamiento masivo que incluyen, por ejemplo, una unidad de disco duro, medios ópticos, cinta magnética, cualquier otro dispositivo de almacenamiento de datos tangible o cualquier combinación de los mismos. En determinadas realizaciones, la memoria de sistema 112 y la memoria de almacenamiento masivo 114 son no transitorias.
La memoria de sistema 112 y la memoria de almacenamiento masivo 114 pueden ser un único módulo de memoria, por ejemplo. La memoria de sistema 112 y la memoria de almacenamiento masivo 114 pueden ser adyacentes a, parte de, estar programas con, interconectadas con y/o ser remotas al procesador 102, de manera que los datos almacenados en la memoria de sistema 112 y la memoria de almacenamiento masivo 114 pueden recuperarse y procesarse por el procesador 102, por ejemplo. La memoria de sistema 112 y la memoria de almacenamiento masivo 114 pueden almacenar instrucciones que pueden ser ejecutadas por el procesador 102. Las instrucciones pueden ser ejecutadas para llevar a cabo una o más de las acciones o funciones descritas en el presente documento o mostradas en las figuras.
El controlador de E/S 110 lleva a cabo funciones que permiten al procesador 102 comunicarse con la interfaz de red 118, el dispositivo de visualización 120, el dispositivo de entrada 122 y el dispositivo de salida 124 a través de un bus de E/S 116. Aunque el controlador de memoria 108 y el controlador de E/S 110 están ilustrados en la figura 1 como bloques diferentes dentro del conjunto de chips 106, las funciones llevadas a cabo por estos bloques pueden estar integradas en un único circuito semiconductor o pueden implementarse usando dos o más circuitos integrados diferentes. Uno o más de los componentes del dispositivo informático 100 pueden implementarse como un sistema en un chip (por ejemplo, un sistema en un chip de un IPHONETM).
La interfaz de red 118 puede ser un acoplamiento de comunicación unidireccional o bidireccional. Por consiguiente, la interfaz de red 118 puede conectar de manera comunicativa una, dos o más redes o dispositivos de comunicación. Por ejemplo, el bus de interconexión 104 puede estar acoplado a un servidor a través de la interfaz de red 118, de manera que uno, algunos o todos los componentes del dispositivo informático 100 son accesibles o pueden comunicarse con el servidor. Como otro ejemplo, la interfaz de red 118 puede acoplar el bus de interconexión 104 a otras redes de comunicación. La interfaz de red 118 puede ser, por ejemplo, una tarjeta de red digital de servicios integrados (RDSI) o un módem para proporcionar una conexión de comunicación de datos. Como otro ejemplo, la interfaz de red 118 puede ser una tarjeta de red de área local (LAN) para proporcionar una conexión de comunicación de datos a una LAN compatible, por ejemplo, conectada a Internet. También pueden implementarse enlaces inalámbricos. La interfaz de red 118 puede enviar y recibir señales eléctricas, electromagnéticas u ópticas que transportan flujos de datos analógicos o digitales que representan varios tipos de información, por ejemplo.
El dispositivo de visualización 120 puede incluir un dispositivo de salida visual, una pantalla de tubos de rayos catódicos (CRT), una pantalla electrónica, papel electrónico, una pantalla de panel plano, pantallas de diodos de emisión de luz (LED), una pantalla electroluminiscente (ELD), paneles de pantalla de plasma (PDP), una pantalla de cristal líquido (LCD), pantallas de transistor de película delgada (TFT), pantallas de diodos orgánicos de emisión de luz (OLED), una pantalla de emisores de electrones con conducción en superficie (SED), una televisión láser, nanotubos de carbono, pantallas de nanocristal, una pantalla montada en un cabezal, un proyector, una pantalla tridimensional y/o un dispositivo de visualización transparente, por ejemplo.
El dispositivo de visualización 120 está adaptado para visualizar una pantalla, que puede ser interactiva y que permite al usuario introducir datos.
El dispositivo de entrada 122 puede incluir un teclado, un ratón, un micrófono, una pantalla táctil, una bola de seguimiento, un teclado numérico, una palanca de control y/u otro dispositivo para proporcionar datos de entrada, por ejemplo. El dispositivo de entrada 122 puede usarse, por ejemplo, para proporcionar selecciones de comando al procesador 102. Por ejemplo, el dispositivo de entrada 122 puede ser un ratón que se usa para controlar un cursor mostrado en una pantalla. El ratón puede incluir uno o más botones para la selección y el control, por ejemplo.
El dispositivo de salida 124 puede incluir, por ejemplo, un teclado, un ratón, altavoces, una pantalla táctil, una bola de seguimiento, un teclado numérico, un dispositivo o sistema háptico, una palanca de control y/u otro dispositivo para proporcionar datos de salida. Por ejemplo, el dispositivo de salida 124 puede usarse para proporcionar una o más señales, tal como una señal háptica o una señal de audio, a un usuario. Aunque el dispositivo de entrada 122 y el dispositivo de salida 124 se ilustran en la figura 1 como bloques distintos, las funciones llevadas a cabo por estos bloques pueden estar integradas en un único dispositivo de E/S.
III. Técnicas para la integridad de un flujo de mensajes
Los usuarios confían en que los mensajes que están enviándose y distribuyéndose estén actualizados y sean precisos para tomar decisiones consecuentes. Cuando los mensajes se transmiten a través de una red, pueden retardarse y/o perderse debido a, por ejemplo, un dispositivo intermedio que pasa por alto el mensaje, un fallo de enlace, recursos insuficientes (por ejemplo, memoria o procesamiento), o al bloqueo o reinicio de un dispositivo intermedio. Por tanto, es deseable la detección de mensajes perdidos que no han podido enviarse o recibirse
E12758719
04-08-2014
correctamente para mantener la integridad de los flujos de mensajes.
Cuando se determina que un mensaje se ha perdido pueden realizarse varias acciones, tales como solicitar la retransmisión del mensaje perdido, interrumpir o reiniciar el flujo de mensajes, crear una entrada en un archivo de
5 registro, proporcionar un mensaje de error, generar una interrupción, informar acerca del mensaje perdido a una aplicación o protocolo de mayor nivel que procese los datos recibidos, abortar la ejecución de un programa, notificar a uno o más usuarios de que se ha perdido un mensaje, finalizar el flujo de mensajes y establecer un nuevo flujo de mensajes, revocar y volver a adquirir una licencia, volver a autenticarse con un servidor y/o volver a descargar un conjunto de datos completo.
Algunos sistemas actuales usan un número de secuencia o un identificador de mensaje para ayudar en la detección de mensajes perdidos. El número de secuencia o el identificador de mensaje se modifica (normalmente, se incrementa) en una cantidad predeterminada para cada mensaje para permitir que un destinatario determine el orden en que los mensajes fueron enviados y si se ha perdido algún mensaje. El destinatario puede almacenar en
15 memoria intermedia mensajes que puedan haberse recibido fuera de orden debido a, por ejemplo, comportamientos de la red. Cuando no se recibe un mensaje, puede considerarse que se ha extraviado. Es posible que el mensaje extraviado se reciba posteriormente, por ejemplo debido a que se ordenó de nuevo en un dispositivo intermedio o debido a una retransmisión. Si no se ha recibido un mensaje extraviado de la secuencia después de un periodo de tiempo, el destinatario puede determinar que el mensaje se ha perdido. En otro ejemplo, en lugar de esperar durante un periodo de tiempo la posible recepción de un mensaje anterior cuando se recibe un mensaje posterior fuera de orden, puede determinarse que, tras la recepción del mensaje posterior fuera de orden, el mensaje anterior extraviado se ha perdido.
En algunos sistemas, los mensajes pueden enviarse con poca frecuencia, como cuando se modifican los datos de 25 un objeto que está siendo supervisado por dispositivos que son remotos a la fuente de los datos.
Por ejemplo, información acerca de cambios de estado relacionados con un servidor, tal como si el servidor está accesible o inaccesible y si la conexión al servidor está accesible o inaccesible, puede enviarse con poca frecuencia. Como otro ejemplo, mensajes, tales como nuevos mensajes, pueden enviarse con poca frecuencia. Como otro ejemplo, la descarga de datos puede producirse con poca frecuencia, tal como durante el arranque y cuando los mensajes perdidos se detectan posteriormente.
Cuando la integridad del flujo de mensajes depende de la detección de mensajes perdidos en función del número de secuencia de un mensaje recibido posteriormente, los mensajes enviados con poca frecuencia pueden dar como
35 resultado retardos inaceptables antes de que se detecte un mensaje perdido. Por ejemplo, si se envía un mensaje relacionado con un primer cambio en el estado de los datos, pero se pierde, el destinatario no puede detectar el mensaje perdido hasta después de recibir otro mensaje relacionado con un segundo cambio en el estado de los datos. Si se envían mensajes con poca frecuencia, el segundo mensaje puede recibirse horas después de que se haya perdido el primer mensaje. Como otro ejemplo, si no se produce un segundo cambio en el estado, el primer mensaje perdido no puede detectarse. Por tanto, durante el tiempo entre la pérdida del primer mensaje y la detección del mensaje perdido, el destinatario ha estado usando datos incorrectos.
A. Técnica de latido de corazón con intervalos fijos
45 Una técnica usada por los sistemas actuales para aumentar la probabilidad de detectar un mensaje perdido es enviar mensajes a determinados intervalos definidos independientemente de si hay nuevos datos que enviar. Los sistemas que usan esta técnica envían un mensaje de latido de corazón si ha transcurrido un determinado periodo de tiempo desde, por ejemplo, el envío del último mensaje. Los mensajes de latido de corazón también pueden denominarse mensajes de conexión abierta (alive messages), mensajes de mantenimiento de conexión (keep-alive messages), mensajes de estado o mensajes de sincronización, por ejemplo. La técnica de latido de corazón con intervalos fijos se ilustra en los mensajes de ejemplo de la figura 2A.
La figura 2A ilustra mensajes de ejemplo que utilizan la técnica de latido de corazón con intervalos fijos, donde el intervalo de tiempo definido es “1”. En este ejemplo, los mensajes de datos se denotan como “M” y los mensajes de
55 latido de corazón se denotan como “HB”. Aquí, el número de secuencia de cada mensaje de datos aumenta en uno. En este ejemplo, el primer mensaje de datos M1 se envía con un número de secuencia de “0” en el tiempo t=0. Puesto que el intervalo de tiempo definido es “1” y no van a enviarse nuevos datos en este intervalo de tiempo, el sistema envía el primer mensaje de latido de corazón HB1 con el número de secuencia “0” en el tiempo t=1. En este ejemplo, los mensajes de latido de corazón repiten el número de secuencia del último mensaje de datos enviado. En determinadas realizaciones, los mensajes de latido de corazón pueden tener asignados sus propios números de secuencia.
En el tiempo t=2, donde no hay nuevos datos que enviar, el sistema envía el segundo mensaje de latido de corazón HB2 con el número de secuencia “0”, el mismo número de secuencia que el mensaje de datos M1, el último mensaje 65 de datos enviado. En el tiempo t=3, donde no hay nuevos datos que enviar, el sistema envía el tercer mensaje de latido de corazón HB3 con el número de secuencia “0”. En el tiempo t=4, donde no hay nuevos datos que enviar, el
E12758719
04-08-2014
sistema envía el cuarto mensaje de latido de corazón HB4 con el número de secuencia “0”. En el tiempo t=5 hay nuevos datos que enviar. Por tanto, el sistema envía el segundo mensaje de datos M2 y aumenta el número de secuencia a “1”. En el tiempo t=6 hay nuevos datos que enviar. Por tanto, el sistema envía el tercer mensaje de datos M3 y aumenta el número de secuencia a “2”. En el tiempo t=7, donde no hay nuevos datos que enviar, el
5 sistema envía el cuarto mensaje de latido de corazón HB5 con el número de secuencia “2”, el mismo número de secuencia que el mensaje de datos M3, el último mensaje de datos enviado.
Al enviar mensajes de latido de corazón en un intervalo definido, tal como “1”, el sistema puede proporcionar un límite en la cantidad de tiempo entre la pérdida de un mensaje y la detección del mensaje perdido. El sistema puede 10 proporcionar un límite en la detección del mensaje perdido ya que el destinatario conoce el intervalo de tiempo definido y puede detectar si un mensaje no se ha recibido dentro del intervalo definido. En este ejemplo, si se pierde el mensaje de datos M3, el sistema recibiría a continuación el mensaje de latido de corazón HB5 con el número de secuencia “2”. El sistema compararía el número de secuencia del mensaje de latido de corazón recibido, “2”, con el número de secuencia del último mensaje recibido; en este caso, el mensaje de datos M2 con el número de
15 secuencia “1”. Puesto que en este ejemplo los mensajes de latido de corazón mantienen el número de secuencia del mensaje de datos enviado anteriormente, el sistema detectaría un mensaje perdido dentro del intervalo de tiempo definido de “1”. En otro ejemplo, el destinatario puede detectar si un mensaje no se ha recibido dentro de una determinada longitud de tiempo mayor que el intervalo de tiempo definido, tal como una pequeña cantidad de tiempo constante o el doble del intervalo definido, para permitir variaciones de retardo de red.
20 Sin embargo, en un sistema de latido de corazón con un intervalo de tiempo definido como el descrito anteriormente, donde puede haber una gran cantidad de información de estado actualizada con poca frecuencia, por ejemplo, habrá un elevado número correspondiente de mensajes de latido de corazón. El elevado número de mensajes de latido de corazón puede usar de manera ineficaz un ancho de banda de red limitado y/o aumentar la latencia para la
25 distribución de otros mensajes de datos en la red. Por ejemplo, si un servidor particular está ejecutando una aplicación y gestionando a 1.500 usuarios, habiendo dos puntos terminales por cada usuario, habrá 3.000 puntos terminales que estarán siendo gestionados por el servidor. Si no hay ninguna actividad o información de estado actualizada, por ejemplo, podrán necesitarse 3.000 mensajes de latido de corazón por segundo, usando de manera ineficaz un ancho de banda de red limitado e impidiendo y/o retardando el acceso a la capacidad de procesamiento
30 de información que está recibiéndose desde otro sistema de servidor.
B. Técnica de latido de corazón con intervalos crecientes
Determinadas realizaciones abordan el problema de un tráfico de red excesivo no formado por datos al proporcionar
35 un intervalo creciente entre mensajes de latido de corazón. Por ejemplo, un primer latido de corazón puede enviarse en una cantidad de tiempo fija después del envío del último mensaje de datos. Después pueden enviarse mensajes de latido de corazón subsiguientes tras incrementar los intervalos de tiempo. Por ejemplo, el intervalo puede aumentar en una cantidad fija, doblarse, aumentar geométricamente, aumentar exponencialmente o aumentar en una cantidad predefinida tal como modificando intervalos fijos o en función de una secuencia como la de Fibonacci o
40 números primos. Para mejorar la detección efectiva de mensajes perdidos, el intervalo puede acotarse o limitarse a un valor máximo. El acotamiento o limitación del intervalo a un valor máximo impide que el intervalo de tiempo no esté delimitado de manera eficaz y mantiene un límite en la cantidad de tiempo entre la pérdida de un mensaje y la detección del mensaje perdido.
45 La figura 2B ilustra mensajes de ejemplo que utilizan una técnica de ejemplo de latido de corazón con intervalos crecientes, donde el intervalo de tiempo se dobla. En este ejemplo, los mensajes de datos se denotan como “M” y los mensajes de latido de corazón se denotan como “HB”. Aquí, el número de secuencia de cada mensaje de datos aumenta en uno y los mensajes de latido de corazón incluyen el número de secuencia del último mensaje de datos enviado. En este ejemplo, un primer mensaje de datos M1 se envía con un número de secuencia de “0” en el tiempo
50 t=0. El primer intervalo de tiempo es “1” y no se envían nuevos datos en este intervalo de tiempo. Por tanto, el sistema envía un primer mensaje de latido de corazón HB1 con el numero de secuencia “0” en el tiempo t=1.
En este ejemplo, el intervalo de tiempo se dobla y, por tanto, el siguiente mensaje de latido de corazón se enviará en el tiempo t=3 (t=1 (tiempo del último mensaje de latido de corazón enviado) + 1 (intervalo anterior) * 2 (duplicación)), 55 el doble de la cantidad del intervalo de tiempo anterior de “1”. En el tiempo t=3, donde no hay nuevos datos que enviar, el sistema envía un segundo mensaje de latido de corazón HB2 con el número de secuencia “0”, el mismo número de secuencia que el mensaje de datos M1, el último mensaje de datos enviado. El siguiente mensaje de latido de corazón se enviará en el tiempo t=7 (t=3 (tiempo del último mensaje de latido de corazón enviado) + 2 (intervalo anterior) * 2 (duplicación)), el doble de la cantidad del intervalo de tiempo anterior de “2”. Sin embargo, en 60 el tiempo t=5 hay nuevos datos que enviar. Por tanto, el sistema envía un segundo mensaje de datos M2 e incrementa el número de secuencia a “1”. En el tiempo t=6 hay nuevos datos que enviar y, por tanto, el sistema envía un tercer mensaje de datos M3 y aumenta el número de secuencia a “2”. El siguiente mensaje de latido de corazón se enviará en el tiempo t=7, volviendo al intervalo de tiempo inicial, “1”. En el tiempo t=7, donde no hay nuevos datos que enviar, el sistema envía un tercer mensaje de latido de corazón HB3 con el número de secuencia
65 “2”, el mismo número de secuencia que el mensaje de datos M3, el último mensaje de datos enviado.
E12758719
04-08-2014
La técnica de intervalos crecientes descrita en la figura 2B anterior reduce el tráfico de red debido a los mensajes de latido de corazón en comparación con los intervalos de latido de corazón fijos, donde el intervalo de latido de corazón fijo descrito en la figura 2A anterior es el mismo que el intervalo inicial de la técnica de intervalos crecientes. En el ejemplo de la figura 2A se envían cuatro mensajes de latido de corazón entre dos mensajes de datos (M1 y
5 M2) donde, en este ejemplo, solo se envían dos mensajes de latido de corazón.
Además, la técnica de intervalos crecientes proporciona una cierta tolerancia a fallos de enlace transitorios. Por ejemplo, si un enlace queda interrumpido y la conectividad se restablece durante el intervalo aumentado, y no se envían nuevos mensajes, entonces el fallo de enlace transitorio no será detectado. Una técnica de intervalos fijos
10 puede ser más susceptible de detectar tales fallos de enlace transitorios, aunque tales fallos pueden no ser problemáticos para la integridad de los flujos ya que no se pierde ningún dato.
La figura 2C ilustra un diagrama de flujo 200 de ejemplo de un método de envío de mensajes según la técnica de latido de corazón con intervalos crecientes descrita anteriormente. En este ejemplo, cada mensaje de datos tiene un
15 número de secuencia diferente. Por ejemplo, cada mensaje de datos puede tener un número de secuencia mayor que el número de secuencia del mensaje de datos anterior. En este ejemplo, los mensajes de latido de corazón usan el mismo número de secuencia que el último mensaje de datos enviado antes del latido de corazón.
En el bloque 201 se reajusta un número de secuencia para un mensaje que va a enviarse y se fija el siguiente
20 tiempo de latido de corazón, que representa el tiempo en que debería enviarse un mensaje de latido de corazón. Por ejemplo, el número de secuencia puede reajustarse a “0” o “-1” y el siguiente tiempo de latido de corazón puede fijarse a “infinito” porque todavía no se ha enviado ningún mensaje de datos.
En el bloque 202 se determina si va a enviarse un nuevo mensaje de datos o si se ha alcanzado el siguiente tiempo
25 de latido de corazón. Por ejemplo, un nuevo mensaje de datos a enviar puede recibirse desde una aplicación. Como otro ejemplo, un temporizador asociado al siguiente tiempo de latido de corazón puede expirar.
Si va a enviarse un nuevo mensaje de datos (como se determina en el bloque 202), en el bloque 203 se incrementa el número de secuencia del mensaje que va a enviarse. Por ejemplo, el número de secuencia puede aumentar en 1
30 de“0”a“1”ode“-1”a“0”.
En el bloque 204, el nuevo mensaje de datos se envía con el número de secuencia incrementado, tal como el mensaje de datos M1 de la figura 2B.
35 En el bloque 205 se fija que el siguiente tiempo de latido de corazón sea el tiempo en que se envió el nuevo mensaje de datos más el intervalo inicial (y cualquier tiempo de latido de corazón siguiente fijado anteriormente se borra). Por ejemplo, si el nuevo mensaje de datos se envió en el tiempo t=0 y el intervalo de latido de corazón inicial es “1”, entonces el siguiente tiempo de latido de corazón puede fijarse a t=1. El control vuelve después al bloque 202.
40 Si no hay que enviar ningún nuevo mensaje de datos y se ha alcanzado el siguiente tiempo de latido de corazón (como se determina en el bloque 202), en el bloque 206 se envía un mensaje de latido de corazón con el número de secuencia actual, que será el número de secuencia del último mensaje de datos que se envió, tal como el mensaje de latido de corazón HB2 de la figura 2B.
45 En el bloque 207, el siguiente tiempo de latido de corazón se determina, en este ejemplo, doblando el intervalo del último mensaje de latido de corazón enviado y sumándolo al tiempo en que se envió el mensaje de latido de corazón más reciente en el bloque 206. Por ejemplo, si el mensaje de latido de corazón más recientemente enviado se envió en t=3 después de un intervalo de latido de corazón de “2”, el siguiente tiempo de latido de corazón se fijará a t=7 (t=3 (tiempo del mensaje de latido de corazón enviado más reciente) + 2 (intervalo de latido de corazón anterior) * 2
50 (duplicación)). El control vuelve después al bloque 202.
El método para enviar mensajes según la técnica de latido de corazón con intervalos crecientes descrita anteriormente asigna un número de secuencia a un mensaje de datos y asigna números de secuencia correspondientes a mensajes de latido de corazón enviados después del mensaje de datos. La asignación de
55 números de secuencia a mensajes de datos y de latido de corazón permite la detección de mensajes perdidos dentro del tiempo en que se pierde el mensaje de datos y se recibe un mensaje posterior.
La figura 2D ilustra un diagrama de flujo 210 de ejemplo de un método de recepción de mensajes según la técnica de latido de corazón con intervalos crecientes descrita anteriormente. En este ejemplo, cada mensaje de datos tiene
60 un número de secuencia diferente. Por ejemplo, cada mensaje de datos puede tener un número de secuencia mayor que el número de secuencia del mensaje de datos anterior. En este ejemplo, los mensajes de latido de corazón usan el mismo número de secuencia que el último mensaje de datos enviado antes del latido de corazón.
En el bloque 211 se reajusta un número de secuencia esperado para un mensaje que va a recibirse. Por ejemplo, el 65 número de secuencia esperado puede reajustarse a “0” o “-1”.
E12758719
04-08-2014
En el bloque 212 se recibe un mensaje. El mensaje puede ser un mensaje de datos o un mensaje de latido de corazón, por ejemplo. Un mensaje perdido puede notificarse si no se recibe un mensaje dentro de un intervalo de tiempo esperado. El intervalo de tiempo esperado puede basarse en el intervalo de tiempo inicial entre un mensaje de datos que está enviándose y el primer mensaje de latido de corazón que está enviándose o el intervalo de tiempo
5 esperado puede basarse, por ejemplo, en el intervalo entre dos mensajes de latido de corazón. Por ejemplo, el intervalo de tiempo inicial y/o el intervalo entre dos mensajes de latido de corazón pueden aumentarse en una cantidad constante o doblarse para permitir variaciones de retardo de red para determinar el intervalo de tiempo esperado.
En el bloque 213 se determina el número de secuencia esperado del mensaje recibido. Si el mensaje recibido es un mensaje de datos, el número de secuencia esperado puede determinarse incrementando el número de secuencia del mensaje recibido anteriormente (o a partir del número de secuencia esperado reajustado si no se ha recibido ningún mensaje anterior). Por ejemplo, el número de secuencia puede incrementarse en 1 de “0” a “1” o de “-1” a “0”. En este ejemplo, si el mensaje recibido es un mensaje de latido de corazón, el número de secuencia esperado será
15 el mismo que el número de secuencia del mensaje recibido anteriormente.
En el bloque 214, el número de secuencia del mensaje recibido se compara con el número de secuencia esperado determinado en el bloque 213.
Si el número de secuencia del mensaje recibido no es igual al número de secuencia esperado (como se determina en el bloque 214), en el bloque 215 puede notificarse un mensaje perdido. En determinadas realizaciones, un mensaje perdido puede notificarse solamente si el mensaje perdido es un mensaje de datos. En determinadas realizaciones, el sistema puede determinar que falta un mensaje y esperar durante un periodo de tiempo la recepción del mensaje extraviado. Si el mensaje extraviado no se recibe en el periodo de tiempo, el sistema puede
25 notificar entonces que el mensaje extraviado se ha perdido.
Si el número de secuencia del mensaje recibido es igual al número de secuencia esperado (como se determina en el bloque 214), en el bloque 216 se determina si el mensaje recibido es un mensaje de datos. Si el mensaje recibido es un mensaje de datos, en el bloque 217 se procesa el mensaje de datos y el control vuelve al bloque 212. El mensaje de datos puede procesarse proporcionando el contenido del mensaje de datos a una aplicación, por ejemplo. Si el mensaje recibido no es un mensaje de datos, el control vuelve al bloque 212.
El método de recepción de mensajes según la técnica de latido de corazón con intervalos crecientes descrita anteriormente espera un número de secuencia creciente para cada mensaje de datos y espera que los números de
35 secuencia de los mensajes de latido de corazón sean idénticos a los de un mensaje de datos enviado anteriormente. La asignación de números de secuencia a mensajes de datos y de latido de corazón permite la detección de mensajes perdidos dentro del tiempo en que se pierde el mensaje de datos y se recibe un mensaje posterior.
C. Técnica de mensaje de parada
Determinadas realizaciones abordan el problema de un tráfico de red excesivo no formado por datos utilizando una técnica de mensaje de parada. En la técnica de mensaje de parada se envía un mensaje de parada para indicar a un destinatario que un emisor no proporcionará ningún mensaje de latido de corazón adicional y, por tanto, que el siguiente mensaje que el destinatario va a recibir es un mensaje de datos. El mensaje de parada también puede
45 denominarse como un mensaje final o un mensaje de suspensión de latido de corazón, por ejemplo. Además, el mensaje de parada puede ser un tipo de mensaje distinto o puede denotarse mediante un indicador en otro mensaje, tal como un mensaje de latido de corazón o un mensaje de datos. En un ejemplo, un mensaje de parada puede denotarse mediante un indicador en un mensaje de datos. En este ejemplo, la técnica de mensaje de parada puede usarse sola o en combinación con una técnica de mensajes de latido de corazón.
Además, el número de mensajes de latido de corazón y de mensajes de parada puede variar. Por ejemplo, pueden enviarse tres mensajes de latido de corazón seguidos de un mensaje de parada. En otro ejemplo, pueden enviarse tres mensajes de latido de corazón, presentando el último mensaje de latido de corazón un indicador de mensaje de parada. En otro ejemplo, el número de mensajes de latido de corazón que van a enviarse puede determinarse en
55 función de la latencia de un enlace/transporte que esté usándose.
La técnica de mensaje de parada aumenta la detección de mensajes de datos perdidos de manera similar a la descrita anteriormente con referencia a las figuras 2A a 2D. Además, la técnica de mensaje de parada reduce adicionalmente el tráfico de red provocado por mensajes de latido de corazón excesivos y proporciona cierta tolerancia a fallos de enlace transitorios, de manera similar a la técnica de intervalos crecientes descrita anteriormente con referencia a la figura 2B.
Las figuras 3A y 3B ilustran una ventaja de la técnica de mensaje de parada, siendo que se reduce el número de mensajes de latido de corazón enviados. La figura 3A ilustra mensajes de ejemplo que utilizan una técnica de latido 65 de corazón con intervalos crecientes como la descrita anteriormente. En este ejemplo, los mensajes de datos se denotan como “M” y los mensajes de latido de corazón se denotan como “HB”. Aquí, el intervalo de tiempo para los
E12758719
04-08-2014
mensajes de latido de corazón se dobla y los mensajes de latido de corazón incluyen el número de secuencia del último mensaje de datos enviado. En este ejemplo, un primer mensaje de datos M1 se envía con un número de secuencia de “0” en el tiempo t=0. El primer intervalo de tiempo es “1” y no se envían nuevos datos dentro de este intervalo de tiempo. Por tanto, el sistema envía un primer mensaje de latido de corazón HB1 con el número de
5 secuencia “0” en el tiempo t=1. En el tiempo t=3 (después de un intervalo de: 1 (intervalo anterior) * 2 (duplicación)= 2), donde no hay nuevos datos que enviar, el sistema envía un segundo mensaje de latido de corazón HB2 con el número de secuencia “0”. En el tiempo t=7 (después de un intervalo de: 2 (intervalo anterior) * 2 (duplicación)= 4), donde no hay nuevos datos que enviar, el sistema envía un tercer mensaje de latido de corazón HB3 con el número de secuencia “0”. En el tiempo t=11 (antes del tiempo siguiente en que va a enviarse un mensaje de latido de corazón), hay nuevos datos que enviar. Por tanto, el sistema envía un segundo mensaje de datos M2 y aumenta el número de secuencia a “1”. En el ejemplo de la figura 3A se envían tres mensajes de latido de corazón antes de que se envíe el segundo mensaje de datos. Estos mensajes de latido de corazón pueden resultar excesivos y pueden dar como resultado un mayor tráfico de red.
15 La figura 3B ilustra mensajes que utilizan una técnica de mensaje de parada de ejemplo como la descrita anteriormente. En este ejemplo, los mensajes de parada se denotan como “SM” y no se usan mensajes de latido de corazón. En cambio, después de un intervalo inicial de “1”, se envía un mensaje de parada que incluye el número de secuencia del último mensaje de datos enviado. En este ejemplo se envía un primer mensaje de datos M1 con un número de secuencia de “0” en el tiempo t=0. En el tiempo t=1, donde no hay nuevos datos que enviar, se envía el mensaje de parada SM1 con el número de secuencia “0”. Este mensaje de parada indica que no se enviará ningún mensaje de latido de corazón adicional y que el siguiente mensaje que va a recibirse es un mensaje de datos. En el tiempo t=11 se envía un mensaje de datos M2 con el número de secuencia “1”. La técnica de mensaje de parada ilustrada en la figura 3B reduce el tráfico de red al reducir el número de mensajes de latido de corazón. En el ejemplo de la figura 3A se envían tres mensajes de latido de corazón entre dos mensajes de datos mientras que, en
25 este ejemplo, solo se envía un mensaje de parada.
D. Técnica de borrado de estado de flujo de mensajes
Determinadas realizaciones tratan información de estado acerca de un flujo de mensajes mantenido por un emisor y un receptor. El estado de flujo de mensajes es información particular a un flujo de mensajes específico. Un flujo de mensajes es un canal de comunicación lógico para mensajes relacionados con un objeto, tema, etc., particular. Por ejemplo, cada objeto que está supervisándose puede tener un flujo de mensajes asociado para mensajes relacionados con ese objeto. Como otro ejemplo, cada usuario puede tener un flujo de mensajes para mensajes dirigidos específicamente a ese usuario, tal como un flujo de entrada personal. Para el emisor, el estado de flujo de
35 mensajes puede incluir el último número de secuencia enviado, el último tiempo de envío, copias de datos enviados para su retransmisión, una dirección o asunto para el destinatario e información relacionada con el intervalo de tiempo de envío para mensajes de latido de corazón, por ejemplo.
La dirección del destinatario puede ser diferente a la dirección de transporte y/o de enlace subyacente que incluye, por ejemplo, redes IP, comunicación entre procesos (“IPC”), memoria compartida y/o líneas de paso de mensajes, tal como InfiniBand®. Por ejemplo, determinas realizaciones pueden usarse por encima de un mecanismo de multidifusión IP en el que hay uno o más destinatarios asociados a un grupo de multidifusión de IP única. Los destinatarios identifican mensajes destinados a ellos mismos en función de un asunto/dirección incluido en el mensaje. Diferentes destinatarios pueden estar interesados en diferentes asuntos, pero cada miembro del grupo de
45 multidifusión IP recibirá todos los mensajes de multidifusión. Un destinatario que no esté interesado en un asunto particular descartaría ese mensaje, como si nunca lo hubiera recibido. Aunque el grupo de multidifusión de IP única puede tener un valor predefinido, el asunto/dirección será parte del estado de flujo de mensajes ya que es particular a un flujo de mensajes asociado a, por ejemplo, un objeto que está supervisándose.
Para un receptor, un estado de flujo de mensajes puede incluir el último número de secuencia recibido, el último tiempo de recepción, copias de mensajes fuera de orden, una dirección o asunto relacionados con el emisor e información relacionada con el intervalo de envío para detectar mensajes perdidos, por ejemplo. Dispositivos intermedios que, por ejemplo, encaminen los mensajes también pueden mantener el estado de flujo de mensajes de cada flujo de mensajes.
55 Tal información de estado de flujo de mensajes podría descartarse ya que solo ocupa una pequeña parte de la memoria o de otros recursos, tales como zócalos, procesamiento, conexiones o puertos de un servidor potente, incluso para muchos miles de objetos y/o usuarios. Sin embargo, si se espera que el servidor esté funcionando durante meses o más tiempo, en un momento dado el número de objetos y usuarios para los que debe mantener el estado de flujo de mensajes es ilimitado y, por tanto, en teoría, el servidor puede agotar su memoria u otros recursos. Además, pueden necesitarse o desearse memorias intermedias para cada flujo de mensajes si se soporta la reordenación de mensajes. Para un gran número de flujos de mensajes, esto puede representar una cantidad considerable de uso de memoria.
65 Además, determinados tipos de destinatarios pueden tener restricciones de memoria y/o de recursos más estrictas. Por ejemplo, grandes requisitos de memoria y/o de recursos puede no resultar práctico o rentable en algunos
E12758719
04-08-2014
dispositivos, tales como dispositivos móviles. Como otro ejemplo, una tarjeta de controlador de interfaz de red (“NIC”) especializada puede llevar a cabo un procesamiento de mensajes y puede tener limitaciones de recursos que influyen en el número de flujos que pueden mantenerse. Como otro ejemplo, dispositivos tales como encaminadores y/o puentes, incluyendo encaminadores de aplicación-protocolo, que pueden proporcionar información a un gran
5 número de clientes en un sitio o red remotos, pueden considerarse, en varias configuraciones, destinatarios o dispositivos intermedios. Algunos dispositivos pueden implementarse como dispositivos hardware de propósito especial con restricciones de memoria y/o recursos, por ejemplo. Por tanto, es deseable reducir la información de estado que es necesario almacenar para flujos de mensajes relacionados con mensajes poco frecuentes.
Determinadas realizaciones abordan el problema de almacenar información de estado de flujo de mensajes, en combinación con la técnica de mensajes de parada descrita anteriormente, borrando la información de estado de mensaje. Aunque la conexión de transporte subyacente, tal como una conexión de protocolo de control de transmisión (“TCP”) o un grupo de multidifusión, puede no estar cerrada, el estado de flujo de mensajes puede borrarse, descartarse, sobrescribirse y/o desasignarse de la memoria, liberando recursos asociados, tales como
15 zócalos. El borrado del estado de flujo de mensajes puede llevarse a cabo porque, aunque no haya mensajes que enviar, no es necesario almacenar la información de estado de flujo de mensajes. Por tanto, la información de estado puede borrarse después de que haberse enviado y/o recibido un mensaje de parada.
Cuando va a enviarse un nuevo mensaje de datos se crea un nuevo estado de flujo de mensajes que empieza por un número de secuencia predefinido. Por ejemplo, cada vez que se envía un nuevo mensaje de datos después de haberse enviado un mensaje de parada, el número de secuencia del nuevo mensaje de datos puede reajustarse a “0”. El destino del mensaje de datos puede obtenerse a partir del origen y/o contenido del propio mensaje. Por ejemplo, un asunto de un mensaje puede generarse en función de información de usuario. Como otro ejemplo, el destino puede obtenerse en función de información de usuario, información de pertenencia a un grupo, un
25 identificador de aplicación, un nombre de usuario y/o una cuenta. Puesto que está enviándose un nuevo mensaje de datos, el estado relacionado con el intervalo de envío se fija a un valor inicial predefinido. Por tanto, el estado de flujo de mensajes vuelve a crearse de manera eficaz.
La figura 3C ilustra mensajes de ejemplo que utilizan una técnica de mensaje de parada de ejemplo en combinación con una técnica de borrado de estado de flujo de mensajes de ejemplo descrita anteriormente. En este ejemplo, el número de secuencia de cada mensaje (tanto de mensajes de datos como de mensajes de parada) en un flujo de mensajes aumenta en “1”. El mensaje de datos M1 se envía con el número de secuencia “0”, el mensaje de datos M2 se envía con el número de secuencia “1” y el mensaje de parada SM1 se envía con el número de secuencia “2”. Después de enviar el mensaje de parada SM1, el estado de flujo de mensajes se borra por uno o más de entre el 35 emisor, el receptor y uno o más dispositivos intermedios. El número de secuencia para un mensaje de datos subsiguiente que va a enviarse se reajusta también al valor predeterminado “0”, ya que el estado de flujo de mensajes ha sido borrado. El envío del mensaje de parada SM1 indica al destinatario (y a cualquier dispositivo intermedio) que el siguiente mensaje recibido debería ser un mensaje de datos y que el número de secuencia del mensaje de datos debería ser “0”. En este ejemplo, en un momento posterior, el mensaje de datos M3 se envía con el número de secuencia “0”, el mensaje de datos M4 se envía con el número de secuencia “1” y el mensaje de parada SM2 se envía con el número de secuencia “2”. Después de recibir el mensaje de parada SM1, el destinatario espera recibir un mensaje de datos con un número de secuencia de “0”. Si, por ejemplo, se pierde el mensaje de datos M3, el destinatario recibirá en cambio el mensaje de datos M4 con el número de secuencia “1”. El destinatario determinará que se ha perdido un mensaje de datos porque el número de secuencia del mensaje de datos recibido
45 M4 no es “0”. En otro ejemplo, si se pierden los mensajes de datos M3 y M4, el destinatario determinará que se han perdido ambos mensajes de datos ya que el mensaje recibo será el mensaje de parada SM2 con un número de secuencia de “2” y no los mensajes de datos M3 y M4 con los números de secuencia de “0” y “1”.
E. Técnica de número de fase
Tal y como se ha descrito anteriormente, cuando se usa la técnica de borrado de estado de flujo de mensajes se crea un nuevo estado de flujo de mensajes que empieza con un número de secuencia predefinido. Por ejemplo, cada vez que se envía un nuevo mensaje de datos después de haberse enviado un mensaje de parada, el número de secuencia para el nuevo mensaje de datos se reajusta a “0”. Un sistema que borra el estado del flujo de
55 mensajes después de enviar un mensaje de parada puede no ser capaz de detectar mensajes de datos perdidos cuando se pierde una secuencia de mensajes completa. Una secuencia de mensajes es una secuencia de mensajes de datos y un mensaje de parada subsiguiente correspondiente. Aunque un sistema de este tipo puede detectar un mensaje de datos perdido debido a un orden incorrecto de números de secuencia, cuando se pierde una secuencia de mensajes completa los números de secuencia de los mensajes recibidos permanecen correctamente ordenados. Los mensajes recibidos permanecen correctamente ordenados porque los números de secuencia de una nueva secuencia de mensajes se reinician con un número de secuencia predeterminado, tal como “0”. Cuando se reajustan los números de secuencia de una nueva secuencia de mensajes puede no detectarse la pérdida de una secuencia de mensajes completa. Un ejemplo de este problema se ilustra en la figura 3D.
65 La figura 3D ilustra mensajes de ejemplo en los que una secuencia de mensajes completa puede perderse sin ser detectada. En este ejemplo, el número de secuencia de cada mensaje se incrementa en uno y se reajusta a “0” tras
E12758719
04-08-2014
el envío de un mensaje de parada. Por tanto, el mensaje de datos M1 se envía con el número de secuencia “0”, el mensaje de datos M2 se envía con el número de secuencia “1” y el mensaje de parada SM1 se envía con el número de secuencia “2”. Puesto que se envía un mensaje de parada, el número de secuencia del mensaje de datos subsiguiente se reajusta a “0”. El mensaje de datos M3 se envía con el número de secuencia “0”, el mensaje de
5 datos M4 se envía con el número de secuencia “1” y el mensaje de parada SM2 se envía con el número de secuencia “2”. Si se envía otro mensaje de parada, el número de secuencia del mensaje de datos subsiguiente se reajusta. El mensaje de datos M5 se envía con el número de secuencia “0”, el mensaje de datos M6 se envía con el número de secuencia “1” y el mensaje de parada SM3 se envía con el número de secuencia “2”.
En este ejemplo, el mensaje de datos M3, el mensaje de datos M4 y el mensaje de parada SM2 se pierden. Puesto que el número de secuencia de un mensaje de datos se reajusta después del envío de un mensaje de parada, el destinatario, en este ejemplo, no podrá detectar los mensajes perdidos M3, M4 y SM2. En este caso, el destinatario esperará recibir un mensaje de datos con un número de secuencia de “0” tras la recepción de SM1, y lo recibe, pero sin detectar la pérdida de los mensajes M3, M4 y SM2.
15 Como otro ejemplo, debido a los retardos de red y la pérdida de mensajes, parte de una secuencia de mensajes puede combinarse de manera no detectable con parte de una segunda secuencia de mensajes y, por tanto, el sistema puede no ser capaz de detectar la pérdida de estos mensajes combinados. La figura 3E ilustra un ejemplo. En este ejemplo, similar al ejemplo dado a conocer anteriormente y mostrado en la figura 3D, el número de secuencia de cada mensaje se incrementa en “1” y se reajusta a “0” tras el envío de un mensaje de parada. En el ejemplo de la figura 3E, el mensaje de datos M1 se envía con el número de secuencia “0”, el mensaje de datos M2 se envía con el número de secuencia “1”, el mensaje de datos M3 se envía con el número de secuencia “2” y el mensaje de parada SM1 se envía con el número de secuencia “3”. Los números de secuencia se reajustan y el mensaje de datos M4 se envía con el número de secuencia “0”, el mensaje de datos M5 se envía con el número de
25 secuencia “1”, el mensaje de datos M6 se envía con el número de secuencia “2” y el mensaje de parada SM2 se envía con el número de secuencia “3”.
En este ejemplo, los mensajes M3, SM1, M4 y M5 se pierden. Tras la recepción del mensaje de datos M2 con el número de secuencia “1”, el destinatario espera recibir un mensaje de datos con un número de secuencia de “2”. Puesto que los números de secuencia se reajustan tras el envío de un mensaje de parada, el destinatario recibe un mensaje de datos con un número de secuencia de “2”, pero sin detectar la pérdida de los mensajes M3, SM1, M4 y M5. Este escenario puede producirse si los mensajes se envían en intervalos más grandes y se almacenan en memorias intermedias y/o son retardados en un dispositivo intermedio, por lo que algunos mensajes se pasan por alto.
35 Para abordar el escenario en que se borra el estado de flujo de mensajes, se reajustan los números de secuencia de mensajes de datos subsiguientes enviados y en el que pueden perderse secuencias de mensajes, determinadas realizaciones proporcionan un número de fase que se incluye en cada mensaje además del número de secuencia. El número de fase es un identificador que no varía en una secuencia de mensajes completa y que se fija a otro valor para una secuencia de mensajes posterior, por ejemplo después del envío de un mensaje de parada. El número de fase puede ser un valor numérico, alfanumérico o un patrón de bits, por ejemplo.
La figura 3F ilustra los mensajes de ejemplo de la figura 3D con números de fase según la técnica de número de fase. En el ejemplo mostrado en la figura 3F, los números de fase de cada secuencia de mensajes se incrementan
45 en uno. Por tanto, la primera secuencia de mensajes se envía con el número de fase “0”, la segunda secuencia de mensajes se envía con el número de fase “1” y la tercera secuencia de mensajes se envía con el número de fase “2”. En este ejemplo, el destinatario espera recibir secuencias de mensajes con números de fase incrementados en uno. Por lo tanto, cuando se recibe la tercera secuencia de mensajes con el número de fase “2” después de haberse recibido la primera secuencia de mensajes con el número de fase “0”, el destinatario puede determinar que se ha perdido una secuencia de mensajes con el número de fase “1”.
La figura 3G ilustra los mensajes de ejemplo de la figura 3E con números de fase incluidos. En la figura 3G, los números de fase de cada secuencia de mensajes se incrementan en uno. Por tanto, la primera secuencia de mensajes se envía con el número de fase “0” y la segunda secuencia de mensajes se envía con el número de fase
55 “1”. En este ejemplo, el destinatario espera recibir secuencias de mensajes con números de fase incrementados en uno. Tras recibir el mensaje de datos M2 con el número de secuencia “1” y el número de fase “0”, el destinatario espera recibir un mensaje de datos con un número de secuencia de “2” y un número de fase de “0”. Si se pierden los mensajes M3, SM1, M4 y M5, el destinatario recibe en cambio el mensaje de datos M6 con el número de secuencia “2” y el número de fase “1”. Puesto que el número de fase del mensaje de datos recibido no es “0”, el destinatario puede detectar una secuencia de mensajes perdidos.
En otro ejemplo, el número de fase es parte del estado de flujo de mensajes que puede borrarse ya que cada mensaje de la misma secuencia de mensajes tiene la misma fase. Los beneficios de borrar el estado de flujo de mensajes se han descrito anteriormente. Cuando comienza una nueva secuencia de mensajes, el valor de la fase de
65 la siguiente secuencia de mensajes se toma de un valor o función global disponible en el emisor, que se modifica de manera no repetitiva o con muy poca frecuencia cada vez que se envía una nueva secuencia desde el emisor. Esto
E12758719
04-08-2014
da como resultado que un destinatario no pueda predecir el siguiente número de fase. Por ejemplo, el emisor puede mantener un único valor entero sin signo de 32 bits que está disponible para la implementación de protocolo y que se incrementa en uno cada vez que se inicia una nueva secuencia de mensajes. Un nuevo número de fase se elige cada vez que se envía una nueva secuencia desde el emisor, independientemente del destinatario. Por tanto, en
5 este ejemplo, el destinatario no puede predecir el número de fase de las secuencias de mensajes porque el emisor puede estar enviando secuencias de mensajes a muchos destinatarios diferentes.
La figura 3H ilustra mensajes de ejemplo en los que un destinatario no puede predecir el número de fase de una secuencia de mensajes. La figura 3H es similar al ejemplo ilustrado en la figura 3G pero, en la figura 3H, los números de fase se asignan de manera aleatoria. En el ejemplo de la figura 3H, la primera secuencia de mensajes se envía con el número de fase “0” y la segunda secuencia de mensajes se envía con el número de fase “5”. Tras recibir el mensaje de datos M2 con el número de secuencia “1” y el número de fase “0”, el destinatario esperará recibir un mensaje de parada o un mensaje de datos con el número de fase “0”. Si los mensajes M3, SM1, M4 y M5 se pierden, el destinatario recibe el mensaje de datos M6 con el número de secuencia “2” y el número de fase “5”.
15 Comparando el número de fase “5” del mensaje de datos M6 con el número de fase “0” del mensaje de datos M2, el destinatario determina que se ha perdido una secuencia de mensajes.
En otro ejemplo, si un destinatario no puede predecir el número de fase de una secuencia de mensajes, el destinatario puede no ser capaz de detectar la pérdida de una secuencia de mensajes completa si los números de fase se borran con el estado de flujo de mensajes. Para detectar mensajes perdidos en este ejemplo, puede emplearse un mecanismo que puede detectar problemas de estado de enlace. Por ejemplo, un mecanismo aparte que envía latidos de corazón periódicos en cada mecanismo de enlace/transporte, independiente de los flujos de mensajes específicos debido a que múltiples flujos de mensajes pueden enviarse en el mismo enlace/transporte, puede detectar estos tipos de fallos de enlace y las aplicaciones pueden actuar en consecuencia para evitar
25 problemas debidos a la pérdida de una secuencia completa. Además, en algunas situaciones, debido a la naturaleza de los datos, la pérdida de una secuencia de mensajes puede resultar evidente al destinatario en el momento de procesar una secuencia posterior.
La figura 4 ilustra un diagrama de flujo 400 de ejemplo de un método de envío de mensajes usando números de fase como se ha descrito anteriormente. En este ejemplo, los números de fase se usan con cada mensaje junto con números de secuencia y no se usan mensajes de latido de corazón, solo un mensaje de parada después de un intervalo inicial en el que no se ha enviado ningún mensaje de datos. En determinadas realizaciones, los mensajes de latido de corazón también pueden enviarse antes del envío de un mensaje de parada. Además, también se incorpora una realización de la técnica de borrado de estado de flujo de mensajes descrita anteriormente.
35 En el bloque 401 se determina si va a enviarse un nuevo mensaje. El nuevo mensaje puede ser, por ejemplo, un nuevo mensaje de datos o un mensaje de parada. Por ejemplo, un nuevo mensaje de datos que va a enviarse puede recibirse desde una aplicación. Como otro ejemplo, un temporizador asociado a un intervalo inicial puede expirar, lo que indica que debería enviarse un mensaje de parada. En determinadas realizaciones, un nuevo mensaje que va a enviarse puede ser un mensaje de latido de corazón. Si se determina que no va a enviarse un nuevo mensaje, entonces el control vuelve al bloque 401.
Si va a enviarse un nuevo mensaje (como se determina en el bloque 401), en el bloque 402 se determina un número de fase. Si el nuevo mensaje es el primer mensaje de datos en una secuencia de mensajes, el número de fase
45 puede determinarse, por ejemplo, incrementando el número de fase de la secuencia de mensajes anterior (o empezando en un valor predefinido tal como “0” si ésta es la primera secuencia de mensajes enviada) o tomando un nuevo número de fase a partir de un valor o función global. Por ejemplo, el número de fase de la última secuencia de mensaje puede incrementarse en 1 de “0” a “1”. Si el nuevo mensaje no es el primer mensaje de datos en una secuencia de mensajes, el número de fase puede determinarse como el número de fase del último mensaje enviado. Por ejemplo, si el número de fase del último mensaje enviado fue “1”, entonces el número de fase del nuevo mensaje que va a enviarse es también “1”.
En el bloque 403 se determina un número de secuencia. Si el nuevo mensaje es un mensaje de datos, el número de secuencia puede determinarse incrementando el número de secuencia del mensaje de datos enviado anteriormente
55 (o empezando por un valor predefinido tal como “0” si éste es el primer mensaje de datos en la secuencia de mensajes). Por ejemplo, el número de secuencia puede incrementarse en 1 de “0” a “1”. Si el nuevo mensaje es un mensaje de parada (o, en determinadas realizaciones, un mensaje de latido de corazón), el número de secuencia puede determinarse como el número de secuencia del último mensaje de datos enviado en la secuencia de mensajes.
En el bloque 404, si el nuevo mensaje es un mensaje de datos, el control avanza hasta el bloque 405. Si el nuevo mensaje es un mensaje de parada, el control avanza hasta el bloque 406.
En el bloque 405 se envía el nuevo mensaje (un mensaje de datos) y el control vuelve al bloque 401.
65 En determinadas realizaciones que incorporan mensajes de latido de corazón, el control pasa del bloque 404 a un
E12758719
04-08-2014
bloque para enviar el nuevo mensaje de latido de corazón y para determinar un nuevo tiempo de latido de corazón subsiguiente antes de que el control vuelva al bloque 401.
En el bloque 406 se envía el nuevo mensaje (un mensaje de parada). En el bloque 407 se borra el estado de flujo de 5 mensajes, como se ha descrito anteriormente, y el control vuelve al bloque 401.
La figura 5 ilustra un diagrama de flujo 500 de ejemplo de un método de recepción de mensajes según la técnica de números de fase descrita anteriormente. En este ejemplo se usan números de fase con cada mensaje junto con números de secuencia y cada flujo de mensajes tiene un número de fase diferente. Por ejemplo, cada flujo de 10 mensajes puede tener un número de fase mayor que el número de fase del flujo de mensajes anterior. Como otro ejemplo, cada flujo de mensajes puede tener un número de fase que no es predecible por el destinatario. Además, en este ejemplo, cada mensaje de datos tiene un número de secuencia diferente. Por ejemplo, cada mensaje de datos puede tener un número de secuencia mayor que el número de secuencia del mensaje de datos anterior. En este ejemplo no se usan mensajes de latido de corazón, solo un mensaje de parada después de un intervalo inicial
15 en el que no se ha enviado un mensaje de datos. En determinadas realizaciones también pueden enviarse mensajes de latido de corazón antes de que se envíe un mensaje de parada. Además, también se incorpora una realización de la técnica de borrado de estado de flujo de mensajes descrita anteriormente.
En el bloque 501 se recibe un mensaje. El mensaje puede ser un mensaje de datos o un mensaje de parada, por
20 ejemplo. Un mensaje perdido puede notificarse si un mensaje no se recibe dentro de un intervalo de tiempo esperado. El intervalo de tiempo esperado puede basarse en el intervalo de tiempo inicial entre un mensaje de datos y el primer mensaje de latido de corazón (o, en este caso, un mensaje de parada) o el intervalo de tiempo esperado puede basarse, por ejemplo, en el intervalo entre dos mensajes de latido de corazón. Por ejemplo, el intervalo de tiempo inicial y/o el intervalo entre dos mensajes de latido de corazón pueden aumentar en una cantidad constante o
25 doblarse para permitir variaciones de retardo de red para determinar el intervalo de tiempo esperado.
En el bloque 502 se determina el número de fase esperado del mensaje recibido. El número de fase esperado del mensaje recibido, en este ejemplo, es el mismo que el número de fase del mensaje recibido anteriormente en la secuencia de mensajes. Si el mensaje recibido es el primer mensaje de la secuencia de mensajes (lo que puede 30 determinarse en función de si no se han recibido mensajes anteriores o el mensaje anterior era un mensaje de parada), el número de fase esperado se determina en función de si el receptor puede predecir o no el número de fase. Si el receptor puede predecir el número de fase, el número de fase esperado puede determinarse según una función predeterminada. Por ejemplo, el número de fase esperado puede determinarse incrementando el número de fase de la secuencia de mensajes anterior (o empezando en un valor predefinido tal como “0” si ésta es la primera
35 secuencia de mensajes recibida). Si el receptor no puede predecir el número de fase, el número de fase del primer mensaje recibido en la secuencia de mensajes se toma como el número de fase esperado y se espera que sea diferente del número de fase de la secuencia de mensajes anterior.
En el bloque 503 se determina el número de secuencia esperado del mensaje recibido. Si el mensaje recibido es un
40 mensaje de datos, el número de secuencia esperado puede determinarse incrementando el número de secuencia del mensaje recibido anteriormente (o a partir de un número de secuencia inicial predefinido si no se ha recibido ningún mensaje anterior en esta secuencia de mensajes). Por ejemplo, el número de secuencia puede incrementarse en 1 de “0” a “1”. Si el mensaje recibido es un mensaje de parada, en este ejemplo, el número de secuencia esperado será el mismo que el número de secuencia del mensaje recibido anteriormente.
45 En el bloque 504, el número de fase del mensaje recibido se compara con el número de fase esperado determinado en el bloque 502.
Si el número de fase del mensaje recibido no es igual al número de fase esperado (como se determina en el bloque
50 504), en el bloque 505 puede notificarse un mensaje de datos perdido. En determinadas realizaciones, un mensaje perdido solo puede notificarse si el mensaje perdido es un mensaje de datos. En determinadas realizaciones, el sistema puede determinar que falta un mensaje y esperar durante un periodo de tiempo la recepción del mensaje extraviado. Si el mensaje extraviado no se recibe en el periodo de tiempo, el sistema puede notificar entonces que el mensaje extraviado se ha perdido.
55 Si el número de fase del mensaje recibido es igual al número de fase esperado (como se determina en el bloque 504), en el bloque 506 se compara el número de secuencia del mensaje recibido con el número de secuencia esperado determinado en el bloque 503.
60 Si el número de secuencia del mensaje recibido no es igual al número de secuencia esperado (como se determina en el bloque 506), en el bloque 505 puede notificarse un mensaje perdido, como se ha descrito anteriormente.
Si el número de secuencia del mensaje recibido es igual al número de secuencia esperado (como se determina en el bloque 506), en el bloque 507, si el mensaje recibido es un mensaje de datos, el control avanza hasta el bloque 508.
65 Si el mensaje recibido es un mensaje de parada, el control avanza hasta el bloque 509.
E12758719
04-08-2014
Si el mensaje recibido es un mensaje de datos, en el bloque 508 se procesa el mensaje de datos. Por ejemplo, un mensaje de datos recibido puede pasarse a una aplicación. El control vuelve después al bloque 501.
Si el mensaje recibido es un mensaje de parada, en el bloque 509 se borra el estado de flujo de mensajes, como se 5 ha descrito anteriormente, y el control vuelve al bloque 501.
En determinadas realizaciones que incorporan mensajes de latido de corazón, el control pasaría del bloque 507 a un bloque para actualizar el siguiente tiempo de latido de corazón esperado, y el control volvería al bloque 501.
10 IV. Dispositivos emisores y dispositivos receptores de ejemplo
La figura 6 ilustra un diagrama de bloques de un dispositivo emisor 600 de ejemplo. El dispositivo emisor 600 implementa las técnicas dadas a conocer anteriormente de manera individual y combinada. El dispositivo emisor 600 incluye un emisor de mensajes 601, una unidad de identificación de mensajes 602, un generador de números de
15 fase 603, un generador de números de secuencia 604 y una unidad de borrado de estado de flujo de mensajes 605.
En determinadas realizaciones solo puede implementarse un subconjunto de las técnicas descritas anteriormente (y/o un subconjunto de combinaciones). Por ejemplo, un dispositivo emisor que no proporciona la técnica de números de fase no puede incluir un generador de números de fase 603.
20 El emisor de mensajes 601 envía mensajes. Por ejemplo, el emisor de mensajes 601 puede enviar mensajes de datos, mensajes de latido de corazón y mensajes de parada. Dependiendo de la(s) técnica(s) particular(es) que esté(n) utilizándose, algunos tipos de mensaje no pueden enviarse. Por ejemplo, si la técnica de números de fase está utilizándose solamente con mensajes de parada, no se enviarán mensajes de latido de corazón. Como otro
25 ejemplo, la técnica de números de fase puede utilizarse con la técnica de latido de corazón con intervalos crecientes y la técnica de mensajes de parada, de manera que los mensajes de datos, los mensajes de latido de corazón y los mensajes de parada pueden enviarse. Además, dependiendo de la(s) técnica(s) particular(es) que esté(n) utilizándose, los mensajes pueden incluir números de secuencia o tanto números de fase como números de secuencia. Por ejemplo, los mensajes enviados utilizando la técnica de latido de corazón con intervalos crecientes
30 no pueden incluir números de fase. Como otro ejemplo, los mensajes enviados utilizando la técnica de números de fase pueden incluir tanto números de fase como números de secuencia.
El emisor de mensajes 601 puede recibir datos a enviar en un mensaje de datos desde una aplicación. El emisor de mensajes 601 puede realizar un seguimiento del siguiente tiempo de latido de corazón, de manera que los mensajes
35 de latido de corazón y/o los mensajes de parada pueden enviarse a intervalos apropiados según la(s) técnica(s) particular(es) que esté(n) utilizándose.
En determinadas realizaciones pueden utilizarse diferentes emisores de mensajes para enviar diferentes tipos de mensaje.
40 La unidad de identificación de mensajes 602 identifica el tipo de mensaje que está enviándose. Por ejemplo, la unidad de identificación de mensajes 602 puede identificar un mensaje a enviar como un mensaje de datos, un mensaje de latido de corazón o un mensaje de parada.
45 El generador de números de fase 603 determina y proporciona un número de fase para un mensaje que va a enviarse. El número de fase se proporciona al emisor de mensajes 601 para mensajes a enviar que incluyen un número de fase. El número de fase puede determinase de la manera descrita anteriormente. Cuando el mensaje que va a enviarse es el primer mensaje de una secuencia de mensajes, el número de fase puede determinarse, por ejemplo, incrementando el número de fase de la secuencia de mensajes anterior (o empezando en un valor
50 predefinido tal como “0” si ésta es la primera secuencia de mensajes enviada) o tomando un número de fase de un valor o función global. Cuando el mensaje a enviar no es el primer mensaje de una secuencia de mensajes, el número de fase puede determinarse como el número de fase del último mensaje enviado.
El generador de números de secuencia 604 determina y proporciona un número de secuencia para un mensaje que
55 va a enviarse. El número de secuencia puede determinarse en función del tipo de mensaje que está enviándose. El número de secuencia puede determinarse de la manera descrita anteriormente. En algunas realizaciones, el número de secuencia para un mensaje de latido de corazón y/o un mensaje de parada es el mismo que el número de secuencia del último mensaje de datos enviado. En algunas realizaciones, el número de secuencia de un mensaje de latido de corazón y/o un mensaje de parada se incrementa a partir del número de secuencia del último mensaje
60 enviado, si el último mensaje fue un mensaje de datos o un mensaje de latido de corazón. En algunas realizaciones, para el primer mensaje de una nueva secuencia de mensajes, el número de secuencia se reajusta a un valor predefinido.
La unidad de borrado de estado de flujo de mensajes 605 borra el estado de flujo de mensajes después de enviarse 65 un mensaje de parada, como se ha descrito anteriormente.
E12758719
04-08-2014
La figura 7 ilustra un diagrama de bloques de un dispositivo receptor 700 de ejemplo. El dispositivo receptor 700 implementa las técnicas descritas anteriormente de manera individual y combinada. El dispositivo receptor 700 incluye un receptor de mensajes 701, una unidad de identificación de mensajes 702, un generador de número de fase esperado 703, un generador de número de secuencia esperado 704, un comparador de números de fase 705,
5 un comparador de números de secuencia 706, un notificador de mensajes perdidos 707, un procesador de mensajes 708 y una unidad de borrado de estado de flujo de mensajes 709.
En determinadas realizaciones solo puede implementarse un subconjunto de las técnicas descritas anteriormente (y/o un subconjunto de combinaciones). Por ejemplo, un dispositivo receptor que no proporciona la técnica de
10 números de fase no puede incluir un generador de número de fase esperado 703 y/o un comparador de números de fase 705.
El receptor de mensajes 701 recibe mensajes. Por ejemplo, el receptor de mensajes 701 puede recibir mensajes de datos, mensajes de latido de corazón y mensajes de parada. Dependiendo de la(s) técnica(s) particular(es) que 15 esté(n) utilizándose, algunos tipos de mensaje no pueden recibirse. Por ejemplo, si la técnica de números de fase está utilizándose solamente con mensajes de parada, no se recibirán mensajes de latido de corazón. Como otro ejemplo, la técnica de números de fase puede utilizarse con la técnica de latido de corazón con intervalos crecientes y la técnica de mensajes de parada, de manera que los mensajes de datos, los mensajes de latido de corazón y los mensajes de parada pueden recibirse. Además, dependiendo de la(s) técnica(s) particular(es) que esté(n)
20 utilizándose, los mensajes pueden incluir números de secuencia o tanto números de fase como números de secuencia. Por ejemplo, los mensajes recibidos utilizando la técnica de latido de corazón con intervalos crecientes no pueden incluir números de fase. Como otro ejemplo, los mensajes recibidos utilizando la técnica de números de fase pueden incluir tanto números de fase como números de secuencia.
25 El receptor de mensajes 701 puede realizar un seguimiento del siguiente tiempo de latido de corazón esperado, de manera que los mensajes de latido de corazón y/o los mensajes de parada se detectan como perdidos si se reciben dentro de un intervalo de tiempo esperado. El intervalo de tiempo esperado puede basarse en el intervalo de tiempo inicial entre un mensaje de datos y el primer mensaje de latido de corazón o mensaje de parada, o el intervalo de tiempo esperado puede basarse, por ejemplo, en el intervalo entre dos mensajes de latido de corazón. Por ejemplo,
30 el intervalo de tiempo inicial y/o el intervalo entre dos mensajes de latido de corazón pueden incrementarse en una cantidad constante o doblarse para permitir variaciones de retardo de red para determinar el intervalo de tiempo esperado.
En determinadas realizaciones pueden utilizarse diferentes receptores de mensajes para recibir diferentes tipos de 35 mensaje.
La unidad de identificación de mensajes 702 identifica el tipo de mensaje recibido. Por ejemplo, la unidad de identificación de mensajes 702 puede identificar un mensaje recibido como un mensaje de datos, un mensaje de latido de corazón o un mensaje de parada.
40 El generador de número de fase esperado 703 determina y proporciona un número de fase esperado para un mensaje recibido. El número de fase puede determinarse de la manera descrita anteriormente. El número de fase esperado del mensaje recibido es el mismo que el número de fase del mensaje recibido anteriormente en la secuencia de mensajes. Si el mensaje recibido es el primer mensaje de la secuencia de mensajes (que puede
45 determinarse en función de si no se han recibido mensajes anteriores o el mensaje anterior era un mensaje de parada), el número de fase esperado se determina en función de si el receptor puede predecir o no el número de fase. Si el receptor puede predecir el número de fase, el número de fase esperado puede determinarse según una función predeterminada. Por ejemplo, el número de fase esperado puede determinarse incrementando el número de fase de la secuencia de mensajes anterior (o empezando en un valor predefinido tal como “0” si ésta es la primera
50 secuencia de mensajes recibida). Si el receptor no puede predecir el número de fase, el número de fase del primer mensaje recibido en la secuencia de mensajes se toma como el número de fase esperado y se espera que sea diferente del número de fase de la secuencia de mensajes anterior.
El generador de número de secuencia esperado 704 determina y proporciona un número de secuencia esperado
55 para un mensaje recibido. El número de secuencia esperado puede determinarse en función del tipo de mensaje recibido. El número de secuencia esperado puede determinarse de la manera descrita anteriormente. En algunas realizaciones, el número de secuencia esperado para un mensaje de latido de corazón y/o un mensaje de parada es el mismo que el número de secuencia para el último mensaje de datos recibido. En algunas realizaciones, el número de secuencia esperado para un mensaje de latido de corazón y/o un mensaje de parada se incrementa a partir del
60 número de secuencia del último mensaje de datos recibido. En algunas realizaciones, para el primer mensaje de una nueva secuencia de mensajes, el número de secuencia esperado se reajusta el un valor predefinido.
El comparador de números de fase 705 determina si un número de fase del mensaje recibido es igual al número de fase esperado proporcionado por el generador de número de fase esperado 703. Si no, el notificador de mensajes
65 perdidos 707 se usa para notificar un mensaje perdido.
E12758719
04-08-2014
El comparador de números de secuencia 706 determina si un número de secuencia del mensaje recibido es igual al número de secuencia esperado proporcionado por el generador de número de secuencia esperado 704. Si no, el notificador de mensajes perdidos 707 se usa para notificar un mensaje perdido.
5 El notificador de mensajes perdidos 707 notifica un mensaje perdido. En determinadas realizaciones, un mensaje perdido solo puede notificarse si el mensaje perdido es un mensaje de datos. En determinadas realizaciones, el receptor de mensajes 701 puede determinar que falta un mensaje y esperar durante un periodo de tiempo la recepción del mensaje extraviado. Si el mensaje extraviado no se recibe en el periodo de tiempo, el receptor de mensajes 701 puede usar entonces el notificador de mensajes perdidos 707 para notificar que el mensaje extraviado se ha perdido.
El procesador de mensajes 708 procesa el mensaje recibido. Por ejemplo, un mensaje de datos recibido puede pasarse a una aplicación.
15 La unidad de borrado de estado de flujo de mensajes 709 borra el estado de flujo de mensajes tras la recepción de un mensaje de parada, como se ha descrito anteriormente.
V. Sistema de transacciones electrónicas de ejemplo
Como resulta evidente a partir de lo expuesto anteriormente, las realizaciones se aplican a un entorno interconectado en el que los datos se envían por y se reciben desde dispositivos conectados. Un entorno de este tipo a modo de ejemplo es un sistema de transacciones electrónicas, en el que una central electrónica transmite mensajes relacionados con datos de mercado a un dispositivo de transacciones. Los datos de mercado incluyen, por ejemplo, datos de precios, datos de profundidad del mercado, datos de la última cantidad negociada y/o cualquier
25 dato relacionado con un mercado para un objeto negociable. En algunos sistemas de transacciones electrónicas, el dispositivo de transacciones envía mensajes relacionados con órdenes de negocio a la central electrónica. Tras recibir una orden de negocio, la central electrónica introduce la orden de negocio en un registro de órdenes de la central y trata de relacionar la cantidad de la orden de negocio con la cantidad de una o más órdenes de negocio contralaterales (contra-side trade orders). En determinadas realizaciones, cada orden puede tener un flujo de mensajes asociado para mensajes relacionados con esa orden.
En algunos sistemas de transacciones electrónicas, los mensajes pueden enviarse con poca frecuencia. Los mensajes pueden estar relacionados, por ejemplo, con objetos que están supervisándose, tales como órdenes. Por ejemplo, la información acerca del estado de una orden puede enviarse solamente cuando hay un cambio en el
35 estado de esa orden. Los cambios de estado de una orden pueden incluir ejecuciones, ejecuciones parciales, un cambio en el precio de la orden o la cancelación de una orden, por ejemplo. Si la orden no se ciñe al mercado, por ejemplo, su estado puede no variar durante una hora o más. En algunos casos, la orden puede ser una orden que no se ciña en un momento dado al mercado, tales como órdenes emitidas, y el estado puede no variar en horas o días. Tales órdenes emitidas pueden incluir, por ejemplo, órdenes hold, good till canceled (“GTC”), good till date (“GTD”), limit-if-touched, market-if-touched, limit-on-close, market-on-close, limit-on-open y market-on-open. Las órdenes “GTC” mantienen un precio establecido activo hasta que se cancelan o se ejecutan. Las órdenes “GTD” permanecen activas hasta una fecha establecida. Las órdenes que han sido ejecutadas ya no se ciñen al mercado.
Como otro ejemplo, información acerca de cambios de estado relacionados con un servidor, tal como si el servidor
45 está accesible o inaccesible y si la conexión a la central está accesible o inaccesible, puede enviarse con poca frecuencia. Como otro ejemplo, mensajes no relacionados con órdenes, tales como nuevos mensajes, pueden enviarse con poca frecuencia. Como otro ejemplo, las descargas de archivos y del registro de órdenes iniciales puede producirse con poca frecuencia, tal como en el arranque y cuando se detectan posteriormente mensajes perdidos. Un único operador no tiene por qué emitir un gran número de órdenes, pero si un registro de órdenes es compartido por múltiples usuarios, de manera combinada, un gran número de órdenes u otros tipos de estado relacionados con el registro de órdenes compartido pueden incluir información enviada con poca frecuencia. Por ejemplo, un administrador, tal como un gestor de riesgos, puede tener acceso a los registros de órdenes de cada operador. Como otro ejemplo, todos los operadores de una empresa particular pueden compartir un registro de órdenes debido a que realizan transacciones con la misma cuenta en la central. En casos de registros de órdenes
55 compartidos, cada destinatario que comparte el registro de órdenes puede recibir posiblemente mensajes relacionados con el registro de órdenes.
La figura 8 ilustra un diagrama de bloques de un sistema de transacciones electrónicas 800 en el que pueden utilizarse determinadas realizaciones. El sistema 800 incluye un dispositivo de transacciones 810, una pasarela 820 y una central electrónica 830. El dispositivo de transacciones 810 está en comunicación con la pasarela 820. La pasarela 820 está en comunicación con la central 830.
Tal y como se usa en el presente documento, la expresión “en comunicación con” puede incluir en comunicación directa y comunicación indirecta a través de uno o más componentes intermedios.
65 En funcionamiento, el dispositivo de transacciones 810 puede enviar órdenes a la central 830 para comprar o vender
E12758719
04-08-2014
15
25
35
45
55
objetos negociables. Por ejemplo, un usuario puede utilizar el dispositivo de transacciones 810 para enviar las órdenes. Las órdenes se envían a través de la pasarela 820 a la central 830. Además, los datos de mercado se envían desde la central 830 a través de la pasarela 820 al dispositivo de transacciones 810. El usuario también puede utilizar el dispositivo de transacciones 810 para supervisar estos datos de mercado y/o basar una decisión en los datos de mercado para enviar una orden para un objeto negociable.
Un objeto negociable es cualquier cosa que pueda negociarse con una cantidad y/o un precio. Por ejemplo, productos financieros, incluyendo acciones, opciones, bonos, futuros, divisas, certificados de adquisición de acciones, derivados de fondos, valores, productos básicos, canjes, productos de tasa de interés, productos basados en índices, eventos negociados, bienes, cobros y/o combinaciones de los mismos pueden ser objetos negociables. Un objeto negociable puede ser “real” o “sintético”. Un objeto negociable real incluye productos que están presentes y/o son administrados por una central. Un objeto negociable sintético incluye productos definidos por el usuario. Por ejemplo, un objeto negociable sintético puede incluir una combinación de productos reales (u otros sintéticos) tal como una diversificación sintética creada por un usuario utilizando un dispositivo de transacciones 810. Puede haber un objeto negociable real que corresponda y/o sea similar a un objeto negociable sintético.
El dispositivo de transacciones 810 puede incluir una o más plataformas informáticas electrónicas tales como, por ejemplo, un dispositivo de mano, un ordenador portátil, un ordenador de escritorio, una estación de trabajo con un procesador de uno o varios núcleos, un servidor con múltiples procesadores y/o conjuntos de ordenadores. Por ejemplo, aunque se representa de manera lógica como un único dispositivo, el dispositivo de transacciones 810 puede incluir un terminal de transacciones en comunicación con un servidor, donde el terminal de transacciones y el servidor forman conjuntamente el dispositivo de transacciones 810. El terminal de transacciones puede proporcionar una pantalla de transacciones a un usuario y puede comunicar comandos al servidor para procesar adicionalmente los datos introducidos por el usuario a través de la pantalla de transacciones, tal como la emisión de órdenes.
Generalmente, el dispositivo de transacciones 810 pertenece a, se hace funcionar, está controlado, programado, configurado o es usado de otro modo por un usuario. Tal y como se usa en el presente documento, el término “usuario” puede incluir, pero no está limitado a, una persona (por ejemplo, un operador) o un dispositivo de transacciones electrónicas (por ejemplo, un sistema de transacciones algorítmico). Uno o más usuarios pueden estar implicados en la pertenencia, operación, control, programación, configuración u otro uso, por ejemplo.
El dispositivo de transacciones 810 puede incluir una o más aplicaciones de transacciones. La(s) aplicación(es) de transacciones puede(n), por ejemplo, procesar datos de mercado organizando y visualizando los datos de mercado en ventanas de transacciones y de gráficos. Los datos de mercado pueden recibirse desde la central 830, por ejemplo. Como otro ejemplo, los datos de mercado pueden recibirse desde un entorno de simulación que proporciona datos históricos y/o simula una central, pero que no lleva a cabo transacciones en el mundo real. Este procesamiento puede basarse en preferencias de usuario, por ejemplo. La(s) aplicación(es) de transacciones puede(n) incluir una herramienta de transacciones automatizada, tal como un herramienta de transacciones de diversificación automatizada. La una o más aplicaciones de transacciones pueden estar distribuidas en uno o más de los dispositivos informáticos del dispositivo de transacciones 810. Por ejemplo, determinados componentes de una aplicación de transacciones pueden ejecutarse en una estación de trabajo de transacciones y otros componentes de la aplicación de transacciones pueden ejecutarse en un servidor en comunicación con la estación de trabajo.
El dispositivo de transacciones 810 puede incluir, por ejemplo, una estación de trabajo de transacciones electrónicas, un dispositivo de transacciones portátil, un sistema de transacciones algorítmico tal como un sistema de “caja negra” o “caja gris”, un sistema de transacciones integrado y/o una herramienta de transacciones automatizada. Por ejemplo, el dispositivo de transacciones 810 puede ser un sistema informático que ejecute una copia de X_TRADER®, una plataforma de transacciones electrónicas proporcionada por Trading Technologies International, Inc., de Chicago, Illinois. Como otro ejemplo, el dispositivo de transacciones 810 puede ser un dispositivo informático que ejecute una herramienta de transacciones automatizada, tal como Autospreader® y/o AutotraderTM, también proporcionadas por Trading Technologies International, Inc.
Como otro ejemplo, el dispositivo de transacciones 810 puede incluir una aplicación de transacciones que procese de manera algorítmica datos de mercado e incluya una interfaz de usuario para emitir de manera manual órdenes en función del procesamiento algorítmico o para manipular órdenes que se emitieron automáticamente. Una aplicación de transacciones algorítmica es una aplicación de transacciones que incluye un algoritmo procesado de manera automática para llevar a cabo determinadas acciones. Es decir, la aplicación de transacciones incluye una serie automatizada de instrucciones para llevar a cabo acciones definidas. Las acciones pueden incluir procesar datos de mercado de una manera particular, emitir una orden, modificar una orden existente, borrar una orden, abstenerse de emitir una orden, seleccionar los objetos negociables con los que tratar, determinar un precio con el que emitir o modificar una orden, determinar una cantidad con la que emitir o modificar una orden, determinar si una orden debería ser para comprar o vender, y retrasar una acción durante un periodo de tiempo, por ejemplo.
Tal y como se usa en el presente documento, un algoritmo (denominado también como algoritmo de transacciones) se especifica mediante una definición que incluye expresiones lógicas y parámetros que describen el algoritmo que
E12758719
04-08-2014
se usará en la transacción. Las expresiones lógicas especifican la relación entre parámetros y pueden generar más parámetros. Los parámetros pueden incluir, por ejemplo, entradas en las expresiones lógicas del algoritmo. La definición de un algoritmo puede especificarse, al menos en parte, por la aplicación de transacciones algorítmica. Por ejemplo, una aplicación de transacciones algorítmica puede permitir a un usuario que especifique solamente
5 parámetros que van a usarse por expresiones lógicas predefinidas. Como otro ejemplo, una aplicación de transacciones algorítmica puede permitir a un usuario que especifique algunas o todas las expresiones lógicas y algunos o todos los parámetros. Un algoritmo de transacciones en el que las expresiones lógicas son especificadas por un usuario es un algoritmo de transacciones definido por el usuario.
Las aplicaciones de transacciones pueden almacenarse en un medio legible por ordenador del dispositivo de transacciones 810. En determinadas realizaciones, uno o más componentes de una aplicación de transacciones pueden almacenarse en una estación de trabajo de transacciones y otros componentes de la aplicación de transacciones pueden almacenarse en un servidor en comunicación con la estación de trabajo. En determinadas realizaciones, uno o más componentes de una aplicación de transacciones pueden cargarse en el medio legible por 15 ordenador del dispositivo de transacciones 810 desde otro medio legible por ordenador. Por ejemplo, la aplicación de transacciones (o actualizaciones de la aplicación de transacciones) puede almacenarse por un fabricante, desarrollador o publicador en uno o más CD o DVD, que se proporcionan después a algún responsable de cargar la aplicación en el dispositivo de transacciones 810 o en un servidor desde el cual el dispositivo de transacciones 810 recupera la aplicación de transacciones. Como otro ejemplo, el dispositivo de transacciones 810 puede recibir la aplicación de transacciones (o actualizaciones de la aplicación de transacciones) desde un servidor, por ejemplo, a través de Internet o una red interna. El dispositivo de transacciones 810 puede recibir la aplicación de transacciones
o actualizaciones cuando lo solicite el dispositivo de transacciones 810 (“distribución pasiva”) y/o cuando no lo solicite el dispositivo de transacciones 810 (“distribución activa”).
25 El dispositivo de transacciones 810 está adaptado para enviar órdenes para un objeto negociable. Las órdenes pueden enviarse en uno o más mensajes o paquetes de datos o a través de un sistema de memoria compartida, por ejemplo. El dispositivo de transacciones 810 también puede estar adaptado para cancelar órdenes, modificar órdenes y/o hacer consultas en una central, por ejemplo. Como otro ejemplo, el dispositivo de transacciones 810 puede estar adaptado para enviar órdenes a una central simulada en un entorno de simulación que no lleva a cabo transacciones en el mundo real.
Las órdenes enviadas por el dispositivo de transacciones 810 pueden enviarse, por ejemplo, bajo solicitud de un usuario o automáticamente. Por ejemplo, un operador puede utilizar una estación de trabajo de transacciones electrónicas para emitir una orden para un objeto negociable particular, proporcionar manualmente uno o más
35 parámetros para la orden, tal como un precio y/o una cantidad de orden. Como otro ejemplo, una herramienta de transacciones automatizada puede calcular uno o más parámetros para una orden y enviar automáticamente la orden. En algunos casos, una herramienta de transacciones automatizada puede preparar la orden que va a enviarse pero no enviarla realmente sin la confirmación del usuario.
En determinadas realizaciones, el dispositivo de transacciones 810 incluye una interfaz de usuario. La interfaz de usuario puede incluir uno o más dispositivos de visualización para, por ejemplo, presentar a un usuario una interfaz gráfica y/o basada en texto de una aplicación de transacciones. Por ejemplo, los dispositivos de visualización pueden incluir monitores de ordenador, pantallas de dispositivos portátiles, proyectores y/o televisiones. La interfaz de usuario puede usarse para especificar o revisar parámetros para una orden usando una aplicación de
45 transacciones. La interfaz de usuario puede incluir, por ejemplo, uno o más dispositivos de entrada para recibir datos de entrada. Por ejemplo, los dispositivos de entrada pueden incluir un teclado, una bola de seguimiento, un ratón con dos o tres botones, y/o una pantalla táctil. La interfaz de usuario puede incluir otros dispositivos para interactuar con un usuario. Por ejemplo, la información puede proporcionarse de manera audible a un usuario a través de un altavoz y/o recibirse a través de un micrófono.
En determinadas realizaciones, una aplicación de transacciones incluye una o más pantallas de transacciones para permitir que un usuario interactúe con uno o más mercados. Las pantallas de transacciones pueden permitir a los usuarios, por ejemplo, obtener y ver información de mercado, fijar parámetros de entrada de órdenes, introducir y cancelar órdenes y/o controlar posiciones durante la implementación de varias estrategias de negocio. Por ejemplo, 55 una aplicación de transacciones puede recibir información (tales como precios de compra, cantidades de compra, precios de venta, cantidades de venta, precios y cantidades de ventas pasadas y/u otra información relacionada con el mercado) desde la central 830 y, a su vez, toda o parte de la misma puede visualizarse con una interfaz de usuario de dispositivo de transacciones 810. En función de la información recibida, la pantalla de transacciones puede mostrar un intervalo de niveles de precios y cantidades correspondientes de compra y venta para los niveles de precios en relación con objetos negociables. Para proporcionar al usuario información de negocio relevante, la pantalla de transacciones puede visualizar un intervalo de precios (y las cantidades correspondientes de compra y venta) relacionadas con el mercado interno. La información puede proporcionarse de manera continua o regular a la aplicación de transacciones, lo que permite a la aplicación de transacciones actualizar la pantalla de transacciones con información de mercado actual. Un usuario puede usar la pantalla de transacciones para emitir órdenes de
65 compra y venta de objetos negociables o para negociar de otro modo los objetos negociables en función de la información mostrada, por ejemplo.
E12758719
04-08-2014
Las pantallas de transacciones pueden mostrar una o más herramientas de transacciones. Las herramientas de transacciones son herramientas electrónicas que permiten, dan asistencia en y/o facilitan las transacciones electrónicas. Herramientas de transacciones a modo de ejemplo incluyen, pero no están limitadas a, gráficos,
5 diagramas bursátiles en escalera, herramientas de entrada de órdenes, herramientas automatizadas de transacciones, herramientas automatizadas de diversificación, herramientas de gestión de riesgo, herramientas de parámetros de órdenes, sistemas de introducción de órdenes, tablas con datos de mercado, ventanas de ejecución de órdenes, ventanas de órdenes de mercado, combinaciones de los mismos y otras herramientas electrónicas usadas para negociar, preparar las negociaciones, gestionar las negociaciones o analizar el mercado.
En determinadas realizaciones, las órdenes del dispositivo de transacciones 810 se envían a la central 830 a través de la pasarela 820. El dispositivo de transacciones 810 puede comunicarse con la pasarela 820 usando una red de área local, una red de área extensa, una red inalámbrica, una red privada virtual, una línea T1, una línea T3, una línea de red digital de servicios integrados (“RDSI”), un punto de presencia, Internet y/o un sistema de memoria
15 compartida, por ejemplo.
La pasarela 820 está adaptada para comunicarse con el dispositivo de transacciones 810 y la central 830. La pasarela 820 facilita la comunicación entre el dispositivo de transacciones 810 y la central 830. Por ejemplo, la pasarela 820 puede recibir órdenes del dispositivo de transacciones 810 y transmitir las órdenes a la central 830. Como otro ejemplo, la pasarela 820 puede recibir datos de mercado desde la central 830 y transmitir los datos de mercado al dispositivo de transacciones 810.
En determinadas realizaciones, la pasarela 820 procesa los datos comunicados entre el dispositivo de transacciones 810 y la central 830. Por ejemplo, la pasarela 820 puede procesar una orden recibida desde el dispositivo de
25 transacciones 810 en un formato de datos reconocible por la central 830. Asimismo, la pasarela 820 puede transmitir datos de mercado en un formato específico de central recibidos desde la central 830 en un formato reconocible por el dispositivo de transacciones 810. El procesamiento de la pasarela 820 puede incluir además realizar un seguimiento de las órdenes del dispositivo de transacciones 810 y actualizar el estado de la orden en función de confirmaciones de ejecución de órdenes recibidas desde la central 830, por ejemplo. Como otro ejemplo, la pasarela 820 puede fusionar datos de mercado de la central 830 y proporcionarlos al dispositivo de transacciones 810.
En determinadas realizaciones, la pasarela 820 proporciona servicios diferentes al procesamiento de datos comunicados entre el dispositivo de transacciones 810 y la central 830. Por ejemplo, la pasarela 820 puede proporcionar procesamiento de riesgos.
35 La pasarela 820 puede incluir una o más plataformas informáticas electrónicas, tales como un dispositivo de mano, un ordenador portátil, un ordenador de escritorio, una estación de trabajo con un procesador de uno o varios núcleos, un servidor con múltiples procesadores y/o un conjunto de ordenadores, por ejemplo.
La pasarela 820 puede incluir una o más aplicaciones de pasarela. La(s) aplicación(es) de pasarela puede(n) controlar, por ejemplo, el procesamiento de órdenes y el procesamiento de datos de mercado. Este procesamiento puede basarse en preferencias de usuario, por ejemplo.
En determinadas realizaciones, la pasarela 820 se comunica con la central 830 usando una red de área local, una
45 red de área extensa, una red privada virtual, una línea T1, una línea T3, una línea RDSI, un punto de presencia, Internet y/o un sistema de memoria compartida, por ejemplo.
En general, la central 830 puede pertenecer, manejarse, controlarse o usarse por una entidad de central. Entidades de central de ejemplo incluyen el grupo CME, los Futuros Financieros Internacionales y Mercado de Opciones de Londres (“LIFFE”), el IntercontinentalExchange (“ICE”) y Eurex. La central 830 puede incluir un sistema de correspondencias eléctrico, tal como un ordenador, un servidor u otro dispositivo informático que esté adaptado para permitir la compra y la venta de objetos negociables, por ejemplo ofrecidos para su negociación por la central. El sistema de correspondencias electrónico puede incluir un motor de correspondencias, por ejemplo. La central 830 puede incluir entidades diferentes, donde algunas enumeran y/o administran objetos negociables y otras reciben y
55 correlacionan órdenes, por ejemplo. La central 830 puede incluir una red de comunicación electrónica (“ECN”), por ejemplo.
La central 830 está adaptada para correlacionar órdenes para comprar y vender objetos negociables. Los objetos negociables pueden listarse para su negociación mediante la central 830. Las órdenes pueden incluir órdenes recibidas desde el dispositivo de transacciones 810, por ejemplo. Las órdenes pueden recibirse desde el dispositivo de transacciones 810 a través de la pasarela 820, por ejemplo. Además, las órdenes pueden recibirse desde otros dispositivos en comunicación con la central 830. Es decir, normalmente la central 830 estará en comunicación con varios dispositivos de transacciones (que pueden ser similares al dispositivo de transacciones 810) que también proporcionan órdenes que deben correlacionarse.
65 La central 830 está adaptada para proporcionar datos de mercado. Los datos de mercado pueden proporcionarse en
E12758719
04-08-2014
uno o más mensajes o paquetes de datos o a través de un sistema de memoria compartida, por ejemplo. Los datos de mercado pueden proporcionarse al dispositivo de transacciones 810, por ejemplo. Los datos de mercado pueden proporcionarse al dispositivo de transacciones 810 a través de la pasarela 820, por ejemplo. Los datos de mercado pueden incluir datos que representan el mercado interno, por ejemplo. El mercado interno es el precio de venta más 5 bajo (también denominado como “best ask”) y el precio de compra más alto (también denominado como “best bid”) en un instante de tiempo particular (ya que el mercado interno puede variar en el tiempo). Los datos de mercado también pueden incluir la profundidad del mercado. La profundidad del mercado se refiere a las cantidades disponibles en el mercado interno y también puede referirse a cantidades disponibles a otros precios fuera del mercado interno. Por tanto, el mercado interno puede considerarse como el primer nivel de profundidad de mercado. Una capa por encima del mercado interno puede considerarse el segundo nivel de profundidad de mercado, por ejemplo. En determinadas realizaciones, la profundidad de mercado se proporciona para todos los niveles de precios. En determinadas realizaciones, la profundidad de mercado no se proporciona para todos los niveles de precios. Por ejemplo, la profundidad de mercado puede proporcionarse solamente para los cinco primeros niveles de precios a ambos lados del mercado interno. Como otro ejemplo, la profundidad de mercado puede proporcionarse
15 para los diez primeros niveles de precios en cuya cantidad está disponible en el mercado. Los datos de mercado también pueden incluir información tal como el último precio negociado (LTP), la última cantidad negociada (LTQ) e información de ejecución de órdenes.
En determinadas realizaciones, el sistema 800 incluye más de un dispositivo de transacciones 810. Por ejemplo, múltiples dispositivos de transacciones similares al dispositivo de transacciones 810, descrito anteriormente, pueden estar en comunicación con la pasarela 820 para enviar órdenes a la central 830.
En determinadas realizaciones, el sistema 800 incluye más de una pasarela 820. Por ejemplo, múltiples pasarelas similares a la pasarela 820, descrita anteriormente, pueden estar en comunicación con el dispositivo de
25 transacciones 810 y la central 830. Una disposición de este tipo puede usarse para proporcionar redundancia en caso de que fallase una pasarela 820, por ejemplo.
En determinadas realizaciones, el sistema 800 incluye más de una central 830. Por ejemplo, la pasarela 820 puede estar en comunicación con múltiples centrales similares a la central 830, descrita anteriormente. Una disposición de este tipo puede permitir que el dispositivo de transacciones 810 realice transacciones en más de una central a través de la pasarela 820, por ejemplo.
En determinadas realizaciones, el sistema 800 incluye más de una central 830 y más de una pasarela 820. Por ejemplo, múltiples pasarelas similares a la pasarela 820, descrita anteriormente, pueden estar en comunicación con
35 múltiples centrales similares a la central 830, descrita anteriormente. Cada pasarela puede estar en comunicación con una o más centrales diferentes, por ejemplo. Una disposición de este tipo puede permitir que uno o más dispositivos de transacciones 810 realicen transacciones en más de una central (y/o proporcionen conexiones redundantes a múltiples centrales), por ejemplo.
En determinadas realizaciones, el dispositivo de transacciones 810 incluye uno o más dispositivos informáticos o componentes de procesamiento. Dicho de otro modo, la funcionalidad del dispositivo de transacciones 810 puede llevarse a cabo por más de un dispositivo informático. Por ejemplo, un dispositivo informático puede generar órdenes que van a enviarse a la central 830, mientras que otro dispositivo informático puede proporcionar una interfaz gráfica de usuario a un usuario. En determinadas realizaciones, la pasarela 820 incluye uno o más dispositivos informáticos
45 o componentes de procesamiento. Dicho de otro modo, la funcionalidad de la pasarela 820 puede llevarse a cabo por más de un dispositivo informático. En determinadas realizaciones, la central 830 incluye uno o más dispositivos informáticos o componentes de procesamiento. Dicho de otro modo, la funcionalidad de la central 830 puede llevarse a cabo por más de un dispositivo informático.
En determinadas realizaciones, la pasarela 820 es parte del dispositivo de transacciones 810. Por ejemplo, los componentes de la pasarela 820 pueden ser parte de la misma plataforma informática que el dispositivo de transacciones 810. Como otro ejemplo, la funcionalidad de la pasarela 820 puede llevarse a cabo por componentes del dispositivo de transacciones 810. En determinadas realizaciones, la pasarela 820 no está presente. Una disposición de este tipo puede producirse, por ejemplo, cuando el dispositivo de transacciones 810 no necesita
55 utilizar la pasarela 820 para comunicarse con la central 830. Por ejemplo, el dispositivo de transacciones 810 se ha adaptado para comunicarse directamente con la central 830.
En determinadas realizaciones, la pasarela 820 está ubicada físicamente en el mismo emplazamiento que el dispositivo de transacciones 810. En determinadas realizaciones, la pasarela 820 está ubicada físicamente en el mismo emplazamiento que la central 830. En determinadas realizaciones, el dispositivo de transacciones 810 está ubicado físicamente en el mismo emplazamiento que la central 830. En determinadas realizaciones, la pasarela 820 está ubicada físicamente en un emplazamiento diferente al del dispositivo de transacciones 810 y la central 830.
En determinadas realizaciones, el sistema 800 puede incluir otros dispositivos que son específicos a la arquitectura
65 de comunicaciones, tales como middleware, cortafuegos, concentradores, conmutadores, encaminadores, equipos de comunicación específicos de central, módems, gestores de seguridad y/o dispositivos de cifrado/descifrado.
E12758719
04-08-2014
La figura 9 ilustra una implementación de ejemplo 900 del sistema de transacciones electrónicas 800 de la figura 8. El sistema 900 incluye dispositivos de transacciones 810a a 810e, una pasarela 820, una central electrónica 830, un primer encaminador WAN 940, un segundo encaminador WAN 950 y un enlace WAN 960. Los dispositivos de
5 transacciones 810a y 810b están en comunicación con la pasarela 820. La pasarela 820 está en comunicación con la central 830. Los dispositivos de transacciones 810c a 810e se comunican con la pasarela 820 usando el encaminador WAN 940 y el encaminador WAN 950.
En funcionamiento, los dispositivos de transacciones 810a a 810e pueden enviar órdenes a la central 830 para comprar o vender objetos negociables. Por ejemplo, un usuario puede utilizar los dispositivos de transacciones 810a a 810e para enviar las órdenes. Las órdenes se envían desde los dispositivos de transacciones 810a y 810b a través de la pasarela 820 a la central 830. Las órdenes se envían desde los dispositivos de transacciones 810c a 810e a través de los encaminadores WAN 950 y 940 a la pasarela 820 y a través de la pasarela 820 a la central 830. Además, datos de mercado se envían desde la central 830 a través de la pasarela 820 a los dispositivos de
15 transacciones 810a y 810b y el encaminador WAN 940. Los datos de mercado se envían desde el encaminador WAN 940 al encaminador WAN 950 y después desde el encaminador WAN 950 a los dispositivos de transacciones 810c a 810e.
En la implementación 900 de ejemplo del sistema de transacciones electrónicas 800, puede producirse un retardo y/o una pérdida de mensajes en el encaminador WAN 940, por ejemplo. El retardo y/o la pérdida de mensajes puede deberse, por ejemplo, a que el encaminador WAN 940 pasa por alto un mensaje o debido a un fallo del encaminador WAN 940, del encaminador WAN 950 y/o del enlace WAN 960. Por ejemplo, el encaminador WAN 940 puede pasar por alto un mensaje debido a recursos limitados, por ejemplo el agotamiento de la memoria o de la capacidad de procesamiento y/o debido a retardos en la transmisión de mensajes a través del enlace WAN 960. Como otro
25 ejemplo, el encaminador WAN 940 y/o el encaminador WAN 950 pueden fallar debido a pérdidas de energía o fallos del hardware. Como otro ejemplo, el enlace WAN 960 puede fallar debido a un cable cortado o un fallo de hardware.
Las diversas técnicas y realizaciones descritas anteriormente pueden utilizarse en un sistema de transacciones electrónicas. Por ejemplo, el sistema de transacciones electrónicas 800 de ejemplo de la figura 8 puede implementar el método de ejemplo descrito en relación con la figura 2C. El método de ejemplo asigna números de secuencia a los mensajes enviados desde la pasarela 820 de la figura 8 al dispositivo de transacciones 810. La asignación de números de secuencia a mensajes de datos y de latido de corazón mediante el método de ejemplo permite que el dispositivo de transacciones 810 de la figura 8 detecte un mensaje perdido dentro del tiempo en que se pierde un mensaje de datos y se recibe un mensaje subsiguiente.
35 Como otro ejemplo, el sistema de transacciones electrónicas 800 de ejemplo de la figura 8 puede implementar el método de ejemplo descrito en relación con la figura 2D. El dispositivo de transacciones 810 de la figura 8 recibe mensajes desde la pasarela 820. El dispositivo de transacciones 810 determina números de secuencia esperados para mensajes que van a enviarse desde la pasarela 820. El dispositivo de transacciones 810 compara los números de secuencia de los mensajes recibidos con los números de secuencia esperados para determinar si se ha perdido un mensaje de datos.
Como otro ejemplo, el sistema de transacciones electrónicas 800 de ejemplo de la figura 8 puede implementar el método de ejemplo descrito en relación con la figura 4. El método de ejemplo asigna números de secuencia y
45 números de fase a los mensajes enviados por la pasarela 820 de la figura 8 al dispositivo de transacciones 810. La asignación de números de secuencia y de números de fase a secuencias de mensajes mediante el método de ejemplo permite que el dispositivo de transacciones 810 de la figura 8 detecte una secuencia de mensajes perdidos. Además, el método de ejemplo permite a la pasarela 820 borrar el estado de flujo de mensajes después de enviar una secuencia de mensajes completa.
Como otro ejemplo, el sistema de transacciones electrónicas 800 de ejemplo de la figura 8 puede implementar el método de ejemplo descrito en relación con la figura 5. El dispositivo de transacciones 810 de la figura 8 recibe mensajes desde la pasarela 820. El dispositivo de transacciones 810 compara los números de fase y los números de secuencia de los mensajes recibidos desde la pasarela 820 con los números de fase y los números de secuencia
55 esperados, respectivamente, para determinar si se ha perdido un mensaje. Además, el método de ejemplo permite que el dispositivo de transacciones 810 borre el estado de flujo de mensajes después de recibir una secuencia de mensajes completa.
Algunas de las figuras descritas muestran diagramas de bloque, sistemas y/o diagramas de flujo de ejemplo representativos de métodos que pueden usarse para implementar todas o algunas realizaciones determinadas. Uno
o más de los componentes, elementos, bloques y/o funcionalidad de los diagramas de bloques, sistemas y/o diagramas de flujo de ejemplo pueden implementarse de manera individual o en combinación con hardware, firmware, lógica discreta, como un conjunto de instrucciones legibles por ordenador almacenadas en un medio tangible legible por ordenador y/o cualquier combinación de los mismos, por ejemplo.
65 Los diagramas de bloques, sistemas y/o diagramas de flujo de ejemplo pueden implementarse usando cualquier
E12758719
04-08-2014
combinación de circuitos integrados de aplicación específica (ASIC), dispositivos de lógica programable (PLD), dispositivos de lógica de campo programable (FPLD), lógica discreta, hardware y/o firmware, por ejemplo. Además, algunos o todos los métodos de ejemplo pueden implementarse manualmente o en combinación con las técnicas anteriores, por ejemplo.
5 Los diagramas de bloques, sistemas y/o diagramas de flujo de ejemplo pueden llevarse a cabo usando, por ejemplo, uno o más procesadores, controladores y/u otros dispositivos de procesamiento. Por ejemplo, los ejemplos pueden implementarse usando instrucciones codificadas, por ejemplo, instrucciones legibles por ordenador almacenadas en un medio tangible legible por ordenador. Un medio tangible legible por ordenador puede incluir varios tipos de
10 medios de almacenamiento volátiles y no volátiles que incluyen, por ejemplo, memoria de acceso aleatorio (RAM), memoria de solo lectura (ROM), memoria de solo lectura programable (PROM), memoria de solo lectura eléctricamente programable (EPROM), memoria de solo lectura eléctricamente borrable (EEPROM), memoria flash, una unidad de disco duro, medios ópticos, cinta magnética, un servidor de archivos, cualquier otro dispositivo tangible de almacenamiento de datos o cualquier combinación de los mismos. El medio tangible legible por
15 ordenador es no transitorio.
Además, aunque los diagramas de bloques, sistemas y/o diagramas de flujo de ejemplo se han descrito anteriormente con referencia a las figuras, pueden utilizarse otras implementaciones. Por ejemplo, el orden de ejecución de los componentes, elementos, bloques y/o funcionalidad puede modificarse y/o algunos de los
20 componentes, elementos, bloques y/o funcionalidad descritos pueden modificarse, eliminarse, subdividirse o combinarse. Además, algunos o todos los componentes, elementos, bloques y/o funcionalidad pueden llevarse a cabo secuencialmente y/o en paralelo mediante, por ejemplo, diferentes hilos de procesamiento, procesadores, dispositivos, lógica discreta y/o circuitos.
25 Aunque se han descrito realizaciones, pueden llevarse a cabo varios cambios y pueden sustituirse equivalencias. Además, muchas modificaciones pueden llevarse a cabo para adaptarse a una situación o material particulares. Por lo tanto, la tecnología desvelada no pretende limitarse a las realizaciones particulares desveladas, sino que incluirá todas las realizaciones que estén dentro del alcance de las reivindicaciones adjuntas.

Claims (21)

  1. E12758719
    04-08-2014
    REIVINDICACIONES
    1. Un método que incluye:
    5 enviar, mediante un dispositivo informático (100), un primer mensaje de datos, en el que el primer mensaje de datos incluye un número de secuencia de primer mensaje de datos con un valor de un número de secuencia inicial predefinido, en el que el primer mensaje de datos incluye un número de fase de primer mensaje de datos;
    enviar, mediante el dispositivo informático, un primer mensaje de latido de corazón, en el que el primer mensaje de latido de corazón se envía en un primer intervalo de tiempo después de enviarse el primer mensaje de datos, en el que el primer mensaje de latido de corazón incluye un número de fase de primer mensaje de latido de corazón, y el número de fase de primer mensaje de latido de corazón es el mismo que el número de fase de primer mensaje de datos;
    15 enviar, mediante el dispositivo informático, un primer mensaje de parada, en el que el primer mensaje de parada incluye un número de fase de mensaje de parada, en el que el número de fase de mensaje de parada es el mismo que el número de fase de primer mensaje de datos; y
    enviar, mediante el dispositivo informático, un segundo mensaje de datos, en el que el segundo mensaje de datos se envía después del primer mensaje de parada, en el que el segundo mensaje de datos incluye un número de secuencia de segundo mensaje de datos con un valor del número de secuencia inicial predefinido, en el que el segundo mensaje de datos incluye un número de fase de segundo mensaje de datos, en el que el número de fase de segundo mensaje de datos es diferente del número de fase de primer mensaje de datos.
    25 2. El método según la reivindicación 1, en el que el primer mensaje de datos incluye datos relacionados con el estado de un servidor.
  2. 3.
    El método según la reivindicación 2, en el que el servidor es el dispositivo informático.
  3. 4.
    El método según la reivindicación 1, en el que el primer mensaje de latido de corazón incluye un número de secuencia de primer mensaje de latido de corazón, en el que el número de secuencia de primer mensaje de latido de corazón es el mismo que el número de secuencia de primer mensaje de datos.
  4. 5. El método según la reivindicación 1, en el que el primer mensaje de latido de corazón se envía antes de enviar el 35 primer mensaje de parada.
  5. 6.
    El método según la reivindicación 1, en el que el primer mensaje de latido de corazón incluye un indicador que indica que el primer mensaje de latido de corazón es además el primer mensaje de parada.
  6. 7.
    El método según la reivindicación 1, que incluye además enviar, mediante el dispositivo informático, un segundo mensaje de latido de corazón, en el que el segundo mensaje de latido de corazón se envía en un segundo intervalo de tiempo después de enviarse el primer mensaje de latido de corazón, en el que el segundo mensaje de latido de corazón incluye un número de fase de segundo mensaje de latido de corazón, en el que el número de fase de segundo mensaje de latido de corazón es el mismo que el número de fase de primer mensaje de datos.
    45
  7. 8.
    El método según la reivindicación 7, en el que el segundo intervalo de tiempo aumenta con respecto al primer intervalo de tiempo en una cantidad fija.
  8. 9.
    El método según la reivindicación 7, en el que el segundo intervalo de tiempo aumenta con respecto al primer intervalo de tiempo según uno de entre un múltiplo del primer intervalo de tiempo, un valor exponencial del primer intervalo de tiempo, una secuencia de números primos y una secuencia de Fibonacci.
  9. 10.
    El método según la reivindicación 1, que incluye además borrar, mediante el dispositivo informático, un estado de flujo de mensajes asociado a un objeto que está supervisándose, en el que el estado de flujo de mensajes se
    55 borra después de enviarse el mensaje de parada, en el que el estado de flujo de mensajes incluye información particular a un flujo de mensajes, en el que el flujo de mensajes es un canal de comunicación lógico para mensajes relacionados con el objeto que está supervisándose.
  10. 11.
    El método según la reivindicación 10, en el que la información particular al flujo de mensajes incluye el número de fase de primer mensaje de datos.
  11. 12.
    El método según la reivindicación 10, en el que borrar el estado de flujo de mensajes incluye desasignar el estado de flujo de mensajes de una memoria del dispositivo informático.
    65 13. Un medio de almacenamiento tangible legible por ordenador, que incluye instrucciones que cuando se ejecutan por un dispositivo informático hacen que el dispositivo informático lleve a cabo un método según una cualquiera de
    26
    E12758719
    04-08-2014
    las reivindicaciones 1 a 12.
  12. 14. Un sistema que incluye:
    5 un emisor de primer mensaje de datos (601) para enviar un primer mensaje de datos, en el que el primer mensaje de datos incluye un número de secuencia de primer mensaje de datos con un valor de un número de secuencia inicial predefinido, en el que el primer mensaje de datos incluye un número de fase de primer mensaje de datos;
    un emisor de primer mensaje de latido de corazón (601) para enviar un primer mensaje de latido de corazón, en el que el primer mensaje de latido de corazón se envía en un primer intervalo de tiempo después de enviarse el primer mensaje de datos, en el que el primer mensaje de latido de corazón incluye un número de fase de primer mensaje de latido de corazón, y el número de fase de primer mensaje de latido de corazón es el mismo que el número de fase de primer mensaje de datos;
    15 un emisor de primer mensaje de parada (601) para enviar un primer mensaje de parada, en el que el primer mensaje de parada incluye un número de fase de mensaje de parada, en el que el número de fase de mensaje de parada es el mismo que el número de fase de primer mensaje de datos; y
    un emisor de segundo mensaje de datos (601) para enviar un segundo mensaje de datos, en el que el segundo mensaje de datos se envía después del primer mensaje de parada, en el que el segundo mensaje de datos incluye un número de secuencia de segundo mensaje de datos con un valor del número de secuencia inicial predefinido, en el que el segundo mensaje de datos incluye un número de fase de segundo mensaje de datos, en el que el número de fase de segundo mensaje de datos es diferente del número de fase de primer mensaje de datos.
    25 15. El sistema según la reivindicación 14, en el que el primer mensaje de datos incluye datos relacionados con el estado de un servidor.
  13. 16.
    El sistema según la reivindicación 15, en el que el servidor incluye el emisor de primer mensaje de datos, el emisor de primer mensaje de latido de corazón, el emisor de primer mensaje de parada y el emisor de segundo mensaje de datos.
  14. 17.
    El sistema según la reivindicación 14, en el que el primer mensaje de latido de corazón incluye un número de secuencia de primer mensaje de latido de corazón, en el que el número de secuencia de primer mensaje de latido de corazón es el mismo que el número de secuencia de primer mensaje de datos.
    35
  15. 18.
    El sistema según la reivindicación 14, en el que el primer mensaje de latido de corazón se envía antes de enviar el primer mensaje de parada.
  16. 19.
    El sistema según la reivindicación 14, en el que el primer mensaje de latido de corazón incluye un indicador que indica que el primer mensaje de latido de corazón es además el primer mensaje de parada.
  17. 20.
    El sistema según la reivindicación 14, que incluye además un emisor de segundo mensaje de latido de corazón para enviar un segundo mensaje de latido de corazón, en el que el segundo mensaje de latido de corazón se envía en un segundo intervalo de tiempo después de enviarse el primer mensaje de latido de corazón, en el que el
    45 segundo mensaje de latido de corazón incluye un número de fase de segundo mensaje de latido de corazón, en el que el número de fase de segundo mensaje de latido de corazón es el mismo que el número de fase de primer mensaje de datos.
  18. 21.
    El sistema según la reivindicación 20, en el que el segundo intervalo de tiempo aumenta con respecto al primer intervalo de tiempo en una cantidad fija.
  19. 22.
    El sistema según la reivindicación 20, en el que el segundo intervalo de tiempo aumenta con respecto al primer intervalo de tiempo según uno de entre un múltiplo del primer intervalo de tiempo, un valor exponencial del primer intervalo de tiempo, una secuencia de números primos y una secuencia de Fibonacci.
    55
  20. 23.
    El sistema según la reivindicación 14, que incluye además una unidad de borrado de estado de flujo de mensajes (605) para borrar un estado de flujo de mensajes asociado a un objeto que está supervisándose, en el que el estado de flujo de mensajes se borra después de enviarse el mensaje de parada, en el que el estado de flujo de mensajes incluye información particular a un flujo de mensajes, en el que el flujo de mensajes es un canal de comunicación lógico para mensajes relacionados con el objeto que está supervisándose.
  21. 24.
    El sistema según la reivindicación 23, en el que la información particular al flujo de mensajes incluye el número de fase de primer mensaje de datos.
    65 25. El sistema según la reivindicación 23, en el que la unidad de borrado de estado de flujo de mensajes está dispuesta para desasignar el estado de flujo de mensajes de una memoria de un dispositivo informático, borrándose
    27
    E12758719
    04-08-2014
    de este modo el estado de flujo de mensajes.
    28
ES12758719.4T 2011-09-02 2012-08-30 Integridad de un flujo de mensajes Active ES2488672T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201113225047 2011-09-02
US13/225,047 US8745157B2 (en) 2011-09-02 2011-09-02 Order feed message stream integrity
PCT/US2012/053169 WO2013033416A1 (en) 2011-09-02 2012-08-30 Message stream integrity

Publications (1)

Publication Number Publication Date
ES2488672T3 true ES2488672T3 (es) 2014-08-28

Family

ID=46832626

Family Applications (1)

Application Number Title Priority Date Filing Date
ES12758719.4T Active ES2488672T3 (es) 2011-09-02 2012-08-30 Integridad de un flujo de mensajes

Country Status (14)

Country Link
US (5) US8745157B2 (es)
EP (3) EP2793417B1 (es)
JP (4) JP5840782B2 (es)
KR (4) KR101644996B1 (es)
CN (3) CN103907306B (es)
AU (1) AU2012301829B2 (es)
BR (4) BR122015015223A2 (es)
CA (2) CA2847350C (es)
ES (1) ES2488672T3 (es)
HK (4) HK1188520A1 (es)
IL (1) IL230900A0 (es)
MX (3) MX346140B (es)
SG (2) SG10201607252VA (es)
WO (1) WO2013033416A1 (es)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8232962B2 (en) 2004-06-21 2012-07-31 Trading Technologies International, Inc. System and method for display management based on user attention inputs
US7725764B2 (en) * 2006-08-04 2010-05-25 Tsx Inc. Failover system and method
US8745157B2 (en) 2011-09-02 2014-06-03 Trading Technologies International, Inc. Order feed message stream integrity
US9021109B1 (en) * 2012-01-23 2015-04-28 Amazon Technologies, Inc. Controlling requests through message headers
US10755351B2 (en) * 2012-03-29 2020-08-25 Trading Technologies International, Inc. Controlling operation of a trading algorithm based on operating condition rules
US9756089B2 (en) * 2012-08-28 2017-09-05 Facebook, Inc. Maintain persistent connections between servers and mobile clients
US10467691B2 (en) * 2012-12-31 2019-11-05 Trading Technologies International, Inc. User definable prioritization of market information
EP3008879A4 (en) * 2013-06-13 2017-01-04 TSX Inc. Failover system and method
US10664548B2 (en) 2013-07-12 2020-05-26 Trading Technologies International, Inc. Tailored messaging
CN104703146B (zh) * 2013-12-09 2019-03-08 腾讯科技(深圳)有限公司 信息推送方法、客户端及系统
US10142202B2 (en) * 2014-01-30 2018-11-27 Qualcomm Incorporated Determination of end-to-end transport quality
JP6514165B2 (ja) * 2016-09-16 2019-05-15 株式会社東芝 通信装置および通信方法
CA2984275A1 (en) * 2016-11-01 2018-05-01 Tsx Inc. Electronic trading system and method for mutual funds and exchange traded funds
US10776428B2 (en) * 2017-02-16 2020-09-15 Nasdaq Technology Ab Systems and methods of retrospectively determining how submitted data transaction requests operate against a dynamic data structure
FR3074396A1 (fr) * 2017-11-30 2019-05-31 Orange Procedes de detection, de gestion et de relais d'un probleme de communication multimedia, entites d'execution, de controle et de gestion de regles et programme d'ordinateur correspondants.
CN111107509B (zh) * 2018-10-26 2023-04-14 深圳市理邦精密仪器股份有限公司 一种监护数据传输方法、系统及探头
JP7288662B2 (ja) * 2019-04-15 2023-06-08 明京電機株式会社 障害監視復旧システム、その方法、およびそのプログラム
CN110806993B (zh) * 2019-11-05 2021-06-01 积成电子股份有限公司 一种定制的modbus通信方法及利用该方法的低耦合远动装置
CN112511368A (zh) * 2020-10-16 2021-03-16 深圳市科漫达智能管理科技有限公司 一种服务心跳监控方法及相关装置

Family Cites Families (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3268875B2 (ja) * 1993-02-26 2002-03-25 株式会社野村総合研究所 同報ファイル転送方法およびシステム
JPH0832531A (ja) * 1994-07-20 1996-02-02 Hitachi Ltd 同報通信方式
JP3833746B2 (ja) * 1996-07-31 2006-10-18 株式会社東芝 チェックポイント通信処理システム、及びチェックポイント通信処理方法
US6072857A (en) * 1996-12-19 2000-06-06 Bellsouth Intellectual Property Management Corporation Methods and system for monitoring the operational status of a network component in an advanced intelligent network
US6574234B1 (en) 1997-09-05 2003-06-03 Amx Corporation Method and apparatus for controlling network devices
US6144669A (en) 1997-12-12 2000-11-07 Newbridge Networks Corporation Prioritized PVC management queues for improved frame processing capabilities
US6178439B1 (en) * 1997-12-23 2001-01-23 British Telecommunications Public Limited Company HTTP session control
US6389016B1 (en) * 1998-10-14 2002-05-14 Nortel Networks Limited Data communication system and method for transporting data
US8862507B2 (en) * 1999-06-14 2014-10-14 Integral Development Corporation System and method for conducting web-based financial transactions in capital markets
WO2001010090A1 (en) * 1999-07-28 2001-02-08 Tomkow Terrance A System and method for verifying delivery and integrity of electronic messages
US6631431B1 (en) * 1999-09-15 2003-10-07 Koninklijke Philips Electronics N.V. Semaphore coding method to ensure data integrity in a can microcontroller and a can microcontroller that implements this method
US7107240B1 (en) * 1999-10-06 2006-09-12 Goldman Sachs & Co. Order centric tracking system and protocol for communications with handheld trading units
JP3509847B2 (ja) * 2000-01-20 2004-03-22 日本電気株式会社 Nmsシステムにおける通信の信頼性向上方法及びnmsシステム
US7133407B2 (en) * 2000-01-25 2006-11-07 Fujitsu Limited Data communications system
US6983317B1 (en) * 2000-02-28 2006-01-03 Microsoft Corporation Enterprise management system
US6904593B1 (en) 2000-03-24 2005-06-07 Hewlett-Packard Development Company, L.P. Method of administering software components using asynchronous messaging in a multi-platform, multi-programming language environment
US8249975B1 (en) * 2000-04-10 2012-08-21 Stikine Technology, Llc Automated first look at market events
US7539638B1 (en) * 2000-04-10 2009-05-26 Stikine Technology, Llc Representation of order in multiple markets
US6907044B1 (en) * 2000-08-04 2005-06-14 Intellon Corporation Method and protocol to support contention-free intervals and QoS in a CSMA network
US6744765B1 (en) 2000-08-24 2004-06-01 Sun Microsystems, Inc. Mechanism for completing messages in memory
US8692695B2 (en) * 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
JP2002135350A (ja) * 2000-10-30 2002-05-10 Sony Corp データ配信方法、データ受信方法、端末状態通知サービス提供方法および通信端末
US6615221B2 (en) * 2001-03-09 2003-09-02 Hewlett-Packard Development Company, Lp. Scalable transport layer protocol for multiprocessor interconnection networks that tolerates interconnection component failure
US6782496B2 (en) 2001-04-13 2004-08-24 Hewlett-Packard Development Company, L.P. Adaptive heartbeats
WO2003017175A1 (en) * 2001-08-14 2003-02-27 Bloomberg Lp Distribution and mapping of financial records from data stream
JP2003067264A (ja) * 2001-08-23 2003-03-07 Hitachi Ltd ネットワークシステムの監視間隔制御方法
US7747506B2 (en) * 2002-06-05 2010-06-29 The Nasdaq Omx Group, Inc. Recipient status indicator system and method
US8090640B2 (en) * 2002-06-05 2012-01-03 The Nasdaq Omx Group, Inc. Order delivery in a securities market
US8176186B2 (en) * 2002-10-30 2012-05-08 Riverbed Technology, Inc. Transaction accelerator for client-server communications systems
US7720043B2 (en) * 2002-11-20 2010-05-18 Qualcomm Incorporated Use of idle frames for early transmission of negative acknowledgement of frame receipt
JP4167511B2 (ja) * 2003-02-25 2008-10-15 株式会社東芝 伝送路二重化判定処理方法
US20050021836A1 (en) * 2003-05-01 2005-01-27 Reed Carl J. System and method for message processing and routing
US20040236829A1 (en) * 2003-05-13 2004-11-25 Yikang Xu Reliable delivery of multi-cast conferencing data
JP2004364168A (ja) * 2003-06-06 2004-12-24 Daikin Ind Ltd 通信制御装置、通信制御システム及び通信制御方法
CN1820262A (zh) * 2003-06-09 2006-08-16 范拉诺公司 事件监控及管理
JP2005109849A (ja) * 2003-09-30 2005-04-21 Fujitsu Ltd 送信サーバ用データ交換処理プログラムおよび受信サーバ用データ交換処理プログラム
US7778915B2 (en) * 2003-10-14 2010-08-17 Ften, Inc. Financial data processing system
US9350565B1 (en) * 2003-10-14 2016-05-24 Amazon Technologies, Inc. Method and system for reliable distribution of messages
US7355975B2 (en) 2004-04-30 2008-04-08 International Business Machines Corporation Method and apparatus for group communication with end-to-end reliability
US7228331B2 (en) * 2004-05-04 2007-06-05 Nokia, Inc. User oriented penalty count random rejection of electronic messages
US7477749B2 (en) * 2004-05-12 2009-01-13 Nokia Corporation Integrity protection of streamed content
US8949395B2 (en) * 2004-06-01 2015-02-03 Inmage Systems, Inc. Systems and methods of event driven recovery management
GB0414057D0 (en) 2004-06-23 2004-07-28 Koninkl Philips Electronics Nv Method of,and system for,communicating data, and a station for transmitting data
US20060056403A1 (en) * 2004-09-13 2006-03-16 Pleasant Daniel L System and method for robust communication via a non-reliable protocol
US7483943B2 (en) * 2004-09-21 2009-01-27 Microsoft Corporation Reliable messaging using clocks with synchronized rates
US8095601B2 (en) * 2004-10-22 2012-01-10 Microsoft Corporation Inter-proximity communication within a rendezvous federation
US8458467B2 (en) * 2005-06-21 2013-06-04 Cisco Technology, Inc. Method and apparatus for adaptive application message payload content transformation in a network infrastructure element
US8082304B2 (en) * 2004-12-10 2011-12-20 Cisco Technology, Inc. Guaranteed delivery of application layer messages by a network element
US7292665B2 (en) * 2004-12-16 2007-11-06 Genesis Microchip Inc. Method and apparatus for reception of data over digital transmission link
US8700738B2 (en) * 2005-02-01 2014-04-15 Newsilike Media Group, Inc. Dynamic feed generation
US8239449B2 (en) 2005-07-20 2012-08-07 Wms Gaming Inc. Transmission protocol for a gaming system
US9471925B2 (en) * 2005-09-14 2016-10-18 Millennial Media Llc Increasing mobile interactivity
US8200563B2 (en) * 2005-09-23 2012-06-12 Chicago Mercantile Exchange Inc. Publish and subscribe system including buffer
US20070174429A1 (en) * 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
CN101060424A (zh) * 2006-04-21 2007-10-24 英业达股份有限公司 一种实现负载平衡与高可用性的系统及其方法
US7752123B2 (en) * 2006-04-28 2010-07-06 Townsend Analytics Ltd. Order management system and method for electronic securities trading
US7725764B2 (en) * 2006-08-04 2010-05-25 Tsx Inc. Failover system and method
US7434096B2 (en) * 2006-08-11 2008-10-07 Chicago Mercantile Exchange Match server for a financial exchange having fault tolerant operation
US8041985B2 (en) * 2006-08-11 2011-10-18 Chicago Mercantile Exchange, Inc. Match server for a financial exchange having fault tolerant operation
US9479341B2 (en) * 2006-08-22 2016-10-25 Centurylink Intellectual Property Llc System and method for initiating diagnostics on a packet network node
US8015294B2 (en) * 2006-08-22 2011-09-06 Embarq Holdings Company, LP Pin-hole firewall for communicating data packets on a packet network
US9026575B2 (en) 2006-09-28 2015-05-05 Alcatel Lucent Technique for automatically configuring a communication network element
US20160277261A9 (en) * 2006-12-29 2016-09-22 Prodea Systems, Inc. Multi-services application gateway and system employing the same
US9648147B2 (en) * 2006-12-29 2017-05-09 Futurewei Technologies, Inc. System and method for TCP high availability
WO2009100444A1 (en) * 2008-02-08 2009-08-13 Verbal World, Inc. Methods and apparatus for exhange of electronic communications
KR20090000228A (ko) * 2007-02-05 2009-01-07 삼성전자주식회사 무결성 검증이 가능한 컨텐츠 제공 방법 및 컨텐츠 이용방법과 그 장치
JP4808645B2 (ja) * 2007-02-15 2011-11-02 富士通株式会社 装置監視ネットワークシステム及びsnmpのトラップ管理方法
US7809841B1 (en) 2007-03-29 2010-10-05 Trading Technologies International, Inc. System and method for communicating with an electronic exchange in an electronic trading environment
US7916741B2 (en) * 2007-04-02 2011-03-29 William Marsh Rice University System and method for preventing count-to-infinity problems in ethernet networks
US8275905B2 (en) * 2007-04-17 2012-09-25 Oracle International Corporation System and method for store-and-forward for highly available message production
US8307114B2 (en) * 2007-05-22 2012-11-06 International Business Machines Corporation High availability message transmission
US7782851B2 (en) * 2007-06-26 2010-08-24 At&T Intellectual Property I, L.P. System and method of detecting lost video data packets
US20090018944A1 (en) * 2007-07-13 2009-01-15 Omx Technology Ab Method and system for trading
US8782274B2 (en) * 2007-10-19 2014-07-15 Voxer Ip Llc Method and system for progressively transmitting a voice message from sender to recipients across a distributed services communication network
US7907533B2 (en) 2007-11-28 2011-03-15 Tekelec Methods, systems, and computer program products for performing IP link proving using heartbeat messages
CN101188527B (zh) * 2007-12-24 2012-03-14 杭州华三通信技术有限公司 一种心跳检测方法和装置
FR2926939A1 (fr) * 2008-01-30 2009-07-31 Canon Kk Procede de transmission de donnees avec anticipation des acquittements, dispositif d'entree, produit programme d'ordinateur et moyen de stockage correspondants
JP4964164B2 (ja) * 2008-02-15 2012-06-27 三菱電機株式会社 通信装置の冗長構成制御方法
US7983622B1 (en) * 2008-03-12 2011-07-19 Sprint Spectrum L.P. Using phase difference to determine valid neighbors
US8958460B2 (en) * 2008-03-18 2015-02-17 On-Ramp Wireless, Inc. Forward error correction media access control system
JP4557028B2 (ja) * 2008-03-19 2010-10-06 ソニー株式会社 情報処理装置、情報処理方法、クライアント機器、情報処理システム
US8022822B2 (en) 2008-06-27 2011-09-20 Microsoft Corporation Data collection protocol for wireless sensor networks
US8165080B2 (en) 2008-08-22 2012-04-24 Qualcomm Incorporated Addressing schemes for wireless communication
US9119165B2 (en) * 2009-09-10 2015-08-25 Nextnav, Llc Coding in a wide area positioning system (WAPS)
EP2254046B1 (en) * 2009-05-18 2014-07-30 Amadeus S.A.S. A method and system for managing the order of messages
US8880524B2 (en) 2009-07-17 2014-11-04 Apple Inc. Scalable real time event stream processing
US20110040668A1 (en) * 2009-08-17 2011-02-17 Darren Lee Automated spread trading system
US8417618B2 (en) * 2009-09-03 2013-04-09 Chicago Mercantile Exchange Inc. Utilizing a trigger order with multiple counterparties in implied market trading
US9979589B2 (en) * 2009-12-10 2018-05-22 Royal Bank Of Canada Coordinated processing of data by networked computing resources
US20110178915A1 (en) * 2010-01-15 2011-07-21 Lime Brokerage Holding Llc Trading Order Validation System and Method and High-Performance Trading Data Interface
US8595134B2 (en) * 2010-02-12 2013-11-26 Mastercard International Incorporated Apparatus and method for bill presentment and payment
US8595234B2 (en) * 2010-05-17 2013-11-26 Wal-Mart Stores, Inc. Processing data feeds
US8732324B2 (en) * 2010-05-25 2014-05-20 Cisco Technology, Inc. Keep-alive hiatus declaration
US9373102B2 (en) * 2010-07-30 2016-06-21 Mcgraw Hill Financial, Inc. System and method using a simplified XML format for real-time content publication
US9160806B1 (en) * 2010-08-04 2015-10-13 Open Invention Network, Llc Method and apparatus of organizing and delivering data to intended recipients
CN102014416B (zh) * 2010-12-03 2014-07-16 中兴通讯股份有限公司 一种对连接进行双向检测的方法及系统
US10453131B2 (en) * 2011-02-28 2019-10-22 Nyse Group, Inc. Apparatuses, methods and systems for a locked-in trade facilitation engine
US8676937B2 (en) * 2011-05-12 2014-03-18 Jeffrey Alan Rapaport Social-topical adaptive networking (STAN) system allowing for group based contextual transaction offers and acceptances and hot topic watchdogging
US8799135B2 (en) * 2011-06-13 2014-08-05 Trading Technologies International, Inc Generating market information based on causally linked events
US8812708B2 (en) * 2011-07-22 2014-08-19 Cisco Technology, Inc. Transient unpruning for faster layer-two convergence
US8745157B2 (en) 2011-09-02 2014-06-03 Trading Technologies International, Inc. Order feed message stream integrity
US9461876B2 (en) * 2012-08-29 2016-10-04 Loci System and method for fuzzy concept mapping, voting ontology crowd sourcing, and technology prediction

Also Published As

Publication number Publication date
KR20140060333A (ko) 2014-05-19
US20150371331A1 (en) 2015-12-24
US9154393B2 (en) 2015-10-06
SG10201607252VA (en) 2016-10-28
MX2014002222A (es) 2014-05-28
JP2015172963A (ja) 2015-10-01
BR122015015211A2 (pt) 2019-08-27
HK1255333A1 (zh) 2019-08-16
JP2014529828A (ja) 2014-11-13
AU2012301829B2 (en) 2014-09-11
HK1255332A1 (zh) 2019-08-16
US10152751B2 (en) 2018-12-11
JP2018077905A (ja) 2018-05-17
KR101644996B1 (ko) 2016-08-02
CN108055169A (zh) 2018-05-18
CA2847350C (en) 2019-02-12
JP2017097889A (ja) 2017-06-01
US20130060887A1 (en) 2013-03-07
AU2012301829A1 (en) 2013-05-02
JP6091545B2 (ja) 2017-03-08
KR101995058B1 (ko) 2019-07-01
EP3496315A1 (en) 2019-06-12
US20190236707A1 (en) 2019-08-01
CA2847350A1 (en) 2013-03-07
KR20190076077A (ko) 2019-07-01
MX337872B (es) 2016-03-23
SG2014011753A (en) 2014-09-26
WO2013033416A1 (en) 2013-03-07
US20190066210A1 (en) 2019-02-28
CN108055113A (zh) 2018-05-18
CN103907306B (zh) 2018-06-05
JP5840782B2 (ja) 2016-01-06
BR122015015223A2 (pt) 2019-08-27
EP2793417B1 (en) 2018-10-10
US8745157B2 (en) 2014-06-03
EP2652895B1 (en) 2014-05-14
US20140344363A1 (en) 2014-11-20
IL230900A0 (en) 2014-03-31
HK1202725A1 (en) 2015-10-02
BR122015015215A2 (pt) 2019-08-27
BR112014004455A2 (pt) 2017-03-28
KR20160093103A (ko) 2016-08-05
US10311518B2 (en) 2019-06-04
KR20180078357A (ko) 2018-07-09
KR101875915B1 (ko) 2018-07-06
CA3027550A1 (en) 2013-03-07
HK1188520A1 (en) 2014-05-02
CN103907306A (zh) 2014-07-02
MX346140B (es) 2017-03-08
EP2652895A1 (en) 2013-10-23
EP2793417A1 (en) 2014-10-22
JP6313842B2 (ja) 2018-04-18

Similar Documents

Publication Publication Date Title
ES2488672T3 (es) Integridad de un flujo de mensajes
US11823268B2 (en) Trading circles
US11443250B1 (en) Conservation of electronic communications resources via selective publication of substantially continuously updated data over a communications network
AU2016269451B2 (en) Message stream integrity
AU2014265010B2 (en) Message stream integrity