1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461
|
<pre>Internet Engineering Task Force (IETF) R. Mahy
Request for Comments: 5850 Unaffiliated
Category: Informational R. Sparks
ISSN: 2070-1721 Tekelec
J. Rosenberg
jdrosen.net
D. Petrie
SIPez
A. Johnston, Ed.
Avaya
May 2010
<span class="h1">A Call Control and Multi-Party Usage Framework for</span>
<span class="h1">the Session Initiation Protocol (SIP)</span>
Abstract
This document defines a framework and the requirements for call
control and multi-party usage of the Session Initiation Protocol
(SIP). To enable discussion of multi-party features and
applications, we define an abstract call model for describing the
media relationships required by many of these. The model and actions
described here are specifically chosen to be independent of the SIP
signaling and/or mixing approach chosen to actually set up the media
relationships. In addition to its dialog manipulation aspect, this
framework includes requirements for communicating related information
and events such as conference and session state and session history.
This framework also describes other goals that embody the spirit of
SIP applications as used on the Internet such as the definition of
primitives (not services), invoker and participant oriented
primitives, signaling and mixing model independence, and others.
Status of This Memo
This document is not an Internet Standards Track specification; it is
published for informational purposes.
This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by the
Internet Engineering Steering Group (IESG). Not all documents
approved by the IESG are a candidate for any level of Internet
Standard; see <a href="./rfc5741#section-2">Section 2 of RFC 5741</a>.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
<a href="http://www.rfc-editor.org/info/rfc5850">http://www.rfc-editor.org/info/rfc5850</a>.
<span class="grey">Mahy, et al. Informational [Page 1]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-2" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
Copyright Notice
Copyright (c) 2010 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to <a href="https://www.rfc-editor.org/bcp/bcp78">BCP 78</a> and the IETF Trust's Legal
Provisions Relating to IETF Documents
(<a href="http://trustee.ietf.org/license-info">http://trustee.ietf.org/license-info</a>) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
This document may contain material from IETF Documents or IETF
Contributions published or made publicly available before November
10, 2008. The person(s) controlling the copyright in some of this
material may not have granted the IETF Trust the right to allow
modifications of such material outside the IETF Standards Process.
Without obtaining an adequate license from the person(s) controlling
the copyright in such materials, this document may not be modified
outside the IETF Standards Process, and derivative works of it may
not be created outside the IETF Standards Process, except to format
it for publication as an RFC or to translate it into languages other
than English.
Table of Contents
<a href="#section-1">1</a>. Motivation and Background . . . . . . . . . . . . . . . . . . <a href="#page-4">4</a>
<a href="#section-2">2</a>. Key Concepts . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-6">6</a>
<a href="#section-2.1">2.1</a>. Conversation Space Model . . . . . . . . . . . . . . . . . <a href="#page-7">7</a>
2.2. Relationship between Conversation Space, SIP Dialogs,
and SIP Sessions . . . . . . . . . . . . . . . . . . . . . <a href="#page-8">8</a>
<a href="#section-2.3">2.3</a>. Signaling Models . . . . . . . . . . . . . . . . . . . . . <a href="#page-9">9</a>
<a href="#section-2.4">2.4</a>. Mixing Models . . . . . . . . . . . . . . . . . . . . . . <a href="#page-10">10</a>
<a href="#section-2.4.1">2.4.1</a>. Tightly Coupled . . . . . . . . . . . . . . . . . . . <a href="#page-11">11</a>
<a href="#section-2.4.2">2.4.2</a>. Loosely Coupled . . . . . . . . . . . . . . . . . . . <a href="#page-12">12</a>
<a href="#section-2.5">2.5</a>. Conveying Information and Events . . . . . . . . . . . . . <a href="#page-13">13</a>
<a href="#section-2.6">2.6</a>. Componentization and Decomposition . . . . . . . . . . . . <a href="#page-15">15</a>
<a href="#section-2.6.1">2.6.1</a>. Media Intermediaries . . . . . . . . . . . . . . . . . <a href="#page-15">15</a>
<a href="#section-2.6.2">2.6.2</a>. Text-to-Speech and Automatic Speech Recognition . . . <a href="#page-17">17</a>
<a href="#section-2.6.3">2.6.3</a>. VoiceXML . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-17">17</a>
<a href="#section-2.7">2.7</a>. Use of URIs . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-18">18</a>
<a href="#section-2.7.1">2.7.1</a>. Naming Users in SIP . . . . . . . . . . . . . . . . . <a href="#page-19">19</a>
<a href="#section-2.7.2">2.7.2</a>. Naming Services with SIP URIs . . . . . . . . . . . . <a href="#page-20">20</a>
<a href="#section-2.8">2.8</a>. Invoker Independence . . . . . . . . . . . . . . . . . . . <a href="#page-22">22</a>
<a href="#section-2.9">2.9</a>. Billing Issues . . . . . . . . . . . . . . . . . . . . . . <a href="#page-23">23</a>
<span class="grey">Mahy, et al. Informational [Page 2]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-3" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
<a href="#section-3">3</a>. Catalog of Call Control Actions and Sample Features . . . . . <a href="#page-23">23</a>
<a href="#section-3.1">3.1</a>. Remote Call Control Actions on Early Dialogs . . . . . . . <a href="#page-24">24</a>
<a href="#section-3.1.1">3.1.1</a>. Remote Answer . . . . . . . . . . . . . . . . . . . . <a href="#page-24">24</a>
<a href="#section-3.1.2">3.1.2</a>. Remote Forward or Put . . . . . . . . . . . . . . . . <a href="#page-24">24</a>
<a href="#section-3.1.3">3.1.3</a>. Remote Busy or Error Out . . . . . . . . . . . . . . . <a href="#page-24">24</a>
<a href="#section-3.2">3.2</a>. Remote Call Control Actions on Single Dialogs . . . . . . <a href="#page-24">24</a>
<a href="#section-3.2.1">3.2.1</a>. Remote Dial . . . . . . . . . . . . . . . . . . . . . <a href="#page-24">24</a>
<a href="#section-3.2.2">3.2.2</a>. Remote On and Off Hold . . . . . . . . . . . . . . . . <a href="#page-25">25</a>
<a href="#section-3.2.3">3.2.3</a>. Remote Hangup . . . . . . . . . . . . . . . . . . . . <a href="#page-25">25</a>
<a href="#section-3.3">3.3</a>. Call Control Actions on Multiple Dialogs . . . . . . . . . <a href="#page-25">25</a>
<a href="#section-3.3.1">3.3.1</a>. Transfer . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-25">25</a>
<a href="#section-3.3.2">3.3.2</a>. Take . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-26">26</a>
<a href="#section-3.3.3">3.3.3</a>. Add . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-27">27</a>
<a href="#section-3.3.4">3.3.4</a>. Local Join . . . . . . . . . . . . . . . . . . . . . . <a href="#page-28">28</a>
<a href="#section-3.3.5">3.3.5</a>. Insert . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-28">28</a>
<a href="#section-3.3.6">3.3.6</a>. Split . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-29">29</a>
<a href="#section-3.3.7">3.3.7</a>. Near-Fork . . . . . . . . . . . . . . . . . . . . . . <a href="#page-29">29</a>
<a href="#section-3.3.8">3.3.8</a>. Far-Fork . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-29">29</a>
<a href="#section-4">4</a>. Security Considerations . . . . . . . . . . . . . . . . . . . <a href="#page-30">30</a>
<a href="#appendix-A">Appendix A</a>. Example Features . . . . . . . . . . . . . . . . . <a href="#page-32">32</a>
<a href="#appendix-A.1">Appendix A.1</a>. Attended Transfer . . . . . . . . . . . . . . . . . <a href="#page-32">32</a>
<a href="#appendix-A.2">Appendix A.2</a>. Auto Answer . . . . . . . . . . . . . . . . . . . . <a href="#page-32">32</a>
<a href="#appendix-A.3">Appendix A.3</a>. Automatic Callback . . . . . . . . . . . . . . . . <a href="#page-32">32</a>
<a href="#appendix-A.4">Appendix A.4</a>. Barge-In . . . . . . . . . . . . . . . . . . . . . <a href="#page-32">32</a>
<a href="#appendix-A.5">Appendix A.5</a>. Blind Transfer . . . . . . . . . . . . . . . . . . <a href="#page-32">32</a>
<a href="#appendix-A.6">Appendix A.6</a>. Call Forwarding . . . . . . . . . . . . . . . . . . <a href="#page-33">33</a>
<a href="#appendix-A.7">Appendix A.7</a>. Call Monitoring . . . . . . . . . . . . . . . . . . <a href="#page-33">33</a>
<a href="#appendix-A.8">Appendix A.8</a>. Call Park . . . . . . . . . . . . . . . . . . . . . <a href="#page-33">33</a>
<a href="#appendix-A.9">Appendix A.9</a>. Call Pickup . . . . . . . . . . . . . . . . . . . . <a href="#page-33">33</a>
<a href="#appendix-A.10">Appendix A.10</a>. Call Return . . . . . . . . . . . . . . . . . . . . <a href="#page-34">34</a>
<a href="#appendix-A.11">Appendix A.11</a>. Call Waiting . . . . . . . . . . . . . . . . . . . <a href="#page-34">34</a>
<a href="#appendix-A.12">Appendix A.12</a>. Click-to-Dial . . . . . . . . . . . . . . . . . . . <a href="#page-34">34</a>
<a href="#appendix-A.13">Appendix A.13</a>. Conference Call . . . . . . . . . . . . . . . . . . <a href="#page-34">34</a>
<a href="#appendix-A.14">Appendix A.14</a>. Consultative Transfer . . . . . . . . . . . . . . . <a href="#page-34">34</a>
<a href="#appendix-A.15">Appendix A.15</a>. Distinctive Ring . . . . . . . . . . . . . . . . . <a href="#page-35">35</a>
<a href="#appendix-A.16">Appendix A.16</a>. Do Not Disturb . . . . . . . . . . . . . . . . . . <a href="#page-35">35</a>
<a href="#appendix-A.17">Appendix A.17</a>. Find-Me . . . . . . . . . . . . . . . . . . . . . . <a href="#page-35">35</a>
<a href="#appendix-A.18">Appendix A.18</a>. Hotline . . . . . . . . . . . . . . . . . . . . . . <a href="#page-35">35</a>
<a href="#appendix-A.19">Appendix A.19</a>. IM Conference Alerts . . . . . . . . . . . . . . . <a href="#page-35">35</a>
<a href="#appendix-A.20">Appendix A.20</a>. Inbound Call Screening . . . . . . . . . . . . . . <a href="#page-35">35</a>
<a href="#appendix-A.21">Appendix A.21</a>. Intercom . . . . . . . . . . . . . . . . . . . . . <a href="#page-36">36</a>
<a href="#appendix-A.22">Appendix A.22</a>. Message Waiting . . . . . . . . . . . . . . . . . . <a href="#page-36">36</a>
<a href="#appendix-A.23">Appendix A.23</a>. Music on Hold . . . . . . . . . . . . . . . . . . . <a href="#page-36">36</a>
<a href="#appendix-A.24">Appendix A.24</a>. Outbound Call Screening . . . . . . . . . . . . . . <a href="#page-36">36</a>
<a href="#appendix-A.25">Appendix A.25</a>. Pre-Paid Calling . . . . . . . . . . . . . . . . . <a href="#page-37">37</a>
<a href="#appendix-A.26">Appendix A.26</a>. Presence-Enabled Conferencing . . . . . . . . . . . <a href="#page-37">37</a>
<a href="#appendix-A.27">Appendix A.27</a>. Single Line Extension/Multiple Line Appearance . . <a href="#page-37">37</a>
<a href="#appendix-A.28">Appendix A.28</a>. Speakerphone Paging . . . . . . . . . . . . . . . . <a href="#page-38">38</a>
<span class="grey">Mahy, et al. Informational [Page 3]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-4" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
<a href="#appendix-A.29">Appendix A.29</a>. Speed Dial . . . . . . . . . . . . . . . . . . . . <a href="#page-38">38</a>
<a href="#appendix-A.30">Appendix A.30</a>. Voice Message Screening . . . . . . . . . . . . . . <a href="#page-38">38</a>
<a href="#appendix-A.31">Appendix A.31</a>. Voice Portal . . . . . . . . . . . . . . . . . . . <a href="#page-39">39</a>
<a href="#appendix-A.32">Appendix A.32</a>. Voicemail . . . . . . . . . . . . . . . . . . . . . <a href="#page-40">40</a>
<a href="#appendix-A.33">Appendix A.33</a>. Whispered Call Waiting . . . . . . . . . . . . . . <a href="#page-40">40</a>
<a href="#appendix-B">Appendix B</a>. Acknowledgments . . . . . . . . . . . . . . . . . . <a href="#page-40">40</a>
<a href="#section-5">5</a>. Informative References . . . . . . . . . . . . . . . . . . . . <a href="#page-40">40</a>
<span class="h2"><a class="selflink" id="section-1" href="#section-1">1</a>. Motivation and Background</span>
The Session Initiation Protocol (SIP) [<a href="./rfc3261" title=""SIP: Session Initiation Protocol"">RFC3261</a>] was defined for the
initiation, maintenance, and termination of sessions or calls between
one or more users. However, despite its origins as a large-scale
multi-party conferencing protocol, SIP is used today primarily for
point-to-point calls. This two-party configuration is the focus of
the SIP specification and most of its extensions.
This document defines a framework and the requirements for call
control and multi-party usage of SIP. Most multi-party operations
manipulate SIP dialogs (also known as call legs) or SIP conference
media policy to cause participants in a conversation to perceive
specific media relationships. In other protocols that deal with the
concept of calls, this manipulation is known as call control. In
addition to its dialog or policy manipulation aspect, call control
also includes communicating information and events related to
manipulating calls, including information and events dealing with
session state and history, conference state, user state, and even
message state.
Based on input from the SIP community, the authors compiled the
following set of goals for SIP call control and multi-party
applications:
o Define primitives, not services. Allow for a handful of robust
yet simple mechanisms that can be combined to deliver features and
services. Throughout this document, we refer to these simple
mechanisms as "primitives". Primitives should be sufficiently
robust so that when they are combined with each other, they can be
used to build lots of services. However, the goal is not to
define a provably complete set of primitives. Note that while the
IETF will NOT standardize behavior or services, it may define
example services for informational purposes, as in service
examples [<a href="./rfc5359" title=""Session Initiation Protocol Service Examples"">RFC5359</a>].
o Be participant oriented. The primitives should be designed to
provide services that are oriented around the experience of the
participants. The authors observe that end users of features and
services usually don't care how a media relationship is set up.
<span class="grey">Mahy, et al. Informational [Page 4]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-5" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
Their ultimate experience is only based on the resulting media and
other externally visible characteristics.
o Be signaling model independent. Support both a central-control
and a peer-to-peer feature invocation model (and combinations of
the two). Baseline SIP already supports a centralized control
model described in 3pcc (third party call control) [<a href="./rfc3725" title=""Best Current Practices for Third Party Call Control (3pcc) in the Session Initiation Protocol (SIP)"">RFC3725</a>], and
the SIP community has expressed a great deal of interest in peer-
to-peer or distributed call control using primitives such as those
defined in REFER [<a href="./rfc3515" title=""The Session Initiation Protocol (SIP) Refer Method"">RFC3515</a>], Replaces [<a href="./rfc3891" title=""The Session Initiation Protocol (SIP) "">RFC3891</a>], and Join
[<a href="./rfc3911" title=""The Session Initiation Protocol (SIP) "">RFC3911</a>].
o Be mixing model independent. The bulk of interesting multi-party
applications involve mixing or combining media from multiple
participants. This mixing can be performed by one or more of the
participants or by a centralized mixing resource. The experience
of the participants should not depend on the mixing model used.
While most examples in this document refer to audio mixing, the
framework applies to any media type. In this context, a "mixer"
refers to combining media of the same type in an appropriate,
media-specific way. This is consistent with the model described
in the SIP conferencing framework.
o Be invoker oriented. Only the user who invokes a feature or a
service needs to know exactly which service is invoked or why.
This is good because it allows new services to be created without
requiring new primitives from all of the participants; and it
allows for much simpler feature authorization policies, for
example, when participation spans organizational boundaries. As
discussed in <a href="#section-2.7">Section 2.7</a>, this also avoids exponential state
explosion when combining features. The invoker only has to manage
a user interface or application programming interface (API) to
prevent local feature interactions. All the other participants
simply need to manage the feature interactions of a much smaller
number of primitives.
o Primitives make full use of URIs (uniform resource identifiers).
URIs are a very powerful mechanism for describing users and
services. They represent a plentiful resource that can be
extremely expressive and easily routed, translated, and
manipulated -- even across organizational boundaries. URIs can
contain special parameters and informational header fields that
need only be relevant to the owner of the namespace (domain) of
the URI. Just as a user who selects an http: URL need not
understand the significance and organization of the web site it
references, a user may encounter a SIP URI that translates into an
email-style group alias, which plays a pre-recorded message or
runs some complex call-handling logic. Note that while this may
<span class="grey">Mahy, et al. Informational [Page 5]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-6" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
seem paradoxical to the previous goal, both goals can be satisfied
by the same model.
o Make use of SIP header fields and SIP event packages to provide
SIP entities with information about their environment. These
should include information about the status/handling of dialogs on
other user agents (UAs), information about the history of other
contacts attempted prior to the current contact, the status of
participants, the status of conferences, user presence
information, and the status of messages.
o Encourage service decomposition, and design to make use of
standard components using well-defined, simple interfaces. Sample
components include a SIP mixer, recording service, announcement
server, and voice-dialog server. (This is not an exhaustive
list).
o Include authentication, authorization, policy, logging, and
accounting mechanisms to allow these primitives to be used safely
among mutually untrusted participants. Some of these mechanisms
may be used to assist in billing, but no specific billing system
will be endorsed.
o Permit graceful fallback to baseline SIP. Definitions for new SIP
call control extensions/primitives must describe a graceful way to
fallback to baseline SIP behavior. Support for one primitive must
not imply support for another primitive.
o Don't reinvent traditional models, such as the model used for the
H.450 family of protocols, JTAPI (Java Telephony Application
Programming Interface), or the CSTA (Computer-supported
telecommunications applications) call model, as these other models
do not share the design goals presented in this document.
Note that the flexibility in this model does have some disadvantages
in terms of interoperability. It is possible to build a call control
feature in SIP using different combinations of primitives. For a
discussion of the issues associated with this, see [<a href="#ref-BLISS-PROBLEM" title=""Basic Level of Interoperability for Session Initiation Protocol (SIP) Services (BLISS) Problem Statement"">BLISS-PROBLEM</a>].
<span class="h2"><a class="selflink" id="section-2" href="#section-2">2</a>. Key Concepts</span>
This section introduces a number of key concepts that will be used to
describe and explain various call control operations and services in
the remainder of this document. This includes the conversation space
model, signaling and mixing models, common components, and the use of
URIs.
<span class="grey">Mahy, et al. Informational [Page 6]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-7" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
<span class="h3"><a class="selflink" id="section-2.1" href="#section-2.1">2.1</a>. Conversation Space Model</span>
This document introduces the concept of an abstract "conversation
space" as a set of participants who believe they are all
communicating among one another. Each conversation space contains
one or more participants.
Participants are SIP UAs that send original media to or terminate and
receive media from other members of the conversation space.
Logically, every participant in the conversation space has access to
all the media generated in that space (this is strictly true if all
participants share a common media type). A SIP UA that does not
contribute or consume any media is NOT a participant, nor is a UA
that merely forwards, transcodes, mixes, or selects media originating
elsewhere in the conversation space.
Note that a conversation space consists of zero or more SIP calls
or SIP conferences. A conversation space is similar to the
definition of a "call" in some other call models.
Participants may represent human users or non-human users (referred
to as robots or automatons in this document). Some participants may
be hidden within a conversation space. Some examples of hidden
participants include: robots that generate tones, images, or
announcements during a conference to announce users arriving and
departing, a human call center supervisor monitoring a conversation
between a trainee and a customer, and robots that record media for
training or archival purposes.
Participants may also be active or passive. Active participants are
expected to be intelligent enough to leave a conversation space when
they no longer desire to participate. (An attentive human
participant is obviously active.) Some robotic participants (such as
a voice-messaging system, an instant-messaging agent, or a voice-
dialog system) may be active participants if they can leave the
conversation space when there is no human interaction. Other robots
(for example, our tone-generating robot from the previous example)
are passive participants. A human participant "on hold" is passive.
An example diagram of a conversation space can be shown as a "bubble"
or ovals, or as a "set" in curly or square bracket notation. Each
set, oval, or bubble represents a conversation space. Hidden
participants are shown in lowercase letters. Examples are given in
Figure 1.
Note that while the term "conversation" usually applies to oral
exchange of information, we apply the conversation space model to any
media exchange between participants.
<span class="grey">Mahy, et al. Informational [Page 7]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-8" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
{ A , B } [ A , b, C, D ]
.-. .---.
/ \ / \
/ A \ / A b \
( ) ( )
\ B / \ C D /
\ / \ /
'-' '---'
Figure 1. Conversation Spaces
<span class="h3"><a class="selflink" id="section-2.2" href="#section-2.2">2.2</a>. Relationship between Conversation Space, SIP Dialogs, and SIP</span>
<span class="h3"> Sessions</span>
In [<a href="./rfc3261" title=""SIP: Session Initiation Protocol"">RFC3261</a>], a call is "an informal term that refers to some
communication between peers, generally set up for the purposes of a
multimedia conversation". The concept of a conversation space is
needed because the SIP definition of call is not sufficiently precise
for the purpose of describing the user experience of multi-party
features.
Do any other definitions convey the correct meaning? SIP and SDP
(Session Description Protocol) [<a href="./rfc4566" title=""SDP: Session Description Protocol"">RFC4566</a>] both define a conference as
"a multimedia session identified by a common session description". A
session is defined as "a set of multimedia senders and receivers and
the data streams flowing from senders to receivers". The definition
of "call" in some call models is more similar to our definition of a
conversation space.
Some examples of the relationship between conversation spaces, SIP
dialogs, and SIP sessions are listed below. In each example, a human
user will perceive that there is a single call.
o A simple two-party call is a single conversation space, a single
session, and a single dialog.
o A locally mixed three-way call is two sessions and two dialogs.
It is also a single conversation space.
o A simple dial-in audio conference is a single conversation space,
but is represented by as many dialogs and sessions as there are
human participants.
o A multicast conference is a single conversation space, a single
session, and as many dialogs as participants.
<span class="grey">Mahy, et al. Informational [Page 8]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-9" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
<span class="h3"><a class="selflink" id="section-2.3" href="#section-2.3">2.3</a>. Signaling Models</span>
Obviously, to make changes to a conversation space, you must be able
to use SIP signaling to cause these changes. Specifically, there
must be a way to manipulate SIP dialogs (call legs) to move
participants into and out of conversation spaces. Although this is
not as obvious, there also must be a way to manipulate SIP dialogs to
include non-participant UAs that are otherwise involved in a
conversation space (e.g., back-to-back user agents or B2BUAs, third
party call control (3pcc) controllers, mixers, transcoders,
translators, or relays).
Implementations may setup the media relationships described in the
conversation space model using a centralized control model. One
common way to implement this using SIP is known as third party call
control (3pcc) and is described in 3pcc [<a href="./rfc3725" title=""Best Current Practices for Third Party Call Control (3pcc) in the Session Initiation Protocol (SIP)"">RFC3725</a>]. The 3pcc approach
relies on only the following three primitive operations:
o Create a new dialog (INVITE)
o Modify a dialog (reINVITE)
o Destroy a dialog (BYE)
The main advantage of the 3pcc approach is that it only requires very
basic SIP support from end systems to support call control features.
As such, third party call control is a natural way to handle protocol
conversion and mid-call features. It also has the advantage and
disadvantage that new features can/must be implemented in one place
only (the controller), and it neither requires enhanced client
functionality nor takes advantage of it.
In addition, a peer-to-peer approach is discussed at length in this
document. The primary drawback of the peer-to-peer model is
additional complexity in the end system and authentication and
management models. The benefits of the peer-to-peer model include:
o state remains at the edges,
o call signaling need only go through participants involved (there
are no additional points of failure), and
o peers may take advantage of end-to-end message integrity or
encryption
<span class="grey">Mahy, et al. Informational [Page 9]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-10" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
The peer-to-peer approach relies on additional "primitive"
operations, some of which are identified here.
o Replace an existing dialog
o Join a new dialog with an existing dialog
o Locally perform media forking (multi-unicast)
o Ask another user agent (UA) to send a request on your behalf
The peer-to-peer approach also only results in a single SIP dialog,
directly between the two UAs. The 3pcc approach results in two SIP
dialogs, between each UA and the controller. As a result, the SIP
features and extensions that will be used during the dialog are
limited to the those understood by the controller. As a result, in a
situation where both the UAs support an advanced SIP feature but the
controller does not, the feature will not be able to be used.
Many of the features, primitives, and actions described in this
document also require some type of media mixing, combining, or
selection as described in the next section.
<span class="h3"><a class="selflink" id="section-2.4" href="#section-2.4">2.4</a>. Mixing Models</span>
SIP permits a variety of mixing models, which are discussed here
briefly. This topic is discussed more thoroughly in the SIP
conferencing framework [<a href="./rfc4353" title=""A Framework for Conferencing with the Session Initiation Protocol (SIP)"">RFC4353</a>] and [<a href="./rfc4579" title=""Session Initiation Protocol (SIP) Call Control - Conferencing for User Agents"">RFC4579</a>]. SIP supports both
tightly coupled and loosely coupled conferencing, although more
sophisticated behavior is available in tightly coupled conferences.
In a tightly coupled conference, a single SIP user agent (called the
focus) has a direct dialog relationship with each participant (and
may control non-participant user agents as well). The focus can
authoritatively publish information about the character and
participants in a conference. In a loosely coupled conference, there
are no coordinated signaling relationships among the participants.
For brevity, only the two most popular conferencing models are
significantly discussed in this document (local and centralized
mixing). Applications of the conversation spaces model to loosely
coupled multicast and distributed full unicast mesh conferences are
left as an exercise for the reader. Note that a distributed full
mesh conference can be used for basic conferences, but does not
easily allow for more complex conferencing actions like splitting,
merging, and sidebars.
<span class="grey">Mahy, et al. Informational [Page 10]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-11" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
Call control features should be designed to allow a mixer (local or
centralized) to decide when to reduce a conference back to a two-
party call, or drop all the participants (for example, if only two
automatons are communicating). The actual heuristics used to release
calls are beyond the scope of this document, but may depend on
properties in the conversation space, such as the number of active,
passive, or hidden participants and the send-only, receive-only, or
send-and-receive orientation of various participants.
<span class="h4"><a class="selflink" id="section-2.4.1" href="#section-2.4.1">2.4.1</a>. Tightly Coupled</span>
Tightly coupled conferences utilize a central point for signaling and
authentication known as a focus [<a href="./rfc4353" title=""A Framework for Conferencing with the Session Initiation Protocol (SIP)"">RFC4353</a>]. The actual media can be
centrally mixed or distributed.
<span class="h5"><a class="selflink" id="section-2.4.1.1" href="#section-2.4.1.1">2.4.1.1</a>. (Single) End System Mixing</span>
The first model we call "end system mixing". In this model, user A
calls user B, and they have a conversation. At some point later, A
decides to conference in user C. To do this, A calls C, using a
completely separate SIP call. This call uses a different Call-ID,
different tags, etc. There is no call set up directly between B and
C. No SIP extension or external signaling is needed. A merely
decides to locally join two dialogs.
B C
\ /
\ /
A
Figure 2. End System Mixing Example
In Figure 2, A receives media streams from both B and C, and mixes
them. A sends a stream containing A's and C's streams to B, and a
stream containing A's and B's streams to C. Basically, user A
handles both signaling and media mixing.
<span class="h5"><a class="selflink" id="section-2.4.1.2" href="#section-2.4.1.2">2.4.1.2</a>. Centralized Mixing</span>
In a centralized mixing model, all participants have a pairwise SIP
and media relationship with the mixer. Common applications of
centralized mixing include ad hoc conferences and scheduled dial-in
or dial-out conferences. In Figure 3 below, the mixer M receives and
sends media to participants A, B, C, D, and E.
<span class="grey">Mahy, et al. Informational [Page 11]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-12" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
B C
\ /
\ /
M --- A
/ \
/ \
D E
Figure 3. Centralized Mixing Example
<span class="h5"><a class="selflink" id="section-2.4.1.3" href="#section-2.4.1.3">2.4.1.3</a>. Centralized Signaling, Distributed Media</span>
In this conferencing model, there is a centralized controller, as in
the dial-in and dial-out cases. However, the centralized server
handles signaling only. The media is still sent directly between
participants, using either multicast or multi-unicast. Participants
perform their own mixing. Multi-unicast is when a user sends
multiple packets (one for each recipient, addressed to that
recipient). This is referred to as a "Decentralized Multipoint
Conference" in [H.323]. Full mesh media with centralized mixing is
another approach.
<span class="h4"><a class="selflink" id="section-2.4.2" href="#section-2.4.2">2.4.2</a>. Loosely Coupled</span>
In these models, there is no point of central control of SIP
signaling. As in the "Centralized Signaling, Distributed Media" case
above, all endpoints send media to all other endpoints.
Consequently, every endpoint mixes their own media from all the other
sources and sends their own media to every other participant.
<span class="h5"><a class="selflink" id="section-2.4.2.1" href="#section-2.4.2.1">2.4.2.1</a>. Large-Scale Multicast Conferences</span>
Large-scale multicast conferences were the original motivation for
both the Session Description Protocol (SDP) [<a href="./rfc4566" title=""SDP: Session Description Protocol"">RFC4566</a>] and SIP. In a
large-scale multicast conference, one or more multicast addresses are
allocated to the conference. Each participant joins those multicast
groups and sends their media to those groups. Signaling is not sent
to the multicast groups. The sole purpose of the signaling is to
inform participants of which multicast groups to join. Large-scale
multicast conferences are usually pre-arranged, with specific start
and stop times. However, multicast conferences do not need to be
pre-arranged, so long as a mechanism exists to dynamically obtain a
multicast address.
<span class="grey">Mahy, et al. Informational [Page 12]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-13" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
<span class="h5"><a class="selflink" id="section-2.4.2.2" href="#section-2.4.2.2">2.4.2.2</a>. Full Distributed Unicast Conferencing</span>
In this conferencing model, each participant has both a pairwise
media relationship and a pairwise signaling relationship with every
other participant (a full mesh). This model requires a mechanism to
maintain a consistent view of distributed state across the group.
This is a classic, hard problem in computer science. Also, this
model does not scale well for large numbers of participants. For <n>
participants, the number of media and signaling relationships is
approximately n-squared. As a result, this model is not generally
available in commercial implementations; to the contrary, it is
primarily the topic of research or experimental implementations.
Note that this model assumes peer-to-peer signaling.
<span class="h3"><a class="selflink" id="section-2.5" href="#section-2.5">2.5</a>. Conveying Information and Events</span>
Participants should have access to information about the other
participants in a conversation space so that this information can be
rendered to a human user or processed by an automaton. Although some
of this information may be available from the Request-URI or To,
From, Contact, or other SIP header fields, another mechanism of
reporting this information is necessary.
Many applications are driven by knowledge about the progress of calls
and conferences. In general, these types of events allow for the
construction of distributed applications, where the application
requires information on dialog and conference state, but is not
necessarily a co-resident with an endpoint user agent or conference
server. For example, a focus involved in a conversation space may
wish to provide URIs for conference status and/or conference/floor
control.
The SIP Events architecture [<a href="./rfc3265" title=""Session Initiation Protocol (SIP)- Specific Event Notification"">RFC3265</a>] defines general mechanisms for
subscription to and notification of events within SIP networks. It
introduces the notion of a package that is a specific "instantiation"
of the events mechanism for a well-defined set of events.
Event packages are needed to provide the status of a user's dialogs,
the status of conferences and their participants, user-presence
information, the status of registrations, and the status of a user's
messages. While this is not an exhaustive list, these are sufficient
to enable the sample features described in this document.
The conference event package [<a href="./rfc4575" title=""A Session Initiation Protocol (SIP) Event Package for Conference State"">RFC4575</a>] allows users to subscribe to
information about an entire tightly coupled SIP conference.
Notifications convey information about the participants such as the
SIP URI identifying each user, their status in the space (active,
declined, departed), URIs to invoke other features (such as sidebar
<span class="grey">Mahy, et al. Informational [Page 13]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-14" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
conversations), links to other relevant information (such as floor-
control policies), and if floor-control policies are in place, the
user's floor-control status. For conversation spaces created from
cascaded conferences, conversation state can be gathered from
relevant foci and merged into a cohesive set of state.
The dialog package [<a href="./rfc4235" title=""An INVITE-Initiated Dialog Event Package for the Session Initiation Protocol (SIP)"">RFC4235</a>] provides information about all the
dialogs the target user is maintaining, in which conversations the
user is participating, and how these are correlated. Likewise, the
registration package [<a href="./rfc3680" title=""A Session Initiation Protocol (SIP) Event Package for Registrations"">RFC3680</a>] provides notifications when contacts
have changed for a specific address-of-record (AOR). The combination
of these allows a user agent to learn about all conversations
occurring for the entire registered contact set for an address-of-
record.
Note that user presence in SIP [<a href="./rfc3856" title=""A Presence Event Package for the Session Initiation Protocol (SIP)"">RFC3856</a>] has a close relationship
with these latter two event packages. It is fundamental to the
presence model that the information used to obtain user presence is
constructed from any number of different input sources. Examples of
other such sources include calendaring information and uploads of
presence documents. These two packages can be considered another
mechanism that allows a presence agent to determine the presence
state of the user. Specifically, a user presence server can act as a
subscriber for the dialog and registration packages to obtain
additional information that can be used to construct a presence
document.
The multi-party architecture may also need to provide a mechanism to
get information about the status/handling of a dialog (for example,
information about the history of other contacts attempted prior to
the current contact). Finally, the architecture should provide ample
opportunities to present informational URIs that relate to calls,
conversations, or dialogs in some way. For example, consider the SIP
Call-Info header or Contact header fields returned in a 300-class
response. Frequently, additional information about a call or dialog
can be fetched via non-SIP URIs. For example, consider a web page
for package tracking when calling a delivery company or a web page
with related documentation when joining a dial-in conference. The
use of URIs in the multi-party framework is discussed in more detail
in <a href="#section-3.7">Section 3.7</a>.
Finally, the interaction of SIP with stimulus-signaling-based
applications, which allow a user agent to interact with an
application without knowledge of the semantics of that application,
is discussed in the SIP application interaction framework [<a href="./rfc5629" title=""A Framework for Application Interaction in the Session Initiation Protocol (SIP)"">RFC5629</a>].
Stimulus signaling can occur with a user interface running locally
with the client, or with a remote user interface, through media
streams. Stimulus signaling encompasses a wide range of mechanisms,
<span class="grey">Mahy, et al. Informational [Page 14]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-15" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
from clicking on hyperlinks, to pressing buttons, to traditional
Dual-Tone Multi Frequency (DTMF) input. In all cases, stimulus
signaling is supported through the use of markup languages, which
play a key role in that framework.
<span class="h3"><a class="selflink" id="section-2.6" href="#section-2.6">2.6</a>. Componentization and Decomposition</span>
This framework proposes a decomposed component architecture with a
very loose coupling of services and components. This means that a
service (such as a conferencing server or an auto-attendant) need not
be implemented as an actual server. Rather, these services can be
built by combining a few basic components in straightforward or
arbitrarily complex ways.
Since the components are easily deployed on separate boxes, by
separate vendors, or even with separate providers, we achieve a
separation of function that allows each piece to be developed in
complete isolation. We can also reuse existing components for new
applications. This allows rapid service creation, and the ability
for services to be distributed across organizational domains anywhere
in the Internet.
For many of these components, it is also desirable to discover their
capabilities, for example, querying the ability of a mixer to host a
10-dialog conference or to reserve resources for a specific time.
These actions could be provided in the form of URIs, provided there
is an a priori means of understanding their semantics. For example,
if there is a published dictionary of operations, a way to query the
service for the available operations and the associated URIs, the URI
can be the interface for providing these service operations. This
concept is described in more detail in the context of dialog
operations in <a href="#section-3">Section 3</a>.
<span class="h4"><a class="selflink" id="section-2.6.1" href="#section-2.6.1">2.6.1</a>. Media Intermediaries</span>
Media intermediaries are not participants in any conversation space,
although an entity that is also a media translator may also have a
co-located participant component (for example, a mixer that also
announces the arrival of a new participant; the announcement portion
is a participant, but the mixer itself is not). Media intermediaries
should be as transparent as possible to the end users -- offering a
useful, fundamental service without getting in the way of new
features implemented by participants. Some common media
intermediaries are described below.
<span class="grey">Mahy, et al. Informational [Page 15]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-16" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
<span class="h5"><a class="selflink" id="section-2.6.1.1" href="#section-2.6.1.1">2.6.1.1</a>. Mixer</span>
A SIP mixer is a component that combines media from all dialogs in
the same conversation in a media-specific way. For example, the
default combining for an audio conference might be an N-1
configuration, while a text mixer might interleave text messages on a
per-line basis. More details about how to manipulate the media
policy used by mixers is discussed in [<a href="#ref-XCON-CCMP" title=""Centralized Conferencing Manipulation Protocol"">XCON-CCMP</a>].
<span class="h5"><a class="selflink" id="section-2.6.1.2" href="#section-2.6.1.2">2.6.1.2</a>. Transcoder</span>
A transcoder translates media from one encoding or format to another
(for example, GSM (Global System for Mobile communications) voice to
G.711, MPEG2 to H.261, or text/html to text/plain), or from one media
type to another (for example, text to speech). A more thorough
discussion of transcoding is described in the SIP transcoding
services invocation [<a href="./rfc5369" title=""Framework for Transcoding with the Session Initiation Protocol (SIP)"">RFC5369</a>].
<span class="h5"><a class="selflink" id="section-2.6.1.3" href="#section-2.6.1.3">2.6.1.3</a>. Media Relay</span>
A media relay terminates media and simply forwards it to a new
destination without changing the content in any way. Sometimes,
media relays are used to provide source IP address anonymity, to
facilitate middlebox traversal, or to provide a trusted entity where
media can be forcefully disconnected.
<span class="h5"><a class="selflink" id="section-2.6.1.4" href="#section-2.6.1.4">2.6.1.4</a>. Queue Server</span>
A queue server is a location where calls can be entered into one of
several FIFO (first-in, first-out) queues. A queue server would
subscribe to the presence of groups or individuals who are interested
in its queues. When detecting that a user is available to service a
queue, the server redirects or transfers the last call in the
relevant queue to the available user. On a queue-by-queue basis,
authorized users could also subscribe to the call state (dialog
information) of calls within a queue. Authorized users could use
this information to effectively pluck (take) a call out of the queue
(for example, by sending an INVITE with a Replaces header to one of
the user agents in the queue).
<span class="h5"><a class="selflink" id="section-2.6.1.5" href="#section-2.6.1.5">2.6.1.5</a>. Parking Place</span>
A parking place is a location where calls can be terminated
temporarily and then retrieved later. While a call is "parked", it
can receive media "on hold" such as music, announcements, or
advertisements. Such a service could be further decomposed such that
announcements or music are handled by a separate component.
<span class="grey">Mahy, et al. Informational [Page 16]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-17" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
<span class="h5"><a class="selflink" id="section-2.6.1.6" href="#section-2.6.1.6">2.6.1.6</a>. Announcements and Voice Dialogs</span>
An announcement server is a server that can play digitized media
(frequently audio), such as music or recorded speech. These servers
are typically accessible via SIP, HTTP (Hyper Text Transport
Protocol), or RTSP (Real-Time Streaming Protocol). An analogous
service is a recording service that stores digitized media. A
convention for specifying announcements in SIP URIs is described in
[<a href="./rfc4240" title=""Basic Network Media Services with SIP"">RFC4240</a>]. Likewise, the same server could easily provide a service
that records digitized media.
A "voice dialog" is a model of spoken interactive behavior between a
human and an automaton that can include synthesized speech, digitized
audio, recognition of spoken and DTMF key input, a recording of
spoken input, and interaction with call control. Voice dialogs
frequently consist of forms or menus. Forms present information and
gather input; menus offer choices of what to do next.
Spoken dialogs are a basic building block of applications that use
voice. Consider, for example, that a voicemail system, the
conference-id and passcode collection system for a conferencing
system, and complicated voice-portal applications all require a
voice-dialog component.
<span class="h4"><a class="selflink" id="section-2.6.2" href="#section-2.6.2">2.6.2</a>. Text-to-Speech and Automatic Speech Recognition</span>
Text-to-speech (TTS) is a service that converts text into digitized
audio. TTS is frequently integrated into other applications, but
when separated as a component, it provides greater opportunity for
broad reuse. Automatic Speech Recognition (ASR) is a service that
attempts to decipher digitized speech based on a proposed grammar.
Like TTS, ASR services can be embedded, or exposed so that many
applications can take advantage of such services. A standardized
(decomposed) interface to access standalone TTS and ASR services is
currently being developed as described in [<a href="./rfc4313" title=""Requirements for Distributed Control of Automatic Speech Recognition (ASR), Speaker Identification/Speaker Verification (SI/SV), and Text-to-Speech (TTS) Resources"">RFC4313</a>].
<span class="h4"><a class="selflink" id="section-2.6.3" href="#section-2.6.3">2.6.3</a>. VoiceXML</span>
VoiceXML is a W3C (World Wide Web Consortium) recommendation that was
designed to give authors control over the spoken dialog between users
and applications. The application and user take turns speaking: the
application prompts the user, and the user in turn responds. Its
major goal is to bring the advantages of web-based development and
content delivery to interactive voice-response applications. We
believe that VoiceXML represents the ideal partner for SIP in the
development of distributed IVR (interactive voice response) servers.
VoiceXML is an XML-based scripting language for describing IVR
services at an abstract level. VoiceXML supports DTMF recognition,
<span class="grey">Mahy, et al. Informational [Page 17]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-18" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
speech recognition, text-to-speech, and the playing out of recorded
media files. The results of the data collected from the user are
passed to a controlling entity through an HTTP POST operation. The
controller can then return another script, or terminate the
interaction with the IVR server.
A VoiceXML server also need not be implemented as a monolithic
server. Figure 4 shows a diagram of a VoiceXML browser that is split
into media and non-media handling parts. The VoiceXML interpreter
handles SIP dialog state and state within a VoiceXML document, and
sends requests to the media component over another protocol.
+-------------+
| |
| VoiceXML |
| Interpreter |
| (signaling) |
+-------------+
^ ^
| |
SIP | | RTSP
| |
| |
v v
+-------------+ +-------------+
| | | |
| SIP UA | RTP | RTSP Server |
| |<------>| (media) |
| | | |
+-------------+ +-------------+
Figure 4. Decomposed VoiceXML Server
<span class="h3"><a class="selflink" id="section-2.7" href="#section-2.7">2.7</a>. Use of URIs</span>
All naming in SIP uses URIs. URIs in SIP are used in a plethora of
contexts: the Request-URI; Contact, To, From, and *-Info header
fields; application/uri bodies; and embedded in email, web pages,
instant messages, and ENUM records. The Request-URI identifies the
user or service for which the call is destined.
SIP URIs embedded in informational SIP header fields, SIP bodies, and
non-SIP content can also specify methods, special parameters, header
fields, and even bodies. For example:
sip:bob@b.example.com;method=REFER?Refer-To=http://example.com/~alice
<span class="grey">Mahy, et al. Informational [Page 18]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-19" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
Throughout this document, we discuss call control primitive
operations. One of the biggest problems is defining how these
operations may be invoked. There are a number of ways to do this.
One way is to define the primitives in the protocol itself such that
SIP methods (for example, REFER) or SIP header fields (for example,
Replaces) indicate a specific call control action. Another way to
invoke call control primitives is to define a specific Request-URI
naming convention. Either these conventions must be shared between
the client (the invoker) and the server, or published by or on behalf
of the server. The former involves defining URI construction
techniques (e.g., URI parameters and/or token conventions) as
proposed in [<a href="./rfc4240" title=""Basic Network Media Services with SIP"">RFC4240</a>]. The latter technique usually involves
discovering the URI via a SIP event package, a web page, a business
card, or an instant message. Yet, another means to acquire the URIs
is to define a dictionary of primitives with well-defined semantics
and provide a means to query the named primitives and corresponding
URIs that may be invoked on the service or dialogs.
<span class="h4"><a class="selflink" id="section-2.7.1" href="#section-2.7.1">2.7.1</a>. Naming Users in SIP</span>
An address-of-record, or public SIP address, is a SIP (or Secure SIP
(SIPS)) URI that points to a domain with a location service that can
map the URI to set of Contact URIs where the user might be available.
Typically, the Contact URIs are populated via registration.
Address-of-Record Contacts
sip:bob@biloxi.example.com -> sip:bob@babylon.biloxi.example.com:5060
sip:bbrown@mailbox.provider.example.net
sip:+1.408.555.6789@mobile.example.net
Callee Capabilities [<a href="./rfc3840" title=""Indicating User Agent Capabilities in the Session Initiation Protocol (SIP)"">RFC3840</a>] define a set of additional parameters
to the Contact header field that define the characteristics of the
user agent at the specified URI. For example, there is a mobility
parameter that indicates whether the UA is fixed or mobile. When a
user agent registers, it places these parameters in the Contact
header fields to characterize the URIs it is registering. This
allows a proxy for that domain to have information about the contact
addresses for that user.
When a caller sends a request, it can optionally request Caller
Preferences [<a href="./rfc3841" title=""Caller Preferences for the Session Initiation Protocol (SIP)"">RFC3841</a>] by including the Accept-Contact, Request-
Disposition, and Reject-Contact header fields that request certain
handling by the proxy in the target domain. These header fields
contain preferences that describe the set of desired URIs to which
the caller would like their request routed. The proxy in the target
domain matches these preferences with the Contact characteristics
originally registered by the target user. The target user can also
<span class="grey">Mahy, et al. Informational [Page 19]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-20" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
choose to run arbitrarily complex "Find-me" feature logic on a proxy
in the target domain.
There is a strong asymmetry in how preferences for callers and
callees can be presented to the network. While a caller takes an
active role by initiating the request, the callee takes a passive
role in waiting for requests. This motivates the use of callee-
supplied scripts and caller preferences included in the call request.
This asymmetry is also reflected in the appropriate relationship
between caller and callee preferences. A server for a callee should
respect the wishes of the caller to avoid certain locations, while
the preferences among locations has to be the callee's choice, as it
determines where, for example, the phone rings and whether the callee
incurs mobile telephone charges for incoming calls.
SIP User Agent implementations are encouraged to make intelligent
decisions based on the type of participants (active/passive, hidden,
human/robot) in a conversation space. This information is conveyed
via the dialog package or in a SIP header field parameter
communicated using an appropriate SIP header field. For example, a
music on hold service may take the sensible approach that if there
are two or more unhidden participants, it should not provide hold
music; or that it will not send hold music to robots.
Multiple participants in the same conversation space may represent
the same human user. For example, the user may use one participant
device for video, chat, and whiteboard media on a PC and another for
audio media on a SIP phone. In this case, the address-of-record is
the same for both user agents, but the Contacts are different. In
this case, there is really only one human participant. In addition,
human users may add robot participants that act on their behalf (for
example, a call recording service or a calendar announcement
reminder). Call control features in SIP should continue to function
as expected in such an environment.
<span class="h4"><a class="selflink" id="section-2.7.2" href="#section-2.7.2">2.7.2</a>. Naming Services with SIP URIs</span>
A critical piece of defining a session-level service that can be
accessed by SIP is defining the naming of the resources within that
service. This point cannot be overstated.
In the context of SIP control of application components, we take
advantage of the fact that the left-hand side of a standard SIP URI
is a user part. Most services may be thought of as user automatons
that participate in SIP sessions. It naturally follows that the user
part should be utilized as a service indicator.
<span class="grey">Mahy, et al. Informational [Page 20]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-21" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
For example, media servers commonly offer multiple services at a
single host address. Use of the user part as a service indicator
enables service consumers to direct their requests without ambiguity.
It has the added benefit of enabling media services to register their
availability with SIP Registrars just as any "real" SIP user would.
This maintains consistency and provides enhanced flexibility in the
deployment of media services in the network.
There has been much discussion about the potential for confusion if
media-service URIs are not readily distinguishable from other types
of SIP UAs. The use of a service namespace provides a mechanism to
unambiguously identify standard interfaces while not constraining the
development of private or experimental services.
In SIP, the Request-URI identifies the user or service for which the
call is destined. The great advantage of using URIs (specifically,
the SIP Request-URI) as a service identifier comes because of the
combination of two facts. First, unlike in the PSTN (Public Switched
Telephone Network), where the namespace (dialable telephone numbers)
is limited, URIs come from an infinite space. They are plentiful,
and they are free. Secondly, the primary function of SIP is call
routing through manipulations of the Request-URI. In the traditional
SIP application, this URI represents a person. However, the URI can
also represent a service, as we propose here. This means we can
apply the routing services SIP provides to the routing of calls to
services. The result -- the problem of service invocation and
service location becomes a routing problem, for which SIP provides a
scalable and flexible solution. Since there is such a vast namespace
of services, we can explicitly name each service in a finely granular
way. This allows the distribution of services across the network.
For further discussion about services and SIP URIs, see <a href="./rfc3087">RFC 3087</a>
[<a href="./rfc3087" title=""Control of Service Context using SIP Request-URI"">RFC3087</a>].
Consider a conferencing service, where we have separated the names of
ad hoc conferences from scheduled conferences, we can program proxies
to route calls for ad hoc conferences to one set of servers and calls
for scheduled ones to another, possibly even in a different provider.
In fact, since each conference itself is given a URI, we can
distribute conferences across servers, and easily guarantee that
calls for the same conference always get routed to the same server.
This is in stark contrast to conferences in the telephone network,
where the equivalent of the URI -- the phone number -- is scarce. An
entire conferencing provider generally has one or two numbers.
Conference IDs must be obtained through IVR interactions with the
caller or through a human attendant. This makes it difficult to
distribute conferences across servers all over the network, since the
PSTN routing only knows about the dialed number.
<span class="grey">Mahy, et al. Informational [Page 21]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-22" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
For more examples, consider the URI conventions of <a href="./rfc4240">RFC 4240</a> [<a href="./rfc4240" title=""Basic Network Media Services with SIP"">RFC4240</a>]
for media servers and <a href="./rfc4458">RFC 4458</a> [<a href="./rfc4458" title=""Session Initiation Protocol (SIP) URIs for Applications such as Voicemail and Interactive Voice Response (IVR)"">RFC4458</a>] for voicemail and IVR
systems.
In practical applications, it is important that an invoker does not
necessarily apply semantic rules to various URIs it did not create.
Instead, it should allow any arbitrary string to be provisioned, and
map the string to the desired behavior. The administrator of a
service may choose to provision specific conventions or mnemonic
strings, but the application should not require it. In any large
installation, the system owner is likely to have preexisting rules
for mnemonic URIs, and any attempt by an application to define its
own rules may create a conflict. Implementations should allow an
arbitrary mix of URIs from these schemes, or any other scheme that
renders valid SIP URIs, rather than enforce only one particular
scheme.
As we have shown, SIP URIs represent an ideal, flexible mechanism for
describing and naming service resources, regardless of whether the
resources are queues, conferences, voice dialogs, announcements,
voicemail treatments, or phone features.
<span class="h3"><a class="selflink" id="section-2.8" href="#section-2.8">2.8</a>. Invoker Independence</span>
With functional signaling, only the invoker of features in SIP needs
to know exactly which feature they are invoking. One of the primary
benefits of this approach is that combinations of functional features
work in SIP call control without requiring complex feature-
interaction matrices. For example, let us examine the combination of
a "transfer" of a call that is "conferenced".
Alice calls Bob. Alice silently "conferences in" her robotic
assistant Albert as a hidden party. Bob transfers Alice to Carol.
If Bob asks Alice to Replace her leg with a new one to Carol, then
both Alice and Albert should be communicating with Carol
(transparently).
Using the peer-to-peer model, this combination of features works fine
if A is doing local mixing (Alice replaces Bob's dialog with
Carol's), or if A is using a central mixer (the mixer replaces Bob's
dialog with Carol's). A clever implementation using the 3pcc model
can generate similar results.
New extensions to the SIP Call Control Framework should attempt to
preserve this property.
<span class="grey">Mahy, et al. Informational [Page 22]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-23" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
<span class="h3"><a class="selflink" id="section-2.9" href="#section-2.9">2.9</a>. Billing Issues</span>
Billing in the PSTN is typically based on who initiated a call. At
the moment, billing in a SIP network is neither consistent with
itself nor with the PSTN. (A billing model for SIP should allow for
both PSTN-style billing and non-PSTN billing.) The example below
demonstrates one such inconsistency.
Alice places a call to Bob. Alice then blind transfers Bob to Carol
through a PSTN gateway. In current usage of REFER, Bob may be billed
for a call he did not initiate (his UA originated the outgoing
dialog, however). This is not necessarily a terrible thing, but it
demonstrates a security concern (Bob must have appropriate local
policy to prevent fraud). Also, Alice may wish to pay for Bob's
session with Carol. There should be a way to signal this in SIP.
Likewise, a Replacement call may maintain the same billing
relationship as a Replaced call, so if Alice first calls Carol, then
asks Bob to Replace this call, Alice may continue to receive a bill.
Further work in SIP billing should define a way to set or discover
the direction of billing.
<span class="h2"><a class="selflink" id="section-3" href="#section-3">3</a>. Catalog of Call Control Actions and Sample Features</span>
Call control actions can be categorized by the dialogs upon which
they operate. The actions may involve a single or multiple dialogs.
These dialogs can be early or established. Multiple dialogs may be
related in a conversation space to form a conference or other
interesting media topologies.
It should be noted that it is desirable to provide a means by which a
party can discover the actions that may be performed on a dialog.
The interested party may be independent or related to the dialogs.
One means of accomplishing this is through the ability to define and
obtain URIs for these actions, as described in <a href="#section-2.7.2">Section 2.7.2</a>.
Below are listed several call control "actions" that establish or
modify dialogs and relate the participants in a conversation space.
The names of the actions listed are for descriptive purposes only
(they are not normative). This list of actions is not meant to be
exhaustive.
In the examples, all actions are initiated by the user "Alice"
represented by UA "A".
<span class="grey">Mahy, et al. Informational [Page 23]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-24" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
<span class="h3"><a class="selflink" id="section-3.1" href="#section-3.1">3.1</a>. Remote Call Control Actions on Early Dialogs</span>
The following are a set of actions that may be performed on a single
early dialog. These actions can be thought of as a set of remote
control operations. For example, an automaton might perform the
operation on behalf of a user. Alternatively, a user might use the
remote control in the form of an application to perform the action on
the early dialog of a UA that may be out of reach. All of these
actions correspond to telling the UA how to respond to a request to
establish an early dialog. These actions provide useful
functionality for PDA-, PC-, and server-based applications that
desire the ability to control a UA. A proposed mechanism for this
type of functionality is described in remote call control
[<a href="#ref-FEATURE-REF" title=""Feature Referral in the Session Initiation Protocol (SIP)"">FEATURE-REF</a>].
<span class="h4"><a class="selflink" id="section-3.1.1" href="#section-3.1.1">3.1.1</a>. Remote Answer</span>
A dialog is in some early dialog state such as 180 Ringing. It may
be desirable to tell the UA to answer the dialog. That is, tell it
to send a 200 OK response to establish the dialog.
<span class="h4"><a class="selflink" id="section-3.1.2" href="#section-3.1.2">3.1.2</a>. Remote Forward or Put</span>
It may be desirable to tell the UA to respond with a 3xx class
response to forward an early dialog to another UA.
<span class="h4"><a class="selflink" id="section-3.1.3" href="#section-3.1.3">3.1.3</a>. Remote Busy or Error Out</span>
It may be desirable to instruct the UA to send an error response such
as 486 Busy Here.
<span class="h3"><a class="selflink" id="section-3.2" href="#section-3.2">3.2</a>. Remote Call Control Actions on Single Dialogs</span>
There is another useful set of actions that operate on a single
established dialog. These operations are useful in building
productivity applications for aiding users in controlling their
phones. For example, a Customer Relationship Management (CRM)
application that sets up calls for a user eliminating the need for
the user to actually enter an address. These operations can also be
thought of as remote control actions. A proposed mechanism for this
type of functionality is described in remote call control
[<a href="#ref-FEATURE-REF" title=""Feature Referral in the Session Initiation Protocol (SIP)"">FEATURE-REF</a>].
<span class="h4"><a class="selflink" id="section-3.2.1" href="#section-3.2.1">3.2.1</a>. Remote Dial</span>
This action instructs the UA to initiate a dialog. This action can
be performed using the REFER method.
<span class="grey">Mahy, et al. Informational [Page 24]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-25" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
<span class="h4"><a class="selflink" id="section-3.2.2" href="#section-3.2.2">3.2.2</a>. Remote On and Off Hold</span>
This action instructs the UA to put an established dialog on hold.
Though this operation can conceptually be performed with the REFER
method, there are no semantics defined as to what the referred party
should do with the SDP. There is no way to distinguish between the
desire to go on or off hold on a per-media stream basis.
<span class="h4"><a class="selflink" id="section-3.2.3" href="#section-3.2.3">3.2.3</a>. Remote Hangup</span>
This action instructs the UA to terminate an early or established
dialog. A REFER request with the following Refer-To URI and Target-
Dialog header field [<a href="./rfc4538" title=""Request Authorization through Dialog Identification in the Session Initiation Protocol (SIP)"">RFC4538</a>] performs this action. Note: this
example does not show the full set of header fields.
REFER sip:carol@client.chicago.net SIP/2.0
Refer-To: sip:bob@babylon.biloxi.example.com;method=BYE
Target-Dialog: 13413098;local-tag=879738;remote-tag=023214
<span class="h3"><a class="selflink" id="section-3.3" href="#section-3.3">3.3</a>. Call Control Actions on Multiple Dialogs</span>
These actions apply to a set of related dialogs.
<span class="h4"><a class="selflink" id="section-3.3.1" href="#section-3.3.1">3.3.1</a>. Transfer</span>
This section describes how call transfer can be achieved using
centralized (3pcc) and peer-to-peer (REFER) approaches.
The conversation space changes as follows:
before after
{ A , B } --> { C , B }
A replaces itself with C.
To make this happen using the peer-to-peer approach, "A" would send
two SIP requests. A shorthand for those requests is shown below:
REFER B Refer-To:C
BYE B
To make this happen using the 3pcc approach instead, the controller
sends requests represented by the shorthand below:
INVITE C (w/SDP of B)
reINVITE B (w/SDP of C)
BYE A
<span class="grey">Mahy, et al. Informational [Page 25]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-26" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
Features enabled by this action:
- blind transfer
- transfer to a central mixer (some type of conference or forking)
- transfer to park server (park)
- transfer to music on hold or announcement server
- transfer to a "queue"
- transfer to a service (such as voice-dialog service)
- transition from local mixer to central mixer
This action is frequently referred to as "completing an attended
transfer". It is described in more detail in [<a href="./rfc5589" title=""Session Initiation Protocol (SIP) Call Control - Transfer"">RFC5589</a>].
Note that if a transfer requires URI hiding or privacy, then the 3pcc
approach can more easily implement this. For example, if the URI of
C needs to be hidden from B, then the use of 3pcc helps accomplish
this.
<span class="h4"><a class="selflink" id="section-3.3.2" href="#section-3.3.2">3.3.2</a>. Take</span>
The conversation space changes as follows:
{ B , C } --> { B , A }
A forcibly replaces C with itself. In most uses of this primitive, A
is just "un-replacing" itself.
Using the peer-to-peer approach, "A" sends:
INVITE B Replaces: <dialog between B and C>
Using the 3pcc approach (all requests sent from controller):
INVITE A (w/SDP of B)
reINVITE B (w/SDP of A)
BYE C
Features enabled by this action:
- transferee completes an attended transfer
- retrieve from central mixer (not recommended)
- retrieve from music on hold or park
- retrieve from queue
- call center take
- voice portal resuming ownership of a call it originated
- answering-machine style screening (pickup)
- pickup of a ringing call (i.e., early dialog)
<span class="grey">Mahy, et al. Informational [Page 26]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-27" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
Note that pick up of a ringing call has perhaps some interesting
additional requirements. First of all, it is an early dialog as
opposed to an established dialog. Secondly, the party that is to
pick up the call may only wish to do so only while it is an early
dialog. That is in the race condition where the ringing UA accepts
just before it receives signaling from the party wishing to take the
call, the taking party wishes to yield or cancel the take. The goal
is to avoid yanking an answered call from the called party.
This action is described in Replaces [<a href="./rfc3891" title=""The Session Initiation Protocol (SIP) "">RFC3891</a>] and in [<a href="./rfc5589" title=""Session Initiation Protocol (SIP) Call Control - Transfer"">RFC5589</a>].
<span class="h4"><a class="selflink" id="section-3.3.3" href="#section-3.3.3">3.3.3</a>. Add</span>
Note that the following four actions are described in [<a href="./rfc4579" title=""Session Initiation Protocol (SIP) Call Control - Conferencing for User Agents"">RFC4579</a>].
This is merely adding a participant to a SIP conference. The
conversation space changes as follows:
{ A , B } --> { A , B , C }
A adds C to the conversation.
Using the peer-to-peer approach, adding a party using local mixing
requires no signaling. To transition from a two-party call or a
locally mixed conference to central mixing, A could send the
following requests:
REFER B Refer-To: conference-URI
INVITE conference-URI
BYE B
To add a party to a conference:
REFER C Refer-To: conference-URI
or
REFER conference-URI Refer-To: C
Using the 3pcc approach to transition to centrally mixed, the
controller would send:
INVITE mixer leg 1 (w/SDP of A)
INVITE mixer leg 2 (w/SDP of B)
INVITE C (late SDP)
reINVITE A (w/SDP of mixer leg 1)
reINVITE B (w/SDP of mixer leg 2)
INVITE mixer leg3 (w/SDP of C)
<span class="grey">Mahy, et al. Informational [Page 27]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-28" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
To add a party to a SIP conference:
INVITE C (late SDP)
INVITE conference-URI (w/SDP of C)
Features enabled:
- standard conference feature
- call recording
- answering-machine style screening (screening)
<span class="h4"><a class="selflink" id="section-3.3.4" href="#section-3.3.4">3.3.4</a>. Local Join</span>
The conversation space changes like this:
{ A , B } , { A , C } --> { A , B , C }
or like this
{ A , B } , { C , D } --> { A , B , C , D }
A takes two conversation spaces and joins them together into a single
space.
Using the peer-to-peer approach, A can mix locally, or REFER the
participants of both conversation spaces to the same central mixer
(as in <a href="#section-3.3.5">Section 3.3.5</a>).
For the 3pcc approach, the call flows for inserting participants, and
joining and splitting conversation spaces are tedious yet
straightforward, so these are left as an exercise for the reader.
Features enabled:
- standard conference feature
- leaving a sidebar to rejoin a larger conference
<span class="h4"><a class="selflink" id="section-3.3.5" href="#section-3.3.5">3.3.5</a>. Insert</span>
The conversation space changes like this:
{ B , C } --> { A , B , C }
A inserts itself into a conversation space.
A proposed mechanism for signaling this using the peer-to-peer
approach is to send a new header field in an INVITE with "joining"
[<a href="./rfc3911" title=""The Session Initiation Protocol (SIP) "">RFC3911</a>] semantics. For example:
<span class="grey">Mahy, et al. Informational [Page 28]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-29" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
INVITE B Join: <dialog id of B and C>
If B accepted the INVITE, B would accept responsibility to set up the
dialogs and mixing necessary (for example, to mix locally or to
transfer the participants to a central mixer).
Features enabled:
- barge-in
- call center monitoring
- call recording
<span class="h4"><a class="selflink" id="section-3.3.6" href="#section-3.3.6">3.3.6</a>. Split</span>
{ A , B , C , D } --> { A , B } , { C , D }
If using a central conference with peer-to-peer
REFER C Refer-To: conference-URI (new URI)
REFER D Refer-To: conference-URI (new URI)
BYE C
BYE D
Features enabled:
- sidebar conversations during a larger conference
<span class="h4"><a class="selflink" id="section-3.3.7" href="#section-3.3.7">3.3.7</a>. Near-Fork</span>
A participates in two conversation spaces simultaneously:
{ A, B } --> { B , A } & { A , C }
A is a participant in two conversation spaces such that A sends the
same media to both spaces, and renders media from both spaces,
presumably by mixing or rendering the media from both. We can define
that A is the "anchor" point for both forks, each of which is a
separate conversation space.
This action is purely local implementation (it requires no special
signaling). Local features such as switching calls between the
background and foreground are possible using this media relationship.
<span class="h4"><a class="selflink" id="section-3.3.8" href="#section-3.3.8">3.3.8</a>. Far-Fork</span>
The conversation space diagram.
{ A, B } --> { A , B } & { B , C }
<span class="grey">Mahy, et al. Informational [Page 29]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-30" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
A requests B to be the "anchor" of two conversation spaces.
This is easily set up by creating a conference with two sub-
conferences and setting the media policy appropriately such that B is
a participant in both. Media forking can also be set up using 3pcc,
as described in <a href="./rfc3264#section-5.1">Section 5.1 of RFC 3264</a> [<a href="./rfc3264" title=""An Offer/Answer Model with Session Description Protocol (SDP)"">RFC3264</a>] (an offer/answer
model for SDP). The session descriptions for forking are quite
complex. Controllers should verify that endpoints can handle forked
media, for example, using prior configuration.
Features enabled:
- barge-in
- voice-portal services
- whisper
- key word detection
- sending DTMF somewhere else
<span class="h2"><a class="selflink" id="section-4" href="#section-4">4</a>. Security Considerations</span>
Call control primitives provide a powerful set of features that can
be dangerous in the hands of an attacker. To complicate matters,
call control primitives are likely to be automatically authorized
without direct human oversight.
The class of attacks that are possible using these tools includes the
ability to eavesdrop on calls, disconnect calls, redirect calls,
render irritating content (including ringing) at a user agent, cause
an action that has billing consequences, subvert billing (theft-of-
service), and obtain private information. Call control extensions
must take extra care to describe how these attacks will be prevented.
We can also make some general observations about authorization and
trust with respect to call control. The security model is
dramatically dependent on the signaling model chosen (see <a href="#section-2.3">Section</a>
<a href="#section-2.3">2.3</a>)
Let us first examine the security model used in the 3pcc approach.
All signaling goes through the controller, which is a trusted entity.
Traditional SIP authentication and hop-by-hop encryption and message
integrity work fine in this environment, but end-to-end encryption
and message integrity may not be possible.
When using the peer-to-peer approach, call control actions and
primitives can be legitimately initiated by a) an existing
participant in the conversation space, b) a former participant in the
conversation space, or c) an entity trusted by one of the
participants. For example, a participant always initiates a
<span class="grey">Mahy, et al. Informational [Page 30]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-31" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
transfer; a retrieve from park (a take) is initiated on behalf of a
former participant, and a barge-in (insert or far-fork) is initiated
by a trusted entity (an operator, for example).
Authenticating requests by an existing participant or a trusted
entity can be done with baseline SIP mechanisms. In the case of
features initiated by a former participant, these should be protected
against replay attacks, e.g., by using a unique name or identifier
per invocation. The Replaces header field exhibits this behavior as
a by-product of its operation (once a Replaces operation is
successful, the dialog being Replaced no longer exists). These
credentials may, for example, need to be passed transitively or
fetched in an event body.
To authorize call control primitives that trigger special behavior
(such as an INVITE with Replaces or Join semantics), the receiving
user agent may have trouble finding appropriate credentials with
which to challenge or authorize the request, as the sender may be
completely unknown to the receiver, except through the introduction
of a third party. These credentials need to be passed transitively
in some way or fetched in an event body, for example.
Standard SIP privacy and anonymity mechanisms such as [<a href="./rfc3323" title=""A Privacy Mechanism for the Session Initiation Protocol (SIP)"">RFC3323</a>] and
[<a href="./rfc3325" title=""Private Extensions to the Session Initiation Protocol (SIP) for Asserted Identity within Trusted Networks"">RFC3325</a>] used during SIP session establishment apply equally well to
SIP call control operations. SIP call control mechanisms should
address privacy and anonymity issues associated with that operation.
For example, privacy during a transfer operation using REFER is
discussed in <a href="./rfc5589#section-7.2">Section 7.2 of [RFC5589]</a>
<span class="grey">Mahy, et al. Informational [Page 31]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-32" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
<span class="h2"><a class="selflink" id="appendix-A" href="#appendix-A">Appendix A</a>. Example Features</span>
Primitives are defined in terms of their ability to provide features.
These example features should require an amply robust set of services
to demonstrate a useful set of primitives. They are described here
briefly. Note that the descriptions of these features are non-
normative. Note also that this document describes a mixture of both
features originating in the world of telephones and features that are
clearly Internet oriented.
<span class="h3"><a class="selflink" id="appendix-A.1" href="#appendix-A.1">Appendix A.1</a>. Attended Transfer</span>
In Attended Transfer [<a href="./rfc5589" title=""Session Initiation Protocol (SIP) Call Control - Transfer"">RFC5589</a>], the transferring party establishes a
session with the transfer target before completing the transfer.
<span class="h3"><a class="selflink" id="appendix-A.2" href="#appendix-A.2">Appendix A.2</a>. Auto Answer</span>
In Auto Answer, calls to a certain address or URI answer immediately
via a speakerphone. The Answer-Mode header field [<a href="./rfc5373" title=""Requesting Answering Modes for the Session Initiation Protocol (SIP)"">RFC5373</a>] can be
used for this feature.
<span class="h3"><a class="selflink" id="appendix-A.3" href="#appendix-A.3">Appendix A.3</a>. Automatic Callback</span>
In Automatic Callback [<a href="./rfc5359" title=""Session Initiation Protocol Service Examples"">RFC5359</a>], Alice calls Bob, but Bob is busy.
Alice would like Bob to call her automatically when he is available.
When Bob hangs up, Alice's phone rings. When Alice answers, Bob's
phone rings. Bob answers and they talk.
<span class="h3"><a class="selflink" id="appendix-A.4" href="#appendix-A.4">Appendix A.4</a>. Barge-In</span>
In Barge-in, Carol interrupts Alice who has an in-progress call with
Bob. In some variations, Alice forcibly joins a new conversation
with Carol, in other variations, all three parties are placed in the
same conversation (basically a three-way conference). Barge-in works
the same as call monitoring except that it must indicate that the
send media stream be mixed so that all of the other parties can hear
the stream from the UA that is barging in.
<span class="h3"><a class="selflink" id="appendix-A.5" href="#appendix-A.5">Appendix A.5</a>. Blind Transfer</span>
In Blind Transfer [<a href="./rfc5589" title=""Session Initiation Protocol (SIP) Call Control - Transfer"">RFC5589</a>], Alice is in a conversation with Bob.
Alice asks Bob to contact Carol, but makes no attempt to contact
Carol independently. In many implementations, Alice does not verify
Bob's success or failure in contacting Carol.
<span class="grey">Mahy, et al. Informational [Page 32]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-33" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
<span class="h3"><a class="selflink" id="appendix-A.6" href="#appendix-A.6">Appendix A.6</a>. Call Forwarding</span>
In call forwarding [<a href="./rfc5359" title=""Session Initiation Protocol Service Examples"">RFC5359</a>], before a dialog is accepted, it is
redirected to another location, for example, because the originally
intended recipient is busy, does not answer, is disconnected from the
network, or has configured all requests to go elsewhere.
<span class="h3"><a class="selflink" id="appendix-A.7" href="#appendix-A.7">Appendix A.7</a>. Call Monitoring</span>
Call monitoring is a Join operation [<a href="./rfc3911" title=""The Session Initiation Protocol (SIP) "">RFC3911</a>]. For example, a call
center supervisor joins an in-progress call for monitoring purposes.
The monitoring UA sends a Join to the dialog to which it wants to
listen. It is able to discover the dialog via the dialog state on
the monitored UA. The monitoring UA sends SDP in the INVITE that
indicates receive-only media. As the UA is only monitoring, it does
not matter whether the UA indicates it wishes the send stream to be
mixed or point to point.
<span class="h3"><a class="selflink" id="appendix-A.8" href="#appendix-A.8">Appendix A.8</a>. Call Park</span>
In Call Park [<a href="./rfc5359" title=""Session Initiation Protocol Service Examples"">RFC5359</a>], a participant parks a call (essentially puts
the call on hold), and then retrieves it at a later time (typically
from another location). Call park requires the ability to put a
dialog some place, advertise it to users in a pickup group, and to
uniquely identify it in a means that can be communicated (including
human voice). The dialog can be held locally on the UA parking the
dialog or alternatively transferred to the park service for the
pickup group. The parked dialog then needs to be labeled (e.g.,
orbit 12) in a way that can be communicated to the party that is to
pick up the call. The UAs in the pickup group discover the parked
dialog(s) via the dialog package from the park service. If the
dialog is parked locally, the park service merely aggregates the
parked call states from the set of UAs in the pickup group.
<span class="h3"><a class="selflink" id="appendix-A.9" href="#appendix-A.9">Appendix A.9</a>. Call Pickup</span>
There are two different features that are called Call Pickup
[<a href="./rfc5359" title=""Session Initiation Protocol Service Examples"">RFC5359</a>]. The first is the pickup of a parked dialog. The UA from
which the dialog is to be picked up subscribes to the dialog state of
the park service or the UA that has locally parked the dialog.
Dialogs that are parked should be labeled with an identifier. The
labels are used by the UA to allow the user to indicate which dialog
is to be picked up. The UA picking up the call invoked the URI in
the call state that is labeled as replace-remote.
The other call pickup feature involves picking up an early dialog
(typically ringing). A party picks up a call that was ringing at
another location. One variation allows the caller to choose which
<span class="grey">Mahy, et al. Informational [Page 33]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-34" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
location, another variation just picks up any call in that user's
"pickup group". This feature uses some of the same primitives as the
pickup of a parked call. The call state of the UA ringing phone is
advertised using the dialog package. The UA that is to pick up the
early dialog subscribes either directly to the ringing UA or to a
service aggregating the states for UAs in the pickup group. The call
state identifies early dialogs. The UA uses the call state(s) to
help the user choose which early dialog is to be picked up. The UA
then invokes the URI in the call state labeled as replace-remote.
<span class="h3"><a class="selflink" id="appendix-A.10" href="#appendix-A.10">Appendix A.10</a>. Call Return</span>
In Call Return, Alice calls Bob. Bob misses the call or is
disconnected before he is finished talking to Alice. Bob invokes
Call return, which calls Alice, even if Alice did not provide her
real identity or location to Bob.
<span class="h3"><a class="selflink" id="appendix-A.11" href="#appendix-A.11">Appendix A.11</a>. Call Waiting</span>
In Call Waiting, Alice is in a call, then receives another call.
Alice can place the first call on hold, and talk with the other
caller. She can typically switch back and forth between the callers.
<span class="h3"><a class="selflink" id="appendix-A.12" href="#appendix-A.12">Appendix A.12</a>. Click-to-Dial</span>
In Click-to-Dial [<a href="./rfc5359" title=""Session Initiation Protocol Service Examples"">RFC5359</a>], Alice looks in her company directory for
Bob. When she finds Bob, she clicks on a URI to call him. Her phone
rings (or possibly answers automatically), and when she answers,
Bob's phone rings. The application or server that hosts the Click-
to-Dial application captures the URI to be dialed and can set up the
call using 3pcc or can send a REFER request to the UA that is to dial
the address. As users sometimes change their mind or wish to give up
listing to a ringing or voicemail answered phone, this application
illustrates the need to also have the ability to remotely hangup a
call.
<span class="h3"><a class="selflink" id="appendix-A.13" href="#appendix-A.13">Appendix A.13</a>. Conference Call</span>
In a Conference Call [<a href="./rfc4579" title=""Session Initiation Protocol (SIP) Call Control - Conferencing for User Agents"">RFC4579</a>], there are three or more active,
visible participants in the same conversation space.
<span class="h3"><a class="selflink" id="appendix-A.14" href="#appendix-A.14">Appendix A.14</a>. Consultative Transfer</span>
In Consultative Transfer [<a href="./rfc5589" title=""Session Initiation Protocol (SIP) Call Control - Transfer"">RFC5589</a>], the transferring party
establishes a session with the target and mixes both sessions
together so that all three parties can participate, then disconnects
leaving the transferee and transfer target with an active session.
<span class="grey">Mahy, et al. Informational [Page 34]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-35" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
<span class="h3"><a class="selflink" id="appendix-A.15" href="#appendix-A.15">Appendix A.15</a>. Distinctive Ring</span>
In Distinctive Ring, incoming calls have different ring cadences or
sample sounds depending on the From party, the To party, or other
factors. The target UA either makes a local decision based on
information in an incoming INVITE (To, From, Contact, Request-URI) or
trusts an Alert-Info header field [<a href="./rfc3261" title=""SIP: Session Initiation Protocol"">RFC3261</a>] provided by the caller or
inserted by a trusted proxy. In the latter case, the UA fetches the
content described in the URI (typically via HTTP) and renders it to
the user.
<span class="h3"><a class="selflink" id="appendix-A.16" href="#appendix-A.16">Appendix A.16</a>. Do Not Disturb</span>
In Do Not Disturb, Alice selects the Do Not Disturb option. Calls to
her either ring briefly or not at all and are forwarded elsewhere.
Some variations allow specially authorized callers to override this
feature and ring Alice anyway. Do Not Disturb is best implemented in
SIP using presence [<a href="./rfc3856" title=""A Presence Event Package for the Session Initiation Protocol (SIP)"">RFC3856</a>].
<span class="h3"><a class="selflink" id="appendix-A.17" href="#appendix-A.17">Appendix A.17</a>. Find-Me</span>
In Find-Me, Alice sets up complicated rules for how she can be
reached (possibly using CPL (Call Processing Language) [<a href="./rfc3880" title=""Call Processing Language (CPL): A Language for User Control of Internet Telephony Services"">RFC3880</a>],
presence [<a href="./rfc3856" title=""A Presence Event Package for the Session Initiation Protocol (SIP)"">RFC3856</a>], or other factors). When Bob calls Alice, his
call is eventually routed to a temporary Contact where Alice happens
to be available.
<span class="h3"><a class="selflink" id="appendix-A.18" href="#appendix-A.18">Appendix A.18</a>. Hotline</span>
In Hotline, Alice picks up a phone and is immediately connected to
the technical support hotline, for example. Hotline is also
sometimes known as a Ringdown line.
<span class="h3"><a class="selflink" id="appendix-A.19" href="#appendix-A.19">Appendix A.19</a>. IM Conference Alerts</span>
In IM Conference Alerts, a user receives a notification as an instant
message whenever someone joins a conference in which they are already
a participant.
<span class="h3"><a class="selflink" id="appendix-A.20" href="#appendix-A.20">Appendix A.20</a>. Inbound Call Screening</span>
In Inbound Call Screening, Alice doesn't want to receive calls from
Matt. Inbound Screening prevents Matt from disturbing Alice. In
some variations, this works even if Matt hides his identity.
<span class="grey">Mahy, et al. Informational [Page 35]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-36" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
<span class="h3"><a class="selflink" id="appendix-A.21" href="#appendix-A.21">Appendix A.21</a>. Intercom</span>
In Intercom, Alice typically presses a button on a phone that
immediately connects to another user or phone and causes that phone
to play her voice over its speaker. Some variations immediately set
up two-way communications, other variations require another button to
be pressed to enable a two-way conversation. The UA initiates a
dialog using INVITE and the Answer-Mode: Auto header field as
described in [<a href="./rfc5373" title=""Requesting Answering Modes for the Session Initiation Protocol (SIP)"">RFC5373</a>]. The called UA accepts the INVITE with a 200
OK and automatically enables the speakerphone.
Alternatively, this can be a local decision for the UA to auto answer
based upon called-party identification.
<span class="h3"><a class="selflink" id="appendix-A.22" href="#appendix-A.22">Appendix A.22</a>. Message Waiting</span>
In Message Waiting [<a href="./rfc3842" title=""A Message Summary and Message Waiting Indication Event Package for the Session Initiation Protocol (SIP)"">RFC3842</a>], Bob calls Alice when she has stepped
away from her phone. When she returns, a visible or audible
indicator conveys that someone has left her a voicemail message. The
message waiting indication may also convey how many messages are
waiting, from whom, at what time, and other useful pieces of
information.
<span class="h3"><a class="selflink" id="appendix-A.23" href="#appendix-A.23">Appendix A.23</a>. Music on Hold</span>
In Music on Hold [<a href="./rfc5359" title=""Session Initiation Protocol Service Examples"">RFC5359</a>], when Alice places a call with Bob on
hold, it replaces its audio with streaming content such as music,
announcements, or advertisements. Music on hold can be implemented a
number of ways. One way is to transfer the held call to a holding
service. When the UA wishes to take the call off hold, it basically
performs a take on the call from the holding service. This involves
subscribing to call state on the holding service and then invoking
the URI in the call state labeled as replace-remote.
Alternatively, music on hold can be performed as a local mixing
operation. The UA holding the call can mix in the music from the
music service via RTP (i.e., an additional dialog) or RTSP or other
streaming media source. This approach is simpler (i.e., the held
dialog does not move so there is less chance of loosing them) from a
protocol perspective, however it does use more LAN bandwidth and
resources on the UA.
<span class="h3"><a class="selflink" id="appendix-A.24" href="#appendix-A.24">Appendix A.24</a>. Outbound Call Screening</span>
In Outbound Call Screening, Alice is paged and unknowingly calls a
PSTN pay-service telephone number in the Caribbean, but local policy
blocks her call, and possibly informs her why.
<span class="grey">Mahy, et al. Informational [Page 36]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-37" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
<span class="h3"><a class="selflink" id="appendix-A.25" href="#appendix-A.25">Appendix A.25</a>. Pre-Paid Calling</span>
In Pre-paid Calling, Alice pays for a certain currency or unit amount
of calling value. When she places a call, she provides her account
number somehow. If her account runs out of calling value during a
call, her call is disconnected or redirected to a service where she
can purchase more calling value.
For prepaid calling, the user's media always passes through a device
that is trusted by the pre-paid provider. This may be the other
endpoint (for example, a PSTN gateway). In either case, an
intermediary proxy or B2BUA can periodically verify the amount of
time available on the pre-paid account, and use the session-timer
extension to cause the trusted endpoint (gateway) or intermediary
(media relay) to send a reINVITE before that time runs out. During
the reINVITE, the SIP intermediary can re-verify the account and
insert another session-timer header field.
Note that while most pre-paid systems on the PSTN use an IVR to
collect the account number and destination, this isn't strictly
necessary for a SIP-originated prepaid call. SIP requests and SIP
URIs are sufficiently expressive to convey the final destination, the
provider of the prepaid service, the location from which the user is
calling, and the prepaid account they want to use. If a pre-paid IVR
is used, the mechanism described below (Voice Portals) can be
combined as well.
<span class="h3"><a class="selflink" id="appendix-A.26" href="#appendix-A.26">Appendix A.26</a>. Presence-Enabled Conferencing</span>
In Presence-Enabled Conferencing, Alice wants to set up a conference
call with Bob and Cathy when they all happen to be available (rather
than scheduling a predefined time). The server providing the
application monitors their status, and calls all three when they are
all "online", not idle, and not in another call. This could be
implemented using conferencing [<a href="./rfc4579" title=""Session Initiation Protocol (SIP) Call Control - Conferencing for User Agents"">RFC4579</a>] and presence [<a href="./rfc3264" title=""An Offer/Answer Model with Session Description Protocol (SDP)"">RFC3264</a>]
primitives.
<span class="h3"><a class="selflink" id="appendix-A.27" href="#appendix-A.27">Appendix A.27</a>. Single Line Extension/Multiple Line Appearance</span>
In Single Line Extension/Multiple Line Appearances, groups of phones
are all treated as "extensions" of a single line or AOR. A call for
one rings them all. As soon as one answers, the others stop ringing.
If any extension is actively in a conversation, another extension can
"pick up" and immediately join the conversation. This emulates the
behavior of a home telephone line with multiple phones. Incoming
calls ring all the extensions through basic parallel forking. Each
extension subscribes to dialog events from each other extension.
While one user has an active call, any other UA extension can insert
<span class="grey">Mahy, et al. Informational [Page 37]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-38" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
itself into that conversation (it already knows the dialog
information) in the same way as barge-in.
When implemented using SIP, this feature is known as Shared
Appearances of an AOR [<a href="#ref-BLISS-SHARED" title=""Shared Appearances of a Session Initiation Protocol (SIP) Address of Record (AOR)"">BLISS-SHARED</a>]. Extensions to the dialog
package are used to convey appearance numbers (line numbers).
<span class="h3"><a class="selflink" id="appendix-A.28" href="#appendix-A.28">Appendix A.28</a>. Speakerphone Paging</span>
In Speakerphone Paging, Alice calls the paging address and speaks.
Her voice is played on the speaker of every idle phone in a
preconfigured group of phones. Speakerphone paging can be
implemented using either multicast or through a simple multipoint
mixer. In the multicast solution, the paging UA sends a multicast
INVITE with send-only media in the SDP (see also [<a href="./rfc3264" title=""An Offer/Answer Model with Session Description Protocol (SDP)"">RFC3264</a>]). The
automatic answer and enabling of the speakerphone is a locally
configured decision on the paged UAs. The paging UA sends RTP via
the multicast address indicated in the SDP.
The multipoint solution is accomplished by sending an INVITE to the
multipoint mixer. The mixer is configured to automatically answer
the dialog. The paging UA then sends REFER requests for each of the
UAs that are to become paging speakers (the UA is likely to send out
a single REFER that is parallel forked by the proxy server). The UAs
performing as paging speakers are configured to automatically answer
based upon caller identification (e.g., the To field, URI, or
Referred-To header fields).
Finally, as a third option, the user agent can send a mass-invitation
request to a conference server, which would create a conference and
send INVITEs containing the Answer-Mode: Auto header field to all
user agents in the paging group.
<span class="h3"><a class="selflink" id="appendix-A.29" href="#appendix-A.29">Appendix A.29</a>. Speed Dial</span>
In Speed Dial, Alice dials an abbreviated number, enters an alias, or
presses a special speed-dial button representing Bob. Her action is
interpreted as if she specified the full address of Bob.
<span class="h3"><a class="selflink" id="appendix-A.30" href="#appendix-A.30">Appendix A.30</a>. Voice Message Screening</span>
In Voice Message Screening, Bob calls Alice. Alice is screening her
calls, so Bob hears Alice's voicemail greeting. Alice can hear Bob
leave his message. If she decides to talk to Bob, she can take the
call back from the voicemail system; otherwise, she can let Bob leave
a message. This emulates the behavior of a home telephone answering
machine.
<span class="grey">Mahy, et al. Informational [Page 38]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-39" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
At first, this is the same as Call Monitoring (Appendix A.7). In
this case, the voicemail service is one of the UAs. The UA screening
the message monitors the call on the voicemail service, and also
subscribes to dialog information. If the user screening their
messages decides to answer, they perform a take from the voicemail
system (for example, send an INVITE with Replaces to the UA leaving
the message).
<span class="h3"><a class="selflink" id="appendix-A.31" href="#appendix-A.31">Appendix A.31</a>. Voice Portal</span>
Voice Portal is service that allows users to access a portal site
using spoken dialog interaction. For example, Alice needs to
schedule a working dinner with her co-worker Carol. Alice uses a
voice portal to check Carol's flight schedule, find a restaurant near
her hotel, make a reservation, get directions there, and page Carol
with this information. A voice portal is essentially a complex
collection of voice dialogs used to access interesting content. One
of the most desirable call control features of a Voice Portal is the
ability to start a new outgoing call from within the context of the
Portal (to make a restaurant reservation, or return a voicemail
message, for example). Once the new call is over, the user should be
able to return to the Portal by pressing a special key, using some
DTMF sequence (e.g., a very long pound or hash tone), or by speaking
a key word (e.g., "Main Menu").
In order to accomplish this, the Voice Portal starts with the
following media relationship:
{ User , Voice Portal }
The user then asks to make an outgoing call. The Voice Portal asks
the user to perform a far-fork. In other words, the Voice Portal
wants the following media relationship:
{ Target , User } & { User , Voice Portal }
The Voice Portal is now just listening for a key word or the
appropriate DTMF. As soon as the user indicates they are done, the
Voice Portal takes the call from the old target, and we are back to
the original media relationship.
This feature can also be used by the account number and phone number
collection menu in a pre-paid calling service. A user can press a
DTMF sequence that presents them with the appropriate menu again.
<span class="grey">Mahy, et al. Informational [Page 39]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-40" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
<span class="h3"><a class="selflink" id="appendix-A.32" href="#appendix-A.32">Appendix A.32</a>. Voicemail</span>
In Voicemail, Alice calls Bob who does not answer or is not
available. The call forwards to a voicemail server that plays Bob's
greeting and records Alice's message for Bob. An indication is sent
to Bob that a new message is waiting, and he retrieves the message at
a later date. This feature is implemented using features such as
Call Forwarding (Appendix A.6) and the History-Info header field
[<a href="./rfc4244" title=""An Extension to the Session Initiation Protocol (SIP) for Request History Information"">RFC4244</a>] or voicemail URI convention [<a href="./rfc4458" title=""Session Initiation Protocol (SIP) URIs for Applications such as Voicemail and Interactive Voice Response (IVR)"">RFC4458</a>] and Message Waiting
[<a href="./rfc3842" title=""A Message Summary and Message Waiting Indication Event Package for the Session Initiation Protocol (SIP)"">RFC3842</a>] features.
<span class="h3"><a class="selflink" id="appendix-A.33" href="#appendix-A.33">Appendix A.33</a>. Whispered Call Waiting</span>
In Whispered Call Waiting, Alice is in a conversation with Bob.
Carol calls Alice. Either Carol can "whisper" to Alice directly
("Can you get lunch in 15 minutes?"), or an automaton whispers to
Alice informing her that Carol is trying to reach her.
<span class="h2"><a class="selflink" id="appendix-B" href="#appendix-B">Appendix B</a>. Acknowledgments</span>
The authors would like to acknowledge Ben Campbell for his
contributions to the document and thank AC Mahendran, John Elwell,
and Xavier Marjou for their detailed Working-Group review of the
document. The authors would like to thank Magnus Nystrom for his
review of the document.
<span class="h2"><a class="selflink" id="section-5" href="#section-5">5</a>. Informative References</span>
[<a id="ref-RFC3261">RFC3261</a>] Rosenberg, J., Schulzrinne, H., Camarillo, G.,
Johnston, A., Peterson, J., Sparks, R., Handley, M.,
and E. Schooler, "SIP: Session Initiation Protocol",
<a href="./rfc3261">RFC 3261</a>, June 2002.
[<a id="ref-RFC3264">RFC3264</a>] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer
Model with Session Description Protocol (SDP)",
<a href="./rfc3264">RFC 3264</a>, June 2002.
[<a id="ref-RFC3265">RFC3265</a>] Roach, A., "Session Initiation Protocol (SIP)-
Specific Event Notification", <a href="./rfc3265">RFC 3265</a>, June 2002.
[<a id="ref-RFC4566">RFC4566</a>] Handley, M., Jacobson, V., and C. Perkins, "SDP:
Session Description Protocol", <a href="./rfc4566">RFC 4566</a>, July 2006.
[<a id="ref-RFC5359">RFC5359</a>] Johnston, A., Sparks, R., Cunningham, C., Donovan,
S., and K. Summers, "Session Initiation Protocol
Service Examples", <a href="https://www.rfc-editor.org/bcp/bcp144">BCP 144</a>, <a href="./rfc5359">RFC 5359</a>, October 2008.
<span class="grey">Mahy, et al. Informational [Page 40]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-41" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
[<a id="ref-RFC3725">RFC3725</a>] Rosenberg, J., Peterson, J., Schulzrinne, H., and G.
Camarillo, "Best Current Practices for Third Party
Call Control (3pcc) in the Session Initiation
Protocol (SIP)", <a href="https://www.rfc-editor.org/bcp/bcp85">BCP 85</a>, <a href="./rfc3725">RFC 3725</a>, April 2004.
[<a id="ref-RFC3515">RFC3515</a>] Sparks, R., "The Session Initiation Protocol (SIP)
Refer Method", <a href="./rfc3515">RFC 3515</a>, April 2003.
[<a id="ref-RFC3891">RFC3891</a>] Mahy, R., Biggs, B., and R. Dean, "The Session
Initiation Protocol (SIP) "Replaces" Header",
<a href="./rfc3891">RFC 3891</a>, September 2004.
[<a id="ref-RFC3911">RFC3911</a>] Mahy, R. and D. Petrie, "The Session Initiation
Protocol (SIP) "Join" Header", <a href="./rfc3911">RFC 3911</a>,
October 2004.
[<a id="ref-BLISS-PROBLEM">BLISS-PROBLEM</a>] Rosenberg, J., "Basic Level of Interoperability for
Session Initiation Protocol (SIP) Services (BLISS)
Problem Statement", Work in Progress, March 2009.
[<a id="ref-RFC4235">RFC4235</a>] Rosenberg, J., Schulzrinne, H., and R. Mahy, "An
INVITE-Initiated Dialog Event Package for the
Session Initiation Protocol (SIP)", <a href="./rfc4235">RFC 4235</a>,
November 2005.
[<a id="ref-RFC4575">RFC4575</a>] Rosenberg, J., Schulzrinne, H., and O. Levin, "A
Session Initiation Protocol (SIP) Event Package for
Conference State", <a href="./rfc4575">RFC 4575</a>, August 2006.
[<a id="ref-RFC3680">RFC3680</a>] Rosenberg, J., "A Session Initiation Protocol (SIP)
Event Package for Registrations", <a href="./rfc3680">RFC 3680</a>,
March 2004.
[<a id="ref-RFC3856">RFC3856</a>] Rosenberg, J., "A Presence Event Package for the
Session Initiation Protocol (SIP)", <a href="./rfc3856">RFC 3856</a>,
August 2004.
[<a id="ref-RFC4353">RFC4353</a>] Rosenberg, J., "A Framework for Conferencing with
the Session Initiation Protocol (SIP)", <a href="./rfc4353">RFC 4353</a>,
February 2006.
[<a id="ref-RFC5629">RFC5629</a>] Rosenberg, J., "A Framework for Application
Interaction in the Session Initiation Protocol
(SIP)", <a href="./rfc5629">RFC 5629</a>, October 2009.
[<a id="ref-RFC5369">RFC5369</a>] Camarillo, G., "Framework for Transcoding with the
Session Initiation Protocol (SIP)", <a href="./rfc5369">RFC 5369</a>,
October 2008.
<span class="grey">Mahy, et al. Informational [Page 41]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-42" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
[<a id="ref-XCON-CCMP">XCON-CCMP</a>] Barnes, M., Boulton, C., Romano, S., and H.
Schulzrinne, "Centralized Conferencing Manipulation
Protocol", Work in Progress, February 2010.
[<a id="ref-RFC5589">RFC5589</a>] Sparks, R., Johnston, A., and D. Petrie, "Session
Initiation Protocol (SIP) Call Control - Transfer",
<a href="https://www.rfc-editor.org/bcp/bcp149">BCP 149</a>, <a href="./rfc5589">RFC 5589</a>, June 2009.
[<a id="ref-RFC4579">RFC4579</a>] Johnston, A. and O. Levin, "Session Initiation
Protocol (SIP) Call Control - Conferencing for User
Agents", <a href="https://www.rfc-editor.org/bcp/bcp119">BCP 119</a>, <a href="./rfc4579">RFC 4579</a>, August 2006.
[<a id="ref-RFC3840">RFC3840</a>] Rosenberg, J., Schulzrinne, H., and P. Kyzivat,
"Indicating User Agent Capabilities in the Session
Initiation Protocol (SIP)", <a href="./rfc3840">RFC 3840</a>, August 2004.
[<a id="ref-RFC3841">RFC3841</a>] Rosenberg, J., Schulzrinne, H., and P. Kyzivat,
"Caller Preferences for the Session Initiation
Protocol (SIP)", <a href="./rfc3841">RFC 3841</a>, August 2004.
[<a id="ref-RFC3087">RFC3087</a>] Campbell, B. and R. Sparks, "Control of Service
Context using SIP Request-URI", <a href="./rfc3087">RFC 3087</a>,
April 2001.
[<a id="ref-FEATURE-REF">FEATURE-REF</a>] Audet, F., Johnston, A., Mahy, R., and C. Jennings,
"Feature Referral in the Session Initiation Protocol
(SIP)", Work in Progress, February 2008.
[<a id="ref-RFC4240">RFC4240</a>] Burger, E., Van Dyke, J., and A. Spitzer, "Basic
Network Media Services with SIP", <a href="./rfc4240">RFC 4240</a>,
December 2005.
[<a id="ref-RFC4458">RFC4458</a>] Jennings, C., Audet, F., and J. Elwell, "Session
Initiation Protocol (SIP) URIs for Applications such
as Voicemail and Interactive Voice Response (IVR)",
<a href="./rfc4458">RFC 4458</a>, April 2006.
[<a id="ref-RFC4538">RFC4538</a>] Rosenberg, J., "Request Authorization through Dialog
Identification in the Session Initiation Protocol
(SIP)", <a href="./rfc4538">RFC 4538</a>, June 2006.
[<a id="ref-RFC3880">RFC3880</a>] Lennox, J., Wu, X., and H. Schulzrinne, "Call
Processing Language (CPL): A Language for User
Control of Internet Telephony Services", <a href="./rfc3880">RFC 3880</a>,
October 2004.
<span class="grey">Mahy, et al. Informational [Page 42]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-43" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
[<a id="ref-RFC5373">RFC5373</a>] Willis, D. and A. Allen, "Requesting Answering Modes
for the Session Initiation Protocol (SIP)",
<a href="./rfc5373">RFC 5373</a>, November 2008.
[<a id="ref-RFC3842">RFC3842</a>] Mahy, R., "A Message Summary and Message Waiting
Indication Event Package for the Session Initiation
Protocol (SIP)", <a href="./rfc3842">RFC 3842</a>, August 2004.
[<a id="ref-BLISS-SHARED">BLISS-SHARED</a>] Johnston, A., Soroushnejad, M., and V.
Venkataramanan, "Shared Appearances of a Session
Initiation Protocol (SIP) Address of Record (AOR)",
Work in Progress, October 2009.
[<a id="ref-RFC4244">RFC4244</a>] Barnes, M., "An Extension to the Session Initiation
Protocol (SIP) for Request History Information",
<a href="./rfc4244">RFC 4244</a>, November 2005.
[<a id="ref-RFC4313">RFC4313</a>] Oran, D., "Requirements for Distributed Control of
Automatic Speech Recognition (ASR), Speaker
Identification/Speaker Verification (SI/SV), and
Text-to-Speech (TTS) Resources", <a href="./rfc4313">RFC 4313</a>,
December 2005.
[<a id="ref-RFC3323">RFC3323</a>] Peterson, J., "A Privacy Mechanism for the Session
Initiation Protocol (SIP)", <a href="./rfc3323">RFC 3323</a>, November 2002.
[<a id="ref-RFC3325">RFC3325</a>] Jennings, C., Peterson, J., and M. Watson, "Private
Extensions to the Session Initiation Protocol (SIP)
for Asserted Identity within Trusted Networks",
<a href="./rfc3325">RFC 3325</a>, November 2002.
<span class="grey">Mahy, et al. Informational [Page 43]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-44" ></span>
<span class="grey"><a href="./rfc5850">RFC 5850</a> SIP Call Control Framework May 2010</span>
Authors' Addresses
Rohan Mahy
Unaffiliated
EMail: rohan@ekabal.com
Robert Sparks
Tekelec
EMail: rjsparks@nostrum.com
Jonathan Rosenberg
jdrosen.net
EMail: jdrosen@jdrosen.net
Dan Petrie
SIPez
EMail: dan.ietf@sipez.com
Alan Johnston (editor)
Avaya
EMail: alan.b.johnston@gmail.com
Mahy, et al. Informational [Page 44]
</pre>
|