DesignXMPP arch
Version 1 (Tijmen de Mes, 05/07/2012 11:00 am)
1 | 1 | Tijmen de Mes | h1. Gateway Architecture |
---|---|---|---|
2 | 1 | Tijmen de Mes | |
3 | 1 | Tijmen de Mes | |
4 | 1 | Tijmen de Mes | |
5 | 1 | Tijmen de Mes | |
6 | 1 | Tijmen de Mes | Due to the dedicated server architecture of XMPP and requirements for availabiliy of public DNS entries for the target domain, is not possible to position the gateway between two clients. The architecture of the SIP-XMPP gateway can be modeled in two different ways, both dependent on the way XMPP server is deployed: |
7 | 1 | Tijmen de Mes | |
8 | 1 | Tijmen de Mes | * Based on an XMPP server (using server-to-server communication) |
9 | 1 | Tijmen de Mes | * Based on an XMPP component connected to an existing XMPP server |
10 | 1 | Tijmen de Mes | |
11 | 1 | Tijmen de Mes | These approaches are not mutually exclusive, they could potentially be implemented and decide which one to use by setting a configuration option. |
12 | 1 | Tijmen de Mes | |
13 | 1 | Tijmen de Mes | |
14 | 1 | Tijmen de Mes | |
15 | 1 | Tijmen de Mes | |
16 | 1 | Tijmen de Mes | h2. XMPP Server Based Architecture |
17 | 1 | Tijmen de Mes | |
18 | 1 | Tijmen de Mes | |
19 | 1 | Tijmen de Mes | !xmppgw-arch-server.png! |
20 | 1 | Tijmen de Mes | |
21 | 1 | Tijmen de Mes | * SIP Application server which is also a XMPP server |
22 | 1 | Tijmen de Mes | * SIP proxy (registration, AAA and routing) |
23 | 1 | Tijmen de Mes | |
24 | 1 | Tijmen de Mes | |
25 | 1 | Tijmen de Mes | h2. XMPP Component Based Architecture |
26 | 1 | Tijmen de Mes | |
27 | 1 | Tijmen de Mes | |
28 | 1 | Tijmen de Mes | !xmppgw-arch-component.png! |
29 | 1 | Tijmen de Mes | |
30 | 1 | Tijmen de Mes | * XMPP server (ejabberd for example) |
31 | 1 | Tijmen de Mes | * XMPP server plugin (divert stanzas to offline users to a given component) |
32 | 1 | Tijmen de Mes | * SIP Application server which is also a XMPP component |
33 | 1 | Tijmen de Mes | * SIP proxy (registration, AAA and routing) |
34 | 1 | Tijmen de Mes | |
35 | 1 | Tijmen de Mes | |
36 | 1 | Tijmen de Mes | h2. Chosen Architecture |
37 | 1 | Tijmen de Mes | |
38 | 1 | Tijmen de Mes | |
39 | 1 | Tijmen de Mes | After experimenting with both models the chosen model to be implemented first is the *XMPP server based architecture*. The component based approach could be added at a later time. |
40 | 1 | Tijmen de Mes | |
41 | 1 | Tijmen de Mes | The server based architecture model has a number of advantages / disadvantages: |
42 | 1 | Tijmen de Mes | |
43 | 1 | Tijmen de Mes | * Advantages |
44 | 1 | Tijmen de Mes | ** Less network elements involved |
45 | 1 | Tijmen de Mes | ** Full control over XMPP routing since the server is customized |
46 | 1 | Tijmen de Mes | ** No need for developing plugins for any XMPP server |
47 | 1 | Tijmen de Mes | * Disadvantages: |
48 | 1 | Tijmen de Mes | ** Inability to use an XMPP client in the local domain |
49 | 1 | Tijmen de Mes | |
50 | 1 | Tijmen de Mes | 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. |
51 | 1 | Tijmen de Mes | |
52 | 1 | Tijmen de Mes | The aforementioned disadvantage would also disappear if the chosen library implemented accepting XMPP client connections, which is likely to happen in the future. |