...
- Asymmetric connection cost.
Link-Attach Routing
Currently Dispatch performs routing on delivered messages based on the address in the message's metadata. There is a second mode of routing in which routing is performed on the link-attach command. In this case, an attached link causes another link to be established along the next-hop connection to the destination. The process is repeated until a serially connected set of links is established from node-to-node across the network. The result is like a Virtual Circuit for AMQP.
In each router, the links are paired, incoming to outgoing. The forwarding of performatives between the links is trivially simple. Everything that comes out of one is propagated out the other in both directions. There is no need to decode or interpret any of the transfers or controls flowing between the links.
Address-forwarding semantics apply to link-attach routing in a way similar to how they apply to message routing. Link-attaches can be routed to the nearest destination, or balanced across the full set of destinations. The only forwarding semantic that does not apply to link-attach is multicast. All link-routing is ultimately point-to-point.
The following work items and considerations apply:
- There must be a determination as to when a link-attach should be routed and when it should be simply terminated in the router.
- There needs to be a way to identify an endpoint connection as being the path to a particular node (the destination). This could possibly be done by creating a "pilot" subscription (receiving link) that's sole purpose is to associate a node destination address with a connection/container. It could also be done through provisioning (like a waypoint).
- Forwarding logic must be added to propagate flow commands from consumer to producer.
- Logic must be added that propagates link-loss/detach outward in both directions from the site of a failure.
xxx
- Policy _expression_ and enforcement
- Distributed/central management and provisioning
- Improved scale for mobile addresses
- Link-attach-routing
- Other access protocols