MXPA05011314A - Solicitudes de recursos de encuentros con recursos correpondientes. - Google Patents

Solicitudes de recursos de encuentros con recursos correpondientes.

Info

Publication number
MXPA05011314A
MXPA05011314A MXPA05011314A MXPA05011314A MXPA05011314A MX PA05011314 A MXPA05011314 A MX PA05011314A MX PA05011314 A MXPA05011314 A MX PA05011314A MX PA05011314 A MXPA05011314 A MX PA05011314A MX PA05011314 A MXPA05011314 A MX PA05011314A
Authority
MX
Mexico
Prior art keywords
node
nodes
message
act
destination
Prior art date
Application number
MXPA05011314A
Other languages
English (en)
Inventor
Thomas Lee Rodeheffer
Original Assignee
Microsoft Corp
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
Priority claimed from US10/971,451 external-priority patent/US20060090003A1/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of MXPA05011314A publication Critical patent/MXPA05011314A/es

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/04Interdomain routing, e.g. hierarchical routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Telephonic Communication Services (AREA)
  • Medicines That Contain Protein Lipid Enzymes And Other Medicines (AREA)
  • Peptides Or Proteins (AREA)

Abstract

La presente invencion se refiere a metodos, sistemas y productos de programas de computo para solicitudes de encuentros de recursos con los recursos correspondientes; las listas clasificadas de enlaces dobles se cruzan usando un modulo aritmetico en ambas direcciones; las listas clasificadas se pueden dividir con base en una metrica de proximidad multiple; las tablas enrutamiento de nodos proporcionan un indice logaritmico a los nodos dentro del espacio del ID de la infraestructura de federacion para facilitar un enrutamiento mas eficiente; los mensajes se pueden enviar a los nodos dentro de una anillo y se pueden enviar de manera proximal a los nodos dentro de otros anillos divididos.

Description

SOLICITUDES DE RECURSOS DE ENCUENTROS CON RECURSOS CORRESPONDIENTES REFERENCIA CRUZADA CON SOLICITUDES RELACIONADAS La presente solicitud es una continuación de la solicitud de patente en EE.UU. con número de serie 10/971,471, presentada el 22 de octubre de 2004 titulada "Solicitudes de encuentros con recursos correspondientes", la cual se incorpora a la presente por referencia por completo. Campo de la Invención La presente invención se refiere a recursos de acceso y, en particular, a solicitudes de recursos de encuentros con los recursos correspondientes. Antecedentes de la Invención Los sistemas de cómputo y la tecnología relacionada afectan a diversos aspectos de la sociedad, de hecho, la capacidad de un sistema de cómputo para procesar información ha transformado la manera de vivir y de trabajar. Los sistemas de cómputo hoy en día, comúnmente realizan una gran cantidad de tareas (por ejemplo, procesamiento de palabras, programación y gestión de bases de datos) que antes de la llegada de los sistemas de cómputo se realizaban manualmente. Más recientemente, los sistemas de cómputo se han acoplado entre sí y a otros dispositivos electrónicos para formar redes de cómputo tanto alámbricas como inalámbricas sobre las que los sistemas de cómputo y otros dispositivos electrónicos pueden transferir datos electrónicos. Como resultado, muchas tareas realizadas en un sistema de cómputo (por ejemplo, comunicación por voz, acceso a correo electrónico, control de aparatos electrónicos domésticos, búsqueda en la red e impresión de documentos) incluye comunicación entre diversos sistema de cómputo y/o otros dispositivo electrónicos a través de redes de cómputo alámbricas o inalámbricas. Sin embargo, usar un recurso de red para realizar una tarea computarizada, un sistema de cómputo debe contar con una manera para identificar y acceder al recurso de red. De esta manera, los recursos comúnmente reciben identificadores exclusivos, por ejemplo, direcciones de red que identifican de manera exclusiva los recursos y se pueden usar para distinguir un recurso de otros recursos. De esta manera, un sistema de cómputo que desea utilizar un recurso se puede conectar al recurso usando la dirección de red que corresponde a dicho recurso. No obstante, acceder a un recurso de red puede ser difícil si el sistema de cómputo no conoce con anterioridad la dirección de red para un recurso de red. Por ejemplo, un sistema de cómputo no puede imprimir un documento en una impresora de red, a menos que el sistema de cómputo (u otro sistema de cómputo conectado en red) conozca la dirección de red de la impresora de la red.
De esta manera, diversos mecanismos (por ejemplo, un sistema de nombres de dominio ("DNS"), directorio activo ("AD"), sistemas de archivos distribuidos ("DFS")) se han desarrollado para que los sistemas de cómputo identifiquen (y accedan) a recursos que anteriormente no se conocían. Sin embargo, debido a la cantidad y diversidad de recursos (por ejemplo, dispositivos y servicios) a los que se puede tener acceso a través de diferentes redes de cómputo, con frecuencia se requiere que los desabolladores desarrollen aplicaciones que implementen una variedad de mecanismos de acceso e identificación de recursos diferentes. Cada mecanismo diferente puede tener diferentes requerimientos de codificación y es posible que no proporcione al desarrollador todas las funcionalidades necesarias en una aplicación. Por ejemplo, aunque el DNS cuenta con una arquitectura de administración distribuida (es decir, no se requiere una gestión centralizada), el DNS no es suficientemente dinámico, no se organiza por sí mismo, soporta un modelo débil de datos y de consulta y tiene un conjunto fijo de raíces. Por otro lado, el AD tiene un dinamismo suficiente, pero requiere una administración centralizada. Adicionalmente, algunos aspectos de diferentes mecanismos pueden no ser compatibles entre sí. Por ejemplo, un recurso identificado usando un DNS puede no ser compatible con los protocolos de enrutamiento de DFS. De esta manera, un desarrollador se verá forzado a elegir el mecanismo más adecuado y renunciar a las ventajas de otros mecanismos. Los mecanismos para identificar recursos pueden ser particularmente problemáticos en redes de clientes. EL DNS proporciona un servicio de búsqueda, con nombres principales como claves y direcciones de IP como valores, que se basan en un conjunto de servidores de redes especiales para implementar solicitudes de búsqueda. Adicionalmente, el DNS requiere gestión de información (registros de NS) para permitir que los clientes naveguen la jerarquía del servidor de nombres. De esta manera, un recurso debe introducirse en el DNS antes de que el recurso se pueda identificar en una red. En redes de mayor escala, en donde los nodos con frecuencia se conectan y desconectan de la red que depende de una entrada de información, no siempre es práctico. Adicionalmente, el DNS se especializa en la tarea de encontrar servidores o servicios y no aplica en general a otros tipos de recursos. De esta manera, se han desarrollado otros mecanismos para la identificación y acceso de recursos para intentar resolver estos inconvenientes. Diversos mecanismos incluyen protocolos de búsqueda distribuida que son más escalables que el DNS. Estos mecanismos usan varias disposiciones de nodos y algoritmos de enrutamiento para dirigir las solicitudes a los recursos correspondientes y para almacenar información para hacer la búsqueda. Al menos uno de estos mecanismos usa mapas locales del entorno de niveles múltiples en cada nodo en una red para dirigir los mensajes a un nodo de destino. Esto ocasiona en esencia una arquitectura en donde cada nodo es un "nodo raíz" de un árbol de nodos correspondiente (los nodos en su mapa de entorno). Los mensajes se dirigen en incrementos a la ID de destino dígito por dígito (por ejemplo, ***6 => **46 = >, ***346 => 2346 =>, en donde los * representan comodines). La eficiencia de enrutamiento de estos tipos de mecanismos es saltos de enrutamiento 0(registro N) y requieren nodos para mantener una tabla de enrutamiento del tamaño de O(registro N). Al menos uno de estos mecanismos asigna a los nodos una ID exclusiva que se toma de un anillo lineal de números. Los nodos mantienen tablas de enrutamiento que contienen punteros a sus nodos sucesores inmediatos (de conformidad con el valor de la ID) y a tales nodos cuyos valores de ID son el sucesor más cercano al valor ID + 2L. La eficiencia de enrutamiento de estos tipos de mecanismos también son saltos de enrutamiento 0(registro N) y requiere nodos para mantener una tabla de enrutamiento de tamaño 0(registro N). Al menos un mecanismo adicional requiere saltos de enrutamiento 0(registro N1/d) y requiere nodos para mantener una tabla de tamaño O(D). De esta manera, la eficiencia de enrutamiento de todos estos mecanismos depende, al menos por una parte, del número de nodos dentro del sistema. Además, debido a que las ID (al menos para algunos mecanismos) se pueden distribuir de manera uniforme alrededor de un anillo, siempre existe una posibilidad de que el enrutamiento entre los nodos en el anillo ocasionen alguna ineficiencia. Por ejemplo, los saltos de enrutamiento pueden cruzar vastas distancias geográficas, cruzar enlace más caros o pasar a través de dominios inseguros, etc. Adicionalmente, cuando el enrutamiento de un mensaje involucra diversos saltos, existe una oportunidad de que dichos eventos se produzcan en varias ocasiones. Infortunadamente, estos mecanismos no toman en cuenta la proximidad de los nodos (físicos u otros) entre unos y otros. Por ejemplo, según la distribución nodal en un anillo, el enrutamiento de un mensaje de Nueva York a Boston podría involucrar el enrutamiento del mensaje de Nueva York a Londres, a Atlanta, Tokio y después a Boston. De esta manera, al menos otro mecanismo más reciente se acerca para contar al definir la proximidad como una métrica de proximidad escalar sencilla (por ejemplo, saltos de enrutamiento de IP o distancia geográfica). Estos mecanismos usan el conocimiento de la opción basada en la proximidad de las entradas de la tabla de enrutamiento. Debido a que existen muchos nodos candidato "correctos" para cada entrada a la tabla de enrutamiento, estos mecanismos intentan seleccionar un nodo cercano entre los nodos candidatos. Para estos mecanismos se puede proporcionar una función que permite que cada nodo determine la "distancia" de un nodo con una dirección de IP determinada a sí mismo. Los mensajes se dirigen entre los nodos en cercanía para avanzar hacia un destino antes de dirigirse hacia un nodo que está más lejano. De esta manera, algunos recursos se pueden conservar y la dirección es más eficiente.
Infortunadamente, estos mecanismos existentes comúnmente no proporcionan, entre otras cosas, relaciones simétricas entre los nodos (es decir, si un primer nodo considera a un segundo nodo como su compañero, el segundo nodo considera que el primer nodo es un compañero también), enrutamiento de mensajes en ambas direcciones (en el sentido de las manecillas del reloj y en sentido contrario a las manecillas del reloj) en un anillo, división de listas enlazadas de nodos con base en una pluralidad de métricas de proximidad y el enrutamiento de mensajes con base en una pluralidad de la cercanía de métricas de proximidad. Por lo tanto, los sistemas, métodos, productos de programas de cómputo que usan estos mecanismos para las solicitudes de recursos de encuentros con un recurso correspondiente serán favorables. Sumario de la Invención Los problemas mencionados con la técnica anterior se solucionan mediante los principios de la presente invención, la cual se dirige a programas de método, sistemas y programa de cómputo para las solicitudes de recursos para encuentros con los recursos correspondientes. En algunas modalidades, los nodos de una infraestructura de una federación se dividen. Se accede a una lista enlazada clasificada que contiene ID de nodos que se han asignado a nodos en la infraestructura de la federación. Se accede a las categorías de proximidad que representan una pluralidad de diferentes criterios de proximidad para dividir la lista de enlaces clasificados La lista de enlaces clasificados se divide en una o más primeras sub-listas basadas en un primer criterio de proximidad, cada una de las primeras sub-listas que contienen al menos un subconjunto de las ID de los nodos de la lista de enlaces clasificados. Una primera sub-lista, seleccionada entre una o más primeras sub-listas, se divide en una o más segundas sub-listas con base en un segundo criterio de proximidad, cada una de las segundas sub-listas contienen al menos un subconjunto de ID de nodos contenidos en la primera sub-lista. En otras modalidades, por ejemplo como se ilustra en la figura 3, se llena una tabla de nodos de enrutamiento. Un nodo predecesor inmediato se inserta en la tabla de enrutamiento. Un nodo sucesor inmediato se inserta en la tabla de enrutamiento. Los identificadores de nodos en el entorno adecuados se insertan en la tabla de enrutamiento, los nodos del entorno identificados de la lista de enlaces clasificados tanto en la primera dirección como en la segunda dirección contraria con base en un margen de entorno estimado y el tamaño del entorno. Se insertan identificadores de nodos de enrutamiento adecuados en la tabla de enrutamiento, los nodos de enrutamiento identificados de la lista de enlaces clasificados en ambas direcciones, primera y segunda con base en la base del número y el tamaño del espacio de ID para la infraestructura de la federación, los nodos de enrutamiento representan un índice logarítmico de la lista de enlaces clasificados en ambas direcciones, primera y segunda. En otras modalidades, una tabla de nodos de enrutamiento se puede llenar tomando en cuenta los criterios de proximidad. Un nodo predecesor para cada anillo de enrutamiento dividido jerárquicamente en el que participa el nodo actual se divide de conformidad con los criterios de cercanía correspondientes y que contienen al menos subconjuntos de listas de enlaces bidireccionales de un anillo de origen. Un nodo sucesor para cada anillo de enrutamiento dividido jerárquicamente en el que participa el nodo actual se inserta en la tabla de enrutamiento. Los nodos del entorno adecuados para cada anillo de enrutamiento dividido jerárquicamente en el que participa el nodo actual se insertan en la tabla de enrutamiento. Los nodos de enrutamiento adecuados para cada anillo de enrutamiento dividido jerárquicamente en el que participa el nodo actual se insertan en la tabla de enrutamiento. En otras modalidades adicionales, se envía un mensaje, basado potencialmente en uno o más criterios de proximidad que definen una o más clases de nodos hacia un nodo de destino. Un nodo de recepción, recibe un mensaje junto con un número de destino que indica un nodo de destino y opcionalmente uno o más criterios de proximidad. El nodo de recepción, potencialmente entre los nodos en una clase actual de nodos, determina que es al menos uno de mayor numeración que el número de destino que el nodo predecesor correspondiente y numéricamente mayor del número d destino que un nodo sucesor correspondiente. Se determina que el destino no está en el entorno de los nodos, potencialmente entre los nodos en la clase actual de nodos, correspondientes al nodo de recepción. Se identifica un nodo intermedio de una tabla de enrutamiento que corresponde al nodo de recepción, el nodo intermedio está más cercano numéricamente al número de destino que otros nodos de enrutamiento en la tabla de enrutamiento correspondiente. E mensaje se envía al nodo intermedio. El nodo intermedio puede continuar con el envío del mensaje. El mensaje eventualmente llega a su destino cuando un nodo que recibe el mensaje está numéricamente más cercano que su nodo sucesor o predecesor. En modalidades que hacen los envíos basadas en un criterio de mayor proximidad, esta cercanía numérica podría hacerse con respecto a los nodos en una clase de nodos seleccionados. De esta manera, el envío de un mensaje con base en un criterio de proximidad incluye el envío de un nodo de destino (ID) al acercarse progresivamente al nodo de destino dentro de un anillo proximal determinado (clase de nodos) hasta que no haya posibilidad de hacer mayores avances a través del envío dentro de ese anillo. La determinación de que no se puede tener un mayor avance sucede cuando el número de destino se encuentra entre la ID del nodo actual y sus ID de los nodos sucesor y predecesor. En este punto, el nodo actual comienza el envío a través de sus nodos compañeros en el siguiente anillo proximal en el que participa. Este proceso de desplazamiento progresivo hacía el nodo de destino al escalar junto con el trayecto de división hacia el anillo raíz termina cuando se llega al nodo de destino. Estas y otras funcionalidades y objetivos de la presente invención serán evidentes a partir de la siguiente descripción y las reivindicaciones anexas, o se pueden aprender mediante la práctica de la invención como se establece en la presente en adelante. Breve Descripción de las Figuras Para aclarar adicionalmente las ventajas y funcionalidades mencionadas y otras de la presente invención, se hace una descripción más particular de la invención haciendo referencia a modalidades específicas de la misma que se ilustran en los dibujos anexos. Será evidente que estos dibujos ¡lustran sólo las modalidades típicas de la invención y por lo tanto no deben considerarse como limitantes de su alcance. La invención será descrita y explicada con de manera más específica y con detalles con el uso de los dibujos anexos, en donde: La figura 1 ilustra un ejemplo de una infraestructura de federación. La figura 2 ilustra un ejemplo de una arquitectura de cómputo que facilita la solicitud de enrutamiento de manera indirecta a los compañeros. La figura 3 ilustra una relación binaria ejemplar entre los nodos en una infraestructura de federación en la forma de una lista clasificada y el anillo correspondiente. La figura 4 ilustra un anillo ejemplar de anillos que facilitan el enrutamiento proximal. La figura 5 ilustra un ejemplo de un árbol de anillos división inducida de proximidad que facilita el enrutamiento proximal. La figura 6 ilustra un entorno operativo adecuado para los principios de la presente invención. La figura 7 ¡lustra un ejemplo de un diagrama de flujo de un método para llenar una tabla de nodos de enrutamiento que toma en cuenta criterios de proximidad. La figura 8 ilustra un diagrama de flujo de un método para dividir los nodos de una infraestructura de federación. La figura 9 ilustra un diagrama de flujo ejemplar de un método para llenar una tabla de nodos de enrutamiento. La figura 10 ¡lustra un ejemplo de un diagrama de flujo de un método para enviar de manera numérica un mensaje hacia un nodo de destino. La figura 11 ilustra un ejemplo de un diagrama de flujo de un método para enviar un mensaje de manera proximal hacia el nodo de destino. Descripción Detallada de la Invención Los problemas mencionados con la técnica anterior se resuelven con los principios de la presente invención, los cuales están dirigidos a productos de métodos, sistemas y programas de cómputo para solicitudes de recursos de encuentros con los recursos correspondientes. En algunas modalidades, los nodos de una infraestructura de federación se dividen. Se accede a una lista de nodos clasificados que contiene los ID de nodos que se han asignado a nodos en la infraestructura de la federación. Se accede a las categorías de proximidad que representan una pluralidad de diferentes criterios de proximidad para dividir la lista de enlaces clasificados. La lista de enlaces clasificados se divide en una o más primeras sub-Iistas con base en un primer criterio de proximidad, cada uno o más de las primeras sub-Iistas que contienen al menos un subconjunto de los ID de los nodos de la lista de enlaces clasificados. Una primera sub-lista seleccionada entre las primeras sub-Iistas, se divide en una o más segundas sub-Iistas con base en un segundo criterio de proximidad, cada una de las segundas sub-Iistas contiene al menos un subconjunto de ID de los nodos contenidos en la primera sub-lista. En otras modalidades, por ejemplo, la que se ilustra en la figura 3, una tabla de nodos de enrutamiento se llena. Se inserta un nodo predecesor inmediato en la tabla de enrutamiento. Se inserta un nodo sucesor inmediato en la tabla de enrutamiento. Los identificadores de nodos de entorno adecuados se insertan en la tabla de enrutamiento. Los identificadores de los nodos de entorno adecuados se insertan en la tabla de enrutamiento, los nodos del entorno identificados de la lista de enlaces clasificados en la primera dirección y en la segunda dirección contraria con base en un margen de entorno estimado o predeterminado y el tamaño del entorno. Los identificadores de los nodos de enrutamiento adecuados se insertan en la tabla de enrutamiento, los nodos de enrutamiento identificados de la lista de enlaces clasificados en ambas direcciones, la primera y la segunda en sentido contrario basadas en el número base y el tamaño del campo del espacio del ID para la infraestructura de la federación, os nodos de enrutamiento que representan un índice logarítmico de la lista de enlaces clasificados en ambas direcciones, la primera y la segunda en sentido contrario. En otras modalidades, una tabla de nodos de enrutamiento se puede llenar tomando en cuenta los criterios de proximidad. Un nodo predecesor para cada anillo de enrutamiento dividido jerárquicamente que está dividido de conformidad con los criterios de proximidad correspondientes y que contienen al menos subconjuntos de la lista de enlaces bidireccionales de un anillo principal. Un nodo sucesor para cada anillo de enrutamiento dividido jerárquicamente en el que el nodo actual participa se inserta en la tabla de enrutamiento. Los nodos del entorno adecuados para cada anillo de enrutamiento dividido jerárquicamente en el que el nodo actual participa se insertan en la tabla de enrutamiento. Los nodos de enrutamiento adecuados para cada anillo de enrutamiento dividido jerárquicamente en el que el nodo actual participa se insertan en la tabla de enrutamiento.
En otras modalidades, se envía un mensaje, potencialmente basado en uno o más criterios de proximidad que definen una o más clases de nodos correspondientes, hacia el nodo de destino. Un nodo de recepción recibe un mensaje junto con un número de destino que indica un nodo de destino y opcionalmente uno o más criterios de proximidad. El nodo de recepción, potencialmente entre los nodos en una clase actual de nodos, determina que es mayor numéricamente que el número de destino que un nodo predecesor correspondiente y numéricamente mayor que el número de destino que un nodo sucesor correspondiente. Se determina que el destino no está en un conjunto en el entorno de nodos, potencialmente entre los nodos en la clase actual de nodos, que corresponden al nodo de recepción. Un nodo intermedio de una tabla de enrutamiento correspondiente al nodo de recepción se identifica, el nodo intermedio es más cercano numéricamente al número de destino que otros nodos de enrutamiento en la tabla de enrutamiento correspondiente. El mensaje se envía al nodo intermedio. El nodo intermedio puede continuar enviando el mensaje. El mensaje al final llega al nodo de destino cuando un nodo que recibe el mensaje es más cercano numéricamente al número de destino que su nodo sucesor o su predecesor. En modalidades que hacen el envío con base en uno o más criterios de proximidad esta cercanía numérica puede ser con respecto a los nodos en una clase seleccionada de nodos. De esta manera, el enrutamiento de un mensaje basado en criterios de proximidad incluye el enrutamiento a un nodo de destino (ID) al acercarse progresivamente al nodo de destino dentro de un anillo proximal determinado (clase de nodos) hasta que no se pueda hacer mayor avance mediante el enrutamiento dentro de dicho anillo. La determinación de que no se puede hacer mayor avance se produce cuando el número de destino se encuentra entre los ID de los nodos y sus ID de los nodos sucesor o predecesor. En este momento, el nodo actual inicia el envío a través de sus nodos compañeros en el siguiente anillo proximal mayor en donde participa. Este avance de desplazarse progresivamente hacia el nodo de destino mediante la escalada junto con el trayecto de división hacia el anillo raíz termina cuando llega al nodo de destino. Las modalidades dentro del alcance de la presente invención incluyen medios legibles por computadora para transportar o tener instrucciones ejecutables a través de una computadora o estructuras de datos almacenada en ésta. Dichos medios legibles por computadora pueden ser cualquier medio disponible al que se pueda tener acceso mediante un sistema de cómputo de objetivo general o especial. A manera de ejemplo, y no así de limitante, dicho medio legible por computadora puede comprender medios de almacenamiento físico como RAM, ROM, EPROM, CD-.ROM u otros dispositivos de almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento óptico, o cualquier otro medio que se pueda usar para transportar o almacenar medios de códigos de programas deseados en forma de instrucciones ejecutables por computadora, o estructuras de datos y a los cuales se puede tener acceso mediante un sistema de cómputo de objetivo general o especial. En esta descripción y en las reivindicaciones anexas, una "red" se define como uno o más enlaces de datos (de diferentes velocidades posiblemente) que habilitan el transporte de datos electrónicos entre sistemas y/o módulos de cómputo (por ejemplo, módulos de componentes físicos de computación y/o programas y sistemas de programación). Cuando la información se transfiere o se proporciona sobre una red u otras conexiones de comunicación (ya sea de conexiones permanentes, inalámbricas o una combinación de conexiones inalámbricas o conexiones permanentes) a una computadora, la conexión se visualiza adecuadamente como un medio que se puede leer a través de una computadora. De esta manera, cualquier conexión se denomina adecuadamente como "medio legible por computadora". Las combinaciones de lo mencionado anteriormente también se deben incluir dentro del alcance de los medios legibles por computadora. Las instrucciones ejecutables por computadora, pueden ser, por ejemplo instrucciones de formato intermedio o binario, como lenguaje ensamblador, incluso un código fuente. En algunas modalidades, los módulos de componentes físicos de computación, por ejemplo, como circuitos integrados de objetivo especial o de arreglo de compuertas se optimizan para implementar los principios de la presente invención. En esta descripción y en las reivindicaciones posteriores, un "nodo" se define como uno o más módulos de programas y sistemas de programación, uno o más módulos de componentes físicos de computación, o combinaciones de los mismos, que funcionan en conjunto para realizar operaciones en datos electrónicos. Por ejemplo, la definición de un nodo incluye los componentes de componentes físicos de computación de una computadora personal, así como los módulos de programas y sistemas de programación, como el sistema operativo de la computadora personal. El diseño físico de los módulos no es importante. Un nodo puede incluir una o más computadoras conectadas a través de una red. De igual manera, un nodo puede incluir un solo dispositivo físico (como un teléfono móvil o un asistente personal digital "PDA") en donde los módulos internos (como una memoria y un procesador) trabajan juntos para realizar operaciones sobre datos electrónicos. Además, un nodo puede incluir componentes físicos de computación para objetivos especiales, por ejemplo, un enrutador que incluye circuitos integrados de objetivos especiales. Los expertos en la técnica apreciarán que la invención se puede practicar en entornos de cómputo en red con muchos tipos de configuraciones de nodos, incluyendo computadoras personales, computadoras portátiles, dispositivos de mano, sistemas de procesadores múltiples, aparatos electrónicos programados por el consumidor o basados en microprocesadores, computadoras personales en red, minicomputadoras, teléfonos móviles, asistentes digitales personales, localizadores, enrutadores, compuertas, agentes, proxies, muro contra fuego, traductores de direcciones de red y similares. La invención también se puede practicar en entornos de sistemas distribuidos en donde los nodos locales y de enrutamiento, que están enlazados (ya sea mediante enlaces de datos de conexiones permanentes, enlaces de datos inalámbricos, o mediante la combinación de enlaces de datos de conexiones permanentes e inalámbricas) a través de una red, ambos realizan tareas. En un entorno de sistema distribuido, los módulos de programa se pueden ubicar en dispositivos de almacenamiento de memoria local y remota. Arquitectura de la Federación La figura 1 ilustra un ejemplo de una infraestructura de federación 100. La infraestructura de federación 100 incluye nodos 101, 102, 103, que pueden formar diferentes tipos de sociedades de federación. Por ejemplo, los nodos 101, 102, 103 se pueden federar entre otros como clientes sin un nodo raíz. Cada uno de los nodos 101, 102 y 103 tiene un ID correspondiente 171, 182 y 193, respectivamente. En general, los nodos 101, 102, 103 pueden utilizar protocolos de federación para formar sociedades e intercambiar información (por ejemplo, información del estado relacionada con las interacciones con otros nodos). La formación de sociedades e intercambio de información facilita un acceso más eficiente y fiable a los recursos. Otros nodos intermediarios (no se muestra) pueden existir entre los nodos 101, 102 y 103 (por ejemplo, los nodos que tienen ID entre 171 y 193). De esta manera, un mensaje que se envía, por ejemplo, entre el nodo 101 y el nodo 103, puede pasar a través de uno o más de los nodos intermediarios. Los nodos en la infraestructura de la federación 100 (incluyendo otros nodos intermediarios) pueden incluir pilas de protocolo de encuentros correspondientes. Por ejemplo, los nodos 101, 102 y 103 incluyen pilas 141, 142 y 143 de protocolos de encuentros correspondientes, respectivamente. Cada una de las pilas de protocolos 141, 142 y 143 incluye una capa de aplicación (por ejemplo, capas de aplicación 121, 122 y 123) y otras capas inferiores (por ejemplo, otras capas inferiores correspondientes 131, 132 y 133). Cada capa en una pila de protocolo de encuentros es la responsable de diferentes funcionalidades relacionadas con los encuentros de una solicitud de recursos con un recurso correspondiente. Por ejemplo, otras capas inferiores pueden incluir una capa de canal, una capa de enrutamiento y una capa de función. En general, una capa de canal es la responsable de transportar de manera fiable un mensaje (por ejemplo, usando mensajería fiable WS (WS-ReliableMessaging) y un protocolo de acceso a objeto simple ("SOAP")) de un extremo otro (por ejemplo, desde el nodo 101 hacia el nodo 103). La capa de canal amén es la responsable de procesar los encabezados de mensajería fiable entrante y saliente y mantener un estado relacionado con las sesiones de mensajería fiable. En general, una capa de enrutamiento es la responsable del cálculo del siguiente salto hacia un destino. La capa de enrutamiento también es responsable de procesar en direccionamiento de entrada y salida y el enrutamiento de los encabezados de mensajería, así como de mantener el estado de enrutamiento. En general, una capa de función es la responsable de emitir y procesar mensajes de protocolos de encuentros como solicitudes de unión y separación, avisos, actualizaciones y otros mensajes, así como la generación de respuestas a estos mensajes. La capa de función procesa mensajes de solicitudes desde la capa de enrutamiento y envía de vuelta los mensajes de respuesta correspondientes, en caso de haber alguno, hacia el nodo de origen usando la capa de enrutamiento. La capa de función también inicia ios mensajes de solicitudes y luz a la capa de enrutamiento para hacer que se entreguen los mensajes de solicitudes. En general, una capa de aplicación procesa datos específicos de protocolo que no son de encuentros entregados desde la capa de función (es decir, mensajes de aplicaciones). La capa de función puede acceder a los datos de aplicación desde la capa de aplicación y obtener y colocar los datos de aplicación en los mensajes de protocolo de encuentros (por ejemplo, avisos y actualizaciones). Esto es, la capa de función puede ocasionar que los datos del aplicación se emitan nuevamente en los mensajes de protocolo de encuentros y puede ocasionar que los datos de la aplicación pasen nuevamente a la capa de aplicación en los nodos de protocolo de encuentros de recepción. En algunas modalidades, los datos de aplicación se usan para identificar los recursos y los intereses del recurso. De esta manera, una capa de aplicación puede incluir una lógica específica de aplicación e indicar los datos de procesos recibidos y enviarlos hacia otras capas inferiores con objetivo de identificar recursos e intereses en los recursos. Mecanismos para la Federación Los nodos se pueden federar usando una variedad de diferentes mecanismos. Un primer mecanismo de federación incluye nodos clientes que transfieren información a los demás nodos clientes. Cuando un nodo se unirá a una infraestructura de federación, el nodo utiliza un protocolo de descubrimiento de transmisión/emisión con dos estaciones, por ejemplo, WS-Discovery para anunciar su presencia y emite una transmisión/emisión con dos estaciones que hace una búsqueda para detectar otros nodos. El nodo entonces establece una sociedad simple de transmisión con otros nodos ya presentes en la red y acepta nueva sociedades con nodos que se están uniendo recientemente. Posteriormente, el nodo simplemente transfiere todos los mensajes específicos de la aplicación a todos sus nodos compañeros. Un segundo mecanismo de federación incluye nodos cliente que transmiten de manera más eficiente mensajes específicos de la aplicación a sus destinos. Cuando un nodo nuevo se une a una infraestructura de federación, el nuevo nodo usa un protocolo de descubrimiento de transmisión/emisión con dos estaciones, por ejemplo, WS-Discovery para anunciar su presencia y emite una transmisión/emisión con dos estaciones que hace una búsqueda para detectar otros nodos que son parte de la infraestructura de la federación. Al detectar otro nodo, el nuevo nodo establece una sociedad con el otro nodo. A partir de la sociedad establecida, el nuevo nodo aprende sobre la presencia de otros nodos que ya participan en la infraestructura de federación. Entonces establece sociedades con éstos nodos de nuevo aprendizaje y acepta cualquier solicitud de sociedad entrante. Tanto las llegadas/salidas y registros de los nodos de interés en algunos mensajes específicos de la aplicación recibe un flujo a través de la infraestructura de federación que ocasiona que todos los nodos tengan un conocimiento global de otros nodos compañeros y los registros de interés en un mensaje específico de la aplicación. Con dicho conocimiento global, cualquier nodo puede enviar mensajes específicos de la aplicación directamente a los nodos que han expresado interés en el mensaje específico de la aplicación. Un tercer mecanismo de federación incluye nodos compañeros que transmiten de manera indirecta todos los mensajes específicos en la aplicación a sus destinos. En este tercer mecanismo, los nodos reciben identificadores (ID), por ejemplo, un identificadores de 128-bits o 160-bits. El nodo que es el responsable de mantener el registro de los intereses en un mensaje específico de la aplicación determinada se puede determinar que sea uno cuyo ID esté más cercana a uno obtenido por correlación (por ejemplo, cálculo de clave) de la identidad de destino (por ejemplo, URI) del mensaje específico de la aplicación a este espacio de ID de 128-bits o 160-bits.
En este tercer mecanismo, las llegadas y salidas de los nodos fluyen sobre toda la estructura. Por otro lado, los registros de interés en algunos mensajes específicos de la aplicación se transfieren a los nodos determinados como responsables de mantener dicha información de registro. Para la escalabilidad, balance de carga y tolerancia a los fallos, el nodo de recepción los registros de interés en algunos mensajes específicos de la aplicación puede fluir de manera fiable dicha información de registro dentro de su entorno. El entorno para un nodo especificado se puede determinar como el conjunto de nodos que tienen los ID dentro de un margen definido previamente en cualquier lado del ID del nodo especificado. Similar al segundo mecanismo, un nodo que se une recientemente utiliza un protocolo de descubrimiento de transmisión/emisión de dos estaciones, por ejemplo, WS-Discovery para anunciar su presencia y emite una búsqueda de transmisión/emisión de dos estaciones para detectar un nodo que ya es parte de la infraestructura de federación. El nuevo nodo establece una sociedad con el nodo descubierto y usa dicha sociedad para aprender sobre la presencia de otros nodos nuevos que participan en la infraestructura de federación. El nuevo nodo entonces establece mayores sociedades con los nodos recién descubiertos y acepta cualquier solicitud de sociedad entrante. El nuevo noto acepta los registros entrantes de interés en algunos recursos específicos de la capa de aplicación de sus compañeros de los cuales es responsable y puede emitir un flujo sobre su entorno. De esta manera, los mensajes generalmente se pueden transmitir a su destino final a través de nodos de enrutamiento intermedios (por ejemplo, que un nodo recién unido ya ha tenido una sociedad con un nodo o un nodo compañero lo conoce). Como respuesta la recepción de un mensaje específico de la aplicación entrante, el nuevo nodo transmite el mensaje al nodo compañero que puede ser el responsable de mantener la información de registro para el destino especificado en el mensaje. De esta manera, cuando se usan tercer mecanismo, todos los nodos dentro de la infraestructura de la federación tienen un conocimiento global de los otros, pero la información de registro se divide de manera eficiente entre los nodos. Los mensajes específicos en la aplicación se transmiten a su destino final sólo a través de los nodos compañeros que pueden tener la responsabilidad de mantener la información de registro de interés en los mensajes específicos en la aplicación. De esta manera, el direccionamiento se logra transmitiendo sólo al nodo compañero que tiene conocimiento global de la información de registro de interés para el mensaje que se está procesando. Esto se realiza en contraste con el primer mecanismo, en donde el direccionamiento se logra transmitiendo a todos los nodos compañeros. Un cuarto mecanismo de federación incluye nodos compañeros que envían mensajes a otros nodos compañeros. Este cuarto mecanismo difiere del tercer mecanismo por lo menos en que tanto las llegadas/salidas y los registros de los nodos de interés en algunos mensajes específicos de la aplicación todos se envían en lugar de dejarse fluir. Los protocolos de enrutamiento están diseñados para garantizar los encuentros entre mensajes específicos de la aplicación y los mensajes de registro que expresan interés en los mensajes específicos de la aplicación. La figura 2 ¡lustra un ejemplo de una arquitectura de cómputo 200 que facilita las solicitudes de envío de manera indirecta a los compañeros. La arquitectura de cómputo 200 ilustra diferentes tipos de sistemas y dispositivos de cómputo diseminados potencialmente entre múltiples alcances del descubrimiento local que participan en una infraestructura de federación. La estación de trabajo 233 puede incluir una instancia de proveedor registrado PnP. Para informar a sus compañeros sobre la presencia de esta instancia de proveedor PnP, la estación de trabajo 233 envía la solicitud de registro 201 sobre la infraestructura de federación. La solicitud de registro 201 se transfiere inicialmente hacia la computadora portátil o 161, la cual en su momento transmite la solicitud de registro 201 a al agente de mensajes 237, el cual, en su momento transfiere la solicitud de registro 201 hacia la compuerta de mensajes 241. La compuerta de mensajes 241 guarda la solicitud de registro 201 con la información de registro en su base de datos y devuelve un mensaje satisfactorio 204 a la estación de trabajo 233. Posteriormente, otra instancia de proveedor registrado, esta vez una que ejecuta servicios, se activa dentro de la estación de trabajo 233. Esta vez, el nodo conoce que la compuerta de mensajes 241 es la responsable de los registros y transferencias de las solicitudes de registro 205 hacia la compuerta de mensajes 241 directamente. La compuerta de mensajes 241 guarda la solicitud de registro 205 de la información de registro en su base de datos y devuelve un mensaje satisfactorio 206 hacia la estación de trabajo 233. Posteriormente, la impresora 236 (por ejemplo, una impresora UPnP) se enciende y envía un anuncio 207. El servidor 234 detecta el anuncio 207 y envía una solicitud de registro 208 hacia el agente de mensajes 237. El agente de mensajes 237 transfiere la solicitud de registro 208 hacia la compuerta de mensajes 241. La compuerta de mensajes 241 guarda la solicitud de registro 208 con la información de registro en su base de datos y devuelve un mensaje satisfactorio 210 al servidor 234. Posteriormente, la computadora personal 242 emite una solicitud de búsqueda 211 para descubrir todos los dispositivos. Debido a que la computadora personal 242 lo sabe adonde transferir la solicitud de búsqueda 211, envía la solicitud de búsqueda 211 a través de la estación de trabajo 243. Ya que se envía un registro y solicitud de búsqueda al mismo destino, el protocolo de enrutamiento garantiza esencialmente el encuentro entre las dos solicitudes resultantes en la estación de trabajo 243 y se transfiere la solicitud de búsqueda 211 a la compuerta de mensajes 241. La compuerta de mensajes 241 busca la información de registro que mantiene y transfiere la solicitud de búsqueda 211 tanto a la estación de trabajo 233 como al servidor 234. La estación de trabajo 233 y el servidor 234 envían mensajes de respuesta 214 y 216, respectivamente, a la computadora personal 242. Este cuarto mecanismo funciona al enviar (en lugar de dejar fluir) una solicitud al nodo (compuerta de mensajes 241) que tienen conocimiento global de los registros especificados en una solicitud. Este cuarto mecanismo, como será descrito con mayor detalle continuación, esencialmente garantiza que el enrutamiento se pueda lograr en saltos 0(registro N), en donde N es el número de nodos que participan en la infraestructura de la federación. Debido a que este cuarto mecanismo divide de manera eficiente tanto la relación del nodo como la información de registro, escala a redes muy grandes, incluso en Internet. Aunque se han descrito diversos mecanismos de federación, será evidente para los expertos en la técnica, después de revisar esta descripción, que otros mecanismos de federación son posibles. Relación entre los Nodos en una Federación De esta manera, una federación consiste en un conjunto de nodos que cooperan entre sí para formar una red escalable y dinámica en la que la información se pueda diseminar y ubicar de manera sistemática y eficiente. Los nodos se organizan para que participen en una federación como una lista clasificada usando una relación binaria que es reflexiva, anti-simétrica, transmitida, total y definida sobre el dominio de las identidades de los nodos. Ambos extremos de la lista clasificada se unen, de esta manera forman un anillo. De esta manera, cada nodo dentro de la lista se puede visualizar en la parte media de la lista clasificada (como resultado del uso del módulo aritmético). Adicionalmente, la lista tiene un enlace doble de manera que cualquier nodo pueda atravesar la lista en cualquier dirección. Cada nodo de federación se puede asignar con un ID (por ejemplo, a través de un generador de números aleatorios con detección duplicada) a partir de un conjunto fijo de ID entre O y algún límite superior fijo. De esta manera, la adición de 1 a un ID del límite superior fijo da como resultado un ID de cero (es decir, se mueve desde el extremo de la lista de enlaces hacia el inicio de la lista de enlaces). Además, una función de correlación 1:1 del dominio de valor de las identidades del nodo con los mismos nodos se define. La figura 3 ilustra un ejemplo de una lista de enlaces 304 y un anillo correspondiente 306. Habiendo determinado dicho anillo, las siguientes funciones se pueden definir: EnvíoNumérico(V, Msj): Dado un valor V desde el dominio de valor de las identidades del nodo y un mensaje "Msj", la entrega del mensaje al nodo X cuya identidad se puede correlacionar con V usando la función de correlación. Entorno(X,S): el entorno es el conjunto de nodos en cualquier lado del nodo X que equivale cardinalmente a S. Cuando todos los nodos dentro de la federación cuentan con un conocimiento global del anillo, se implementa un EnvíoNumérico(V, Msj) al enviar directamente el Msj al nodo X, cuya identidad se obtiene aplicando la función de correlación a V. De manera alternativa, cuando los nodos tienen un conocimiento limitado de otros nodos (por ejemplo, sólo los nodos adyacentes inmediatamente), EnvíoNumérico(V, Msj) se implementa mediante la transmisión del mensaje a los nodos consecutivos en el anillo hasta que llega al nodo de destino X.
Alternativamente (y útilmente), los nodos pueden almacenar suficiente conocimiento sobre el anillo para realizar una búsqueda binaria distribuida (sin tener que contar con un conocimiento global o implementar el envío entre los nodos adyacentes inmediatamente). La cantidad de conocimiento del anillo se puede configurar de manera que se mantenga el conocimiento del anillo con un impacto suficientemente pequeño en cada uno de los nodos, pero que permita un rendimiento de envío aumentado a partir de la reducción en el número de saltos enrutamiento. Como se describió con anterioridad, los ID se pueden asignar usando la relación "<" (menor que) definida sobre un conjunto limitado suficientemente grande de números naturales, lo que significa que su margen se encuentra sobre un conjunto finito de números entre el 0 y algún valor fijo, inclusive. De esta manera, todos los nodos que participan en la federación se asignan con un número natural que se encuentra entre el 0 y algún límite superior elegido de manera adecuada, inclusive. No es necesario que el margen sea muy apretado y puede haber espacios entre los números asignados a los nodos. El número asignado al nodo sirve como la identidad dentro del anillo. La función de correlación se cuenta para los espacios en el espacio de números mediante la correlación de un número que se encuentra dentro de dos identidades de nodo hacia el nodo cuya identidad es más cercana numéricamente al número. Este enfoque tiene diversas ventajas. Al asignar a cada nodo un número distribuido de manera uniforme, existe una probabilidad aumentada de que todos los segmentos del anillo se llenen de manera uniforme. Adicionalmente, el sucesor, el predecesor y los cálculos del entorno se pueden realizar de manera eficiente usando el módulo aritmético. Algunas modalidades, los nodos de federación se asignan con un ID desde dentro del cual un espacio de ID están grande que las oportunidades de que dos nodos tengan el mismo ID asignado son poco probables (por ejemplo, cuando se usa la generación de números aleatorios). Por ejemplo, un nodo puede recibir un ID de 0 a b" - 1, en donde b es igual a, por ejemplo, 8 o 16 y n equivale, por ejemplo, a 28-bits o 60-bits dígitos equivalentes. De esta manera, se puede asignar un ID a un nodo, por ejemplo, de un margen entre 0 a 1640 - 1 (o aproximadamente 1.461502E48). El margen de 0 a 1640 - 1 proporcionará, por ejemplo, un número suficiente de ID para asignar a cada nodo en Internet un ID exclusivo. De esta manera, cada nodo dentro de la federación puede tener: Un ID que es un valor numérico distribuido de manera uniforme dentro del margen de 0 a bn; y Una tabla de enrutamiento que consiste en (toda la simétrica se realiza a través del módulo bn): Nodo sucesor (s); Nodo predecesor (p); Los nodos del entorno (pk pi, p, s, Sj) de manera que Sj.s.id > (id + u/2), j > v/2-1, y pk.p.id < (id - u/2) y k = v/2-1 ; y Los nodos de enrutamiento (G.(?-?), r.-?, r-i, rn-i) de manera que en r±¡ = EnvíoNumér¡co(id ± b1, Msj)). En donde b es el número base, n es el tamaño del campo en número de dígitos, u es el margen del entorno, v es el tamaño del entorno y la aritmética se realiza a través del módulo bn. Para una buena eficiencia de enrutamiento tolerancia a los fallos, los valores para u y v pueden ser u = b y v = max (registro2(N), 4), en donde N es el número total de nodos que participan físicamente en la federación. N se puede estimar a partir del número de nodos presentes en un segmento del anillo cuya longitud es mayor o igual b, por ejemplo, existe una distribución uniforme de ID. Los valores típicos para b y n son b = 8 o 6 y n = 28-bits o 60-bits dígitos equivalentes. De esta manera, los nodos de enrutamiento pueden formar un índice lograr y químico de espacio en un anillo. Dependiendo de las ubicaciones de los nodos en un anillo, es posible un índice lograr y químico preciso, por ejemplo, cuando hay un nodo existente en cada número dentro del conjunto de id + b1, en donde i = (1, 2, ... (n-1)). Sin embargo, puede ser que no haya nodos en cada número dentro del conjunto. En esos casos, un nodo más cercano a id ± b1 se puede seleccionar como el nodo de enrutamiento. El índice logarítmico resultante no es preciso e incluso puede faltar nodos de enrutamiento exclusivo para algunos números en el conjunto. Haciendo referencia nuevamente a la figura 3, ésta ilustra un ejemplo de una relación binaria entre nodos en una infraestructura de federación en forma de una lista clasificada 304 y un anillo correspondiente 306. El espacio del ID para la lista clasificada 304 se encuentra dentro del margen de 0 a 28 - 1 (o 255). Esto es b = 2 y n = 8. De esta manera, los nodos que se ilustran en a figura 3 son ID asignadas en un margen entre 0 y 255. La lista clasificada 304 utiliza una relación binaria que es reflexiva, anti-simétrica, transitiva, total y definida sobre el dominio de las identidades de los nodos. Ambos extremos de la lista clasificada 304 se unen, de esta manera forman el anillo 306. Esto hace posible que cada nodo dentro de la figura 3 se vea a sí mismo dentro de la lista clasificada 304. La lista clasificada 304 está enlazada doblemente de manera que cualquier nodo puede cruzar la lista clasificada 304 en cualquier dirección. La aritmética para la lista clasificada 304 que cruza (o anillo 306) se realiza en el módulo 28. De esta manera, 255 (o el extremo de la lista clasificada 304) + 1 = 0 (o el inicio de la lista clasificada 304). La tabla de enrutamiento indica que el sucesor del ID 64 es el ID 76 (el ID inmediato en sentido de las manecillas del reloj del ID 64). El sucesor puede cambiar, por ejemplo, cuando un nodo nuevo (por ejemplo, con un ID de 71) se une o un nodo existente (por ejemplo, el ID 76) sale de la infraestructura de federación. De igual manera, la tabla de enrutamiento indica que el predecesor del ID 64 es ID 50 (el ID inmediato en sentido contrario a las manecillas del reloj del ID 64). El predecesor puede cambiar, por ejemplo, cuando un nuevo nodo (por ejemplo, con un ID de 59) se une o un nodo existente sale de la infraestructura de federación. La tabla de enrutamiento además indica que un conjunto de nodos del entorno de ID 64 tienen ID 83, 76, 50 y 46. Un conjunto de nodos de entorno pueden ser número especificados de nodos (es decir, tamaño de entorno v) que están dentro de un margen especificado (es decir, un margen de entorno u) de ID 64. Una variedad de diferentes tamaños de entorno y márgenes de entorno, por ejemplo, V = 4 y U = 10, se pueden usar potencialmente para identificar el conjunto de nodos en el entorno. Un conjunto de entorno puede cambiar, por ejemplo, cuando los nodos se unen o salen de la infraestructura de federación o cuando el número especificado de nodos o el margen especificado cambia.
La tabla de enrutamiento además indica que ID 64 puede enviar los nodos que tienen los ID 200, 2, 30, 46, 50,64, 64,64, 64,76, 83,98, 135 y 200. Esta lista se genera a través de la identificación del nodo más cercano a cada número en un conjunto de id ± 2', en donde i = (1, 2,3, 4,5, 6,7). Esto es, b = 2 y n = 8. Por ejemplo, el nodo que tiene el ID 76 se puede identificar a partir del cálculo del nodo más cercano a 64 + 23, o 72. Un nodo puede enviar mensajes (por ejemplo, solicitudes para acceder a los recursos) directamente a un nodo predecesor, un nodo sucesor, cualquier nodo en un conjunto de nodos del entorno o cualquier nodo de enrutamiento. En algunas modalidades, los nodos implementan una función de enrutamiento numérico para enviar los mensajes. De esta manera, EnvíoNumérico(V, Msj) se puede implementar en el nodo X para entregar el Msj en el nodo Y e la federación, cuyo ID es más cercano, numéricamente, a V, y devuelve el ID del nodo Y al nodo X. Por ejemplo, el nodo que tiene el ID 64 puede implementar EnvíoNumérico(243, Msj) para hacer que el mensaje sea enviado al nodo que tiene el ID 250. Sin embargo, debido a que el ID 250 no es un nodo de ejecución para ID 64, el ID 64 puede enviar el mensaje al ID 2 (el nodo de enrutamiento más cercano a 243). El nodo que tiene el ID 2 puede en su momento, implementar el EnvíoNumérico(243, Msg) para hacer que el mensaje se envíe (directamente o a través de otros nodos intermedios) hacia el nodo que tiene un ID 250. De esta manera, puede ser que se invoque de manera recurrente a la función EnvíoNumérico, haciendo que con cada invocación se envíe un mensaje más cercano al destino.
Aprovechablemente, otras modalidades de la presente invención facilitan la división de un anillo en un anillo de anillos o árbol de anillos con base en una pluralidad de criterios de proximidad de una o más categorías de proximidad (por ejemplo, límites geográficos, características de enrutamiento (por ejemplo, saltos de enrutamiento de IP), dominios administrativos, límites organizacionales, etc.). Debe comprenderse que un anillo se puede dividir con base en los criterios de proximidad de un continente y un criterio de proximidad de país (ambos en una categoría de proximidad de límites geográficos). Gracias a que los ID se pueden distribuir de manera uniforme a través de un espacio de ID (un resultado de la generación de números aleatorios) existe una alta probabilidad de que un segmento determinado de un espacio de ID circular contenga nodos que pertenecen a diferentes clases de proximidad siempre que dichas clases cuenten con la misma característica cardinal aproximadamente. La probabilidad aumenta aún más cuando hay un número suficiente de nodos para obtener un comportamiento estadístico significativo. De esta manera, los nodos del entorno de cualquier nodo típicamente están dispersos desde el punto de vista de proximidad. Debido a que el estado de la aplicación publicada se puede replicar entre los nodos del entorno, la información publicada se puede dispersar también desde el punto de vista de proximidad. La figura 4 ilustra un anillo de anillos 400 que facilitan el enrutamiento proximal. El anillo 401 se puede visualizar como un maestro o anillo raíz, contiene todo los nodos de cada uno de los anillos 402, 413 404. Cada uno de los anillos 402, 413 404 contienen un subconjunto de nodos del anillo 401 que se dividen con base en los criterios especificados de proximidad. Por ejemplo, el anillo 401 se puede dividir con base en la ubicación geográfica, en donde el anillo 402 contiene nodos en Norteamérica, el anillo 403 contiene nodos en Europa y el anillo 404 contiene nodos en Asia. En un espacio numérico que contiene 65.536 (2 16) ID, enviar un mensaje de un nodo en Norteamérica que tiene un ID 5,345 hacia un nodo asiático que tiene un ID 23,345 puede incluir el enrutamiento del mensaje dentro del anillo 402, hasta que un nodo del entorno del nodo asiático se identifica. El nodo del entorno entonces puede enviar el mensaje hacia el nodo asiático. De esta manera, se hace un solo salto (opuesto a diversos saltos) entre un nodo norteamericano y un nodo asiático. De esta manera, el enrutamiento se realiza de una manera eficiente de recursos. La figura 5 ilustra un árbol de división de anillos 500 inducida por la proximidad ejemplar que facilita el enrutamiento proximal. Como se ¡lustra, el árbol de división de los anillos 500 incluye diversos anillos. Cada uno de estos anillos representa una división de una lista de enlaces clasificada. Cada anillo, incluyendo una pluralidad de nodos que tienen ID en la lista de enlaces clasificados. Sin embargo, por razones de claridad debido al número de nodos potenciales, los nodos no se ilustran de manera expresa en los anillos (por ejemplo, el espacio de ID del árbol de división 500 puede ser b = 16 y n = 40). Dentro del árbol de partición 500, el anillo de enrutamiento 501 se divide en una pluralidad de sub-anillos, que incluyen sub-anillos 511, 512, 513 y 514, con base en el criterio 571 (un primer criterio de límite de dominio administrativo). Por ejemplo, cada componente de un nombre de DNS se puede considerar un criterio de proximidad con el orden parcial entre éstos inducido por su orden de aparición en el nombre del DNS leído de derecha a izquierda. De esta manera, el sub-anillo 511 se puede dividir adicionalmente en una pluralidad de sub-anillos, incluyendo sub-anillos 521, 522 y 523, basados en el criterio 581 (un segundo criterio de límites de dominio administrativos).
El sub-anillos 522 se puede dividir adicionalmente en una pluralidad de sub-anillos, incluyendo los sub-anillos 531, 532 y 533, basados en el criterio 572 (un criterio de límites geográficos). El criterio de proximidad basado en la ubicación se puede ordenar parcialmente junto con las líneas de los continentes, países, códigos postales, etc. Los códigos postales están jerárquicamente organizados, esto significa que se pueden interpretar como inductores adicionales de una sub-lista parcialmente ordenada de los criterios de proximidad. El sub-anillo 531 se puede dividir adicionalmente en una pluralidad de sub-anillos, que incluyen los sub-anillos 541, 542, 543 y 544 con base en el criterio 573 (un primer criterio de límite organizacional). Una lista parcialmente ordenada de los criterios de proximidad se puede inducir junto con las líneas sobre la manera en que una compañía determinada está estructurada de manera organizacional por ejemplo en divisiones, departamentos y grupos de productos. De esta manera, el sub anillo 543 se puede dividir adicionalmente en una pluralidad de sub anillos, incluyendo los sub anillos 551 y 552, con base en el criterio 583 (un segundo criterio de límites organizacionales). Dentro del árbol de división 500, cada nodo tiene un ID único y participa en anillos junto con un trayecto de división correspondiente que inicia desde la raíz hacia una hoja. Por ejemplo, cada nodo que participa en el sub anillo 552 también debe participar en los sub anillos 543, 531, 552, 511 y en la raíz 501. El enrutamiento hacia un nodo de destino (ID) se puede lograr al implementar una función EnrutamientoProximal, como se indica continuación: EnrutamientoProximaKV. Msg. P): con un valor determinado para V desde las identidades del dominio del nodo y un mensaje "Msj", se entregue el mensaje al nodo Y, cuya identidad se puede correlacionar con V entre los nodos considerados equivalentes por los criterios de proximidad P. De ésta manera, el enrutamiento se puede lograr al acercarse progresivamente hacia el nodo de destino dentro de un anillo determinado hasta que no se pueda avanzar más mediante el enrutamiento dentro de dicho anillo, según lo determina la condición de que un nodo de destino se encuentra entre el nodo actual y su nodo sucesor o predecesor. En este punto, el nodo actual inicia el envío a través de sus nodos compañeros en el siguiente anillo mayor en que participa. Este proceso de desplazamiento progresivo hacia el nodo destino mediante la escalada junto con el trayecto de división hacia el anillo raíz termina cuando se llega al nodo más cercano al nodo de destino dentro del contexto proxlmal solicitado, como se especificó originalmente en la invocación EnrutamientoProximal. Los actos de enrutamiento pueden permanecer en el entorno próximo al de nodo que originó la solicitud hasta que no se pueda avanzar más dentro del entorno, debido a que nodo destino existe fuera de éste. En este momento, el criterio de proximidad se relaja para aumentar el tamaño del entorno proximal y hacer mayores avances. Éste proceso se repite hasta que el entorno proximal se expande de manera suficiente para que se incluya el nodo destino (ID). El salto de enrutamiento que se hace después de cada relajación sucesiva de los criterios del entorno proximal puede ser un salto potencialmente mayor en un espacio proximal mientras que se hace un salto menor en el espacio numérico en comparación con el salto anterior. De esta manera, sólo el número requerido absolutamente de dichos saltos (entre anillos) se hace antes de llegar al destino. Puede darse el caso de que algunos saltos sean evitados para buscar mensajes, ya que los datos de la aplicación publicada obtienen una réplica hacia abajo del árbol de división cuando se replica entre los nodos del entorno de nodo destino. Para lograr un enrutamiento proximal, cada nodo de la federación mantiene referencias con su nodo sucesor y su nodo predecesor en todos los anillos en el que participa como un miembro (similar al sucesor y predecesor de un solo anillo), el predecesor proximal, del sucesor proximal y el entorno proximal. Para lograr un enrutamiento eficiente, los nodos por un pueden mantener una referencia con los nodos más cercanos a una distancia exponencialmente cada vez mayor en cualquier parte del anillo como socios enrutamiento (similar a los nodos enrutamiento para un solo anillo). En algunas modalidades, los nodos socios enrutamiento que se encuentran entre un par de nodos consecutivos sucesor o predecesor participan en el mismo anillo inferior compartido por el nodo actual y el nodo más cercano numéricamente a éste entre los pares de nodos sucesor o predecesor, respectivamente. De esta manera, lo saltos de enrutamiento hacia la transición de un nodo de destino usando un criterio de proximidad relajado (es decir, una transición a un anillo superior) sólo cuando se necesita avanzar más. De esta manera, los mensajes se pueden "encontrar" de manera eficiente con un modo de federación correspondiente. En algunas modalidades, los nodos implementan una función enrutamiento proximal para enviar mensajes con base en las relaciones de criterios de equivalencia. De esta manera, dado un número V y un mensaje "Msj", un nodo puede implementar EnrutamientoProximal(V, Msj, P) para entregar el mensaje al nodo Y cuya identidad se puede correlacionar con V entre los nodos considerados equivalentes por el criterio de proximidad P. El criterio de proximidad P identifica el anillo inferior en el árbol de división que he es el ancestro como un a todo los nodos considerados equivalentes de manera proximal a éste. Se puede representar como una cadena obtenida al concatenar el criterio de proximidad que se encuentra junto con el trayecto del anillo de raíz al anillo identificado por éste separado por el carácter de separación de trayecto "/". Por ejemplo, el criterio de proximidad que identifica al sub anillo 542 se puede representar como "Proximidad:/. COM/Corp2/LocationA/Div2". A cada anillo del árbol de división 500 se puede asignar un número exclusivo, por ejemplo, al combinar su cadena representativa con un algoritmo con base en SHA. Si el número 0 se reserva para el anillo raíz, se puede deducir que el EnvíoNumérico(V, Msj) = EnrutamientoProximal(V, Msj, 0). Por ejemplo, un nodo en el sub anillo 544 puede implementar el EnrutamientoProximal para identificar uno toma cercano en el sub anillo 531 (por ejemplo, hacia un nodo en el sub anillo 513). En su momento, el sub anillo 531 puede implementar el EnrutamientoProximal para identificar un nodo más cercano en el sub anillo 522. De igual manera, el sub anillo 522 puede implementar el EnrutamientoProximal para identificar un nodo más cercano en el sub anillo 511. De manera similar, el sub anillo 511 puede implementar el EnrutamientoProximal para identificar un nodo más cercano en el anillo 501. De esta manera, puede ser que la función de EnrutamientoProximal se invoque de manera recurrente cada vez que el enrutamiento de invocación de un mensaje esté más cercano del destino. De esta manera, cuando se toma en cuenta el criterio de proximidad, lo saltos de enrutamiento en un trayecto hacia un destino final pueden permanecer dentro de la proximidad de un nodo que origina la solicitud, mientras se avanza de manera significativa entre el nodo de origen el nodo destino en un espacio numérico, hasta que pase una de dos cosas, ya sea que se llegue al nodo de destino o bien que no haya mayor avance bajo el criterio de proximidad elegido en el momento en que se encuentra relajado lo suficiente para avanzar hacia el destino. Por ejemplo, el criterio de proximidad se puede relajar de manera suficiente para un mensaje que será enviado desde el anillo 531 hacia el anillo 522, etcétera. Usando el enfoque de proximidad mencionado, es posible confinar información publicada a un anillo determinado. Por ejemplo, es posible que las organizaciones deseen asegurar que la información específica para la organización no está disponible para las entidades fuera de sus dominios de confianza, ya sea (1) de manera implícita en forma de replicación de entorno a los nodos fuera de los dominios o (2) de manera explícita en forma de servicio a las solicitudes de búsqueda para dicha información. El primer aspecto se satisface haciendo una réplica de la información publicada sólo entre los nodos que se encuentran dentro del entorno de ID objetivo dentro del anillo especificado. Debido a que todo los mensajes que se originan a través de un nodo se envían escalando sucesivamente los anillos a los que pertenecen hasta el anillo raíz, existe una amplia probabilidad de que todas las solicitudes de búsqueda que se origine en dentro de una organización podrán ubicar la información publicada confinada a ésta satisfaciendo de manera implícita el segundo aspecto. De igual manera, a las organizaciones no les agrandan los nodos que se federan de manera automática con los nodos fuera de sus dominios de confianza. Esto puede suceder, por ejemplo, cuando un vendedor que hace una visita conecta su computadora portátil a la red en las instalaciones del cliente. De manera ideal, la computadora portátil que pertenece al vendedor desea ubicar la información publicada en su dominio personal y/o federarse con los nodos dentro de su dominio iniciando en su anillo de proximidad inferior preferido. Comúnmente no se permite federar los nodos en el dominio del cliente. El dar soporte a esta posibilidad requiere la capacidad de asignar nodos de inicio en el dominio de inicio. Dichos nodos de inicio se pueden usar para ubicar la información publicada en el dominio de inicio, para unirse a la federación de inicio e importar y exportar de manera selectiva la información publicada entre los dominios. Dichos nodos también se conocen como compuertas de mensaje. En otras modalidades, una entidad publica referencias a los nodos de inicio en el anillo raíz. Los nodos de inicio se pueden publicar con un número exclusivo (por ejemplo que se obtiene al cuestionar su cadena de representación) en asociación con el anillo (como el ID objetivo). La información del nodo de inicio se puede colocar en la memoria intermedia por demanda a través de los nodos en diferentes anillos que están el trayecto a los ID objetivos correspondientes en el anillo raíz. Dicha colocación en la memoria intermedia proporciona un desempeño mejorado y una reducción en la zona de alta actividad que pudiera presentarse cuando se busca de manera frecuente información semi-estática. La información del nodo de inicio también se puede obtener a través de otros medios, por ejemplo DNS. Para proveer una tolerancia a los fallos para la información publicada y confinada, cada nodo puede mantener un conjunto de nodos en el entorno en todo los anillos en los que participa. Una vez mencionado lo anterior, el estado que se mantiene en un nodo se puede resumir como se indica continuación: Un ID que es un valor numérico distribuido de manera uniforme en un límite entre 0 y bn"1. · Una tabla de enrutamiento que consiste en (todas las funciones aritmética se realizan a través del módulo bn): para cada anillo, digamos el anillo d, en donde el nodo participa · nodo sucesor (Sd) nodo predecesor (Pd) nodos de entorno (Pkd, Pid, Pd, Sd, Sid, SJd) de manera que Sjd.Sd.id > (id + u/2), j > v/2-1, Pkd.Pd.id < (id + u/2), y k > v/2-1- · Nodos de enrutamiento (r-(n-i), r.-i , n, rn-i) de manera que r±¡ = EnrutamientoProximal(id ± b', actualizar sj, d) de manera que Sd = id + b' Sd+i o Pk+i = id - b' = pdl según sea adecuado. En donde b es el número base, n es el tamaño del campo en un número de dígitos, u es el límite del entorno y v es el tamaño del entorno. Observe que un subconjunto de los nodos del entorno que se mantienen en un nodo determinado en el anillo "d" puede aparecer nuevamente como los nodos de entorno en el anillo menor "d + 1" en donde el nodo determinado participa también. De esta manera se puede derivar el límite superior en el número total de nodos de entorno que se mantienen mediante un nodo determinado a través de todos los anillos D en el que participa como D*max(u, v)/2. Esto considera que sólo una referencia a un nodo determinado se mantiene y el límite superior de peor caso es para un árbol en equilibrio. Debe observarse que cuando se divide un anillo en una pluralidad de sub anillos hermanos, se permite que un nodo especificado partícipe de manera simultánea en más de uno de la pluralidad de sub anillos hermanos correspondientes, por ejemplo, a través de alias. Los alias se pueden implementar para asociar diferentes estados, por ejemplo, de diferentes sub anillos, con el nodo especificado. De esta manera, aunque los alias para un nodo determinado tengan el mismo ID, cada alias puede tener un estado diferente asociado a éste. La formación de alias permite que el nodo especificado participe en múltiples anillos que tienen diferentes criterios de proximidad que no necesariamente son ancestros comunes con criterios de proximidad más específicos. Esto es, el nodo especificado puede participar en múltiples ramas del árbol de proximidad. Por ejemplo, una computadora portátil con NIC doble (cableados e inalámbrico) se puede considerar como equivalente de manera proximal tanto a los nodos cableados como a los inalámbricos que comparten segmentos de la misma LAN que la computadora portátil. Sin embargo, estos dos criterios de proximidad diferente se pueden modelar como sub criterios que pueden aplicar sólo después de la aplicación de un criterio de proximidad diferente de prioridad mayor, por ejemplo, uno que se base en la membresía de la organización. Debido a que la computadora portátil pertenece la misma organización, los nodos con alias en los dos sub anillos que representan (1) la membresía en los segmentos de la LAN cableados y (2) membresía en los segmentos de la LAN inalámbricos se unen en un solo nodo en el anillo representan de la organización a la que pertenece la computadora portátil. Debe comprenderse que la función de EnrutamientoProximal funciona como se espera sin modificaciones cuando se encuentran alias. Cada anillo proximal se puede configurar de conformidad con parámetros de anillos (potencialmente diferente). Los parámetros de anillos se pueden usar para definir un entorno (por ejemplo, los parámetros de anillos pueden tamaño del entorno, alerta de mensaje y salida del mensaje para los mensajes con alertas y de salida), indican un mecanismo de federación particular (por ejemplo, desde lo descrito en párrafos anteriores hasta los cuatro mecanismos de federación descritos en la descripción o desde otros mecanismos de federación), o para definir temas específicos de comunicación entre los socios de enrutamiento en el mismo anillo proximal. Algunos parámetros del anillo pueden ser más generales, aplicando a una pluralidad de mecanismos diferentes de federación, mientras otros parámetros del anillo son más específicos y se aplican a un tipo específico de mecanismo de federación.
Los parámetros del anillo que se usan para configurar un anillo proximal de nivel superior se pueden heredar en algunas modalidades a través de anillos proximal de nivel inferior. Por ejemplo, puede ser que el anillo 543 herede algunos parámetros del anillo 531 (que en su momento los heredó del anillo 522, etc.). De esta manera, también se asocia con el anillo 541 un tamaño de entorno y un límite de entorno asociado con el anillo 541. Sin embargo, los parámetros de anillo heredados se pueden modificar y/o los anillos proximal ése pueden configurar de manera individual de conformidad con diferentes parámetros de anillo. Por ejemplo, puede ser que el anillo 511 sea para un dominio administrativo que contiene un gran número de nodos y de esta manera el cuarto mecanismo de federación descrito párrafos anteriores es más adecuado para el anillo 511. Por otro lado, puede ser que el anillo 521 sea para negocios pequeños con un número relativamente pequeño de nodos, y de esta manera, el segundo mecanismo de federación descrito anteriormente sea más adecuado para el anillo 521. De esta manera, los parámetros de anillo asociados con el anillo 521 se pueden establecer con diferentes valores (o los parámetros heredados se pueden cambiar) en comparación con los parámetros del anillo asociados con el anillo 511. Por ejemplo, un parámetro de anillo que indica un tipo particular de mecanismos de federación puede ser diferente entre los anillos 511 y 521. De manera similar, los parámetros que definen un entorno pueden ser diferentes entre los anillos 511 y 521. Además, el anillo 521 se puede configurar de conformidad con los parámetros específicos al segundo mecanismo de federación descrito anteriormente, aunque el anillo 511 se configura de conformidad adicional con los parámetros específicos al cuarto mecanismo de federación descrito anteriormente. De esta manera, los anillos proximales se pueden configurar de manera flexible con base en las características (por ejemplo, número, recursos incluidos, etc.) de los nodos dentro de los anillos proximales. Por ejemplo, un administrador puede seleccionar los parámetros del anillo para los anillos proximales usando un procedimiento de configuración (por ejemplo, través de la inferíase del usuario). Un procedimiento de configuración puede facilitar la configuración de las relaciones de herencia entre los anillos proximales, así como la configuración de anillos proximales individuales, por ejemplo, para anular los parámetros de anillos heredados de otra manera. La figura 8 ilustra un diagrama de flujo ejemplar de un método 800 para dividir los nodos de una infraestructura de federación. El método 800 será descrito con respecto a los anillos de división de un árbol 500 de la figura 5. El método 800 incluye un acto de acceder a una lista de enlaces clasificados que contienen ID de nodos que se han asignado a los nodos en una infraestructura de federación (acto 801). Por ejemplo, se puede tener acceso a la lista de enlaces clasificada que se representa a través del anillo 501. Los ID de la lista de enlaces clasificados (los nodos que se ilustran en el anillo 501) pueden representar nodos en una infraestructura de federación (por ejemplo, infraestructura de federación 100). El método 800 incluye un acto para acceder categorías de proximidad que representan una pluralidad de diferentes criterios de proximidad para dividir la lista de enlaces clasificados (acto 802). Por ejemplo, se puede acceder al criterio de proximidad que representa los límites del dominio 561, los límites geográficos 562 y los límites de organización 563. Sin embargo, otros criterios de proximidad, por ejemplo, límites de dominio de confianza, también se pueden representar en un criterio de proximidad al que se accedió. Las categorías de proximidad pueden incluir las listas ordenadas parcialmente creadas con anterioridad de los criterios de proximidad. Un anillo se puede dividir con base en las listas parcialmente ordenadas de los criterios de proximidad. El método 800 incluye un acto de dividir la lista de enlaces clasificados en una o más sub listas primeras con base en un primer criterio de proximidad, cada una de las primeras sub listas contiene al menos un subconjunto de los ID de los nodos de la lista de enlaces clasificados (acto 803). Por ejemplo, el anillo 501 se puede dividir en sub anillos 511, 512, 513 y 514 con base en el criterio 571. Cada uno de los sub anillos 511, 512, 513 y 514 pueden contener un diferente subconjunto de ID de nodos desde el anillo 501. El método 800 incluye un acto de dividir una primeras sub lista, seleccionada entre las primeras sub listas, en una o más segundas sub listas con base en un segundo criterio de proximidad, cada una de las segundas sub listas contiene al menos un subconjunto de ID de nodos contenido en la primera sub lista (acto 804). Por ejemplo, el sub anillo 511 se puede dividir en sub anillos 521, 522 y 523, base en el criterio 581. Cada uno de los sub anillos 521, 522 y 523 puede contener un diferente subconjunto de ID de nodos desde el sub anillo 5 1. La figura 9 ¡lustra un diagrama de flujo ejemplar de un método 900 para llenar una tabla de enrutamiento del nodo. El método 900 será descrito con respecto a la lista de enlaces clasificados 304 y el anillo 306 de la figura 3. El método 900 incluye un acto de insertar un nodo predecesor en una tabla de enrutamiento, el nodo predecesor antecede a un nodo actual con relación a nodo actual en una primera dirección de una lista enlazada clasificada (acto 901). Por ejemplo, el nodo que tiene un ID 50 se puede insertar en la tabla de enrutamiento como un predecesor para el nodo que tiene el ID 64 (nodo actual). AI desplazarse en una dirección en el sentido de las manecillas del reloj 321 (del extremo a de una lista de enlaces clasificados 304 hacia el extremo B de la lista de enlaces clasificados 304), el nodo que tiene en el ID 50 antecede al nodo que tiene el ID 64. Al insertar un nodo predecesor se puede establecer una sociedad simétrica entre el nodo actual y el nodo predecesor, de manera que el nodo actual es el socio del nodo predecesor y el nodo predecesor es el socio del nodo actual. El método 900 incluye el acto de insertar un nodo sucesor en la tabla de enrutamiento, el nodo sucesor sucede al nodo actual con relación al nodo actual en la primera dirección de la lista de enlaces clasificados (acto 902). Por ejemplo, el nodo que tiene un ID 76 se puede insertar en la tabla de enrutamiento como un sucesor para el nodo que tiene el ID 64 (el nodo actual). Al desplazarse en una dirección contraria al sentido de las manecillas del reloj 322, el nodo que tiene el ID 76 y que al nodo que tiene el ID 64. La inserción de un nodo sucesor puede establecer una sociedad simétrica entre el nodo actual y el nodo sucesor, de manera que el nodo actual sea el socio del nodo sucesor y el nodo sucesor sea socio del nodo actual. El método 900 incluye un acto para insertar los nodos del entorno adecuado en la tabla de enrutamiento, los nodos del entorno identificados en la lista de enlaces clasificados en la primera dirección y en la segunda dirección opuesta con base en un límite del entorno y un tamaño de entorno (acto 903). Por ejemplo, los nodos que tienen los ID 83, 76, 50 y 46 se pueden insertar en la tabla de enrutamiento como nodos de entorno para el nodo que tiene un ID 64 (el nodo actual). Con base en un límite de entorno de 20 y un tamaño de entorno 4, los nodos que tienen ID 83 y 76 se pueden identificar en sentido de las manecillas del reloj 321 y los nodos que tienen ID 50 y 46 se pueden identificar en una dirección contraria al sentido de las manecillas del reloj 322 (desplazando ser el extremo B de la lista de enlaces clasificados 304 hacia el extremo A de una lista de enlaces clasificados 304). Puede ser que en algunos entornos no se identifiquen nodos de entorno adecuados. La inserción de un nodo de entorno puede establecer una sociedad simétrica entre el nodo actual y el nodo de entorno, de modo que el nodo actual es un compañero del nodo de entorno y el nodo de entorno es un compañero del nodo actual. El método 900 incluye un acto de inserción de nodos de enrutamiento adecuados en la tabla de enrutamiento, los nodos de enrutamiento identificados en la lista de enlaces clasificados tanto en la primera como en la segunda dirección con base en un número base y el tamaño del campo del espacio del ID para la infraestructura de federación, los nodos enrutamiento que representan un índice logarítmico de la lista de enlaces clasificados tanto en la primera como en la segunda dirección (acto 904). Por ejemplo, los nodos que tienen ID 200, 2, 30, 46, 50, 64, 64, 64, 64, 64, 76, 83, 98, 135 y 2 se pueden insertar en la tabla de enrutamiento como nodos enrutamiento para el nodo que tiene un ID 64. Con base en el número base 2 y un tamaño de campos de ocho los nodos tienen ID 64, 64, 76, 83, 98, 135 y 200 se pueden identificar en la dirección 321 y los nodos que tienen ID 64, 64, 50, 46, 30, 2 y 200 se pueden identificar en la dirección 322., se ilustra dentro del anillo 306, los nodos de enrutamiento representan un índice logarítmico de la lista de enlaces clasificados 304 tanto en la dirección en sentido de las manecillas del reloj 321 como en la dirección en sentido inverso a las manecillas del reloj 322. La inserción de un nodo de enrutamiento puede establecer una sociedad simétrica entre el nodo actual y el nodo de enrutamiento, de manera que el nodo actual es un compañero del nodo enrutamiento y el nodo de enrutamiento es un compañero del nodo actual. La figura 7 ilustra un diagrama de flujo ejemplar de un método 700 para llenar una tabla de nodos de enrutamiento que toma en cuenta los criterios de proximidad. El método 700 será descrito con respecto a los anillos de la figura 5. El método 700 incluye el acto de insertar un nodo predecesor para cada anillo de enrutamiento dividido jerárquicamente en el que participa el nodo actual en una tabla de enrutamiento (acto 701). Cada nodo predecesor es anterior al nodo actual en una primera dirección (por ejemplo, en el sentido de las manecillas del reloj) dentro de cada anillo de enrutamiento dividido jerárquicamente en el que participa el nodo actual. Los anillos de enrutamiento divididos jerárquicamente se dividen de conformidad con los criterios de proximidad correspondiente y contienen al menos subconjuntos de una lista de enlaces bi-direccionales (y posiblemente la lista de enlaces bi-direccionales completa). Por ejemplo, puede ser que un nodo especificado participe en el anillo raíz 501 y en los sub anillos 511, 522, 523, 531 y 542. De esta manera, se selecciona un nodo predecesor para el nodo especificado desde el cual cada uno de los anillos 501 y sub-anillos 511, 522, 523, 531 y 542. El método 700 incluye un acto de insertar un nodo sucesor para cada anillo de enrutamiento dividido jerárquicamente en el que participa el nodo actual dentro de la tabla de enrutamiento (acto 702). Cada nodo sucesor que sucede al nodo actual en la primera dirección dentro del cual participa el nodo actual en el anillo de enrutamiento dividido jerárquicamente. Por ejemplo, se selecciona un nodo sucesor para el nodo especificado desde el cual cada uno de los anillos 501 y sub anillos 511, 522, 523, 531 y 542. El método 700 incluye un acto de insertar los nodos del entorno adecuado para cada anillo de enrutamiento dividido jerárquicamente en el que participa el nodo actual en la tabla de enrutamiento (acto 703). Los nodos de entorno se pueden identificar tanto en la primera dirección (por ejemplo, en sentido de las manecillas del reloj) y en una segunda dirección opuesta (por ejemplo, en sentido contrario de las manecillas del reloj) con base en un límite de entorno y un tamaño de entorno de los anillos de enrutamiento dividido jerárquicamente en el que participa el nodo actual. Por ejemplo, los nodos de entorno se pueden identificar para el nodo especificado dentro de cada uno de los anillos 501 y sub anillos 511, 522, 523, 531 y 542. El método 700 incluye el acto de insertar los nodos de enrutamiento adecuado para cada anillo de enrutamiento dividido jerárquicamente en el que participa el nodo actual dentro de la tabla de enrutamiento (acto 704). Por ejemplo, los nodos de enrutamiento se pueden identificar para el nodo especificado desde dentro de cada uno de los anillos 501 y sub- anillos 511, 522, 523, 531 y 542. En algunas modalidades, los nodos de enrutamiento adecuados se insertan para cada anillo de proximidad d, con excepción del anillo hoja (o anillos hoja en la modalidades que usan aliases), en donde el nodo Y participa. Los nodos de enrutamiento adecuados se pueden insertar con base en las siguientes expresiones: Si Y.Sd-id < Y. id + b1 < Y.Sd+1-id es verdadero, entonces se usa el anillo d; o Si Y.pd.id < Y. id - b' < Y.pd+i.id es verdadero, entonces se usa el anillo d. Si no se ha identificado un anillo en el paso anterior, se usan los anillos guía (por ejemplo, anillo 501) como el anillo d. Ahora, el anillo d es el anillo de proximidad en donde el nodo Y debe buscar el socio de enrutamiento más cercano a z. La figura 10 ilustra un diagrama de flujo ejemplar de un método 1000 para enviar un mensaje hacia un nodo de destino. El método 1000 se describe con respecto a la lista de enlaces clasificados 304 y el anillo 306 de la figura 3. El método 1000 incluye un acto de un nodo de recepción que recibe un mensaje junto con un número que indica un destino (acto 1001). Por ejemplo, el nodo que tiene un ID 64 puede recibir un mensaje que indica un destino 212. El método 1000 incluye un acto de determinar que el nodo de recepción es al menos uno numéricamente mayor desde el de destino que un nodo predecesor correspondiente y numéricamente mayor desde el de destino que un nodo sucesor correspondiente (acto 1002). Por ejemplo, en la dirección 322, el ID 64 es mayor desde el de destino 212 que el ID 76. El método 1000 incluye un acto de determinar que el destino no se encuentra dentro de un conjunto de nodos en el entorno que corresponden al nodo de recepción (acto 1003). Por ejemplo, el nodo con el ID 64 puede determinar que el destino 212 no está dentro del conjunto de nodos del entorno 83, 76, 50 y 46. El método 1000 incluye un acto de identificar un nodo intermedio de una tabla de enrutamiento que corresponde al nodo de recepción, el nodo intermedio es más cercano numéricamente al destino que otros nodos de enrutamiento en la tabla de enrutamiento correspondiente (acto 1004). Por ejemplo, el nodo que tiene el ID 64 puede identificar el nodo de enrutamiento que tiene el ID 200 numéricamente más cercano al destino 212 que otros nodos de enrutamiento. El método 1000 incluye un acto de enviar el mensaje al nodo intermedio (acto 1005). Por ejemplo, el nodo que tiene el ID 64 puede enviar el mensaje al nodo que tiene el ID 200. La figura 11 ilustra un diagrama de flujo ejemplar de un método 1100 para enviar un mensaje hacia un nodo de destino con base en los criterios de proximidad. El método 1100 será descrito con respecto a los anillos de la figura 4 y la figura 5. El método 100 incluye un acto en donde un nodo de recepción recibe un mensaje junto con un número que indica un destino y un criterio de proximidad (acto 1101). El criterio de proximidad define una o más clases de nodos. El nodo de recepción recibe el mensaje como parte de una clase actual de nodos seleccionados entre una o más clases de nodos con base en el criterio de proximidad. Por ejemplo, el nodo que tiene el ID 172 puede recibir un mensaje que indica un destino de 201 y un criterio de proximidad que indica que el nodo de destino es parte de las clases representadas por el anillo 401. El nodo que tiene el ID 172 puede recibir el mensaje como parte del anillo 404. El método 1100 incluye un acto de determinar que el nodo de recepción es al menos uno que es numéricamente mayor desde el destino que un nodo predecesor correspondiente y numéricamente mayor desde el destino que un nodo sucesor correspondiente, entre los nodos en una clase de nodos seleccionados (acto 1102). Por ejemplo, dentro del anillo 404, el nodo con el ID 172 está más lejos del destino 201 que el nodo que tiene el ID 174 en una dirección en sentido de las manecillas del reloj y es más lejano del destino 201 que el nodo que tiene el ID 153 en una dirección en sentido contrario las manecillas del reloj. El método 1100 incluye un acto de determinar que el destino no se encuentra dentro del conjunto de nodos del entorno del nodo de recepción para alguno o algunas clases de los nodos definidos en los criterios de proximidad (acto 1103). Por ejemplo, el nodo que tiene el ID 172 puede determinar que el destino 201 no es un conjunto de entorno correspondiente en el anillo 404 o en el anillo 401. El método 1100 incluye un acto de identificar un nodo intermedio desde la tabla de enrutamiento del nodo de recepción, el nodo intermedio es más cercano numéricamente al destino que otros nodos de enrutamiento en la tabla de enrutamiento (acto 1104). Por ejemplo, el nodo que tiene el ID 172 puede identificar el nodo que tiene el ID 194 como más cercano numéricamente al destino 201 que otros nodos de enrutamiento dentro del anillo 404. El método 1100 incluye el acto de enviar el mensaje al nodo intermedio (acto 1105). Por ejemplo, el nodo que tiene el ID 172 puede enviar el mensaje recibido al nodo que tiene el ID 194. El nodo que tiene el ID 172 puede enviar el mensaje recibido al nodo que tiene el ID 194 para honrar a una lista ordenada parcialmente definida con anterioridad en los criterios de proximidad. El nodo 194 puede estar tan cercano al destino 201 como sea posible dentro del anillo 404. Esta manera, la proximidad se puede relajar lo suficiente para permitir un mayor enrutamiento hacia el destino en el anillo 401 en el siguiente paso. Esto es, el enrutamiento pasa por una transición del anillo 400 4 0 anillo 401 ya que no hay mayor avance hacia el destino en el anillo 404. De manera alternativa, puede ser que el nodo que tiene el ID 201 se encuentra dentro del entorno del nodo que tiene el ID 194 dentro del anillo 401, lo que ocasiona que no hay mayor enrutamiento. De esta manera, en algunas modalidades, la relajación de los criterios de proximidad para llegar al siguiente anillo superior es suficiente para ocasionar un enrutamiento adicional. Sin embargo, en otras modalidades, la relajación en incrementos de los criterios de proximidad que ocasiona una transición hacia el siguiente anillo superior continúa hasta que se pueda producir mayor enrutamiento (o hasta que el anillo de raíz se haya encontrado). Esto es una pluralidad de transiciones anillos superiores se produce antes de poder realizar un mayor avance de enrutamiento. Por ejemplo, haciendo referencia a la figura 5, cuando no se puede hacer mayor avance de enrutamiento en el anillo 531, los criterios de proximidad se deben relajar lo suficiente para hacer una transición hacia el anillo 511 o incluso hacia el anillo de raíz 501. La figura 6 y el siguiente análisis tienen la intención de proveer una descripción general y breve de un entorno de cómputo adecuado, en el que la invención se puede ¡mplementar. Aunque no se requiere, la invención será descrita en el contexto general de las instrucciones ejecutables a través de una computadora, por ejemplo módulos de programa, ejecutados por un sistema de cómputo. En general, los módulos de programa incluyen rutinas, programas, objetos, componentes, estructuras de datos y similares, que realizan tareas particulares o implementan tipos de datos abstractos particulares. Las instrucciones que se pueden ejecutar a través de una computadora, las estructuras de datos asociados y los módulos de programas representan ejemplos de medios del código de programa para ejecutar actos de los métodos analizados en la presente. Haciendo referencia a la figura 6 un sistema ejemplar para implementar la invención incluye un dispositivo de cómputo de objetivo general en forma de un sistema de cómputo 620 que incluye una unidad de procesamiento 621,1 memoria del sistema 622 y una barra de distribución del sistema 623 que conecta diversos componentes del sistema, incluyendo la memoria del sistema 622 a la unidad de procesamiento 621. La unidad de procesamiento 621 puede ejecutar instrucciones ejecutables a través de una computadora diseñada para implementar características del sistema de cómputo 620, incluyendo características de la presente invención. La barra de distribución del sistema 623 puede ser alguna de diversos tipos de estructuras de barra de distribución, incluyendo una barra de distribución de memoria o un controlador de memoria, una barra de distribución periférica y una barra de distribución local usando cualquiera de una variedad de arquitecturas de barra de distribución. La memoria del sistema incluye una memoria de sólo lectura ("ROM") 624 y una memoria de acceso aleatorio ("RAM") 625.
Un sistema básico de entras y salidas ("BIOS") 626, que contienen las rutinas básicas que ayudan a la transferencia de información entre los elementos dentro del sistema de cómputo 620, por ejemplo durante el arranque, se puede almacenar en ROM 624. El sistema de cómputo 620 también puede incluir una unidad de disco duro magnético 627 para leer y escribir en un disco duro magnético 639, la unidad de disco magnético 628 para leer o escribir en un disco magnético removible 629 y una unidad de disco óptico 630 para leer o escribir en un disco óptico removible 631, por ejemplo un CD-ROM u otro medio óptico. La única de disco duro magnético 627, unidad de disco magnético 628 y unidad de disco óptico 630 se conectan a la barra de distribución dei sistema 623 a través de una interfase de la unidad de disco duro 632, la interfase de la unidad de disco magnético 633 y la interfase de unidad óptica 634, respectivamente. Las unidades y sus medios legibles por computadora asociados proporcionan almacenamiento permanente de instrucciones, estructuras de datos, módulos de programas y otros datos ejecutables por computadora para el sistema de cómputo 620. Aunque el entorno ejemplar descrito en la presente usa una unidad de disco duro magnético 639,1 disco magnético removible 629 y un disco óptico removible 631, se pueden usar otros tipos de medios legibles por computadora para almacenar datos, incluyendo cassettes magnéticos, tarjetas de memoria instantánea, discos versátiles digitales, cartuchos de Bernoulli, RAM, ROM y similares. Un código de programa significa que comprende uno o más módulos de programa que pueden estar almacenados en un disco duro 639, disco magnético 629, disco óptico 631, ROM 624 o RAM 625, que incluye un sistema operativo 635, uno o más programas de aplicación 636, otros módulos de programa 637 y datos de programa 638. Un usuario puede introducir comandos información es tema de cómputo 620 a través de un teclado 640, un dispositivo puntero 642 otros dispositivos de entrada (no se muestran), por ejemplo, micrófono, una palanca de mando, una almohadilla de juegos, un digitalizador o similares. Estos y otros dispositivos de entrada se pueden conectar a la unidad de procesamiento 621 a través de una inferíase de entradas/salidas 646 que se conecta a la barra de distribución del sistema 623. La ¡nterfase de entradas/salidas 646 representan lógicamente cualquiera de una amplia variedad de diferentes interfases, por ejemplo, una inferíase de puerto en serie, una inferíase PS/2, una inferíase de puerto paralelo, una interfase de barra de distribución universal en serie ("USB"), o una interfase ingeniería del instituto de eléctrica y electrónica ("IEEE") 1394 (por ejemplo una interfase FireWire) o incluso puede representar de manera lógica una combinación de diferentes ¡nterfases. Un monitor 647 u otro dispositivo de visualización también se conecta la barra de distribución del sistema 623 a través de una interfase video 648. Los altavoces 669 u otros dispositivos de salida de audio también se conectan a la barra de distribución del sistema 623 a través de una interfase de audio 649. Otros dispositivos periféricos de salida (no se muestran), por ejemplo, impresoras, se pueden conectar al sistema de cómputo 620. El sistema de cómputo 620 se puede conectar a redes, por ejemplo, una red de cómputo a lo ancho de una empresa o de una oficina, una red doméstica, una intranet, y/o Internet. El sistema de cómputo 620 puede intercambiar datos con fuentes externas, por ejemplo, sistemas de cómputo remoto, aplicaciones remotas y/o bases de datos remotas sobre dichas redes. El sistema de cómputo 620 incluye una interfase red 653, a través de la cual el sistema de cómputo 620 recibe datos desde fuentes externas y/o transmite datos hacia fuentes externas. Como serios en la figura 6 la interfase de red 653 facilita intercambio de datos con un sistema de cómputo remotos 683 a través del enlace 651. La interfase de red 653 puede representar de manera lógica uno o más módulos de programas y sistemas de programación y/o componentes físicos de computación, por ejemplo, una tarjeta de interfase de red y una pila de especificación de interfase de controlador de red ("NDIS") correspondiente. El enlace 651 representa una porción de una red (por ejemplo, un segmento de Internet), y el sistema de cómputo remoto 683 representa un nodo de la red. De igual manera, el sistema de cómputo 620 incluye una interfase de entradas/salidas 646, través de la cual el sistema de cómputo 620 recibe los datos de fuentes externas y/o transmite datos hacia fuentes externas. La interfase de entradas/salidas 646 está conectada a un módem 654 (por ejemplo, un módem estándar, un módem por cable o un módem de línea de abonado digital ("DSL")) a través de un enlace 659, través del cual el sistema de cómputo 620 recibe datos y/o transmite datos desde/hacia fuentes externas. Como se ilustra en la figura 6, la interfase de entradas/salidas 646 y el módem 654 facilita intercambio de datos con el sistema de cómputo remoto 693 a través del enlace 652. El enlace 652 representa una porción de una y el sistema de cómputo 693 representa un nodo de la red. Aunque la figura 6 representa un entorno operativo adecuado para la presente invención, los principios de la presente invención se pueden emplear en cualquier sistema que sea capaz de implementar los principios de la presente invención, con las modificaciones adecuadas en caso de ser necesario. El entorno que se ilustra en la figura 6 sólo es ilustrativo y de ninguna manera representa incluso una pequeña porción de la amplia variedad de entornos en los que los principios de la presente invención se pueden implementar. De conformidad con la presente invención, los modos, capaz de aplicación y otras capas inferiores, así como datos asociados, incluyendo tablas de enrutamiento e ID de nodos se pueden almacenar y acceder a éstos desde cualquier medio legible por computadora asociado con el sistema de cómputo 620. Por ejemplo, las porciones de dichos módulos y porciones de los datos de programas asociado se pueden incluir en el sistema operativo 635, programas de aplicación 636, módulos de programas 637 y/o datos de programa 638, para el almacenamiento en la memoria del sistema 622. Cuando un dispositivo de almacenamiento en masa, por ejemplo, un disco duro magnético 639, se conecta al sistema de cómputo 620, dichos módulos y los datos de programas asociados también se pueden almacenar en el dispositivo de almacenamiento en masa. En un entorno conectado en redes, los módulos de programas ilustrados con relación al sistema de cómputo 620, o porciones de éste, se pueden almacenar en dispositivos de almacenamiento de memoria remota, por ejemplo, una memoria del sistema y/o dispositivos de almacenamiento en masa asociados con el sistema de cómputo remoto 683 y/o el sistema de cómputo remoto 693.
La ejecución de dichos módulos se puede realizar en un entorno distribuido como se describió anteriormente. La presente invención se puede representar de otras formas específicas sin separarse de su espíritu y alcance así como de sus características esenciales. Las modalidades descritas deben considerarse en todos aspectos sólo como ilustrativas y no restrictivas. El alcance de la invención por lo tanto se indica en las reivindicaciones anexas en lugar de la descripción anterior. Todos los cambios, que se presentan dentro del significado y límite de equivalencia de las reivindicaciones están incluidos dentro de su alcance.

Claims (51)

  1. REIVINDICACIONES 1.- En una infraestructura de federación, un método para enviar un mensaje hacia un nodo de destino, el método comprende: un acto de un nodo de recepción que recibe un mensaje junto con un identificador de destino que indica un destino, el nodo de recepción está incluido en un anillo de nodos configurados para en enrutamiento bidireccional; un acto de determinar si el siguiente nodo adecuado que recibe el mensaje con base en la posición del nodo de recepción en el anillo de los nodos, el siguiente nodo apropiado es más cercano numéricamente al destino que otros nodos de enrutamiento en la tabla de enrutamiento de los nodos de recepción, la tabla de enrutamiento representa al menos un índice logarítmico de otros nodos en el anillo de nodos, la tabla de enrutamiento se llena con base en el número base que se utiliza para generar el espacio del identificador para generar los identificadores dentro de la infraestructura de federación, el nodo de recepción tiene una relación simétrica con los nodos en la tabla de enrutamiento de los nodos de recepción; y un acto de enviar el mensaje al siguiente componente adecuado.
  2. 2.- El método tal y como se describe en la reivindicación 1, en donde, el acto de determinar el siguiente nodo adecuado que recibe el mensaje comprende un acto de identificación de un nodo intermedio que está más cercano numéricamente al destino que otros nodos de enrutamiento en la tabla de enrutamiento del nodo de recepción.
  3. 3. - El método tal y como se describe en la reivindicación 2, en donde el acto de identificar un nodo intermedio comprende un acto de identificación del nodo intermedio como un nodo incluido en la tabla de enrutamiento del nodo de recepción.
  4. 4. - El método tal y como se describe en la reivindicación 1, en donde, el acto de determinar el siguiente nodo adecuado que recibe el mensaje comprende un acto de recibir un mensaje de estado de un nodo al que el nodo de recepción envió un mensaje con anterioridad.
  5. 5. - El método tal y como se describe en la reivindicación 4, en donde el acto de recibir un mensaje de estado comprende recibir un mensaje de estado que contiene información de la presencia de los nodos.
  6. 6.- El método tal y como se describe en la reivindicación 4, en donde el acto de recibir un mensaje de estado comprende recibir un mensaje de estado que ocasiona la identificación de un componente diferente siguiente y adecuado a través del nodo de recepción.
  7. 7.- El método tal y como se describe en la reivindicación 4, que además incluye: un acto de determinar a partir del mensaje de estado recibido que el nodo de recepción no debe enviar más lejos el mensaje recibido.
  8. 8.- El método tal y como se describe en la reivindicación 7, en donde el acto de determinar a partir del mensaje de estado recibido que en mensaje no se debe enviar más lejos además comprende un acto de determinar a partir del mensaje de estado recibido que el mensaje se entregó al menos a un nodo de destino.
  9. 9. - El método tal y como se describe en la reivindicación 7, en donde el acto de determinar a partir del mensaje de estado recibido que el mensaje no se debe enviar más lejos comprende un acto de determinar a partir del mensaje que no se entregó a ningún nodo de destino.
  10. 10. - El método tal y como se describe en la reivindicación 1, que además comprende: un acto de enviar un mensaje de estado relacionado con el mensaje recibido hacia el nodo que envió el mensaje hacia el nodo de recepción.
  11. 11. - El método tal y como se describe en la reivindicación 10, en donde el acto de enviar un mensaje de estado relacionado con el mensaje recibido comprende un acto de enviar un mensaje de estado recibido previamente como respuesta al nodo que envió el mensaje recibido hacia el nodo de recepción.
  12. 12. - El método tal y como se describe en la reivindicación 1, en donde el acto de determinar el siguiente nodo adecuado que recibirá el mensaje comprende un acto de identificar el nodo de recepción como el siguiente nodo adecuado.
  13. 13. - El método tal y como se describe en la reivindicación 12, en donde el acto de identificar el nodo de recepción como el siguiente nodo adecuado comprende un acto de determinar que el identificador del nodo de recepción corresponde al identificador de destino de manera más cercana.
  14. 14. - El método tal y como se describe en la reivindicación 13, en donde el acto de determinar que el identificador del nodo de recepción corresponde al identificador de destino de manera más cercana comprende el acto de determinar que el identificador del nodo de recepción corresponde de manera exacta con el identificador de destino.
  15. 15. - El método tal y como se describe en la reivindicación 13, que además comprende: un acto de transferir el mensaje recibido hacia un nodo inmediato dentro del entorno del nodo de recepción, el nodo inmediato dentro del entorno en el anillo actual del nodo de recepción.
  16. 16.- El método tal y como se describe en la reivindicación 15, en donde el acto de transferir el mensaje recibido a un nodo inmediato dentro del entorno del nodo de recepción comprend un acto de determinar que el identificador de destino se encuentra entre el nodos de recepción y el nodo del entorno predecesor inmediato al nodo de recepción.
  17. 17. - El método tal y como se describe en la reivindicación 15, en donde el acto de transferir el mensaje recibido a un nodo de entorno inmediato del nodo de recepción comprende el acto de determinar que el identificador de destino se encuentra entre el nodo de recepción y el nodo de entorno sucesor inmediato al nodo de recepción.
  18. 18. - El método tal y como se describe en la reivindicación 15, que además, comprende: un acto del nodo de entorno inmediato del nodo de recepción que envía un mensaje de estado relacionado con el mensaje transferido hacia el nodo de recepción.
  19. 19. - El método tal y como se describe en la reivindicación 18, que además comprende: un acto del nodo de entorno inmediato del nodo de recepción que incluye información de la presencia del nodo en el mensaje de estado.
  20. 20. - El método tal y como se describe en la reivindicación 18, en donde el acto del nodo de entorno inmediato del nodo de recepción que envía un mensaje de estado relacionado con el mensaje transferido hacia el nodo de recepción, además, comprende enviar un mensaje de estado que incluye al menos una indicación de que el nodo de recepción se considera el mejor nodo adecuado siguiente para el mensaje a través del nodo de entorno inmediato del nodo de recepción.
  21. 21. - El método tal y como se describe en la reivindicación 18, en donde el acto del nodo de entorno inmediato del nodo de recepción que envía un mensaje de estado relacionado con el mensaje transferido hacia el nodo de recepción, comprende enviar un mensaje de estado que incluye información de la presencia del nodo.
  22. 22. - El método tal y como se describe en la reivindicación 18, en donde el acto del nodo de entorno inmediato del nodo de recepción que envía un mensaje de estado relacionado con el mensaje transferido hacia el nodo de recepción comprende enviar un mensaje de estado que incluye una indicación de que el nodo de recepción no debe enviar más lejos el mensaje recibido.
  23. 23. - El método tal y como se describe en la reivindicación 12, en donde el acto de identificar el nodo de recepción como el siguiente nodo adecuado comprende un acto del mensaje recibido que ocasiona la identificación del nodo de recepción como el siguiente nodo adecuado.
  24. 24.- El método tal y como se describe en la reivindicación 1, en donde el acto de enviar el mensaje al siguiente componente adecuado comprende el acto de enviar el mensaje al siguiente nodo adecuado.
  25. 25.- El método tal y como se describe en la reivindicación 24, en donde además, el acto de enviar el mensaje al siguiente nodo adecuado incluye el acto de que el nodo de recepción incluya información de presencia del nodo adicional en el mensaje que se envía al siguiente nodo adecuado
  26. 26.- El método tal y como se describe en la reivindicación 1, en donde el acto de enviar el mensaje al siguiente componente comprende el acto de que el nodo de recepción funciona como el destino final del mensaje.
  27. 27.- El método tal y como se describe en la reivindicación 26, en donde el acto de que el nodo de recepción sirva como el destino final del mensaje comprende que el acto de entregar el mensaje a un componente de la aplicación asociado con el nodo de recepción.
  28. 28.- El método tal y como se describe en la reivindicación 26, que además, comprende: un acto de enviar un mensaje de estado asociado con el mensaje recibido como respuesta al nodo que envió el mensaje recibido en el nodo de recepción.
  29. 29.- En una infraestructura de federación que incluye una jerarquía de clases de nodos divididos, un método para enviar un mensaje hacia un nodo de destino basado en criterios de proximidad, el método comprende: un acto de un nodo de recepción que recibe un mensaje junto con un identificador de destino y un criterio de proximidad, el criterio de proximidad define una o más clases de nodos, el nodo de recepción forma parte de una clase actual de nodos en la jerarquía de las clases de nodos, la clase de nodos actual seleccionado entre la o más clases de nodos en la jerarquía de las clases de nodos; un acto de identificar un nodo adecuado de la tabla de enrutamiento del nodo de recepción, el nodo adecuado es numéricamente más cercano al destino que otros nodos de enrutamiento en la tabla de enrutamiento mientras aún está dentro de la o más clases de nodos definidos por el criterio de proximidad, la tabla de enrutamiento representa al menos un índice logarítmico de otros nodos en la o más clases de nodos definidos por el criterio de proximidad que se llenó con base en el número base utilizado para generar el espacio del ID para la infraestructura de federación; y un acto de enviar el mensaje al siguiente nodo adecuado.
  30. 30.- El método tal y como se describe en la reivindicación 29, en donde además, el acto de recibir un mensaje por parte del nodo de recepción junto con un ¡dentificador de destino y un criterio de proximidad comprende un acto del nodo de recepción de acceder a una lista ordenada parcialmente definida previamente de criterios de proximidad.
  31. 31.- El método tal y como se describe en la reivindicación 30, en donde el acto del nodo de recepción que accede a una lista ordenada parcialmente y previamente definida de los criterios de proximidad comprende un acto de recibir una lista ordenada parcialmente y definida con anterioridad de los criterios de selección.
  32. 32. - El método tal y como se describe en la reivindicación 29, en donde el acto de enviar el mensaje al siguiente nodo adecuado, comprende un acto de enviar el mensaje al siguiente nodo adecuado para cumplir con una lista parcialmente ordenada y definida con anterioridad de criterios de proximidad.
  33. 33. - En una infraestructura de federación que incluye una jerarquía de clases de nodos divididos, un método para enviar un mensaje hacia un nodo de destino suficiente, el método comprende: un acto de un nodo de recepción que recibe un mensaje junto con un ¡dentificador de destino y un criterio de proximidad, el criterio de proximidad define una clase superior de nodos dentro de una o más clases de nodos en una jerarquía de clases de nodos, el nodo de recepción forma parte de al menos una clase actual de nodos en la jerarquía de clases de nodos, la clase actual de nodos seleccionada entre una o más clases de nodos en la jerarquía de clases de nodos; un acto de identificar un nodo de destino suficiente para el mensaje, el nodo de destino suficiente es un miembro de la clase superior de nodos definidos a través del criterio de proximidad recibido, el nodo de destino suficiente que está en el entorno del identificador de destino en la clase superior de nodos; y un acto de enviar el mensaje al nodo de destino suficiente.
  34. 34. - El método tal y como se describe en la reivindicación 33, en donde el acto de identificar un nodo de destino suficiente comprende un acto de identificar un nodo de destino suficiente entre al menos la tabla de enrutamiento de los nodos de recepción con base en el criterio de proximidad.
  35. 35. - El método tal y como se describe en la reivindicación 33, en donde el acto de identificar un nodo de destino suficiente comprende un acto de aplicar lógica de un componente de aplicación asociado con el nodo de recepción que identifica el nodo de destino suficiente.
  36. 36. - El método tal y como se describe en la reivindicación 33, que además comprende: un acto de calificar que el nodo de destino suficiente está en el entorno del identificador de destino en la clase superior de nodos.
  37. 37. - El método tal y como se describe en la reivindicación 36, en donde el acto de calificar que el nodo de destino suficiente está en el entorno del identificador de destino en la clase superior de nodos comprende un acto del nodo de recepción de calificar adicionalmente el nodo de destino suficiente que también está más cercano numéricamente al identificador de destino en la clase superior de nodos usando la tabla de enrutamiento del nodo de decepción.
  38. 38. - El método tal y como se describe en la reivindicación 33, que además comprende: un acto de calificar que el nodo de destino suficiente es el nodo de recepción.
  39. 39. - Un sistema que incluye una pluralidad de clases de nodos divididas jerárquicamente, el sistema comprende: un anillo superior de nodos , cada nodo del anillo superior de nodos tienen un identificador de nodo que indica la posición en los nodos de la lista de enlaces clasificados; un primer anillo inferior de nodos, cada nodo en el primer anillo inferior de nodos cuenta con un identificador de nodos en una primera sub lista de nodos, la primera sub lista de nodos dividida de la lista de enlaces clasificados de manera que los nodos del primer anillo inferior también son nodos del anillo superior, la primera sub lista se divide de la lista de enlaces clasificados de conformidad con un criterio de proximidad que indica la manera en que los anillos de los nodos clasifican, el primer anillo de nodos configurado para permitir el envío del tráfico de mensajes para desviar al menos algunos nodos incluidos en la lista de enlaces cuando se envía dentro del primer anillo de nodos; y un segundo anillo inferior de nodos, cada nodo en el segundo anillo inferior de nodos tiene un ¡dentificador de nodo en una segunda sub lista diferente de nodos, la segunda sub lista de nodos divididos de la lista de enlaces clasificados, de manera que los nodos en el segundo anillo inferior también son nodos en el anillo superior, la segunda sub lista dividida de la lista de enlaces clasificados de conformidad con el criterio de proximidad, de manera que el primer anillo inferior y el segundo anillo inferior están clasificados de manera equivalente con respecto al criterio de proximidad del anillo superior, el segundo anillo de nodos está configurado para permitir el tráfico de mensajes enviados que sean desviados al menos algunos nodos incluidos en el primer anillo de nodos cuando se envían dentro del segundo anillo de nodos.
  40. 40.- El sistema tal y como se describe en la reivindicación 39, caracterizado además porque el tráfico de mensajes está limitado al anillo superior de nodos.
  41. 41.- El sistema tal y como se describe en la reivindicación 39, caracterizado además porque el tráfico de mensajes está limitado al primer anillo inferior de nodos.
  42. 42.- El sistema tal y como se describe en la reivindicación 39, caracterizado además porque el tráfico de mensajes está limitado al segundo anillo inferior de nodos.
  43. 43.- El sistema tal y como se describe en la reivindicación 39, caracterizado además porque el sistema está configurado de manera tal que un mensaje dirigido a un nodo de destino en el anillo superior de los nodos avanza tanto como es posible hacia el nodo de destino en el primer anillo inferior de nodos antes de que el enrutamiento del mensaje siga dentro del anillo superior de nodos.
  44. 44.- El sistema tal y como se describe en la reivindicación 39, caracterizado además porque el sistema está configurado de manera tal que un mensaje dirigido a un nodo de destino en el anillo superior de los nodos avanza tanto como es posible hacia el nodo de destino en el segundo anillo inferior de nodos antes de que el enrutamiento del mensaje siga dentro del anillo superior de nodos.
  45. 45.- El sistema tal y como se describe en la reivindicación 39, caracterizado además porque el sistema está configurado de manera tal que un mensaje dirigido a un nodo de destino en el anillo superior de los nodos se puede en entregar a un componente de la aplicación asociado con el nodo de destino después de que el mensaje se recibe en un nodo dentro del entorno del nodo de destino dentro de una clase de equivalencia expresada de nodos.
  46. 46.- El sistema tal y como se describe en la reivindicación 39, caracterizado además porque el sistema está configurado de manera tal que las relaciones de enrutamiento entre los nodos en el anillo superior de nodos son simétricas.
  47. 47.- El sistema tal y como se describe en la reivindicación 39, caracterizado además porque el sistema está configurado de manera tal que las relaciones de enrutamiento entre los nodos en el anillo superior de nodos son bidireccionales.
  48. 48.- El sistema tal y como se describe en la reivindicación 39, caracterizado además porque cada nodo en el primer anillo inferior de nodos que tiene un identificador de nodo en una primera sub lista de nodos comprende cada nodo que se encuentra en el primer anillo inferior de nodos que cuenta con un identificador de nodo del anillo superior de nodos.
  49. 49.- El sistema tal y como se describe en la reivindicación 39, caracterizado además porque cada nodo en el segundo anillo inferior de nodos que tiene un identificador de nodo en una segunda sub lista de nodos comprende cada nodo que se encuentra en el segundo anillo inferior de nodos que cuenta con un identificador de nodo del anillo superior de nodos.
  50. 50. - El sistema tal y como se describe en la reivindicación 39, caracterizado además porque uno o más de los nodos que se encuentran dentro del primer anillo inferior de nodos también están incluidos en el segundo anillo inferior de nodos.
  51. 51. - El sistema tal y como se describe en la reivindicación 50, caracterizado además porque uno o más de los nodos que se encuentran dentro del primer anillo inferior de nodos también están incluidos en el segundo anillo inferior de nodos y comprende uno o más nodos del primer anillo inferior de nodos con alias en el segundo anillo inferior de nodos.
MXPA05011314A 2004-10-22 2005-10-21 Solicitudes de recursos de encuentros con recursos correpondientes. MXPA05011314A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/971,451 US20060090003A1 (en) 2004-10-22 2004-10-22 Rendezvousing resource requests with corresponding resources
US11/220,756 US8014321B2 (en) 2004-10-22 2005-09-07 Rendezvousing resource requests with corresponding resources

Publications (1)

Publication Number Publication Date
MXPA05011314A true MXPA05011314A (es) 2006-04-26

Family

ID=35517374

Family Applications (1)

Application Number Title Priority Date Filing Date
MXPA05011314A MXPA05011314A (es) 2004-10-22 2005-10-21 Solicitudes de recursos de encuentros con recursos correpondientes.

Country Status (10)

Country Link
US (3) US8014321B2 (es)
EP (1) EP1650911B1 (es)
JP (1) JP4726604B2 (es)
KR (1) KR101201072B1 (es)
AT (1) ATE553571T1 (es)
AU (1) AU2005220253B2 (es)
BR (1) BRPI0504513A (es)
CA (1) CA2523897A1 (es)
MX (1) MXPA05011314A (es)
RU (1) RU2400806C2 (es)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2558892A1 (en) 2004-03-13 2005-09-29 Cluster Resources, Inc. System and method for a self-optimizing reservation in time of compute resources
US8782654B2 (en) 2004-03-13 2014-07-15 Adaptive Computing Enterprises, Inc. Co-allocating a reservation spanning different compute resources types
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
US8176490B1 (en) 2004-08-20 2012-05-08 Adaptive Computing Enterprises, Inc. System and method of interfacing a workload manager and scheduler with an identity manager
US7640299B2 (en) 2004-09-30 2009-12-29 Microsoft Corporation Optimizing communication using scaleable peer groups
US7613703B2 (en) 2004-09-30 2009-11-03 Microsoft Corporation Organizing resources into collections to facilitate more efficient and reliable resource access
US7958262B2 (en) * 2004-10-22 2011-06-07 Microsoft Corporation Allocating and reclaiming resources within a rendezvous federation
US8392515B2 (en) * 2004-10-22 2013-03-05 Microsoft Corporation Subfederation creation and maintenance in a federation infrastructure
US8095601B2 (en) 2004-10-22 2012-01-10 Microsoft Corporation Inter-proximity communication within a rendezvous federation
US8014321B2 (en) * 2004-10-22 2011-09-06 Microsoft Corporation Rendezvousing resource requests with corresponding resources
US20110082928A1 (en) 2004-10-22 2011-04-07 Microsoft Corporation Maintaining consistency within a federation infrastructure
US8549180B2 (en) * 2004-10-22 2013-10-01 Microsoft Corporation Optimizing access to federation infrastructure-based resources
US7694167B2 (en) * 2004-10-22 2010-04-06 Microsoft Corporation Maintaining routing consistency within a rendezvous federation
US7730220B2 (en) 2004-10-22 2010-06-01 Microsoft Corporation Broadcasting communication within a rendezvous federation
US8095600B2 (en) * 2004-10-22 2012-01-10 Microsoft Corporation Inter-proximity communication within a rendezvous federation
US8090880B2 (en) 2006-11-09 2012-01-03 Microsoft Corporation Data consistency within a federation infrastructure
US20060090003A1 (en) * 2004-10-22 2006-04-27 Microsoft Corporation Rendezvousing resource requests with corresponding resources
CA2827035A1 (en) 2004-11-08 2006-05-18 Adaptive Computing Enterprises, Inc. System and method of providing system jobs within a compute environment
US8863143B2 (en) 2006-03-16 2014-10-14 Adaptive Computing Enterprises, Inc. System and method for managing a hybrid compute environment
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
CA2603577A1 (en) 2005-04-07 2006-10-12 Cluster Resources, Inc. On-demand access to compute resources
US7881223B2 (en) * 2006-03-31 2011-02-01 Panasonic Corporation Method for on demand distributed hash table update
US8693392B2 (en) * 2007-02-21 2014-04-08 Avaya Canada Corp. Peer-to-peer communication system and method
US20080276091A1 (en) * 2007-05-04 2008-11-06 Annikki Welin Mobile Device File Sharing Method and Apparatus
US7779175B2 (en) * 2007-05-04 2010-08-17 Blackwave, Inc. System and method for rendezvous in a communications network
US8041773B2 (en) 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
US8887166B2 (en) * 2008-07-10 2014-11-11 Juniper Networks, Inc. Resource allocation and modification using access patterns
US8191070B2 (en) * 2008-07-10 2012-05-29 Juniper Networks, Inc. Dynamic resource allocation
US8706900B2 (en) * 2008-07-10 2014-04-22 Juniper Networks, Inc. Dynamic storage resources
US8099402B2 (en) * 2008-07-10 2012-01-17 Juniper Networks, Inc. Distributed data storage and access systems
US20100011091A1 (en) * 2008-07-10 2010-01-14 Blackwave Inc. Network Storage
US9176779B2 (en) * 2008-07-10 2015-11-03 Juniper Networks, Inc. Data access in distributed systems
US8364710B2 (en) * 2008-07-10 2013-01-29 Juniper Networks, Inc. Model-based resource allocation
US8954976B2 (en) * 2008-07-10 2015-02-10 Juniper Networks, Inc. Data storage in distributed resources of a network based on provisioning attributes
US8650270B2 (en) * 2008-07-10 2014-02-11 Juniper Networks, Inc. Distributed computing with multiple coordinated component collections
US9066141B2 (en) * 2009-01-21 2015-06-23 Juniper Networks, Inc. Resource allocation and modification using statistical analysis
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US10877695B2 (en) 2009-10-30 2020-12-29 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US20110153737A1 (en) * 2009-12-17 2011-06-23 Chu Thomas P Method and apparatus for decomposing a peer-to-peer network and using a decomposed peer-to-peer network
US10084856B2 (en) 2009-12-17 2018-09-25 Wsou Investments, Llc Method and apparatus for locating services within peer-to-peer networks
CN102117278B (zh) * 2009-12-31 2016-10-05 联想(北京)有限公司 链表的创建方法及系统、数据的查找方法及系统
CN103200209B (zh) 2012-01-06 2018-05-25 华为技术有限公司 成员资源的访问方法、群组服务器和成员设备
RU2012136239A (ru) * 2012-08-24 2014-03-27 Олег Александрович Серебренников Способ поиска информации в сети интернет
US9298719B2 (en) * 2012-09-04 2016-03-29 International Business Machines Corporation On-demand caching in a WAN separated distributed file system or clustered file system cache
JP6307746B2 (ja) * 2014-03-18 2018-04-11 株式会社リコー 宛先管理システム、通信システム、宛先管理方法、及びプログラム
US9338071B2 (en) 2014-10-08 2016-05-10 Google Inc. Locale profile for a fabric network
KR102209292B1 (ko) 2015-11-04 2021-01-29 삼성전자 주식회사 멀티미디어 시스템에서 데이터 제공 방법 및 장치
EP3381162B1 (en) * 2015-11-25 2021-04-14 Volta Networks, Inc. Network routing systems and techniques
US11108854B2 (en) * 2018-07-25 2021-08-31 International Business Machines Corporation Peer-to-peer network for internet of things resource allocation operation
US11895005B1 (en) * 2022-12-02 2024-02-06 Arista Networks, Inc. Network devices with hardware accelerated table updates

Family Cites Families (125)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5689701A (en) 1994-12-14 1997-11-18 International Business Machines Corporation System and method for providing compatibility between distributed file system namespaces and operating system pathname syntax
US5745683A (en) 1995-07-05 1998-04-28 Sun Microsystems, Inc. System and method for allowing disparate naming service providers to dynamically join a naming federation
US5996075A (en) 1995-11-02 1999-11-30 Sun Microsystems, Inc. Method and apparatus for reliable disk fencing in a multicomputer system
US5831975A (en) 1996-04-04 1998-11-03 Lucent Technologies Inc. System and method for hierarchical multicast routing in ATM networks
US6574654B1 (en) * 1996-06-24 2003-06-03 Oracle Corporation Method and apparatus for lock caching
US6253292B1 (en) 1997-08-22 2001-06-26 Seong Tae Jhang Distributed shared memory multiprocessor system based on a unidirectional ring bus using a snooping scheme
US6178174B1 (en) 1997-08-26 2001-01-23 International Business Machines Corporation Optimistic, eager rendezvous transmission mode and combined rendezvous modes for message processing systems
US5999712A (en) 1997-10-21 1999-12-07 Sun Microsystems, Inc. Determining cluster membership in a distributed computer system
US6269452B1 (en) 1998-04-27 2001-07-31 Cisco Technology, Inc. System and method for fault recovery for a two line bi-directional ring network
US6456597B1 (en) * 1998-05-04 2002-09-24 Hewlett Packard Co. Discovery of unknown MAC addresses using load balancing switch protocols
US6279034B1 (en) 1998-06-03 2001-08-21 International Business Machines Corporation Distributed monitor timer service for use in a distributed computing environment
US7076507B1 (en) * 1998-07-08 2006-07-11 Required Technologies, Inc. Value-instance-connectivity computer-implemented database
US6304556B1 (en) 1998-08-24 2001-10-16 Cornell Research Foundation, Inc. Routing and mobility management protocols for ad-hoc networks
US7430171B2 (en) * 1998-11-19 2008-09-30 Broadcom Corporation Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost
US6480473B1 (en) 1998-12-29 2002-11-12 Koninklijke Philips Electronics N.V. Verification of active nodes in an open network
US6115804A (en) 1999-02-10 2000-09-05 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that permits multiple caches to concurrently hold data in a recent state from which data can be sourced by shared intervention
US6839348B2 (en) 1999-04-30 2005-01-04 Cisco Technology, Inc. System and method for distributing multicasts in virtual local area networks
US6546415B1 (en) 1999-05-14 2003-04-08 Lucent Technologies Inc. Network management system using a distributed namespace
EP1232614A2 (en) * 1999-05-28 2002-08-21 Basic Resources, Inc. Wireless network employing node-to-node data messaging
US6850987B1 (en) 1999-06-01 2005-02-01 Fastforward Networks, Inc. System for multipoint infrastructure transport in a computer network
US6411967B1 (en) 1999-06-18 2002-06-25 Reliable Network Solutions Distributed processing system with replicated management information base
US7463648B1 (en) 1999-08-23 2008-12-09 Sun Microsystems, Inc. Approach for allocating resources to an apparatus based on optional resource requirements
US7117273B1 (en) * 2000-01-25 2006-10-03 Cisco Technology, Inc. Methods and apparatus for maintaining a map of node relationships for a network
US6269085B1 (en) * 2000-02-03 2001-07-31 Sun Microsystems, Inc. Method and apparatus for hierarchical discovery and pruning of slow members of a multicast group
US6917985B2 (en) 2000-03-10 2005-07-12 The Regents Of The University Of California Core assisted mesh protocol for multicast routing in ad-hoc Networks
EP1139602A1 (en) 2000-03-31 2001-10-04 Lucent Technologies Inc. Method and device for multicasting
US6553377B1 (en) 2000-03-31 2003-04-22 Network Associates, Inc. System and process for maintaining a plurality of remote security applications using a modular framework in a distributed computing environment
US7123620B1 (en) * 2000-04-25 2006-10-17 Cisco Technology, Inc. Apparatus and method for scalable and dynamic traffic engineering in a data communication network
US6775703B1 (en) 2000-05-01 2004-08-10 International Business Machines Corporation Lease based safety protocol for distributed system with multiple networks
US6990513B2 (en) 2000-06-22 2006-01-24 Microsoft Corporation Distributed computing services platform
US6947963B1 (en) 2000-06-28 2005-09-20 Pluris, Inc Methods and apparatus for synchronizing and propagating distributed routing databases
US7139270B1 (en) * 2000-08-22 2006-11-21 Lucent Technologies Inc. Systems and method for transporting multiple protocol formats in a lightwave communication network
WO2002019624A2 (en) * 2000-08-31 2002-03-07 The Regents Of The University Of California Cluster-based aggregated switching technique (cast) for routing data packets and information objects in computer networks
US7379994B2 (en) * 2000-10-26 2008-05-27 Metilinx Aggregate system resource analysis including correlation matrix and metric-based analysis
DE60142750D1 (de) * 2000-10-26 2010-09-16 British Telecomm Optimale routenplanung in handover-szenarien
US20020150094A1 (en) 2000-10-27 2002-10-17 Matthew Cheng Hierarchical level-based internet protocol multicasting
US6836756B1 (en) 2000-11-13 2004-12-28 Nortel Networks Limited Time simulation techniques to determine network availability
US6947434B2 (en) * 2000-11-16 2005-09-20 Telefonaktiebolaget Lm Ericsson (Publ) Subgroup multicasting in a communications network
CA2326851A1 (en) * 2000-11-24 2002-05-24 Redback Networks Systems Canada Inc. Policy change characterization method and apparatus
WO2002057917A2 (en) 2001-01-22 2002-07-25 Sun Microsystems, Inc. Peer-to-peer network computing platform
US7062563B1 (en) 2001-02-28 2006-06-13 Oracle International Corporation Method and system for implementing current user links
US6625604B2 (en) 2001-03-09 2003-09-23 Hewlett-Packard Development Company, L.P. Namespace service in a distributed file system using a database management system
US7085825B1 (en) 2001-03-26 2006-08-01 Freewebs Corp. Apparatus, method and system for improving application performance across a communications network
US7113536B2 (en) 2001-04-16 2006-09-26 Telefonaktiebolaget L M Ericsson (Publ) Rendezvous point interpiconet scheduling
US6928578B2 (en) 2001-05-10 2005-08-09 International Business Machines Corporation System, method, and computer program for selectable or programmable data consistency checking methodology
EP1410196B1 (en) 2001-06-22 2019-08-07 AVEVA Software, LLC Installing supervisory process control and manufacturing software from a remote location and maintaining configuration data links in a run-time environment
US7181547B1 (en) 2001-06-28 2007-02-20 Fortinet, Inc. Identifying nodes in a ring network
GB2377140B (en) 2001-06-29 2005-01-19 Ibm Method and apparatus for recovery from faults in a loop network
US6922791B2 (en) 2001-08-09 2005-07-26 Dell Products L.P. Failover system and method for cluster environment
US7493363B2 (en) 2001-09-19 2009-02-17 Microsoft Corporation Peer-to-peer group management and method for maintaining peer-to-peer graphs
ITMI20012088A1 (it) 2001-10-10 2003-04-10 Cit Alcatel Metodo per propagare l'informazione di guasto in una rete rpr e relativo tipo di pacchetto rpr
US6983397B2 (en) 2001-11-29 2006-01-03 International Business Machines Corporation Method, system, and program for error handling in a dual adaptor system where one adaptor is a master
US7426573B2 (en) 2001-12-12 2008-09-16 Alcatel Lucent System and method for providing service availability data for a communication network
US7231463B2 (en) 2002-01-04 2007-06-12 Intel Corporation Multi-level ring peer-to-peer network structure for peer and object discovery
US7076796B2 (en) 2002-01-04 2006-07-11 Reeves Drue A Virtual media from a directory service
US20030145086A1 (en) 2002-01-29 2003-07-31 O'reilly James Scalable network-attached storage system
JP3937855B2 (ja) 2002-02-06 2007-06-27 日本電気株式会社 マルチリング制御方法およびそれを用いるノード並びに制御プログラム
CN1177436C (zh) 2002-02-09 2004-11-24 华为技术有限公司 移动网络中多播用户的管理方法
US6779093B1 (en) 2002-02-15 2004-08-17 Veritas Operating Corporation Control facility for processing in-band control messages during data replication
US7043550B2 (en) 2002-02-15 2006-05-09 International Business Machines Corporation Method for controlling group membership in a distributed multinode data processing system to assure mutually symmetric liveness status indications
AU2003217599A1 (en) 2002-02-22 2003-09-09 Bea Systems, Inc. System and method for using a data replication service to manage a configuration repository
US7254634B1 (en) * 2002-03-08 2007-08-07 Akamai Technologies, Inc. Managing web tier session state objects in a content delivery network (CDN)
US7039719B2 (en) 2002-03-21 2006-05-02 Hewlett-Packard Development Company, L.P. Distributed system with an efficient atomic broadcast mechanism
US7512649B2 (en) * 2002-03-22 2009-03-31 Sun Microsytems, Inc. Distributed identities
US7103884B2 (en) 2002-03-27 2006-09-05 Lucent Technologies Inc. Method for maintaining consistency and performing recovery in a replicated data storage system
US7290262B2 (en) 2002-05-21 2007-10-30 International Business Machine Corporation Method and apparatus for dynamically determining information for deploying a web service
EP1394999A1 (en) 2002-08-07 2004-03-03 Infineon Technologies AG Method for routing of data packets and routing apparatus
US7849140B2 (en) 2002-08-29 2010-12-07 Oracle America, Inc. Peer-to-peer email messaging
US7613796B2 (en) 2002-09-11 2009-11-03 Microsoft Corporation System and method for creating improved overlay network with an efficient distributed data structure
US7239605B2 (en) 2002-09-23 2007-07-03 Sun Microsystems, Inc. Item and method for performing a cluster topology self-healing process in a distributed data system cluster
US7200657B2 (en) 2002-10-01 2007-04-03 International Business Machines Corporation Autonomic provisioning of network-accessible service behaviors within a federated grid infrastructure
US6909721B2 (en) 2002-10-31 2005-06-21 Nokia Corporation Device detection and service discovery system and method for a mobile ad hoc communications network
US7289520B2 (en) 2002-11-20 2007-10-30 Hewlett-Packard Development Company, L.P. Method, apparatus, and system for expressway routing among peers
US6850487B2 (en) 2002-12-05 2005-02-01 The Regents Of The University Of California Method and apparatus for guaranteeing a failure-recovery time in a wavelength-division multiplexing network
DE60320104T2 (de) 2002-12-11 2009-05-14 Nippon Telegraph & Telephone Co. Verfahren und Vorrichtung zur Berechnung von Mehrfachsendungsleitwegen
US7584298B2 (en) * 2002-12-13 2009-09-01 Internap Network Services Corporation Topology aware route control
US7404006B1 (en) 2002-12-20 2008-07-22 Symantec Operating Corporation Publishing a network address in a computer network
US7480708B2 (en) 2002-12-23 2009-01-20 Sap Ag Method and computer program product for managing data consistency
US7137018B2 (en) * 2002-12-31 2006-11-14 Intel Corporation Active state link power management
US7747731B2 (en) 2003-03-27 2010-06-29 Nokia Corporation Minimizing message processing latency in a communication network
US7120824B2 (en) 2003-05-09 2006-10-10 International Business Machines Corporation Method, apparatus and program storage device for maintaining data consistency and cache coherency during communications failures between nodes in a remote mirror pair
US6988173B2 (en) 2003-05-12 2006-01-17 International Business Machines Corporation Bus protocol for a switchless distributed shared memory computer system
US7426637B2 (en) 2003-05-21 2008-09-16 Music Public Broadcasting, Inc. Method and system for controlled media sharing in a network
US7032089B1 (en) 2003-06-09 2006-04-18 Veritas Operating Corporation Replica synchronization using copy-on-read technique
EP1494394A1 (en) 2003-06-30 2005-01-05 Sony International (Europe) GmbH Distance-aware service mechanism for determining the availability of remote services in wireless personal area networks
US7334062B1 (en) 2003-07-22 2008-02-19 Symantec Operating Corporation Technique to monitor application behavior and tune replication performance
US20050031119A1 (en) 2003-08-04 2005-02-10 Yuying Ding Method and communications device for secure group communication
US7680152B2 (en) 2003-08-07 2010-03-16 Robert Bosch Gmbh Method for establishing a user of a data network as a pilot master
US20050050320A1 (en) 2003-09-02 2005-03-03 Microsoft Corporation Branding framework
US20050091399A1 (en) 2003-09-30 2005-04-28 Candan Kasim S. Resource-aware adaptive multicasting in a shared proxy overlay network
US7289501B2 (en) 2003-11-06 2007-10-30 Teknovus, Inc. Method and apparatus for bandwidth-efficient multicast in ethernet passive optical networks
US20050108481A1 (en) 2003-11-17 2005-05-19 Iyengar Arun K. System and method for achieving strong data consistency
US20050111352A1 (en) 2003-11-21 2005-05-26 Boon Ho Method and system for monitoring a network containing routers using a backup routing protocol
US7243089B2 (en) 2003-11-25 2007-07-10 International Business Machines Corporation System, method, and service for federating and optionally migrating a local file system into a distributed file system while preserving local access to existing data
KR100576935B1 (ko) 2003-12-22 2006-05-10 한국전자통신연구원 온톨로지 기반의 애드혹 서비스 검색 시스템 및 방법
US7420954B2 (en) 2004-01-13 2008-09-02 General Motors Corporation Efficient lightweight information dissemination algorithm for mobile wireless ad hoc networks
US7313565B2 (en) 2004-02-19 2007-12-25 Microsoft Corporation Data overlay, self-organized metadata overlay, and associated methods
US20050220106A1 (en) 2004-03-31 2005-10-06 Pierre Guillaume Raverdy Inter-wireless interactions using user discovery for ad-hoc environments
US7730207B2 (en) 2004-03-31 2010-06-01 Microsoft Corporation Routing in peer-to-peer networks
US7478263B1 (en) 2004-06-01 2009-01-13 Network Appliance, Inc. System and method for establishing bi-directional failover in a two node cluster
US7512064B2 (en) 2004-06-15 2009-03-31 Cisco Technology, Inc. Avoiding micro-loop upon failure of fast reroute protected links
US7805407B1 (en) * 2004-06-16 2010-09-28 Oracle America, Inc. System and method for dynamic configuration of replicated database servers
GB0416074D0 (en) 2004-07-17 2004-08-18 Ibm Controlling data consistency guarantees in storage apparatus
US7715396B2 (en) * 2004-08-19 2010-05-11 Microsoft Corporation Network routing
US7613703B2 (en) 2004-09-30 2009-11-03 Microsoft Corporation Organizing resources into collections to facilitate more efficient and reliable resource access
US8014321B2 (en) 2004-10-22 2011-09-06 Microsoft Corporation Rendezvousing resource requests with corresponding resources
US20110082928A1 (en) 2004-10-22 2011-04-07 Microsoft Corporation Maintaining consistency within a federation infrastructure
US20060090003A1 (en) 2004-10-22 2006-04-27 Microsoft Corporation Rendezvousing resource requests with corresponding resources
US8095600B2 (en) 2004-10-22 2012-01-10 Microsoft Corporation Inter-proximity communication within a rendezvous federation
US8095601B2 (en) 2004-10-22 2012-01-10 Microsoft Corporation Inter-proximity communication within a rendezvous federation
US8090880B2 (en) 2006-11-09 2012-01-03 Microsoft Corporation Data consistency within a federation infrastructure
US8392515B2 (en) 2004-10-22 2013-03-05 Microsoft Corporation Subfederation creation and maintenance in a federation infrastructure
US7730220B2 (en) 2004-10-22 2010-06-01 Microsoft Corporation Broadcasting communication within a rendezvous federation
US8549180B2 (en) 2004-10-22 2013-10-01 Microsoft Corporation Optimizing access to federation infrastructure-based resources
US7958262B2 (en) 2004-10-22 2011-06-07 Microsoft Corporation Allocating and reclaiming resources within a rendezvous federation
US7694167B2 (en) 2004-10-22 2010-04-06 Microsoft Corporation Maintaining routing consistency within a rendezvous federation
US20060155781A1 (en) 2005-01-10 2006-07-13 Microsoft Corporation Systems and methods for structuring distributed fault-tolerant systems
US7467265B1 (en) 2005-06-30 2008-12-16 Symantec Operating Corporation System and method for block conflict resolution within consistency interval marker based replication
US7827262B2 (en) * 2005-07-14 2010-11-02 Cisco Technology, Inc. Approach for managing state information by a group of servers that services a group of clients
US7739239B1 (en) * 2005-12-29 2010-06-15 Amazon Technologies, Inc. Distributed storage system with support for distinct storage classes
JP4727437B2 (ja) * 2006-02-03 2011-07-20 株式会社日立製作所 データベースを有するストレージシステムの記憶制御方法
US7673069B2 (en) 2006-02-24 2010-03-02 Microsoft Corporation Strong routing consistency protocol in structured peer-to-peer overlays
US20070214194A1 (en) 2006-03-07 2007-09-13 James Reuter Consistency methods and systems
US20080069082A1 (en) * 2006-09-19 2008-03-20 Bea Systems, Inc. Service router for use with a service-oriented architecture environment
TWI390869B (zh) * 2008-04-24 2013-03-21 Univ Nat Taiwan 網路資源分配系統及方法

Also Published As

Publication number Publication date
AU2005220253A1 (en) 2006-05-11
US20110235551A1 (en) 2011-09-29
KR20060049121A (ko) 2006-05-18
CA2523897A1 (en) 2006-04-22
EP1650911B1 (en) 2012-04-11
US20110238841A1 (en) 2011-09-29
KR101201072B1 (ko) 2012-11-14
BRPI0504513A (pt) 2006-06-27
RU2400806C2 (ru) 2010-09-27
EP1650911A2 (en) 2006-04-26
EP1650911A3 (en) 2006-05-31
US8417813B2 (en) 2013-04-09
RU2005132569A (ru) 2007-04-27
ATE553571T1 (de) 2012-04-15
JP4726604B2 (ja) 2011-07-20
JP2006174417A (ja) 2006-06-29
US8014321B2 (en) 2011-09-06
US20060087990A1 (en) 2006-04-27
AU2005220253B2 (en) 2010-07-01

Similar Documents

Publication Publication Date Title
MXPA05011314A (es) Solicitudes de recursos de encuentros con recursos correpondientes.
US20060090003A1 (en) Rendezvousing resource requests with corresponding resources
RU2433461C2 (ru) Взаимодействие между соседствами в рамках объединения по механизму рандеву
RU2431184C2 (ru) Межблизостная связь в федерации рандеву
US7694167B2 (en) Maintaining routing consistency within a rendezvous federation
US9647917B2 (en) Maintaining consistency within a federation infrastructure
US7958262B2 (en) Allocating and reclaiming resources within a rendezvous federation
US7730220B2 (en) Broadcasting communication within a rendezvous federation
Triantafillou et al. Content-based publish-subscribe over structured P2P networks
US20080288659A1 (en) Maintaining consistency within a federation infrastructure
Kang et al. A Semantic Service Discovery Network for Large‐Scale Ubiquitous Computing Environments
Khoury et al. Naming

Legal Events

Date Code Title Description
FG Grant or registration