TOC |
|
This Internet-Draft is submitted to IETF in full conformance with the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as “work in progress.”
The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html.
This Internet-Draft will expire on January 9, 2010.
Copyright (c) 2009 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents in effect on the date of publication of this document (http://trustee.ietf.org/license-info). Please review these documents carefully, as they describe your rights and restrictions with respect to this document.
The document analyzes the traffic that is generated by presence subscriptions between domains and shows that the amount of traffic can be extremely large. The document also analyzes the effects of a large presence system on the memory footprint and the CPU load. Approved and in-work optimizations to the Session Initiation Protocol are analyzed with the possible impact on the load. Separate documents contain the requirements for optimizations and suggestions for new optimizations.
1.
Introduction
2.
Message Load
2.1.
Message Load Optimizations Considered
2.2.
Assumptions
2.3.
Analysis
2.3.1.
Constants
2.3.2.
Initial Messages
2.3.3.
Steady State Messages
2.3.4.
Termination Messages
2.3.5.
Bottom Line
2.3.6.
Rush Hour Calculations
2.4.
No optimizations used
2.5.
Dialog optimization used
2.6.
NOTIFY optimization used
2.7.
Dialog and NOTIFY optimizations used
2.8.
Presence Federation Scenarios
2.8.1.
Widely distributed inter-domain presence
2.8.2.
Associated inter-domain presence
2.8.3.
Large network peering
2.8.4.
Intra-domain peering
2.9.
Partial Notifications Optimization
2.10.
Extremely Optimized SIP
3.
State Management
3.1.
State Size Calculations
3.1.1.
Tiny System
3.1.2.
Medium System
3.1.3.
Large System
3.1.4.
Larger System
4.
Processing complexities
4.1.
Aggregation
4.2.
Partial Publish and Notify
4.3.
Filtering
4.4.
Authorization
4.5.
Resource List Service
5.
Current Optimizations
6.
Summary
7.
Conclusions
8.
Security Considerations
9.
IANA Considerations
10.
Changes from Previous Versions
10.1.
Changes in version 07
10.2.
Changes in version 06
10.3.
Changes in version 05
10.4.
Changes in version 04
10.5.
Changes in version 03
10.6.
Changes in version 02
10.7.
Changes in version 01
11.
Acknowledgments
12.
Informational References
§
Authors' Addresses
TOC |
The document analyzes the traffic that is generated by Session Initiation Protocol (SIP) for presence (as defined by the SIMPLE working group) due to presence subscriptions between domains. It shows that the number of messages and the amount of data generated can be extremely large. This document also analyzes the effects of a large presence system on the memory footprint and the CPU load. Approved and in-work optimizations to SIP are analyzed with the possible impact on the load. Another document provides requirements for optimizations [1] (Houri, A., Parameswar, S., Aoki, E., Singh, V., and H. Schulzrinne, “Scaling Requirements for Presence in SIP/SIMPLE,” September 2009.) while other documents contain suggestions for new optimizations: [2] (Houri, A., “Scaling Optimizations for Presence in SIP/SIMPLE,” July 2007.) and [3] (Rosenberg, J., Donovan, S., and K. McMurry, “Optimizing Federated Presence with View Sharing,” November 2008.)
This document is intended to drive work on possible solutions that will make the deployment of a SIP-based presence server a less challenging task. Deployment of highly scalable presence systems is challenging by its nature, and protocol developers design their own techniques for optimizing their protocols. Comparing protocols is beyond the scope of this document.
The document discusses the following areas, showing the complexity and load that the presence server handles in order to provide its service:
The terms presence domain or presence system appear in this document frequently. These terms refer to SIP-based presence servers that provide presence subscription and notification services to their users. A presence system can be deployed in a small enterprise or in a large consumer network.
TOC |
Some optimizations are approved or are being defined for the SIP presence protocol, but even with these optimizations, a large number of messages and wide bandwidth are needed in order to establish federation between presence systems of large communities. Further thinking is needed in order to make large deployment of presence systems less resource demanding.
Note that even though this document talks about inter-domain traffic, the introduction of resource list servers (RLSs) [4] (Roach, A., Campbell, B., and J. Rosenberg, “A Session Initiation Protocol (SIP) Event Notification Extension for Resource Lists,” August 2006.) introduce similar traffic patterns intra-domain and inter-domain. See detailed discussion on resource lists in Section 4.5 (Resource List Service).
TOC |
The current optimizations that are approved or are approved as working group items in the SIMPLE working group can be divided into two categories:
Note that the terms dialog optimization or RLS usage as used in this document refer to the usage of a URI that represents a list of URI lists between domains and not within the same domain. An example is a user Alice in domain example.org who subscribes to the URI external-reps-list at example.com or uses a URI list to subscribe to her watch list in example.com. Note also that, when calculating the traffic due to the RLS within a domain, the traffic between the RLS and the presence agents should also be considered. However, since we are mostly concerned with inter- domain traffic, we are not taking into account the traffic between the RLS and the presence agents.
One optimation that was not considered is the reception of presence information outside of SIP. An example of this is the ability to download persistent presence information directly from a web site. The calculations assume that all presence data is carried within SIP and not by other means. These out-of-band optimizations may improve the number of messages and number of bytes significantly, but they are out of scope for this document.
TOC |
In this document, several assumptions are used regarding size of messages, rate of presence change and more. It should be noted that these assumptions are not directly based on rigorous statistics from actual SIP-based deployments of presence systems but more from some experience on other types of presence-based systems.
The following numbers are given more as examples from real deployments and they are not intended to be complete.
In a large consumer network, we have seen the following patterns:
In an enterprise deployment, we have seen the following patterns:
Even though the assumptions in this document are not based on rigorous statistical data, the target here is not to analyze a specific system but to show that even with VERY moderate assumptions (which are even less than the observations mentioned above), the number of messages, the network bandwidth, the required state management, and the CPU load are high. Real-life systems could have much larger scalability challenges. For example, the presence state change that we assumed (one presence state change per hour) is maybe one of the most moderate assumptions that we have taken. Experience from consumer networks shows that the frequency can be much higher, especially with the younger generation using more presence attributes like mood, etc. In an environment where a user may have several devices and other resources for presence information such as geographical location and calendar, the frequency of presence state changes will be much higher.
It is hard to measure presence load since it depends heavily on the behavior of users, and the behavior of users differs widely. Some users will have a small number of presentities in their watch list, while others may have hundreds, if not thousands. Some users will change their state frequently and have many sources of presence information, while others may have small number of changes during the day. In addition, the "rush hour" calculations of when the day starts and ends were not included in this document. Rush hour differs between different enterprises and is still different in the consumer presence systems. It is hard if not impossible to take into a static document all the possible combinations.
Throughout the calculations, a certain number of users are assumed for the different models. It does not mean that in actual deployments all the users of the domain are actually subscribed to presence documents and/or have published their presence documents. Observing actual deployments shows that, in the consumer market, the number of users that use presence services may be 10 percent or less of the registered users. In the enterprise market, the numbers tend to be around 50 percent of the actual enterprise registered users.
The same is correct for the number of watched presentities per watcher. If only some percentage of the domain users are online at a given time, then this number should match that percentage. However, adding this assumption to the calculations will make the calculations more complex since the effect of the watched offline presentities would need to be considered. This means that empty NOTIFYs would be sent for offline presentities when the subscription is created and there are no updates on them. In order to make the computations less complex (they are complex enough as they are), the number of the watched presentities used in the calculations is the number of the federated presentities from the watcher list that are online.
TOC |
The basic SIP subscription dialog involves the following message- transfer:
An individual watcher will generate X number of SIP subscription dialogs corresponding to the number of presentities it chooses to watch. The amount of traffic generated is significantly affected by several factors:
This document contains several calculations that show the expected message rate and bandwidth between presence domains. The following sections explain the assumptions and methods behind the calculations.
TOC |
The following are the "constants" that we use in the calculations. Some of the constants are used throughout the calculations while other change between use cases.
When dialog optimization [4] (Roach, A., Campbell, B., and J. Rosenberg, “A Session Initiation Protocol (SIP) Event Notification Extension for Resource Lists,” August 2006.) is used, an RLMI document, which contains the presence documents for the users on the watch list, is sent. In a previous version of this document, we had omitted the overhead of the RLMI document. This "bug" was found by Victoria Beltran-Martinez and is fixed in this version by adding the following constants C13, C14 and C15 to the calculations:
TOC |
The following are the calculations for the messages in the initial phase of the establishment of the subscriptions. The calculations contain both the number of messages and the number of bytes.
TOC |
Here we describe the calculations for steady state messages. Steady state is the time between the initial subscription and the teardown of the subscription. It contains the NOTIFYs due to state change and the subscription refreshes.
TOC |
The following are the calculations for the messages in the termination phase of the subscriptions. The calculations contain both the number of messages and the number of bytes.
TOC |
The following are the calculations of several totals that are based on the above calculations.
TOC |
With the way that the calculations are built, it is relatively easy to see the effect of rush hours at the beginning and the end of the day. For the beginning of the day, we should look at the numbers of "(I09) Total number and bytes of initial messages per day" and for the end of the day we should look at the number of "(T09) Total number and bytes of terminating messages per day". Taking these numbers with some assumed percentage of the number of users logging in at the same hour should give good indication for the rush hour load.
TOC |
The following table uses some common presence characteristics to demonstrate the effect these factors have on state and message rate within a presence domain using base SIP without any proposed optimizations. In this example, there are two presence domains with a total of 40,000 federating users with an average of 4 contacts in the peer domain. Note that the main calculation is done for a presence document size of 350 bytes, which is the base PIDF [7] (Sugano, H., Fujimoto, S., Klyne, G., Bateman, A., Carr, W., and J. Peterson, “Presence Information Data Format (PIDF),” August 2004.) document size, but the bottom line calculation is also given for a presence document size for rich presence [8] (Schulzrinne, H., Gurbani, V., Kyzivat, P., and J. Rosenberg, “RPID: Rich Presence Extensions to the Presence Information Data Format (PIDF),” July 2006.), which is assumed to be 3000 bytes based on the examples given in the RFCs. This two-fold calculation is done for every use case in this document.
** Constants (C01) Subscription lifetime (hours)...........................8 (C02) Presence state changes / hour...........................3 (C03) Subscription refresh interval / hour....................1 (C04) Total federated presentities per watcher................4 (C05) Number of dialogs to maintain per watcher...............4 (C06) Total number of watchers in domains................40,000 (C07) SUBSCRIBE message size in bytes.......................450 (C08) 200 OK for SUBSCRIBE message size in bytes............370 (C09) NOTIFY message size not including presence doc........500 (C10) 200 OK for NOTIFY message size in bytes...............370 (C11) Size of an average presence document..................350 ** Initial Messages (I01) Initial SUBSCRIBE msgs per watcher......................4 (I02) Initial 200 OK msgs (SUBSCRIBE) per watcher.............4 (I03) Initial NOTIFY msgs per watcher.........................4 (I04) Initial 200 OK msgs (NOTIFY) per watcher................4 (I05) Total number & bytes of initial SUBSCRIBE msgs Number of msgs for all watchers...............160,000 Bytes for all watchers.....................72,000,000 (I06) Total number & bytes of initial 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers...............160,000 Bytes for all watchers.....................59,200,000 (I07) Total number & bytes of initial NOTIFY msgs Number of msgs for all watchers...............160,000 Bytes for all watchers....................136,000,000 (I08) Total number & bytes of initial 200 OK (NOTIFY) msgs Number of msgs for all watchers...............160,000 Bytes for all watchers.....................59,200,000 (I09) Total number & bytes of initial messages per day Number of msgs for all watchers...............640,000 Bytes for all watchers....................326,400,000 ** Steady State Messages (S01) NOTIFY msgs due to state change per watched presentity per day.....................22 (S02) 200 (for NOTIFY due to state change) msgs per watched presentity per day.....................22 (S03) Total number and size of msgs due to state change per day Number of msgs for all watchers.............7,040,000 Bytes for all watchers..................4,294,400,000 (S04) Number of SUBSCRIBE msgs for refreshes per watcher per day................................28 (S05) Number of 200 OK msgs for SUBSCRIBE msgs for refreshes per watcher per day................................28 (S06) Number of NOTIFY msgs for refreshes per watcher per day................................28 (S07) Number of 200 OK msgs for NOTIFY msgs for refreshes per watcher per day................................28 (S08) Total number and size of msgs due to SUBSCRIBE refreshes Number of msgs for all watchers per day.....4,480,000 Bytes for all watchers per day..........2,284,800,000 (S09) Total number & bytes of steady messages per day Number of msgs for all watchers............11,520,000 Bytes for all watchers..................6,579,200,000 ** Termination Messages (T01) Terminating SUBSCRIBE msgs per watcher..................4 (T02) Terminating 200 OK msgs (SUBSCRIBE) per watcher.........4 (T03) Terminating NOTIFY msgs per watcher.....................4 (T04) Terminating 200 OK msgs (NOTIFY) per watcher............4 (T05) Total number & bytes of Terminating SUBSCRIBE msgs Number of msgs for all watchers.............. 160,000 Bytes for all watchers.....................72,000,000 (T06) Total number & bytes of terminating 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers...............160,000 Bytes for all watchers.....................59,200,000 (T07) Total number & bytes of terminating NOTIFY msgs Number of msgs for all watchers...............160,000 Bytes for all watchers....................136,000,000 (T08) Total number & bytes of terminating 200 OK (NOTIFY) msgs Number of msgs for all watchers...............160,000 Bytes for all watchers.....................59,200,000 (T09) Total number & bytes of terminating messages per day Number of msgs for all watchers...............640,000 Bytes for all watchers....................326,400,000 ** Bottom Line (B01) Total of messages between domains..............12,800,000 Total of bytes between domains (PD=350).....7,232,000,000 Total of bytes between domains (PD=3000)...20,376,000,000 (B02) Total number of messages / second.. ..................444 Total of bytes per second (PD=350)................251,111 Total of bytes per second (PD=3000)...............707,500 (B03) Total number of by msgs per user/day......... ........320 Total number of bytes per user/day (PD=350).......180,800 Total number of bytes per user/day (PD=3000)......509,400
Figure 1: No optimizations used |
TOC |
The same analysis provided above is repeated here with the assumption that the dialog optimization is applied. Note that while the sign-in (ramp up) and sign-out messages flows are positively affected, the steady state rates are not.
** Constants (C01) Subscription lifetime (hours)...........................8 (C02) Presence state changes / hour...........................3 (C03) Subscription refresh interval / hour....................1 (C04) Total federated presentities per watcher................4 (C05) Number of dialogs to maintain per watcher...............1 (C06) Total number of watchers in domains................40,000 (C07) SUBSCRIBE message size in bytes.......................450 (C08) 200 OK for SUBSCRIBE message size in bytes............370 (C09) NOTIFY message size not including presence doc........500 (C10) 200 OK for NOTIFY message size in bytes...............370 (C11) Size of an average presence document..................350 (C13) Additional data per document in RLMI..................160 (C14) Multiparty boundary in RLMI document..................144 (C15) XML root node in RLMI document........................144 ** Initial Messages (I01) Initial SUBSCRIBE msgs per watcher......................1 (I02) Initial 200 OK msgs (SUBSCRIBE) per watcher.............1 (I03) Initial NOTIFY msgs per watcher.........................1 (I04) Initial 200 OK msgs (NOTIFY) per watcher................1 (I05) Total number & bytes of initial SUBSCRIBE msgs Number of msgs for all watchers................40,000 Bytes for all watchers.....................18,000,000 (I06) Total number & bytes of initial 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers................40,000 Bytes for all watchers.....................14,800,000 (I07) Total number & bytes of initial NOTIFY msgs Number of msgs for all watchers................40,000 Bytes for all watchers....................136,160,000 (I08) Total number & bytes of initial 200 OK (NOTIFY) msgs Number of msgs for all watchers................40,000 Bytes for all watchers.....................14,800,000 (I09) Total number & bytes of initial messages per day Number of msgs for all watchers...............160,000 Bytes for all watchers....................183,760,000 ** Steady State Messages (S01) NOTIFY msgs due to state change per watched presentity per day.....................22 (S02) 200 (for NOTIFY due to state change) msgs per watched presentity per day.....................22 (S03) Total number and size of msgs due to state change per day Number of msgs for all watchers.............7,040,000 Bytes for all watchers..................6,378,240,000 (S04) Number of SUBSCRIBE msgs for refreshes per watcher per day.................................7 (S05) Number of 200 OK msgs for SUBSCRIBE msgs for refreshes per watcher per day.................................7 (S06) Number of NOTIFY msgs for refreshes per watcher per day.................................7 (S07) Number of 200 OK msgs for NOTIFY msgs for refreshes per watcher per day.................................7 (S08) Total number and size of msgs due to SUBSCRIBE refreshes Number of msgs for all watchers per day.....1,120,000 Bytes for all watchers per day..........1,286,320,000 (S09) Total number & bytes of steady messages per day Number of msgs for all watchers.............8,160,000 Bytes for all watchers..................7,664,560,000 ** Termination Messages (T01) Terminating SUBSCRIBE msgs per watcher..................1 (T02) Terminating 200 OK msgs (SUBSCRIBE) per watcher.........1 (T03) Terminating NOTIFY msgs per watcher.....................1 (T04) Terminating 200 OK msgs (NOTIFY) per watcher............1 (T05) Total number & bytes of Terminating SUBSCRIBE msgs Number of msgs for all watchers................40,000 Bytes for all watchers.....................18,000,000 (T06) Total number & bytes of terminating 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers................40,000 Bytes for all watchers.....................14,800,000 (T07) Total number & bytes of terminating NOTIFY msgs Number of msgs for all watchers................40,000 Bytes for all watchers....................136,160,000 (T08) Total number & bytes of terminating 200 OK (NOTIFY) msgs Number of msgs for all watchers................40,000 Bytes for all watchers.....................14,800,000 (T09) Total number & bytes of terminating messages per day Number of msgs for all watchers...............160,000 Bytes for all watchers....................183,760,000 ** Bottom Line (B01) Total of messages between domains...............8,480,000 Total of bytes between domains (PD=350).....8,032,080,000 Total of bytes between domains (PD=3000)...21,176,080,000 (B02) Total number of messages / second.....................294 Total of bytes per second (PD=350)................278,892 Total of bytes per second (PD=3000)...............735,281 (B03) Total number of by msgs per user/day..................212 Total number of bytes per user/day (PD=350).......200,802 Total number of bytes per user/day (PD=3000)......529,042
Figure 2: Dialog optimization used |
TOC |
The analysis provided in Figure 1 (No optimizations used) is repeated here with the assumption that the notification optimization is applied. The optimization saves the need for NOTIFY upon refreshing a SUBSCRIBE if there was no change since the last NOTIFY. It is assumed here that there are no NOTIFY messages for SUBSCRIBE refreshes and terminations. As expected, this optimization affects the steady and termination state and does not affect the initial state.
** Constants (C01) Subscription lifetime (hours)...........................8 (C02) Presence state changes / hour...........................3 (C03) Subscription refresh interval / hour....................1 (C04) Total federated presentities per watcher................4 (C05) Number of dialogs to maintain per watcher...............4 (C06) Total number of watchers in domains................40,000 (C07) SUBSCRIBE message size in bytes.......................450 (C08) 200 OK for SUBSCRIBE message size in bytes............370 (C09) NOTIFY message size not including presence doc........500 (C10) 200 OK for NOTIFY message size in bytes...............370 (C11) Size of an average presence document..................350 ** Initial Messages (I01) Initial SUBSCRIBE msgs per watcher......................4 (I02) Initial 200 OK msgs (SUBSCRIBE) per watcher.............4 (I03) Initial NOTIFY msgs per watcher.........................4 (I04) Initial 200 OK msgs (NOTIFY) per watcher................4 (I05) Total number & bytes of initial SUBSCRIBE msgs Number of msgs for all watchers...............160,000 Bytes for all watchers.....................72,000,000 (I06) Total number & bytes of initial 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers...............160,000 Bytes for all watchers.....................59,200,000 (I07) Total number & bytes of initial NOTIFY msgs Number of msgs for all watchers...............160,000 Bytes for all watchers....................136,000,000 (I08) Total number & bytes of initial 200 OK (NOTIFY) msgs Number of msgs for all watchers...............160,000 Bytes for all watchers.....................59,200,000 (I09) Total number & bytes of initial messages per day Number of msgs for all watchers...............640,000 Bytes for all watchers....................326,400,000 ** Steady State Messages (S01) NOTIFY msgs due to state change per watched presentity per day.....................22 (S02) 200 (for NOTIFY due to state change) msgs per watched presentity per day.....................22 (S03) Total number and size of msgs due to state change per day Number of msgs for all watchers.............7,040,000 Bytes for all watchers..................4,294,400,000 (S04) Number of SUBSCRIBE msgs for refreshes per watcher per day................................28 (S05) Number of 200 OK msgs for SUBSCRIBE msgs for refreshes per watcher per day................................28 (S06) Number of NOTIFY msgs for refreshes per watcher per day.................................0 (S07) Number of 200 OK msgs for NOTIFY msgs for refreshes per watcher per day.................................0 (S08) Total number and size of msgs due to SUBSCRIBE refreshes Number of msgs for all watchers per day.....2,240,000 Bytes for all watchers per day............918,400,000 (S09) Total number & bytes of steady messages per day Number of msgs for all watchers.............9,280,000 Bytes for all watchers..................5,212,800,000 ** Termination Messages (T01) Terminating SUBSCRIBE msgs per watcher..................4 (T02) Terminating 200 OK msgs (SUBSCRIBE) per watcher.........4 (T03) Terminating NOTIFY msgs per watcher.....................0 (T04) Terminating 200 OK msgs (NOTIFY) per watcher............0 (T05) Total number & bytes of Terminating SUBSCRIBE msgs Number of msgs for all watchers.............. 160,000 Bytes for all watchers.....................72,000,000 (T06) Total number & bytes of terminating 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers...............160,000 Bytes for all watchers.....................59,200,000 (T07) Total number & bytes of terminating NOTIFY msgs Number of msgs for all watchers.....................0 Bytes for all watchers..............................0 (T08) Total number & bytes of terminating 200 OK (NOTIFY) msgs Number of msgs for all watchers.....................0 Bytes for all watchers..............................0 (T09) Total number & bytes of terminating messages per day Number of msgs for all watchers...............320,000 Bytes for all watchers....................131,200,000 ** Bottom Line (B01) Total of messages between domains..............10,240,000 Total of bytes between domains (PD=350).....5,670,400,000 Total of bytes between domains (PD=3000)...15,422,400,000 (B02) Total number of messages / second.....................356 Total of bytes per second (PD=350)................196,889 Total of bytes per second (PD=3000)...............535,500 (B03) Total number of by msgs per user/day..................256 Total number of bytes per user/day (PD=350).......141,760 Total number of bytes per user/day (PD=3000)......385,560
Figure 3: NOTIFY optimization used |
TOC |
Here both optimizations are combined. In all the subsequent use cases, we will show only the analysis with no optimizations and with both optimizations combined.
** Constants (C01) Subscription lifetime (hours)...........................8 (C02) Presence state changes / hour...........................3 (C03) Subscription refresh interval / hour....................1 (C04) Total federated presentities per watcher................4 (C05) Number of dialogs to maintain per watcher...............1 (C06) Total number of watchers in domains................40,000 (C07) SUBSCRIBE message size in bytes.......................450 (C08) 200 OK for SUBSCRIBE message size in bytes............370 (C09) NOTIFY message size not including presence doc........500 (C10) 200 OK for NOTIFY message size in bytes...............370 (C11) Size of an average presence document..................350 (C13) Additional data per document in RLMI..................160 (C14) Multiparty boundary in RLMI document..................144 (C15) XML root node in RLMI document........................144 ** Initial Messages (I01) Initial SUBSCRIBE msgs per watcher......................1 (I02) Initial 200 OK msgs (SUBSCRIBE) per watcher.............1 (I03) Initial NOTIFY msgs per watcher.........................1 (I04) Initial 200 OK msgs (NOTIFY) per watcher................1 (I05) Total number & bytes of initial SUBSCRIBE msgs Number of msgs for all watchers................40,000 Bytes for all watchers.....................18,000,000 (I06) Total number & bytes of initial 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers................40,000 Bytes for all watchers.....................14,800,000 (I07) Total number & bytes of initial NOTIFY msgs Number of msgs for all watchers................40,000 Bytes for all watchers....................136,160,000 (I08) Total number & bytes of initial 200 OK (NOTIFY) msgs Number of msgs for all watchers................40,000 Bytes for all watchers.....................14,800,000 (I09) Total number & bytes of initial messages per day Number of msgs for all watchers...............160,000 Bytes for all watchers....................183,760,000 ** Steady State Messages (S01) NOTIFY msgs due to state change per watched presentity per day.....................22 (S02) 200 (for NOTIFY due to state change) msgs per watched presentity per day.....................22 (S03) Total number and size of msgs due to state change per day Number of msgs for all watchers.............7,040,000 Bytes for all watchers..................6,378,240,000 (S04) Number of SUBSCRIBE msgs for refreshes per watcher per day.................................7 (S05) Number of 200 OK msgs for SUBSCRIBE msgs for refreshes per watcher per day.................................7 (S06) Number of NOTIFY msgs for refreshes per watcher per day.................................0 (S07) Number of 200 OK msgs for NOTIFY msgs for refreshes per watcher per day.................................0 (S08) Total number and size of msgs due to SUBSCRIBE refreshes Number of msgs for all watchers per day.......560,000 Bytes for all watchers per day............229,600,000 (S09) Total number & bytes of steady messages per day Number of msgs for all watchers.............7,600,000 Bytes for all watchers..................6,607,840,000 ** Termination Messages (T01) Terminating SUBSCRIBE msgs per watcher..................1 (T02) Terminating 200 OK msgs (SUBSCRIBE) per watcher.........1 (T03) Terminating NOTIFY msgs per watcher.....................0 (T04) Terminating 200 OK msgs (NOTIFY) per watcher............0 (T05) Total number & bytes of Terminating SUBSCRIBE msgs Number of msgs for all watchers................40,000 Bytes for all watchers.....................18,000,000 (T06) Total number & bytes of terminating 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers................40,000 Bytes for all watchers.....................14,800,000 (T07) Total number & bytes of terminating NOTIFY msgs Number of msgs for all watchers.....................0 Bytes for all watchers..............................0 (T08) Total number & bytes of terminating 200 OK (NOTIFY) msgs Number of msgs for all watchers.....................0 Bytes for all watchers..............................0 (T09) Total number & bytes of terminating messages per day Number of msgs for all watchers................80,000 Bytes for all watchers.....................32,800,000 ** Bottom Line (B01) Total of messages between domains...............7,840,000 Total of bytes between domains (PD=350).....6,824,400,000 Total of bytes between domains (PD=3000)...16,576,400,000 (B02) Total number of messages / second.....................272 Total of bytes per second (PD=350)................236,958 Total of bytes per second (PD=3000)...............575,569 (B03) Total number of by msgs per user/day..................196 Total number of bytes per user/day (PD=350).......170,610 Total number of bytes per user/day (PD=3000)......414,410
Figure 4: Dialog and NOTIFY optimizations used |
TOC |
While scalability issues exist in any large deployment, certain characteristics make the deployment conducive to the existing optimizations, and others have characteristics that do not. Following is a list of federation scenarios that have varying usage characteristics. For each, a message rate and bandwidth table is provided reflecting typical changes message rates. Those characteristics can alter the overall effectiveness of existing optimizations.
Note that the number of users considered is not the total number of users in the domains but the actual logged-in users. As was mentioned before, not all the domain users will use the presence service at the same time. The numbers used for watchers and watched presentities are for online users.
TOC |
In some environments, presence federation may be common, perhaps even more common than intra-domain presence. An example of this type of environment is a small ISV or public server. Users in that small ISV are not likely to subscribe to the presence of other users in the their server since they do not necessarily have any relationship with each other aside from receiving service from the same provider. They are much more likely to be subscribed to the presence of users in one of the federated domains (whether in consumer domains, academic, other ISVs, etc). Common characteristics of this deployment are:
To account for the extraordinarily high percentage of federation traffic, the number of federated presentities is increased to 20. Although the number of watchers in the domain could also be adjusted to allow for an expected larger community of users being peered with, it is omitted here for simplification.
The first table below provides the calculations without optimizations. The second table provides the calculations with optimizations.
** Constants (C01) Subscription lifetime (hours)...........................8 (C02) Presence state changes / hour...........................3 (C03) Subscription refresh interval / hour....................1 (C04) Total federated presentities per watcher...............20 (C05) Number of dialogs to maintain per watcher..............20 (C06) Total number of watchers in domains................40,000 (C07) SUBSCRIBE message size in bytes.......................450 (C08) 200 OK for SUBSCRIBE message size in bytes............370 (C09) NOTIFY message size not including presence doc........500 (C10) 200 OK for NOTIFY message size in bytes...............370 (C11) Size of an average presence document..................350 ** Initial Messages (I01) Initial SUBSCRIBE msgs per watcher.....................20 (I02) Initial 200 OK msgs (SUBSCRIBE) per watcher............20 (I03) Initial NOTIFY msgs per watcher........................20 (I04) Initial 200 OK msgs (NOTIFY) per watcher...............20 (I05) Total number & bytes of initial SUBSCRIBE msgs Number of msgs for all watchers...............800,000 Bytes for all watchers....................360,000,000 (I06) Total number & bytes of initial 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers...............800,000 Bytes for all watchers....................296,000,000 (I07) Total number & bytes of initial NOTIFY msgs Number of msgs for all watchers...............800,000 Bytes for all watchers....................680,000,000 (I08) Total number & bytes of initial 200 OK (NOTIFY) msgs Number of msgs for all watchers...............800,000 Bytes for all watchers....................296,000,000 (I09) Total number & bytes of initial messages per day Number of msgs for all watchers.............3,200,000 Bytes for all watchers..................1,632,000,000 ** Steady State Messages (S01) NOTIFY msgs due to state change per watched presentity per day.....................22 (S02) 200 (for NOTIFY due to state change) msgs per watched presentity per day.....................22 (S03) Total number and size of msgs due to state change per day Number of msgs for all watchers............35,200,000 Bytes for all watchers.................21,472,000,000 (S04) Number of SUBSCRIBE msgs for refreshes per watcher per day...............................140 (S05) Number of 200 OK msgs for SUBSCRIBE msgs for refreshes per watcher per day...............................140 (S06) Number of NOTIFY msgs for refreshes per watcher per day...............................140 (S07) Number of 200 OK msgs for NOTIFY msgs for refreshes per watcher per day...............................140 (S08) Total number and size of msgs due to SUBSCRIBE refreshes Number of msgs for all watchers per day....22,400,000 Bytes for all watchers per day.........11,424,000,000 (S09) Total number & bytes of steady messages per day Number of msgs for all watchers............57,600,000 Bytes for all watchers.................32,896,000,000 ** Termination Messages (T01) Terminating SUBSCRIBE msgs per watcher.................20 (T02) Terminating 200 OK msgs (SUBSCRIBE) per watcher........20 (T03) Terminating NOTIFY msgs per watcher....................20 (T04) Terminating 200 OK msgs (NOTIFY) per watcher...........20 (T05) Total number & bytes of Terminating SUBSCRIBE msgs Number of msgs for all watchers...............800,000 Bytes for all watchers....................360,000,000 (T06) Total number & bytes of terminating 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers...............800,000 Bytes for all watchers....................296,000,000 (T07) Total number & bytes of terminating NOTIFY msgs Number of msgs for all watchers...............800,000 Bytes for all watchers....................680,000,000 (T08) Total number & bytes of terminating 200 OK (NOTIFY) msgs Number of msgs for all watchers...............800,000 Bytes for all watchers....................296,000,000 (T09) Total number & bytes of terminating messages per day Number of msgs for all watchers.............3,200,000 Bytes for all watchers..................1,632,000,000 ** Bottom Line (B01) Total of messages between domains..............64,000,000 Total of bytes between domains (PD=350)....36,160,000,000 Total of bytes between domains (PD=3000)..101,880,000,000 (B02) Total number of messages / second...................2,222 Total of bytes per second (PD=350)..............1,255,556 Total of bytes per second (PD=3000).............3,537,500 (B03) Total number of by msgs per user/day................1,600 Total number of bytes per user/day (PD=350).......904,000 Total number of bytes per user/day (PD=3000)....2,547,000
Figure 5: Widely distributed inter-domain with no optimizations |
** Constants (C01) Subscription lifetime (hours)...........................8 (C02) Presence state changes / hour...........................3 (C03) Subscription refresh interval / hour....................1 (C04) Total federated presentities per watcher...............20 (C05) Number of dialogs to maintain per watcher...............1 (C06) Total number of watchers in domains................40,000 (C07) SUBSCRIBE message size in bytes.......................450 (C08) 200 OK for SUBSCRIBE message size in bytes............370 (C09) NOTIFY message size not including presence doc........500 (C10) 200 OK for NOTIFY message size in bytes...............370 (C11) Size of an average presence document..................350 (C13) Additional data per document in RLMI..................160 (C14) Multiparty boundary in RLMI document..................144 (C15) XML root node in RLMI document........................144 ** Initial Messages (I01) Initial SUBSCRIBE msgs per watcher......................1 (I02) Initial 200 OK msgs (SUBSCRIBE) per watcher.............1 (I03) Initial NOTIFY msgs per watcher.........................1 (I04) Initial 200 OK msgs (NOTIFY) per watcher................1 (I05) Total number & bytes of initial SUBSCRIBE msgs Number of msgs for all watchers................40,000 Bytes for all watchers.....................18,000,000 (I06) Total number & bytes of initial 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers................40,000 Bytes for all watchers.....................14,800,000 (I07) Total number & bytes of initial NOTIFY msgs Number of msgs for all watchers................40,000 Bytes for all watchers....................554,720,000 (I08) Total number & bytes of initial 200 OK (NOTIFY) msgs Number of msgs for all watchers................40,000 Bytes for all watchers.....................14,800,000 (I09) Total number & bytes of initial messages per day Number of msgs for all watchers...............160,000 Bytes for all watchers....................602,320,000 ** Steady State Messages (S01) NOTIFY msgs due to state change per watched presentity per day.....................22 (S02) 200 (for NOTIFY due to state change) msgs per watched presentity per day.....................22 (S03) Total number and size of msgs due to state change per day Number of msgs for all watchers............35,200,000 Bytes for all watchers.................31,891,200,000 (S04) Number of SUBSCRIBE msgs for refreshes per watcher per day.................................7 (S05) Number of 200 OK msgs for SUBSCRIBE msgs for refreshes per watcher per day.................................7 (S06) Number of NOTIFY msgs for refreshes per watcher per day.................................0 (S07) Number of 200 OK msgs for NOTIFY msgs for refreshes per watcher per day.................................0 (S08) Total number and size of msgs due to SUBSCRIBE refreshes Number of msgs for all watchers per day.......560,000 Bytes for all watchers per day............229,600,000 (S09) Total number & bytes of steady messages per day Number of msgs for all watchers............35,760,000 Bytes for all watchers.................32,120,800,000 ** Termination Messages (T01) Terminating SUBSCRIBE msgs per watcher..................1 (T02) Terminating 200 OK msgs (SUBSCRIBE) per watcher.........1 (T03) Terminating NOTIFY msgs per watcher.....................0 (T04) Terminating 200 OK msgs (NOTIFY) per watcher............0 (T05) Total number & bytes of Terminating SUBSCRIBE msgs Number of msgs for all watchers................40,000 Bytes for all watchers.....................18,000,000 (T06) Total number & bytes of terminating 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers................40,000 Bytes for all watchers.....................14,800,000 (T07) Total number & bytes of terminating NOTIFY msgs Number of msgs for all watchers.....................0 Bytes for all watchers..............................0 (T08) Total number & bytes of terminating 200 OK (NOTIFY) msgs Number of msgs for all watchers.....................0 Bytes for all watchers..............................0 (T09) Total number & bytes of terminating messages per day Number of msgs for all watchers................80,000 Bytes for all watchers.....................32,800,000 ** Bottom Line (B01) Total of messages between domains..............36,000,000 Total of bytes between domains (PD=350)....32,755,920,000 Total of bytes between domains (PD=3000)...81,515,920,000 (B02) Total number of messages / second...................1,250 Total of bytes per second (PD=350)..............1,137,358 Total of bytes per second (PD=3000).............2,830,414 (B03) Total number of by msgs per user/day..................900 Total number of bytes per user/day (PD=350).......818,898 Total number of bytes per user/day (PD=3000)....2,037,898
Figure 6: Widely distributed inter-domain with optimizations |
TOC |
In this type of environment, the domain is a collection of associated users, such as an enterprise. Here, federation is once again common. However, there is also a strong association between some users in the deployment. These associations make it somewhat more likely that users in that domain are watchers of the same presentity. This can occur because of business relationships (for example, two co-workers on a project federating with a partner company).
Common characteristics of this deployment are:
This federation type has traffic rates similar to the previous examples but with different levels of association of the users.
TOC |
In this environment, two or more Large networks create a peering relationship, allowing their users to subscribe to presence in the other domains. Whereas the number of users in other deployment types ranges from hundreds to several hundred thousand, these large networks host up to hundreds of millions of users. Examples of these networks are large wireless carriers and consumer instant messaging networks.
Common characteristics of this deployment are:
The first table below provides the calculations without optimizations; the second table provides the calculations with optimizations. Even though the optimizations help a lot (almost cut the number of messages by half), the numbers are still high. Note also that the bandwidth required is high.
** Constants (C01) Subscription lifetime (hours)...........................8 (C02) Presence state changes / hour...........................6 (C03) Subscription refresh interval / hour....................1 (C04) Total federated presentities per watcher...............10 (C05) Number of dialogs to maintain per watcher..............10 (C06) Total number of watchers in domains............20,000,000 (C07) SUBSCRIBE message size in bytes.......................450 (C08) 200 OK for SUBSCRIBE message size in bytes............370 (C09) NOTIFY message size not including presence doc........500 (C10) 200 OK for NOTIFY message size in bytes...............370 (C11) Size of an average presence document..................350 ** Initial Messages (I01) Initial SUBSCRIBE msgs per watcher.....................10 (I02) Initial 200 OK msgs (SUBSCRIBE) per watcher............10 (I03) Initial NOTIFY msgs per watcher........................10 (I04) Initial 200 OK msgs (NOTIFY) per watcher...............10 (I05) Total number & bytes of initial SUBSCRIBE msgs Number of msgs for all watchers...........200,000,000 Bytes for all watchers.................90,000,000,000 (I06) Total number & bytes of initial 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers...........200,000,000 Bytes for all watchers.................74,000,000,000 (I07) Total number & bytes of initial NOTIFY msgs Number of msgs for all watchers...........200,000,000 Bytes for all watchers................170,000,000,000 (I08) Total number & bytes of initial 200 OK (NOTIFY) msgs Number of msgs for all watchers...........200,000,000 Bytes for all watchers.................74,000,000,000 (I09) Total number & bytes of initial messages per day Number of msgs for all watchers...........800,000,000 Bytes for all watchers................408,000,000,000 ** Steady State Messages (S01) NOTIFY msgs due to state change per watched presentity per day.....................46 (S02) 200 (for NOTIFY due to state change) msgs per watched presentity per day.....................46 (S03) Total number and size of msgs due to state change per day Number of msgs for all watchers........18,400,000,000 Bytes for all watchers.............11,224,000,000,000 (S04) Number of SUBSCRIBE msgs for refreshes per watcher per day................................70 (S05) Number of 200 OK msgs for SUBSCRIBE msgs for refreshes per watcher per day................................70 (S06) Number of NOTIFY msgs for refreshes per watcher per day................................70 (S07) Number of 200 OK msgs for NOTIFY msgs for refreshes per watcher per day................................70 (S08) Total number and size of msgs due to SUBSCRIBE refreshes Number of msgs for all watchers per day.5,600,000,000 Bytes for all watchers per day......2,856,000,000,000 (S09) Total number & bytes of steady messages per day Number of msgs for all watchers........24,000,000,000 Bytes for all watchers.............14,080,000,000,000 ** Termination Messages (T01) Terminating SUBSCRIBE msgs per watcher.................10 (T02) Terminating 200 OK msgs (SUBSCRIBE) per watcher........10 (T03) Terminating NOTIFY msgs per watcher....................10 (T04) Terminating 200 OK msgs (NOTIFY) per watcher...........10 (T05) Total number & bytes of Terminating SUBSCRIBE msgs Number of msgs for all watchers...........200,000,000 Bytes for all watchers.................90,000,000,000 (T06) Total number & bytes of terminating 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers...........200,000,000 Bytes for all watchers.................74,000,000,000 (T07) Total number & bytes of terminating NOTIFY msgs Number of msgs for all watchers...........200,000,000 Bytes for all watchers................170,000,000,000 (T08) Total number & bytes of terminating 200 OK (NOTIFY) msgs Number of msgs for all watchers...........200,000,000 Bytes for all watchers.................74,000,000,000 (T09) Total number & bytes of terminating messages per day Number of msgs for all watchers...........800,000,000 Bytes for all watchers................408,000,000,000 ** Bottom Line (B01) Total of messages between domains..........25,600,000,000 Total of bytes bet. domains (PD=350)...14,896,000,000,000 Total of bytes bet. domains (PD=3000)..44,046,000,000,000 (B02) Total number of messages / second.................888,889 Total of bytes per second (PD=350)............517,222,222 Total of bytes per second (PD=3000).........1,529,375,000 (B03) Total number of by msgs per user/day................1,280 Total number of bytes per user/day (PD=350).......744,800 Total number of bytes per user/day (PD=3000)....2,202,300
Figure 7: Large network peering with no optimizations |
** Constants (C01) Subscription lifetime (hours)...........................8 (C02) Presence state changes / hour...........................6 (C03) Subscription refresh interval / hour....................1 (C04) Total federated presentities per watcher...............10 (C05) Number of dialogs to maintain per watcher...............1 (C06) Total number of watchers in domains............20,000,000 (C07) SUBSCRIBE message size in bytes.......................450 (C08) 200 OK for SUBSCRIBE message size in bytes............370 (C09) NOTIFY message size not including presence doc........500 (C10) 200 OK for NOTIFY message size in bytes...............370 (C11) Size of an average presence document..................350 (C13) Additional data per document in RLMI..................160 (C14) Multiparty boundary in RLMI document..................144 (C15) XML root node in RLMI document........................144 ** Initial Messages (I01) Initial SUBSCRIBE msgs per watcher......................1 (I02) Initial 200 OK msgs (SUBSCRIBE) per watcher.............1 (I03) Initial NOTIFY msgs per watcher.........................1 (I04) Initial 200 OK msgs (NOTIFY) per watcher................1 (I05) Total number & bytes of initial SUBSCRIBE msgs Number of msgs for all watchers............20,000,000 Bytes for all watchers..................9,000,000,000 (I06) Total number & bytes of initial 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers............20,000,000 Bytes for all watchers..................7,400,000,000 (I07) Total number & bytes of initial NOTIFY msgs Number of msgs for all watchers............20,000,000 Bytes for all watchers................146,560,000,000 (I08) Total number & bytes of initial 200 OK (NOTIFY) msgs Number of msgs for all watchers............20,000,000 Bytes for all watchers..................7,400,000,000 (I09) Total number & bytes of initial messages per day Number of msgs for all watchers............80,000,000 Bytes for all watchers................170,360,000,000 ** Steady State Messages (S01) NOTIFY msgs due to state change per watched presentity per day.....................46 (S02) 200 (for NOTIFY due to state change) msgs per watched presentity per day.....................46 (S03) Total number and size of msgs due to state change per day Number of msgs for all watchers........18,400,000,000 Bytes for all watchers.............16,670,400,000,000 (S04) Number of SUBSCRIBE msgs for refreshes per watcher per day.................................7 (S05) Number of 200 OK msgs for SUBSCRIBE msgs for refreshes per watcher per day.................................7 (S06) Number of NOTIFY msgs for refreshes per watcher per day.................................0 (S07) Number of 200 OK msgs for NOTIFY msgs for refreshes per watcher per day.................................0 (S08) Total number and size of msgs due to SUBSCRIBE refreshes Number of msgs for all watchers per day...280,000,000 Bytes for all watchers per day........114,800,000,000 (S09) Total number & bytes of steady messages per day Number of msgs for all watchers........18,680,000,000 Bytes for all watchers.............16,785,200,000,000 ** Termination Messages (T01) Terminating SUBSCRIBE msgs per watcher..................1 (T02) Terminating 200 OK msgs (SUBSCRIBE) per watcher.........1 (T03) Terminating NOTIFY msgs per watcher.....................0 (T04) Terminating 200 OK msgs (NOTIFY) per watcher............0 (T05) Total number & bytes of Terminating SUBSCRIBE msgs Number of msgs for all watchers............20,000,000 Bytes for all watchers..................9,000,000,000 (T06) Total number & bytes of terminating 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers............20,000,000 Bytes for all watchers..................7,400,000,000 (T07) Total number & bytes of terminating NOTIFY msgs Number of msgs for all watchers.....................0 Bytes for all watchers..............................0 (T08) Total number & bytes of terminating 200 OK (NOTIFY) msgs Number of msgs for all watchers.....................0 Bytes for all watchers..............................0 (T09) Total number & bytes of terminating messages per day Number of msgs for all watchers............40,000,000 Bytes for all watchers.................16,400,000,000 ** Bottom Line (B01) Total of messages between domains..........18,800,000,000 Total of bytes bet. domains (PD=350)...16,971,960,000,000 Total of bytes bet. domains (PD=3000)..41,881,960,000,000 (B02) Total number of messages / second.................652,778 Total of bytes per second (PD=350)............589,304,167 Total of bytes per second (PD=3000).........1,454,234,722 (B03) Total number of by msgs per user/day..................940 Total number of bytes per user/day (PD=350).......848,598 Total number of bytes per user/day (PD=3000)....2,094,098
Figure 8: Large network peering with optimizations |
TOC |
Within a particular domain, multiple presence infrastructures are deployed with users split between them. This scenario is unique in that federated messages do not pass outside the administrative domain's network. The two infrastructures peer directly inside the domain. A common example of this is an enterprise IT system that has deployed multiple, independent-vendor presence solutions (for example, a presence solution for desktop messaging deployed alongside a presence solution for IP telephony).
Common characteristics of this deployment are:
The first table below provides the calculations without optimizations. The second table provides the calculations with optimization. Although relatively conservative numbers are used, the number of messages is still high even though optimization may cut the traffic by more than half.
** Constants (C01) Subscription lifetime (hours)...........................8 (C02) Presence state changes / hour...........................3 (C03) Subscription refresh interval / hour....................1 (C04) Total federated presentities per watcher...............10 (C05) Number of dialogs to maintain per watcher..............10 (C06) Total number of watchers in domains...............120,000 (C07) SUBSCRIBE message size in bytes.......................450 (C08) 200 OK for SUBSCRIBE message size in bytes............370 (C09) NOTIFY message size not including presence doc........500 (C10) 200 OK for NOTIFY message size in bytes...............370 (C11) Size of an average presence document..................350 ** Initial Messages (I01) Initial SUBSCRIBE msgs per watcher.....................10 (I02) Initial 200 OK msgs (SUBSCRIBE) per watcher............10 (I03) Initial NOTIFY msgs per watcher........................10 (I04) Initial 200 OK msgs (NOTIFY) per watcher...............10 (I05) Total number & bytes of initial SUBSCRIBE msgs Number of msgs for all watchers.............1,200,000 Bytes for all watchers....................540,000,000 (I06) Total number & bytes of initial 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers.............1,200,000 Bytes for all watchers....................444,000,000 (I07) Total number & bytes of initial NOTIFY msgs Number of msgs for all watchers.............1,200,000 Bytes for all watchers..................1,020,000,000 (I08) Total number & bytes of initial 200 OK (NOTIFY) msgs Number of msgs for all watchers.............1,200,000 Bytes for all watchers....................444,000,000 (I09) Total number & bytes of initial messages per day Number of msgs for all watchers.............4,800,000 Bytes for all watchers..................2,448,000,000 ** Steady State Messages (S01) NOTIFY msgs due to state change per watched presentity per day.....................22 (S02) 200 (for NOTIFY due to state change) msgs per watched presentity per day.....................22 (S03) Total number and size of msgs due to state change per day Number of msgs for all watchers............52,800,000 Bytes for all watchers.................32,208,000,000 (S04) Number of SUBSCRIBE msgs for refreshes per watcher per day................................70 (S05) Number of 200 OK msgs for SUBSCRIBE msgs for refreshes per watcher per day................................70 (S06) Number of NOTIFY msgs for refreshes per watcher per day................................70 (S07) Number of 200 OK msgs for NOTIFY msgs for refreshes per watcher per day................................70 (S08) Total number and size of msgs due to SUBSCRIBE refreshes Number of msgs for all watchers per day....33,600,000 Bytes for all watchers per day.........17,136,000,000 (S09) Total number & bytes of steady messages per day Number of msgs for all watchers............86,400,000 Bytes for all watchers.................49,344,000,000 ** Termination Messages (T01) Terminating SUBSCRIBE msgs per watcher.................10 (T02) Terminating 200 OK msgs (SUBSCRIBE) per watcher........10 (T03) Terminating NOTIFY msgs per watcher....................10 (T04) Terminating 200 OK msgs (NOTIFY) per watcher...........10 (T05) Total number & bytes of Terminating SUBSCRIBE msgs Number of msgs for all watchers.............1,200,000 Bytes for all watchers....................540,000,000 (T06) Total number & bytes of terminating 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers.............1,200,000 Bytes for all watchers....................444,000,000 (T07) Total number & bytes of terminating NOTIFY msgs Number of msgs for all watchers.............1,200,000 Bytes for all watchers..................1,020,000,000 (T08) Total number & bytes of terminating 200 OK (NOTIFY) msgs Number of msgs for all watchers.............1,200,000 Bytes for all watchers....................444,000,000 (T09) Total number & bytes of terminating messages per day Number of msgs for all watchers.............4,800,000 Bytes for all watchers..................2,448,000,000 ** Bottom Line (B01) Total of messages between domains..............96,000,000 Total of bytes between domains (PD=350)....54,240,000,000 Total of bytes between domains (PD=3000)..152,820,000,000 (B02) Total number of messages / second...................3,333 Total of bytes per second (PD=350)..............1,883,333 Total of bytes per second (PD=3000).............5,306,250 B(03 )Total number of by msgs per user/day..................800 Total number of bytes per user/day (PD=350).......452,000 Total number of bytes per user/day (PD=3000)....1,273,500
Figure 9: Intra-domain peering with no optimizations |
** Constants (C01) Subscription lifetime (hours)...........................8 (C02) Presence state changes / hour...........................3 (C03) Subscription refresh interval / hour....................1 (C04) Total federated presentities per watcher...............10 (C05) Number of dialogs to maintain per watcher...............1 (C06) Total number of watchers in domains...............120,000 (C07) SUBSCRIBE message size in bytes.......................450 (C08) 200 OK for SUBSCRIBE message size in bytes............370 (C09) NOTIFY message size not including presence doc........500 (C10) 200 OK for NOTIFY message size in bytes...............370 (C11) Size of an average presence document..................350 (C13) Additional data per document in RLMI..................160 (C14) Multiparty boundary in RLMI document..................144 (C15) XML root node in RLMI document........................144 ** Initial Messages (I01) Initial SUBSCRIBE msgs per watcher......................1 (I02) Initial 200 OK msgs (SUBSCRIBE) per watcher.............1 (I03) Initial NOTIFY msgs per watcher.........................1 (I04) Initial 200 OK msgs (NOTIFY) per watcher................1 (I05) Total number & bytes of initial SUBSCRIBE msgs Number of msgs for all watchers...............120,000 Bytes for all watchers.....................54,000,000 (I06) Total number & bytes of initial 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers...............120,000 Bytes for all watchers.....................44,400,000 (I07) Total number & bytes of initial NOTIFY msgs Number of msgs for all watchers...............120,000 Bytes for all watchers....................879,360,000 (I08) Total number & bytes of initial 200 OK (NOTIFY) msgs Number of msgs for all watchers...............120,000 Bytes for all watchers.....................44,400,000 (I09) Total number & bytes of initial messages per day Number of msgs for all watchers...............480,000 Bytes for all watchers..................1,022,160,000 ** Steady State Messages (S01) NOTIFY msgs due to state change per watched presentity per day.....................22 (S02) 200 (for NOTIFY due to state change) msgs per watched presentity per day.....................22 (S03) Total number and size of msgs due to state change per day Number of msgs for all watchers............52,800,000 Bytes for all watchers.................47,836,800,000 (S04) Number of SUBSCRIBE msgs for refreshes per watcher per day.................................7 (S05) Number of 200 OK msgs for SUBSCRIBE msgs for refreshes per watcher per day.................................7 (S06) Number of NOTIFY msgs for refreshes per watcher per day.................................0 (S07) Number of 200 OK msgs for NOTIFY msgs for refreshes per watcher per day.................................0 (S08) Total number and size of msgs due to SUBSCRIBE refreshes Number of msgs for all watchers per day.....1,680,000 Bytes for all watchers per day............688,800,000 (S09) Total number & bytes of steady messages per day Number of msgs for all watchers............54,480,000 Bytes for all watchers.................48,525,600,000 ** Termination Messages (T01) Terminating SUBSCRIBE msgs per watcher..................1 (T02) Terminating 200 OK msgs (SUBSCRIBE) per watcher.........1 (T03) Terminating NOTIFY msgs per watcher.....................1 (T04) Terminating 200 OK msgs (NOTIFY) per watcher............1 (T05) Total number & bytes of Terminating SUBSCRIBE msgs Number of msgs for all watchers...............120,000 Bytes for all watchers.....................54,000,000 (T06) Total number & bytes of terminating 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers...............120,000 Bytes for all watchers.....................44,400,000 (T07) Total number & bytes of terminating NOTIFY msgs Number of msgs for all watchers.....................0 Bytes for all watchers..............................0 (T08) Total number & bytes of terminating 200 OK (NOTIFY) msgs Number of msgs for all watchers...............120,000 Bytes for all watchers.....................44,400,000 (T09) Total number & bytes of terminating messages per day Number of msgs for all watchers...............240,000 Bytes for all watchers.....................98.400,000 ** Bottom Line (B01) Total of messages between domains..............55,200,000 Total of bytes between domains (PD=350)....49,646,160,000 Total of bytes between domains (PD=3000)..122,796,160,000 (B02) Total number of messages / second...................1,917 Total of bytes per second (PD=350)..............1,723,825 Total of bytes per second (PD=3000).............4,263,408 (B03) Total number of by msgs per user/day..................460 Total number of bytes per user/day (PD=350).......413,718 Total number of bytes per user/day (PD=3000)....1,023,218
Figure 10: Intra-domain peering with optimizations |
TOC |
RFC 5263 [9] (Lonnfors, M., Costa-Requena, J., Leppanen, E., and H. Khartabil, “Session Initiation Protocol (SIP) Extension for Partial Notification of Presence Information,” September 2008.) defines a way for the watcher to request getting only what was changed in the presence document. The following calculation shows the bandwidth saved in the large peering network case when we add partial notification to the dialog and NOTIFY optimizations. It is assumed that, except for the initial NOTIFY, all other NOTIFY messages will be partial. It is also assumed that only a single attribute in the presence document will be changed each time, thus the size of the partial presence document is assumed to be 200 bytes.
** Constants (C01) Subscription lifetime (hours)...........................8 (C02) Presence state changes / hour...........................6 (C03) Subscription refresh interval / hour....................1 (C04) Total federated presentities per watcher...............10 (C05) Number of dialogs to maintain per watcher..............10 (C06) Total number of watchers in domains............20,000,000 (C07) SUBSCRIBE message size in bytes.......................450 (C08) 200 OK for SUBSCRIBE message size in bytes............370 (C09) NOTIFY message size not including presence doc........500 (C10) 200 OK for NOTIFY message size in bytes...............370 (C11) Size of an average presence document..................350 (C12) Size of an average partial presence document..........200 ** Initial Messages (I01) Initial SUBSCRIBE msgs per watcher.....................10 (I02) Initial 200 OK msgs (SUBSCRIBE) per watcher............10 (I03) Initial NOTIFY msgs per watcher........................10 (I04) Initial 200 OK msgs (NOTIFY) per watcher...............10 (I05) Total number & bytes of initial SUBSCRIBE msgs Number of msgs for all watchers...........200,000,000 Bytes for all watchers.................90,000,000,000 (I06) Total number & bytes of initial 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers...........200,000,000 Bytes for all watchers..................74,00,000,000 (I07) Total number & bytes of initial NOTIFY msgs Number of msgs for all watchers...........200,000,000 Bytes for all watchers................170,000,000,000 (I08) Total number & bytes of initial 200 OK (NOTIFY) msgs Number of msgs for all watchers...........200,000,000 Bytes for all watchers..................74,000,000,000 (I09) Total number & bytes of initial messages per day Number of msgs for all watchers...........800,000,000 Bytes for all watchers................408,000,000,000 ** Steady State Messages (S01) NOTIFY msgs due to state change per watched presentity per day.....................46 (S02) 200 (for NOTIFY due to state change) msgs per watched presentity per day.....................46 (S03) Total number and size of msgs due to state change per day Number of msgs for all watchers........18,400,000,000 Bytes for all watchers..............9,844,000,000,000 (S04) Number of SUBSCRIBE msgs for refreshes per watcher per day................................70 (S05) Number of 200 OK msgs for SUBSCRIBE msgs for refreshes per watcher per day................................70 (S06) Number of NOTIFY msgs for refreshes per watcher per day.................................0 (S07) Number of 200 OK msgs for NOTIFY msgs for refreshes per watcher per day.................................0 (S08) Total number and size of msgs due to SUBSCRIBE refreshes Number of msgs for all watchers per day.2,800,000,000 Bytes for all watchers per day......1,148,000,000,000 (S09) Total number & bytes of steady messages per day Number of msgs for all watchers........21,200,000,000 Bytes for all watchers.............10,992,000,000,000 ** Termination Messages (T01) Terminating SUBSCRIBE msgs per watcher.................10 (T02) Terminating 200 OK msgs (SUBSCRIBE) per watcher........10 (T03) Terminating NOTIFY msgs per watcher.....................0 (T04) Terminating 200 OK msgs (NOTIFY) per watcher............0 (T05) Total number & bytes of Terminating SUBSCRIBE msgs Number of msgs for all watchers...........200,000,000 Bytes for all watchers.................90,000,000,000 (T06) Total number & bytes of terminating 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers...........200,000,000 Bytes for all watchers.................74,000,000,000 (T07) Total number & bytes of terminating NOTIFY msgs Number of msgs for all watchers.....................0 Bytes for all watchers..............................0 (T08) Total number & bytes of terminating 200 OK (NOTIFY) msgs Number of msgs for all watchers.....................0 Bytes for all watchers..............................0 (T09) Total number & bytes of terminating messages per day Number of msgs for all watchers...........400,000,000 Bytes for all watchers................164.000,000,000 ** Bottom Line (B01) Total of messages between domains..........22,400,000,000 Total of bytes bet. domains (PD=350)...11,564,000,000,000 Total of bytes bet. domains (PD=3000)..12,094,000,000,000 (B02) Total number of messages / second.................777,778 Total of bytes per second (PD=350)............401,527,778 Total of bytes per second (PD=3000)...........419,930,556 (B03) Total number of by msgs per user/day................1,120 Total number of bytes per user/day (PD=350).......578,200 Total number of bytes per user/day (PD=3000)......604,700
Figure 11: Large networks peering with NOTIFY and partial optimizations |
TOC |
SIP is a network-agnostic protocol, therefore, the protocol carries additional messages like 200 OK that would be redundant in a protocol that is TCP based only.
The following calculation assumes an imaginary TCP-only version of SIP that optimizes the following:
As noted above, the calculations in this document do not assume offline means of receiving presence information. Therefore, in addition to the above optimizations, the other optimizations that were assumed in the document are assumed here also. These includes partial notifications and the dialog optimizations. The NOTIFY optimization is not relevant here since there are no refreshes of subscriptions.
The following is a calculation for the large network peering scenario assuming an imaginary TCP-only SIP. It is interesting to note that the dialog optimization does not reduce the number of bytes when partial notification optimization is applied (on the contrary) due to the RLMI overhead.
** Constants (C01) Subscription lifetime (hours)...........................8 (C02) Presence state changes / hour...........................6 (C03) Subscription refresh interval / hour....................0 (C04) Total federated presentities per watcher...............10 (C05) Number of dialogs to maintain per watcher...............1 (C06) Total number of watchers in domains............20,000,000 (C07) SUBSCRIBE message size in bytes.......................150 (C08) 200 OK for SUBSCRIBE message size in bytes..............0 (C09) NOTIFY message size not including presence doc........150 (C10) 200 OK for NOTIFY message size in bytes.................0 (C11) Size of an average presence document..................350 (C12) Size of an average partial presence document..........200 ** Initial Messages (I01) Initial SUBSCRIBE msgs per watcher......................1 (I02) Initial 200 OK msgs (SUBSCRIBE) per watcher.............0 (I03) Initial NOTIFY msgs per watcher.........................1 (I04) Initial 200 OK msgs (NOTIFY) per watcher................0 (I05) Total number & bytes of initial SUBSCRIBE msgs Number of msgs for all watchers............20,000,000 Bytes for all watchers..................3,000,000,000 (I06) Total number & bytes of initial 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers.....................0 Bytes for all watchers..............................0 (I07) Total number & bytes of initial NOTIFY msgs Number of msgs for all watchers............20,000,000 Bytes for all watchers................136,680,000,000 (I08) Total number & bytes of initial 200 OK (NOTIFY) msgs Number of msgs for all watchers.....................0 Bytes for all watchers..............................0 (I09) Total number & bytes of initial messages per day Number of msgs for all watchers............40,000,000 Bytes for all watchers................139,680,000,000 ** Steady State Messages (S01) NOTIFY msgs due to state change per watched presentity per day.....................46 (S02) 200 (for NOTIFY due to state change) msgs per watched presentity per day......................0 (S03) Total number and size of msgs due to state change per day Number of msgs for all watchers.........9,200,000,000 Bytes for all watchers..............8,666,400,000,000 (S04) Number of SUBSCRIBE msgs for refreshes per watcher per day.................................0 (S05) Number of 200 OK msgs for SUBSCRIBE msgs for refreshes per watcher per day.................................0 (S06) Number of NOTIFY msgs for refreshes per watcher per day.................................0 (S07) Number of 200 OK msgs for NOTIFY msgs for refreshes per watcher per day.................................0 (S08) Total number and size of msgs due to SUBSCRIBE refreshes Number of msgs for all watchers per day.............0 Bytes for all watchers per day......................0 (S09) Total number & bytes of steady messages per day Number of msgs for all watchers.........9,200,000,000 Bytes for all watchers..............8,666,400,000,000 ** Termination Messages (T01) Terminating SUBSCRIBE msgs per watcher..................1 (T02) Terminating 200 OK msgs (SUBSCRIBE) per watcher.........0 (T03) Terminating NOTIFY msgs per watcher.....................0 (T04) Terminating 200 OK msgs (NOTIFY) per watcher............0 (T05) Total number & bytes of Terminating SUBSCRIBE msgs Number of msgs for all watchers............20,000,000 Bytes for all watchers..................3,000,000,000 (T06) Total number & bytes of terminating 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers.....................0 Bytes for all watchers..............................0 (T07) Total number & bytes of terminating NOTIFY msgs Number of msgs for all watchers.....................0 Bytes for all watchers..............................0 (T08) Total number & bytes of terminating 200 OK (NOTIFY) msgs Number of msgs for all watchers.....................0 Bytes for all watchers..............................0 (T09) Total number & bytes of terminating messages per day Number of msgs for all watchers............20,000,000 Bytes for all watchers..................3,000,000,000 ** Bottom Line (B01) Total of messages between domains...........9,260,000,000 Total of bytes between domains (PD=350).8,809,080,000,000 Total of bytes bet. domains (PD=3000)...9,339,080,000,000 (B02) Total number of messages / second.................321,528 Total of bytes per second (PD=350)............305,870,833 Total of bytes per second (PD=3000)...........324,273,611 (B03) Total number of by msgs per user/day..................463 Total number of bytes per user/day (PD=350).......440,454 Total number of bytes per user/day (PD=3000)......466,954
Figure 12: Large networks peering, TCP only SIP+Partial+Dialog optimizations |
** Constants (C01) Subscription lifetime (hours)...........................8 (C02) Presence state changes / hour...........................6 (C03) Subscription refresh interval / hour....................0 (C04) Total federated presentities per watcher...............10 (C05) Number of dialogs to maintain per watcher..............10 (C06) Total number of watchers in domains............20,000,000 (C07) SUBSCRIBE message size in bytes.......................150 (C08) 200 OK for SUBSCRIBE message size in bytes..............0 (C09) NOTIFY message size not including presence doc........150 (C10) 200 OK for NOTIFY message size in bytes.................0 (C11) Size of an average presence document..................350 (C12) Size of an average partial presence document..........200 ** Initial Messages (I01) Initial SUBSCRIBE msgs per watcher.....................10 (I02) Initial 200 OK msgs (SUBSCRIBE) per watcher.............0 (I03) Initial NOTIFY msgs per watcher........................10 (I04) Initial 200 OK msgs (NOTIFY) per watcher................0 (I05) Total number & bytes of initial SUBSCRIBE msgs Number of msgs for all watchers...........200,000,000 Bytes for all watchers.................30,000,000,000 (I06) Total number & bytes of initial 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers.....................0 Bytes for all watchers..............................0 (I07) Total number & bytes of initial NOTIFY msgs Number of msgs for all watchers...........200,000,000 Bytes for all watchers................100,000,000,000 (I08) Total number & bytes of initial 200 OK (NOTIFY) msgs Number of msgs for all watchers.....................0 Bytes for all watchers..............................0 (I09) Total number & bytes of initial messages per day Number of msgs for all watchers...........400,000,000 Bytes for all watchers................130,000,000,000 ** Steady State Messages (S01) NOTIFY msgs due to state change per watched presentity per day.....................46 (S02) 200 (for NOTIFY due to state change) msgs per watched presentity per day......................0 (S03) Total number and size of msgs due to state change per day Number of msgs for all watchers.........9,200,000,000 Bytes for all watchers..............3,220,000,000,000 (S04) Number of SUBSCRIBE msgs for refreshes per watcher per day.................................0 (S05) Number of 200 OK msgs for SUBSCRIBE msgs for refreshes per watcher per day.................................0 (S06) Number of NOTIFY msgs for refreshes per watcher per day.................................0 (S07) Number of 200 OK msgs for NOTIFY msgs for refreshes per watcher per day.................................0 (S08) Total number and size of msgs due to SUBSCRIBE refreshes Number of msgs for all watchers per day.............0 Bytes for all watchers per day......................0 (S09) Total number & bytes of steady messages per day Number of msgs for all watchers.........9,200,000,000 Bytes for all watchers..............3,220,000,000,000 ** Termination Messages (T01) Terminating SUBSCRIBE msgs per watcher.................10 (T02) Terminating 200 OK msgs (SUBSCRIBE) per watcher.........0 (T03) Terminating NOTIFY msgs per watcher.....................0 (T04) Terminating 200 OK msgs (NOTIFY) per watcher............0 (T05) Total number & bytes of Terminating SUBSCRIBE msgs Number of msgs for all watchers...........200,000,000 Bytes for all watchers.................30,000,000,000 (T06) Total number & bytes of terminating 200 OK (SUBSCRIBE) msgs Number of msgs for all watchers.....................0 Bytes for all watchers..............................0 (T07) Total number & bytes of terminating NOTIFY msgs Number of msgs for all watchers.....................0 Bytes for all watchers..............................0 (T08) Total number & bytes of terminating 200 OK (NOTIFY) msgs Number of msgs for all watchers.....................0 Bytes for all watchers..............................0 (T09) Total number & bytes of terminating messages per day Number of msgs for all watchers...........200,000,000 Bytes for all watchers.................30,000,000,000 ** Bottom Line (B01) Total of messages between domains...........9,800,000,000 Total of bytes between domains (PD=350).3,380,000,000,000 Total of bytes bet. domains (PD=3000)...3,910,280,000,000 (B02) Total number of messages / second.................340,278 Total of bytes per second (PD=350)............117,361,111 Total of bytes per second (PD=3000)...........135,763,889 (B03) Total number of by msgs per user/day..................490 Total number of bytes per user/day (PD=350).......169,000 Total number of bytes per user/day (PD=3000)......195,500
Figure 13: Large networks peering, TCP only SIP+Partial optimizations |
TOC |
In previous sections, we discussed the large number of messages that need to be sent to/from a presence server. In this section, we will analyze the state that needs to be maintained by a presence server and will show it to be far from trivial.
The presence server has two parallel tasks:
For a single subscription from a single watcher on a presentity, the presence server has to maintain the following state:
For each presentity with subscriptions in the presence server, the presence server has to maintain the following state:
For each presentity that has published a state other than a default value, the presence server has to maintain the current value of the presentity's state.
TOC |
Lets assume the following sizes:
TOC |
Total is 82M bytes.
TOC |
Total is 830M bytes.
TOC |
Total is 38G bytes.
TOC |
Total is 952G bytes, which is a large number for dynamic storage as needed by the presence server.
Although the numbers above may seem moderate enough for the sizes that the presence server is handling, we should consider the following:
Although the above calculations do not show that there is a real issue with state management of presence in medium systems or even in large systems since state could be divided among different machines, the state size is still large. A bigger issue with the state involves resource lists, which create an interlinked state between many servers. In that case, the division of large state to multiple servers becomes less trivial.
TOC |
The basic presence paradigm comprises a watcher and a presentity to which the watcher watches. It sounds simple enough, but the presence server has to manage many additions and extensions, which makes processing complex.
In this section, we show that, in addition to the large number of messages and the large state that the presence server has to handle, it also has to handle quite intensive processing for aggregation, partial notification and publish, filtering, and privacy. This adds complexity to the presence server on the CPU front in addition to the network and memory fronts that were described before.
TOC |
A presence document may contain multiple resources. These resources can be devices of the presentity, information from external providers of presence information such as geographical location, calendars, and more.
The presence server needs to receive the updates from all the resources and to aggregate them correctly into a single presence document. Although this is just a "XML processing" task, the number of updates that the presence server may receive, the need to keep the presence document aligned with its schema, and the need to notify the users as soon as possible create a significant processing burden on the presence server.
TOC |
Partial notification [9] (Lonnfors, M., Costa-Requena, J., Leppanen, E., and H. Khartabil, “Session Initiation Protocol (SIP) Extension for Partial Notification of Presence Information,” September 2008.) and partial publish [12] (Niemi, A., Lonnfors, M., and E. Leppanen, “Publication of Partial Presence Information,” September 2008.) define a way for the watcher to request notification only on what was changed in the presence document and for the publisher of presence information to publish only what was changed in the presence document since the last publish. Although these optimizations help reduce the amount of the data that is sent from/to the presence server, these optimizations create additional processing burden on the presence server.
When a partial publish arrives at the presence server, the presence server has to be able to process the partial publish, and change only what is indicated in the partial publish while keeping the presence document well-formed according to the schema.
In partial notification, the processing is even more complex since each watcher needs to get the partial update based on the last update that was received by that watcher. Therefore, [9] (Lonnfors, M., Costa-Requena, J., Leppanen, E., and H. Khartabil, “Session Initiation Protocol (SIP) Extension for Partial Notification of Presence Information,” September 2008.) specifies a versioning mechanism that enables the watcher to get the updates based on the previous state that it has seen. This versioning mechanism has to be maintained by the presence server for each watcher that is subscribed to a presentity and requires partial notification.
TOC |
Filtering as defined in RFCs [13] (Khartabil, H., Leppanen, E., Lonnfors, M., and J. Costa-Requena, “Functional Description of Event Notification Filtering,” September 2006.), [14] (Khartabil, H., Leppanen, E., Lonnfors, M., and J. Costa-Requena, “An Extensible Markup Language (XML)-Based Format for Event Notification Filtering,” September 2006.) enables a watcher to request to be notified only when the presence document fulfills certain conditions. Although this is a convenient feature for watchers, the burden put on the presence server is quite large. For each change in the presence document, the presence server needs to compute the filtering expressions, which can be complex, and to decide whether and what to send to the watcher that has requested filtering.
TOC |
RFC [15] (Rosenberg, J., “Presence Authorization Rules,” December 2007.) defines presence authorization rules that allow presentities to specify what each watcher can see in their presence documents. The processing that the presence server performs here is similar to filtering. When a presence document with defined authorization rules changes, the presence server creates different notifications for different watchers according to those rules.
TOC |
RFC [4] (Roach, A., Campbell, B., and J. Rosenberg, “A Session Initiation Protocol (SIP) Event Notification Extension for Resource Lists,” August 2006.) defines a way to subscribe to a single URI that represents a list of resources that are subscribed to by a single subscription. Although this quite useful mechanism significantly reduces the number of sessions between the watcher and the presence server (as we show in the calculations of messages), this feature has the potential to complicate the scaling of presence systems.
The reasons that resource lists may make the scaling of the presence server even more complex are:
These issues show how an optimization can help in one part of the system but create even bigger problems in the overall system. There is a need to think about the problems listed above, but, more than that, there is a need to make sure that introducing an optimization does not create issues in other places.
TOC |
This section highlights several optimizations that are either already part of SIP or they have been suggested in various drafts. Several other optimizations that have been suggested but have not been discussed in any working group yet are summarized in [2] (Houri, A., “Scaling Optimizations for Presence in SIP/SIMPLE,” July 2007.) and in [3] (Rosenberg, J., Donovan, S., and K. McMurry, “Optimizing Federated Presence with View Sharing,” November 2008.). Note that trials with batched NOTIFYs optimization, described in [2] (Houri, A., “Scaling Optimizations for Presence in SIP/SIMPLE,” July 2007.), showed an improvement of 117% in the whole throughput of presence traffic.
TOC |
The following summary of the various calculations is provided here to help support the conclusions listed below.
The following table summarizes the constants that are used in ALL calculations:
(C01) Subscription lifetime (hours)...........................8 (C03) Subscription refresh interval / hour....................1 (C05) Number of dialogs to maintain per watcher = Number of federated presentities when dialog optimization is not used and to 1 when dialog optimization is used. (C07) SUBSCRIBE message size in bytes.......................450 (C08) 200 OK for SUBSCRIBE message size in bytes............370 (C09) NOTIFY message size not including presence doc........500 (C10) 200 OK for NOTIFY message size in bytes...............370 (C11) Size of an average presence document..........350 or 3000 Calculations are done for both sizes (C12) Size of an average partial presence document..........200 (C13) Additional data per document in RLMI..................160 (C14) Multiparty boundary in RLMI document..................144 (C15) XML root node in RLMI document........................144
Figure 14: Constants in ALL calculations |
The following table summarizes the results of various optimization factors for the basic use case.
C02 Presence state changes / hour.............................3 C04 Total federated presentities per watcher..................4 C06 Total # of watchers in the federated domains.........40,000 No optimizations are applied (B01) Total of messages between domains..............12,800,000 Total of bytes between domains (PD=350).....7,232,000,000 Total of bytes between domains (PD=3000)...20,376,000,000 (B02) Total number of messages / second.. ..................444 Total of bytes per second (PD=350)................251,111 Total of bytes per second (PD=3000)...............707,500 (B03) Total number of by msgs per user/day......... ........320 Total number of bytes per user/day (PD=350).......180,800 Total number of bytes per user/day (PD=3000)......509,400 Dialog optimization is applied (B01) Total of messages between domains...............8,480,000 Total of bytes between domains (PD=350).....8,032,080,000 Total of bytes between domains (PD=3000)...21,176,080,000 (B02) Total number of messages / second.....................294 Total of bytes per second (PD=350)................278,892 Total of bytes per second (PD=3000)...............735,281 (B03) Total number of by msgs per user/day..................212 Total number of bytes per user/day (PD=350).......200,802 Total number of bytes per user/day (PD=3000)......529,042 Notify optimization is applied (B01) Total of messages between domains..............10,240,000 Total of bytes between domains (PD=350).....5,670,400,000 Total of bytes between domains (PD=3000)...15,422,400,000 (B02) Total number of messages / second.....................356 Total of bytes per second (PD=350)................196,889 Total of bytes per second (PD=3000)...............535,500 (B03) Total number of by msgs per user/day..................256 Total number of bytes per user/day (PD=350).......141,760 Total number of bytes per user/day (PD=3000)......385,560 Dialog and notify optimizations are applied (B01) Total of messages between domains...............7,840,000 Total of bytes between domains (PD=350).....6,824,400,000 Total of bytes between domains (PD=3000)...16,576,400,000 (B02) Total number of messages / second.....................272 Total of bytes per second (PD=350)................236,958 Total of bytes per second (PD=3000)...............575,569 (B03) Total number of by msgs per user/day..................196 Total number of bytes per user/day (PD=350).......170,610 Total number of bytes per user/day (PD=3000)......414,410
Figure 15: Basic use case |
The following table summarizes the results of various optimization factors for the widely distributed inter-domain use case.
C02 Presence state changes / hour.............................3 C04 Total federated presentities per watcher.................20 C06 Total # of watchers in the federated domains.........40,000 No optimizations are applied (B01) Total of messages between domains..............64,000,000 Total of bytes between domains (PD=350)....36,160,000,000 Total of bytes between domains (PD=3000)..101,880,000,000 (B02) Total number of messages / second...................2,222 Total of bytes per second (PD=350)..............1,255,556 Total of bytes per second (PD=3000).............3,537,500 (B03) Total number of by msgs per user/day................1,600 Total number of bytes per user/day (PD=350).......904,000 Total number of bytes per user/day (PD=3000).....,547,000 Dialog and notify optimizations are applied (B01) Total of messages between domains..............36,000,000 Total of bytes between domains (PD=350)....32,755,920,000 Total of bytes between domains (PD=3000)...81,515,920,000 (B02) Total number of messages / second...................1,250 Total of bytes per second (PD=350)..............1,137,358 Total of bytes per second (PD=3000).............2,830,414 (B03) Total number of by msgs per user/day..................900 Total number of bytes per user/day (PD=350).......818,898 Total number of bytes per user/day (PD=3000)....2,037,898
Figure 16: Widely distributed inter-domain |
The following table summarizes the results of various optimization factors for the intra-domain peering use case.
C02 Presence state changes / hour.............................3 C04 Total federated presentities per watcher.................10 C06 Total # of watchers in the federated domains........120,000 No optimizations are applied B01 Total of messages between domains................96,000,000 Total of bytes between domains (PD=350)........54,240,000,000 Total of bytes between domains (PD=3000)......152,820,000,000 B02 Total number of messages / second.....................3,333 Total of bytes per second (PD=350)..................1,883,333 Total of bytes per second (PD=3000).................5,306,250 B03 Total number of by msgs per user/day....................800 Total number of bytes per user/day (PD=350)...........452,000 Total number of bytes per user/day (PD=3000)........1,273,500 Dialog and notify optimizations are applied (B01) Total of messages between domains..............55,200,000 Total of bytes between domains (PD=350)....49,646,160,000 Total of bytes between domains (PD=3000)..122,796,160,000 (B02) Total number of messages / second...................1,917 Total of bytes per second (PD=350)..............1,723,825 Total of bytes per second (PD=3000).............4,263,408 (B03) Total number of by msgs per user/day..................460 Total number of bytes per user/day (PD=350).......413,718 Total number of bytes per user/day (PD=3000)....1,023,218
Figure 17: Inter-domain peering |
The following table summarizes the results of various optimization factors for the large-scale peering networks use case.
C02 Presence state changes / hour.............................6 C04 Total federated presentities per watcher.................10 C06 Total # of watchers in the federated domains.....20,000,000 No optimizations are applied (B01) Total of messages between domains..........25,600,000,000 Total of bytes bet. domains (PD=350)...14,896,000,000,000 Total of bytes bet. domains (PD=3000)..44,046,000,000,000 (B02) Total number of messages / second.................888,889 Total of bytes per second (PD=350)............517,222,222 Total of bytes per second (PD=3000).........1,529,375,000 (B03) Total number of by msgs per user/day................1,280 Total number of bytes per user/day (PD=350).......744,800 Total number of bytes per user/day (PD=3000)....2,202,300 Dialog and notify optimizations are applied (B01) Total of messages between domains..........18,800,000,000 Total of bytes bet. domains (PD=350)...16,971,960,000,000 Total of bytes bet. domains (PD=3000)..41,881,960,000,000 (B02) Total number of messages / second.................652,778 Total of bytes per second (PD=350)............589,304,167 Total of bytes per second (PD=3000).........1,454,234,722 (B03) Total number of by msgs per user/day..................940 Total number of bytes per user/day (PD=350).......848,598 Total number of bytes per user/day (PD=3000)....2,094,098 Partial and notify optimizations are applied (B01) Total of messages between domains..........22,400,000,000 Total of bytes bet. domains (PD=350)...11,564,000,000,000 Total of bytes bet. domains (PD=3000)..12,094,000,000,000 (B02) Total number of messages / second.................777,778 Total of bytes per second (PD=350)............401,527,778 Total of bytes per second (PD=3000)...........419,930,556 (B03) Total number of by msgs per user/day................1,120 Total number of bytes per user/day (PD=350).......578,200 Total number of bytes per user/day (PD=3000)......604,700 TCP only SIP+Partial+Dialog optimizations (B01) Total of messages between domains...........9,260,000,000 Total of bytes between domains (PD=350).8,809,080,000,000 Total of bytes bet. domains (PD=3000)...9,339,080,000,000 (B02) Total number of messages / second.................321,528 Total of bytes per second (PD=350)............305,870,833 Total of bytes per second (PD=3000)...........324,273,611 (B03) Total number of by msgs per user/day..................463 Total number of bytes per user/day (PD=350).......440,454 Total number of bytes per user/day (PD=3000)......466,954 TCP only SIP+Partial optimizations (B01) Total of messages between domains...........9,800,000,000 Total of bytes between domains (PD=350).3,380,000,000,000 Total of bytes bet. domains (PD=3000)...3,910,280,000,000 (B02) Total number of messages / second.................340,278 Total of bytes per second (PD=350)............117,361,111 Total of bytes per second (PD=3000)...........135,763,889 (B03) Total number of by msgs per user/day..................490 Total number of bytes per user/day (PD=350).......169,000 Total number of bytes per user/day (PD=3000)......195,500
Figure 18: Large scale peering networks |
TOC |
The following conclusions can be drawn from the above numbers:
The document analyzes the scalability of presence systems in general and of SIP-based presence systems in particular. It is apparent that the scalability of these systems is far from being trivial from several perspectives: number of messages, network bandwidth, state management, and CPU load.
As part of the analysis, we assessed several optimizations and showed the effect of these optimizations on the number of messages and the number of bytes that are sent between the federating domains.
We have also computed the number of messages and bytes for a large-scale peering network while assuming a protocol that has much less overhead than SIP. Even with that protocol, we calculated relatively high numbers.
It is possible that the issues described in this document are inherent to presence systems in general and not specific to the SIMPLE protocol. Organizations need to be prepared to invest a lot in network and hardware in order to create real large systems. However, it is apparent that not all the possible optimizations were done yet and further work is needed in the IETF in order to provide better scalability.
Nevertheless, we should remember that SIP was originally designed for end-to-end session creation, and that the number and size of messages are of secondary importance for end-to-end session negotiation. For large scale and especially for large scale presence, the number of messages that are needed and the size of each message are of extreme importance. It seems that we need to think about the problem in a different way. We need to think about scalability as part of the protocol design. The IETF tends not to think about actual deployments when designing a protocol, but in this case it seems that if we do not think about scalability with the protocol design, it will be hard to scale.
We should also consider whether using the same protocol between clients and servers and between servers is a good choice with this problem. It may be that in interdomain or even between servers in the same domain (as between RLSs and presence servers) there is a need to have a different protocol that will be extremely optimized for the load and that can make some assumptions about the network (for example, use only TCP, and not an unreliable protocol such as UDP).
When a server connects to another server using the current protocol, there will be an extreme number of redundant messages due to the overhead of supporting UDP and the need to send multiple presence documents for the same watched user due to privacy issues. A server-to-server protocol will have to address these issues. Some initial work to address these issues can be found in [2] (Houri, A., “Scaling Optimizations for Presence in SIP/SIMPLE,” July 2007.), [3] (Rosenberg, J., Donovan, S., and K. McMurry, “Optimizing Federated Presence with View Sharing,” November 2008.) and [20] (Rosenberg, J., Houri, A., Smyth, C., and F. Audet, “Models for Intra-Domain Presence and Instant Messaging (IM) Bridging,” July 2009.)
Another issue that concerns protocol design is whether NOTIFY messages should not be considered as media like audio, video and even text messaging are considered. The SUBSCRIBE method can be extended to create a three-way handshake similar to INVITE and negotiate where the NOTIFY messages should go, rate, and other parameters. This way, the load can be shifted to specialized NOTIFY "relays", and taken off the control path of SIP. One of the possible ideas (Marc Willekens) is to use the SIP stack for the client/server NOTIFY but make use of a more optimized and controllable protocol for the server-to-server interface. Another possibility is to use the MSRP [21] (Campbell, B., Mahy, R., and C. Jennings, “The Message Session Relay Protocol (MSRP),” September 2007.), [22] (Jennings, C., Mahy, R., and A. Roach, “Relay Extensions for the Message Sessions Relay Protocol (MSRP),” September 2007.)protocol for the NOTIFYs.
TOC |
This document discusses scalability issues with the existing SIP/SIMPLE presence protocol and model. Therefore, there are no security considerations to be considered for this document. However, many of the possible optimizations that should emerge as a result of this document will have security implications that will need to be solved.
TOC |
This document has no actions for IANA.
TOC |
TOC |
Added clarifications, fixed typos and language usage issues raised during the IETF last call.
TOC |
Updated to conform with new IETF IPR boilerplate and updated references.
TOC |
TOC |
TOC |
TOC |
TOC |
TOC |
We would like to thank Jonathan Rosenberg, Ben Campbell, Robert Sparks, Markus Isomaki Piotr Boni, David Viamonte, Aki Niemi and Peter-Saint Andre for ideas and input. Special thanks to Marc Willekens and Victoria Beltran- Martinez for finding several issues in the calculations. Additional special thanks to A. Jean Mahoney and Joel M. Helpern for their dedicated review as part of the IETF last call.
TOC |
[1] | Houri, A., Parameswar, S., Aoki, E., Singh, V., and H. Schulzrinne, “Scaling Requirements for Presence in SIP/SIMPLE,” draft-ietf-sipcore-presence-scaling-requirements-02 (work in progress), September 2009 (TXT). |
[2] | Houri, A., “Scaling Optimizations for Presence in SIP/SIMPLE,” draft-houri-simple-interdomain-scaling-optimizations-00 (work in progress), July 2007 (TXT). |
[3] | Rosenberg, J., Donovan, S., and K. McMurry, “Optimizing Federated Presence with View Sharing,” draft-ietf-simple-view-sharing-02 (work in progress), November 2008 (TXT). |
[4] | Roach, A., Campbell, B., and J. Rosenberg, “A Session Initiation Protocol (SIP) Event Notification Extension for Resource Lists,” RFC 4662, August 2006 (TXT). |
[5] | Camarillo, G., Roach, A., and O. Levin, “Subscriptions to Request-Contained Resource Lists in the Session Initiation Protocol (SIP),” RFC 5367, October 2008 (TXT). |
[6] | Niemi, A. and D. Willis, “An Extension to Session Initiation Protocol (SIP) Events for Conditional Event Notification,” draft-ietf-sipcore-subnot-etags-04 (work in progress), January 2010 (TXT). |
[7] | Sugano, H., Fujimoto, S., Klyne, G., Bateman, A., Carr, W., and J. Peterson, “Presence Information Data Format (PIDF),” RFC 3863, August 2004 (TXT). |
[8] | Schulzrinne, H., Gurbani, V., Kyzivat, P., and J. Rosenberg, “RPID: Rich Presence Extensions to the Presence Information Data Format (PIDF),” RFC 4480, July 2006 (TXT). |
[9] | Lonnfors, M., Costa-Requena, J., Leppanen, E., and H. Khartabil, “Session Initiation Protocol (SIP) Extension for Partial Notification of Presence Information,” RFC 5263, September 2008 (TXT). |
[10] | Rosenberg, J., “A Watcher Information Event Template-Package for the Session Initiation Protocol (SIP),” RFC 3857, August 2004 (TXT). |
[11] | Rosenberg, J., “An Extensible Markup Language (XML) Based Format for Watcher Information,” RFC 3858, August 2004 (TXT). |
[12] | Niemi, A., Lonnfors, M., and E. Leppanen, “Publication of Partial Presence Information,” RFC 5264, September 2008 (TXT). |
[13] | Khartabil, H., Leppanen, E., Lonnfors, M., and J. Costa-Requena, “Functional Description of Event Notification Filtering,” RFC 4660, September 2006 (TXT). |
[14] | Khartabil, H., Leppanen, E., Lonnfors, M., and J. Costa-Requena, “An Extensible Markup Language (XML)-Based Format for Event Notification Filtering,” RFC 4661, September 2006 (TXT). |
[15] | Rosenberg, J., “Presence Authorization Rules,” RFC 5025, December 2007 (TXT). |
[16] | Niemi, A., Kiss, K., and S. Loreto, “Session Initiation Protocol (SIP) Event Notification Extension for Notification Rate Control,” draft-ietf-sipcore-event-rate-control-03 (work in progress), February 2010 (TXT). |
[17] | Garcia-Martin, M., “The Presence-Specific Static Dictionary for Signaling Compression (Sigcomp),” RFC 5112, January 2008 (TXT). |
[18] | Price, R., Bormann, C., Christoffersson, J., Hannu, H., Liu, Z., and J. Rosenberg, “Signaling Compression (SigComp),” RFC 3320, January 2003 (TXT). |
[19] | Burger, E., “A Mechanism for Content Indirection in Session Initiation Protocol (SIP) Messages,” RFC 4483, May 2006 (TXT). |
[20] | Rosenberg, J., Houri, A., Smyth, C., and F. Audet, “Models for Intra-Domain Presence and Instant Messaging (IM) Bridging,” draft-ietf-simple-intradomain-federation-04 (work in progress), July 2009 (TXT). |
[21] | Campbell, B., Mahy, R., and C. Jennings, “The Message Session Relay Protocol (MSRP),” RFC 4975, September 2007 (TXT). |
[22] | Jennings, C., Mahy, R., and A. Roach, “Relay Extensions for the Message Sessions Relay Protocol (MSRP),” RFC 4976, September 2007 (TXT). |
TOC |
Avshalom Houri | |
IBM | |
Science Park | |
Rehovot, | |
Israel | |
Email: | avshalom@il.ibm.com |
Edwin Aoki | |
AOL LLC | |
401 Ellis St. | |
Mountain View, CA 94043 | |
USA | |
Email: | aoki@aol.net |
Sriram Parameswar | |
Microsoft Corporation | |
One Microsoft Way | |
Redmond, WA 98052 | |
USA | |
Email: | Sriram.Parameswar@microsoft.com |
Tim Rang | |
Microsoft Corporation | |
One Microsoft Way | |
Redmond, WA 98052 | |
USA | |
Email: | timrang@microsoft.com |
Vishal Singh | |
Columbia University | |
Department of Computer Science | |
450 Computer Science Building | |
New York, NY 10027 | |
US | |
Email: | vs2140@cs.columbia.edu |
URI: | http://www.cs.columbia.edu/~vs2140 |
Henning Schulzrinne | |
Columbia University | |
Department of Computer Science | |
450 Computer Science Building | |
New York, NY 10027 | |
US | |
Phone: | +1 212 939 7004 |
Email: | hgs+ecrit@cs.columbia.edu |
URI: | http://www.cs.columbia.edu/~hgs |