A system for routing messages in a communication network having a plurality of nodes (103a, 103b, 103c, 103d), each node including a plurality of servers (104a, 104b, 104c) coupled to one another wherein on receipt of a packet for delivery to an intended recipient by a first server within the plurality of servers (104a, 104b, 104c) of a first node within the plurality of nodes (103a, 103b, 103c, 103d) said system adapted to: determine if the intended recipient is connected to the first server and if the recipient is connected to said first server, deliver the packet; said system being further adapted to, on determining that the intended recipient is not connected to the first server, determine if the packet contains a destination address and forward the packet to destination address for delivery, and in the event that the packet does not contain a destination address, the system forwards the packet to a registry, wherein the registry is adapted to: query at least one database (107a; 107b; 107c) to obtain the user profile containing the intended recipient's location; characterized in that said system is further adapted to: determine if the packet has already been forwarded to a server of the plurality of servers (104a, 104b, 104c); forward the packet to the last known server (104a, 104b, 104c) that last serviced the intended recipient and tag the packet with information signifying that the packet was forwarded by the registry currently processing the packet when the packet has not yet been forwarded; and not forward the packet when the packet has been forwarded. determine if the intended recipient is connected to the first server and if the recipient is connected to said first server, deliver the packet; said system being further adapted to, on determining that the intended recipient is not connected to the first server, determine if the packet contains a destination address and forward the packet to destination address for delivery, and in the event that the packet does not contain a destination address, the system forwards the packet to a registry, wherein the registry is adapted to: query at least one database (107a; 107b; 107c) to obtain the user profile containing the intended recipient's location; characterized in that said system is further adapted to: determine if the packet has already been forwarded to a server of the plurality of servers (104a, 104b, 104c); forward the packet to the last known server (104a, 104b, 104c) that last serviced the intended recipient and tag the packet with information signifying that the packet was forwarded by the registry currently processing the packet when the packet has not yet been forwarded; and not forward the packet when the packet has been forwarded. query at least one database (107a; 107b; 107c) to obtain the user profile containing the intended recipient's location; characterized in that said system is further adapted to: determine if the packet has already been forwarded to a server of the plurality of servers (104a, 104b, 104c); forward the packet to the last known server (104a, 104b, 104c) that last serviced the intended recipient and tag the packet with information signifying that the packet was forwarded by the registry currently processing the packet when the packet has not yet been forwarded; and not forward the packet when the packet has been forwarded. determine if the packet has already been forwarded to a server of the plurality of servers (104a, 104b, 104c); forward the packet to the last known server (104a, 104b, 104c) that last serviced the intended recipient and tag the packet with information signifying that the packet was forwarded by the registry currently processing the packet when the packet has not yet been forwarded; and not forward the packet when the packet has been forwarded.