Extended service/jid discovery


I couldn’‘t find anything about this anywhere so I hope this isn’'t a stupid question…

I’'m aware I can configure DNS SRV records to point to my jabber server and service discovery clients/servers will be able to find it @domain.name. However is there anything in any existing spec (or is it feasible to create it) to enable additional SRV records that would identify an addressing server for a domain?

For example: If I then have 3 jabber servers in 3 different geographic locations but want to have all the users usernames as user@domain.name. I could have one of the servers (or another server entirely) designated as the primary lookup and it would record information (or know where to look) about the ‘‘home’’ server of a particular user. Clients and servers would then do a lookup for jabber services @domain.name and if it can get an addressing server record, it queries that to determine the final server destination for a particular user.

If using LDAP for authentication the ‘‘home server’’ information could be stored there or alternatively newly added users are done centrally on the addressing server or the info is sync’'d between servers or something like that.

Also then perhaps a server could operate as a gateway, e.g. if the 3 servers are behind a single firewall, then one of them can be the gateway and will relay the messages to the other servers behind the scenes negating the need for all servers to be world reachable. I know there are IM gateway products around but it would be neater if it was part of the servers ability.

I’'m thinking along the lines of email where your home mail server is generally unknown by the sender and your server can be changed (if you change location) to a nearer server without affecting anyone contacting you. I believe at the moment that if you (as a user) change your jabber server all your contacts will need to update all their rosters.

It may be that this kind of functionality is already available and I’'ve just missed it, in which case please point me to the details!

Thanks very much!


Message was edited by: tncoles

I don’‘t think it’‘s available, but it’'s definitely possible to implement that.


Wildfire does not support this kind of setup. The message routing between servers is currently based on the xmpp.domain, so if three servers use the same one they will never exchange messages.



Thanks for your replies! As it is not currently possible, do you think there is any scope in pursuing this as a future enhancement? So that in future Wildfire would attempt a DNS lookup for an addressing server first and then fall back to direct routing if it can’'t find one?

It’'s just a thought really, as to my mind it would make it a lot easier to manage lots of servers/users without anyone else knowing (or caring) what the topology is. In fact thinking about it a bit more, it would need to be much more behind the scenes than that or all clients would need to add the functionality to ensure it worked globally…


Perhaps if the server was configured to be the default server for the @domain.name as I believe is already possible using DNS and discovery. Then that designated server would receive all messages for all users. However internally it would be able to look up the recipients real server and forward it on, or store it for later delivery if no connection can be made. Obviously presence information would also need to be shared and I’‘m sure there are many other things that I haven’'t considered. If the inclusion of other DNS records can also be made so that as clients do add this new functionality they can use multiple addressing servers to allow for failover without having to resort to clusters.

Apart from simply corporate uses an example on the grander scale might be: If there was a community jabber server at jivesoftware.org and there were thousands of users logged onto it and it began to slow down. Rather than having to keep upping the spec of the server, there could be another server set up elsewhere and then say 50% of the users moved over to it. Whilst there may be geographical connectivity issues that may need to be considered none of them would need to give out a new jid for people to contact them on as it would still be user@jivesoftware.org (for example). Obviously this could scale up as required (ideally with multiple addressing servers for failover/load balancing). Obviously there is still the issue of quick presence updates but perhaps when you login to your server it sends an A.P.B. to let all the addressing servers know that you have logged on etc.


Rather than having to keep upping the spec of the server, there could be another server set up elsewhere and then say 50% of the users moved over to it. Whilst there may be geographical connectivity issues …” one could go for http://www.f5networks.de/f5products/3dns/ to make sure that UK users connect to a server in the UK while Hawaiian users connect to Honolulus jabber server.

It’'s not a big issue to get this implemented but I bet only companies need it and thus a company may want to sponsor the implementation of such a feature or wait very long to get it.


Thanks for your replies

You are probably right that the majority of people wanting that kind of set up would be corporates. It was just something that struck me the first time I ever used jabber about 2/3 years ago and thought that it would be very useful if your jid could be more mobile/personal (a lot of my first registrations were on low spec public boxes that were down a lot so I had to keep moving to new servers and let my contacts know my new jid - obviously the domain name changed aswell in these cases anyway). But obviously without losing the flexibility of individual systems which is why I was thinking along the mail server line as SMTP is pretty good at it

I just thought I’'d mention it incase the principal of it sounded good to someone who might be thinking of new improvements and perhaps something like this might appear over time as a result.