SipThorDescription » History » Version 2
Adrian Georgescu, 09/20/2009 01:34 AM
1 | 1 | Adrian Georgescu | = SIP Thor description = |
---|---|---|---|
2 | |||
3 | [[TOC(SipThorDescription, SipThorPreparations, SipThorInstallation, depth=2)]] |
||
4 | |||
5 | SIP Thor provides scalability and resilience for [wiki:MSPPreparations Multimedia Service Platform] |
||
6 | components. A SIP Thor platform is using the same software components for |
||
7 | the interfaces with the end-user SIP devices like SIP Proxy and Media Proxy |
||
8 | used by [wiki:MSPPreparations Multimedia Service Platform] but it is using a different architecture |
||
9 | to achieve the scalability and resilience in case of failure. |
||
10 | |||
11 | SIP Thor creates an overlay across multiple IP addresses that can run in |
||
12 | different locations, like different data centers or cities or countries. On |
||
13 | each node different software can run to perform a different service (like |
||
14 | SIP Registrar). The sum of all nodes provide a consolidated platform that can |
||
15 | automatically deal with the addition and removal of nodes. |
||
16 | |||
17 | SIP Thor is running fully automatic once in service, there is no need for |
||
18 | monitoring or administrating it as its main purpose is to automatically |
||
19 | self-heal in case of failures. The only parameter that the operator needs to |
||
20 | monitor in a SIP Thor network is the number of active servers that serve a |
||
21 | certain role. |
||
22 | |||
23 | [[Image(http://www.ag-projects.com/images/stories/ag_images/thor-platform-big.png, width=500)]] |
||
24 | |||
25 | SIP Thor architecture introduces several new components to the Multimedia Service Platform. To implement its functions SIP Thor implements a dynamic overlay of several logical network entities called '''roles''' installed on multiple physical machines called '''nodes'''. Each node can run one or multiple roles. An example of such role is '''sip_proxy'''. Nodes that advertise SIP Proxy capabilities, will handle the load associated with the SIP traffic and will inherit the built-in resilience and load distribution provided by SIP Thor design. |
||
26 | |||
27 | 2 | Adrian Georgescu | == Security == |
28 | 1 | Adrian Georgescu | |
29 | All communication between the nodes of the SIP Thor network is encrypted by using Transport Level Security (TLS). Each node part of the SIP Thor network is uniquely identified by a X.509 certificate provisioned by the operator of the platform. The X.509 certificate and various attributes it contains are used for authentication and authorization of the nodes when they exchange overlay messages within SIP Thor network. |
||
30 | |||
31 | 2 | Adrian Georgescu | == Thor Event server == |
32 | 1 | Adrian Georgescu | |
33 | '''thor-eventserver''' is an event server, which is the core of the messaging system that is used by the SIP Thor network to implement communication between the network |
||
34 | members. The messaging system is based on publish/subscribe messages that are exchanged between network members. Each entity in the network publishes its own |
||
35 | capabilities and status for whomever is interested in the information. At the same time each entity may subscribe to certain types of information which is published by the other network members based on the entity's functionality in the network. |
||
36 | |||
37 | Multiple event servers can be run as part of a SIP Thor network (on different systems, that are preferably in different hosting facilities) which will improve the |
||
38 | redundancy of the SIP Thor network and its resilience in the face of network/system failures, at the expense of linearly increasing the messaging traffic with |
||
39 | the number of the network members. It is recommended to run at least 3 event servers in a given SIP Thor network. |
||
40 | |||
41 | 2 | Adrian Georgescu | == Thor Manager == |
42 | 1 | Adrian Georgescu | |
43 | '''thor-manager''' is the SIP Thor network manager, which has the role of maintaining the consistency of the SIP Thor network as members join and leave the network. The manager will publish the SIP Thor network status regularly, or as events occur to inform all network members of the current network status, allowing them to adjust their internal state as the network changes. |
||
44 | |||
45 | Multiple managers can be run as part of a SIP Thor network (on different systems, that are preferably in different hosting facilities), which will improve the redundancy of the SIP Thor network and its resilience in the face of network/system failures, at the expense of a slight increase in the messaging traffic with each new manager that is added. If multiple managers are run, they will automatically elect one of them as the active one and the others will be idle until the active manager stops working or leaves the network. Then a new manager is elected and becomes the active manager. It is recommended to run at least 3 managers in a given SIP Thor network preferably in separate hosting facilities. |
||
46 | |||
47 | 2 | Adrian Georgescu | == Thor Database == |
48 | 1 | Adrian Georgescu | |
49 | '''thor-database''' is a component of the SIP Thor network that runs on the central database(s) used by the SIP Thor network. Its purpose is to publish the location of the provisioning database in the network, so that other SIP Thor network members know where to find the central database if they need to access information from it. |
||
50 | |||
51 | 2 | Adrian Georgescu | == Thor DNS == |
52 | 1 | Adrian Georgescu | |
53 | '''thor-dns''' is a component of the SIP Thor network that runs on the authoritative name servers for the SIP Thor domain. Its purpose is to keep the DNS entries for the SIP Thor network in sync with the network members that are currently online. Each authoritative nameserver needs to run a copy of the DNS manager in combination with a DNS server. The SIP Thor DNS manager will update the DNS backend database with the appropriate records as nodes join/leave the SIP Thor network, making it reflect the network status in realtime. |
||
54 | |||
55 | 2 | Adrian Georgescu | == Thor Node == |
56 | 1 | Adrian Georgescu | |
57 | '''thor-node''' is to be run on a system that wishes to become a SIP Thor network member. By running this program, the system will join the SIP Thor network and become part of it, sharing its resources and announcing its capabilities to the other SIP Thor network members. |
||
58 | |||
59 | The network can accomodate one or more nodes with this role, SIP Thor takes care automatically of the additions and removal of each instance. The currently supported roles are '''sip_proxy''' in combination with OpenSIPS and '''voicemail_server''' in combination with Asterisk. Other roles are directly built in MediaProxy ('''media_relay'''), NGNPro ('''provisioning_server''') and OpenXCAP ('''xcap_server'''), for these resources no thor-node standalone component is required. |
||
60 | |||
61 | 2 | Adrian Georgescu | == Thor Monitor == |
62 | |||
63 | '''thor-monitor''' is a utility that shows the SIP Thor network state in a terminal. It can be used to monitor the SIP Thor network status and events. Example: |
||
64 | |||
65 | {{{ |
||
66 | SIP Thor network for sipthor.net at 01:33:54 Sun 20 Sep 2009: |
||
67 | ------------------------------------------------------------- |
||
68 | |||
69 | media_relay members: |
||
70 | 81.23.228.129 |
||
71 | 81.23.228.150 |
||
72 | 85.17.186.6 |
||
73 | 85.17.186.7 |
||
74 | |||
75 | provisioning_server members: |
||
76 | 81.23.228.144 |
||
77 | 81.23.228.164 |
||
78 | |||
79 | sip_proxy members: |
||
80 | 81.23.228.129 |
||
81 | 81.23.228.150 |
||
82 | 85.17.186.7 |
||
83 | |||
84 | thor_database members: |
||
85 | 10.0.0.131 priority=10 mysql://sipthor:xxxxxx@db-log.dns-hosting.info/sipthor |
||
86 | 10.0.0.132 priority=10 mysql://sipthor:xxxxxx@db-log.dns-hosting.info/sipthor |
||
87 | 85.17.186.8 priority=50 mysql://sipthor:xxxxxx@10.30.30.8/sipthor |
||
88 | |||
89 | thor_dnsmanager members: |
||
90 | 80.247.197.195 |
||
91 | 81.23.228.150 |
||
92 | 85.17.186.8 |
||
93 | |||
94 | thor_manager members: |
||
95 | 81.23.228.150 priority=50 |
||
96 | 85.17.186.8 priority=50 |
||
97 | |||
98 | thor_monitor members: |
||
99 | 81.23.228.150 myself |
||
100 | |||
101 | voicemail_server members: |
||
102 | 81.23.228.143 |
||
103 | |||
104 | xcap_server members: |
||
105 | 81.23.228.144 |
||
106 | 81.23.228.164 |
||
107 | }}} |
||
108 | |||
109 | == New roles == |
||
110 | 1 | Adrian Georgescu | |
111 | Adding new roles to the system can be realized programatically by obeying to the SIP Thor API and depending on the way of working of the component that needs to be integrated in the SIP Thor network. In any case the software will need to implement a component that publishes its availability in the network (this task can be programmed outside of the specific software by adding it to the generic thor_node configuration and logic) and must be able to lookup resources in the SIP Thor network and use the results of a lookup in its own application logic. Depending of the inner-working of the application performed by the new role, other roles may need to be updated in order to serve it (e.g. adding specific entries into the DNS or moving provisioning data). |