summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc6011.txt
blob: 4247124b6f842005f164692f95af64a608124993 (plain) (blame)
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
Internet Engineering Task Force (IETF)                  S. Lawrence, Ed.
Request for Comments: 6011                         Linden Research, Inc.
Category: Informational                                        J. Elwell
ISSN: 2070-1721                        Siemens Enterprise Communications
                                                            October 2010


       Session Initiation Protocol (SIP) User Agent Configuration

Abstract

   This document defines procedures for how a SIP User Agent should
   locate, retrieve, and maintain current configuration information from
   a Configuration Service.

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 Section 2 of RFC 5741.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   http://www.rfc-editor.org/info/rfc6011.

Copyright Notice

   Copyright (c) 2010 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) 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.






Lawrence & Elwell             Informational                     [Page 1]
^L
RFC 6011                  SIP UA Configuration              October 2010


Table of Contents

   1. Introduction ....................................................3
      1.1. Scope ......................................................3
      1.2. Terminology ................................................3
      1.3. User Agent Installation Examples ...........................4
           1.3.1. Hosted IP Service Provider Example ..................5
           1.3.2. IP-PBX Example ......................................5
           1.3.3. Special Considerations for High Security
                  Deployments .........................................6
   2. Obtaining User Agent Configuration ..............................6
      2.1. Network Discovery ..........................................6
           2.1.1. Link Layer Provisioning .............................7
           2.1.2. Network Layer Provisioning ..........................7
      2.2. Obtaining the Configuration Service Domain .................8
           2.2.1. The Local Network Domain ............................8
           2.2.2. Manual Domain Name Entry ............................8
      2.3. Constructing the Configuration Request URL .................8
           2.3.1. Obtaining a Configuration Service Base URL ..........9
           2.3.2. Adding Configuration Request Parameters ............10
           2.3.3. Configuration Request URI Example ..................12
      2.4. Obtaining Configuration from the Configuration Service ....13
           2.4.1. Configuration Data Request Authentication ..........13
           2.4.2. Configuration Data Request Failure .................14
      2.5. Configuration Changes .....................................15
           2.5.1. Configuration Change Subscriptions .................16
           2.5.2. Configuration Change Polling .......................18
      2.6. Validity of Stored Configuration Data .....................19
           2.6.1. Re-Validating Configuration Data ...................19
      2.7. Retry Backoff Procedure ...................................20
   3. Configuration Data .............................................20
      3.1. Configuration Data Items ..................................20
           3.1.1. Address-of-Record ..................................21
           3.1.2. Realm ..............................................21
           3.1.3. Username ...........................................21
           3.1.4. Digest .............................................21
           3.1.5. OutboundProxy ......................................21
      3.2. Reset User Agent to Default Configuration .................21
   4. IANA Considerations ............................................21
      4.1. DHCP SIP User Agent Configuration Service Domains Option ..21
      4.2. DHCPv6 SIP User Agent Configuration Service
           Domains Option ............................................22
      4.3. U-NAPTR Registration ......................................23
      4.4. SIP Forum User Agent Configuration Parameter Registry .....23
   5. Security Considerations ........................................24
   6. Acknowledgements ...............................................26
   7. Normative References ...........................................27




Lawrence & Elwell             Informational                     [Page 2]
^L
RFC 6011                  SIP UA Configuration              October 2010


1.  Introduction

   A user gets a new SIP User Agent (UA); it may be a hardware device or
   software.  Some User Agents have a user interface that can accept a
   username, password, and domain name.  Other devices, like Analog
   Telephony Adapters (ATAs), have no user interface other than that
   provided by an attached analog phone.  How does a non-technical user
   minimally configure it so that when it is started, something useful
   happens?

1.1.  Scope

   This document specifies a procedure for how a SIP User Agent locates,
   retrieves, and maintains current configuration information for a
   given SIP Service Provider.  As such, it specifies requirements to be
   met by both the User Agent, the Configuration Service at the SIP
   Service Provider, and the network infrastructure services that allow
   them to communicate.

   Nothing in this specification prohibits a User Agent from obtaining
   configuration information by any means in addition to the mechanisms
   specified herein.

   The intent of this specification is to provide mechanisms sufficient
   for User Agents to discover an appropriate source of configuration
   and maintain the currency of that configuration.  A User Agent
   implementation compliant with this specification MAY also implement
   additional mechanisms necessary in particular environments or when
   the services specified here are not available.

   The form and content of configuration data to be downloaded are
   outside the scope of this specification, although Section 3.1,
   "Configuration Data Items" suggests a minimum set of data items
   likely to be required by all types of UAs.

1.2.  Terminology

   The following terms are used in this document:

   User Agent, UA

      As defined in RFC 3261 [RFC3261].  Note that this includes any
      implementation of a User Agent.  A SIP phone is a User Agent, but
      the term also encompasses any other entity that uses SIP (for
      example, for a text chat, for sharing a whiteboard, or for a fax).






Lawrence & Elwell             Informational                     [Page 3]
^L
RFC 6011                  SIP UA Configuration              October 2010


   Soft User Agent, Soft UA

      A User Agent that runs as an application within some larger system
      that has responsibility for some of the steps described in this
      specification.  In those cases, the Soft UA must be able to obtain
      the information from the platform.  In all cases, the term User
      Agent also encompasses a Soft User Agent.

   SIP Service Provider, Service Provider

      An entity that provides services to User Agents using the SIP
      protocol.  This specification requires that a Service Provider
      make configuration data and certain other information available in
      order to configure User Agents.

   Configuration

      The set of information that establishes operational parameters for
      a particular User Agent.

   Configuration Service, CS

      The source of Configuration for User Agents.

   Configuration Service Domain

      The DNS name for the service from which a Configuration is
      requested.

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].

1.3.  User Agent Installation Examples

   This section is non-normative; it is a set of "user stories" --
   narrative descriptions of the user experience in different
   environments.  These are "black box" descriptions meant to include
   the actions to be taken by the human participants (including
   administrators and system operators as well as the "user" of the UA),
   but not how the network elements communicate or operate internally.
   The intent is that these narratives provide context for the
   subsequent technical specifications.








Lawrence & Elwell             Informational                     [Page 4]
^L
RFC 6011                  SIP UA Configuration              October 2010


1.3.1.  Hosted IP Service Provider Example

   Configuring a new UA to use a hosted IP telephony service will
   typically proceed as follows: the customer makes a request to their
   Service Provider to add one or more new users to their service.  The
   customer may supply further details such as a preferred username,
   type of endpoint and any requests for specific functionality,
   depending on what information the Service Provider considers useful,
   but no additional information is required from the customer.

   The Service Provider performs any necessary provisioning actions on
   their equipment, and returns to the customer provisioning
   information, which may include a domain name or a numeric domain
   identifier for the provider, a user identifier, and a password.
   Typically, a Service Provider will supply provisioning information
   for each device to be provisioned, but may choose to supply
   information that can be used with multiple devices, or for a limited
   duration or with other benefits and restrictions.

   The customer enters the provisioning information into the UA to be
   configured, whereupon the UA uses this information to locate the
   configuration service, securely fetch the configuration information,
   and configure itself for operation.

1.3.2.  IP-PBX Example

   Configuring a new UA in a typical business begins by provisioning a
   user identity in the Private Branch Exchange (PBX) (add user "John
   Smith"), and assigning a phone number to the user.  That number must
   then be assigned to a line on a specific UA; this is usually done by
   selecting a UA and provisioning it in the PBX by its serial number
   (usually a Media Access Control (MAC) address), and then assigning
   the identity or phone number to a 'line' on that UA in the PBX
   configuration system.

   Once provisioning in the PBX is complete, the new user goes to his or
   her workplace and connects the UA to the network.  When connected and
   powered up, the UA is provided with the user identity, phone number,
   and any other configuration data with no local user interaction --
   just connecting it to the network loads the configuration from the
   PBX and the UA is operational.










Lawrence & Elwell             Informational                     [Page 5]
^L
RFC 6011                  SIP UA Configuration              October 2010


1.3.3.  Special Considerations for High Security Deployments

   To deploy a new UA in a high security scenario requires some special
   consideration.  A security-conscious deployment will most likely
   require that the SIP and other management interfaces, including the
   interface to the configuration service, be secured before the device
   is put into service.

   In order to achieve any level of security, the device will need to be
   pre-configured with some security-related information in the form of
   certificates.  This may be achieved in a number of ways.  Some
   examples include:

   1.  An administrator who configures the device in a secure
       environment before making the device available to the user.

   2.  Some certificates may be built into the device during the
       manufacturing process enabling the configuration service to
       certify information such as the manufacturer, UA type, and MAC
       address.  The configuration service may then be used to provision
       the device with other certificates as required.

   3.  The device may have a facility for the user to provide the
       security information in the form of a security card or dongle.

   All these mechanism are likely to restrict the user to a limited set
   of devices approved for use in a particular deployment.

2.  Obtaining User Agent Configuration

   This section specifies how a User Agent connects to the network,
   determines for which domain to request configuration, obtains
   configuration from that domain, and is notified by that domain when
   the configuration changes.

   The User Agent MAY obtain configuration information by any means in
   addition to those specified here, and MAY use such information in
   preference to any of the steps specified below, but MUST be capable
   of using these procedures alone in order to be compliant with this
   specification.

2.1.  Network Discovery

   A UA needs a minimum set of parameters to allow it to communicate on
   the network.  Some networks allow the UA to automatically discover
   these parameters, while other networks require some or all of these
   parameters to be manually provisioned on the UA.




Lawrence & Elwell             Informational                     [Page 6]
^L
RFC 6011                  SIP UA Configuration              October 2010


2.1.1.  Link Layer Provisioning

   The UA SHOULD attempt to use Link Layer Discovery Protocol - Media
   Endpoint Discovery (LLDP-MED; see [ANSI.TIA-1057-2006]) for automatic
   provisioning of link layer parameters.

   In some deployments, failure to properly provision the link layer may
   result in the UA having incorrect Layer 2 priority, degrading the
   quality of service, or being on the wrong virtual LAN (VLAN),
   possibly resulting in complete loss of service.

2.1.2.  Network Layer Provisioning

   In order to communicate using IP, the UA needs the following minimal
   IP configuration parameters:

   IP Network Parameters

   o  UA IP Address

   o  Subnet Mask

   o  Gateway IP address

   o  DNS Server IP address(es)

   With the exception of a Soft UA that relies on its platform to obtain
   the IP Network Parameters:

   o  If the User Agent is using IP version 4 on a network technology
      for which the Dynamic Host Configuration Protocol (DHCP) [RFC2131]
      is defined, the UA MUST attempt to obtain the IP Network
      Parameters using DHCP and MUST request DHCP options 141 (see
      Section 4.1) and 15 [RFC2132].  If the DHCP service provides a
      value for option 141, the domain name(s) it provides MUST be saved
      as candidates for use as the Local Network Domain (see
      Section 2.2, "Obtaining the Configuration Service Domain").  If
      and only if no values are returned for option 141, the UA MUST
      save any values returned for option 15 for use as the Local
      Network Domain.

   o  If the User Agent is using IP version 6 on a network technology
      for which the Dynamic Host Configuration Protocol version 6
      (DHCPv6) [RFC3315] is defined, the UA MAY use any standard IPv6
      mechanism to determine the IP Network Parameters, but MUST request
      DHCPv6 options 58 (see Section 4.2) and 21 [RFC3319].  If the
      DHCPv6 service provides a value for option 58, those domain names
      MUST be saved as candidates for use as the Local Network Domain



Lawrence & Elwell             Informational                     [Page 7]
^L
RFC 6011                  SIP UA Configuration              October 2010


      (see Section 2.2, "Obtaining the Configuration Service Domain").
      If and only if no values are returned for option 58, the UA MUST
      save any values returned for option 21 for use as the Local
      Network Domain.

2.2.  Obtaining the Configuration Service Domain

   To obtain a configuration, the UA needs to know what domain to
   request it from.  This domain is the Configuration Service Domain;
   its value is a DNS name (see [RFC1034]).

   User control or prior configuration MAY establish a value for the
   Configuration Service Domain that takes precedence over the discovery
   procedure defined below.  In the absence of user control or prior
   configuration, candidate values for the Configuration Service Domain
   are obtained as specified in Section 2.2.1, "The Local Network
   Domain", or if that is unsuccessful, by the manual mechanism
   specified in Section 2.2.2, "Manual Domain Name Entry".

2.2.1.  The Local Network Domain

   The UA MUST attempt to use each value obtained for the Local Network
   Domain name (see Section 2.1.2, "Network Layer Provisioning") as the
   Configuration Service Domain.  If multiple names are provided by DHCP
   and/or DHCPv6 (multiple names may be returned by these services if
   both are in use, if the UA has multiple network interfaces, or if the
   option responses have multiple values), the UA MUST attempt to use
   each of the names provided until a configuration is successfully
   obtained.  The order in which values obtained in different responses
   are used is not defined by this specification -- the UA MAY use any
   order; multiple values returned within a single response MUST be
   tried in the order they were provided in that response.

   If the DHCP service does not provide any local domain name values,
   the UA SHOULD use the manual mechanism defined in Section 2.2.2,
   "Manual Domain Name Entry".

2.2.2.  Manual Domain Name Entry

   A UA MAY provide an interface by which a DNS name is supplied
   directly by the user for the Configuration Service Name.

2.3.  Constructing the Configuration Request URL

   Using the Configuration Service Domain name obtained in Section 2.2,
   "Obtaining the Configuration Service Domain", the UA MUST construct
   an HTTPS URL [RFC2818] with which to request configuration.
   Constructing this URL consists of two parts:



Lawrence & Elwell             Informational                     [Page 8]
^L
RFC 6011                  SIP UA Configuration              October 2010


   o  Section 2.3.1, "Obtaining a Configuration Service Base URL"

   o  Section 2.3.2, "Adding Configuration Request Parameters"

2.3.1.  Obtaining a Configuration Service Base URL

   The Configuration Service Domain is resolved to one or more URLs
   using the URI-enabled Naming Authority Pointer (U-NAPTR) DDDS
   application defined in "Domain-Based Application Service Location
   Using URIs and the Dynamic Delegation Discovery Service (DDDS)"
   [RFC4848].

   The lookup key for the U-NAPTR request is the Configuration Service
   Domain name determined in Section 2.2, "Obtaining the Configuration
   Service Domain".  The UA MUST make a DNS request for NAPTR records
   for that domain name.  From the returned records, the UA MUST select
   those whose Service field value is "SFUA.CFG"; from those records,
   the UA MUST extract the HTTPS URL of the Configuration Service from
   the Regular Expression field (see next paragraph for the construction
   of that field value).

   The NAPTR records for the Configuration Service Domain name whose
   Service field value is "SFUA.CFG" MUST be configured with the Flag
   field set to "U", an empty Substitution field, and a Regular
   Expression field value of the following syntax (i.e., a regular
   expression to replace the domain name with an https URI):

             u-naptr-regexp = "!.*!" <URI> "!"

   where <URI> is as defined in STD 66 [RFC3986], the URI syntax
   specification, and where the scheme of the URI is "https".

   Note that the UA does not need to implement a general regular
   expression evaluator in order to process the record above correctly.
   The URI value can be extracted by stripping the fixed value "!^.*!"
   from the beginning of the value, and "!" from the end of the value to
   obtain the base URL.  See Section 2.3.3, "Configuration Request URI
   Example".

2.3.1.1.  Configuration Service Redundancy

   Multiple Configuration Servers can be used to provide redundancy and
   additional capacity for provisioning User Agents.  If the DNS NAPTR
   request for the Configuration Service Domain name returns multiple
   records with the 'SFUA.CFG' service tag, then the UA should treat the
   resulting URLs as alternatives, ordered according to the rules for
   the priority and weight as specified for NAPTR records.




Lawrence & Elwell             Informational                     [Page 9]
^L
RFC 6011                  SIP UA Configuration              October 2010


   In addition to redundancy provided by multiple NAPTR records,
   resolution of the host part of the HTTPS URL can produce multiple
   results.

2.3.1.2.  Configuration Service Name to Base URL Resolution Failure

   If the DNS request to resolve the Configuration Service Domain name
   to a request URL does not receive any response, the UA should follow
   standard DNS retry procedures.

   If the DNS request to resolve the Configuration Service Domain name
   to a host name returns a response that indicates that no matching
   result is available (NXDOMAIN), the UA SHOULD attempt to obtain
   another Configuration Service Domain name using the procedures in
   Section 2.2, "Obtaining the Configuration Service Domain".

2.3.2.  Adding Configuration Request Parameters

   To construct the full configuration request URL, the UA adds one or
   more parameters to the base URLs to specify what configuration the UA
   is requesting.

   1.  The UA MUST add all parameters from those defined in the
       Configuration Request Parameters list below for which the UA has
       a value.  Any parameter from that set for which the UA does not
       have a value MUST be omitted.

   2.  The query parameter names defined by this specification all begin
       with the prefix 'sfua-'.  All names beginning with the prefix
       'sfua-' are reserved for this specification and future revisions.
       The UA MUST NOT include any request parameter whose name begins
       with the prefix 'sfua-' that is not defined by this specification
       (including any future revisions).

   3.  Any parameter not defined by the specification is allowed, but
       MUST be ignored by any Configuration Service that does not
       recognize it.

2.3.2.1.  Configuration Request Parameters

      The following parameters are defined for the configuration
      request.  Section 4.4 creates an IANA registry for these and any
      parameters defined in the future.








Lawrence & Elwell             Informational                    [Page 10]
^L
RFC 6011                  SIP UA Configuration              October 2010


   sfua-id

      The URN identifying the User Agent, constructed as specified in
      Section 4.1 of [RFC5626] "Managing Client-Initiated Connections in
      the Session Initiation Protocol (SIP)".

      Since the procedure defined by [RFC5626] allows any UA to
      construct a value for this parameter, the sfua-id parameter MUST
      always be included.

      If the UA implements [RFC5626], and includes the '+sip.instance'
      Contact header field parameter in any request, when requesting
      configuration it MUST use the same value for the sfua-id
      parameter.

   sfua-user

      An identifier for a user associated with the configuration.  Note
      that this might be different than any SIP 'user' in the UA
      configuration: it could, for example, be the login name of an
      account on the service provider web site.  The syntax of this
      parameter is that of the 'userid' [RFC2617].

      See Section 2.4.1, "Configuration Data Request Authentication" for
      how this parameter relates to authentication of the configuration
      data request.

   sfua-vendor

      An identifier that specifies the vendor of the User Agent.  The
      syntax of the value of this parameter is that of a DNS domain.
      The domain value MUST be that of a domain owned by the vendor.

   sfua-model

      An identifier that further specifies the User Agent from among
      those produced by the vendor.  The syntax of the value of this
      parameter is the same as the 'token' [RFC3261].  Values for this
      parameter are selected by the vendor.

   sfua-revision

      An identifier that further specifies the User Agent from among
      those produced by the vendor.  The syntax of the value of this
      parameter is the same as the 'token' [RFC3261].  Values for this
      parameter are selected by the vendor.





Lawrence & Elwell             Informational                    [Page 11]
^L
RFC 6011                  SIP UA Configuration              October 2010


2.3.3.  Configuration Request URI Example

   Using the rules in Section 2.2, "Obtaining the Configuration Service
   Domain", the UA has determined that the Configuration Service Domain
   value is "example.net".  To obtain the base URL, the UA constructs
   the DNS NAPTR request for "example.net.", which returns the DNS
   records:

   NAPTR  10 10 "u" "SFUA.CFG" "!^.*$!https://p1.example.net/cfg!" ""
   NAPTR 100 10 "u" "SFUA.CFG" "!^.*$!https://p2.example.net/cfg!" ""
   NAPTR  90 50 "s" "SIP+D2T"  ""  _sip._tcp.example.net.
   NAPTR 100 50 "s" "SIP+D2U"  ""  _sip._udp.example.net.

        Figure 1: Example Configuration Service NAPTR Query Results

   The records with the service-field "SFUA.CFG" each provide a base URL
   value for SIP UA configuration requests.

   Our hypothetical example communications device is a 'HypoComm'
   version 2.1, made by ExampleCorp, and has the link layer MAC address
   of 00:11:22:33:44:55.  It does not have any prior knowledge of a user
   identity for which to request configuration, so it constructs query
   parameters using the values it does have, combining each with the
   base URL to create these request URLs (lines wrapped for
   readability):

   https://p1.example.net/cfg
      ?sfua-id=urn:uuid:00000000-0000-1000-8000-001122334455
      &sfua-vendor=examplecorp.com
      &sfua-model=HypoComm
      &sfua-revision=2.1
   https://p2.example.net/cfg
      ?sfua-id=urn:uuid:00000000-0000-1000-8000-001122334455
      &sfua-vendor=examplecorp.com
      &sfua-model=HypoComm
      &sfua-revision=2.1

               Figure 2: Example Configuration Request URLs













Lawrence & Elwell             Informational                    [Page 12]
^L
RFC 6011                  SIP UA Configuration              October 2010


2.4.  Obtaining Configuration from the Configuration Service

   To request configuration using a URL constructed as specified in
   Section 2.3, "Constructing the Configuration Request URL" the User
   Agent MUST do an HTTPS GET request to each of the URLs until a
   configuration that the UA can use is returned in response to one of
   the requests.

   A successful final response from the Configuration Service to a GET
   request for configuration data MUST contain configuration data for
   the UA in the HTTP response body.  Note that the full capabilities of
   HTTP as specified in [RFC2616] are available to the CS, so responses
   such as redirection can be used by the CS as a part of the process of
   providing configuration data.

   Configuration data returned in a successful response is subject to
   change by the CS.  The HTTP cache control metadata (the max-age
   directive value from any Cache-Control header, and the Etag and Last-
   Modified header values) returned in the response that provides
   configuration data is used to determine when a configuration change
   has occurred (Section 2.5.1.3, "Configuration Change Notices") and to
   validate any stored configuration data (Section 2.6, "Validity of
   Stored Configuration Data").

   o  An HTTP response from the CS that provides configuration data MUST
      include cache control metadata sufficient to ensure that when a
      new configuration is available, the cache control information for
      that new data is different.

   o  The UA MUST retain all of the HTTP cache control metadata from any
      response that provides configuration data.

2.4.1.  Configuration Data Request Authentication

   Since the Configuration Request URL scheme is HTTPS, the UA MUST
   always use Transport Layer Security (TLS) [RFC5246] to establish a
   connection with the Configuration Service.

   The UA MUST provide a server_name extension in the TLS Client Hello
   message as defined in [RFC4366] "Transport Layer Security (TLS)
   Extensions", whose value is the Configuration Service Domain name
   (note that this might not be the same as the host part of the CS base
   URL).  This allows the CS to identify and provide a server
   certificate containing the desired identity (allowing for a single
   server to serve multiple domain names).






Lawrence & Elwell             Informational                    [Page 13]
^L
RFC 6011                  SIP UA Configuration              October 2010


   A UA MUST attempt to validate the server certificate provided by the
   CS, in accordance with the rules defined in Section 3.1 of [RFC2818].
   Unfortunately, the validation attempt might fail (e.g., because the
   UA might not have in firmware a trusted root CA cert to which the CS
   certificate chain can be connected or because the root CA cert has
   expired since the UA firmware was last updated).  If the UA is unable
   to validate the server certificate provided by the CS, the UA SHOULD
   store the server certificate and alert the user if that CS host
   provides a different certificate in the future.  Although this 'trust
   on first use' model is not as secure as certificate validation, it
   does give some protection against man-in-the-middle (MITM) attacks in
   the future.

   If it has one, the UA MUST provide a client certificate.  The CS MUST
   validate the UA client's certificate, if one is provided.  If the CS
   is unable to authenticate the certificate provided by the UA (for
   example, the UA is using a self-signed certificate), then the CS MAY
   choose to cache the certificate, provided that the UA successfully
   authenticates using HTTP authentication (see next paragraph).  This
   allows a CS to treat the digest authentication credentials as a
   single-use password to authenticate the client certificate.  This
   'trust on first use' model provides protection against future MITM
   attacks, provided that the initial communication is not compromised.

   If the CS requires HTTP authentication of the configuration data
   request, the HTTP 'username' parameter used MUST be the same value as
   the sfua-user value provided in the configuration data request
   parameters.  The UA MUST implement both Basic and Digest
   authentication as specified by [RFC2617].

2.4.2.  Configuration Data Request Failure

   The HTTP configuration data request can fail in a number of ways; the
   error handling for each is defined below:

   o  If a DNS request to resolve the host name in the request URL
      returns a response that indicates that no matching result is
      available (NXDOMAIN), the UA MUST remove that request URL from the
      list of alternatives for the Configuration Service Domain.

   o  If the attempt to open a TCP connection to the host in the request
      URL fails, the UA MAY attempt requests to any alternative URLs for
      the same configuration service without waiting between
      alternatives, but any requests to the same host MUST wait between
      requests according to the procedure defined in Section 2.7, "Retry
      Backoff Procedure".





Lawrence & Elwell             Informational                    [Page 14]
^L
RFC 6011                  SIP UA Configuration              October 2010


   o  If the TCP connection succeeds but the TLS handshake fails,
      including failure of the UA to validate the certificate provided
      by the Configuration Service host (if the UA is capable of
      validation), the UA MUST remove the failed URL from the list of
      alternative URLs for this Configuration Service Domain.

   o  If the request returns a permanent HTTP failure response (response
      code >= 400, and does not contain a Retry-After header field), the
      UA MUST remove the failed URL from the list of alternatives for
      this Configuration Service Domain.

   o  If the list of alternatives for this Configuration Service Domain
      becomes empty, the UA MUST attempt to obtain another Configuration
      Service Domain name using the procedures in Section 2.2,
      "Obtaining the Configuration Service Domain".

   o  If the UA has reached its chosen maximum number of retries (this
      specification does not specify a maximum number of retries, but
      any retries to the same host MUST follow the procedure defined in
      Section 2.7, "Retry Backoff Procedure"), the UA MAY attempt to
      obtain another Configuration Domain name using the procedures in
      Section 2.2, "Obtaining the Configuration Service Domain".

2.5.  Configuration Changes

   The configuration data provided by the CS is subject to change.  This
   specification provides for two mechanisms by which the UA discovers
   that a configuration change is available:

   o  SIP subscription by the UA to the CS for notification of changes
      to the configuration data.

   o  HTTP polling by the UA of the configuration data URL at the CS.

   The choice of mechanism is made by the Configuration Service and
   signaled to the UA in each HTTP response that provides configuration
   data.  In such a response, the CS MUST either:

   o  Indicate that the UA is to subscribe for change notifications by
      including a Link header in the response with the link relation
      'monitor' and SIP URI.  This choice is specified in Section 2.5.1,
      "Configuration Change Subscriptions".

   o  Indicate that the UA is to poll for updates using HTTP by not
      including a Link header with the link relation 'monitor'.  This
      choice is specified in Section 2.5.2, "Configuration Change
      Polling".




Lawrence & Elwell             Informational                    [Page 15]
^L
RFC 6011                  SIP UA Configuration              October 2010


   A User Agent MUST support both mechanisms, and use the mechanism
   indicated by the Configuration Service.

2.5.1.  Configuration Change Subscriptions

   If the CS chooses to use the SIP subscription mechanism, it MUST
   include a Link header in the HTTP configuration data response as
   specified by [RFC5989]; the URI value in the Link header MUST be a
   SIP URI, and the link relation ('rel' attribute) value MUST be
   'monitor'.  The 'monitor-group' relation MUST NOT be used -- see
   below for rules regarding monitoring of multiple configuration data
   resources.  The SIP URI returned in the Link header is the
   'configuration change subscription URI'.

   A UA that receives a successful configuration data response with a
   Link header that specifies a 'monitor' relation MUST attempt to
   maintain a subscription to the SIP URI from the Link header in that
   response for the http-monitor event package.  This subscription is
   referred to herein as a "configuration change subscription".

   The CS MUST accept properly authenticated SUBSCRIBE requests from the
   UA for the http-monitor event package at the URI it provided in the
   Link header of a configuration data response.  Authentication of the
   SUBSCRIBE request uses any standard SIP authentication mechanism with
   credentials supplied to the UA in the configuration data.

   Configuration data MAY include references in the form of additional
   URLs at the CS that the UA MUST use to obtain additional data.  Any
   response to requests for these additional URLs that provide
   configuration data MUST provide cache control data and a
   configuration change subscription URI.  The CS MAY return a unique
   configuration change subscription URI for each configuration data
   request, or MAY return the same SIP URI for different requests, so
   long as a change to the configuration data returned in any of these
   request results in notification on all subscriptions to the
   associated subscription URI.

   If the CS returns a unique configuration change subscription URI in
   the Link header of different configuration data requests:

   o  The UA MUST maintain multiple subscriptions; one to each URI
      associated with configuration data the UA is using.

   If the CS returns the same configuration change subscription URI in
   the Link header of different configuration data requests:

   o  The UA is not required to create multiple subscriptions to the
      same URI.



Lawrence & Elwell             Informational                    [Page 16]
^L
RFC 6011                  SIP UA Configuration              October 2010


   o  The UA MUST associate the URI with each of the configuration data
      requests for which it was returned, and any NOTIFY or other change
      in the status of that subscription affects the validity of all of
      the associated configuration data.

   o  The CS MUST send a NOTIFY message on the configuration change
      subscription when there is a change to any of the different
      configuration data resources for which the subscription URI was
      returned.

2.5.1.1.  Change Subscription Failure

   If a configuration change SUBSCRIBE request (either the initial
   request or any attempt to refresh the subscription) is permanently
   rejected by the Configuration Service (the CS returns a failure
   response that is not an authentication challenge or redirection and
   does not specify a Retry-After header), the UA MUST consider the
   associated configuration data to be not valid and attempt to
   revalidate it as specified in Section 2.6.1, "Re-Validating
   Configuration Data".  Since the CS is not allowed to reject a
   properly authenticated request, this indicates a problem either with
   the configuration data or the CS.

   If a configuration change SUBSCRIBE request (either the initial
   request or any attempt to refresh the subscription) fails other than
   by being permanently rejected, the UA MUST consider the associated
   configuration data to be of unknown validity, and MUST retry the
   SUBSCRIBE request as specified in Section 2.7, "Retry Backoff
   Procedure"; the maximum time between retries MUST NOT be more than 30
   minutes, and the retries MUST continue as long as the configuration
   is used.  The UA MAY at any time return to any earlier step in the
   process of obtaining configuration data.

2.5.1.2.  Change Subscription Termination

   If the CS explicitly terminates the configuration change (http-
   monitor) subscription by sending a NOTIFY message with a
   Subscription-State header value of 'terminated', the UA MUST consider
   the configuration data to be of unknown validity.  If the rules for
   interpreting and acting on the 'reason' code parameter as specified
   in Section 3.2.4 of [RFC3265] allow, the UA MUST attempt to re-
   establish the subscription.  If those rules do not allow the UA to
   re-subscribe, then the UA MUST consider the data to be not valid and
   attempt to revalidate it as specified in Section 2.6.1, "Re-
   Validating Configuration Data".  The UA MAY at any time return to any
   earlier step in the process of obtaining configuration data.





Lawrence & Elwell             Informational                    [Page 17]
^L
RFC 6011                  SIP UA Configuration              October 2010


2.5.1.3.  Configuration Change Notices

   To inform the UA of a configuration data change, the CS MUST send a
   NOTIFY message to the UA in the configuration change subscription
   established by the UA as detailed in Section 2.5.1, "Configuration
   Change Subscriptions".

   The CS MUST NOT send unsolicited (out-of-dialog) NOTIFY messages.

   As specified in [RFC5989], the body of a NOTIFY message in the http-
   monitor event package is the HTTP headers that would have been
   returned in response to an HTTP HEAD request (a HEAD request returns
   the headers that would have been returned for a GET request to the
   same URI, but with no body).

   When a NOTIFY message is received by the UA in the configuration
   change subscription, the UA MUST compare the cache control data it
   retained when the configuration data was received with the HTTP
   header values in the NOTIFY message body.  If any of the cache
   control data in the HTTP header values differs from those in the
   original configuration data response, the UA MUST consider the stored
   configuration data to be no longer valid.  As soon as reasonably
   possible after the UA discovers that configuration data is no longer
   valid, the UA MUST attempt a GET request to the HTTPS configuration
   request URL which provided the configuration data to obtain the
   changed configuration data.

   If this HTTPS request to the URL that previously provided the
   configuration data fails, the UA MUST attempt to obtain a new URL as
   specified in Section 2.3, "Constructing the Configuration Request
   URL".

2.5.2.  Configuration Change Polling

   If the CS chooses to use the HTTP polling mechanism, it MUST NOT
   include a Link header with the relation 'monitor' in the HTTP
   configuration data response, and MUST include a Cache-Control header
   that specifies the max-age directive.  The max-age cache control
   directive in HTTP specifies the maximum number of seconds for which
   the returned data may be cached; this specification defines this time
   as being the maximum time the configuration data is considered valid.

   A short time before the validity time has passed, the UA SHOULD poll
   to revalidate the configuration data as described in Section 2.6.1,
   "Re-Validating Configuration Data".






Lawrence & Elwell             Informational                    [Page 18]
^L
RFC 6011                  SIP UA Configuration              October 2010


2.6.  Validity of Stored Configuration Data

   Configuration data stored by a UA is considered valid:

   o  If the CS chose to use the subscription mechanism to deliver
      change notices, and the UA has a subscription to the CS as
      described in Section 2.5.1, "Configuration Change Subscriptions"
      on which no NOTIFY message from the CS indicating that the
      configuration data has changed has been received.

   o  If the CS chose to use the HTTP polling method, and the number of
      seconds since the configuration data response was received is less
      than the time specified by the Cache-Control max-age directive in
      that response.

   When a UA initializes itself at any time other than immediately after
   receiving new configuration data, it MUST consider any stored
   configuration data to be of unknown validity.

   The UA MAY use configuration data that is of unknown validity, or
   configuration data that is known to be no longer valid, while
   attempting to revalidate that data or obtain new data.  There is no
   assurance that such configuration data is still useful, but the UA
   MAY choose to retain the data and to continue to use it.

2.6.1.  Re-Validating Configuration Data

   To revalidate stored configuration data of unknown validity, the UA
   MUST repeat the HTTPS GET request it used to obtain the stored
   configuration data, with the appropriate HTTP headers to make the
   request a conditional request using the cache control data returned
   in the response that provided the configuration data.  This allows
   the CS to respond either with a new configuration data response or a
   304 (Not Modified) response to indicate that the configuration data
   has not changed.

   If the CS responds with a 304 response, and the original response
   included a Link header with the 'monitor' relation, the SIP UA MUST
   assume that the value of that Link header is also still correct (in
   effect, the HTTP cache control values and the subscription URL are a
   part of the configuration data), and so the UA MUST attempt to create
   and maintain a subscription to that URL as when the configuration
   data was first obtained (Section 2.5.1, "Configuration Change
   Subscriptions").







Lawrence & Elwell             Informational                    [Page 19]
^L
RFC 6011                  SIP UA Configuration              October 2010


   If the CS chooses to use the HTTP polling method, then any 304
   response MUST include a Cache-Control header containing a max-age
   directive, and the UA MUST use this new value as the maximum validity
   time for the associated configuration data.

   If the HTTP request to revalidate the configuration fails, the UA
   MUST follow the procedures defined for a failure of the initial HTTP
   configuration data request as specified in Section 2.4.2,
   "Configuration Data Request Failure".

2.7.  Retry Backoff Procedure

   In case of certain possible failures as described above, the
   appropriate response is to retry the failed operation.  In all of
   these retry cases, the following rules apply:

   o  The UA SHOULD retry at least 5 times before abandoning the failed
      step (except as allowed for in specific error handling rules
      above).

   o  Following the first instance of a given failure, the UA MUST
      select an initial backoff timer value randomly between 2 and 8,
      inclusive, and wait this number of seconds before retrying the
      failed request.

   o  Following any subsequent instance of a given failure, the UA MUST
      increase the backoff timer value by 2 raised to the power of the
      number of preceding failures (2^N where N is the number of
      previous failures), and wait this increased number of seconds or
      the maximum interval specified by specific error handling
      procedures, whichever is less, before retrying the failed request.

   For example, after an initial failure, the UA randomly chooses an
   initial backoff timer value of 4 seconds, followed by retries at the
   following times: 6 seconds (4 + 2^1), 10 seconds (6 + 2^2), 18
   seconds (10 + 2^3), 34 seconds (18 + 2^4), and 66 seconds (34 + 2^5).

3.  Configuration Data

   This document does not specify the form or content of configuration
   data.  As such, the contents of this section are non-normative.

3.1.  Configuration Data Items

   The configuration data for a SIP UA should, at minimum, include items
   with the following semantics.





Lawrence & Elwell             Informational                    [Page 20]
^L
RFC 6011                  SIP UA Configuration              October 2010


3.1.1.  Address-of-Record

   The Address-of-Record (AOR) is a SIP or SIPS URI that identifies the
   user of the device as specified in [RFC3261].

3.1.2.  Realm

   The realm is used to populate the realm parameter in the SIP Proxy-
   Authorization header as specified in [RFC3261] when the UA receives
   an authentication challenge.

3.1.3.  Username

   The username is used to populate the username parameter in the SIP
   Proxy-Authorization header as specified in [RFC3261] when the UA
   receives an authentication challenge.

3.1.4.  Digest

   The digest is a string containing the digest of the username, realm,
   and password as specified in [RFC2617] and is used to generate a
   response to an authentication challenge as specified in [RFC3261].

3.1.5.  OutboundProxy

   The OutboundProxy if defined contains the default outbound proxy
   through which SIP requests, not explicitly routed, are routed as
   specified in [RFC3261].

3.2.  Reset User Agent to Default Configuration

   The earlier sections of this document define methods by which the UA
   can be automatically provisioned.  Some User Agents allow certain
   user specific settings (e.g., Contact Directory, specialized ring-
   tones, etc.) to be set by a user, and possibly stored locally in the
   User Agent.  Since it may be necessary to later re-assign a UA,
   designers of configuration data formats may want to provide for
   explicit controls for any such locally configured settings, including
   the ability to explicitly delete them to return the UA to a
   completely unconfigured state.

4.  IANA Considerations

4.1.  DHCP SIP User Agent Configuration Service Domains Option

   This specification defines DHCP option code 141, the "SIP UA
   Configuration Service Domains" for inclusion in the IANA registry
   "BOOTP Vendor Extensions and DHCP Options" defined by [RFC2939].



Lawrence & Elwell             Informational                    [Page 21]
^L
RFC 6011                  SIP UA Configuration              October 2010


       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |      141      |     Len       |         Searchstring...       |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                     Searchstring...                           |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   In the above diagram, Searchstring is a string specifying the
   searchlist.  If the length of the searchlist exceeds the maximum
   permissible within a single option (255 octets), then multiple
   options MAY be used, as described in [RFC3396] "Encoding Long DHCP
   Options in the Dynamic Host Configuration Protocol (DHCPv4)".

   To enable the searchlist to be encoded compactly, searchstrings in
   the searchlist MUST be concatenated and encoded using the technique
   described in Section 4.1.4 of [RFC1035], "Domain Names -
   Implementation and Specification".  In this scheme, an entire domain
   name or a list of labels at the end of a domain name is replaced with
   a pointer to a prior occurrence of the same name.  Despite its
   complexity, this technique is valuable since the space available for
   encoding DHCP options is limited, and it is likely that a domain
   searchstring will contain repeated instances of the same domain name.
   Thus, the DNS name compression is both useful and likely to be
   effective.

   For use in this specification, the pointer refers to the offset
   within the data portion of the DHCP option (not including the
   preceding DHCP option code byte or DHCP option length byte).

   If multiple SIP UA Configuration Service Domains options are present,
   then the data portions of all the SIP UA Configuration Service
   Domains options are concatenated together as specified in RFC 3396,
   and the pointer indicates an offset within the complete aggregate
   block of data.

   For examples of encoding this option, see Section 3 of [RFC3397],
   "Dynamic Host Configuration Protocol (DHCP) Domain Search Option",
   which uses the same encoding for option 119.

4.2.  DHCPv6 SIP User Agent Configuration Service Domains Option

   This specification defines DHCPv6 option code 58,
   OPTION_SIP_UA_CS_LIST, for inclusion in the IANA registry "Dynamic
   Host Configuration Protocol for IPv6 (DHCPv6), DHCP Option Codes"
   defined by RFC 3315.





Lawrence & Elwell             Informational                    [Page 22]
^L
RFC 6011                  SIP UA Configuration              October 2010


   The format of the SIP User Agent Configuration Service Domains option
   is:

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |     OPTION_SIP_UA_CS_LIST     |         option-len            |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                          searchlist                           |
      |                              ...                              |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   option-code OPTION_SIP_UA_CS_LIST (58)

   option-len  Length of the 'searchlist' field in octets

   searchlist  The specification of the list of domain names in the SIP
               User Agent Configuration Service Domains

   The list of domain names in the 'searchlist' MUST be encoded as
   specified in Section 8, "Representation and Use of Domain Names" of
   RFC 3315.

4.3.  U-NAPTR Registration

   This document registers the following U-NAPTR application service tag
   in the registry defined by [RFC3958], "Domain-Based Application
   Service Location Using SRV RRs and the Dynamic Delegation Discovery
   Service (DDDS)":

                  +-------------------------+----------+
                  | Application Service Tag | SFUA.CFG |
                  +-------------------------+----------+

   This tag is used to obtain the base URL of the Configuration Service
   from the DNS name of a SIP domain as specified in Section 2.3.1,
   "Obtaining a Configuration Service Base URL".

4.4.  SIP Forum User Agent Configuration Parameter Registry

   IANA has established a registry for "SIP Forum User Agent
   Configuration Parameters".  This registry records the HTTPS request
   parameters for the initial configuration data request sent by a User
   Agent to a Configuration Service as described in Section 2.3.2,
   "Adding Configuration Request Parameters".






Lawrence & Elwell             Informational                    [Page 23]
^L
RFC 6011                  SIP UA Configuration              October 2010


   Each entry in the registry must include the Parameter Name and a
   Description that specifies the value syntax and usage of the
   parameter:

   Parameter Name  The name of the parameter, which MUST match the ABNF
                   production for 'token' from [RFC3261].

   Value Syntax  The syntax of the value, if any (a parameter may just
                 be a name with no associated value).

   Usage       The purpose served by the parameter, including any
               default method the UA should use to construct it if
               applicable.

   The initial values for the registry are the parameters described in
   Section 2.3.2.1, "Configuration Request Parameters".  The policy for
   future additions to this registry depends on the parameter name
   value:

      If the name of the parameter begins with the characters 'sfua-' in
      any case, then the policy for addition to this registry is "RFC
      Required" as described by [RFC5226].

      Any other parameter entry may be added to this registry using a
      "First Come First Served" policy as described by [RFC5226].

5.  Security Considerations

   Initial discovery of the Configuration Service Domain name relies on
   a number of operations that are normally unsecured: a DHCP response
   could be provided by an attacker to replace the values of any of the
   IP Network Parameters (Section 2.1.2, "Network Layer Provisioning")
   including the Local Network Domain which is the default choice for
   the Configuration Service Domain name.  Confirmation by the human
   user of the Configuration Service Domain name, especially when it
   differs from a previously used value, could be used to mitigate this
   (perhaps unintentional) potential reconfiguration.  Note that
   previously loaded configuration MAY constrain which parts of the
   discovery and location procedures are used: for example, the
   Configuration Service Domain name might be fixed so that it cannot be
   modified by discovery.

   The connection to the Configuration Service is made over TLS.  As the
   TLS server, the CS always provides a server certificate during the
   TLS handshake; if possible, the UA should validate that certificate
   and confirm that it contains as a subject the Configuration Service
   Domain name or at least the host name from the Configuration Service
   Base URL (see [RFC2818]).  While it may not be possible to have the



Lawrence & Elwell             Informational                    [Page 24]
^L
RFC 6011                  SIP UA Configuration              October 2010


   information needed to perform a full validation of the CS server
   certificate prior to the first configuration (for example, the UA may
   not have a current CA certificate for the CA that signs the CS server
   certificate), implementors are advised to provide that information in
   configuration data so that it can be used for subsequent
   reconfigurations; this narrows the window of vulnerability to the
   first configuration attempt.

   To secure initial configuration attempts, the CS can deny requests
   from unknown devices and/or could implement other measures such as
   restricting the time window during which it will accept an initial
   configuration request from a given device.  A more secure approach
   would be to provide the user with a password, perhaps a one-time
   password valid only for the initial access.  In high security
   environments, the Configuration Service could require that the User
   Agent provide a client certificate for authentication in the TLS
   connection for configuration data requests.  This would necessitate
   some prior manual configuration of the User Agent, and possibly the
   Configuration Service, and that configuration should also include
   sufficient information for the UA to fully validate the CS
   certificate.

   The values of some or all of the request parameters sent by the UA on
   the initial request for configuration data (see Section 2.3.2,
   "Adding Configuration Request Parameters") may be sensitive
   information.  Since the configuration data request is made over a TLS
   connection, the confidentiality of that information is protected on
   the network.  Configuration Service implementations should take all
   necessary measures to ensure that the request parameter data is
   appropriately protected within the CS itself.

   The Configuration Change Request Subscription (Section 2.5.1,
   "Configuration Change Subscriptions") is established only after the
   configuration data has been loaded by the User Agent, so all security
   mechanisms available in SIP (including request digest authentication
   and the use of TLS) can be configured and required by either the CS
   or the UA.  Note that a configuration change notice does not actually
   provide any new configuration data, nor can it change where the UA
   sends a request for the new configuration data.  This means that an
   attacker cannot reconfigure a UA by subverting only the change notice
   subscription; the most the attacker can do is trigger checks for new
   data.  In order to actually modify the configuration data itself, the
   attacker must subvert the CS or the steps leading to the CS discovery
   (subject to the checks described above).

   Implementations of TLS typically support multiple versions of the
   Transport Layer Security protocol as well as the older Secure Sockets
   Layer (SSL) protocol.  Because of known security vulnerabilities, SIP



Lawrence & Elwell             Informational                    [Page 25]
^L
RFC 6011                  SIP UA Configuration              October 2010


   UAs, SIP Service Provider, and the Configuration Service Host MUST
   NOT request, offer, or use SSL 2.0.  See Appendix E.2 of [RFC5246]
   for further details.

6.  Acknowledgements

   Contributing Members of the SIP Forum User Agent Configuration
   Working Group:

      Francois Audet, Nortel Networks, Inc.

      Eric Burger, SIP Forum

      Sumanth Channabasappa, Cable Television Laboratories, Inc.
      (CableLabs)

      Martin Dolly, AT&T Labs

      John Elwell, Siemens Enterprise Communications

      Marek Dutkiewicz, Polycom, Inc.

      Andy Hutton, Siemens Enterprise Communications

      Lincoln Lavoie, University of New Hampshire

      Scott Lawrence, Avaya, Inc.

      Paul Mossman, Avaya, Inc.

      Michael Procter, VoIP.co.uk

      Marc Robins, SIP Forum

      Henning Schulzrinne, Columbia University

      Rifaat Shekh-Yusef, Avaya, Inc.

      Robert Sparks, Tekelec

      Simo Veikkolainen, Nokia

   The Editor would like to also acknowledge valuable contributions by
   Leslie Daigle and Margaret Wasserman.







Lawrence & Elwell             Informational                    [Page 26]
^L
RFC 6011                  SIP UA Configuration              October 2010


7.  Normative References

   [RFC1034]  Mockapetris, P., "Domain names - concepts and facilities",
              STD 13, RFC 1034, November 1987.

   [RFC1035]  Mockapetris, P., "Domain names - implementation and
              specification", STD 13, RFC 1035, November 1987.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC2131]  Droms, R., "Dynamic Host Configuration Protocol",
              RFC 2131, March 1997.

   [RFC2132]  Alexander, S. and R. Droms, "DHCP Options and BOOTP Vendor
              Extensions", RFC 2132, March 1997.

   [RFC2616]  Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
              Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
              Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.

   [RFC2617]  Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S.,
              Leach, P., Luotonen, A., and L. Stewart, "HTTP
              Authentication: Basic and Digest Access Authentication",
              RFC 2617, June 1999.

   [RFC2818]  Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000.

   [RFC2939]  Droms, R., "Procedures and IANA Guidelines for Definition
              of New DHCP Options and Message Types", BCP 43, RFC 2939,
              September 2000.

   [RFC3261]  Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
              A., Peterson, J., Sparks, R., Handley, M., and E.
              Schooler, "SIP: Session Initiation Protocol", RFC 3261,
              June 2002.

   [RFC3265]  Roach, A., "Session Initiation Protocol (SIP)-Specific
              Event Notification", RFC 3265, June 2002.

   [RFC3315]  Droms, R., Bound, J., Volz, B., Lemon, T., Perkins, C.,
              and M. Carney, "Dynamic Host Configuration Protocol for
              IPv6 (DHCPv6)", RFC 3315, July 2003.

   [RFC3319]  Schulzrinne, H. and B. Volz, "Dynamic Host Configuration
              Protocol (DHCPv6) Options for Session Initiation Protocol
              (SIP) Servers", RFC 3319, July 2003.




Lawrence & Elwell             Informational                    [Page 27]
^L
RFC 6011                  SIP UA Configuration              October 2010


   [RFC3396]  Lemon, T. and S. Cheshire, "Encoding Long Options in the
              Dynamic Host Configuration Protocol (DHCPv4)", RFC 3396,
              November 2002.

   [RFC3397]  Aboba, B. and S. Cheshire, "Dynamic Host Configuration
              Protocol (DHCP) Domain Search Option", RFC 3397,
              November 2002.

   [RFC3958]  Daigle, L. and A. Newton, "Domain-Based Application
              Service Location Using SRV RRs and the Dynamic Delegation
              Discovery Service (DDDS)", RFC 3958, January 2005.

   [RFC3986]  Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
              Resource Identifier (URI): Generic Syntax", STD 66,
              RFC 3986, January 2005.

   [RFC4366]  Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J.,
              and T. Wright, "Transport Layer Security (TLS)
              Extensions", RFC 4366, April 2006.

   [RFC4848]  Daigle, L., "Domain-Based Application Service Location
              Using URIs and the Dynamic Delegation Discovery Service
              (DDDS)", RFC 4848, April 2007.

   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an
              IANA Considerations Section in RFCs", BCP 26, RFC 5226,
              May 2008.

   [RFC5626]  Jennings, C., Mahy, R., and F. Audet, "Managing Client-
              Initiated Connections in the Session Initiation Protocol
              (SIP)", RFC 5626, October 2009.

   [RFC5246]  Dierks, T. and E. Rescorla, "The Transport Layer Security
              (TLS) Protocol Version 1.2", RFC 5246, August 2008.

   [RFC5989]  Roach, A., "A SIP Event Package for Subscribing to Changes
              to an HTTP Resource", October 2010.

   [ANSI.TIA-1057-2006]
              American National Standards Institute, "Telecommunications
              IP Telephony Infrastructure Link Layer Discovery Protocol
              for Media Endpoint Devices", April 1993.









Lawrence & Elwell             Informational                    [Page 28]
^L
RFC 6011                  SIP UA Configuration              October 2010


Authors' Addresses

   Scott Lawrence (editor)
   Linden Research, Inc.

   EMail: scott-ietf@skrb.org


   John Elwell
   Siemens Enterprise Communications

   Phone: +44 1908 817801
   EMail: john.elwell@siemens-enterprise.com






































Lawrence & Elwell             Informational                    [Page 29]
^L