SIMPLE WG A. Houri
Internet-Draft IBM
Intended status: Informational T. Rang
Expires: January 6, 2008 Microsoft Corporation
E. Aoki
AOL LLC
V. Singh
H. Schulzrinne
Columbia U.
July 5, 2007
Presence Interdomain Scaling Analysis for SIP/SIMPLE
draft-ietf-simple-interdomain-scaling-analysis-01.txt
Status of this Memo
By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of 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 6, 2008.
Copyright Notice
Copyright (C) The IETF Trust (2007).
Abstract
The document analyses the traffic that is generated due to presence
subscriptions between domains. It is shown that the amount of
Houri, et al. Expires January 6, 2008 [Page 1]
Internet-Draft Presence Scaling Analysis July 2007
traffic can be extremely big. In addition to the very large traffic
the document also analyses the affects of a large presence system on
the memory footprint and the CPU load. Current approved and in work
optimizations to the SIMPLE protocol are analysed with the possible
impact on the load. Separate documents contain the requirements for
optimizations and suggestions for new optimizations.
Houri, et al. Expires January 6, 2008 [Page 2]
Internet-Draft Presence Scaling Analysis July 2007
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Message Load . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1. Known Optimizations . . . . . . . . . . . . . . . . . . . 5
2.2. Assumptions . . . . . . . . . . . . . . . . . . . . . . . 5
2.3. Analysis . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3.1. Constants . . . . . . . . . . . . . . . . . . . . . . 7
2.3.2. Initial Messages . . . . . . . . . . . . . . . . . . . 8
2.3.3. Steady State Messages . . . . . . . . . . . . . . . . 9
2.3.4. Termination Messages . . . . . . . . . . . . . . . . . 9
2.3.5. Bottom Line . . . . . . . . . . . . . . . . . . . . . 10
2.3.6. Rush Hour Calculations . . . . . . . . . . . . . . . . 10
2.4. SIMPLE with no optimizations . . . . . . . . . . . . . . . 10
2.5. SIMPLE with dialog optimization . . . . . . . . . . . . . 12
2.6. SIMPLE with NOTIFY optimization . . . . . . . . . . . . . 14
2.7. SIMPLE with Dialog & NOTIFY optimizations . . . . . . . . 17
2.8. Presence Federations . . . . . . . . . . . . . . . . . . . 19
2.8.1. Widely distributed inter-domain presence . . . . . . . 19
2.8.2. Associated inter-domain presence . . . . . . . . . . . 23
2.8.3. Very large network peering . . . . . . . . . . . . . . 24
2.8.4. Intra-domain peering . . . . . . . . . . . . . . . . . 28
2.9. Partial Notifications Optimization . . . . . . . . . . . . 32
2.10. Other Protocols . . . . . . . . . . . . . . . . . . . . . 34
3. State Management . . . . . . . . . . . . . . . . . . . . . . . 37
3.1. State Size Calculations . . . . . . . . . . . . . . . . . 38
3.1.1. Tiny System . . . . . . . . . . . . . . . . . . . . . 38
3.1.2. Medium System . . . . . . . . . . . . . . . . . . . . 38
3.1.3. Large System . . . . . . . . . . . . . . . . . . . . . 38
3.1.4. Very Large System . . . . . . . . . . . . . . . . . . 38
4. Processing complexities . . . . . . . . . . . . . . . . . . . 39
4.1. Aggregation . . . . . . . . . . . . . . . . . . . . . . . 40
4.2. Partial Publish and Notify . . . . . . . . . . . . . . . . 40
4.3. Filtering . . . . . . . . . . . . . . . . . . . . . . . . 40
4.4. Authorization . . . . . . . . . . . . . . . . . . . . . . 41
4.5. Resource List Service . . . . . . . . . . . . . . . . . . 41
5. Current Optimizations . . . . . . . . . . . . . . . . . . . . 42
6. Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . 43
7. Security Considerations . . . . . . . . . . . . . . . . . . . 44
8. Changes from Previous Versions . . . . . . . . . . . . . . . . 45
8.1. Changes in version 01 . . . . . . . . . . . . . . . . . . 45
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 45
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 45
10.1. Normative References . . . . . . . . . . . . . . . . . . . 45
10.2. Informational References . . . . . . . . . . . . . . . . . 45
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 47
Intellectual Property and Copyright Statements . . . . . . . . . . 49
Houri, et al. Expires January 6, 2008 [Page 3]
Internet-Draft Presence Scaling Analysis July 2007
1. Introduction
The document analyses the traffic that is generated due to presence
subscriptions between domains. It is shown that the amount of
traffic can be extremely big. In addition to the very large traffic
the document also analyses the affects of a large presence system on
the memory footprint and the CPU load. Current approved and in work
optimizations to the SIMPLE protocol are analysed with the possible
impact on the load. Separate documents contain the requirements for
optimizations [17] and suggestions for new optimizations [18].
This document is intended to be used by the SIMPLE WG in order to
work on possible solutions that will make the deployment of a
presence server more reasonable task. Note that the document does
not try to compare the SIP based presence server to other types of
presence servers but only analyses the SIP based presence server. It
is very likely that similar scalability issues are inherent to the
deployment of presence systems and not to a certain protocol.
The document discusses the following areas. In each area we try to
show the complexity and the load that the presence server has to
handle in order to provide its service.
o Messages load - By computing the number of messages that are
required for connecting presence systems the document shows that
the number of messages is very big and it is quite obvious that
some optimizations are needed. In addition we also show that the
bandwidth required is also very big.
o State management - Due to the nature of the service that the
presence server provides, the presence server has to manage a
relatively big and complex state and some computations are
provided in the document.
o Processing complexities - The presence server maintains many small
objects and has to do frequent operations on these objects. We
show that these operations and especially the optimizations that
are intended to save on the amount of data that is being sent
between watchers and presence servers, are not so simple and may
create a very heavy processing load on the presence server.
o Groups - Resource List Servers [10] optimize the number of
sessions that are created between the watchers and the presence
server. On the other hand, this optimization may create an
exponential size of subscription due to the unbearable ease of
subscribing to large groups.
The term presence domain or presence system appears in the document
several time. By this term we refer to a presence server that
provides presence subscription and notification services to its
users. The system can be a system that is deployed in a small
Houri, et al. Expires January 6, 2008 [Page 4]
Internet-Draft Presence Scaling Analysis July 2007
enterprise or in a very large consumer network.
2. Message Load
Even though some optimizations are approved or are being defined, we
show in this section that a very large number of messages & large
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) [10] introduce very
similar traffic pattern within a domain as between domains. See
detailed discussion on resource lists in Section 4.5.
2.1. Known Optimizations
The current optimizations that are approved or are approved as
working group items in the SIMPLE working group can be divided into
two categories:
o Dialogs saving optimization - Here we refer to optimizations as
the resource list RFC [10] or to the Uri list subscriptions draft
[15]. These documents define ways to reduce the number of dialogs
that are required between the subscriber and the presence system.
o Notification optimizations - Here we refer to the optimizations
that are suggested in the subnot-etags draft [16]. This draft
suggests ways to suppress the sending of unnecessary notifies when
for example a subscription is refreshed. There are other drafts
that reduce the size of messages as partial notifies or filtering
but in this document we mostly care about the amount of messages &
bandwidth so the partial optimizations can help a bit in the
bandwidth but will not help in the number of messages.
2.2. Assumptions
In the document we have several assumptions regarding size of
messages, rate of presence change and more. It should be noted that
these assumptions are not directly based on rigorous statistics that
was done on actual SIP based messages but more from experience on
other types of presence based systems.
Even though the assumptions in this document are not based on
rigorous statistical data the target here is not to analyse specific
system but show that even with VERY moderate assumptions, the number
of messages, the network bandwidth, the required state management and
Houri, et al. Expires January 6, 2008 [Page 5]
Internet-Draft Presence Scaling Analysis July 2007
the load on the CPU is very high. Real life systems should have a
much bigger scalability requirements. 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 show that the frequency here is much bigger
and especially with the younger generation. In an environment where
a user may have several devices and other resources for presence
information as geographical location and calendar the frequency of
presence state changes will be much higher.
It is very hard to measure presence load since the behavior of users
is very different. Some users will have a very small number of
presentities in their watch list while others may have hundreds.
Some users will change their state a lot and have many sources of
presence information while others may have very small number of
changes during the day. In addition the "rush hour" calculation of
when the day starts and ends was not included yet in this document
yet (to be added). Rush hour differs between different enterprises
and is still different in the consumer presence systems. It is very
hard if not impossible to take into a static model all the possible
combinations.
Saying the above, there are still several things to be done to create
a more complete picture:
o Get rigorous statistical data that can be formally published from
real presence systems.
o Add to the model the possibility of having multiple sources of
presence data per presentity and change calculations accordingly
o Add "rush hour" calculations for the end and the beginning of the
day
The authors will especially appreciate any input in this area that
will help us to create a more real life model. We intend to try and
gather more data and improve the assumptions and the model in the
next revisions of this document.
2.3. Analysis
The basic SIMPLE subscription dialog involves the following message-
transfer:
o SUBSCRIBE/200
o Initial NOTIFY/200
o (j) NOTIFY/200 where 'j' is the number of presence changes seen by
the watcher
Houri, et al. Expires January 6, 2008 [Page 6]
Internet-Draft Presence Scaling Analysis July 2007
o (k) SUBSCRIBE/200 where 'k' is the number of subscription dialog
refresh periods
o SUBSCRIBE/200 with Expires = 0 to terminate the dialog
o NOTIFY/200 ending the dialog
An individual watcher will generate X number of SIMPLE subscription
dialogs corresponding to the number of presentities it chooses to
watch. The amount of traffic generated is significantly affected by
several factors:
o Number of watchers connected to the system
o Number of presentities connected to the system
o Frequency of changes to presence information
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.
2.3.1. Constants
The following are number of "constants" that we use in the
calculations. Some of the constants are used throughout the
calculation while other change between use cases
o (C01) Subscription lifetime (hours)- The assumed lifetime of a
subscription in hours. We assume 8 hours for all calculations.
o (C02) Presence state changes / hour - The average time that a
presentity changes his/hers status in one hour. We assumed 3
times per hour for most calculations. Note that for some users in
consumer messaging systems, the actual number of changes is likely
to be much higher.
o (C03) Subscription refresh interval / hour - The duration of the
SUBSCRIBE session after which it needs to be refreshed. We
assumed that the duration is one hour.
o (C04) Total federated presentities per watcher - The number of
presentities that the watcher is watching. The number here
changes in this document according to the type of the specific
deployment.
o (C05) Number of dialogs to maintain per watcher - The number of
the SUBSCRIBE dialogs that are maintained per watcher. if a dialog
optimization is not assumed this number is equal to A04, otherwise
it is 1.
o (C06) Total number of watchers in the federated presence domains.
The number here is the number of all watchers in all the federated
domains.
o (C07) SUBSCRIBE message size in bytes. We assume 450 bytes in all
calculations. The size is based on a typical SUBSCIRBE taken from
RFCs.
Houri, et al. Expires January 6, 2008 [Page 7]
Internet-Draft Presence Scaling Analysis July 2007
o (C08) 200 OK for SUBSCRIBE message size in bytes. We assume 370
bytes in all calculations. The size is based on a typical 200 OK
taken from RFCs.
o (C09) NOTIFY message size not including the presence document.
The size of this message for a single presentity is assumed to be
500 bytes for the NOTIFY message itself (based on sizes from
examples in RFCs).
o (C10) 200 OK for NOTIFY message size in bytes. We assume 370
bytes in all calculations. The size is based on a typical 200 OK
taken from RFCs.
o (C11) Size of an average presence document. The size is assumed
to be 3000 bytes based on sizes from examples in RFCs. Note that
assuming 3000 bytes for presence document is relatively modest if
we take into account multiple devices and location information.
When there will be multiple presentities in the same NOTIFY as in
the initial NOTIFY for a resource list [10] or there is less
information in the presence document due to partial notifications
these factors will be taken into account.
2.3.2. Initial Messages
The following are the calculations for the messages in the initial
phase of the establishment of the subscriptions. The calculations
contain both number of messages and the number of bytes.
o (I01) Number of initial SUBSCRIBE messages per watcher = C05.
o (I02) Number of initial 200 OK messages for SUBSCRIBE messages per
watcher = C05.
o (I03) Number of initial NOTIFY messages per watcher = C05.
o (I04) Number of initial 200 OK messages for NOTIFY messages per
watcher = C05.
o (I05) Total number and bytes of initial SUBSCRIBE messages for all
watchers = Number - I01*C06, Bytes - I01*C06*C07.
o (I06) Total number and bytes of initial 200 OK for SUBSCRIBE
messages for all watchers = Number - I01*C06, Bytes - I01*C06*C08.
o (I07) Total number and bytes of initial NOTIFY messages for all
watchers = Number - I01*C06, Bytes - (I03*C06*C09)+((C04/
C05)*C11). The calculation of the size is a bit complicates since
it takes into account the case where the optimization of resource
lists is used and there is a single NOTIFY with all the
presentities for the single subscription.
o (I08) Total number and bytes of initial 200 OK for NOTIFY messages
for all watchers = Number - I04*C06, Bytes - I04*C06*C10.
o (I09) Total number and bytes of initial messages per day = Number
- numbers in I05+I06+I07+I08, Size -sizes in I05+I06+I07+I08.
Houri, et al. Expires January 6, 2008 [Page 8]
Internet-Draft Presence Scaling Analysis July 2007
2.3.3. Steady State Messages
Here we describe the calculations for the steady state messages. In
steady state we mean the time between the initial subscription and
the tear down of the subscription. It contains the notifies due to
state change and the subscription refreshes.
o (S01) NOTIFY messages due to state change per watched presentity
per day (less 2 since the NOTIFY for initial and terminating state
is calculated in the initial and terminating calculations) =
(C02*C01-2).
o (S02) 200 (for NOTIFY due to state change) messages per watched
presentity per day (less 2 since the NOTIFY for initial and
terminating state is calculated in the initial and terminating
calculations) = (C02*C01-2).
o (S03) Total number and size of messages due to state change per
day = Number - (S01+S02)*C06*C04, Bytes - ((S01+
S02)*C06*C04)*(C09+C10+C11).
o (S04) Number of SUBSCRIBE messages for refreshes per watcher per
day = ((C01/C03)-1)*C05. One is subtracted since the termination
is calculated separately. for example if there are 8 hours in the
day and a refresh should occur every hour, there are 7 refreshes
during the day and not 8.
o (S05) Number of 200 OK messages for SUBSCRIBE messages for
refreshes per watcher per day = ((C01/C03)-1)*C05.
o (S06) Number of NOTIFY messages for refreshes per watcher per day
= ((C01/C03)-1)*C05.
o (S07) Number of 200 OK messages for NOTIFY messages for refreshes
per watcher per day = ((C01/C03)-1)*C05.
o (S08) Total number and size of messages due to SUBSCRIBE refreshes
per day = Number - (S04+S05+S06+S07)*C06*C04, Size - ((S04+S05+
S06+S07)*C06*C04)*(C07+C08+C09+C10+((C04/C05)*C11)). The
calculation of the size is a bit complicates since it takes into
account the case where the optimization of resource lists is used
and there is a single NOTIFY with all the presentities for the
single subscription. Note that a full state should be given in
SUBSCRIBE refreshes in resource lists. See section 4.5 in [10].
The fact that the full state needs to be returned in a NOTIFY
response to refresh makes the NOTIFY optimization more efficient
in conjunction with the dialog optimization.
o (S09) Total number and bytes of steady messages per day = Number -
numbers in S03+S08, Bytes - sizes in S03+S08.
2.3.4. Termination Messages
The following are the calculations for the messages in the
termination phase of the of the subscriptions. The calculations
contain both number of messages and the number of bytes.
Houri, et al. Expires January 6, 2008 [Page 9]
Internet-Draft Presence Scaling Analysis July 2007
o (T01) Number of terminating SUBSCRIBE messages per watcher = C05.
o (T02) Number of terminating 200 OK messages for SUBSCRIBE messages
per watcher = C05.
o (T03) Number of terminating NOTIFY messages per watcher = C05.
o (T04) Number of terminating 200 OK messages for NOTIFY messages
per watcher = C05.
o (T05) Total number and bytes of terminating SUBSCRIBE messages for
all watchers = Number - T01*C06, Bytes - T01*C06*C07.
o (T06) Total number and bytes of terminating 200 OK for SUBSCRIBE
messages for all watchers = Number - T01*C06, Bytes - T01*C06*C08.
o (T07) Total number and bytes of terminating NOTIFY messages for
all watchers = Number - T01*C06, Bytes - (T03*C06*(C09+C11). It
is assumed that there will be a single presence document in the
terminating NOTIFY.
o (T08) Total number and bytes of terminating 200 OK for NOTIFY
messages for all watchers = Number - T04*C06, Bytes - T04*C06*C10.
o (T09) Total number and bytes of terminating messages per day =
Number - numbers in T05+T06+T07+T08, Size -sizes in T05+T06+T07+
T08.
2.3.5. Bottom Line
The following are the calculations of the total number of messages
and bytes per day and per second that will be sent on the link
between the federating domains.
o (B01) Total number of message and bytes during the day = Number -
numbers in I09+S09+T09, Bytes - sizes in I09+S09+T09.
o (B02) Total number of message and bytes per second = Number -
number in B01/(C01*3600) Bytes - size in B01/(C01*3600).
2.3.6. Rush Hour Calculations
The way that the calculations are built it is relatively easy to see
the affect 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 numbers of users that log in at the
same hour should give good indication for the rush hour load.
2.4. SIMPLE with no optimizations
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 SIMPLE protocols without any
proposed optimizations. In this example, there are two presence
Houri, et al. Expires January 6, 2008 [Page 10]
Internet-Draft Presence Scaling Analysis July 2007
domains with total of 40,000 federating users with an average of 4
contacts in the peer domain
** 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................3,000
** 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....................560,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....................750,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.................27,244,800,000
(S04) Number of SUBSCRIBE msgs for refreshes
per watcher per day................................28
(S05) Number of 200 OK msgs for SUBSCRIBE msgs for refreshes
Houri, et al. Expires January 6, 2008 [Page 11]
Internet-Draft Presence Scaling Analysis July 2007
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.........21,011,200,000
(S09) Total number & bytes of steady messages per day
Number of msgs for all watchers............11,520,000
Bytes for all watchers.................48,256,000,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....................560,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....................750,400,000
** Bottom Line
(B01) Total number of message & bytes during the day
Number of msgs.............................12,800,000
Bytes..................................49,756,800,000
(B02) Total number of message & bytes per second
Number of msgs....................................444
Bytes.......................................1,727,667
Figure 1: SIMPLE with no optimizations
2.5. SIMPLE with dialog optimization
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
Houri, et al. Expires January 6, 2008 [Page 12]
Internet-Draft Presence Scaling Analysis July 2007
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................3,000
** 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....................500,000,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....................547,600,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.................27,244,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
Houri, et al. Expires January 6, 2008 [Page 13]
Internet-Draft Presence Scaling Analysis July 2007
(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.........15,332,800,000
(S09) Total number & bytes of steady messages per day
Number of msgs for all watchers.............8,160,000
Bytes for all watchers.................42,577,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................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....................140,000,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....................187,600,000
** Bottom Line
(B01) Total number of message & bytes during the day
Number of msgs..............................8,480,000
Bytes..................................43,312,800,000
(B02) Total number of message & bytes per second
Number of msgs....................................294
Bytes.......................................1,503,917
Figure 2: SIMPLE with Dialog optimizations
2.6. SIMPLE with NOTIFY optimization
The initial analysis of analysis provided in Figure 1 is repeated
here with the assumption that the notify 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
Houri, et al. Expires January 6, 2008 [Page 14]
Internet-Draft Presence Scaling Analysis July 2007
assumed here that there will be no NOTIFY message for a SUBSCRIBE
refreshes. As should be expected this optimization affects the
steady state and does not affect the initial and termination
messages.
** 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................3,000
** 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....................560,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....................750,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.................27,244,800,000
(S04) Number of SUBSCRIBE msgs for refreshes
Houri, et al. Expires January 6, 2008 [Page 15]
Internet-Draft Presence Scaling Analysis July 2007
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..........1,836,800,000
(S09) Total number & bytes of steady messages per day
Number of msgs for all watchers.............9,280,000
Bytes for all watchers.................29,081,600,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....................560,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....................750,400,000
** Bottom Line
(B01) Total number of message & bytes during the day
Number of msgs.............................10,560,000
Bytes..................................30,582,400,000
(B02) Total number of message & bytes per second
Number of msgs....................................367
Bytes.......................................1,061,889
Figure 3: SIMPLE with NOTIFY optimizations
Houri, et al. Expires January 6, 2008 [Page 16]
Internet-Draft Presence Scaling Analysis July 2007
2.7. SIMPLE with Dialog & NOTIFY optimizations
Here both optimizations are combined. In all the other 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................3,000
** 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....................500,000,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....................547,600,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.................27,244,800,000
Houri, et al. Expires January 6, 2008 [Page 17]
Internet-Draft Presence Scaling Analysis July 2007
(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............459,200,000
(S09) Total number & bytes of steady messages per day
Number of msgs for all watchers.............7,600,000
Bytes for all watchers.................27,704,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.....................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....................140,000,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....................187,600,000
** Bottom Line
(B01) Total number of message & bytes during the day
Number of msgs..............................7,920,000
Bytes..................................28,439,200,000
(B02) Total number of message & bytes per second
Number of msgs....................................275
Bytes.........................................987,472
Figure 4: SIMPLE with Dialog & NOTIFY optimizations
Houri, et al. Expires January 6, 2008 [Page 18]
Internet-Draft Presence Scaling Analysis July 2007
2.8. Presence Federations
While these scalability issues exist in any large deployment, certain
characteristics make the deployment conducive to the existing
resource- list optimizations, and others have characteristics that
cannot be exploited with the existing SIMPLE model. Following is a
list of federation relationships 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.
2.8.1. Widely distributed inter-domain presence
In some environments presence federation may be very 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:
o Federated subscriptions are the majority of subscription traffic
o Individual users are likely to subscribe to multiple users in any
one domain
o The intersection of users in the deployment watching the same
presentities is quite small (i.e., probability that watchers in
the domain subscribe to the same presentity is low)
To account for the extraordinarily high percentage of federation
traffic, the number of federated presentities is increased to 20.
The number of watchers in the domain could also be adjusted to
account 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 optimization. Note
that the number of messages per second decreases by a quarter with
the optimizations but it is still quite big. It is interesting to
see that the bandwidth is almost the quarter of the bandwidth when
optimizations are applied.
** Constants
(C01) Subscription lifetime (hours)...........................8
(C02) Presence state changes / hour...........................3
(C03) Subscription refresh interval / hour....................1
Houri, et al. Expires January 6, 2008 [Page 19]
Internet-Draft Presence Scaling Analysis July 2007
(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................3,000
** 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..................2,800,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..................3,752,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................136,224,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
Houri, et al. Expires January 6, 2008 [Page 20]
Internet-Draft Presence Scaling Analysis July 2007
Bytes for all watchers per day........105,056,000,000
(S09) Total number & bytes of steady messages per day
Number of msgs for all watchers............57,600,000
Bytes for all watchers................241,280,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..................2,800,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..................3,752,000,000
** Bottom Line
(B01) Total number of message & bytes during the day
Number of msgs.............................65,000,000
Bytes.................................248,784,000,000
(B02) Total number of message & bytes per second
Number of msgs..................................2,222
Bytes.......................................8,638,333
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
Houri, et al. Expires January 6, 2008 [Page 21]
Internet-Draft Presence Scaling Analysis July 2007
(C11) Size of an average presence document................3,000
** 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..................2,420,000,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..................2,467,600,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................136,224,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.......560,000
Bytes for all watchers per day............459,200,000
(S09) Total number & bytes of steady messages per day
Number of msgs for all watchers............35,760,000
Bytes for all watchers................136,683,200,000
** Termination Messages
(T01) Terminating SUBSCRIBE msgs per watcher..................1
Houri, et al. Expires January 6, 2008 [Page 22]
Internet-Draft Presence Scaling Analysis July 2007
(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....................140,000,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....................187,600,000
** Bottom Line
(B01) Total number of message & bytes during the day
Number of msgs.............................36,080,000
Bytes.................................139,338,400,000
(B02) Total number of message & bytes per second
Number of msgs..................................1,253
Bytes.......................................4,838,139
Figure 6: Widely distributed inter-domain with optimizations
2.8.2. Associated inter-domain presence
In this type of environment, the domain is a collection of associated
users such as an enterprise. Here, federation is once again very
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 will be watchers of the same
presentity. This can occur because of business relationships (e.g.
two co-workers on a project federating with a partner company).
Common characteristics of this deployment are:
o Federated subscriptions are large minority or small majority of
subscription traffic
o Individual users are likely to subscribe to multiple users in any
one domain, especially their own
o The intersection of users in the deployment watching the same
presentities increases
Houri, et al. Expires January 6, 2008 [Page 23]
Internet-Draft Presence Scaling Analysis July 2007
This federation type has traffic rates similar to the previous
examples but with different levels of association of the users.
2.8.3. Very large network peering
In this environment, two or more very large networks create a peering
relationship allowing their users to subscribe to presence in the
other domains. Where as 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 IM networks.
Common characteristics of this deployment are:
o As users become accustomed to network boundaries disappearing,
federated subscriptions become as common as subscriptions within
the same domain
o Individual users are highly likely to want to see presence of
multiple presentities in the peer network
o The intersection of users in the deployment watching the same
presentities is very high (i.e., two or more users in network A
are extremely likely to be watching a same user in network B)
o Status changes increase greatly due to typical observed consumer
behavior
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 very high. Note also that
the bandwidth required is very high (almost 1GB per second).
** 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................3,000
** 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
Houri, et al. Expires January 6, 2008 [Page 24]
Internet-Draft Presence Scaling Analysis July 2007
(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................700,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................938,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.............71,208,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.....26,264,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.............97,472,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
Houri, et al. Expires January 6, 2008 [Page 25]
Internet-Draft Presence Scaling Analysis July 2007
(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................700,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................938,002,000,000
** Bottom Line
(B01) Total number of message & bytes during the day
Number of msgs.........................25,600,000,000
Bytes..............................99,348,000,000,000
(B02) Total number of message & bytes per second
Number of msgs................................888,889
Bytes...................................3,449,583,333
Figure 7: Very 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................3,000
** 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
Houri, et al. Expires January 6, 2008 [Page 26]
Internet-Draft Presence Scaling Analysis July 2007
(I07) Total number & bytes of initial NOTIFY msgs
Number of msgs for all watchers............20,000,000
Bytes for all watchers................610,000,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................663,800,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.............71,208,000,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........229,600,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.............71,437,600,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.....................1
(T04) Terminating 200 OK msgs (NOTIFY) per watcher............1
(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............20,000,000
Bytes for all watchers.................70,000,000,000
(T08) Total number & bytes of terminating 200 OK (NOTIFY) msgs
Houri, et al. Expires January 6, 2008 [Page 27]
Internet-Draft Presence Scaling Analysis July 2007
Number of msgs for all watchers............20,000,000
Bytes for all watchers..................7,400,000,000
(T09) Total number & bytes of terminating messages per day
Number of msgs for all watchers............80,000,000
Bytes for all watchers.................93,800,000,000
** Bottom Line
(B01) Total number of message & bytes during the day
Number of msgs.........................18,840,000,000
Bytes..............................72,165,200,000,000
(B02) Total number of message & bytes per second
Number of msgs................................654,167
Bytes...................................2,505,736,111
Figure 8: Very large network peering with optimizations
2.8.4. Intra-domain peering
Within a particular domain, multiple presence infrastructures are
deployed with users split between the two. 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 with
multiple independent vendor presence solutions deployed(e.g., a
presence solution for desktop messaging deployed alongside a presence
solution for IP telephony).
Common characteristics of this deployment are
o The difference between subscriptions to presentities in one system
vs. the other are completely arbitrary. Any one presentity is as
likely to be homed on one infrastructure as the other
o Active users are almost guaranteed of subscribing to many users in
the peer infrastructure
o The level of intersection of presentities is extremely high
The first table below provides the calculations without optimizations
the second table provides the calculations with optimization. Even
though the relatively conservative numbers are used, the amount of
messages is still very high even though optimization may cut the
traffic by more then 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
Houri, et al. Expires January 6, 2008 [Page 28]
Internet-Draft Presence Scaling Analysis July 2007
(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................3,000
** 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..................4,200,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..................5,628,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................204,336,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........157,584,000,000
(S09) Total number & bytes of steady messages per day
Houri, et al. Expires January 6, 2008 [Page 29]
Internet-Draft Presence Scaling Analysis July 2007
Number of msgs for all watchers............86,400,000
Bytes for all watchers................361,920,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..................4,200,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..................5,628,000,000
** Bottom Line
(B01) Total number of message & bytes during the day
Number of msgs.............................96,000,000
Bytes.................................373,176,000,000
(B02) Total number of message & bytes per second
Number of msgs..................................3,333
Bytes......................................12,957,500
Figure 9: Inter-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................3,000
Houri, et al. Expires January 6, 2008 [Page 30]
Internet-Draft Presence Scaling Analysis July 2007
** 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..................3,660,000,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..................3,802,800,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................204,336,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.....1,680,000
Bytes for all watchers per day..........1,377,600,000
(S09) Total number & bytes of steady messages per day
Number of msgs for all watchers............54,480,000
Bytes for all watchers................205,713,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
Houri, et al. Expires January 6, 2008 [Page 31]
Internet-Draft Presence Scaling Analysis July 2007
(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...............120,000
Bytes for all watchers....................420,000,000
(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...............480,000
Bytes for all watchers....................562.800,000
** Bottom Line
(B01) Total number of message & bytes during the day
Number of msgs.............................55,440,000
Bytes.................................210,079,200,000
(B02) Total number of message & bytes per second
Number of msgs..................................1,925
Bytes.......................................7,294,417
Figure 10: Inter-domain peering with optimizations
2.9. Partial Notifications Optimization
Draft [11] define a way for the watcher to request getting only what
was changed in the presence document. The following is a calculation
of the bandwidth that is saved in the very large peering network
case, when we add the partial notification optimization to the dialog
and NOTIFY optimization. It is assumed that except for the initial
NOTIFY all the other NOTIFY messages will be partial and the size of
the partial presence document is 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...............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
Houri, et al. Expires January 6, 2008 [Page 32]
Internet-Draft Presence Scaling Analysis July 2007
(C11) Size of an average presence document................3,000
(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.............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................610,000,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................663,800,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.............19,688,000,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........229,600,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.............19,917,600,000,000
** Termination Messages
Houri, et al. Expires January 6, 2008 [Page 33]
Internet-Draft Presence Scaling Analysis July 2007
(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............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............20,000,000
Bytes for all watchers.................70,000,000,000
(T08) Total number & bytes of terminating 200 OK (NOTIFY) msgs
Number of msgs for all watchers............20,000,000
Bytes for all watchers..................7,400,000,000
(T09) Total number & bytes of terminating messages per day
Number of msgs for all watchers............80,000,000
Bytes for all watchers.................93,800,000,000
** Bottom Line
(B01) Total number of message & bytes during the day
Number of msgs.........................18,840,000,000
Bytes..............................20,589,200,000,000
(B02) Total number of message & bytes per second
Number of msgs................................654,167
Bytes.....................................714,902,778
Figure 11: Very large networks peering with dialog, NOTIFY and
partial optimizations
Compared to the numbers we got for optimized very large peering
networks (72,165,200,000,000 bytes per day, it seems that the partial
notify can save a lot in the bandwidth.
2.10. Other Protocols
In SIP there are several differences from other protocols of presence
as XMPP [6] and the proprietary protocols of the consumer domains.
The differences are:
o There is no 200 OK for each message. These protocols support only
TCP and they do not compensate for network issues.
o There is no refresh for subscription.
o There is no NOTIFY upon termination of SUBSCRIPTION
o The size of each message of these protocol is smaller since they
are either binary and/or there is no need for the various headers
that SIP uses for routing etc. So we need to assume smaller
Houri, et al. Expires January 6, 2008 [Page 34]
Internet-Draft Presence Scaling Analysis July 2007
message sizes while we will keep the size of the presence document
the same.
The following is an analysis of the very large networks peering
assuming all the changes in other protocols with respect to SIP.
** 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................3,000
** 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....................630,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.................660,00,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.............28,980,000,000,000
Houri, et al. Expires January 6, 2008 [Page 35]
Internet-Draft Presence Scaling Analysis July 2007
(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,480,000
Bytes for all watchers.............28,980,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 number of message & bytes during the day
Number of msgs..........................9,800,000,000
Bytes..............................29,670,000,000,000
(B02) Total number of message & bytes per second
Number of msgs................................340,278
Bytes...................................1,030,208,333
Figure 12: Very large networks peering in other protocols
Compared to the numbers we got for optimized very large peering
networks (18,840,000,000 messages per day and 72,165,200,000,000
Houri, et al. Expires January 6, 2008 [Page 36]
Internet-Draft Presence Scaling Analysis July 2007
bytes per day, the numbers with other protocols are only about half
and there are many other optimizations that can be done in the SIP
protocol.
3. State Management
In previous sections we have discussed the big amount of messages
that need to be sent to/from a presence server In this section the
state that needs to be maintained by a presence server will be
analysed and shown to be far from trivial.
The presence server has two parallel tasks.
1. Maintain the state of the presentities to which watchers
subscribe.
2. Maintain the state of the subscriptions of watchers and provide
timely updates to the watchers.
For a single subscription from a single watcher on a presentity, the
presence server has to maintain the following state:
o Subscription state including all the parameters that are needed in
order to maintain the subscription as timers.
o Optional filtering information that was requested by the watcher.
This includes enough information that is needed for doing the
filtering. In addition additional information has to be
maintained if partial notification is being supported for the
subscription
o Optional rate management information as throttling
o Watcher information [4], [5] that is the result of the
subscription in order to enable watched presentities to see who is
watching them.
For each presentity that has been subscribed to in the presence
server, the presence server has to maintain the following state:
o A list of the subscriptions for the presentity. Note that this is
already taken care of from the size calculation point of view by
the subscription state above.
o Authorization information for the presentity.
For each presentity for which there was any publication and the
presentity has a state other then a default value, the presence
server has to maintain the current value of the presentity.
Houri, et al. Expires January 6, 2008 [Page 37]
Internet-Draft Presence Scaling Analysis July 2007
3.1. State Size Calculations
Lets assume the following sizes:
o Subscription size - 2K bytes. This includes watcher information
that need to be created by the presence server for each
subscription.
o Subscribed to resource - 1K bytes (for privacy information and
other management info). The subscriptions themselves are already
calculated in the previous bullet.
o Resource with a state - 6K bytes. This is a moderate assumption
if we take into account the amount of data that is being put in a
presence document as multiple devices, calendar and geographical
information.
3.1.1. Tiny System
o 10K subscriptions = 19M bytes.
o 5K subscribed to presentities = 5M bytes.
o 10K presentities with state = 58M bytes.
Total is 82M bytes.
3.1.2. Medium System
o 100K subscriptions = 195M bytes.
o 50K subscribed to presentities = 49M bytes.
o 100K presentities with state = 586M bytes.
Total is 830M bytes.
3.1.3. Large System
o 6M subscriptions = 11,718M bytes.
o 3M subscribed to presentities = 2,929M bytes.
o 4M presentities with state = 23437M bytes.
Total is 38G bytes.
3.1.4. Very Large System
o 150M subscriptions = 292,969M bytes.
o 75M subscribed to presentities = 73,242M bytes.
o 100M presentities with state = 585,937M bytes.
Total is 952G bytes which is a very big number for a very dynamic
storage as needed by the presence server.
Houri, et al. Expires January 6, 2008 [Page 38]
Internet-Draft Presence Scaling Analysis July 2007
Although the numbers above may seem moderate enough for the sizes
that the presence server is handling we should consider the
following:
o Dynamic state - Although the state may seem not so big for
databases even for the very large system, we need to remember that
this state is a very dynamic state. Subscriptions come and go all
the time, the status of presentities is being updated and so
forth. This means that the presence server has to manage its
state in a medium that is very dynamic and for such large sizes
this task is not trivial.
o Interlinked state - The subscriptions and the subscribed to
presentities are dependent on each other. There needs to be a
link from the presentity to the subscriptions and vice versa. See
Section 4.5 about the interlinkage that is created due to resource
lists.
o Moderate assumptions - The size assumptions that were made above
are quite moderate. As presence is becoming more a core
middleware functionality that holds a lot of data on the user. In
real-life the numbers above may be even higher and the presence
server can have additional overhead as managing the SIP sessions,
networking and more.
Although the calculations above do not show that there is a real
issue with state management of presence in medium systems or even in
big systems since it should be possible to divide the state between
different machines, the state size is still very big. A bigger issue
with the state is more when resource lists are involved and create an
interlinked state between many servers. In that case the division of
very big state to multiple servers becomes less trivial...
4. Processing complexities
The basic presence paradigm consists from a watcher and a presentity
to which the watcher watches. It sounds simple enough but there are
many additions and extensions that the presence server has to manage
that make the processing of the presence server very complex.
In this section we show that in addition to the large amount of
messages and the big state that the presence server has to handle, it
has also to handle quite intensive processing for aggregation,
partial notify and publish, filtering and privacy. This adds another
complexity to the presence server in the CPU front in addition to the
network and memory fronts that were described before.
Houri, et al. Expires January 6, 2008 [Page 39]
Internet-Draft Presence Scaling Analysis July 2007
4.1. Aggregation
A presence document may contain multiple resources. These resources
can be devices of the presentity, information that is received form
external providers of presence information for the presentity as
geographical and calendar information and more.
The presence server needs to be able to get the updates from all the
resources and aggregate them correctly into a single presence
document. Although this is just "XML processing" task, the amount of
updates that the presence server may get, 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
4.2. Partial Publish and Notify
Drafts [11], [12] define a way for the watcher to request getting
only 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 in reducing 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 is arriving to the presence server, the
presence server has to be able to process the partial publish, change
only what is indicated in the partial publish while keeping the
presence document in a well formed shape according to the schema.
In partial notify 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 [11] 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 notify.
4.3. Filtering
Filtering as defined in RFCs [8], [9] enables a watcher to request to
be notified only when the presence document fulfills certain
conditions. Although this is a very convenient feature for watchers,
the burden that is put on the presence server is quite big. For each
change in the presence document, the presence server needs to compute
the filtering expressions which can be very complex, decide whether
and what to send to the watcher that have requested filtering.
Houri, et al. Expires January 6, 2008 [Page 40]
Internet-Draft Presence Scaling Analysis July 2007
4.4. Authorization
Draft [13] defines presence authorization rules that can be used by
presentities to define who can see what from their presence
documents. The processing that the presence server has to do here is
very similar to filtering. When there is a change to any presence
document that has privacy defined for it, the presence server needs
to create different notification for different watchers according to
what is defined in the authorization rules.
4.5. Resource List Service
RFC [10] defines a way to subscribe on a single URI while that URI is
actually a list of resources that are being subscribed to by a single
subscription. Although this is quite useful mechanism and it
significantly saves on 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 make the scalability issue of
presence systems harder and more complex.
The reasons that resource lists may make the scalability problem of
the presence server even more complex are:
o Subscriptions and state - The resource list may contain reference
to many other presence servers in many other domains. This
requires the RLS to create subscriptions to other presence servers
and buffer the state of all presentities in order to be able to
provide the full state of the presentities in the list when
needed. So in the overall system, the subscriptions that were
saved between the watcher and the presence server are moved to the
backend system while state has been duplicated between the various
presence servers that serve the various presentities and the RLSs.
This issue could have been mitigated if there was a way for the
RLS to retrieve the presence information for many watchers while
adhering to privacy when sending the actual notifications to the
watchers.
o Interlinkage - The resource list subscription will reach one RLS
that will open it and send it to many presence servers and to
other RLSs (if there is a subgroup inside the list). This way a
complex linkage between the state of many components is created.
This linkage makes state management and other maintenance of a
presence systems quite complex.
o Big lists are easy - There are two types of groups that may be
used with this feature, private groups that are defined by/for
each watcher and public groups that are defined in the system and
can be used by any watcher. Although we should expect IT
administrators to take caution when creating public groups, this
may be not the case in real life. The connection between the size
Houri, et al. Expires January 6, 2008 [Page 41]
Internet-Draft Presence Scaling Analysis July 2007
of the public group and the load on the presence server system may
not apparent to everyone. Furthermore many public groups that are
used in presence systems may have been created for other purposes
as email systems (where the size of the lists was not so
important) and are taken as they are to presence systems. So for
example we may very easily find that a public group that actually
covers all the users in the enterprise are used by many users in
the enterprise thus creating unbearable load on the presence
server. Note that this issue is not a protocol or design issue
but more a usage issue that may have a real impact on the presence
system.
o Stopping notifications - A watcher may accidentally subscribe to a
very big list and be overwhelmed by the amount of notifies that it
receives from the presence server. There is no current way to
stop this stream of notifies and even canceling the subscription
may take time until being affective.
The issues mentioned above are one example of an optimization that
helps in one part of the system but creates even bigger problems in
the overall system. There is a need to think about the problems
listed above but more then that there is a need to make sure that
when an optimization is introduced it does not create issues in other
places.
5. Current Optimizations
This section lists and discusses several optimizations that are
either already part of the SIP protocol or they have been suggested
in various drafts. Several other optimizations that have been
suggested but have not been discussed in the working group yet are
summarized in [18].
o Subnot-etags - Draft [16]. This draft suggests ways to suppress
the sending of unnecessary notifies when for example a
subscription is refreshed. This suggestion seems to be an
efficient optimization since it saves both the number of messages
sent and on the processing time of the presence server.
o Resource List Service - [10] enable creating a single subscription
session between the watcher and the presence server for
subscribing on a list of users. This saves the amount of sessions
that are created between watchers and presence servers. On the
other hand, this mechanism enables creating very large amount of
subscriptions in the presence server/RLS system thus enabling the
creation of a very large number of subscriptions between presence
servers and RLSs with relatively few clients especially if large
public groups are used. It seems that in order to really optimize
in this area, the usage of large public groups should not be
Houri, et al. Expires January 6, 2008 [Page 42]
Internet-Draft Presence Scaling Analysis July 2007
considered as BCP and there should be a way for an RLS to create a
single subscription for multiple occurrences of the same resource
in resource lists. See consolidates subscriptions below.
o Partial notify/publish - Drafts [11], [12] define a way for the
subscriber to request getting only 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 in reducing the
amount of actual data that is sent from/to the presence server,
these optimizations create additional processing burden on the
presence server as was discussed above.
o Filtering as defined in RFCs [8], [9] enables a watcher to request
to be notified only when the presence document fulfills certain
conditions. Although this optimization enables saving on the
amount of messages that are sent from the presence server to the
watcher, this optimization puts more burden on the processing time
of the presence server as was discussed above.
o Throttling [19] defines a mechanism in which a watcher requires to
be updated only in certain intervals. Although this mechanism may
give some extra load on the processing time of the presence
server, that load is negligible and the reduction on the amount of
messages sent from the presence server to the watchers is
significant. This optimization is even more important with
resource lists where there can be many resources in the resource
lists and if the traffic of updates on resource list is not
regulated, the watcher may get very large amount of notifications.
o Presence specific sigcomp dictionary [14] defines a SIGCOMP [3]
dictionary for presence. This optimization will enable to reduce
the number of bytes that are transferred in presence systems by
compressing the textual SIP messages and using the specialized
presence dictionary the compression may be more significant then
just using SIGCOMP as is. Note that number of actual messages
will remain the same and a calculation of the amount of bytes that
will be saved may be useful here.
o Content Indirection [7] enables sending only the URI of the
presence document to the watcher thus offloading the presence
server from sending the presence document to the watcher. This
optimization may be useful in some cases especially where there is
a big number of users that get the same presence document.
6. Conclusions
The document analyses the scalability of presence systems and of the
SIP based 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.
Houri, et al. Expires January 6, 2008 [Page 43]
Internet-Draft Presence Scaling Analysis July 2007
As part of the analysis we have analysed 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 very
large number while assuming a protocol that has much less "overhead"
then SIP. Even in that protocol we got relatively high numbers.
It is very possible that the issues that are 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 big 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
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 not be very 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 very optimized for the
load and can assume some assumptions about the network (e.g. do not
use unreliable protocol as UDP but only TCP).
Another issue that is more concerning protocol design is whether
NOTIFY messages should not be considered as media as the audio, video
and even text messaging are considered? The SUBSCRIBE can be
extended to do similar three way handshake as INVITE and negotiate
where the notify messages should go, rate and other parameters. This
way the load can be offloaded to specialized NOTIFY "relays" thus not
loading the control path of SIP.
7. Security Considerations
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, a lot of
the possible optimizations that should emerge as a result of this
document will have security implications that will need to be solved.
Houri, et al. Expires January 6, 2008 [Page 44]
Internet-Draft Presence Scaling Analysis July 2007
8. Changes from Previous Versions
8.1. Changes in version 01
o Clarifications and corrections of the computation model and the
computations.
o Added several more computations to show the influence of different
optimizations.
o The requirements were moved to [17]
o The new suggestions for optimizations were moved to [18]
9. Acknowledgments
We would like to thank Jonathan Rosenberg, Ben Campbell, Markus
Isomaki Piotr Boni, David Viamonte and Aki Niemi for ideas and input.
10. References
10.1. Normative References
[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", BCP 14, RFC 2119, March 1997.
10.2. Informational References
[2] Roach, A., "Session Initiation Protocol (SIP)-Specific Event
Notification", RFC 3265, June 2002.
[3] Price, R., Bormann, C., Christoffersson, J., Hannu, H., Liu,
Z., and J. Rosenberg, "Signaling Compression (SigComp)",
RFC 3320, January 2003.
[4] Rosenberg, J., "A Watcher Information Event Template-Package
for the Session Initiation Protocol (SIP)", RFC 3857,
August 2004.
[5] Rosenberg, J., "An Extensible Markup Language (XML) Based
Format for Watcher Information", RFC 3858, August 2004.
[6] Saint-Andre, P., "End-to-End Signing and Object Encryption for
the Extensible Messaging and Presence Protocol (XMPP)",
RFC 3923, October 2004.
[7] Burger, E., "A Mechanism for Content Indirection in Session
Initiation Protocol (SIP) Messages", RFC 4483, May 2006.
Houri, et al. Expires January 6, 2008 [Page 45]
Internet-Draft Presence Scaling Analysis July 2007
[8] Khartabil, H., Leppanen, E., Lonnfors, M., and J. Costa-
Requena, "Functional Description of Event Notification
Filtering", RFC 4660, September 2006.
[9] 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.
[10] Roach, A., Campbell, B., and J. Rosenberg, "A Session
Initiation Protocol (SIP) Event Notification Extension for
Resource Lists", RFC 4662, August 2006.
[11] Lonnfors, M., "Session Initiation Protocol (SIP) extension for
Partial Notification of Presence Information",
draft-ietf-simple-partial-notify-09 (work in progress),
February 2007.
[12] Lonnfors, M., "Publication of Partial Presence Information",
draft-ietf-simple-partial-publish-06 (work in progress),
February 2007.
[13] Rosenberg, J., "Presence Authorization Rules",
draft-ietf-simple-presence-rules-09 (work in progress),
March 2007.
[14] Garcia-Martin, M., "The Presence-Specific Static Dictionary for
Signaling Compression (Sigcomp)",
draft-garcia-simple-presence-dictionary-05 (work in progress),
May 2007.
[15] Camarillo, G., "Subscriptions to Request-Contained Resource
Lists in the Session Initiation Protocol (SIP)",
draft-ietf-sipping-uri-list-subscribe-05 (work in progress),
May 2006.
[16] Niemi, A., "An Extension to Session Initiation Protocol (SIP)
Events for Conditional Event Notification",
draft-ietf-sip-subnot-etags-00 (work in progress), May 2007.
[17] Houri, A., "Scaling Requirements for Presence in SIP/SIMPLE",
draft-houri-sipping-presence-scaling-requirements-00 (work in
progress), July 2007.
[18] Houri, A., "Scaling Optimizations for Presence in SIP/SIMPLE",
draft-houri-simple-interdomain-scaling-optimizations-00 (work
in progress), July 2007.
[19] Niemi, A., "Session Initiation Protocol (SIP) Event
Houri, et al. Expires January 6, 2008 [Page 46]
Internet-Draft Presence Scaling Analysis July 2007
Notification Extension for Notification Throttling",
draft-niemi-sipping-event-throttle-05 (work in progress),
March 2007.
Authors' Addresses
Avshalom Houri
IBM
Science Park Building 18/D
Rehovot,
Israel
Email: avshalom@il.ibm.com
Tim Rang
Microsoft Corporation
One Microsoft Way
Redmond, WA 98052
USA
Email: timrang@microsoft.com
Edwin Aoki
AOL LLC
360 W. Caribbean Drive
Sunnyvale, CA 94089
USA
Email: aoki@aol.net
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
Houri, et al. Expires January 6, 2008 [Page 47]
Internet-Draft Presence Scaling Analysis July 2007
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
Houri, et al. Expires January 6, 2008 [Page 48]
Internet-Draft Presence Scaling Analysis July 2007
Full Copyright Statement
Copyright (C) The IETF Trust (2007).
This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
ietf-ipr@ietf.org.
Acknowledgment
Funding for the RFC Editor function is provided by the IETF
Administrative Support Activity (IASA).
Houri, et al. Expires January 6, 2008 [Page 49]