I'd like to gather some feedback before I send the XEP to the editors.

The idea behind "Customizable Message Routing" (CMR) originated from a
Ignite Realtime forum thread [1]: A user asked about Openfire's
message routing behavior when multiple resources where available and
if a round-robin distribution of the messages to the resources would
be possible. He wanted to distribute incoming stanzas, originating
from sensors, evenly over nodes of a cluster collecting the data from
the sensors. Every node of the cluster is connected using the same JID
and has the same priority configured, but with a different resource of
course.

So we find ourselves in a M2M scenario using XMPP, where many clients
send their data to one XMPP entity which consists of multiple cluster
nodes (note that this is *not* a clustered XMPP server). Traditionally
the XMPP RFCs describe two possible routing algorithms in that case:
1. Route to all resources, or 2. Route to the "most available"
resource. The newer RFC 6121 leaves it to the server implementation
how to determine the "most available" resource.

That is where CMR jumps in, by exploiting this freedom of RFC 6121
e.g. by defining the "most available" resource as the resource chosen
by a round-robin algorithm.

The XEP of CMR can be found at

https://geekplace.eu/xeps/xep-cmr/xep-cmr.html

and the source is available at

https://github.com/Flowdalic/xeps/tree/master/xep-cmr

I don't consider the CMR specification finished. For example error
handling is missing in some cases. I also wounder if 5.4 shouldn't go
into an extra XEP.

Florian

1: https://community.igniterealtime.org/message/242204

Reply via email to