DesignXMPP arch

Version 11 (Anonymous, 03/01/2012 12:53 pm)

1 1
= XMPP gateway architecture =
2 1
3 11
[[TOC(DesignXMPP, depth=3)]]
4 11
5 9
[[TOC(DesignXMPP_arch, depth=2)]]
6 9
7 4
The architecture of the SIP-XMPP gateway can be modeled in two different ways:
8 1
9 4
 * Based on an XMPP component
10 4
 * Based on an XMPP server (using server-to-server communication)
11 1
12 4
Both approaches are not mutually exclusive, they can both be implemented at the same time and decide which one to use with a configuration option to allow different deployment scenarios.
13 4
14 4
== XMPP component based architecture ==
15 4
16 10
[[Image(xmppgw-arch-component.png, 700px, center)]]
17 2
18 5
=== Elements required ===
19 3
20 5
 * XMPP server (ejabberd for example)
21 1
 * XMPP server plugin (divert stanzas to offline users to a given component)
22 1
 * SIP Application server which is also a XMPP component
23 1
 * SIP proxy (registration, AAA and routing)
24 4
25 4
== XMPP server based architecture ==
26 1
27 10
[[Image(xmppgw-arch-server.png, 700px, center)]]
28 4
29 5
=== Elements required ===
30 4
31 5
 * SIP Application server which is also a XMPP server
32 5
 * SIP proxy (registration, AAA and routing)
33 6
34 6
== Chosen architecture ==
35 6
36 6
After experimenting with both models the chosen model to be implemented first is the '''XMPP server based architecture'''. The component based approach shall be added at a later time.
37 6
38 6
The chosen model has a number of advantages / disadvantages:
39 6
40 6
 * Advantages
41 6
  * Less network elements involved
42 6
  * Full control over XMPP routing since the server is customized
43 6
  * No need for developing plugins for any XMPP server
44 6
 * Disadvantages:
45 6
  * Inability to use an XMPP client in the local domain
46 6
47 6
The critical factor when making this choice is the fact that if a custom XMPP server is built all the routing logic can be customized without the need of running an extra XMPP server and writing a plugin for it. Thus, this approach is more sustainable over time.
48 7
49 8
The aforementioned disadvantage would also disappear if the chosen library implemented accepting XMPP client connections, which is likely to happen in the future.