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 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909
|
<pre>Network Working Group A. Newton
Request for Comments: 3981 VeriSign, Inc.
Category: Standards Track M. Sanz
DENIC eG
January 2005
<span class="h1">IRIS: The Internet Registry Information Service (IRIS) Core Protocol</span>
Status of This Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (2005).
Abstract
This document describes an application layer client-server protocol
for a framework to represent the query and result operations of the
information services of Internet registries. Specified in the
Extensible Markup Language (XML), the protocol defines generic query
and result operations and a mechanism for extending these operations
for specific registry service needs.
Table of Contents
<a href="#section-1">1</a>. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-2">2</a>
<a href="#section-1.1">1.1</a>. Use of XML . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-2">2</a>
<a href="#section-1.2">1.2</a>. General Concepts . . . . . . . . . . . . . . . . . . . . <a href="#page-3">3</a>
<a href="#section-1.3">1.3</a>. Framework Layers . . . . . . . . . . . . . . . . . . . . <a href="#page-4">4</a>
<a href="#section-1.4">1.4</a>. Definitions . . . . . . . . . . . . . . . . . . . . . . <a href="#page-4">4</a>
<a href="#section-1.5">1.5</a>. Further Reading . . . . . . . . . . . . . . . . . . . . <a href="#page-5">5</a>
<a href="#section-2">2</a>. Document Terminology . . . . . . . . . . . . . . . . . . . . . <a href="#page-5">5</a>
<a href="#section-3">3</a>. Protocol Identification . . . . . . . . . . . . . . . . . . . <a href="#page-5">5</a>
<a href="#section-4">4</a>. Exchange Description . . . . . . . . . . . . . . . . . . . . . <a href="#page-6">6</a>
<a href="#section-4.1">4.1</a>. Request Format . . . . . . . . . . . . . . . . . . . . . <a href="#page-6">6</a>
<a href="#section-4.2">4.2</a>. Response Format . . . . . . . . . . . . . . . . . . . . <a href="#page-6">6</a>
<a href="#section-4.3">4.3</a>. Extension Framework . . . . . . . . . . . . . . . . . . <a href="#page-9">9</a>
<a href="#section-4.3.1">4.3.1</a>. Derived Elements . . . . . . . . . . . . . . . . <a href="#page-9">9</a>
<a href="#section-4.3.2">4.3.2</a>. Registry Type Identifier Requirements . . . . . <a href="#page-10">10</a>
<a href="#section-4.3.3">4.3.3</a>. Entity Classes . . . . . . . . . . . . . . . . . <a href="#page-10">10</a>
<a href="#section-4.3.4">4.3.4</a>. Names of Entities . . . . . . . . . . . . . . . <a href="#page-11">11</a>
<span class="grey">Newton & Sanz Standards Track [Page 1]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-2" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
<a href="#section-4.3.5">4.3.5</a>. References to Entities . . . . . . . . . . . . . <a href="#page-11">11</a>
<a href="#section-4.3.6">4.3.6</a>. Temporary Entities . . . . . . . . . . . . . . . <a href="#page-12">12</a>
<a href="#section-4.3.7">4.3.7</a>. <result> Derived Elements . . . . . . . . . . . <a href="#page-13">13</a>
<a href="#section-4.3.8">4.3.8</a>. <control> and <reaction> Elements . . . . . . . <a href="#page-16">16</a>
<a href="#section-4.4">4.4</a>. Relay Bags . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-18">18</a>
<a href="#section-5">5</a>. Database Serialization . . . . . . . . . . . . . . . . . . . . <a href="#page-19">19</a>
<a href="#section-6">6</a>. Formal XML Syntax . . . . . . . . . . . . . . . . . . . . . . <a href="#page-22">22</a>
<a href="#section-7">7</a>. The IRIS URI . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-37">37</a>
<a href="#section-7.1">7.1</a>. URI Definition . . . . . . . . . . . . . . . . . . . . . <a href="#page-37">37</a>
<a href="#section-7.2">7.2</a>. Transport Specific Schemes . . . . . . . . . . . . . . . <a href="#page-38">38</a>
<a href="#section-7.3">7.3</a>. URI Resolution . . . . . . . . . . . . . . . . . . . . . <a href="#page-38">38</a>
<a href="#section-7.3.1">7.3.1</a>. Registry Dependent Resolution . . . . . . . . . <a href="#page-38">38</a>
<a href="#section-7.3.2">7.3.2</a>. Direct Resolution . . . . . . . . . . . . . . . <a href="#page-39">39</a>
<a href="#section-7.3.3">7.3.3</a>. Transport and Service Location . . . . . . . . . <a href="#page-39">39</a>
<a href="#section-7.4">7.4</a>. IRIS URI Examples . . . . . . . . . . . . . . . . . . . <a href="#page-40">40</a>
<a href="#section-8">8</a>. Checklists . . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-41">41</a>
<a href="#section-8.1">8.1</a>. Registry Definition Checklist . . . . . . . . . . . . . <a href="#page-41">41</a>
<a href="#section-8.2">8.2</a>. Transport Mapping Checklist . . . . . . . . . . . . . . <a href="#page-42">42</a>
<a href="#section-9">9</a>. Internationalization Considerations . . . . . . . . . . . . . <a href="#page-42">42</a>
<a href="#section-10">10</a>. IANA Considerations . . . . . . . . . . . . . . . . . . . . . <a href="#page-43">43</a>
<a href="#section-11">11</a>. Security Considerations . . . . . . . . . . . . . . . . . . . <a href="#page-43">43</a>
<a href="#section-12">12</a>. References . . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-43">43</a>
<a href="#section-12.1">12.1</a>. Normative References . . . . . . . . . . . . . . . . . . <a href="#page-43">43</a>
<a href="#section-12.2">12.2</a>. Informative References . . . . . . . . . . . . . . . . . <a href="#page-45">45</a>
<a href="#appendix-A">A</a>. S-NAPTR and IRIS Uses . . . . . . . . . . . . . . . . . . . . <a href="#page-46">46</a>
<a href="#appendix-A.1">A.1</a>. Examples of S-NAPTR with IRIS. . . . . . . . . . . . . . <a href="#page-46">46</a>
<a href="#appendix-A.2">A.2</a>. Using S-NAPTR for Cohabitation . . . . . . . . . . . . . <a href="#page-47">47</a>
<a href="#appendix-B">B</a>. IRIS Design Philosophy . . . . . . . . . . . . . . . . . . . . <a href="#page-48">48</a>
<a href="#appendix-B.1">B.1</a>. The Basic Premise . . . . . . . . . . . . . . . . . . . <a href="#page-48">48</a>
<a href="#appendix-B.2">B.2</a>. The Lure of a Universal Client . . . . . . . . . . . . . <a href="#page-49">49</a>
<a href="#appendix-B.3">B.3</a>. Server Considerations . . . . . . . . . . . . . . . . . <a href="#page-49">49</a>
<a href="#appendix-B.4">B.4</a>. Lookups, Searches, and Entity Classes . . . . . . . . . <a href="#page-50">50</a>
<a href="#appendix-B.5">B.5</a>. Entities References, Search Continuations, and Scope . . <a href="#page-50">50</a>
<a href="#appendix-C">C</a>. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-51">51</a>
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-51">51</a>
Full Copyright Statement . . . . . . . . . . . . . . . . . . . . . <a href="#page-52">52</a>
<span class="h2"><a class="selflink" id="section-1" href="#section-1">1</a>. Introduction</span>
The specification outlined in this document is based on the
functional requirements described in CRISP [<a href="#ref-17" title=""Cross Registry Internet Service Protocol (CRISP) Requirements"">17</a>].
<span class="h3"><a class="selflink" id="section-1.1" href="#section-1.1">1.1</a>. Use of XML</span>
This document describes the specification for the Internet Registry
Information Service (IRIS), an XML text protocol intended to describe
the query types and result types of various registry information
services. IRIS is specified by using the Extensible Markup Language
<span class="grey">Newton & Sanz Standards Track [Page 2]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-3" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
(XML) 1.0 as described in [<a href="#ref-2" title=""Extensible Markup Language (XML) 1.0"">2</a>], XML Schema notation as described in
[<a href="#ref-4" title=""XML Schema Part 2: Datatypes"">4</a>] and [<a href="#ref-5" title=""XML Schema Part 1: Structures"">5</a>], and XML Namespaces as described in [<a href="#ref-3" title=""Namespaces in XML"">3</a>].
<span class="h3"><a class="selflink" id="section-1.2" href="#section-1.2">1.2</a>. General Concepts</span>
Each kind of Internet registry is identified by a registry type. The
identifier for a registry type is a Uniform Resource Name (URN) used
within the XML instances to identify the XML schema that formally
describes the set of queries, results, and entity classes allowed
within that type of registry.
The structure of these URNs makes no assumptions or restrictions on
the types of registries they identify. Therefore, IRIS may support
multiple registry types of a disparate or similar nature; it is only
a matter of definition. For instance, a single registry type may be
defined for domain name registries, and multiple registry types for
the various IP address registries.
A registry information server may handle queries and serve results
for multiple registry types. Each registry type that a particular
registry operator serves is a registry service instance.
IRIS and the XML schema formally describing IRIS do not specify any
registry, registry identifier, or knowledge of a particular service
instance or set of instances. IRIS is a specification for a
framework with which these registries can be defined, used and, in
some cases, interoperate. The framework merely specifies the
elements for registry identification and the elements that must be
used to derive queries and results.
This framework allows a registry type to define its own structure for
naming, entities, queries, etc., through the use of XML namespaces
and XML schemas (hence, a registry type MUST be identified by the
same URI that identifies its XML namespace). To be compliant, a
registry type's specification must extend from this framework.
The framework defines certain structures that can be common to all
registry types, such as references to entities, search continuations,
and entity classes. A registry type may declare its own definitions
for all of these, or it may mix its derived definitions with the base
definitions.
IRIS defines two types of referrals: an entity reference and a search
continuation. An entity reference indicates specific knowledge about
an individual entity, and a search continuation allows distributed
searches. Both referrals may span differing registry types and
instances. No assumptions or specifications are made about the
roots, bases, or meshes of entities.
<span class="grey">Newton & Sanz Standards Track [Page 3]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-4" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
<span class="h3"><a class="selflink" id="section-1.3" href="#section-1.3">1.3</a>. Framework Layers</span>
The IRIS framework can be thought of as having three layers.
-----------------------------
Registry-Specific |domain | address | etc... |
-----------------------------
Common-Registry | IRIS |
-----------------------------
Application-Transport | beep | iris-lwz | etc... |
-----------------------------
In this figure, "beep" refers to the Blocks Extensible Exchange
Protocol (BEEP) (see [<a href="#ref-20" title=""The Blocks Extensible Exchange Protocol Core"">20</a>]), and "iris-lwz" refers to a theoretical
UDP binding that uses compression.
The differing layers have the following responsibilities:
Registry-Specific :: defines queries, results, and entity classes
of a specific type of registry. Each specific type of registry is
identified by a URN.
Common-Registry :: defines base operations and semantics common to
all registry types such as search sets, result sets, and
referrals. It also defines the syntaxes for talking about
specific registry types.
Application-Transport :: defines the mechanisms for
authentication, message passing, connection and session
management, etc. It also defines the URI syntax specific to the
application-transport mechanism.
<span class="h3"><a class="selflink" id="section-1.4" href="#section-1.4">1.4</a>. Definitions</span>
For clarity, the following definitions are supplied:
o registry type -- A registry serving a specific function, such as a
domain registry or an address registry. Each type of registry is
assigned a URN.
o registry schema -- The definition for a registry type specifying
the queries, results, and entity classes.
o authority -- A reference to the server or set of servers
containing information.
o resolution method -- The technique used to locate an authority.
o entity class -- A group of entities with a common type or common
set of characteristics.
<span class="grey">Newton & Sanz Standards Track [Page 4]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-5" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
o entity name -- The identifier used to refer to a single entity
within an entity class.
o entity reference -- A pointer to an entity composed of an
authority, an optional resolution method, a registry type, an
entity class, and an entity name. One type of entity reference is
the IRIS URI (defined in <a href="#section-7">Section 7</a>).
The terms "derivative", "derive", and "derivation" are used with the
same meaning for deriving one type of element from another as
specified in XML_SS [<a href="#ref-5" title=""XML Schema Part 1: Structures"">5</a>].
<span class="h3"><a class="selflink" id="section-1.5" href="#section-1.5">1.5</a>. Further Reading</span>
<a href="#appendix-B">Appendix B</a> contains text answering the question, "Why IRIS?".
This document describes the structure at the core of IRIS. The
following documents describe the other aspects of IRIS relevant to
CRISP [<a href="#ref-17" title=""Cross Registry Internet Service Protocol (CRISP) Requirements"">17</a>]: iris-beep [<a href="#ref-1" title=""Using the Internet Registry Information Service (IRIS) over the Blocks Extensible Exchange Protocol (BEEP)"">1</a>] and iris-dreg [<a href="#ref-18" title=""IRIS: A Domain Registry (dreg) Type for the Internet Registry Information Service (IRIS)"">18</a>].
<span class="h2"><a class="selflink" id="section-2" href="#section-2">2</a>. Document Terminology</span>
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 <a href="https://www.rfc-editor.org/bcp/bcp14">BCP 14</a>, <a href="./rfc2119">RFC 2119</a> [<a href="#ref-8" title=""Key words for use in RFCs to Indicate Requirement Levels"">8</a>].
<span class="h2"><a class="selflink" id="section-3" href="#section-3">3</a>. Protocol Identification</span>
The root element of all request XML instances MUST be <request>. The
root element of all response XML instances MUST be <response>. These
elements identify the start of the IRIS elements, the XML namespace
used as the identifier for IRIS, and, optionally, the location of the
schema. These elements and the associated closing tag MUST be
applied to all requests and responses sent by both clients and
servers.
The use of the schema location attribute 'xsi:schemaLocation' is
OPTIONAL with respect to this specification, and IRIS implementations
MAY resolve it to retrieve the schema or MAY use a locally cached
version of the schema.
Versioning of the IRIS protocol is the responsibility of the
application-transport layer but MUST be associated with the XML
namespace [<a href="#ref-3" title=""Namespaces in XML"">3</a>] URI representing IRIS. A change in this URI indicates
a change of the underlying schema and, therefore, a new version of
the protocol (and vice versa).
<span class="grey">Newton & Sanz Standards Track [Page 5]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-6" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
<span class="h2"><a class="selflink" id="section-4" href="#section-4">4</a>. Exchange Description</span>
This section describes the request and response exchanges of the
protocol. The descriptions contained within this section refer to
XML elements and attributes and their relation to the exchange of
data within the protocol. These descriptions also contain
specifications outside the scope of the formal XML syntax.
Therefore, this section will use terms defined by <a href="./rfc2119">RFC 2119</a> [<a href="#ref-8" title=""Key words for use in RFCs to Indicate Requirement Levels"">8</a>] to
describe the specification outside the scope of the formal XML
syntax. While reading this section, please reference <a href="#section-6">Section 6</a> for
details on the formal XML syntax.
<span class="h3"><a class="selflink" id="section-4.1" href="#section-4.1">4.1</a>. Request Format</span>
A <request> element contains an optional <control> element and a set
of <searchSet> elements.
The <searchSet> elements enable a client to query a particular
registry type by using the URN identifying the registry type. This
can be found in one of its two children: <lookupEntity> and <query>.
The <lookupEntity> element describes the lookup of an entity in a
specific registry. This element has three attributes:
'registryType', 'entityClass', and 'entityName'. The 'registryType'
attribute contains the registry identifier for the registry type in
which the lookup operation will take place. The 'entityClass'
attribute contains the token identifying the index for which the
lookup operation will take place, and the 'entityName' attribute
contains the name of the entity to look up.
The <query> element is abstract and may not legally appear in an XML
instance. It provides the base type that registry schemas will use
to define derived query types. This derivation mechanism is
described in <a href="#section-4.3">Section 4.3</a>.
Each <searchSet> may also contain a <bag> element. When this element
appears as a child of <searchSet>, it MUST NOT contain the 'id'
attribute. For a description of the <bag> element, see <a href="#section-4.4">Section 4.4</a>.
The <control> element may contain one child element of any XML
namespace. This child element allows a client to signal a server for
special states or processing. An example of one such <control> child
element may be found in <a href="#section-4.3.8">Section 4.3.8</a>.
<span class="h3"><a class="selflink" id="section-4.2" href="#section-4.2">4.2</a>. Response Format</span>
The <response> element contains an optional <reaction> element, a set
of <resultSet> elements, and an optional <bags> element.
<span class="grey">Newton & Sanz Standards Track [Page 6]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-7" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
The <resultSet> elements are responses to a <searchSet> request. The
contents of this element contain an <answer> element, an optional
<additional> element, and error elements, if applicable.
The children of the <answer> element are of the following types:
o <result> is an abstract element and may not be legally placed in
an XML instance. It provides the base type to be used by registry
schemas to define derived result types. This derivation mechanism
is described in <a href="#section-4.3">Section 4.3</a>.
o <entity> is an element specifying an entity reference. See
<a href="#section-4.3.5">Section 4.3.5</a>.
o The <searchContinuation> element specifies a query referral. Its
one child is any element derived from <query> (see <a href="#section-4.3.1">Section 4.3.1</a>).
To direct the query to a referent server, <searchContinuation> has
a mandatory 'authority' attribute and an optional 'resolution'
attribute. The <searchContinuation> element may also contain a
'bagRef' attribute. For a description of the 'bagRef' attribute,
see <a href="#section-4.4">Section 4.4</a>.
When following entity references and search continuations, clients
SHOULD only follow an <entity> or <searchContinuation> response once.
Failure to do so may result in the client process getting stuck in a
never-ending query loop, commonly known as a referral loop.
The <additional> element only contains <result> elements, as
described above. This element allows a server to indicate to a
client results that were not specifically queried but that are
related to the queried results, thus enabling the client to display
this distinction to a user properly. The <additional> element use is
optional.
The following elements, which represent error conditions, may be
returned:
o <insufficientResources> -- The corresponding query requires
resources unobtainable by the server.
o <invalidName> -- A name given in a query is not syntactically
correct.
o <invalidSearch> -- Parameters of the corresponding query are not
semantically meaningful.
o <queryNotSupported> -- The corresponding query is not supported by
this server.
<span class="grey">Newton & Sanz Standards Track [Page 7]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-8" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
o <limitExceeded> -- The corresponding query requires more resources
than allowed.
o <nameNotFound> -- The name given in a query does not match a known
entity.
o <permissionDenied> -- The authentication given does not allow
access to a specific result entry.
o <bagUnrecognized> -- The contents of a bag were unrecognized. See
<a href="#section-4.4">Section 4.4</a>.
o <bagUnacceptable> -- The contents of a bag were not and never will
be acceptable. See <a href="#section-4.4">Section 4.4</a>.
o <bagRefused> -- The contents of a bag were not acceptable at this
time. See <a href="#section-4.4">Section 4.4</a>.
o A derivative of <genericCode>, as described in <a href="#section-4.3">Section 4.3</a>.
The <resultSet> section is divided into the <answer> and <additional>
sections to allow easier processing and navigation of the results by
a client. Servers MUST return the direct answers to queries in the
<answer> element and MAY return results in the <additional> element
for which a reference has been made in the <answer> element. Results
in the <additional> element MUST have been referenced in the
<answer>, either as direct children of the <answer> element or as
deeper descendants of the <answer> element.
This serves two purposes. First, it may eliminate a requery by the
client for references contained in the <answer> element. Second, it
distinguishes between results that are a direct result of a query and
those that would have been returned had the client followed the
appropriate referrals, thus hinting how clients could process or
display the returned results. For instance, clients constructing
complex displays with tree navigation widgets will know that results
in the <answer> element should all be directly beneath the root node
of the tree, while results in the <additional> element are leaf nodes
of those produced from the <answer> element.
A <reaction> element (child of <response>) is a response to a
<control> element, and provides a means for a server to advise a
client of the effect of a <control> element.
The <bags> element (child of <response>) is optional. It contains
<bag> elements, and the contents of each <bag> element constitute one
element in any XML namespace. Each <bag> element has an 'id'
attribute, which is referenced by the 'bagRef' attribute of entity
<span class="grey">Newton & Sanz Standards Track [Page 8]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-9" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
references (<entity>) and search continuations
(<searchContinuation>). See <a href="#section-4.4">Section 4.4</a>.
<span class="h3"><a class="selflink" id="section-4.3" href="#section-4.3">4.3</a>. Extension Framework</span>
Because the IRIS schema defines only one query type, and two stand-
alone result types, and does not define a registry structure, it is
of limited use by itself. Extension of IRIS is accomplished through
the use of a base IRIS schema, as defined in XML_SD [<a href="#ref-4" title=""XML Schema Part 2: Datatypes"">4</a>] and XML_SS
[<a href="#ref-5" title=""XML Schema Part 1: Structures"">5</a>], and through extension of it by schemas constructed on top of
IRIS.
<span class="h4"><a class="selflink" id="section-4.3.1" href="#section-4.3.1">4.3.1</a>. Derived Elements</span>
The XML Schema definition of IRIS requires schemas of registry types
to derive element types from base types in the IRIS definition. The
registry schemas MUST derive elements to define typed queries and
results.
While the IRIS schema definition does not prohibit the derivation of
any elements, registry schemas SHOULD restrict the derivations to the
following types:
o <query> -- As defined, this element contains no content and has no
valid attributes. It is abstract and therefore only its
derivatives appear in XML instances. Registry schemas derive from
this element to define the queries allowed.
o <result> -- As defined, this element contains no content and has
five valid attributes: 'authority', 'resolution' (optional),
'registryType', 'entityClass', 'entityName', and
'temporaryReference' (optional, see <a href="#section-4.3.6">Section 4.3.6</a>). It is
abstract and therefore only its derivatives appear in XML
instances. Registry schemas derive from this element to define
results that may be returned from a query.
o <genericCode> -- As defined, this element is an instance of
<codeType>. It contains the optional elements <explanation> and
<language>, which further describe the nature of the error.
o <entity> -- Identifies a reference to an entity. Registry schemas
SHOULD use elements derived from <entity> but MAY use <entity>
directly. The advantage of deriving from <entity> vs. direct use
is the chance to define the name of the element and to use that
name descriptively -- for instance, as the role the entity plays
with respect to another entity. See <a href="#section-4.3.5">Section 4.3.5</a>.
<span class="grey">Newton & Sanz Standards Track [Page 9]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-10" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
o <seeAlso> -- Indicates a reference to an entity that has indirect
association with a parent element representing an entity. This
element is derived from the <entity> element (<a href="#section-4.3.5">Section 4.3.5</a>).
Registry schemas MAY derive from this element or MAY use it
directly.
<span class="h4"><a class="selflink" id="section-4.3.2" href="#section-4.3.2">4.3.2</a>. Registry Type Identifier Requirements</span>
The identifier for a registry type and the XML namespace identifier
used by the XML Schema describing the registry MUST be the same.
These identifiers MUST be restricted to a URN [<a href="#ref-7" title=""URN Syntax"">7</a>] registered in the
'ns' class of the IANA registry governed by XML_URN [<a href="#ref-9" title=""The IETF XML Registry"">9</a>]. These
identifiers are case insensitive.
This is a restriction on XML_NS [<a href="#ref-3" title=""Namespaces in XML"">3</a>], which specifies that an XML
namespace identifier is any valid URI [<a href="#ref-6" title=""Uniform Resource Identifiers (URI): Generic Syntax"">6</a>].
These identifiers MAY be abbreviated to the part following the class
component and its separator of the URN. For example, the full URN
"urn:ietf:params:xml:ns:dreg1" may be abbreviated to "dreg1".
In use with IRIS, this abbreviation MUST NOT be used inside of XML
instances in which the XML Schema [<a href="#ref-4" title=""XML Schema Part 2: Datatypes"">4</a>] specifies the use of a URI for
schema identification or where XML_NS [<a href="#ref-3" title=""Namespaces in XML"">3</a>] specifies the use of a URI
for XML namespace identification.
<span class="h4"><a class="selflink" id="section-4.3.3" href="#section-4.3.3">4.3.3</a>. Entity Classes</span>
IRIS provides entity classes to help avoid collisions with entity
names within any given registry type. Their specification in queries
also allows server implementations to narrow search or lookup scopes
quickly to a single index.
For instance, the entity name "192.0.2.0" might refer to separate
entities in the "name-server" and "network" classes. The entity
"192.0.2.0" in the "name-server" class may refer to the name server
host that is also multi-homed by address 192.0.2.255 and known in DNS
as "ns.example.com", whereas the entity "192.0.2.0" in the "network"
class may refer to the network 192.0.2/30.
IRIS defines two default entity classes of "local" and "iris", which
MUST NOT be redefined. These entity classes MUST be valid in all
registry types.
The "local" class is reserved for entities defined locally by a
server operator and does not denote any particular type of entity. A
lookup in this entity class MAY result in an entity reference or
search continuation. For example, "iris:dreg1//example.com/local/
<span class="grey">Newton & Sanz Standards Track [Page 10]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-11" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
myhosts" may result in a search continuation yielding the nameservers
for example.com.
The "iris" class is reserved for entities specific to a particular
service instance. It MUST contain the following entity names (see
<a href="#section-4.3.4">Section 4.3.4</a>):
o "id", which yields a result of <serviceIdentification> (see
<a href="#section-4.3.7.1">Section 4.3.7.1</a>).
o "limits", which yields a result of <limits> (see <a href="#section-4.3.7.2">Section 4.3.7.2</a>).
This entity class MAY contain other locally defined entities as
well.
The names of entity classes in a registry schema are of type token,
as defined by XML_SD [<a href="#ref-4" title=""XML Schema Part 2: Datatypes"">4</a>]. Their case sensitivity MUST be defined by
the definition of the registry type. In general, they SHOULD be case
insensitive.
<span class="h4"><a class="selflink" id="section-4.3.4" href="#section-4.3.4">4.3.4</a>. Names of Entities</span>
The names of entities in a registry schema are of type token, as
defined by XML_SD [<a href="#ref-4" title=""XML Schema Part 2: Datatypes"">4</a>].
Names of entities SHOULD be unique within an instance of any
particular entity class within a registry. Two entities SHOULD NOT
have the same name, but a single entity MAY be known by multiple
names. In situations where a single name may result in two entities,
the registry schema SHOULD make allowances by defining result types
that contain entity references to both entities (e.g., "example.com"
can refer to both the domain example.com and the host example.com).
However, this type of conflict SHOULD generally be avoided by the
proper use of entity classes.
The case sensitivity of entity names is dependent on the entity class
in which they reside. The definition of a registry type MUST specify
the case sensitivity for entity names. A registry type MAY define
the entity names of differing entity classes as having different case
sensitivity.
<span class="h4"><a class="selflink" id="section-4.3.5" href="#section-4.3.5">4.3.5</a>. References to Entities</span>
The element <entity> allows references to entities in result sets,
either as a direct child of <resultSet> or within a more complex
structure deriving from <result>. The <entity> element is defined by
'entityType'. Registry schemas SHOULD define elements derived from
<entity> when referencing entities but may use the <entity> element
directly. Deriving a new element allows a registry schema to use the
<span class="grey">Newton & Sanz Standards Track [Page 11]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-12" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
name of the new element to signify the relationship the referenced
entity has with the referrer. A derivative of <entity> MUST NOT be
used as a substitute when the <entity> element is declared (such as
in the <answer> section of the <resultSet>).
The <entity> element (and elements of type 'entityType') can have
child elements of <displayName> with an optional 'language'
attribute. These are provided so that servers may provide clients
with a more human-friendly description of the entity reference. This
is often useful to users navigating referral structures.
The <entity> element (and its derivations) have the following
attributes:
o 'authority', 'resolution' (optional), 'registryType',
'entityClass', and 'entityName' -- These attributes specify where
the entity may be found.
o 'temporaryReference' -- This attribute is optional. See <a href="#section-4.3.6">Section</a>
<a href="#section-4.3.6">4.3.6</a>.
o 'referentType' -- This attribute contains the expected type of the
entity being referenced and may contain the word "ANY" or a
qualified XML name. Unlike the other attributes of <entity>, this
attribute is qualified and declared in the IRIS XML namespace.
Therefore it will also be qualified with the prefix associated
with the IRIS XML namespace (e.g., 'iris:referentType'). This
allows clients to recognize entity references using an element
derived from <entity>.
o 'bagRef' -- This attribute is optional. If present, it must
contain an XML identifier to a <bag> element in the <bags> section
of the result set. For a description of the 'bagRef' attribute,
see <a href="#section-4.4">Section 4.4</a>.
<span class="h4"><a class="selflink" id="section-4.3.6" href="#section-4.3.6">4.3.6</a>. Temporary Entities</span>
Instances may exist in which an entity reference needs to be
temporary. For example, a particular type of result may only have
one unique key. If that key contains semantic meaning that may not
be exposed to all users, a synthetic key will have to be substituted.
Furthermore, there may be times when data in the data store is not
normalized in the same manner as that expressed by the registry
schema. In the registry schema, objects of type A may reference
objects of type B. But in the data store, objects of type A may
contain objects of type B. Again, a synthetic key will have to be
temporarily produced.
<span class="grey">Newton & Sanz Standards Track [Page 12]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-13" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
To support such use cases, results and entity references can be
declared temporary by using the 'temporaryReference' attribute. This
attribute is of type boolean [<a href="#ref-4" title=""XML Schema Part 2: Datatypes"">4</a>] and has a default value of "false".
It is optional for <result> derivatives and elements of type
'entityType'.
When this attribute is used, the entity reference data (e.g.,
'entityClass', 'entityName') is only valid within the response in
which it appears and may not be consistent with subsequent responses.
A server MUST include the referent of any temporary entity reference
in the <additional> section of the same <resultSet>
<span class="h4"><a class="selflink" id="section-4.3.7" href="#section-4.3.7">4.3.7</a>. <result> Derived Elements</span>
The base IRIS framework contains three elements directly derived from
the <result> element for use by any registry type.
<span class="h5"><a class="selflink" id="section-4.3.7.1" href="#section-4.3.7.1">4.3.7.1</a>. <serviceIdentification></span>
An example of a <serviceIdentification> result:
<serviceIdentification
authority="example.com" registryType="dreg1"
entityClass="iris"
entityName="id" >
<authorities>
<authority> example.com </authority>
<authority> example.net </authority>
<authority> example.org </authority>
</authorities>
<operatorName>
Internet Assigned Numbers Authority
</operatorName>
<eMail>
iana@iana.org
</eMail>
</serviceIdentification>
The <serviceIdentification> element is provided to allow IRIS clients
to reference IRIS service instances. It contains the following
elements:
o <authorities> -- This element contains one or more <authority>
elements. Each <authority> element contains a URI authority
component for which the server has results. Although a server MAY
only return a partial list of its authority areas, depending on
operator policy, it MUST return the authority for which the client
has requested.
<span class="grey">Newton & Sanz Standards Track [Page 13]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-14" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
o <operatorName> -- This element contains the name of the operator
of the server.
o <eMail> -- These optional elements contain email addresses of the
operator of the service instance.
o <phone> -- These optional elements contain phone numbers of the
operator of the service instance.
o <seeAlso> -- See <a href="#section-4.3.1">Section 4.3.1</a> for its definition.
<span class="h5"><a class="selflink" id="section-4.3.7.2" href="#section-4.3.7.2">4.3.7.2</a>. <limits></span>
An example of a <limits> result:
<limits
authority="example.com" registryType="dreg1"
entityClass="iris" entityName="limits">
<totalQueries>
<perHour>2</perHour>
<perDay>15</perDay>
</totalQueries>
<totalResults>
<perHour>25</perHour>
<perDay>200</perDay>
</totalResults>
<totalSessions>
<perHour>2</perHour>
<perDay>15</perDay>
</totalSessions>
</limits>
The <limits> element provides a mechanism allowing a server to inform
a client of the limits it may encounter from overuse of the service.
The contents describe the service limitations to a client at the
current level of access. The contents of this element are as
follows:
o <totalQueries> -- This element describes the total number of
queries that the server will accept. The children of this element
indicate this number per unit of time. The children are
<perSecond>, <perMinute>, <perHour>, and <perDay>. Each child
MUST only appear once as a child of <totalQueries>, but more than
one child MAY be present. For example, a server could indicate
that it will accept 15 queries a minute but only 60 queries a day.
<span class="grey">Newton & Sanz Standards Track [Page 14]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-15" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
o <totalResults> -- This element describes the total number of
results that the server will send to a client. The children of
this element indicate this number per unit of time in the same
manner as <totalQueries>.
o <totalSessions> -- This element describes the total number of
sessions that the server will accept from a client. The children
of this element indicate this number per unit of time in the same
manner as <totalQueries>. The definition of a session is defined
the by application transport layer.
o <otherRestrictions> -- This element describes other restrictions
that may only be expressible outside of the structured syntax of
the other child elements of <limits>. This element may have
optional <description> child elements, each with a mandatory
'language' attribute.
o <seeAlso> -- These elements are provided to reference other
entities, such as a <simpleEntity> (<a href="#section-4.3.7.3">Section 4.3.7.3</a>) describing a
published policy. See <seeAlso> (<a href="#section-4.3.1">Section 4.3.1</a>).
All of these child elements are optional, and a server may express
that it has no limits by using a <limits> element with no content
(e.g., <limits authority=... />).
<span class="h5"><a class="selflink" id="section-4.3.7.3" href="#section-4.3.7.3">4.3.7.3</a>. <simpleEntity></span>
An example of a <simpleEntity> result:
<simpleEntity
authority="example.com" registryType="dreg1"
entityClass="local"
entityName="notice" >
<property name="legal" language="en">
Example.com is reserved according to <a href="./rfc2606">RFC 2606</a>.
</property>
</simpleEntity>
The <simpleEntity> element is provided so that service operators may
make simple additions to other entities without deriving entirely new
registry types. Its definition allows service operators to reference
it from other entities (using, for instance, a <seeAlso> element).
The <simpleEntity> is meant to represent name and value pairs of
strings, allowing each pair to be associated with a specific language
qualifier and an optional URI pointing to more information.
<span class="grey">Newton & Sanz Standards Track [Page 15]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-16" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
Clients may easily display such information in a two-column table.
Applications using binary data or richer data structures are out of
scope for this element. When such usage scenarios arise, a client
will likely need specific knowledge to handle such data, thus calling
the need for a new registry type into question.
<span class="h4"><a class="selflink" id="section-4.3.8" href="#section-4.3.8">4.3.8</a>. <control> and <reaction> Elements</span>
The <control> (<a href="#section-4.1">Section 4.1</a>) and <reaction> (<a href="#section-4.2">Section 4.2</a>) elements
allow the client to request from the server special states for the
processing of queries. The intent of these elements is to allow
extensibility so that some jurisdictions may adopt policies for query
processing without requiring re-versioning of IRIS or any registry
type.
This document defines one control, <onlyCheckPermissions>, and its
requisite reaction, <standardReaction>, for compliance with CRISP
[<a href="#ref-17" title=""Cross Registry Internet Service Protocol (CRISP) Requirements"">17</a>].
When a client sends an <onlyCheckPermissions> control, it is only
asking the server to check to see whether adequate permissions are
available to execute the queries in the associated request. A server
MUST respond to this control with a <standardReaction> element.
The <standardReaction> element provides a server with a standard
means to respond to controls (it may be used by other controls, but
this is left to their definition). It contains four children:
o <controlAccepted> -- the processing or state needed by the control
has been accepted.
o <controlDenied> -- the processing or state needed by the control
has been denied (a transient failure).
o <controlDisabled> -- the processing or state needed by the control
cannot be activated (a permanent failure).
o <controlUnrecognized> -- the control is not recognized (a
permanent failure).
If <onlyCheckPermissions> is rejected, then the server MUST return
all appropriate result sets (i.e., for every search set in the
request), but all result sets MUST be empty of results and MUST
contain no errors (a reaction is not part of a result set and is
therefore not a result set error). This control applies to all
search sets or none of them; therefore a server MUST issue a
rejection if <onlyCheckPermissions> cannot be accepted for all search
sets in a request.
<span class="grey">Newton & Sanz Standards Track [Page 16]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-17" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
An example of an IRIS XML exchange using these elements follows:
C: <?xml version="1.0"?>
C: <request xmlns="urn:ietf:params:xml:ns:iris1"
C: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
C:
C: <control>
C: <onlyCheckPermissions />
C: </control>
C:
C: <searchSet>
C:
C: <lookupEntity
C: registryType="dreg1"
C: entityClass="local"
C: entityName="AUP" />
C:
C: </searchSet>
C:
C: </request>
S: <?xml version="1.0"?>
S: <response xmlns="urn:ietf:params:xml:ns:iris1"
S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
S:
S: <reaction>
S: <standardReaction>
S: <controlAccepted />
S: </standardReaction>
S: </reaction>
S:
S: <resultSet>
S: <answer>
S:
S: <simpleEntity
S: authority="example.com" registryType="dreg1"
S: entityClass="local" entityName="AUP" >
S: <property name="legal" language="en">
S: It is illegal to use information from this service
S: for the purposes of sending unsolicited bulk email.
S: </property>
S: </simpleEntity>
S:
S: </answer>
S: </resultSet>
S:
S: </response>
<span class="grey">Newton & Sanz Standards Track [Page 17]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-18" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
<span class="h3"><a class="selflink" id="section-4.4" href="#section-4.4">4.4</a>. Relay Bags</span>
IRIS employs bags to allow a server to relay information to a
referent server via the client. These bags are generated by the
queried server, passed to the client as opaque data, and then passed
to the referent server for processing. The contents of the bags are
not defined by IRIS, and the client MUST NOT make any assumptions
about the contents of a bag when relaying it from one server to
another.
When a server returns a result set to a client, the <response>
element may contain a <bags> child element. This child element
contains one or more <bag> elements. Each of these MUST contain an
'id' attribute containing the XML data type ID. Entity references
and search continuations that have to specify a bag to be used when
they are followed MUST have a 'bagRef' attribute containing the XML
data type IDREF. See <a href="#section-4.2">Section 4.2</a>. This allows the response to
specify a bag only once but allows each entity reference or search
continuation (in all result sets) to have a distinct bag, as needed.
When following an entity reference or search continuation that
specifies the use of a bag, the client MUST include the referenced
bag in the search set as a child of the <searchSet> element. See
<a href="#section-4.1">Section 4.1</a>.
See <a href="#section-4.2">Section 4.2</a> for the list of errors a server may return to a
client when a bag is received. A server MUST NOT ignore a bag when
it is received. In case a bag cannot be recognized or accepted, one
of the errors from <a href="#section-4.2">Section 4.2</a> MUST be returned.
An example of an IRIS XML exchange using these elements follows:
C: <?xml version="1.0"?>
C: <request xmlns="urn:ietf:params:xml:ns:iris1"
C: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
C:
C: <searchSet>
C:
C: <bag>
C: <simpleBag xmlns="http://example.com/">
C: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
C: </simpleBag>
C: </bag>
C:
C: <lookupEntity
C: registryType="dreg1"
C: entityClass="local"
C: entityName="AUP" />
<span class="grey">Newton & Sanz Standards Track [Page 18]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-19" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
C:
C: </searchSet>
C:
C: </request>
S: <?xml version="1.0"?>
S: <response xmlns="urn:ietf:params:xml:ns:iris1"
S: xmlns:iris="urn:ietf:params:xml:ns:iris1"
S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
S:
S: <resultSet>
S: <answer>
S:
S: <entity authority="example.com" bagRef="x1"
S: registryType="dreg1"
S: entityClass="local" entityName="AUP"
S: iris:referentType="ANY" >
S: <displayName language="en">
S: Acceptable Usage Policy
S: </displayName>
S: </entity>
S:
S: </answer>
S: </resultSet>
S:
S: <bags>
S:
S: <bag id="x1">
S: <simpleBag xmlns="http://example.com/">
S: AAAAB3NzaC1yc2EAAAABIwAAAIEA0ddD+W3Agl0Lel98G1r77fZ
S: </simpleBag>
S: </bag>
S:
S: </bags>
S: </response>
<span class="h2"><a class="selflink" id="section-5" href="#section-5">5</a>. Database Serialization</span>
This section describes a method for serializing IRIS registry
entities. The descriptions contained within this section refer to
XML elements and attributes and their relation to this serialization
process. These descriptions also contain specifications outside the
scope of the formal XML syntax. This section will use terms defined
by <a href="./rfc2119">RFC 2119</a> [<a href="#ref-8" title=""Key words for use in RFCs to Indicate Requirement Levels"">8</a>] to describe these. While reading this section,
please reference <a href="#section-6">Section 6</a> for needed details on the formal XML
syntax.
<span class="grey">Newton & Sanz Standards Track [Page 19]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-20" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
A database of IRIS entities can be serialized to file storage with
XML [<a href="#ref-2" title=""Extensible Markup Language (XML) 1.0"">2</a>] by using the IRIS defined <serialization> element. This
element contains <result> element derivatives and
<serializedReferral> elements.
Derivatives of the <result> element are entities. Servers loading
these entities MUST place the entity in the entity classes specified
by the elements 'registryType', 'entityClass', and 'entityName'
attributes and in any entity classes the entities may apply according
to explicitly defined children of that element. For instance, if a
registry type has two entity classes "foo" and "bar" and a <result>
derivative has the attributes entityClass="foo" and entityName="one"
and a child element <bar>two</bar>, the server is to enter that
entity into the entity class "foo" as the name "one" and into the
entity class "bar" as the name "two".
Servers loading entities as serialized derivatives of the <result>
element MAY translate the authority attribute. Servers will likely
have to do this if the authority for the entity has changed.
<serializedReferral> elements allow the serialization of explicit
entity references and search continuations. This element has a child
<source> element containing the 'authority', 'resolution' (optional),
'registryType', 'entityClass', and 'entityName' attributes. The
attributes of this element are used to signify the entity that can be
referenced to yield this referral.
As mentioned above, there may be times when a server needs to
translate the authority attribute of a loaded entity.
Implementations must also beware of this need for referrals. During
deserialization, servers MUST change the authority attribute of a
referral (either <entity> or elements derived from <entity> or
<source> child of <serializedReferral>) to contain a valid authority
of the server if the serialized attribute is empty. During
serialization, servers and their related processes MUST leave the
authority attribute empty for referrals in which the referent is an
entity for which the server answers queries.
The following is an example of serialized IRIS:
<iris:serialization
xmlns:iris="urn:ietf:params:xml:ns:iris1"
xmlns="urn:ietf:params:xml:ns:iris1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<span class="grey">Newton & Sanz Standards Track [Page 20]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-21" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
<serviceIdentification
authority="iana.org" registryType="dreg1"
entityClass="iris"
entityName="id" >
<authorities>
<authority> iana.org </authority>
</authorities>
<operatorName>
Internet Assigned Numbers Authority
</operatorName>
<eMail>
dbarton@iana.org
</eMail>
<seeAlso
iris:referentType="iris:simpleEntity"
authority="iana.org" registryType="dreg1"
entityClass="local"
entityName="notice">
<displayName language="en">
Legal Notice
</displayName>
</seeAlso>
</serviceIdentification>
<serializedReferral>
<source
authority="example.com" registryType="dreg1"
entityClass="iris"
entityName="id"/>
<entity
iris:referentType="iris:serviceIdentification"
authority="iana.org" registryType="dreg1"
entityClass="iris" entityName="id"/>
</serializedReferral>
<simpleEntity
authority="iana.org" registryType="dreg1"
entityClass="local"
entityName="notice" >
<property name="legal" language="en">
Please use the net wisely!
</property>
</simpleEntity>
</iris:serialization>
<span class="grey">Newton & Sanz Standards Track [Page 21]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-22" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
<span class="h2"><a class="selflink" id="section-6" href="#section-6">6</a>. Formal XML Syntax</span>
IRIS is specified in XML Schema notation. The formal syntax
presented here is a complete schema representation of IRIS suitable
for automated validation of IRIS XML instances.
<?xml version="1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:iris="urn:ietf:params:xml:ns:iris1"
targetNamespace="urn:ietf:params:xml:ns:iris1"
elementFormDefault="qualified" >
<annotation>
<documentation>
Internet Registry Information Service (IRIS) Schema v1
</documentation>
</annotation>
<!-- ========================================= -->
<!-- -->
<!-- The Transactions -->
<!-- -->
<!-- ========================================= -->
<element name="request">
<complexType>
<sequence>
<element
name="control"
type="iris:controlType"
minOccurs="0"
maxOccurs="1" />
<element
name="searchSet"
type="iris:searchSetType"
minOccurs="1"
maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
<element name="response">
<complexType>
<sequence>
<element
name="reaction"
type="iris:reactionType"
minOccurs="0"
<span class="grey">Newton & Sanz Standards Track [Page 22]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-23" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
maxOccurs="1" />
<element
name="resultSet"
type="iris:resultSetType"
minOccurs="1"
maxOccurs="unbounded" />
<element
name="bags"
type="iris:bagsType"
minOccurs="0"
maxOccurs="1" />
</sequence>
</complexType>
</element>
<!-- ========================================= -->
<!-- -->
<!-- Search Sets and Result Sets -->
<!-- -->
<!-- ========================================= -->
<complexType
name="searchSetType" >
<sequence>
<element
name="bag"
type="iris:bagType"
minOccurs="0"
maxOccurs="1" />
<choice>
<element
name="lookupEntity"
type="iris:lookupEntityType" />
<element
ref="iris:query" />
</choice>
</sequence>
</complexType>
<complexType
name="resultSetType" >
<sequence>
<element
name="answer"
minOccurs="1"
maxOccurs="1">
<complexType>
<sequence>
<span class="grey">Newton & Sanz Standards Track [Page 23]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-24" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
<element
ref="iris:result"
minOccurs="0"
maxOccurs="unbounded" />
<element
ref="iris:entity"
minOccurs="0"
maxOccurs="unbounded" />
<element
ref="iris:searchContinuation"
minOccurs="0"
maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
<element
name="additional"
minOccurs="0"
maxOccurs="1">
<complexType>
<sequence>
<element
ref="iris:result"
minOccurs="1"
maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
<choice
minOccurs="0"
maxOccurs="1" >
<element
name="insufficientResources"
type="iris:codeType" />
<element
name="invalidName"
type="iris:codeType" />
<element
name="invalidSearch"
type="iris:codeType" />
<element
name="queryNotSupported"
type="iris:codeType" />
<element
name="limitExceeded"
type="iris:codeType" />
<element
name="nameNotFound"
<span class="grey">Newton & Sanz Standards Track [Page 24]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-25" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
type="iris:codeType" />
<element
name="permissionDenied"
type="iris:codeType" />
<element
name="bagUnrecognized"
type="iris:codeType" />
<element
name="bagUnacceptable"
type="iris:codeType" />
<element
name="bagRefused"
type="iris:codeType" />
<element
ref="iris:genericCode"/>
</choice>
</sequence>
</complexType>
<!-- ========================================= -->
<!-- -->
<!-- Controls and Reactions -->
<!-- -->
<!-- ========================================= -->
<complexType
name="controlType">
<sequence>
<any
namespace="##any"
processContents="skip"
minOccurs="1"
maxOccurs="1" />
</sequence>
</complexType>
<complexType
name="reactionType">
<sequence>
<any
namespace="##any"
processContents="skip"
minOccurs="1"
maxOccurs="1" />
</sequence>
</complexType>
<!-- ========================================= -->
<span class="grey">Newton & Sanz Standards Track [Page 25]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-26" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
<!-- -->
<!-- Queries and Lookups -->
<!-- -->
<!-- ========================================= -->
<complexType
name="queryType" />
<element
name="query"
type="iris:queryType"
abstract="true" />
<complexType
name="lookupEntityType" >
<attribute
name="registryType"
type="anyURI"
use="required" />
<attribute
name="entityClass"
type="token"
use="required" />
<attribute
name="entityName"
type="token"
use="required" />
</complexType>
<!-- ========================================= -->
<!-- -->
<!-- Results -->
<!-- -->
<!-- ========================================= -->
<complexType
name="resultType">
<attribute
name="authority"
use="required"
type="token" />
<attribute
name="resolution"
type="token" />
<attribute
name="registryType"
use="required"
type="anyURI" />
<span class="grey">Newton & Sanz Standards Track [Page 26]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-27" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
<attribute
name="entityClass"
use="required"
type="token" />
<attribute
name="entityName"
use="required"
type="token" />
<attribute
name="temporaryReference"
default="false"
type="boolean" />
</complexType>
<element
name="result"
type="iris:resultType"
abstract="true" />
<!-- ========================================= -->
<!-- -->
<!-- Errors -->
<!-- -->
<!-- ========================================= -->
<complexType
name="codeType">
<sequence
minOccurs="0"
maxOccurs="unbounded">
<element
name="explanation">
<complexType>
<simpleContent>
<extension
base="string">
<attribute
use="required"
name="language"
type="language" />
</extension>
</simpleContent>
</complexType>
</element>
</sequence>
</complexType>
<element
name="genericCode"
<span class="grey">Newton & Sanz Standards Track [Page 27]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-28" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
type="iris:codeType"
abstract="true" />
<!-- ========================================= -->
<!-- -->
<!-- Entity References and -->
<!-- Search Continuations -->
<!-- -->
<!-- ========================================= -->
<complexType
name="entityType">
<sequence>
<element
name="displayName"
minOccurs="0"
maxOccurs="unbounded">
<complexType>
<simpleContent>
<extension
base="string">
<attribute
name="language"
use="required"
type="language" />
</extension>
</simpleContent>
</complexType>
</element>
</sequence>
<attribute
name="authority"
use="required"
type="token" />
<attribute
name="resolution"
type="token" />
<attribute
name="registryType"
use="required"
type="anyURI" />
<attribute
name="entityClass"
use="required"
type="token" />
<attribute
name="entityName"
use="required"
<span class="grey">Newton & Sanz Standards Track [Page 28]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-29" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
type="token" />
<attribute
name="referentType"
use="required"
form="qualified"
type="iris:referentTypeType" />
<attribute
name="temporaryReference"
default="false"
type="boolean" />
<attribute
name="bagRef"
type="IDREF" />
</complexType>
<element
name="entity"
type="iris:entityType" />
<simpleType
name="referentTypeType">
<union
memberTypes="QName iris:anyLiteralType" />
</simpleType>
<simpleType
name="anyLiteralType">
<restriction
base="string">
<enumeration
value="ANY" />
</restriction>
</simpleType>
<complexType
name="searchContinuationType">
<sequence>
<element ref="iris:query" />
</sequence>
<attribute
name="bagRef"
type="IDREF" />
<attribute
name="authority"
type="token"
use="required" />
<attribute
name="resolution"
<span class="grey">Newton & Sanz Standards Track [Page 29]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-30" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
type="token" />
</complexType>
<element
name="searchContinuation"
type="iris:searchContinuationType" />
<!-- ========================================= -->
<!-- -->
<!-- Bags -->
<!-- -->
<!-- ========================================= -->
<complexType
name="bagsType">
<sequence>
<element
name="bag"
minOccurs="1"
maxOccurs="unbounded">
<complexType>
<complexContent>
<extension
base="iris:bagType">
<attribute
use="required"
name="id"
type="ID" />
</extension>
</complexContent>
</complexType>
</element>
</sequence>
</complexType>
<complexType
name="bagType">
<sequence>
<any
namespace="##any"
processContents="skip"
minOccurs="1"
maxOccurs="1" />
</sequence>
</complexType>
<!-- ========================================= -->
<!-- -->
<!-- Derived Results for use with all -->
<span class="grey">Newton & Sanz Standards Track [Page 30]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-31" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
<!-- registry types. -->
<!-- -->
<!-- ========================================= -->
<!-- -->
<!-- See Also -->
<!-- -->
<element
name="seeAlso"
type="iris:entityType" />
<!-- -->
<!-- Service Identification -->
<!-- -->
<complexType
name="serviceIdentificationType">
<complexContent>
<extension
base="iris:resultType">
<sequence>
<element
name="authorities"
minOccurs="1"
maxOccurs="1">
<complexType>
<sequence>
<element
name="authority"
type="token"
minOccurs="1"
maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
<element
name="operatorName"
type="string"
minOccurs="0"
maxOccurs="1" />
<element
name="eMail"
type="string"
minOccurs="0"
maxOccurs="unbounded" />
<element
name="phone"
<span class="grey">Newton & Sanz Standards Track [Page 31]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-32" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
type="string"
minOccurs="0"
maxOccurs="unbounded" />
<element
ref="iris:seeAlso"
minOccurs="0"
maxOccurs="unbounded" />
</sequence>
</extension>
</complexContent>
</complexType>
<element
name="serviceIdentification"
type="iris:serviceIdentificationType"
substitutionGroup="iris:result" />
<!-- -->
<!-- Limits -->
<!-- -->
<complexType
name="limitsType">
<complexContent>
<extension
base="iris:resultType">
<sequence>
<element
name="totalQueries"
minOccurs="0"
maxOccurs="1" >
<complexType>
<group
ref="iris:timeLimitsGroup"
minOccurs="1"
maxOccurs="4" />
</complexType>
</element>
<element
name="totalResults"
minOccurs="0"
maxOccurs="1" >
<complexType>
<group
ref="iris:timeLimitsGroup"
minOccurs="1"
maxOccurs="4" />
</complexType>
<span class="grey">Newton & Sanz Standards Track [Page 32]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-33" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
</element>
<element
name="totalSessions"
minOccurs="0"
maxOccurs="1" >
<complexType>
<group
ref="iris:timeLimitsGroup"
minOccurs="1"
maxOccurs="4" />
</complexType>
</element>
<element
name="otherRestrictions"
minOccurs="0"
maxOccurs="1">
<complexType>
<sequence>
<element
name="description"
minOccurs="0"
maxOccurs="unbounded">
<complexType>
<simpleContent>
<extension
base="string">
<attribute
name="language"
type="language"
use="required" />
</extension>
</simpleContent>
</complexType>
</element>
</sequence>
</complexType>
</element>
<element
ref="iris:seeAlso"
minOccurs="0"
maxOccurs="unbounded" />
</sequence>
</extension>
</complexContent>
</complexType>
<element
name="limits"
type="iris:limitsType"
<span class="grey">Newton & Sanz Standards Track [Page 33]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-34" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
substitutionGroup="iris:result" />
<group
name="timeLimitsGroup">
<choice>
<element
name="perSecond"
type="nonNegativeInteger" />
<element
name="perMinute"
type="nonNegativeInteger" />
<element
name="perHour"
type="nonNegativeInteger" />
<element
name="perDay"
type="nonNegativeInteger" />
</choice>
</group>
<!-- -->
<!-- Simple Entity -->
<!-- -->
<complexType
name="simpleEntityType">
<complexContent>
<extension
base="iris:resultType">
<sequence>
<element
name="property"
minOccurs="1"
maxOccurs="unbounded">
<complexType>
<simpleContent>
<extension
base="string">
<attribute
name="name"
type="string"
use="required" />
<attribute
name="language"
type="language"
use="required" />
<attribute
name="uri"
<span class="grey">Newton & Sanz Standards Track [Page 34]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-35" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
type="anyURI" />
</extension>
</simpleContent>
</complexType>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<element
name="simpleEntity"
type="iris:simpleEntityType"
substitutionGroup="iris:result" />
<!-- ========================================= -->
<!-- -->
<!-- Derived Controls and Reactions -->
<!-- -->
<!-- ========================================= -->
<!-- -->
<!-- Only Check Permissions -->
<!-- -->
<element
name="onlyCheckPermissions" >
<complexType />
</element>
<!-- -->
<!-- Standard Reaction -->
<!-- -->
<element
name="standardReaction" >
<complexType>
<choice>
<element
name="controlAccepted">
<complexType/>
</element>
<element
name="controlDenied">
<complexType/>
</element>
<element
name="controlDisabled">
<span class="grey">Newton & Sanz Standards Track [Page 35]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-36" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
<complexType/>
</element>
<element
name="controlUnrecognized">
<complexType/>
</element>
</choice>
</complexType>
</element>
<!-- ========================================= -->
<!-- -->
<!-- Serialization -->
<!-- -->
<!-- ========================================= -->
<complexType
name="serializedReferralType">
<sequence>
<element name="source">
<complexType>
<attribute
name="authority"
use="required"
type="token" />
<attribute
name="resolution"
type="token" />
<attribute
name="registryType"
type="anyURI"
use="required" />
<attribute
name="entityClass"
type="token"
use="required" />
<attribute
name="entityName"
type="token"
use="required" />
</complexType>
</element>
<choice>
<element
ref="iris:searchContinuation" />
<element
ref="iris:entity" />
</choice>
<span class="grey">Newton & Sanz Standards Track [Page 36]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-37" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
</sequence>
</complexType>
<element
name="serialization">
<complexType>
<choice
minOccurs="1"
maxOccurs="unbounded">
<element
ref="iris:result" />
<element
name="serializedReferral"
type="iris:serializedReferralType" />
</choice>
</complexType>
</element>
</schema>
Figure 8
<span class="h2"><a class="selflink" id="section-7" href="#section-7">7</a>. The IRIS URI</span>
The IRIS URI has a very rigid structure. All IRIS URIs have the same
fields and look similar to users.
But the IRIS URIs are flexible because they allow different methods
to be employed to find servers and allow the use of multiple
transports (with BEEP being the default).
<span class="h3"><a class="selflink" id="section-7.1" href="#section-7.1">7.1</a>. URI Definition</span>
An IRIS URI [<a href="#ref-6" title=""Uniform Resource Identifiers (URI): Generic Syntax"">6</a>] has the following general syntax.
iris:<registry>/<resolution>/<authority>/<class>/<name>
The full ABNF [<a href="#ref-11" title=""Augmented BNF for Syntax Specifications: ABNF"">11</a>] follows, with certain values included from <a href="./rfc2396">RFC</a>
<a href="./rfc2396">2396</a> [<a href="#ref-6" title=""Uniform Resource Identifiers (URI): Generic Syntax"">6</a>] and <a href="./rfc2732">RFC 2732</a> [<a href="#ref-15" title=""Format for Literal IPv6 Addresses in URL's"">15</a>].
iris-uri = scheme ":" registry-urn "/"
[ resolution-method ] "/" authority
[ "/" entity-class "/" entity-name ]
scheme = "iris"
authority = // as specified by <a href="./rfc2396">RFC2396</a>
registry-urn = // as specified by IRIS
resolution-method = *(unreserved | escaped)
entity-class = *(unreserved | escaped)
<span class="grey">Newton & Sanz Standards Track [Page 37]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-38" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
entity-name = *(unreserved | escaped)
unreserved = // as specified by <a href="./rfc2396">RFC2396</a>
escaped = // as specified by <a href="./rfc2396">RFC2396</a>
An IRIS URI MUST NOT be a relative URI. The resolution method,
entity class, and entity name MUST be of the UTF-8 [<a href="#ref-12" title=""The Unicode Standard, Version 3"">12</a>] character set
encoded with "application/x-www-form-urlencoded", as specified by
URL_ENC [<a href="#ref-14" title=""The 'text/html' Media Type"">14</a>].
When the entity-class and entity-name components are not specified,
the defaults "iris" and "id" MUST be implied. For example,
"iris:dreg1//com" is interpreted as "iris:dreg1//com/iris/id".
When the resolution-method is not specified, the default is the
direct resolution method described in <a href="#section-7.3.2">Section 7.3.2</a>.
<span class="h3"><a class="selflink" id="section-7.2" href="#section-7.2">7.2</a>. Transport Specific Schemes</span>
The "iris" scheme name is not application transport specific. The
URI resolution process MAY determine the application transport. An
example of such a process is direct resolution (<a href="#section-7.3.2">Section 7.3.2</a>), which
uses the steps outlined in <a href="#section-7.3.3">Section 7.3.3</a> to determine the application
transport.
A mapping between an application transport and IRIS MAY define a
scheme name signifying its use with the semantics of the IRIS URI.
The rules for determining which application transport to use are as
follows:
o If an application transport specific scheme name is present, the
application transport it signifies SHOULD be used if possible.
o If a client has a preferred transport and the resolution process
allows for its use, the client MAY use that application transport.
o Otherwise, the default application transport specified by IRIS-
BEEP [<a href="#ref-1" title=""Using the Internet Registry Information Service (IRIS) over the Blocks Extensible Exchange Protocol (BEEP)"">1</a>] MUST be used.
<span class="h3"><a class="selflink" id="section-7.3" href="#section-7.3">7.3</a>. URI Resolution</span>
<span class="h4"><a class="selflink" id="section-7.3.1" href="#section-7.3.1">7.3.1</a>. Registry Dependent Resolution</span>
Interpretation and resolution of the authority component of an IRIS
URI may be altered with the specification of a resolution-method in
the URI. If no resolution-method component is specified in the URI,
the default is the direct resolution method (see <a href="#section-7.3.2">Section 7.3.2</a>).
<span class="grey">Newton & Sanz Standards Track [Page 38]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-39" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
Alternate resolution methods MAY be specified by registry types. The
identifiers for these methods MUST conform to the ABNF in <a href="#section-7.1">Section</a>
<a href="#section-7.1">7.1</a>.
<span class="h4"><a class="selflink" id="section-7.3.2" href="#section-7.3.2">7.3.2</a>. Direct Resolution</span>
In the direct resolution process, the authority component of an IRIS
URI may only contain a domain name, a domain name accompanied by a
port number, an IP address, or an IP address accompanied by a port
number. The authority component of the scheme indicates the server
or set of servers authoritatively responsible for a domain according
to records in DNS (<a href="#section-7.3.3">Section 7.3.3</a>) if a domain is specified. If an IP
address is specified, it indicates the specific server to be queried.
The rules for resolution are as follows:
o If the authority component is a domain name accompanied by a port
number as specified by <a href="./rfc2396">RFC 2396</a>, the domain name is converted to
an IP address via an A or AAAA record to the DNS.
o If the authority component is a domain name by itself, the
service/transport location (<a href="#section-7.3.3">Section 7.3.3</a>) process is used. If
this process produces no results, then the DNS is queried for the
A or AAAA RRs corresponding to the domain name, and the port
number used is the well-known port of the transport used according
to <a href="#section-7.2">Section 7.2</a>.
o If the authority component is an IP address, then the DNS is not
queried, and the IP address is used directly. If the port number
is present, it is used directly; otherwise, the port number used
is the well-known port of the transport used according to <a href="#section-7.2">Section</a>
<a href="#section-7.2">7.2</a>.
The use of an IPv6 address in the authority component MUST conform to
<a href="./rfc2732">RFC 2732</a> [<a href="#ref-15" title=""Format for Literal IPv6 Addresses in URL's"">15</a>].
<span class="h4"><a class="selflink" id="section-7.3.3" href="#section-7.3.3">7.3.3</a>. Transport and Service Location</span>
The direct resolution method (<a href="#section-7.3.2">Section 7.3.2</a>) uses the profiled use of
the NAPTR and SRV resource records defined in S-NAPTR [<a href="#ref-10" title=""Domain-based Application Service Location Using SRV RRs and the Dynamic Delegation Discovery Service (DDDS)"">10</a>] to
determine both the location of a set of servers for a given service
and the set of possible transports that may be used. It is
RECOMMENDED that any resolution method not making explicit use of the
direct resolution process should use S-NAPTR [<a href="#ref-10" title=""Domain-based Application Service Location Using SRV RRs and the Dynamic Delegation Discovery Service (DDDS)"">10</a>] in whatever process
it does define.
<span class="grey">Newton & Sanz Standards Track [Page 39]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-40" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
S-NAPTR [<a href="#ref-10" title=""Domain-based Application Service Location Using SRV RRs and the Dynamic Delegation Discovery Service (DDDS)"">10</a>] requires an application service label. The direct
resolution method (<a href="#section-7.3.2">Section 7.3.2</a>) uses the abbreviated form of the
registry URN as the application service label. Other resolution
methods MAY specify other application service labels.
See <a href="#appendix-A">Appendix A</a> for sample uses of S-NAPTR.
<span class="h3"><a class="selflink" id="section-7.4" href="#section-7.4">7.4</a>. IRIS URI Examples</span>
Here are some examples of IRIS URIs and their meaning:
o iris:dreg1//example.com/domain/example.com
* Finds a server authoritative for "example.com" according to the
rules of direct resolution (<a href="#section-7.3.2">Section 7.3.2</a>).
* The server is asked for "example.com" in the "domain" index, or
entity class, of the "dreg1" registry.
o iris:dreg1//example.com
* Finds a server authoritative for "example.com" according to the
rules of direct resolution (<a href="#section-7.3.2">Section 7.3.2</a>).
* The server is asked for "id" in the "iris" index, or entity
class, of the "dreg1" registry.
o iris:dreg1//com/domain/example.com
* Finds a server authoritative for "com" according to the rules
of direct-resolution (<a href="#section-7.3.2">Section 7.3.2</a>).
* The server is asked for "example.com" in the "domain" index, or
entity class, of the "dreg1" registry.
o iris:dreg1//192.0.2.1:44/domain/example.com
* Following the rules of direct-resolution (<a href="#section-7.3.2">Section 7.3.2</a>), the
server at IP address 192.0.2.1 on port 44 is queried by using
BEEP.
* The server is asked for "example.com" in the "domain" index, or
entity class, of the "dreg1" registry.
o iris.lwz:dreg1//192.0.2.1:44/domain/example.com
* Following the rules of direct-resolution (<a href="#section-7.3.2">Section 7.3.2</a>), the
server at IP address 192.0.2.1 on port 44 is queried by using a
lightweight application transport.
* The server is asked for "example.com" in the "domain" index, or
entity class, of the "dreg1" registry.
<span class="grey">Newton & Sanz Standards Track [Page 40]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-41" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
o iris.beep:dreg1//com/domain/example.com
* Finds a server authoritative for "com" according to the rules
of direct-resolution (<a href="#section-7.3.2">Section 7.3.2</a>).
* Uses the BEEP application transport.
* The server is asked for "example.com" in the "domain" index, or
entity class, of the "dreg1" registry.
o iris:dreg1/bottom/example.com/domain/example.com
* Finds a server authoritative for "example.com" according to the
rules of the resolution method 'bottom' as defined by the
registry type urn:ietf:params:xml:ns:dreg1.
* The application transport used is determined by the 'bottom'
resolution method.
* The server is asked for "example.com" in the "domain" index, or
entity class, of the "dreg1" registry.
o iris.beep:dreg1/bottom/example.com/domain/example.com
* Finds a server authoritative for "example.com" according to the
rules of the resolution method 'bottom' as defined by the
registry type urn:ietf:params:xml:ns:dreg1.
* Uses the BEEP application transport.
* The server is asked for "example.com" in the "domain" index, or
entity class, of the "dreg1" registry.
<span class="h2"><a class="selflink" id="section-8" href="#section-8">8</a>. Checklists</span>
<span class="h3"><a class="selflink" id="section-8.1" href="#section-8.1">8.1</a>. Registry Definition Checklist</span>
Specifications of registry types MUST include the following explicit
definitions:
o Formal XML syntax deriving from the IRIS XML.
o An identifying registry URN.
o Any registry specific resolution methods.
o A registration of the abbreviated registry URN as an application
service label for compliance with S-NAPTR [<a href="#ref-10" title=""Domain-based Application Service Location Using SRV RRs and the Dynamic Delegation Discovery Service (DDDS)"">10</a>]. Note that this is
a different IANA registry than the registry type URN IANA
registry.
o A list of well-known entity classes.
o A statement regarding the case sensitivity of the names in each
entity class.
<span class="grey">Newton & Sanz Standards Track [Page 41]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-42" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
<span class="h3"><a class="selflink" id="section-8.2" href="#section-8.2">8.2</a>. Transport Mapping Checklist</span>
Specifications of transport mappings MUST include the following
explicit definitions:
o A URI scheme name specific to the transport.
o An application protocol label for compliance with S-NAPTR [<a href="#ref-10" title=""Domain-based Application Service Location Using SRV RRs and the Dynamic Delegation Discovery Service (DDDS)"">10</a>].
See <a href="#section-7.3.3">Section 7.3.3</a>. Note that although this is a different IANA
registry than the URI scheme name IANA registry, it is RECOMMENDED
that they be the same string of characters.
o The set of allowable character set encodings for the exchange of
XML (see <a href="#section-9">Section 9</a>).
o The set of security mechanisms.
<span class="h2"><a class="selflink" id="section-9" href="#section-9">9</a>. Internationalization Considerations</span>
IRIS is represented in XML. XML processors are obliged to recognize
both UTF-8 and UTF-16 [<a href="#ref-12" title=""The Unicode Standard, Version 3"">12</a>] encodings. XML provides for mechanisms to
identify and use other character encodings by means of the "encoding"
attribute in the <xml> declaration. Absence of this attribute or a
byte order mark (BOM) indicates a default of UTF-8 [<a href="#ref-13" title=""UTF-8, a transformation format of ISO 10646"">13</a>] encoding.
Thus, for compatibility reasons and per <a href="./rfc2277">RFC 2277</a> [<a href="#ref-16" title=""IETF Policy on Character Sets and Languages"">16</a>], use of UTF-8
[<a href="#ref-13" title=""UTF-8, a transformation format of ISO 10646"">13</a>] is RECOMMENDED with IRIS.
The complete list of character set encoding identifiers is maintained
by IANA at [<a href="#ref-21">21</a>].
The application-transport layer MUST define a common set of character
set encodings to be understood by both client and server.
Localization of internationalized strings may require additional
information from the client. Entity definitions SHOULD use the
"language" type defined by XML_SD [<a href="#ref-4" title=""XML Schema Part 2: Datatypes"">4</a>] to aid clients in the
localization process. See <a href="#section-4.3.7.3">Section 4.3.7.3</a> for an example.
<span class="grey">Newton & Sanz Standards Track [Page 42]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-43" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
<span class="h2"><a class="selflink" id="section-10" href="#section-10">10</a>. IANA Considerations</span>
This document uses a proposed XML namespace and schema registry
specified in XML_URN [<a href="#ref-9" title=""The IETF XML Registry"">9</a>]. Accordingly, the following registration
information is provided for the IANA:
o URN/URI:
* urn:ietf:params:xml:ns:iris1
o Contact:
* Andrew Newton <andy@hxr.us>
* Marcos Sanz <sanz@denic.de>
o XML:
* The XML Schema specified in <a href="#section-6">Section 6</a>
<span class="h2"><a class="selflink" id="section-11" href="#section-11">11</a>. Security Considerations</span>
The IRIS XML layer provides no authentication or privacy facilities
of its own. It relies on the application-transport layer for all of
these abilities. Application-transports should explicitly define
their security mechanisms (see <a href="#section-8.2">Section 8.2</a>).
Referral IRIS registry results may contain entity lookups and search
continuations that result in a client query operation against another
registry service. Clients SHOULD NOT use authentication credentials
and mechanisms subject to replay attacks to conduct subsequent entity
lookups and search continuations.
<span class="h2"><a class="selflink" id="section-12" href="#section-12">12</a>. References</span>
<span class="h3"><a class="selflink" id="section-12.1" href="#section-12.1">12.1</a>. Normative References</span>
[<a id="ref-1">1</a>] Newton, A. and M. Sanz, "Using the Internet Registry Information
Service (IRIS) over the Blocks Extensible Exchange Protocol
(BEEP)", <a href="./rfc3983">RFC 3983</a>, January 2005.
[<a id="ref-2">2</a>] World Wide Web Consortium, "Extensible Markup Language (XML)
1.0", W3C XML, February 1998, <<a href="http://www.w3.org/TR/1998/REC-xml-19980210">http://www.w3.org/TR/1998/REC-</a>
<a href="http://www.w3.org/TR/1998/REC-xml-19980210">xml-19980210</a>>.
[<a id="ref-3">3</a>] World Wide Web Consortium, "Namespaces in XML", W3C XML
Namespaces, January 1999, <<a href="http://www.w3.org/TR/1999/REC-xml-names-19990114">http://www.w3.org/TR/1999/REC-xml-</a>
<a href="http://www.w3.org/TR/1999/REC-xml-names-19990114">names-19990114</a>>.
[<a id="ref-4">4</a>] World Wide Web Consortium, "XML Schema Part 2: Datatypes", W3C
XML Schema, October 2000, <<a href="http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/">http://www.w3.org/TR/2001/REC-</a>
<a href="http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/">xmlschema-2-20010502/</a>>.
<span class="grey">Newton & Sanz Standards Track [Page 43]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-44" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
[<a id="ref-5">5</a>] World Wide Web Consortium, "XML Schema Part 1: Structures", W3C
XML Schema, October 2000, <<a href="http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/">http://www.w3.org/TR/2001/REC-</a>
<a href="http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/">xmlschema-1-20010502/</a>>.
[<a id="ref-6">6</a>] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifiers (URI): Generic Syntax", <a href="./rfc2396">RFC 2396</a>, August
1998.
[<a id="ref-7">7</a>] Moats, R., "URN Syntax", <a href="./rfc2141">RFC 2141</a>, May 1997.
[<a id="ref-8">8</a>] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", <a href="https://www.rfc-editor.org/bcp/bcp14">BCP 14</a>, <a href="./rfc2119">RFC 2119</a>, March 1997.
[<a id="ref-9">9</a>] Mealling, M., "The IETF XML Registry", <a href="https://www.rfc-editor.org/bcp/bcp81">BCP 81</a>, <a href="./rfc3688">RFC 3688</a>, January
2004.
[<a id="ref-10">10</a>] Daigle, L. and A. Newton, "Domain-based Application Service
Location Using SRV RRs and the Dynamic Delegation Discovery
Service (DDDS)", <a href="./rfc3958">RFC 3958</a>, January 2005.
[<a id="ref-11">11</a>] Crocker, D. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", <a href="./rfc2234">RFC 2234</a>, November 1997.
[<a id="ref-12">12</a>] The Unicode Consortium, "The Unicode Standard, Version 3", ISBN
0-201-61633-5, 2000, <The Unicode Standard, Version 3>.
[<a id="ref-13">13</a>] Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD
63, <a href="./rfc3629">RFC 3629</a>, November 2003.
[<a id="ref-14">14</a>] Connolly, D. and L. Masinter, "The 'text/html' Media Type", <a href="./rfc2854">RFC</a>
<a href="./rfc2854">2854</a>, June 2000.
[<a id="ref-15">15</a>] Hinden, R., Carpenter, B., and L. Masinter, "Format for Literal
IPv6 Addresses in URL's", <a href="./rfc2732">RFC 2732</a>, December 1999.
[<a id="ref-16">16</a>] Alvestrand, H., "IETF Policy on Character Sets and Languages",
<a href="https://www.rfc-editor.org/bcp/bcp18">BCP 18</a>, <a href="./rfc2277">RFC 2277</a>, January 1998.
<span class="grey">Newton & Sanz Standards Track [Page 44]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-45" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
<span class="h3"><a class="selflink" id="section-12.2" href="#section-12.2">12.2</a>. Informative References</span>
[<a id="ref-17">17</a>] Newton, A., "Cross Registry Internet Service Protocol (CRISP)
Requirements", <a href="./rfc3707">RFC 3707</a>, February 2004.
[<a id="ref-18">18</a>] Newton, A. and M. Sanz, "IRIS: A Domain Registry (dreg) Type
for the Internet Registry Information Service (IRIS)", <a href="./rfc3982">RFC 3982</a>,
January 2005.
[<a id="ref-19">19</a>] Daigle, L., "WHOIS Protocol Specification", <a href="./rfc3912">RFC 3912</a>, September
2004.
[<a id="ref-20">20</a>] Rose, M., "The Blocks Extensible Exchange Protocol Core", <a href="./rfc3080">RFC</a>
<a href="./rfc3080">3080</a>, March 2001.
URIs
[<a id="ref-21">21</a>] <<a href="http://www.iana.org/assignments/character-sets">http://www.iana.org/assignments/character-sets</a>>
<span class="grey">Newton & Sanz Standards Track [Page 45]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-46" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
<span class="h2"><a class="selflink" id="appendix-A" href="#appendix-A">Appendix A</a>. S-NAPTR and IRIS Uses</span>
<span class="h3"><a class="selflink" id="appendix-A.1" href="#appendix-A.1">A.1</a>. Example of S-NAPTR with IRIS</span>
This section shows an example of S-NAPTR [<a href="#ref-10" title=""Domain-based Application Service Location Using SRV RRs and the Dynamic Delegation Discovery Service (DDDS)"">10</a>] use by IRIS. In this
example, there are two registry types: REGA and REGB. There are also
two IRIS application transports: iris-a and iris-b. Given this, the
use of S-NAPTR offers the following:
1. A means by which an operator can split the set of servers running
REGA from the set of servers running REGB. This is to say, the
operator is able to split out the set of servers serving up data
for REGA from the set of servers serving up data for REGB.
2. A means by which an operator can distinguish the set of servers
running iris-a from the set of servers running iris-b. This is to
say, the operator is able to split out the set of servers running
protocol iris-a serving REGA and REGB data from the set of servers
running protocol iris-b serving REGA and REGB data.
3. A means by which an operator can specify which set of the servers
to operate and which set of the above servers to delegate to
another operator.
To implement the first feature, the operator deploys the following in
his or her DNS zone:
example.com.
;; order pref flags service re replacement
IN NAPTR 100 10 "" "REGA:iris-a:iris-b" "" rega.example.com
IN NAPTR 100 10 "" "REGB:iris-a:iris-b" "" regb.example.com
To implement the second feature, the operator then adds the following
in their DNS zone:
rega.example.com.
;; order pref flags service re replacement
IN NAPTR 100 10 "s" "REGA:iris-a" "" _iris-a._udp.example.com
regb.example.com.
IN NAPTR 100 10 "s" "REGA:iris-b" "" _iris-b._tcp.example.com
_iris-a._udp.example.com.
;; pref weight port target
IN SRV 10 0 34 big-a.example.com.
IN SRV 20 0 34 small-a.example.com.
<span class="grey">Newton & Sanz Standards Track [Page 46]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-47" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
_iris-b._tcp.example.com.
;; pref weight port target
IN SRV 10 0 34 big-b.example.com.
IN SRV 20 0 34 small-b.example.com.
Finally, an operator may decide to operate the REGA services while
delegating the REGB services to somebody else. Here is how that is
done:
example.com.
;; order pref flags service re replacement
IN NAPTR 100 10 "" "REGA:iris-a:iris-b" "" rega.example.com
IN NAPTR 100 10 "" "REGB:iris-a:iris-b" "" somebodyelse.com
Or the operator may decide to operate REGB services under the iris-a
protocol/transport while delegating the REGB services under the
iris-b protocol/transport to somebody else.
example.com.
;; order pref flags service re replacement
IN NAPTR 100 10 "" "REGB:iris-a:iris-b" "" regb.example.com
IN NAPTR 100 10 "s" "REGB:iris-a" "" _iris-a._udp.example.com
IN NAPTR 100 10 "s" "REGB:iris-b" "" _iris-b._tcp.somebodyelse.com
_iris-a._udp.example.com.
;; pref weight port target
IN SRV 10 0 34 big-a.example.com.
IN SRV 20 0 34 small-a.example.com.
Note that while this last example is possible, it is probably not
advisable because of the operational issues involved in synchronizing
the data between example.com and somebodyelse.com. It is provided
here as an example of what is possible.
<span class="h3"><a class="selflink" id="appendix-A.2" href="#appendix-A.2">A.2</a>. Using S-NAPTR for Cohabitation</span>
Given the examples in <a href="#appendix-A.1">Appendix A.1</a>, the use of S-NAPTR could be part
of a transition strategy for cohabitation of protocols solving the
problems of CRISP [<a href="#ref-17" title=""Cross Registry Internet Service Protocol (CRISP) Requirements"">17</a>].
For example, the type of data for domain information could be given
the application service label of "DREG1". Given this, the service
field of an S-NAPTR compliant NAPTR record could read
"DREG1:whois:iris-beep"
<span class="grey">Newton & Sanz Standards Track [Page 47]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-48" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
This service field conveys that domain data, as defined by CRISP, is
available via both the iris-beep protocol and the whois protocol.
The whois application protocol label refers to <a href="./rfc954">RFC 954</a> [<a href="#ref-19" title=""WHOIS Protocol Specification"">19</a>].
<span class="h2"><a class="selflink" id="appendix-B" href="#appendix-B">Appendix B</a>. IRIS Design Philosophy</span>
Beyond the concrete arguments that could be placed behind a
thoughtful analysis of the bits flying across the ether, there are
other abstract reasons for the development of IRIS. This section
attempts an explanation.
<span class="h3"><a class="selflink" id="appendix-B.1" href="#appendix-B.1">B.1</a>. The Basic Premise</span>
IRIS has been designed as a directory service for public-facing
registries of Internet resources. The basic premise is this:
o A client should be able to look up any single piece of data from
any type of registry. This lookup should involve a straight-
forward and consistent definition for finding the registry and
should entail a hit to a single data index in the registry.
o Anything more, such as searches up and down the DNS tree to find
the registry or searches across multiple indexes in a registry,
requires a client with special knowledge of the data relationships
contained within a registry.
Therefore, IRIS does the following:
o It specifies the basic schema language used by all registries to
specify their schemas.
o It provides the basic framework for a registry to make a
reference to an entity in another type of registry.
And, therefore, IRIS does not do the following:
o It does not specify a common query language across all types of
registries. A common query language imposed across multiple types
of registries usually results in the disabling of certain
functions by a server operator in order to meet acceptable levels
of performance, leaving a common query language that does not
commonly work.
o It does not impose any relationship between sets of data in any
type of registry, such as specifying a tree. There are many types
of Internet resources, and they do not all share the same style of
<span class="grey">Newton & Sanz Standards Track [Page 48]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-49" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
relationship with their contained sets of data. When it is not a
natural fit, an imposition of a common relationship is often a
concern and not a benefit.
<span class="h3"><a class="selflink" id="appendix-B.2" href="#appendix-B.2">B.2</a>. The Lure of a Universal Client</span>
The design premise of IRIS signifies that, for directory services,
there is no such thing as a universal client (or that if there is
one, it is commonly called the "web browser").
For IRIS, the closest thing to a universal client is one that may
"look up" data and may be able to display the data in a rudimentary
fashion. For a client to be able to "search" data or display it in a
truly user-friendly manner, it must have specific knowledge about the
type of data it is retrieving.
Attempts to outfit a universal client with a common query language
are also not very useful. A common query language may be applied to
a specific problem domain, which would require a user to have
expertise in both the common query language and the problem domain.
In the end, the outcome is usually the development of a client
specific to the problem domain but saddled with translation of the
user's desires and the lowest-common-denominator aspect of the query
language.
<span class="h3"><a class="selflink" id="appendix-B.3" href="#appendix-B.3">B.3</a>. Server Considerations</span>
As mentioned above, IRIS was designed for the directory service needs
of public-facing registries. In this light, certain aspects of more
generalized directory services are a hindrance in an environment that
does not have the same control and safety considerations as a managed
network.
For instance, a common query language can provide great flexibility
to both the power user and the abusive user. An abusive user could
easily submit a query across multiple indexes with partial values.
Such a query would have no utility other than to cause denial of
service to other users. To combat this, a service operator must
restrict the types of queries that cause harm to overall performance,
and this act obsoletes the benefit of a common query language.
Another consideration for server performance is the lack of a
required data relationship. Because sets of data often have
differing relationships, a one-size-fits-all approach does not fit
well with all types of registries. In addition, public-facing
services tend to have service level requirements that cannot
reasonably be met by transforming complete data stores from a native
format into a format enforcing an artificial set of relationships.
<span class="grey">Newton & Sanz Standards Track [Page 49]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-50" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
To combat these issues, operators of public-facing services tend to
create their own custom query parsers and back-end data stores. But
doing so brings into question the use of a generalized directory
service.
Finally, IRIS is built upon a set of standard technological layers.
This allows service operators to switch components to meet the needs
of their particular environment.
<span class="h3"><a class="selflink" id="appendix-B.4" href="#appendix-B.4">B.4</a>. Lookups, Searches, and Entity Classes</span>
IRIS supports both lookups and searches. Conceptually, the
difference between the two is as follows:
A "lookup" is a single query with a discrete value on a single
index.
Anything more, such as partial value queries, queries across
multiple indexes, or multiple queries to a single index is a
"search".
Lookups are accomplished through the defined query <lookupEntity>.
This query specifies a discrete name, called the entity name, to be
queried in a single index, called the entity class. Therefore,
implementations may consider a type of registry to be composed of
multiple indexes, one for each defined entity class.
There are no standard searches in IRIS. Each type of registry
defines its own set of searches.
<span class="h3"><a class="selflink" id="appendix-B.5" href="#appendix-B.5">B.5</a>. Entities References, Search Continuations, and Scope</span>
Due to its effect on client behavior and the side effects such
behavior may have on servers, IRIS makes a clear distinction between
entity references (<entity>) and search continuations
(<searchContinuation>). It is not an add-on, but a fundamental core
of the protocol.
The distinction is very important to a client:
"Go look over there and you will find what you seek." "Go look
over there and you may find what you seek, or you may find some
other stuff, or you may find nothing."
Finally, because IRIS makes no assumptions about and places no
requirements on the relationship of data in a registry, this also
extends to data of the same registry type spread across multiple
authority areas. This means that IRIS makes no requirements as to
<span class="grey">Newton & Sanz Standards Track [Page 50]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-51" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
the scope of entity references or search continuations. The scope is
determined by what the registry type needs and by what the registry
type allows a service operator.
<span class="h2"><a class="selflink" id="appendix-C" href="#appendix-C">Appendix C</a>. Acknowledgments</span>
The terminology used in this document to describe namespaces and
namespaces of namespaces is now much clearer thanks to the skillful
debate tactics of Leslie Daigle. Previously, it was much more
confusing. In addition, Leslie has provided great insight into the
details of URIs, URNs, and NAPTR/SRV resource records.
Many other technical complexities were proved unnecessary by David
Blacka and have been removed. And his IRIS implementation has helped
smooth out the rougher edges.
Authors' Addresses
Andrew L. Newton
VeriSign, Inc.
21345 Ridgetop Circle
Sterling, VA 20166
USA
Phone: +1 703 948 3382
EMail: anewton@verisignlabs.com; andy@hxr.us
URI: <a href="http://www.verisignlabs.com/">http://www.verisignlabs.com/</a>
Marcos Sanz
DENIC eG
Wiesenhuettenplatz 26
D-60329 Frankfurt
Germany
EMail: sanz@denic.de
URI: <a href="http://www.denic.de/">http://www.denic.de/</a>
<span class="grey">Newton & Sanz Standards Track [Page 51]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-52" ></span>
<span class="grey"><a href="./rfc3981">RFC 3981</a> IRIS-Core January 2005</span>
Full Copyright Statement
Copyright (C) The Internet Society (2005).
This document is subject to the rights, licenses and restrictions
contained in <a href="https://www.rfc-editor.org/bcp/bcp78">BCP 78</a>, and except as set forth therein, the authors
retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the IETF's procedures with respect to rights in IETF Documents can
be found in <a href="https://www.rfc-editor.org/bcp/bcp78">BCP 78</a> and <a href="https://www.rfc-editor.org/bcp/bcp79">BCP 79</a>.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
<a href="http://www.ietf.org/ipr">http://www.ietf.org/ipr</a>.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at ietf-
ipr@ietf.org.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.
Newton & Sanz Standards Track [Page 52]
</pre>
|