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
|
<pre>Network Working Group C. Heard, Ed.
Request for Comments: 4181 September 2005
BCP: 111
Category: Best Current Practice
<span class="h1">Guidelines for Authors and Reviewers of MIB Documents</span>
Status of This Memo
This document specifies an Internet Best Current Practices for the
Internet Community, and requests discussion and suggestions for
improvements. Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (2005).
Abstract
This memo provides guidelines for authors and reviewers of IETF
standards-track specifications containing MIB modules. Applicable
portions may be used as a basis for reviews of other MIB documents.
Table of Contents
<a href="#section-1">1</a>. Introduction ....................................................<a href="#page-3">3</a>
<a href="#section-2">2</a>. Terminology .....................................................<a href="#page-3">3</a>
<a href="#section-3">3</a>. General Documentation Guidelines ................................<a href="#page-4">4</a>
<a href="#section-3.1">3.1</a>. MIB Boilerplate Section ....................................<a href="#page-4">4</a>
<a href="#section-3.2">3.2</a>. Narrative Sections .........................................<a href="#page-5">5</a>
<a href="#section-3.3">3.3</a>. Definitions Section ........................................<a href="#page-5">5</a>
<a href="#section-3.4">3.4</a>. Security Considerations Section ............................<a href="#page-5">5</a>
<a href="#section-3.5">3.5</a>. IANA Considerations Section ................................<a href="#page-6">6</a>
<a href="#section-3.5.1">3.5.1</a>. Documents that Create a New Name Space ..............<a href="#page-6">6</a>
3.5.2. Documents that Require Assignments in
Existing Namespace(s) ...............................<a href="#page-7">7</a>
<a href="#section-3.5.3">3.5.3</a>. Documents with No IANA Requests .....................<a href="#page-8">8</a>
<a href="#section-3.6">3.6</a>. References Sections ........................................<a href="#page-8">8</a>
<a href="#section-3.7">3.7</a>. Copyright Notices ..........................................<a href="#page-9">9</a>
<a href="#section-3.8">3.8</a>. Intellectual Property Section .............................<a href="#page-10">10</a>
<a href="#section-4">4</a>. SMIv2 Usage Guidelines .........................................<a href="#page-10">10</a>
<a href="#section-4.1">4.1</a>. Module Names ..............................................<a href="#page-10">10</a>
<a href="#section-4.2">4.2</a>. Descriptors, TC Names, and Labels .........................<a href="#page-10">10</a>
<a href="#section-4.3">4.3</a>. Naming Hierarchy ..........................................<a href="#page-11">11</a>
<a href="#section-4.4">4.4</a>. IMPORTS Statement .........................................<a href="#page-11">11</a>
<a href="#section-4.5">4.5</a>. MODULE-IDENTITY Invocation ................................<a href="#page-12">12</a>
<a href="#section-4.6">4.6</a>. Textual Conventions and Object Definitions ................<a href="#page-14">14</a>
<span class="grey">Heard Best Current Practice [Page 1]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-2" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
<a href="#section-4.6.1">4.6.1</a>. Usage of Data Types ................................<a href="#page-14">14</a>
4.6.1.1. INTEGER, Integer32, Gauge32, and
Unsigned32 ................................<a href="#page-14">14</a>
<a href="#section-4.6.1.2">4.6.1.2</a>. Counter32 and Counter64 ...................<a href="#page-16">16</a>
<a href="#section-4.6.1.3">4.6.1.3</a>. CounterBasedGauge64 .......................<a href="#page-17">17</a>
<a href="#section-4.6.1.4">4.6.1.4</a>. OCTET STRING ..............................<a href="#page-17">17</a>
<a href="#section-4.6.1.5">4.6.1.5</a>. OBJECT IDENTIFIER .........................<a href="#page-18">18</a>
<a href="#section-4.6.1.6">4.6.1.6</a>. The BITS Construct ........................<a href="#page-19">19</a>
<a href="#section-4.6.1.7">4.6.1.7</a>. IpAddress .................................<a href="#page-19">19</a>
<a href="#section-4.6.1.8">4.6.1.8</a>. TimeTicks .................................<a href="#page-19">19</a>
<a href="#section-4.6.1.9">4.6.1.9</a>. TruthValue ................................<a href="#page-19">19</a>
<a href="#section-4.6.1.10">4.6.1.10</a>. Other Data Types .........................<a href="#page-19">19</a>
<a href="#section-4.6.2">4.6.2</a>. DESCRIPTION and REFERENCE Clauses ..................<a href="#page-20">20</a>
<a href="#section-4.6.3">4.6.3</a>. DISPLAY-HINT Clause ................................<a href="#page-21">21</a>
<a href="#section-4.6.4">4.6.4</a>. Conceptual Table Definitions .......................<a href="#page-21">21</a>
<a href="#section-4.6.5">4.6.5</a>. OID Values Assigned to Objects .....................<a href="#page-23">23</a>
<a href="#section-4.6.6">4.6.6</a>. OID Length Limitations and Table Indexing ..........<a href="#page-24">24</a>
<a href="#section-4.7">4.7</a>. Notification Definitions ..................................<a href="#page-24">24</a>
<a href="#section-4.8">4.8</a>. Compliance Statements .....................................<a href="#page-25">25</a>
<a href="#section-4.8.1">4.8.1</a>. Note Regarding These Examples and <a href="./rfc2578">RFC 2578</a> .........<a href="#page-27">27</a>
<a href="#section-4.9">4.9</a>. Revisions to MIB Modules ..................................<a href="#page-28">28</a>
<a href="#section-5">5</a>. Acknowledgments ................................................<a href="#page-31">31</a>
<a href="#section-6">6</a>. Security Considerations ........................................<a href="#page-32">32</a>
<a href="#section-7">7</a>. IANA Considerations ............................................<a href="#page-32">32</a>
<a href="#appendix-A">Appendix A</a>: MIB Review Checklist .................................<a href="#page-33">33</a>
<a href="#appendix-B">Appendix B</a>: Commonly Used Textual Conventions ....................<a href="#page-34">34</a>
<a href="#appendix-C">Appendix C</a>: Suggested Naming Conventions .........................<a href="#page-36">36</a>
<a href="#appendix-D">Appendix D</a>: Suggested OID Layout .................................<a href="#page-37">37</a>
Normative References ..............................................<a href="#page-38">38</a>
Informative References ............................................<a href="#page-40">40</a>
<span class="grey">Heard Best Current Practice [Page 2]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-3" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
<span class="h2"><a class="selflink" id="section-1" href="#section-1">1</a>. Introduction</span>
Some time ago, the IESG instituted a policy of requiring expert
review of IETF standards-track specifications containing MIB modules.
These reviews were established to ensure that such specifications
follow established IETF documentation practices and that the MIB
modules they contain meet certain generally accepted standards of
quality, including (but not limited to) compliance with all syntactic
and semantic requirements of SMIv2 (STD 58) [<a href="./rfc2578" title=""Structure of Management Information Version 2 (SMIv2)"">RFC2578</a>] [<a href="./rfc2579" title=""Textual Conventions for SMIv2"">RFC2579</a>]
[<a href="./rfc2580" title=""Conformance Statements for SMIv2"">RFC2580</a>] that are applicable to "standard" MIB modules. The purpose
of this memo is to document the guidelines that are followed in such
reviews.
Please note that the guidelines in this memo are not intended to
alter requirements or prohibitions (in the sense of "MUST", "MUST
NOT", "SHALL", or "SHALL NOT" as defined in <a href="./rfc2119">RFC 2119</a> [<a href="./rfc2119" title=""Key words for use in RFCs to Indicate Requirements Levels"">RFC2119</a>]) of
existing BCPs or Internet Standards except where those requirements
or prohibitions are ambiguous or contradictory. In the exceptional
cases where ambiguities or contradictions exist, this memo documents
the current generally accepted interpretation. In certain instances,
the guidelines in this memo do alter recommendations (in the sense of
"SHOULD", "SHOULD NOT", "RECOMMENDED", or "NOT RECOMMENDED" as
defined in <a href="./rfc2119">RFC 2119</a>) of existing BCPs or Internet Standards. This
has been done where practical experience has shown that the published
recommendations are suboptimal. In addition, this memo provides
guidelines for the selection of certain SMIv2 options (in the sense
of "MAY" or "OPTIONAL" as defined in <a href="./rfc2119">RFC 2119</a>) in cases where there
is a consensus on a preferred approach.
Although some of the guidelines in this memo are not applicable to
non-standards track or non-IETF MIB documents, authors and reviewers
of those documents should consider using the ones that do apply.
Reviewers and authors need to be aware that some of the guidelines in
this memo do not apply to MIB modules that have been translated to
SMIv2 from SMIv1 (STD 16) [<a href="./rfc1155" title=""Structure and Identification of Management Information for TCP/IP-based Internets"">RFC1155</a>] [<a href="./rfc1212" title=""Concise MIB Definitions"">RFC1212</a>] [<a href="./rfc1215" title=""A Convention for Defining Traps for use with the SNMP"">RFC1215</a>].
<span class="h2"><a class="selflink" id="section-2" href="#section-2">2</a>. Terminology</span>
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL", when used in the guidelines in this memo, are to be
interpreted as described in <a href="./rfc2119">RFC 2119</a> [<a href="./rfc2119" title=""Key words for use in RFCs to Indicate Requirements Levels"">RFC2119</a>].
The terms "MIB module" and "information module" are used
interchangeably in this memo. As used here, both terms refer to any
of the three types of information modules defined in Section 3 of <a href="./rfc2578">RFC</a>
<a href="./rfc2578">2578</a> [<a href="./rfc2578" title=""Structure of Management Information Version 2 (SMIv2)"">RFC2578</a>].
<span class="grey">Heard Best Current Practice [Page 3]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-4" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
The term "standard", when it appears in quotes, is used in the same
sense as in the SMIv2 documents [<a href="./rfc2578" title=""Structure of Management Information Version 2 (SMIv2)"">RFC2578</a>] [<a href="./rfc2579" title=""Textual Conventions for SMIv2"">RFC2579</a>] [<a href="./rfc2580" title=""Conformance Statements for SMIv2"">RFC2580</a>]. In
particular, it is used to refer to the requirements that those
documents levy on "standard" modules or "standard" objects.
<span class="h2"><a class="selflink" id="section-3" href="#section-3">3</a>. General Documentation Guidelines</span>
In general, IETF standards-track specifications containing MIB
modules are subject to the same requirements as IETF standards-track
RFCs (see [<a href="#ref-RFC2223bis" title=""Instructions to Request for Comments (RFC) Authors"">RFC2223bis</a>]), although there are some differences. In
particular, since the version under review will be an Internet-Draft,
the notices on the front page MUST comply with the requirements of
<a href="http://www.ietf.org/ietf/1id-guidelines.txt">http://www.ietf.org/ietf/1id-guidelines.txt</a> and not with those of
[<a href="#ref-RFC2223bis" title=""Instructions to Request for Comments (RFC) Authors"">RFC2223bis</a>]. In addition, since the specification under review is
expected to be submitted to the IESG, it MUST comply with certain
requirements that do not necessarily apply to RFCs; see
<a href="http://www.ietf.org/ID-Checklist.html">http://www.ietf.org/ID-Checklist.html</a> for details.
Section 4 of [<a href="#ref-RFC2223bis" title=""Instructions to Request for Comments (RFC) Authors"">RFC2223bis</a>] lists the sections that may exist in an
RFC. Sections from the abstract onward may also be present in an
Internet-Draft; see <a href="http://www.ietf.org/ID-Checklist.html">http://www.ietf.org/ID-Checklist.html</a>. The "body
of memo" is always required, and in a MIB document MUST contain at
least the following:
o MIB boilerplate section
o Narrative sections
o Definitions section
o Security Considerations section
o IANA Considerations section
o References section
Section-by-section guidelines follow.
<span class="h3"><a class="selflink" id="section-3.1" href="#section-3.1">3.1</a>. MIB Boilerplate Section</span>
This section MUST contain a verbatim copy of the latest approved
Internet-Standard Management Framework boilerplate, which is
available on-line at <a href="http://www.ops.ietf.org/mib-boilerplate.html">http://www.ops.ietf.org/mib-boilerplate.html</a>.
<span class="grey">Heard Best Current Practice [Page 4]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-5" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
<span class="h3"><a class="selflink" id="section-3.2" href="#section-3.2">3.2</a>. Narrative Sections</span>
The narrative part MUST include an overview section that describes
the scope and field of application of the MIB modules defined by the
specification and that specifies the relationship (if any) of these
MIB modules to other standards, particularly to standards containing
other MIB modules. The narrative part SHOULD include one or more
sections to briefly describe the structure of the MIB modules defined
in the specification.
If the MIB modules defined by the specification import definitions
from other MIB modules (except for those defined in the SMIv2
documents [<a href="./rfc2578" title=""Structure of Management Information Version 2 (SMIv2)"">RFC2578</a>] [<a href="./rfc2579" title=""Textual Conventions for SMIv2"">RFC2579</a>] [<a href="./rfc2580" title=""Conformance Statements for SMIv2"">RFC2580</a>]) or are always implemented in
conjunction with other MIB modules, then those facts MUST be noted in
the overview section, as MUST any special interpretations of objects
in other MIB modules. For instance, so-called media-specific MIB
modules are always implemented in conjunction with the IF-MIB
[<a href="./rfc2863" title=""The Interfaces Group MIB"">RFC2863</a>] and are REQUIRED to document how certain objects in the
IF-MIB are used. In addition, media-specific MIB modules that rely
on the ifStackTable [<a href="./rfc2863" title=""The Interfaces Group MIB"">RFC2863</a>] and the ifInvStackTable [<a href="./rfc2864" title=""The Inverted Stack Table Extension to the Interfaces Group MIB"">RFC2864</a>] to
maintain information regarding configuration and multiplexing of
interface sublayers MUST contain a description of the layering model.
<span class="h3"><a class="selflink" id="section-3.3" href="#section-3.3">3.3</a>. Definitions Section</span>
This section contains the MIB module(s) defined by the specification.
These MIB modules MUST be written in SMIv2 [<a href="./rfc2578" title=""Structure of Management Information Version 2 (SMIv2)"">RFC2578</a>] [<a href="./rfc2579" title=""Textual Conventions for SMIv2"">RFC2579</a>]
[<a href="./rfc2580" title=""Conformance Statements for SMIv2"">RFC2580</a>]; SMIv1 [<a href="./rfc1155" title=""Structure and Identification of Management Information for TCP/IP-based Internets"">RFC1155</a>] [<a href="./rfc1212" title=""Concise MIB Definitions"">RFC1212</a>] [<a href="./rfc1215" title=""A Convention for Defining Traps for use with the SNMP"">RFC1215</a>] has "Not Recommended"
status [<a href="./rfc3410" title=""Introduction and Applicability Statements for Internet-Standard Management Framework"">RFC3410</a>] and is no longer acceptable in IETF MIB modules.
See <a href="#section-4">Section 4</a> for guidelines on SMIv2 usage.
<span class="h3"><a class="selflink" id="section-3.4" href="#section-3.4">3.4</a>. Security Considerations Section</span>
Each specification that defines one or more MIB modules MUST contain
a section that discusses security considerations relevant to those
modules. This section MUST be patterned after the latest approved
template (available at <a href="http://www.ops.ietf.org/mib-security.html">http://www.ops.ietf.org/mib-security.html</a>).
In particular, writable MIB objects that could be especially
disruptive if abused MUST be explicitly listed by name and the
associated security risks MUST be spelled out; similarly, readable
MIB objects that contain especially sensitive information or that
raise significant privacy concerns MUST be explicitly listed by name
and the reasons for the sensitivity/privacy concerns MUST be
explained. If there are no risks/vulnerabilities for a specific
category of MIB objects, then that fact MUST be explicitly stated.
Failure to mention a particular category of MIB objects will not be
equated to a claim of no risks/vulnerabilities in that category;
<span class="grey">Heard Best Current Practice [Page 5]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-6" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
rather, it will be treated as an act of omission and will result in
the document being returned to the author for correction. Remember
that the objective is not to blindly copy text from the template, but
rather to think and evaluate the risks/vulnerabilities and then
state/document the result of this evaluation.
<span class="h3"><a class="selflink" id="section-3.5" href="#section-3.5">3.5</a>. IANA Considerations Section</span>
In order to comply with IESG policy as set forth in
<a href="http://www.ietf.org/ID-Checklist.html">http://www.ietf.org/ID-Checklist.html</a>, every Internet-Draft that is
submitted to the IESG for publication MUST contain an IANA
Considerations section. The requirements for this section vary
depending what actions are required of the IANA.
<span class="h4"><a class="selflink" id="section-3.5.1" href="#section-3.5.1">3.5.1</a>. Documents that Create a New Name Space</span>
If an Internet-Draft defines a new name space that is to be
administered by the IANA, then the document MUST include an IANA
Considerations section conforming to the guidelines set forth in <a href="./rfc2434">RFC</a>
<a href="./rfc2434">2434</a> [<a href="./rfc2434" title="">RFC2434</a>] that specifies how the name space is to be
administered.
Name spaces defined by MIB documents generally consist of the range
of values for some type (usually an enumerated INTEGER) defined by a
TEXTUAL-CONVENTION (TC) or of a set of administratively-defined
OBJECT IDENTIFIER (OID) values. In each case, the definitions are
housed in stand-alone MIB modules that are maintained by the IANA.
These IANA-maintained MIB modules are separate from the MIB modules
defined in standards-track specifications so that new assignments can
be made without having to republish a standards-track RFC. Examples
of IANA-maintained MIB modules include the IANAifType-MIB
(<a href="http://www.iana.org/assignments/ianaiftype-mib">http://www.iana.org/assignments/ianaiftype-mib</a>), which defines a
name space used by the IF-MIB [<a href="./rfc2863" title=""The Interfaces Group MIB"">RFC2863</a>], and the IANA-RTPROTO-MIB
(<a href="http://www.iana.org/assignments/ianaiprouteprotocol-mib">http://www.iana.org/assignments/ianaiprouteprotocol-mib</a>), which
defines a name space used by the IPMROUTE-STD-MIB [<a href="./rfc2932" title=""IPv4 Multicast Routing MIB"">RFC2932</a>].
The current practice for such cases is to include a detailed IANA
Considerations section complying with <a href="./rfc2434">RFC 2434</a> in the DESCRIPTION
clause of the MODULE-IDENTITY invocation in each IANA-maintained MIB
module and for the IANA Considerations section of the MIB document
that defines the name spaces to refer to the URLs for the relevant
modules. See <a href="./rfc2932">RFC 2932</a> [<a href="./rfc2932" title=""IPv4 Multicast Routing MIB"">RFC2932</a>] for an example. This creates a
chicken-and-egg problem for MIB documents that have not yet been
published as RFCs because the relevant IANA-maintained MIB modules
will not yet exist. The accepted way out of this dilemma is to
include the initial content of each IANA-maintained MIB module in a
non-normative section of the initial issue of the document that
defines the name space; for an example, see [<a href="./rfc1573" title=""Evolution of the Interfaces Group of MIB-II"">RFC1573</a>], which
<span class="grey">Heard Best Current Practice [Page 6]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-7" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
documents the initial version of the IANAifType-MIB. That material
is usually omitted from subsequent updates to the document since the
IANA-maintained modules are then available on-line (cf. [<a href="./rfc2863" title=""The Interfaces Group MIB"">RFC2863</a>]).
Reviewers of draft MIB documents to which these considerations apply
MUST check that the IANA Considerations section proposed for
publication in the RFC is present and contains pointers to the
appropriate IANA-maintained MIB modules. Reviewers of Internet
Drafts that contain the proposed initial content of IANA-maintained
MIB modules MUST also verify that the DESCRIPTION clauses of the
MODULE-IDENTITY invocations contain an IANA Considerations section
compliant with the guidelines in <a href="./rfc2434">RFC 2434</a>.
<span class="h4"><a class="selflink" id="section-3.5.2" href="#section-3.5.2">3.5.2</a>. Documents that Require Assignments in Existing Namespace(s)</span>
If an Internet-Draft requires the IANA to update an existing registry
prior to publication as an RFC, then the IANA Considerations section
in the draft MUST document that fact. MIB documents that contain the
initial version of a MIB module will generally require that the IANA
assign an OBJECT IDENTIFIER value for the MIB module's MODULE-
IDENTITY value and possibly to make other assignments as well.
Internet-Drafts containing such MIB modules MUST contain an IANA
Considerations section that specifies the registries that are to be
updated, the descriptors to which OBJECT IDENTIFIER values are being
assigned, and the subtrees under which the values are to be
allocated. The text SHOULD be crafted so that after publication it
will serve to document the OBJECT IDENTIFIER assignments. For
example, something along the following lines would be appropriate for
an Internet-Draft containing a single MIB module with MODULE-IDENTITY
descriptor powerEthernetMIB that is to be assigned a value under the
'mib-2' subtree:
The MIB module in this document uses the following IANA-assigned
OBJECT IDENTIFIER values recorded in the SMI Numbers registry:
Descriptor OBJECT IDENTIFIER value
---------- -----------------------
powerEthernetMIB { mib-2 XXX }
Editor's Note (to be removed prior to publication): the IANA is
requested to assign a value for "XXX" under the 'mib-2' subtree
and to record the assignment in the SMI Numbers registry. When
the assignment has been made, the RFC Editor is asked to replace
"XXX" (here and in the MIB module) with the assigned value and to
remove this note.
<span class="grey">Heard Best Current Practice [Page 7]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-8" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
Note well: prior to official assignment by the IANA, a draft
document MUST use placeholders (such as "XXX" above) rather than
actual numbers. See <a href="#section-4.5">Section 4.5</a> for an example of how this is done
in a draft MIB module.
<span class="h4"><a class="selflink" id="section-3.5.3" href="#section-3.5.3">3.5.3</a>. Documents with No IANA Requests</span>
If an Internet-Draft makes no requests of the IANA, then that fact
MUST be documented in the IANA Considerations section. When an
Internet-Draft contains an update of a previously published MIB
module, it typically will not require any action on the part of the
IANA, but it may inherit an IANA Considerations section documenting
existing assignments from the RFC that contains the previous version
of the MIB module. In such cases, the draft MUST contain a note (to
be removed prior to publication) explicitly indicating that nothing
is required from the IANA. For example, a draft that contains an
updated version of the POWER-ETHERNET-MIB [<a href="./rfc3621" title=""Power Ethernet MIB"">RFC3621</a>] might include an
IANA Considerations section such as the following:
The MIB module in this document uses the following IANA-assigned
OBJECT IDENTIFIER values recorded in the SMI Numbers registry:
Descriptor OBJECT IDENTIFIER value
---------- -----------------------
powerEthernetMIB { mib-2 105 }
Editor's Note (to be removed prior to publication): this draft
makes no additional requests of the IANA.
If an Internet-Draft makes no requests of the IANA and there are no
existing assignments to be documented, then suitable text for the
draft would be something along the following lines:
No IANA actions are required by this document.
<span class="h3"><a class="selflink" id="section-3.6" href="#section-3.6">3.6</a>. References Sections</span>
Section 4.7f of [<a href="#ref-RFC2223bis" title=""Instructions to Request for Comments (RFC) Authors"">RFC2223bis</a>] specifies the requirements for the
references sections in an RFC; <a href="http://www.ietf.org/ID-Checklist.html">http://www.ietf.org/ID-Checklist.html</a>
imposes the same requirements on Internet-Drafts. In particular,
there MUST be separate lists of normative and informative references,
each in a separate section. The style SHOULD follow that of recently
published RFCs.
The standard MIB boilerplate available at
<a href="http://www.ops.ietf.org/mib-boilerplate.html">http://www.ops.ietf.org/mib-boilerplate.html</a> includes lists of
normative and informative references that MUST appear in all IETF
<span class="grey">Heard Best Current Practice [Page 8]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-9" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
specifications that contain MIB modules. If items from other MIB
modules appear in an IMPORTS statement in the Definitions section,
then the specifications containing those MIB modules MUST be included
in the list of normative references. When items are imported from an
IANA-maintained MIB module, the corresponding normative reference
SHALL point to the on-line version of that MIB module. It is the
policy of the RFC Editor that all references must be cited in the
text; such citations MUST appear in the overview section where
documents containing imported definitions (other than those already
mentioned in the MIB boilerplate) are required to be mentioned (cf.
<a href="#section-3.2">Section 3.2</a>).
In general, each normative reference SHOULD point to the most recent
version of the specification in question.
<span class="h3"><a class="selflink" id="section-3.7" href="#section-3.7">3.7</a>. Copyright Notices</span>
IETF MIB documents MUST contain the copyright notices and disclaimer
specified in Sections <a href="#section-5.4">5.4</a> and <a href="#section-5.5">5.5</a> of <a href="./rfc3978">RFC 3978</a> [<a href="./rfc3978" title=""IETF Rights in Contributions"">RFC3978</a>]. Authors and
reviewers MUST check to make sure that the correct year is inserted
into these notices. In addition, the DESCRIPTION clause of the
MODULE-IDENTITY invocation of each MIB module that will appear in the
published RFC MUST contain a pointer to the copyright notices in the
RFC. A template suitable for inclusion in an Internet-Draft,
appropriate for MIB modules other than those that are to be
maintained by the IANA, is as follows:
DESCRIPTION
" [ ... ]
Copyright (C) The Internet Society (date). This version
of this MIB module is part of RFC yyyy; see the RFC
itself for full legal notices."
-- RFC Ed.: replace yyyy with actual RFC number & remove this note
A template suitable for MIB modules that are to be maintained by the
IANA is as follows:
DESCRIPTION
" [ ... ]
Copyright (C) The Internet Society (date). The initial
version of this MIB module was published in RFC yyyy;
for full legal notices see the RFC itself. Supplementary
information may be available at:
<a href="http://www.ietf.org/copyrights/ianamib.html">http://www.ietf.org/copyrights/ianamib.html</a>."
-- RFC Ed.: replace yyyy with actual RFC number & remove this note
<span class="grey">Heard Best Current Practice [Page 9]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-10" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
In each case, the current year is to be inserted in place of the word
"date".
<span class="h3"><a class="selflink" id="section-3.8" href="#section-3.8">3.8</a>. Intellectual Property Section</span>
<a href="./rfc3979#section-5">Section 5 of RFC 3979</a> [<a href="./rfc3979" title=""Intellectual Property Rights in IETF Technology"">RFC3979</a>] contains a notice regarding
intellectual property rights or other rights that must appear in all
IETF RFCs. A verbatim copy of that notice SHOULD appear in every
IETF MIB document.
<span class="h2"><a class="selflink" id="section-4" href="#section-4">4</a>. SMIv2 Usage Guidelines</span>
In general, MIB modules in IETF standards-track specifications MUST
comply with all syntactic and semantic requirements of SMIv2
[<a href="./rfc2578" title=""Structure of Management Information Version 2 (SMIv2)"">RFC2578</a>] [<a href="./rfc2579" title=""Textual Conventions for SMIv2"">RFC2579</a>] [<a href="./rfc2580" title=""Conformance Statements for SMIv2"">RFC2580</a>] that apply to "standard" MIB modules
and except as noted below SHOULD comply with SMIv2 recommendations.
The guidelines in this section are intended to supplement the SMIv2
documents in the following ways:
o to document the current generally accepted interpretation when
those documents contain ambiguities or contradictions;
o to update recommendations in those documents that have been shown
by practical experience to be out-of-date or otherwise suboptimal;
o to provide guidance in selection of SMIv2 options in cases where
there is a consensus on a preferred approach.
<span class="h3"><a class="selflink" id="section-4.1" href="#section-4.1">4.1</a>. Module Names</span>
<a href="./rfc2578#section-3">RFC 2578 Section 3</a> specifies the rules for module names. Note in
particular that names of "standard" modules MUST be unique, MUST
follow the syntax rules in <a href="./rfc2578#section-3">RFC 2578 Section 3</a>, and MUST NOT be
changed when a MIB module is revised (see also <a href="./rfc2578#section-10">RFC 2578 Section 10</a>).
It is RECOMMENDED that module names be mnemonic. See <a href="#appendix-C">Appendix C</a> for
suggested naming conventions.
<span class="h3"><a class="selflink" id="section-4.2" href="#section-4.2">4.2</a>. Descriptors, TC Names, and Labels</span>
<a href="./rfc2578">RFC 2578</a> Sections <a href="#section-3.1">3.1</a>, <a href="#section-7.1.1">7.1.1</a>, and <a href="#section-7.1.4">7.1.4</a> and <a href="./rfc2579#section-3">RFC 2579 Section 3</a>
recommend that descriptors and names associated with macro
invocations and labels associated with enumerated INTEGER and BITS
values be no longer than 32 characters, but require that they be no
longer than 64 characters.
<span class="grey">Heard Best Current Practice [Page 10]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-11" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
Restricting descriptors, TC names, and labels to 32 characters often
conflicts with the recommendation that they be mnemonic and (for
descriptors and TC names) with the requirement that they be unique
(see <a href="./rfc2578#section-3.1">RFC 2578 Section 3.1</a> and <a href="./rfc2579#section-3">RFC 2579 Section 3</a>). The consensus of
the current pool of MIB reviewers is that the SMIv2 recommendation to
limit descriptors, TC names, and labels to 32 characters SHOULD be
set aside in favor of promoting clarity and uniqueness and that
automated tools such as MIB compilers SHOULD NOT by default generate
warnings for violating that recommendation.
Note that violations of the 64-character limit MUST NOT be ignored;
they MUST be treated as errors.
See <a href="#appendix-C">Appendix C</a> for suggested descriptor and TC naming conventions.
<span class="h3"><a class="selflink" id="section-4.3" href="#section-4.3">4.3</a>. Naming Hierarchy</span>
<a href="./rfc2578#section-4">RFC 2578 Section 4</a> describes the object identifier subtrees that are
maintained by IANA and specifies the usages for those subtrees. In
particular, the mgmt subtree { iso 3 6 1 2 } is used to identify IETF
"standard" objects, while the experimental subtree { iso 3 6 1 3 } is
used to identify objects that are under development in the IETF. It
is REQUIRED that objects be moved from the experimental subtree to
the mgmt subtree when a MIB module enters the IETF standards track.
Experience has shown that it is impractical to move objects from one
subtree to another once those objects have seen large-scale use in an
operational environment. Hence any object that is targeted for
deployment in an operational environment MUST NOT be registered under
the experimental subtree, irrespective of the standardization status
of that object. The experimental subtree should be used only for
objects that are intended for limited experimental deployment. Such
objects typically are defined in Experimental RFCs.
Note: the term "object", as used here and in <a href="./rfc2578#section-4">RFC 2578 Section 4</a>, is
to be broadly interpreted as any construct that results in an OBJECT
IDENTIFIER registration. The list of such constructs is specified in
<a href="./rfc2578#section-3.6">RFC 2578 Section 3.6</a>.
<span class="h3"><a class="selflink" id="section-4.4" href="#section-4.4">4.4</a>. IMPORTS Statement</span>
<a href="./rfc2578#section-3.2">RFC 2578 Section 3.2</a> specifies which symbols must be imported and
also lists certain predefined symbols that must not be imported.
The general requirement is that if an external symbol other than a
predefined ASN.1 type or the BITS construct is used, then it MUST be
mentioned in the module's IMPORTS statement. The words "external
object" in the first paragraph of that section may give the
<span class="grey">Heard Best Current Practice [Page 11]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-12" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
impression that such symbols are limited to those that refer to
object definitions, but that is not the case, as subsequent
paragraphs should make clear.
Note that exemptions to this general requirement are granted by <a href="./rfc2580">RFC</a>
<a href="./rfc2580">2580</a> Sections <a href="#section-5.4.3">5.4.3</a> and <a href="#section-6.5.2">6.5.2</a> for descriptors of objects appearing in
the OBJECT clause of a MODULE-COMPLIANCE statement or in the
VARIATION clause of an AGENT-CAPABILITIES statement. Some MIB
compilers also grant exemptions to descriptors of notifications
appearing in a VARIATION clause and to descriptors of object groups
and notification groups referenced by a MANDATORY-GROUPS clause, a
GROUP clause, or an INCLUDES clause, although <a href="./rfc2580">RFC 2580</a> (through
apparent oversight) does not mention those cases. The exemptions are
sometimes seen as unhelpful because they make IMPORTS rules more
complicated and inter-module dependencies less obvious than they
otherwise would be. External symbols referenced by compliance
statements and capabilities statements MAY therefore be listed in the
IMPORTS statement; if this is done, it SHOULD be done consistently.
Finally, even though it is not forbidden by the SMI, it is considered
poor style to import symbols that are not used, and standards-track
MIB modules SHOULD NOT do so.
<span class="h3"><a class="selflink" id="section-4.5" href="#section-4.5">4.5</a>. MODULE-IDENTITY Invocation</span>
<a href="./rfc2578#section-3">RFC 2578 Section 3</a> requires that all SMIv2 MIB modules start with
exactly one invocation of the MODULE-IDENTITY macro. This invocation
MUST appear immediately after the IMPORTS statement.
<a href="./rfc2578#section-5">RFC 2578 Section 5</a> describes how the various clauses are used. The
following additional guidelines apply to all MIB modules over which
the IETF has change control:
- If the module was developed by an IETF working group, then the
ORGANIZATION clause MUST provide the full name of the working
group, and the CONTACT-INFO clause MUST include working group
mailing list information. The CONTACT-INFO clause SHOULD also
provide a pointer to the working group's web page.
- A REVISION clause MUST be present for each revision of the MIB
module, and the UTC time of the most recent REVISION clause MUST
match that of the LAST-UPDATED clause. The DESCRIPTION clause
associated with each revision MUST state in which RFC that revision
appeared and SHOULD provide a list of all significant changes.
When a MIB module is revised, UTC times in all REVISION clauses
SHOULD be updated to use four-digit year notation.
<span class="grey">Heard Best Current Practice [Page 12]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-13" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
- The value assigned to the MODULE-IDENTITY descriptor MUST be unique
and (for IETF standards-track MIB modules) SHOULD reside under the
mgmt subtree [<a href="./rfc2578" title=""Structure of Management Information Version 2 (SMIv2)"">RFC2578</a>]. Most often it will be an IANA-assigned
value directly under mib-2 [<a href="./rfc2578" title=""Structure of Management Information Version 2 (SMIv2)"">RFC2578</a>], although for media-specific
MIB modules that extend the IF-MIB [<a href="./rfc2863" title=""The Interfaces Group MIB"">RFC2863</a>] it is customary to use
an IANA-assigned value under transmission [<a href="./rfc2578" title=""Structure of Management Information Version 2 (SMIv2)"">RFC2578</a>]. In the past,
some IETF working groups have made their own assignments from
subtrees delegated to them by IANA, but that practice has proven
problematic and is NOT RECOMMENDED.
While a MIB module is under development, the RFC number in which it
will eventually be published is usually unknown and must be filled in
by the RFC Editor prior to publication. An appropriate form for the
REVISION clause applying to a version under development would be
something along the following lines:
REVISION "200212132358Z" -- December 13, 2002
DESCRIPTION "Initial version, published as RFC yyyy."
-- RFC Ed.: replace yyyy with actual RFC number & remove this note
Note that after RFC publication, a REVISION clause is present only
for published versions of a MIB module and not for interim versions
that existed only as Internet-Drafts. Thus, a draft version of a MIB
module MUST contain just one new REVISION clause that covers all
changes since the last published version (if any).
When the initial version of a MIB module is under development, the
value assigned to the MODULE-IDENTITY descriptor will be unknown if
an IANA-assigned value is used, because the assignment is made just
prior to publication as an RFC. The accepted form for the MODULE-
IDENTITY statement in draft versions of such a module is something
along the following lines:
<descriptor> MODULE-IDENTITY
[ ... ]
::= { <subtree> XXX }
-- RFC Ed.: replace XXX with IANA-assigned number & remove this note
where <descriptor> is whatever descriptor has been selected for the
module and <subtree> is the subtree under which the module is to be
registered (e.g., mib-2 or transmission). Note that XXX must be
temporarily replaced by a number in order for the module to compile.
<span class="grey">Heard Best Current Practice [Page 13]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-14" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
Note well: prior to official assignment by the IANA, a draft
document MUST use a placeholder (such as "XXX" above) rather than an
actual number. If trial implementations are desired during the
development process, then an assignment under the 'experimental'
subtree may be obtained from the IANA (cf. <a href="#section-4.3">Section 4.3</a>).
<span class="h3"><a class="selflink" id="section-4.6" href="#section-4.6">4.6</a>. Textual Conventions and Object Definitions</span>
<span class="h4"><a class="selflink" id="section-4.6.1" href="#section-4.6.1">4.6.1</a>. Usage of Data Types</span>
<span class="h5"><a class="selflink" id="section-4.6.1.1" href="#section-4.6.1.1">4.6.1.1</a>. INTEGER, Integer32, Gauge32, and Unsigned32</span>
The 32-bit integer data types INTEGER, Integer32, Gauge32, and
Unsigned32 are described in <a href="./rfc2578#section-2">RFC 2578 Section 2</a> and further elaborated
in <a href="./rfc2578">RFC 2578</a> Sections <a href="#section-7.1.1">7.1.1</a>, <a href="#section-7.1.7">7.1.7</a>, and <a href="#section-7.1.11">7.1.11</a>. The following
guidelines apply when selecting one of these data types for an object
definition or a textual convention:
- For integer-valued enumerations:
- INTEGER is REQUIRED; - Integer32, Unsigned32, and Gauge32 MUST
NOT be used.
Note that <a href="./rfc2578">RFC 2578</a> recommends (but does not require) that integer-
valued enumerations start at 1 and be numbered contiguously. This
recommendation SHOULD be followed unless there is a valid reason to
do otherwise, e.g., to match values of external data or to indicate
special cases, and any such special-case usage SHOULD be clearly
documented. For an example, see the InetAddressType TC [<a href="./rfc4001" title=""Textual Conventions for Internet Network Addresses"">RFC4001</a>].
Although the SMI allows DEFVAL clauses for integer-valued
enumerations to specify the default value either by label or by
numeric value, the label form is preferred since all the examples in
<a href="./rfc2578">RFC 2578</a> are of that form and some tools do not accept the numeric
form.
- If the value range is between -2147483648..2147483647 (inclusive)
and negative values are possible, then:
- Integer32 is RECOMMENDED;
- INTEGER is acceptable;
- Unsigned32 and Gauge32 MUST NOT be used.
- If the value range is between 0..4294967295 (inclusive) and the
value of the information being modelled may increase above the
maximum value or decrease below the minimum value, then:
<span class="grey">Heard Best Current Practice [Page 14]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-15" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
- Gauge32 is RECOMMENDED;
- Unsigned32 is acceptable;
- INTEGER and Integer32 MUST NOT be used if
values greater than 2147483647 are possible.
- If the value range is between 0..4294967295 (inclusive), and values
greater than 2147483647 are possible, and the value of the
information being modelled does not increase above the maximum
value nor decrease below the minimum value, then:
- Unsigned32 is RECOMMENDED;
- Gauge32 is acceptable;
- INTEGER and Integer32 MUST NOT be used.
- If the value range is between 0..2147483647 (inclusive), and the
value of the information being modelled does not increase above the
maximum value nor decrease below the minimum value, then:
- Unsigned32 is RECOMMENDED;
- INTEGER, Integer32, and Gauge32 are acceptable.
- For integer-valued objects that appear in an INDEX clause or for
integer-valued TCs that are to be used in an index column:
- Unsigned32 with a range that excludes zero is RECOMMENDED for
most index objects. It is acceptable to include zero in the
range when it is semantically significant or when it is used as
the index value for a unique row with special properties. Such
usage SHOULD be clearly documented in the DESCRIPTION clause.
- Integer32 or INTEGER with a non-negative range is acceptable.
Again, zero SHOULD be excluded from the range except when it is
semantically significant or when it is used as the index value
for a unique row with special properties, and in such cases the
usage SHOULD be clearly documented in the DESCRIPTION clause.
- Use of Gauge32 is acceptable for index objects that have gauge
semantics.
The guidelines above combine both the usage rules for integer data
types and the INDEX rules in <a href="./rfc2578#section-7.7">RFC 2578 Section 7.7</a> up to and including
bullet (1) plus the next-to-last paragraph on page 28.
Sometimes it will be necessary for external variables to represent
values of an index object -- e.g., ifIndex [<a href="./rfc2863" title=""The Interfaces Group MIB"">RFC2863</a>]. In such cases,
authors of the module containing that object SHOULD consider defining
TCs such as InterfaceIndex and/or InterfaceIndexOrZero [<a href="./rfc2863" title=""The Interfaces Group MIB"">RFC2863</a>].
<span class="grey">Heard Best Current Practice [Page 15]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-16" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
Note that INTEGER is a predefined ASN.1 type and MUST NOT be present
in a module's IMPORTS statement, whereas Integer32, Gauge32, and
Unsigned32 are defined by SNMPv2-SMI and MUST be imported from that
module if used.
<span class="h5"><a class="selflink" id="section-4.6.1.2" href="#section-4.6.1.2">4.6.1.2</a>. Counter32 and Counter64</span>
Counter32 and Counter64 have special semantics as described in <a href="./rfc2578">RFC</a>
<a href="./rfc2578">2578</a> Sections <a href="#section-7.1.6">7.1.6</a> and <a href="#section-7.1.10">7.1.10</a>, respectively. Object definitions
MUST (and textual conventions SHOULD) respect these semantics. That
means:
- It is OK to use Counter32/64 for counters that may/will be reset
when the management subsystem is re-initialized or when other
unusual/irregular events occur (e.g., counters maintained on a line
card may be reset when the line card is reset). However, if it is
possible for such other unusual/irregular events to occur, the
DESCRIPTION clause MUST state that this is so and MUST describe
those other unusual/irregular events in sufficient detail that it
is possible for a management application to determine whether a
reset has occurred since the last time the counter was polled. The
RECOMMENDED way to do this is to provide a discontinuity indicator
as described in <a href="./rfc2578">RFC 2578</a> Sections <a href="#section-7.1.6">7.1.6</a> and <a href="#section-7.1.10">7.1.10</a>. For an example
of such a discontinuity indicator, see the
ifCounterDiscontinuityTime object in the IF-MIB [<a href="./rfc2863" title=""The Interfaces Group MIB"">RFC2863</a>].
- It is NOT OK to put in the DESCRIPTION clause of a Counter32/64
that there is a requirement that on a discontinuity the counter
MUST reset to zero or to any other specific value.
- It is NOT OK to put in the DESCRIPTION clause of a Counter32/64
that there is a requirement that it MUST reset at any specific
time/event (e.g., midnight).
- It is NOT OK for one manager to request the agent to reset the
value(s) of counter(s) to zero, and Counter32/64 is the wrong
syntax for "counters" that regularly reset themselves to zero. For
the latter, it is better to define or use textual conventions such
as those in <a href="./rfc3593">RFC 3593</a> [<a href="./rfc3593" title=""Textual Conventions for MIB Modules Using Performance History Based on 15 Minute Intervals"">RFC3593</a>] or <a href="./rfc3705">RFC 3705</a> [<a href="./rfc3705" title=""High Capacity Textual Conventions for MIB Modules Using Performance History Based on 15 Minute Intervals"">RFC3705</a>].
<a href="./rfc2578#section-7.1.10">RFC 2578 Section 7.1.10</a> places a requirement on "standard" MIB
modules that the Counter64 type may be used only if the information
being modelled would wrap in less than one hour if the Counter32 type
was used instead. Now that SNMPv3 is an Internet Standard and SNMPv1
is Historic (see <a href="http://www.rfc-editor.org/rfcxx00.html">http://www.rfc-editor.org/rfcxx00.html</a> for status
and [<a href="./rfc3410" title=""Introduction and Applicability Statements for Internet-Standard Management Framework"">RFC3410</a>] for rationale), there is no reason to continue
enforcing this restriction. Henceforth "standard" MIB modules MAY
use the Counter64 type when it makes sense to do so, and MUST use
<span class="grey">Heard Best Current Practice [Page 16]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-17" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
Counter64 if the information being modelled would wrap in less than
one hour if the Counter32 type was used instead. Note also that
there is no longer a requirement to define Counter32 counterparts for
each Counter64 object, although one is still allowed to do so.
There also exist closely-related textual conventions
ZeroBasedCounter32 and ZeroBasedCounter64 defined in RMON2-MIB
[<a href="./rfc2021" title=""Remote Network Monitoring Management Information Base Version 2 using SMIv2"">RFC2021</a>] and HCNUM-TC [<a href="./rfc2856" title=""Textual Conventions for Additional High Capacity Data Types"">RFC2856</a>], respectively.
The only difference between ZeroBasedCounter32/64 TCs and
Counter32/64 is their starting value; at time=X, where X is their
minimum-wrap-time after they were created, the behavior of
ZeroBasedCounter32/64 becomes exactly the same as Counter32/64.
Thus, the preceding paragraphs/rules apply not only to Counter32/64,
but also to ZeroBasedCounter32/64 TCs.
<span class="h5"><a class="selflink" id="section-4.6.1.3" href="#section-4.6.1.3">4.6.1.3</a>. CounterBasedGauge64</span>
SMIv2 unfortunately does not provide 64-bit integer base types. In
order to make up for this omission, the CounterBasedGauge64 textual
convention is defined in HCNUM-TC [<a href="./rfc2856" title=""Textual Conventions for Additional High Capacity Data Types"">RFC2856</a>]. This TC uses Counter64
as a base type, but discards the special counter semantics, which is
allowed under the generally accepted interpretation of <a href="./rfc2579#section-3.3">RFC 2579
Section 3.3</a>. It does inherit all the syntactic restrictions of that
type, which means that it MUST NOT be subtyped and that objects
defined with it MUST NOT appear in an INDEX clause, MUST NOT have a
DEFVAL clause, and MUST have a MAX-ACCESS of read-only or
accessible-for-notify.
This TC SHOULD be used for object definitions that require a 64-bit
unsigned data type with gauge semantics. If a 64-bit unsigned data
type with different semantics is needed, then a different TC based on
Counter64 MUST be used, since one TC cannot refine another (cf. <a href="./rfc2579">RFC</a>
<a href="./rfc2579">2579</a> <a href="#section-3.5">Section 3.5</a>).
<span class="h5"><a class="selflink" id="section-4.6.1.4" href="#section-4.6.1.4">4.6.1.4</a>. OCTET STRING</span>
The OCTET STRING type is described in <a href="./rfc2578#section-7.1.2">RFC 2578 Section 7.1.2</a>. It
represents arbitrary binary or textual data whose length is between 0
and 65535 octets inclusive. Objects and TCs whose SYNTAX is of this
type SHOULD have a size constraint when the actual bounds are more
restrictive than the SMI-imposed limits. This is particularly true
for index objects. Note, however, that size constraints SHOULD NOT
be imposed arbitrarily, as the SMI does not permit them to be changed
afterward.
<span class="grey">Heard Best Current Practice [Page 17]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-18" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
There exist a number of standard TCs that cater to some of the more
common requirements for specialized OCTET STRING types. In
particular, SNMPv2-TC [<a href="./rfc2579" title=""Textual Conventions for SMIv2"">RFC2579</a>] contains the DisplayString,
PhysAddress, MacAddress, and DateAndTime TCs; the SNMP-FRAMEWORK-MIB
[<a href="./rfc3411" title=""An Architecture for Describing Simple Network Management Protocol (SNMP) Management Frameworks"">RFC3411</a>] contains the SnmpAdminString TC; and the SYSAPPL-MIB
[<a href="./rfc2287" title=""Definitions of System-Level Managed Objects for Applications"">RFC2287</a>] contains the Utf8String and LongUtf8String TCs. When a
standard TC provides the desired semantics, it SHOULD be used in an
object's SYNTAX clause instead of OCTET STRING or an equivalent
locally-defined TC.
Note that OCTET STRING is a predefined ASN.1 type and MUST NOT be
present in a module's IMPORTS statement.
<span class="h5"><a class="selflink" id="section-4.6.1.5" href="#section-4.6.1.5">4.6.1.5</a>. OBJECT IDENTIFIER</span>
The OBJECT IDENTIFIER type is described in <a href="./rfc2578#section-7.1.3">RFC 2578 Section 7.1.3</a>.
Its instances represent administratively assigned names. Note that
both the SMI and the SNMP protocol limit instances of this type to
128 sub-identifiers and require that each sub-identifier be within
the range 0 to 4294967295 inclusive. Subtyping is not allowed.
The purpose of OBJECT IDENTIFIER values is to provide authoritative
identification either for some type of item or for a specific
instance of some type of item. Among the items that can be
identified in this way are definitions in MIB modules created via the
MODULE-IDENTITY, OBJECT-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
OBJECT-GROUP, NOTIFICATION-GROUP, MODULE-COMPLIANCE, and AGENT-
CAPABILITIES constructs; and via instances of objects defined in MIB
modules, protocols, languages, specifications, interface types,
hardware, and software. For some of these uses other possibilities
exist, e.g., OCTET STRING or enumerated INTEGER values. The OBJECT
IDENTIFIER type SHOULD be used instead of the alternatives when the
set of identification values needs to be independently extensible
without the need for a registry to provide centralized coordination.
There exist a number of standard TCs that cater to some of the more
common requirements for specialized OBJECT IDENTIFIER types. In
particular, SNMPv2-TC [<a href="./rfc2579" title=""Textual Conventions for SMIv2"">RFC2579</a>] contains the AutonomousType,
VariablePointer, and RowPointer TCs. When a standard TC provides the
desired semantics, it SHOULD be used in an object's SYNTAX clause
instead of OBJECT IDENTIFIER or an equivalent locally-defined TC.
Note that OBJECT IDENTIFIER is a predefined ASN.1 type and MUST NOT
be present in a module's IMPORTS statement.
<span class="grey">Heard Best Current Practice [Page 18]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-19" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
<span class="h5"><a class="selflink" id="section-4.6.1.6" href="#section-4.6.1.6">4.6.1.6</a>. The BITS Construct</span>
The BITS construct is described in <a href="./rfc2578#section-7.1.4">RFC 2578 Section 7.1.4</a>. It
represents an enumeration of named bits. The bit positions in a TC
or object definition whose SYNTAX is of this type MUST start at 0 and
SHOULD be contiguous.
Note that the BITS construct is defined by the macros that use it and
therefore MUST NOT be present in a module's IMPORTS statement.
<span class="h5"><a class="selflink" id="section-4.6.1.7" href="#section-4.6.1.7">4.6.1.7</a>. IpAddress</span>
The IpAddress type described in <a href="./rfc2578#section-7.1.5">RFC 2578 Section 7.1.5</a> SHOULD NOT be
used in new MIB modules. The InetAddress/InetAddressType textual
conventions [<a href="./rfc4001" title=""Textual Conventions for Internet Network Addresses"">RFC4001</a>] SHOULD be used instead.
<span class="h5"><a class="selflink" id="section-4.6.1.8" href="#section-4.6.1.8">4.6.1.8</a>. TimeTicks</span>
The TimeTicks type is described in <a href="./rfc2578#section-7.1.8">RFC 2578 Section 7.1.8</a>. It
represents the time in hundredths of a second between two epochs,
reduced modulo 2^32. It MUST NOT be subtyped, and the DESCRIPTION
clause of any object or TC whose SYNTAX is of this type MUST identify
the reference epochs.
The TimeTicks type SHOULD NOT be used directly in definitions of
objects that are snapshots of sysUpTime [<a href="./rfc3418" title=""Management Information Base (MIB) for the Simple Network Management Protocol (SNMP)"">RFC3418</a>]. The TimeStamp TC
[<a href="./rfc2579" title=""Textual Conventions for SMIv2"">RFC2579</a>] already conveys the desired semantics and SHOULD be used
instead.
<span class="h5"><a class="selflink" id="section-4.6.1.9" href="#section-4.6.1.9">4.6.1.9</a>. TruthValue</span>
The TruthValue TC is defined in SNMPv2-TC [<a href="./rfc2579" title=""Textual Conventions for SMIv2"">RFC2579</a>]. It is an
enumerated INTEGER type that assumes the values true(1) and false(2).
This TC SHOULD be used in the SYNTAX clause of object definitions
that require a Boolean type. MIB modules SHOULD NOT use enumerated
INTEGER types or define TCs that duplicate its semantics.
<span class="h5"><a class="selflink" id="section-4.6.1.10" href="#section-4.6.1.10">4.6.1.10</a>. Other Data Types</span>
There exist a number of standard TCs that cater to some of the more
common requirements for specialized data types. Some have been
mentioned above, and <a href="#appendix-B">Appendix B</a> contains a partial list that includes
those plus some others that are a bit more specialized. An on-line
version of that list, which is updated as new TCs are developed, can
be found at <a href="http://www.ops.ietf.org/mib-common-tcs.html">http://www.ops.ietf.org/mib-common-tcs.html</a>.
<span class="grey">Heard Best Current Practice [Page 19]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-20" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
Whenever a standard TC already conveys the desired semantics, it
SHOULD be used in an object definition instead of the corresponding
base type or a locally-defined TC. This is especially true of the
TCs defined in SNMPv2-TC [<a href="./rfc2579" title=""Textual Conventions for SMIv2"">RFC2579</a>] and SNMP-FRAMEWORK-MIB [<a href="./rfc3411" title=""An Architecture for Describing Simple Network Management Protocol (SNMP) Management Frameworks"">RFC3411</a>]
because they are Internet Standards, and so modules that refer to
them will not suffer delay in advancement on the standards track on
account of such references.
MIB module authors need to be aware that enumerated INTEGER or BITS
TCs may in some cases be extended with additional enumerated values
or additional bit positions. When an imported TC that may be
extended in this way is used to define an object that may be written
or that serves as an index in a read-create table, then the set of
values or bit positions that needs to be supported SHOULD be
specified either in the object's DESCRIPTION clause or in an OBJECT
clause in the MIB module's compliance statement(s). This may be done
by explicitly listing the required values or bit positions, or it may
be done by stating that an implementation may support a subset of
values or bit positions of its choosing.
<span class="h4"><a class="selflink" id="section-4.6.2" href="#section-4.6.2">4.6.2</a>. DESCRIPTION and REFERENCE Clauses</span>
It is hard to overemphasize the importance of an accurate and
unambiguous DESCRIPTION clause for all objects and TCs. The
DESCRIPTION clause contains the instructions that implementors will
use to implement an object, and if they are inadequate or ambiguous,
then implementation quality will suffer. Probably the single most
important job of a MIB reviewer is to ensure that DESCRIPTION clauses
are sufficiently clear and unambiguous to allow interoperable
implementations to be created.
A very common problem is to see an object definition for, say,
'stdMIBPoofpoofCounter' with a DESCRIPTION clause that just says
"Number of poofpoofs" with no indication what a 'poofpoof' is. In
such cases, it is strongly RECOMMENDED that there either be at least
a minimal explanation or else a REFERENCE clause to point to the
definition of a 'poofpoof'.
For read-write objects (other than columns in read-create tables that
have well-defined persistence properties), it is RECOMMENDED that the
DESCRIPTION clause specify what happens to the value after an agent
reboot. Among the possibilities are that the value remains
unchanged, that it reverts to a well-defined default value, or that
the result is implementation-dependent.
<span class="grey">Heard Best Current Practice [Page 20]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-21" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
<span class="h4"><a class="selflink" id="section-4.6.3" href="#section-4.6.3">4.6.3</a>. DISPLAY-HINT Clause</span>
The DISPLAY-HINT clause is used in a TC to provide a nonbinding hint
to a management application as to how the value of an instance of an
object defined with the syntax in the TC might be displayed. Its
presence is optional.
Although management applications typically default to decimal format
("d") for integer TCs that are not enumerations and to a hexadecimal
format ("1x:" or "1x " or "1x_") for octet string TCs when the
DISPLAY-HINT clause is absent, it should be noted that SMIv2 does not
actually specify any defaults. MIB authors should be aware that a
clear hint is provided to applications only when the DISPLAY-HINT
clause is present.
<span class="h4"><a class="selflink" id="section-4.6.4" href="#section-4.6.4">4.6.4</a>. Conceptual Table Definitions</span>
<a href="./rfc2578">RFC 2578</a> Sections <a href="#section-7.1.12">7.1.12</a> and <a href="#section-7.1.12.1">7.1.12.1</a> specify the rules for defining
conceptual tables, and <a href="./rfc2578">RFC 2578</a> Sections <a href="#section-7.7">7.7</a>, <a href="#section-7.8">7.8</a>, and <a href="#section-7.8.1">7.8.1</a> specify
conceptual table indexing rules. The following guidelines apply to
such definitions:
- For conceptual rows:
- If the row is an extension of a row in some other table, then an
AUGMENTS clause MUST be used if the relationship is one-to-one,
and an INDEX clause MUST be used if the relationship is sparse.
In the latter case, the INDEX clause SHOULD be identical to that
of the original table.
- If the row is an element of an expansion table -- that is, if
multiple row instances correspond to a single row instance in
some other table -- then an INDEX clause MUST be used, and the
first-mentioned elements SHOULD be the indices of that other
table, listed in the same order.
- If objects external to the row are present in the INDEX clause,
then the conceptual row's DESCRIPTION clause MUST specify how
those objects are used in identifying instances of its columnar
objects, and in particular MUST specify for which values of those
index objects the conceptual row may exist.
- Use of the IMPLIED keyword is NOT RECOMMENDED for any index
object that may appear in the INDEX clause of an expansion table.
Since this keyword may be associated only with the last object in
an INDEX clause, it cannot be associated with the same index
object in a primary table and an expansion table. This will
cause the sort order to be different in the primary table and any
<span class="grey">Heard Best Current Practice [Page 21]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-22" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
expansion tables. As a consequence, an implementation will be
unable to reuse indexing code from the primary table in expansion
tables, and data structures meant to be extended might actually
have to be replicated. Designers who are tempted to use IMPLIED
should consider that the resulting sort order rarely meets user
expectations, particularly for strings that include both
uppercase and lowercase letters, and it does not take the user
language or locale into account.
- If dynamic row creation and/or deletion by management applications
is supported, then:
- There SHOULD be one columnar object with a SYNTAX value of
RowStatus [<a href="./rfc2579" title=""Textual Conventions for SMIv2"">RFC2579</a>] and a MAX-ACCESS value of read-create. This
object is called the status column for the conceptual row. All
other columnar objects MUST have a MAX-ACCESS value of read-
create, read-only, accessible-for-notify, or not-accessible; a
MAX-ACCESS value of read-write is not allowed.
- There either MUST be one columnar object with a SYNTAX value of
StorageType [<a href="./rfc2579" title=""Textual Conventions for SMIv2"">RFC2579</a>] and a MAX-ACCESS value of read-create, or
else the row object (table entry) DESCRIPTION clause MUST specify
what happens to dynamically-created rows after an agent restart.
- If the agent itself may also create and/or delete rows, then the
conditions under which this can occur MUST be clearly documented
in the row object DESCRIPTION clause.
- For conceptual rows that include a status column:
- The DESCRIPTION clause of the status column MUST specify which
columnar objects (if any) have to be set to valid values before
the row can be activated. If any objects in cascading tables
have to be populated with related data before the row can be
activated, then this MUST also be specified.
- The DESCRIPTION clause of the status column MUST specify whether
or not it is possible to modify other columns in the same
conceptual row when the status value is active(1). Note that in
many cases it will be possible to modify some writable columns
when the row is active but not others. In such cases, the
DESCRIPTION clause for each writable column SHOULD state whether
or not that column can be modified when the row is active, and
the DESCRIPTION clause for the status column SHOULD state that
modifiability of other columns when the status value is active(1)
is specified in the DESCRIPTION clauses for those columns (rather
than listing the modifiable columns individually).
<span class="grey">Heard Best Current Practice [Page 22]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-23" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
- For conceptual rows that include a StorageType column:
- The DESCRIPTION clause of the StorageType column MUST specify
which read-write or read-create columnar objects in permanent(4)
rows an agent must, at a minimum, allow to be writable.
Note that <a href="./rfc2578#section-7.8">RFC 2578 Section 7.8</a> requires that the lifetime of an
instance of a conceptual row that AUGMENTS a base row must be the
same as the corresponding instance of the base row. It follows that
there is no need for a RowStatus or StorageType column in an
augmenting row if one is already present in the base row.
Complete requirements for the RowStatus and StorageType TCs can be
found in <a href="./rfc2579">RFC 2579</a>, in the DESCRIPTION clauses for those TCs.
<span class="h4"><a class="selflink" id="section-4.6.5" href="#section-4.6.5">4.6.5</a>. OID Values Assigned to Objects</span>
<a href="./rfc2578#section-7.10">RFC 2578 Section 7.10</a> specifies the rules for assigning OBJECT
IDENTIFIER (OID) values to OBJECT-TYPE definitions. In particular:
- A conceptual table MUST have exactly one subordinate object, which
is a conceptual row. The OID assigned to the conceptual row MUST
be derived by appending a sub-identifier of "1" to the OID assigned
to the conceptual table.
- A conceptual row has as many subordinate objects as there are
columns in the row; there MUST be at least one. The OID assigned
to each columnar object MUST be derived by appending a non-zero
sub-identifier, unique within the row, to the OID assigned to the
conceptual row.
- A columnar or scalar object MUST NOT have any subordinate objects.
- The last sub-identifier of an OID assigned to any object (be it
table, row, column, or scalar) MUST NOT be equal to zero. Note
that sub-identifiers of intermediate nodes MAY be equal to zero.
- The OID assigned to an object definition MUST NOT also be assigned
to another definition that results in OID registration. <a href="./rfc2578#section-3.6">RFC 2578
Section 3.6</a> lists the constructs that create OID registrations.
Although it is not specifically required by the SMI, it is customary
(and strongly RECOMMENDED) that object definitions not be registered
beneath group definitions, compliance statements, capabilities
statements, or notification definitions. It is also customary (and
strongly RECOMMENDED) that group definitions, compliance statements,
<span class="grey">Heard Best Current Practice [Page 23]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-24" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
capabilities statements, and notification definitions not be
registered beneath object definitions. See <a href="#appendix-D">Appendix D</a> for a
RECOMMENDED OID assignment scheme.
<span class="h4"><a class="selflink" id="section-4.6.6" href="#section-4.6.6">4.6.6</a>. OID Length Limitations and Table Indexing</span>
As specified in <a href="./rfc2578#section-3.5">RFC 2578 Section 3.5</a>, all OIDs are limited to 128
sub-identifiers. While this is not likely to cause problems with
administrative assignments, it does place some limitations on table
indexing. That is true because the length limitation also applies to
OIDs for object instances, and these consist of the concatenation of
the "base" OID assigned in the object definition plus the index
components. When a table has multiple indices of types such as OCTET
STRING or OBJECT IDENTIFIER that resolve to multiple sub-identifiers,
then the 128-sub-identifier limit can be quickly reached.
Despite its inconvenience, the 128-sub-identifier limit is not
something that can be ignored. In addition to being imposed by the
SMI, it is also imposed by the SNMP (see the last paragraph in
<a href="./rfc3416#section-4.1">Section 4.1 of RFC 3416</a> [<a href="./rfc3416" title=""Protocol Operations for the Simple Network Management Protocol (SNMP)"">RFC3416</a>]). It follows that any table with
enough indexing components to violate this limit cannot be read or
written using the SNMP and so is unusable. Hence table design MUST
take the 128-sub-identifier limit into account. It is RECOMMENDED
that all MIB documents make explicit any limitations on index
component lengths that management software must observe. This may be
done either by including SIZE constraints on the index components or
by specifying applicable constraints in the conceptual row
DESCRIPTION clause or in the surrounding documentation.
<span class="h3"><a class="selflink" id="section-4.7" href="#section-4.7">4.7</a>. Notification Definitions</span>
<a href="./rfc2578#section-8">RFC 2578 Section 8</a> specifies the rules for notification definitions.
In particular:
- Inaccessible objects MUST NOT appear in the OBJECTS clause.
- For each object type mentioned in the OBJECTS clause, the
DESCRIPTION clause MUST specify which object instance is to be
present in the transmitted notification and MUST specify the
information/meaning conveyed.
- The OBJECT IDENTIFIER (OID) value assigned to each notification
type MUST have a next-to-last sub-identifier of zero, so that it is
possible to convert an SMIv2 notification definition into an SMIv1
trap definition and back again without information loss (see
<a href="./rfc3584#section-2.1.2">[RFC3584] Section 2.1.2</a>) and possible for a multilingual proxy
chain to translate an SNMPv2 trap into an SNMPv1 trap and back
again without information loss (see <a href="./rfc3584#section-3">[RFC3584] Section 3</a>). In
<span class="grey">Heard Best Current Practice [Page 24]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-25" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
addition, the OID assigned to a notification definition MUST NOT
also be assigned to another definition that results in OID
registration. <a href="./rfc2578#section-3.6">RFC 2578 Section 3.6</a> lists the constructs that
create OID registrations.
Although it is not specifically required by the SMI, it is customary
(and strongly RECOMMENDED) that notification definitions not be
registered beneath group definitions, compliance statements,
capabilities statements, or object definitions (this last is
especially unwise, as it may result in an object instance and a
notification definition sharing the same OID). It is also customary
(and strongly RECOMMENDED) that the OIDs assigned to notification
types be leaf OIDs (i.e., that there be no OID registrations
subordinate to a notification definition). See <a href="#appendix-D">Appendix D</a> for a
RECOMMENDED OID assignment scheme.
In many cases, notifications will be triggered by external events,
and sometimes it will be possible for those external events to occur
at a sufficiently rapid rate that sending a notification for each
occurrence would overwhelm the network. In such cases, a mechanism
MUST be provided for limiting the rate at which the notification can
be generated. A common technique is to require that the notification
generator use throttling -- that is, to require that it generate no
more than one notification for each event source in any given time
interval of duration T. The throttling period T MAY be configurable,
in which case it is specified in a MIB object, or it MAY be fixed, in
which case it is specified in the notification definition. Examples
of the fixed time interval technique can be found in the SNMP-
REPEATER-MIB [<a href="./rfc2108" title=""Definitions of Managed Objects for IEEE 802.3 Repeater Devices using SMIv2"">RFC2108</a>] and in the ENTITY-MIB [<a href="./rfc4133" title=""Entity MIB (Version 3)"">RFC4133</a>].
<span class="h3"><a class="selflink" id="section-4.8" href="#section-4.8">4.8</a>. Compliance Statements</span>
<a href="./rfc2580">RFC 2580</a> Sections <a href="#section-3">3</a>, <a href="#section-4">4</a>, and <a href="#section-5">5</a> specify the rules for conformance
groups and compliance statements. In particular:
- Every object with a MAX-ACCESS value other than "not-accessible"
MUST be contained in at least one object group.
- Every notification MUST be contained in at least one notification
group.
- There MUST be at least one compliance statement defined for each
"standard" MIB module. It may reside either within that MIB module
or within a companion MIB module.
In writing compliance statements, there are several points that are
easily overlooked:
<span class="grey">Heard Best Current Practice [Page 25]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-26" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
- An object group or notification group that is not mentioned either
in the MANDATORY-GROUPS clause or in any GROUP clause of a MODULE-
COMPLIANCE statement is unconditionally optional with respect to
that compliance statement. An alternate way to indicate that an
object group or notification group is optional is to mention it in
a GROUP clause whose DESCRIPTION clause states that the group is
optional. The latter method is RECOMMENDED (for optional groups
that are relevant to the compliance statement) in order to make it
clear that the optional status is intended rather than being the
result of an act of omission.
- If there are any objects with a MAX-ACCESS value of read-write or
read-create for which there is no OBJECT clause that specifies a
MIN-ACCESS of read-only, then implementations must support write
access to those objects in order to be compliant with that MODULE-
COMPLIANCE statement. This fact sometimes catches MIB module
authors by surprise. When confronted with such cases, reviewers
SHOULD verify that this is indeed what the authors intended, since
it often is not.
- On the other side of the coin, MIB module authors need to be aware
that while a read-only compliance statement is sufficient to
support interoperable monitoring applications, it is not sufficient
to support interoperable configuration applications. A technique
commonly used in MIB modules that are intended to support both
monitoring and configuration is to provide both a read-only
compliance statement and a full compliance statement. A good
example is provided by the DIFFSERV-MIB [<a href="./rfc3289" title=""Management Information Base for the Differentiated Services Architecture"">RFC3289</a>]. Authors SHOULD
consider using this technique when it is applicable.
Sometimes MIB module authors will want to specify that a compliant
implementation needs to support only a subset of the values allowed
by an object's SYNTAX clause. For accessible objects, this may be
done either by specifying the required values in an object's
DESCRIPTION clause or by providing an OBJECT clause with a refined
SYNTAX in a compliance statement. The latter method is RECOMMENDED
for most cases, and is REQUIRED if there are multiple compliance
statements with different value subsets required. The DIFFSERV-MIB
[<a href="./rfc3289" title=""Management Information Base for the Differentiated Services Architecture"">RFC3289</a>] illustrates this point. The diffServMIBFullCompliance
statement contains the following OBJECT clause. (See <a href="#section-4.8.1">Section 4.8.1</a>,
"Note Regarding These Examples and <a href="./rfc2578">RFC 2578</a>".)
OBJECT diffServDataPathStatus
SYNTAX RowStatus { active(1) }
WRITE-SYNTAX RowStatus { createAndGo(4), destroy(6) }
DESCRIPTION
"Support for createAndWait and notInService is not required."
<span class="grey">Heard Best Current Practice [Page 26]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-27" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
whereas the diffServMIBReadOnlyCompliance statement contains this:
OBJECT diffServDataPathStatus
SYNTAX RowStatus { active(1) }
MIN-ACCESS read-only
DESCRIPTION
"Write access is not required, and active is the only status that
needs to be supported."
One cannot do this for inaccessible index objects because they cannot
be present in object groups and cannot be mentioned in OBJECT
clauses. There are situations, however, in which one might wish to
indicate that an implementation is required to support only a subset
of the possible values of some index in a read-create table. In such
cases, the requirements MUST be specified either in the index
object's DESCRIPTION clause (RECOMMENDED if there is only one value
subset) or in the DESCRIPTION clause of a MODULE-COMPLIANCE statement
(REQUIRED if the value subset is unique to the compliance statement).
In many cases, a MIB module is always implemented in conjunction with
one or more other MIB modules. That fact is REQUIRED to be noted in
the surrounding documentation (see <a href="#section-3.2">Section 3.2</a> above), and it SHOULD
also be noted in the relevant compliance statements. In cases where
a particular compliance statement in (say) MIB module A requires the
complete implementation of some other MIB module B, then the
RECOMMENDED approach is to include a statement to that effect in the
DESCRIPTION clause of the compliance statement(s) in MIB module A.
It is also possible, however, that MIB module A might have
requirements that are different from those that are expressed by any
compliance statement of module B -- for example, module A might not
require any of the unconditionally mandatory object groups from
module B but might require mandatory implementation of an object
group from module B that is only conditionally mandatory with respect
to the compliance statement(s) in module B. In such cases, the
RECOMMENDED approach is for the compliance statement(s) in module A
to formally specify requirements with respect to module B via
appropriate MODULE, MANDATORY-GROUPS, GROUP, and OBJECT clauses. An
example is provided by the compliance statements in the DIFFSERV-MIB
[<a href="./rfc3289" title=""Management Information Base for the Differentiated Services Architecture"">RFC3289</a>], which list the ifCounterDiscontinuityGroup from IF-MIB
[<a href="./rfc2863" title=""The Interfaces Group MIB"">RFC2863</a>] as a mandatory group. That group is not sufficient to
satisfy any IF-MIB compliance statement, and it is conditionally
mandatory in the IF-MIB's current compliance statement ifCompliance3.
<span class="h4"><a class="selflink" id="section-4.8.1" href="#section-4.8.1">4.8.1</a>. Note Regarding These Examples and <a href="./rfc2578">RFC 2578</a></span>
There has been some dispute as to whether syntax refinements that
restrict enumerations (<a href="./rfc2578#section-9">RFC 2578 Section 9</a>) are permitted with TCs, as
shown in the examples above, or are allowed only with the base types
<span class="grey">Heard Best Current Practice [Page 27]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-28" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
INTEGER and BITS, as suggested by a strict reading of <a href="./rfc2578">RFC 2578</a>. The
rough consensus of the editors of the SMIv2 documents and the current
pool of MIB reviewers is that they should be allowed with TCs. MIB
module authors should be aware that some MIB compilers follow the
strict reading of <a href="./rfc2578">RFC 2578</a> and require that the TC be replaced by its
base type (INTEGER or BITS) when enumerations are refined. That
usage is legal, and it can be found in some older MIB modules such as
the IF-MIB [<a href="./rfc2863" title=""The Interfaces Group MIB"">RFC2863</a>].
<span class="h3"><a class="selflink" id="section-4.9" href="#section-4.9">4.9</a>. Revisions to MIB Modules</span>
<a href="./rfc2578#section-10">RFC 2578 Section 10</a> specifies general rules that apply any time a MIB
module is revised. Specifically:
- The MODULE-IDENTITY invocation MUST be updated to include
information about the revision. In particular, the LAST-UPDATED
clause value MUST be set to the revision time, a REVISION clause
with the same UTC time and an associated DESCRIPTION clause
describing the changes MUST be added, and any obsolete information
in the existing DESCRIPTION, ORGANIZATION, and CONTACT-INFO clauses
MUST be replaced with up-to-date information. See <a href="#section-4.5">Section 4.5</a>
above for additional requirements that apply to MIB modules that
are under IETF change control.
- On the other hand, the module name MUST NOT be changed (except to
correct typographical errors), existing definitions (even obsolete
ones) MUST NOT be removed from the MIB module, and descriptors and
OBJECT IDENTIFIER values associated with existing definitions MUST
NOT be changed or re-assigned.
It is important to note that the purpose in forbidding certain kinds
of changes is to ensure that a revised MIB module is compatible with
fielded implementations based on previous versions of the module.
There are two distinct aspects of this backward-compatibility
requirement. One is "over the wire" compatibility of agent and
manager implementations that are based on different revisions of the
MIB module. The other is "compilation" compatibility with MIB
modules that import definitions from the revised MIB module. The
rules forbidding changing or re-assigning OBJECT IDENTIFIER values
are necessary to ensure "over the wire" compatibility; the rules
against changing module names or descriptors or removing obsolete
definitions are necessary to ensure compilation compatibility.
<a href="./rfc2578#section-10.2">RFC 2578 Section 10.2</a> specifies rules that apply to revisions of
object definitions. The following guidelines correct some errors in
these rules and provide some clarifications:
<span class="grey">Heard Best Current Practice [Page 28]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-29" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
- Bullet (1) allows the labels of named numbers and named bits in
SYNTAX clauses of type enumerated INTEGER or BITS to be changed.
This can break compilation compatibility, since those labels may be
used by DEFVAL clauses in modules that import the definitions of
the affected objects. Therefore, labels of named numbers and named
bits MUST NOT be changed when revising IETF MIB modules (except to
correct typographical errors), and they SHOULD NOT be changed when
revising enterprise MIB modules.
- Although not specifically permitted in bullets (1) through (8), it
is generally considered acceptable to add range constraints to the
SYNTAX clause of an integer-valued object, provided that the
constraints simply make explicit some value restrictions that were
implicit in the definition of the object. The most common example
is an auxiliary object with a SYNTAX of INTEGER or Integer32 with
no range constraint. Since an auxiliary object is not permitted to
assume negative values, adding the range constraint (0..2147483647)
cannot possibly result in any "over the wire" change, nor will it
cause any compilation compatibility problems with a correctly
written MIB module. Such a change SHOULD be treated by a reviewer
as an editorial change, not as a semantic change. Similarly,
removal of a range or size constraint from an object definition
when that range or size constraint is enforced by the underlying
data type SHOULD be treated by a reviewer as an editorial change.
<a href="./rfc2578#section-10.3">RFC 2578 Section 10.3</a> specifies rules that apply to revisions of
notification definitions. No clarifications or corrections are
required.
<a href="./rfc2579#section-5">RFC 2579 Section 5</a> specifies rules that apply to revisions of textual
convention definitions. The following guideline corrects an error in
these rules:
- Bullet (1) allows the labels of named numbers and named bits in
SYNTAX clauses of type enumerated INTEGER or BITS to be changed.
This can break compilation compatibility, since those labels may be
used by DEFVAL clauses in modules that import the definitions of
the affected TCs. Therefore, labels of named numbers and named
bits MUST NOT be changed when revising IETF MIB modules (except to
correct typographical errors), and they SHOULD NOT be changed when
revising enterprise MIB modules.
<a href="./rfc2580#section-7.1">RFC 2580 Section 7.1</a> specifies rules that apply to revisions of
conformance groups. Two point are worth reiterating:
<span class="grey">Heard Best Current Practice [Page 29]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-30" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
- Objects and notifications MUST NOT be added to or removed from an
existing object group or notification group. Doing so could cause
a compilation failure or (worse) a silent change in the meaning of
a compliance statement or capabilities statement that refers to
that group.
- The status of a conformance group is independent of the status of
its members. Thus, a current group MAY refer to deprecated objects
or notifications. This may be desirable in certain cases, e.g., a
set of widely-deployed objects or notifications may be deprecated
when they are replaced by a more up-to-date set of definitions, but
the conformance groups that contain them may remain current in
order to encourage continued implementation of the deprecated
objects and notifications.
<a href="./rfc2580#section-7.2">RFC 2580 Section 7.2</a> specifies rules that apply to revisions of
compliance statements. The following guidelines correct an omission
from these rules and emphasize one important point:
- <a href="./rfc2580">RFC 2580</a> should (but does not) recommend that an OBJECT clause
specifying support for the original set of values be added to a
compliance statement when an enumerated INTEGER object or a BITS
object referenced by the compliance statement has enumerations or
named bits added, assuming that no such clause is already present
and that the effective MIN-ACCESS value is read-write or read-
create. This is necessary in order to avoid a silent change to the
meaning of the compliance statement. MIB module authors and
reviewers SHOULD watch for this to ensure that such OBJECT clauses
are added when needed. Note that this may not always be possible
to do, since affected compliance statements may reside in modules
other than the one that contains the revised definition(s).
- The status of a compliance statement is independent of the status
of its members. Thus, a current compliance statement MAY refer to
deprecated object groups or notification groups. This may be
desirable in certain cases, e.g., a set of widely-deployed object
or notification groups may be deprecated when they are replaced by
a more up-to-date set of definitions, but compliance statements
that refer to them may remain current in order to encourage
continued implementation of the deprecated groups.
<a href="./rfc2580#section-7.3">RFC 2580 Section 7.3</a> specifies rules that apply to revisions of
capabilities statements. The following guideline corrects an
omission from these rules:
- <a href="./rfc2580">RFC 2580</a> should (but does not) recommend that VARIATION clauses
specifying support for the original set of values be added to a
capabilities statement when enumerated INTEGER objects or BITS
<span class="grey">Heard Best Current Practice [Page 30]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-31" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
objects referenced by the capabilities statement have enumerations
added, assuming that no such clauses are already present. This is
necessary in order to avoid a silent change to the meaning of the
capabilities statement.
In certain exceptional situations, the cost of strictly following the
SMIv2 rules governing MIB module revisions may exceed the benefit.
In such cases, the rules can be waived, but when that is done both
the change and the justification for it MUST be thoroughly
documented. One example is provided by <a href="./rfc2863#section-3.1.5">Section 3.1.5 of RFC 2863</a>,
which documents the semantic change that was made to ifIndex in the
transition from MIB-II [<a href="./rfc1213" title=""Management Information Base for Network Management of TCP/IP-based internets - MIB- II"">RFC1213</a>] to the IF-MIB [<a href="./rfc2863" title=""The Interfaces Group MIB"">RFC2863</a>] and provides
a detailed justification for that change. Another example is
provided by the REVISION clause of the SONET-MIB [<a href="./rfc2558" title=""Definitions of Managed Objects for the SONET/SDH Interface Type"">RFC2558</a>] that
documents raising the MAX-ACCESS of several objects to read-write
while adding MIN-ACCESS of read-only for compatibility with the
previous version [<a href="./rfc1595" title=""Definitions of Managed Objects for the SONET/SDH Interface Type"">RFC1595</a>].
Authors and reviewers may find it helpful to use tools that can list
the differences between two revisions of a MIB module. Please see
<a href="http://www.ops.ietf.org/mib-review-tools.html">http://www.ops.ietf.org/mib-review-tools.html</a> for more information.
<span class="h2"><a class="selflink" id="section-5" href="#section-5">5</a>. Acknowledgments</span>
Most of the material on usage of data types was based on input
provided by Bert Wijnen with assistance from Keith McCloghrie, David
T. Perkins, and Juergen Schoenwaelder. Much of the other material on
SMIv2 usage was taken from an unpublished guide for MIB authors and
reviewers by Juergen Schoenwaelder. Some of the recommendations in
these guidelines are based on material drawn from the on-line SMIv2
errata list at <a href="http://www.ibr.cs.tu-bs.de/ietf/smi-errata/">http://www.ibr.cs.tu-bs.de/ietf/smi-errata/</a>. Thanks
to Frank Strauss and Juergen Schoenwaelder for maintaining that list
and to the contributors who supplied the material for that list.
Finally, thanks are due to the following individuals whose comments
on earlier versions of this memo contained many valuable suggestions
for additions, clarifications, and corrections: Andy Bierman, Bob
Braden, Michelle Cotton, David Harrington, Harrie Hazewinkel,
Dinakaran Joseph, Michael Kirkham, Keith McCloghrie, David T.
Perkins, Randy Presuhn, Dan Romascanu, Juergen Schoenwaelder, Frank
Strauss, Dave Thaler, and Bert Wijnen.
<span class="grey">Heard Best Current Practice [Page 31]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-32" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
<span class="h2"><a class="selflink" id="section-6" href="#section-6">6</a>. Security Considerations</span>
Implementation and deployment of a MIB module in a system may result
in security risks that would not otherwise exist. It is important
for authors and reviewers of documents that define MIB modules to
ensure that those documents fully comply with the guidelines in
<a href="http://www.ops.ietf.org/mib-security.html">http://www.ops.ietf.org/mib-security.html</a> so that all such risks are
adequately disclosed.
<span class="h2"><a class="selflink" id="section-7" href="#section-7">7</a>. IANA Considerations</span>
This document affects the IANA to the extent that it describes what
is required to be present in the IANA Considerations section of a MIB
document, but it does not require that the IANA update any existing
registry or create any new registry.
<span class="grey">Heard Best Current Practice [Page 32]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-33" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
Appendix A: MIB Review Checklist
The purpose of a MIB review is to review the MIB module both for
technical correctness and for adherence to IETF documentation
requirements. The following checklist may be helpful when reviewing
a draft document:
1.) I-D Boilerplate -- verify that the draft contains the required
Internet-Draft boilerplate (see <a href="http://www.ietf.org/ietf/1id-guidelines.txt">http://www.ietf.org/ietf/1id-</a>
<a href="http://www.ietf.org/ietf/1id-guidelines.txt">guidelines.txt</a>), including the appropriate statement to permit
publication as an RFC, and that I-D boilerplate does not contain
references or section numbers.
2.) Abstract -- verify that the abstract does not contain references,
that it does not have a section number, and that its content follows
the guidelines in <a href="http://www.ietf.org/ietf/1id-guidelines.txt">http://www.ietf.org/ietf/1id-guidelines.txt</a>.
3.) MIB Boilerplate -- verify that the draft contains the latest
approved SNMP Network Management Framework boilerplate from the OPS
area web site (<a href="http://www.ops.ietf.org/mib-boilerplate.html">http://www.ops.ietf.org/mib-boilerplate.html</a>).
4.) Security Considerations Section -- verify that the draft uses the
latest approved template from the OPS area web site
(<a href="http://www.ops.ietf.org/mib-security.html">http://www.ops.ietf.org/mib-security.html</a>) and that the guidelines
therein have been followed.
5.) IANA Considerations Section -- this section must always be
present. If the draft requires no action from the IANA, ensure that
this is explicitly noted. If the draft requires OID values to be
assigned, ensure that the IANA Considerations section contains the
information specified in <a href="#section-3.5">Section 3.5</a> of these guidelines. If the
draft contains the initial version of an IANA-maintained module,
verify that the MODULE-IDENTITY invocation contains maintenance
instructions that comply with the requirements in <a href="./rfc2434">RFC 2434</a>. In the
latter case, the IANA Considerations section that will appear in the
RFC MUST contain a pointer to the actual IANA-maintained module.
6.) References -- verify that the references are properly divided
between normative and informative references, that <a href="./rfc2119">RFC 2119</a> is
included as a normative reference if the terminology defined therein
is used in the document, that all references required by the
boilerplate are present, that all MIB modules containing imported
items are cited as normative references, and that all citations point
to the most current RFCs unless there is a valid reason to do
otherwise (for example, it is OK to include an informative reference
to a previous version of a specification to help explain a feature
included for backward compatibility).
<span class="grey">Heard Best Current Practice [Page 33]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-34" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
7.) Copyright Notices -- verify that the draft contains an
abbreviated copyright notice in the DESCRIPTION clause of each
MODULE-IDENTITY invocation and that it contains the full copyright
notice and disclaimer specified in Sections <a href="#section-5.4">5.4</a> and <a href="#section-5.5">5.5</a> of <a href="./rfc3978">RFC 3978</a>
at the end of the document. Make sure that the correct year is used
in all copyright dates.
8.) IPR Notice -- if the draft does not contains a verbatim copy of
the IPR notice specified in <a href="./rfc3979#section-5">Section 5 of RFC 3979</a>, recommend that the
IPR notice be included.
9.) Other Issues -- check for any issues mentioned in
<a href="http://www.ietf.org/ID-Checklist.html">http://www.ietf.org/ID-Checklist.html</a> that are not covered elsewhere.
10.) Technical Content -- review the actual technical content for
compliance with the guidelines in this document. The use of a MIB
compiler is recommended when checking for syntax errors; see
<a href="http://www.ops.ietf.org/mib-review-tools.html">http://www.ops.ietf.org/mib-review-tools.html</a> for more information.
Checking for correct syntax, however, is only part of the job. It is
just as important to actually read the MIB document from the point of
view of a potential implementor. It is particularly important to
check that DESCRIPTION clauses are sufficiently clear and unambiguous
to allow interoperable implementations to be created.
Appendix B: Commonly Used Textual Conventions
The following TCs are defined in SNMPv2-TC [<a href="./rfc2579" title=""Textual Conventions for SMIv2"">RFC2579</a>]:
DisplayString OCTET STRING (SIZE (0..255))
PhysAddress OCTET STRING
MacAddress OCTET STRING (SIZE (6))
TruthValue enumerated INTEGER
TestAndIncr INTEGER (0..2147483647)
AutonomousType OBJECT IDENTIFIER
VariablePointer OBJECT IDENTIFIER
RowPointer OBJECT IDENTIFIER
RowStatus enumerated INTEGER
TimeStamp TimeTicks
TimeInterval INTEGER (0..2147483647)
DateAndTime OCTET STRING (SIZE (8 | 11))
StorageType enumerated INTEGER
TDomain OBJECT IDENTIFIER
TAddress OCTET STRING (SIZE (1..255))
Note 1. InstancePointer is obsolete and MUST NOT be used.
Note 2. DisplayString does not support internationalized text. It
MUST NOT be used for objects that are required to hold
<span class="grey">Heard Best Current Practice [Page 34]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-35" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
internationalized text (which is always the case if the
object is intended for use by humans [<a href="./rfc2277" title=""IETF Policy on Character Sets and Languages"">RFC2277</a>]). Designers
SHOULD consider using SnmpAdminString, Utf8String, or
LongUtf8String for such objects.
Note 3. TDomain and TAddress SHOULD NOT be used in new MIB modules.
The TransportDomain, TransportAddressType, and
TransportAddress TCs (defined in TRANSPORT-ADDRESS-MIB
[<a href="./rfc3419" title=""Textual Conventions for Transport Addresses"">RFC3419</a>]) SHOULD be used instead.
The following TC is defined in SNMP-FRAMEWORK-MIB [<a href="./rfc3411" title=""An Architecture for Describing Simple Network Management Protocol (SNMP) Management Frameworks"">RFC3411</a>]:
SnmpAdminString OCTET STRING (SIZE (0..255))
The following TCs are defined in SYSAPPL-MIB [<a href="./rfc2287" title=""Definitions of System-Level Managed Objects for Applications"">RFC2287</a>]:
Utf8String OCTET STRING (SIZE (0..255))
LongUtf8String OCTET STRING (SIZE (0..1024))
The following TCs are defined in INET-ADDRESS-MIB [<a href="./rfc4001" title=""Textual Conventions for Internet Network Addresses"">RFC4001</a>]:
InetAddressType enumerated INTEGER
InetAddress OCTET STRING (SIZE (0..255))
InetAddressPrefixLength Unsigned32 (0..2040)
InetPortNumber Unsigned32 (0..65535))
InetAutonomousSystemNumber Unsigned32
InetScopeType enumerated INTEGER
InetZoneIndex Unsigned32
InetVersion enumerated INTEGER
The following TCs are defined in TRANSPORT-ADDRESS-MIB [<a href="./rfc3419" title=""Textual Conventions for Transport Addresses"">RFC3419</a>]:
TransportDomain OBJECT IDENTIFIER
TransportAddressType enumerated INTEGER
TransportAddress OCTET STRING (SIZE (0..255))
The following TC is defined in RMON2-MIB [<a href="./rfc2021" title=""Remote Network Monitoring Management Information Base Version 2 using SMIv2"">RFC2021</a>]:
ZeroBasedCounter32 Gauge32
The following TCs are defined in HCNUM-TC [<a href="./rfc2856" title=""Textual Conventions for Additional High Capacity Data Types"">RFC2856</a>]:
ZeroBasedCounter64 Counter64
CounterBasedGauge64 Counter64
The following TCs are defined in IF-MIB [<a href="./rfc2863" title=""The Interfaces Group MIB"">RFC2863</a>]:
InterfaceIndex Integer32 (1..2147483647)
<span class="grey">Heard Best Current Practice [Page 35]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-36" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
InterfaceIndexOrZero Integer32 (0..2147483647)
The following TCs are defined in ENTITY-MIB [<a href="./rfc4133" title=""Entity MIB (Version 3)"">RFC4133</a>]:
PhysicalIndex Integer32 (1..2147483647)
PhysicalIndexOrZero Integer32 (0..2147483647)
The following TCs are defined in PerfHist-TC-MIB [<a href="./rfc3593" title=""Textual Conventions for MIB Modules Using Performance History Based on 15 Minute Intervals"">RFC3593</a>]:
PerfCurrentCount Gauge32
PerfIntervalCount Gauge32
PerfTotalCount Gauge32
The following TCs are defined in HC-PerfHist-TC-MIB [<a href="./rfc3705" title=""High Capacity Textual Conventions for MIB Modules Using Performance History Based on 15 Minute Intervals"">RFC3705</a>]:
HCPerfValidIntervals Integer32 (0..96)
HCPerfInvalidIntervals Integer32 (0..96)
HCPerfTimeElapsed Integer32 (0..86399)
HCPerfIntervalThreshold Unsigned32 (0..900)
HCPerfCurrentCount Counter64
HCPerfIntervalCount Counter64
HCPerfTotalCount Counter64
Appendix C: Suggested Naming Conventions
Authors and reviewers of IETF MIB modules have often found the
following naming conventions to be helpful in the past, and authors
of new IETF MIB modules are urged to consider following them.
- The module name should be of the form XXX-MIB (or XXX-TC-MIB for a
module with TCs only), where XXX is a unique prefix (usually all
caps with hyphens for separators) that is not used by any existing
module. For example, the module for managing optical interfaces
[<a href="./rfc3591" title=""Definitions of Managed Objects for the Optical Interface Type"">RFC3591</a>] uses the prefix OPT-IF and has module name OPT-IF-MIB.
- The descriptor associated with the MODULE-IDENTITY invocation
should be of the form xxxMIB, xxxMib, or xxxMibModule, where xxx is
a mixed-case version of XXX starting with a lowercase letter and
without any hyphens. For example, the OPT-IF-MIB uses the prefix
optIf, and the descriptor associated with its MODULE-IDENTITY
invocation is optIfMibModule.
- Other descriptors within the MIB module should start with the same
prefix xxx. OPT-IF-MIB uses the prefix optIf for all descriptors.
<span class="grey">Heard Best Current Practice [Page 36]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-37" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
- Names of TCs that are specific to the MIB module and names of
SEQUENCE types that are used in conceptual table definitions should
start with a prefix Xxx that is the same as xxx but with the
initial letter changed to uppercase. OPT-IF-MIB uses the prefix
OptIf on the names of TCs and SEQUENCE types.
- The descriptor associated with a conceptual table should be of the
form xxxZzzTable; the descriptor associated with the corresponding
conceptual row should be of the form xxxZzzEntry; the name of the
associated SEQUENCE type should be of the form XxxZzzEntry; and the
descriptors associated with the subordinate columnar objects should
be of the form xxxZzzSomeotherName. An example from the OPT-IF-MIB
is the OTMn table. The descriptor of the table object is
optIfOTMnTable, the descriptor of the row object is optIfOTMnEntry,
the name of the associated SEQUENCE type is OptIfOTMnEntry, and the
descriptors of the columnar objects are optIfOTMnOrder,
optIfOTMnReduced, optIfOTMnBitRates, optIfOTMnInterfaceType,
optIfOTMnTcmMax, and optIfOTMnOpticalReach.
- When abbreviations are used, then they should be used consistently.
Inconsistent usage such as
xxxYyyDestAddr
xxxZzzDstAddr
should be avoided.
Appendix D: Suggested OID Layout
As noted in <a href="./rfc2578#section-5.6">RFC 2578 Section 5.6</a>, it is common practice to use the
value of the MODULE-IDENTITY invocation as a subtree under which
other OBJECT IDENTIFIER values assigned within the module are
defined. That, of course, leaves open the question of how OIDs are
assigned within that subtree. One assignment scheme that has gained
favor -- and that is RECOMMENDED unless there is a specific reason
not use it -- is to have three separate branches immediately below
the MODULE-IDENTITY value dedicated (respectively) to notification
definitions, object definitions, and conformance definitions, and to
further subdivide the conformance branch into separate sub-branches
for compliance statements and object/notification groups. This
structure is illustrated below, with naming conventions following
those outlined in <a href="#appendix-C">Appendix C</a>. The numbers in parentheses are the
sub-identifiers assigned to the branches.
<span class="grey">Heard Best Current Practice [Page 37]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-38" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
xxxMIB
|
+-- xxxNotifications(0)
+-- xxxObjects(1)
+-- xxxConformance(2)
|
+-- xxxCompliances(1)
+-- xxxGroups(2)
When using this scheme, notification definition values are assigned
immediately below the xxxNotifications node. This ensures that each
OID assigned to a notification definition has a next-to-last sub-
identifier of zero, which is REQUIRED by <a href="#section-4.7">Section 4.7</a> above. The
other sub-branches may have additional sub-structure, but none beyond
that specified in <a href="#section-4.6.5">Section 4.6.5</a> above is actually required.
One example of a MIB module whose OID assignments follow this scheme
is the POWER-ETHERNET-MIB [<a href="./rfc3621" title=""Power Ethernet MIB"">RFC3621</a>].
Normative References
[<a id="ref-RFC2578">RFC2578</a>] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case,
J., Rose, M., and S. Waldbusser, "Structure of
Management Information Version 2 (SMIv2)", STD 58, <a href="./rfc2578">RFC</a>
<a href="./rfc2578">2578</a>, April 1999.
[<a id="ref-RFC2579">RFC2579</a>] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case,
J., Rose, M., and S. Waldbusser, "Textual Conventions
for SMIv2", STD 58, <a href="./rfc2579">RFC 2579</a>, April 1999.
[<a id="ref-RFC2580">RFC2580</a>] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case,
J., Rose, M., and S. Waldbusser, "Conformance Statements
for SMIv2", STD 58, <a href="./rfc2580">RFC 2580</a>, April 1999.
[<a id="ref-RFC2119">RFC2119</a>] Bradner, S., "Key words for use in RFCs to Indicate
Requirements Levels", <a href="https://www.rfc-editor.org/bcp/bcp14">BCP 14</a>, <a href="./rfc2119">RFC 2119</a>, March 1997.
[<a id="ref-RFC2863">RFC2863</a>] McCloghrie, K. and F. Kastenholz, "The Interfaces Group
MIB", <a href="./rfc2863">RFC 2863</a>, June 2000.
[<a id="ref-RFC2864">RFC2864</a>] McCloghrie, K. and G. Hanson, "The Inverted Stack Table
Extension to the Interfaces Group MIB", <a href="./rfc2864">RFC 2864</a>, June
2000.
[<a id="ref-RFC2434">RFC2434</a>] Narten, T. and H. Alvestrand, "Guidelines for Writing an
IANA Considerations Section in RFCs", <a href="https://www.rfc-editor.org/bcp/bcp26">BCP 26</a>, <a href="./rfc2434">RFC 2434</a>,
October 1998.
<span class="grey">Heard Best Current Practice [Page 38]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-39" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
[<a id="ref-RFC3978">RFC3978</a>] Bradner, S., "IETF Rights in Contributions", <a href="https://www.rfc-editor.org/bcp/bcp78">BCP 78</a>, <a href="./rfc3978">RFC</a>
<a href="./rfc3978">3978</a>, March 2005.
[<a id="ref-RFC3979">RFC3979</a>] Bradner, S., "Intellectual Property Rights in IETF
Technology", <a href="https://www.rfc-editor.org/bcp/bcp79">BCP 79</a>, <a href="./rfc3979">RFC 3979</a>, March 2005.
[<a id="ref-RFC4001">RFC4001</a>] Daniele, M., Haberman, B., Routhier, S., and J.
Schoenwaelder, "Textual Conventions for Internet Network
Addresses", <a href="./rfc4001">RFC 4001</a>, February 2005.
[<a id="ref-RFC3593">RFC3593</a>] Tesink, K., "Textual Conventions for MIB Modules Using
Performance History Based on 15 Minute Intervals", <a href="./rfc3593">RFC</a>
<a href="./rfc3593">3593</a>, September 2003.
[<a id="ref-RFC3705">RFC3705</a>] Ray, B. and R. Abbi, "High Capacity Textual Conventions
for MIB Modules Using Performance History Based on 15
Minute Intervals", <a href="./rfc3705">RFC 3705</a>, February 2004.
[<a id="ref-RFC2021">RFC2021</a>] Waldbusser, S., "Remote Network Monitoring Management
Information Base Version 2 using SMIv2", <a href="./rfc2021">RFC 2021</a>,
January 1997.
[<a id="ref-RFC2856">RFC2856</a>] Bierman, A., McCloghrie, K., and R. Presuhn, "Textual
Conventions for Additional High Capacity Data Types",
<a href="./rfc2856">RFC 2856</a>, June 2000.
[<a id="ref-RFC3411">RFC3411</a>] Harrington, D., Presuhn, R., and B. Wijnen, "An
Architecture for Describing Simple Network Management
Protocol (SNMP) Management Frameworks", STD 62, <a href="./rfc3411">RFC</a>
<a href="./rfc3411">3411</a>, December 2002.
[<a id="ref-RFC2287">RFC2287</a>] Krupczak, C. and J. Saperia, "Definitions of
System-Level Managed Objects for Applications", <a href="./rfc2287">RFC</a>
<a href="./rfc2287">2287</a>, February 1998.
[<a id="ref-RFC3418">RFC3418</a>] Presuhn, R., Case, J., McCloghrie, K., Rose, M., and S.
Waldbusser, "Management Information Base (MIB) for the
Simple Network Management Protocol (SNMP)", STD 62, <a href="./rfc3418">RFC</a>
<a href="./rfc3418">3418</a>, December 2002.
[<a id="ref-RFC3416">RFC3416</a>] Presuhn, R., Case, J., McCloghrie, K., Rose, M., and S.
Waldbusser, "Protocol Operations for the Simple Network
Management Protocol (SNMP)", STD 62, <a href="./rfc3416">RFC 3416</a>, December
2002.
[<a id="ref-RFC4133">RFC4133</a>] Bierman, A. and K. McCloghrie, "Entity MIB (Version 3)",
<a href="./rfc4133">RFC 4133</a>, August 2005.
<span class="grey">Heard Best Current Practice [Page 39]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-40" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
[<a id="ref-RFC2277">RFC2277</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.
[<a id="ref-RFC3419">RFC3419</a>] Daniele, M. and J. Schoenwaelder, "Textual Conventions
for Transport Addresses", <a href="./rfc3419">RFC 3419</a>, December 2002.
Informative References
[<a id="ref-RFC1155">RFC1155</a>] Rose, M. and K. McCloghrie, "Structure and
Identification of Management Information for
TCP/IP-based Internets", STD 16, <a href="./rfc1155">RFC 1155</a>, May 1990.
[<a id="ref-RFC1212">RFC1212</a>] Rose, M. and K. McCloghrie, "Concise MIB Definitions",
STD 16, <a href="./rfc1212">RFC 1212</a>, March 1991.
[<a id="ref-RFC1215">RFC1215</a>] Rose, M., "A Convention for Defining Traps for use with
the SNMP", <a href="./rfc1215">RFC 1215</a>, March 1991.
[<a id="ref-RFC2223bis">RFC2223bis</a>] Reynolds, J. and R. Braden, "Instructions to Request for
Comments (RFC) Authors", Work in Progress, August 2004.
[<a id="ref-RFC3410">RFC3410</a>] Case, J., Mundy, R., Partain, D., and B. Stewart,
"Introduction and Applicability Statements for
Internet-Standard Management Framework", <a href="./rfc3410">RFC 3410</a>,
December 2002.
[<a id="ref-RFC2932">RFC2932</a>] McCloghrie, K., Farinacci, D., and D. Thaler, "IPv4
Multicast Routing MIB", <a href="./rfc2932">RFC 2932</a>, October 2000.
[<a id="ref-RFC1573">RFC1573</a>] McCloghrie, K. and F. Kastenholz, "Evolution of the
Interfaces Group of MIB-II", <a href="./rfc1573">RFC 1573</a>, January 1994.
[<a id="ref-RFC3621">RFC3621</a>] Berger, A. and D. Romascanu, "Power Ethernet MIB", <a href="./rfc3621">RFC</a>
<a href="./rfc3621">3621</a>, December 2003.
[<a id="ref-RFC3584">RFC3584</a>] Frye, R., Levi, D., Routhier, S., and B. Wijnen,
"Coexistence between Version 1, Version 2, and Version 3
of the Internet-standard Network Management Framework",
<a href="https://www.rfc-editor.org/bcp/bcp74">BCP 74</a>, <a href="./rfc3584">RFC 3584</a>, August 2003.
[<a id="ref-RFC2108">RFC2108</a>] de Graaf, K., Romascanu, D., McMaster, D., and K.
McCloghrie, "Definitions of Managed Objects for IEEE
802.3 Repeater Devices using SMIv2", <a href="./rfc2108">RFC 2108</a>, February
1997.
[<a id="ref-RFC3289">RFC3289</a>] Baker, F., Chan, K., and A. Smith, "Management
Information Base for the Differentiated Services
Architecture", <a href="./rfc3289">RFC 3289</a>, May 2002.
<span class="grey">Heard Best Current Practice [Page 40]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-41" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 2005</span>
[<a id="ref-RFC1213">RFC1213</a>] McCloghrie, K. and M. Rose, "Management Information Base
for Network Management of TCP/IP-based internets - MIB-
II", STD 17, <a href="./rfc1213">RFC 1213</a>, March 1991.
[<a id="ref-RFC1595">RFC1595</a>] Brown, T. and K. Tesink, "Definitions of Managed Objects
for the SONET/SDH Interface Type", <a href="./rfc1595">RFC 1595</a>, March 1994.
[<a id="ref-RFC2558">RFC2558</a>] Tesink, K., "Definitions of Managed Objects for the
SONET/SDH Interface Type", <a href="./rfc2558">RFC 2558</a>, March 1999.
[<a id="ref-RFC3591">RFC3591</a>] Lam, H-K., Stewart, M., and A. Huynh, "Definitions of
Managed Objects for the Optical Interface Type", <a href="./rfc3591">RFC</a>
<a href="./rfc3591">3591</a>, September 2003.
Editor's Address
C. M. Heard
158 South Madison Ave. #207
Pasadena, CA 91101-2569
USA
Phone: +1 626 795 5311
EMail: heard@pobox.com
<span class="grey">Heard Best Current Practice [Page 41]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-42" ></span>
<span class="grey"><a href="./rfc4181">RFC 4181</a> Guidelines for MIB Documents September 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 procedures with respect to rights in RFC 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.
Heard Best Current Practice [Page 42]
</pre>
|