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
|
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252">
<META NAME="Generator" CONTENT="Microsoft Word 97">
<TITLE>MRT User's Guide</TITLE>
</HEAD>
<BODY LINK="#0000ff" VLINK="#800080">
<B><FONT FACE="Arial" SIZE=7><EM><P ALIGN="CENTER"><A NAME="_Toc409238192"><A NAME="_Toc409241003"></P>
<P ALIGN="CENTER"> </P>
<P ALIGN="CENTER"> </P>
<P ALIGN="CENTER">MRT User/Configuration Guide</P>
</B></FONT></EM><I><FONT FACE="Arial" SIZE=6><STRONG><P ALIGN="CENTER">Version 2.0.0 Alpha</P>
</FONT><FONT FACE="Arial" SIZE=4><P ALIGN="CENTER">(Draft 11/5/99</P>
</I></FONT><FONT SIZE=7><P> </P>
<H2> </H2>
</FONT><FONT SIZE=5><H1><A NAME="_Toc410609075"><A NAME="_Toc451331937"></A></A>Table of Contents</A></A> <DIR>
</FONT></STRONG><FONT SIZE=2><P>Table of Contents	</FONT><A HREF="#_Toc451331937">*</A></P>
<FONT SIZE=2><P>Introduction	</FONT><A HREF="#_Toc451331938">*</A></P>
<FONT SIZE=2><P>Document Conventions	</FONT><A HREF="#_Toc451331939">*</A></P>
<FONT SIZE=2><P>Related MRT Manuals	</FONT><A HREF="#_Toc451331940">*</A></P>
<FONT SIZE=2><P>Getting Help	</FONT><A HREF="#_Toc451331941">*</A></P>
<FONT SIZE=2><P>Credits	</FONT><A HREF="#_Toc451331942">*</A></P>
<FONT SIZE=2><P>1. Overview	</FONT><A HREF="#_Toc451331943">*</A></P>
<FONT SIZE=2><P>2. Getting Started	</FONT><A HREF="#_Toc451331944">*</A></P>
<FONT SIZE=2><P>Configuration Commands	</FONT><A HREF="#_Toc451331945">*</A></P>
<FONT SIZE=2><P>Combining MRT Programs	</FONT><A HREF="#_Toc451331946">*</A></P>
<FONT SIZE=2><P>Tracing/Logging	</FONT><A HREF="#_Toc451331947">*</A></P>
<FONT SIZE=2><P>3. MRTd	</FONT><A HREF="#_Toc451331948">*</A></P>
<FONT SIZE=2><P>Synopsis	</FONT><A HREF="#_Toc451331949">*</A></P>
<FONT SIZE=2><P>Options	</FONT><A HREF="#_Toc451331950">*</A></P>
<FONT SIZE=2><P>Description	</FONT><A HREF="#_Toc451331951">*</A></P>
<FONT SIZE=2><P>Sample Configuration Files	</FONT><A HREF="#_Toc451331952">*</A></P>
<FONT SIZE=2><P>Configuration Guide	</FONT><A HREF="#_Toc451331953">*</A></P>
<FONT SIZE=2><P>Interactive Interface Commands	</FONT><A HREF="#_Toc451331954">*</A></P>
<FONT SIZE=2><P>4. BGPsim	</FONT><A HREF="#_Toc451331955">*</A></P>
<FONT SIZE=2><P>Synopsis	</FONT><A HREF="#_Toc451331956">*</A></P>
<FONT SIZE=2><P>Options	</FONT><A HREF="#_Toc451331957">*</A></P>
<FONT SIZE=2><P>Description	</FONT><A HREF="#_Toc451331958">*</A></P>
<FONT SIZE=2><P>Sample Configuration File	</FONT><A HREF="#_Toc451331959">*</A></P>
<FONT SIZE=2><P>Configuration Commands	</FONT><A HREF="#_Toc451331960">*</A></P>
<FONT SIZE=2><P>Interactive Interface Commands	</FONT><A HREF="#_Toc451331961">*</A></P>
<FONT SIZE=2><P>5. SBGP	</FONT><A HREF="#_Toc451331962">*</A></P>
<FONT SIZE=2><P>Synopsis	</FONT><A HREF="#_Toc451331963">*</A></P>
<FONT SIZE=2><P>Options	</FONT><A HREF="#_Toc451331964">*</A></P>
<FONT SIZE=2><P>Description	</FONT><A HREF="#_Toc451331965">*</A></P>
<FONT SIZE=2><P>6. ROUTE_BTOA	</FONT><A HREF="#_Toc451331966">*</A></P>
<FONT SIZE=2><P>Synopsis	</FONT><A HREF="#_Toc451331967">*</A></P>
<FONT SIZE=2><P>Options	</FONT><A HREF="#_Toc451331968">*</A></P>
<FONT SIZE=2><P>Description	</FONT><A HREF="#_Toc451331969">*</A></P>
<FONT SIZE=2><P>7. ROUTE_ATOB	</FONT><A HREF="#_Toc451331970">*</A></P>
<FONT SIZE=2><P>Synopsis	</FONT><A HREF="#_Toc451331971">*</A></P>
<FONT SIZE=2><P>Options	</FONT><A HREF="#_Toc451331972">*</A></P>
<FONT SIZE=2><P>Description	</FONT><A HREF="#_Toc451331973">*</A></P>
<FONT SIZE=2><P>8. Data Distiller	</FONT><A HREF="#_Toc451331974">*</A></P>
<FONT SIZE=2><P>Synopsis	</FONT><A HREF="#_Toc451331975">*</A></P>
<FONT SIZE=2><P>Options	</FONT><A HREF="#_Toc451331976">*</A></P>
<FONT SIZE=2><P>Description	</FONT><A HREF="#_Toc451331977">*</A></P>
<FONT SIZE=2><P>Operations	</FONT><A HREF="#_Toc451331978">*</A></P>
<H1> </H1></DIR>
</H1>
<FONT SIZE=7><STRONG><P> </P>
</FONT></STRONG><B><FONT SIZE=5><P>Copyright (c) 1997, 1998, 1999</P>
</B></FONT><FONT FACE="Courier" SIZE=3><P> </P>
<P> </P>
<P>The Regents of the University of Michigan ("The Regents") and Merit Network, Inc. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:</P>
<P>1. Redistributions of source code must retain the above <BR>
copyright notice, this list of conditions and the <BR>
following disclaimer.</P>
<P>2. Redistributions in binary form must reproduce the above <BR>
copyright notice, this list of conditions and the <BR>
following disclaimer in the documentation and/or other <BR>
materials provided with the distribution.</P>
<P>3. All advertising materials mentioning features or use of <BR>
this software must display the following acknowledgement:</P><DIR>
<DIR>
<P>This product includes software developed by the University of Michigan, Merit Network, Inc., and their contributors.</P></DIR>
</DIR>
<P>4. Neither the name of the University, Merit Network, nor the<BR>
names of their contributors may be used to endorse or <BR>
promote products derived from this software without <BR>
specific prior written permission.</P>
<P>THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </P>
</FONT><H2><A NAME="_Toc451331938">Introduction</A></H2>
<P> </P>
<P>This chapter introduces the <I>MRT User/Configuration Guide</I> and explains how to obtain further information about MRT.</P>
<H3><A NAME="_Toc451331939">Document Conventions</A></H3>
<P>The following document conventions are used in the <I>User Guide:</P>
<UL>
</I><LI>Commands and keywords are in <B>boldface</B>.</LI>
<LI>User-supplied variables are enclosed in <angle brackets>.</LI>
<LI>Optional elements are shown in [square brackets].</LI>
<LI>Alternative but required keywords are grouped in {braces} and separated by a vertical bar.</LI></UL>
<H3><A NAME="_Toc451331940">Related MRT Manuals</A></H3>
<P>The following additional documentation is available for MRT users (see (http://www.merit.edu/net-research/mrt/html/mrt_doc/):</P>
<UL>
<I><LI>Installation Guide </LI>
<LI>Programmer's Manual</LI>
</I><LI>Tutorial (in preparation)</LI></UL>
<P>The MRT web site will also have the most up-to-date documentation and code.</P>
<H3><A NAME="_Toc451331941">Getting Help</A></H3>
<P>For more information about MRT, send mail to mrt-support@merit.edu. </P>
<P>The MRT development team is available to answer questions and provide configuration advice. We are also very interested in bug reports, feature requests, and general feedback.</P>
<P>A mailing list, mrt-discuss-request@merit.edu, is also available for MRT users to share advice and experiences with the toolkit.</P>
<H3><A NAME="_Toc451331942">Credits</A></H3>
<P>MRT was originally developed by Merit Network, Inc., under National Science Foundation grant NCR-9318902, "Experimentation with Routing Technology to be Used for Inter-Domain Routing in the Internet." The current research is supported by the National Science Foundation (NCR- 9710176) and a gift from Intel Corporation. </P>
<P>The design and ideas behind many of the MRT libraries draws heavily on the architecture pioneered in the GateD routing daemon. </P>
<P>The University of Michigan/Merit Network MRT development team includes: Craig Labovitz, Masaki Hirabaru, Farnam Jahanian, Susan Hares and Susan Rebecca Harris. Additional code and architecture ideas were supplied by Marc Unangst and John Scudder. </P>
<P>Francis Dupont developed the initial BGP4+ code. </P>
<P>The public domain Struct C-library of linked list, hash table and memory allocation routines was developed by Jonathan Dekock <dekock@cadence.com>.</P>
<P>David Ward <dward@netstar.com> provided bug fixes and helpful suggestions.</P>
<P>Pedro Roque developed the first port to Linux IPv6, and wrote many of the Linux kernel interface routines.</P>
<P>Mark Turner <mturner@cisco.com> added several new features to BGPSim.</P>
<P>We would also like to thank our other colleagues in Japan, Portugal, the Netherlands, the UK, and the US for their many contributions to the MRT development effort. </P>
<P> </P>
<H2><A NAME="_Toc451331943">1. Overview</A></H2>
<P> </P>
<P>The MRT toolkit has been used to build a wide variety of tools, ranging from production Internet and 6bone routing daemons to BGP fault-injection and traffic generation test packages. MRT software is in active use at universities and commercial organizations throughout the country and internationally. </P>
<P>MRT uses novel approaches to routing architecture design, and incorporates features such as parallel lightweight processes, multiple processor support, and shared memory. The object-oriented, modular design of the software encourages the rapid addition and prototyping of experimental routing protocol and inter-domain policy algorithms. </P>
<P>Although MRT has been designed with multi-threaded, multi-processor architectures in mind, the software will run in emulation mode on non-thread capable operating systems.</P>
<P>Today, MRT applications and libraries enjoy a diverse user community, researchers and commercial developers across the Internet. See the <B>Tutorial</B> for examples on how users are adopting MRT technology.</P>
<P>You can use MRT applications and libraries to:</P>
<UL>
<LI>Serve as the backbone routing software for your IPv6 or IPv4 network connection.</LI>
<LI>Simultaneously handle tasks such as routing policy communication, routing policy calculation, and maintenance of a RIB, and distribute these tasks over multiple processors or multiple machines</LI>
<LI>Generate and analyze route flap statistics </LI>
<LI>Generate real-time graphical maps of Internet routing </LI>
<LI>Capture a BGP peering session and monitor it in real time</LI>
<LI>Record and replay sequences of events, such as routing failures</LI></UL>
<P>The toolkit includes two main categories of tools: Routing and Network Performance measurement tools. A high level description of the toolkit applications is provided below: </P>
<H4>Routing Tools</H4>
<UL>
<B><LI>MRTd</B><A HREF="#mrt"></A></LI>
<LI><B></B>A routing daemon supporting RIPng, BGP4+, multiple RIBs (route server), and RIP1/2. MRTd reads Cisco Systems-like router configuration files and supports a Cisco Systems router-like telnet interface. </LI>
<B><LI>BGPsim</B>A<B> </B>BGP4+ traffic generator/simulator.</LI>
<B><LI>SBGP</B>A simple BGP4+ speaker and listener<B>.</LI>
<LI>Route_BtoA</B>Converts binary MRT messages to ASCII<B>.</LI>
<LI>Route_AtoB</B>Converts ASCII descriptions of MRT messages to binary MRT message format. Binary MRT messages can be piped into other MRT programs, including SBGP and BGPSim.</LI></UL>
<P> </P>
<H2><A NAME="_Toc451331944">2. Getting Started</A></H2>
<P> </P>
<P>See the <B>MRT Installation Guide</B> for information on building and installing MRT programs</P>
<P>All MRT programs can be invoked from the command line, or from the Unix boot/startup script. Below is an example of starting the MRTd routing daemon from the command line:</P><DIR>
<DIR>
<CODE><P>> /usr/local/bin/mrtd </P></DIR>
</DIR>
</CODE><P>Once running, most MRT-based tools will begin to listen for user telnet connections on the TCP port specified in /etc/services. MRT-based programs may be configured by editing a configuration file, or by invoking the configuration utility from the interactive user telnet interface. Below is an example of telneting to the user interactive interface (UII) port on a machine running the MRTd routing daemon. The "mrtd" number has been configured in /etc/services (see the Installation Manual for more information).</P><DIR>
<DIR>
<CODE><P>>telnet 127.0.0.1 mrtd </P>
<P>MRT version 1.5.2 ALPHA February 22, 1999</P>
<P>User Access Verification</P>
<P>[71] password> ***</P>
<P>[71] MRTd></P></DIR>
</DIR>
</CODE><P>If a password is specified in the configuration file, it must be supplied at the password prompt. Initially, MRT programs default to no password access control and restrict user interactive telnet to the loopback address or the interface address of the local machine.</P>
<P>The MRT user interface supports Unix shell-like redirection (<B>></B> or <B>>></B> <B>filename</B>) for output. To edit a line, emacs-like line editing, including ^a, ^e, ^b, ^f, ^d, ^k, ^u and ^c, is available. To reuse a previous line, the tcsh-line history function is available by typing ^p and ^n.</P>
<P>Most MRT-based tools share a common subset of user management and configuration commands. The command language used by MRT shares many similarities with the language used on Cisco Systems routers. </P>
<P>Commands common to most MRT tools include:</P>
<UL>
<B><LI>show config</B>view the configuration file</LI>
<B><LI>show version</B>show the current version</LI>
<B><LI>show threads</B>show the status of application threads</LI>
<B><LI>config<FONT SIZE=4>*</B></FONT>enter configuration mode </LI>
<B><LI>enable</B>enter enable mode<B> </LI>
<LI>write<FONT SIZE=4>*</B></FONT>save volatile memory configuration to disk<B> </LI>
<LI>reboot<FONT SIZE=4>*</B></FONT>restart the application </LI>
<B><LI>help</B>shows all commands available</LI>
<B><LI>exit</B>leave the UII interface</LI></UL>
<DIR>
<DIR>
<B><FONT SIZE=4><P>*	</B></FONT>Note that if you set enable password in your configuration, the enable command is required in order to execute some potentially dangerous commands, such as config, write, and reboot (marked with an asterisk <B><FONT SIZE=4>* </B></FONT>above.)</P></DIR>
</DIR>
<H3><A NAME="_Toc451331945">Configuration Commands</A> </H3>
<P>When MRT programs are started for the first time and no configuration file exists on disk, the programs will create a default configuration in volatile memory. This configuration may be modified in memory by issuing the "<B>config"</B> command from the UII telnet interface prompt. Modifications to volatile memory may be saved to disk using the "<B>write</B>" command. Modifications not saved to disk will be lost if the application terminates or is rebooted.</P>
<P>Upon startup, MRT programs will search for the default configuration file for the application (usually /etc/<application_name.conf>). The user may also override the default configuration file by providing a "-<B>f <filename></B> " flag on the command line of the application.</P>
<P>Beginning with this version (v. 1.5.1 alpha), all configuration commands may be issued even through the interactive, telnet interface. Configuration changes can also be made directly to the configuration file on disk. If changes are made the program must be restarted, or <B>rebooted</B>, to reread the changed configuration file. </P>
<H4>Most configuration commands have no-style commands, such as no ip route ..... to remove them from the configuration. Command prefixes can be used for both IPv4 and IPv6 configurations, but IPv6 features may not be available on IPv4-only platforms. </H4>
<P>The following configuration commands are common to most MRT-based programs:</P>
<B><P>line vty</B>configures the user interface (by telnet)</P>
<B><FONT SIZE=2><P>password <string></P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Sets a password <string> for telnet interface. Note that if a password is not set, access verification will not be performed and interactive user telnet connections will only be available from the local host.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>access-class <access-list number></P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>If <access-list number> is specified, telnet connections will be restricted to IP addresses allowed by the access list. See the access-list description below for more information.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>port <number> </P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Changes the port number with <number> for the telnet interface. The default is the port value specified in /etc/services for the application name. If a /etc/services entry does not exist, the port number assigned to the service defaults to "mrt" or 5674.</P>
<B><P> </P></DIR>
</DIR>
</DIR>
</DIR>
<P>exec-timeout <minutes></B>[<seconds>]</P><DIR>
<DIR>
<DIR>
<DIR>
<P>Sets the timeout on idle UII connections to the number of <minutes> and <seconds>. At the end of the timeout interval, the idle UII connection is closed.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>addr <address> </P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Specifies the address at which the UII connections are accepted. The default is all addresses available on the host.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>login</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Enables connections from other hosts.</P></DIR>
</DIR>
</DIR>
</DIR>
</FONT><B><P>enable password</B>sets enable password</P>
<B><FONT SIZE=2><P>enable password <string></P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Sets enable password <string> for the enable command.</P>
<B><P> </P></DIR>
</DIR>
</DIR>
</DIR>
</FONT><P>debug</B>controls debug options</P>
<B><FONT SIZE=2><P>debug <flag> [<file> [<size>]]</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Logs debug messages matching priority <flag> to the named <file>. If the file size limit is specified with <size>, the file will be truncated after reaching the <size> byte limit. If <file> is omitted, stderr will be selected. </P></DIR>
</DIR>
</DIR>
</DIR>
<PRE> <flag></FONT><B> .... info, norm, trace, parse, packet, state, timer, all
<file> .... filename or "stdout".
		 Some applications also support "syslog"
			
<size> .... maximum size (bytes) of logfile.
File is truncated and restarted after reaching <size>.
</PRE><DIR>
<DIR>
<DIR>
<DIR>
<U><FONT SIZE=2><P>NOTE:</B></U> Debugging may significantly impact the performance of mrtd and other daemons. We recommend using binary packet dump update option for statistics collection and event logging.</P>
</FONT><B><PRE>
</PRE></DIR>
</DIR>
</DIR>
</DIR>
<P>access-list</B>defines a filter</P>
<B><FONT SIZE=2><P>access-list <number> {permit|deny} <prefix> [refine|exact]</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Defines an access list <number>, which permits or denies access if the condition is matched. <B>all</B> can be specified as <prefix>. <B>exact</B> will be assumed if neither <B>refine</B> or <B>exact</B> is specified. <B>exact</B> matches only the prefix, while <B>refine</B> matches more specific prefixes, excluding the prefix itself.</P>
<P>Matches are performed in the order in which they appear. At the end of a list with the same number, deny all is assumed.</P>
</FONT><B><P> </P></DIR>
</DIR>
</DIR>
</DIR>
<P>!</B>comment and separator</P><DIR>
<DIR>
<FONT SIZE=2><P>Comments can appear at the beginning of a line, or any other place in the line. However, only comments appearing at the beginning of a line are stored in memory.</P></DIR>
</DIR>
</FONT><B><P>redirect</B>allows shell-like redirection of output (> or >>).</P><DIR>
<DIR>
<B><FONT SIZE=2><P>redirect</B> <directory></P><DIR>
<DIR>
<P>Allows redirection to files in this directory. Unrestricted redirection was deemed a security problem.</P></DIR>
</DIR>
</DIR>
</DIR>
</FONT><P><A NAME="_Toc409238193"><A NAME="_Toc409241004"><A NAME="mrt">After editing the configuration file, the user may return to the top-level of the interactive telnet interface by typing a <B>^Z</B> or entering <B>exit</B>. Below is an example of an interactive telnet session using the configuration mode of an MRT application:</P><DIR>
<DIR>
<FONT FACE="Courier New" SIZE=2><P>Config> ? </P>
<P> access-list </P>
<P> as-path </P>
<P> debug </P>
<P> dump </P>
<P> dump-binary </P>
<P> exit Quit from the current level</P>
<P> gateway </P>
<P> interface </P>
<P> no </P>
<P> password </P>
<P> quit Quit from the current level</P>
<P> redirect </P>
<P> route </P>
<P> route-map </P>
<P> router </P>
<P> show </P>
</FONT><P> </P></DIR>
</DIR>
<H3><A NAME="_Toc451331946">Combining MRT Programs</A></H3>
<P>Many MRT programs (sbgp, route_btoa, bgpsim) can be combined together using Unix shell-like pipe features. For example:</P><DIR>
<DIR>
<CODE><P>sbgp -o stdout | route_btoa -i stdin </P></DIR>
</DIR>
</CODE><P>Programs can also use System5 message passing with -r and -w options. Note that this feature is limited/experimental in this release.</P>
<H3><A NAME="_Toc451331947">Tracing/Logging</A></H3>
<P>All MRT programs support logging. The <B>v</B> command line option will turn on verbose logging to stdout. More advanced logging options may be set in the configuration file using the <B>debug</B> command. </P>
<B><U><P>NOTE:</B></U> Debugging may significantly impact the performance of mrtd and other daemons. We recommend using binary packet dump update option for statistics collection and event logging<FONT SIZE=2>.</P>
</FONT><P>MRT supports five different debugging flags: NORM, PACKET, PARSE, TRACE, STATE, PARSE, POLICY, and ALL. </P><DIR>
<DIR>
<DIR>
<DIR>
<DIR>
<DIR>
<P>NORM	Logging from normal operations. Includes error messages and significant events</P>
<P>PACKET	Logging of receipt and transmission of packets (e.g., BGP updates)</P>
<P>PARSE	Logging of config file parsing and UII configuration changes</P>
<P>POLICY 	Application of filter lists or routing policy.</P>
<P>STATE	Protocol state machine changes and other events (e.g., BGP state machine changes)</P>
<P>TRACE 	Detailed logging of operations</P>
<P>ALL	All logging turned on</P></DIR>
</DIR>
</DIR>
</DIR>
</DIR>
</DIR>
<P>MRT debugging information may be forwarded to the UII vtty by issuing the command <B>terminal monitor</B>.</P>
<H2><A NAME="_Toc451331948">3. MRTd</A></A></A></H2>
<P>MRTd is a multi-threaded routing daemon with support for BGP4, RIP1/2, RIPng, and BGP4+ (for IPv6) and multiple RIBs (i.e. route server). MRTd reads Cisco Systems-like router configuration files and includes a Cisco Systems router-like interactive telnet interface. </P>
<P>At the moment, BGP, RIPng, and BGP4+ are completely supported. RIP1/2 and its interaction with other protocols are not supported. Development of OSPF and PIM-DM is currently underway.</P>
<H3><A NAME="_Toc451331949">Synopsis</A></H3>
<H4>mrtd [-v] [-n] [-f configuration file] [-l rib file] [-r] [-m]</H4>
<H3><A NAME="_Toc451331950">Options</A></H3>
<B><FONT SIZE=2><DL>
<DT>-f configuration_file </DT>
</B><DD>Read the specified configuration file. By default, MRT tries to read /etc/mrtd.conf. </DD>
<B><DT>-v </DT>
</B><DD>Turn on verbose logging to standard output. This is useful to turn on logging before the debug commands are read in the configuration file. </DD>
<B><DT>-n </DT>
</B><DD>Specify that MRT will not modify the kernel routing table. (This option is used to test MRT configurations with actual routing data.) </DD>
<B><DT>-r </DT>
</B><DD>Dont install routes in the RIB.</DD>
<B><DT>-l routing database </DT>
</B><DD>Load routes from a routing table dump and use these prefixes in the simulation. The routing database file must be in MRT message format. The programs included in the route_atob directory will convert GateD, RSd and Cisco Systems routing table dumps to MRT RIB format.</DD>
<B><DT>-m </DT>
</B><DD>Use a new dump format.</DD>
</FONT><DT> </DT>
</DL>
<H3><A NAME="_Toc451331951">Description</A></H3>
<P>MRT first reads its configuration file (by default /etc/mrtd.conf) to configure routing protocols, route peerings, and routing policy. The configuration file closely resembles those used by Cisco Systems routers. </P>
<P>After reading the configuration file, MRT scans the kernel for existing routes, scans the kernel interface list, and then initiates routing protocol communications. MRT also begins listening on the mrt service port, "mrtd," (specified in /etc/services) for user telnet connections. </P>
<H3> </H3>
<H3><A NAME="_Toc451331952">Sample Configuration Files</A></H3>
<P>A sample IPv4 MRT configuration file is shown below:</P>
<B><PRE></PRE><DIR>
<DIR>
</B><FONT FACE="Courier" SIZE=1><P>Line vty</P>
<P> password </FONT><FONT SIZE=1>my_password</FONT><FONT FACE="Courier" SIZE=1> login</P>
</FONT><FONT SIZE=1><PRE>!
debug norm stdout
!
access-list 1 deny 0.0.0.0/0
access-list 1 permit all
access-list 2 permit 192.168.0.0/16
!
router bgp 185
neighbor 192.168.10.2 remote-as 65
neighbor 192.168.10.2 distribute-list 1 in
neighbor 192.168.10.2 distribute-list 2 out
neighbor 198.108.60.244 remote-as 185
redistribute static
redistribute rip
!
router rip
network 192.168.10.0/24
network 198.108.60.0/24
redistribute static
redistribute bgp
!
ip route 192.168.100.0/24 192.168.10.100
ip route 192.168.150.0/23 192.168.10.100
ip route 192.168.190.1/24 192.168.10.100
ip route 10.0.0.0/8 192.168.10.100
</FONT></PRE></DIR>
</DIR>
<P>Following is a sample IPv6 configuration file:</P><DIR>
<DIR>
<FONT FACE="Courier" SIZE=1><P>Line vty</P>
<P> password my_passwordhttp://pythia.uoregon.edu/~llynch/nanog16.html port 5674 login</P>
<P>!</P>
<P>dump bgp view 1 /susr/masaki/tmp/ipv6/bgp.routes.%y%m%d.%H:%M 60m</P>
<P>dump bgp updates /susr/masaki/tmp/ipv6/bgp.updates.%y%m%d.%H:%M 15m</P>
<P>debug all /tmp/MRTd.log 1000000</P>
<P>redirect /tmp</P>
<P>!</P>
<P>access-list 1 deny 3ffe:1c00::/24 refine !merit internal</P>
<P>access-list 1 permit all</P>
<P>!</P>
<P>access-list 99 deny all</P>
<P>!</P>
<P>as-path access-list 1 permit ^1673 ! just an example, it's always true</P>
<P>!</P>
<P>router bgp 237 ! define own AS number</P>
<P> aggregate-address 3ffe:1c00::/24 summary-only as-set</P>
<P> neighbor 3ffe:0dfe:fffe::9 remote-as 1673 ! eBGP</P>
<P> neighbor 3ffe:0dfe:fffe::9 description ANS</P>
<P> neighbor 3ffe:0dfe:fffe::9 distribute-list 1 out ! drop specific</P>
<P> neighbor 3ffe:0dfe:fffe::9 filter-list 1 in ! as path filter</P>
<P> neighbor 3ffe:1c00::3 remote-as 237 ! iBGP</P>
<P> neighbor 3ffe:1c00::3 description CC</P>
<P> neighbor 3ffe:1c00::3 bgp4+ 1 ! use RFC version of BGP4 MP</P>
<P> neighbor 3ffe:1c00:0:60::112 remote-as 112 ! for test</P>
<P> neighbor 3ffe:1c00:0:60::112 remote-as 112 description MRT</P>
<P> neighbor 3ffe:1c00:0:60::112 distribute-list 99 in ! drop everything</P>
<P> neighbor 3ffe:1c00:0:60::112 bgp4+ 1 ! ! use RFC version of BGP4 MP</P>
<P> redistribute static ! inject static routes</P>
<P> redistribute direct ! inject connected routes</P>
<P>!</P>
<P>router ripng</P>
<P> network 3ffe:1c00:0:60::/64</P>
<P> network 3ffe:1c00:0:12::/64</P>
<P> network cti1</P>
<P> network cti2</P>
<P> redistribute static</P>
<P> redistribute direct</P>
<P> redistribute bgp</P>
<P> distribute-list 99 in cti2</P>
<P> distribute-list 99 out cti2</P>
<P>!</P>
<P>ip route 0.0.0.0/0 198.108.60.1 ! default route</P>
<P>ip route 3ffe:1c00::/24 ::1 ! merit pTLA</P>
<P> </P></DIR>
</DIR>
</FONT><H3><A NAME="_Toc409238194"><A NAME="_Toc409241005"><A NAME="_Toc451331953">Configuration Guide</A></A></A></H3>
<P>This section introduces the command sets for: </P>
<UL>
<LI>Configuring MRTd and BGPsim </LI>
<LI>Using MRTs interactive interface to monitor the status of MRTd and BGPsim. </LI></UL>
<P>For information about the <B>uii, debug, </B>and<B> access-list </B>configuration commands, see Chapter 2, "Getting Started." </P>
<H4>Configuration Commands</H4>
<P>As mentioned in Chapter 2, all of the below options may be configured directly through the UII telnet interface. Administrators may also choose to edit the configuration file directly on disk. In this case, MRTd must be <B>rebooted</B> before the changes will take affect.</P>
<FONT FACE="Arial"><H5>Configuring Routes and Policy</H5>
</FONT><P>MRTd supports most of the common Cisco Systems routing policy commands, including access lists, as-path access lists and route maps.</P>
<P> </P>
<B><P>route</B>defines a static route</P>
<B><FONT SIZE=2><P>route <prefix> <next hop> [<interface>]</P><DIR>
<DIR>
<DIR>
<DIR>
</B></FONT><P>Establishes a static route to a destination <prefix> via <next hop>. <next hop> may be an IPv4 or IPv6 address and must be consistent with <prefix>. To use a specific interface, specify <interface>.</P>
<B><P> </P></DIR>
</DIR>
</DIR>
</DIR>
<P>as-path access-list</B>defines an as-path access-list</P>
<B><FONT SIZE=2><P>as-path access-list <number> {permit|deny} <as-regular-expression></P><DIR>
<DIR>
<DIR>
<DIR>
</B></FONT><P>Defines an as-path access-list <number>, which permits or denies access if <as-regular-expression> is matched. </P>
<P>Matches are performed in the order in which they appear. At the end of a list with the same number, deny .* is assumed.<FONT SIZE=2> </P>
</FONT><FONT SIZE=3><P>The as regular expressions are as follows:</P>
</FONT><FONT SIZE=2><P><number> an as number (1 through 65535)</P>
<P>. Matches any single as number</P>
<P>* Matches 0 or more sequences of the pattern</P>
<P>+ Matches 1 or more sequences of the pattern</P>
<P>? Matches 0 or 1 occurrences of the pattern</P>
<P>^ Matches the beginning of the as path</P>
<P>$ Matches the end of the as path</P>
<P>| Matches one of the alternatives</P>
<P>() Encloses a pattern</P>
</FONT><FONT SIZE=3><P>For example:</P>
</FONT><FONT SIZE=2><P>.* 		any AS path, including null</P>
<P>237$		originated from AS 237</P>
<P>237		via AS 237</P>
<P>^(237|10)	from AS 237 or AS 10</P>
<P>^$		originated from this AS</P>
<B><P> </P></DIR>
</DIR>
</DIR>
</DIR>
<P>network <prefix></P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Configure routes originating in BGP.</P>
</FONT><H4> </H4></DIR>
</DIR>
</DIR>
</DIR>
<B><P>route-map</B>define a route-map</P>
<B><FONT SIZE=2><P>route-map <number></P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Defines the conditions to modify attributes of any updates.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P> route-map </B>sub commands</P>
<B><P>set as-path [prepend] <as-path-string></P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Sets or prepends <as-path-string> to the as-path of the route. Note that there is no matching function implemented.</P>
<PRE><as-path-string></FONT><B> ... <number>... a sequence of AS numbers<BR>
[ <number>... ] a set of AS numbers
</PRE>
<FONT SIZE=2><P> </P></DIR>
</DIR>
</DIR>
</DIR>
<P>set community [additive] (<number>|no-export|no-advertise)</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Sets community attribute to the route, or appends if additive is specified. <BR>
<number> values are 1 to 4294967200.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>set origin (igp|egp <as>|incomplete)</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Sets the origin code.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>set next-hop <address></P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Sets the nexthop attribute. If the address is an IPv6 global address, it is set as BGP4+ next hop. In addition, If the address is an IPv6 link-local address, it is set as BGP4+ next hop link local address.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>set metric <number></P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Sets the metric value (MED).</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>set local-preference <number></P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Sets the local preference value.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>set dpa as <number> <number></P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Sets the DPA values.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>set atomic-aggregate</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Sets automatic aggregate attribute.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>set aggregator as <number> </B><address></P><DIR>
<DIR>
<DIR>
<DIR>
<P>Sets aggregator information. <address> should be IPv4.</P></DIR>
</DIR>
</DIR>
</DIR>
</FONT><FONT FACE="Arial"><H5>Configuring Routing Protocols</H5>
</FONT><P>MRTd supports BGP4, BGP4+, RIP2, and RIPng. This version includes partial support for OSPF, and a PIM-DM implementation is underway.</P>
<B><P><A NAME="_Hlk444334573">router</B>configures routing protocol</P>
<B><FONT SIZE=2><P>router bgp </B><as number></P><DIR>
<DIR>
<DIR>
<DIR>
<P>Enables assignment of the BGP (or BGP4+ if IPv6 is available) routing protocol <as number> to the routing process.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><DL>
<DT></A>router ripng</DT>
</DL><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Enables RIPng routing protocol.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><DL>
<DT>router rip</DT>
</DL><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Enables RIP routing protocol.</P></DIR>
</DIR>
</DIR>
</DIR>
<P>The following commands are available for the <B>router bgp </B>command.</P>
<B><P>neighbor <peer address> remote-as </B><peer's as number></P><DIR>
<DIR>
<DIR>
<DIR>
<P>Adds an entry of BGP neighbor with <peer address>. <BR>
<peer's as number> should be an AS number to which the peer belongs.<BR>
Must precede other neighbor commands for <peer address>.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>neighbor <peer address> update-source <source address > </P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Specifies the addresses for outgoing BGP connections and at which incoming BGP connections are accepted.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>neighbor <peer address> next-hop-self </P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Forces the next hop in the AS path to be the host itself.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>neighbor </B><peer address> <B>(transparent-as|transparent-nexthop</B>)</P><DIR>
<DIR>
<DIR>
<DIR>
<P>Set transparent option for neighbor, as in use as a route server.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>neighbor </B><peer address> <B>passive</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Does not initiate BGP connectionsonly accepts them.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>neighbor <peer address> maximum-prefix <number > </P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Sets the maximum number of prefixes incuded in a BGP update.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>neighbor <peer address> distribute-list <number> {in|out}</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Applies access-list <number> to incoming (in) or outgoing (out) route updates for a peer with <peer address>.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>neighbor </B><peer address> <B>filter-list </B><number> <B>{in|out}</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Applies as-path access-list <number> to incoming (in) or outgoing (out) route updates for a peer with <peer address>.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>neighbor <</B>peer address<B>> weight <</B>num<B>></P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Set a weight associated with a peer.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>neighbor</B> <peer address> <B>trace</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Enable tracing of a BGP peer.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>neighbor <peer address> route-map <number> {in|out}</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Applies a route-map <number> to incoming (in) or outgoing (out) route updates for a peer with <peer address>.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>neighbor <peer address> route-reflector-client</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Sends routes to an internal peer even if learned from another internal peer (route reflection.)</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>neighbor <peer address> description </B><string></P><DIR>
<DIR>
<DIR>
<DIR>
<P>Attaches <string> to the neighbor as a description.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>neighbor <peer address> (holdtime|keepalive|connectretry|starttime) <num></P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Set the timer for a neighbor.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>neighbor </B><name><B> neighbor-list </B><num></P><DIR>
<DIR>
<DIR>
<DIR>
<P>Allows anonymous neighbor peers.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>neighbor <peer address> bgp4+ (0|1|old|new|rfc|auto)</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Specifies BGP4+ packet format. The default is 0.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>redistribute <proto></P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Redistributes routes from <proto> such as rip to BGP.</P>
<B><P> </P></DIR>
</DIR>
</DIR>
</DIR>
<P>aggregate-address <prefix> [summary-only] [as-set]</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Creates an aggregate entry to <prefix>. summary-only suppresses all more specific routes from updates. as-set merges as paths to generate as-set path attribute.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>bgp router <id></P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Defines the router ID used in BGP. The router ID should be an IPv4 address assigned to the host. The default is one of the addresses available on the host; which is picked up by MRT automatically. </P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>bgp cluster-id <id></P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Defines the cluster ID used in the BGP reflector. The default is the same as the router ID. </P>
<P> </P></DIR>
</DIR>
</DIR>
</DIR>
</FONT><B><P>router rip/ripng</B>RIP/RIPng routing</P>
<FONT SIZE=2><P>The following commands are available for the <B>router RIP/RIPng </B>command.</P>
<B><P>network {<prefix>|<interface>}</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Specifies interface(s) by <prefix> or by name. to turn on RIP/RIPng. All interfaces included under <prefix> will be enabled.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>distribute-list <number> {in|out} <interface></P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Applies access-list <number> to incoming (in) or outgoing (out) route updates on <interface>.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>redistribute <proto></P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Redistributes routes from <proto> to RIP/RIPng.</P></DIR>
</DIR>
</DIR>
</DIR>
</FONT><FONT FACE="Arial"><H5>Statistics Collection</H5>
</FONT><P>MRTd can log both routing table dumps and binary traces of all BGP events in a format parseable by other MRT (and soon Zebra) tools. So, for example, BGP updates can be recorded via MRTd and later replayed to test peers through bgpsim or sbgp. <I>The MRT Programmers Manual</I> includes a description of the MRT packet formats.</P>
<B><P>dump bgp--</B>dump BGP updates, state changes, and routes</P>
<B><FONT SIZE=2><P>dump-binary [{ip|ipv6}] bgp routes <filename> [<duration>]</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Dump BGP routing table in binary MRT format. <filename> can be in strftime() format. If <duration> is specified, the file will be reopened every <duration>, re-evaluating the filename. If <B>ip</B> or <B>ipv6 </B>is specified, only the routes of the address will be dumped.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>dump [{ip|ipv6}] bgp {routes|updates|all} <filename> [<duration>]</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Dumps BGP/BGP4+ routes, updates, or all into the file <filename>.<BR>
<filename> can be in strftime() format. If <duration> is specified, the file will be reopened every <duration>, re-evaluating the filename. If <B>ip</B> or <B>ipv6 </B>is specified, only the routes of the address will be dumped.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>dump bgp view <view number> <filename> [<duration>]</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Dump routing table for specified view.</P>
</FONT><H3> </H3></DIR>
</DIR>
</DIR>
</DIR>
<H3><A NAME="_Toc451331954">Interactive Interface Commands</A></H3>
<P>MRTd and BGPsim provide an interactive user interface for management (e.g., viewing the routing table) and configuration.</P>
<P>The following commands are specific to MRTd and BGPSim. Additional commands are described in Chapter 2, "Getting Started."</P>
<H4>clear bgp * <name> Close/reset BGP peering session with this peer *</H4>
<H4>config * Enter configuration mode</H4>
<H4>quit Exit mode, or exit UII interface</H4>
<H4>show show system information</H4>
<B><FONT SIZE=2><P>show [{ip|ipv6}] bgp</P>
<P>show [{ip|ipv6}] bgp summary</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Show BGP peers summary</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>show [{ip|ipv6}] bgp neighbors </P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Show BGP peers and their status</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>show bgp neighbors </B>(<peer address>|<name>|*) <B>errors</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Show recent BGP errors/notifications with this peer.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>show bgp neighbors </B>(<peer address>|<name>|*) <B>routes</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Show BGP routes sent to this peer</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>show [{ip|ipv6}] bgp routes</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Show BGP routing table</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>show [{ip|ipv6}] bgp regexp </B><as-regular expression> </P><DIR>
<DIR>
<DIR>
<DIR>
<P>Show BGP routes matching the as-path regular expression.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>show [{ip|ipv6}] bgp prefix </B><prefix></P><DIR>
<DIR>
<DIR>
<DIR>
<P>Show BGP routes matching this prefix.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>show config</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Show the current configuration</P></DIR>
</DIR>
</DIR>
</DIR>
</FONT><B><P>		<FONT SIZE=2>show interfaces</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Show all interfaces available</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>show ip</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Show IPv4 routing table</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>show ipv6</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Show IPv6 routing table</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>show rib</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Show the central routing table</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>show rip</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Show RIP status</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>show rip routes</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Show RIP routing table</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>show ripng</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Show RIPng status</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>show ripng routes</P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Show RIPng routing table</P></DIR>
</DIR>
<B><P>show view </B><view number></P>
<P>Show the BGP routing table for this view.</P>
<P> </P></DIR>
</DIR>
</FONT><H4>dump & load dump and load bgp binary routing table dump to/from disk</H4>
<B><FONT SIZE=2><P>dump [{ip|ipv6}] bgp routes <filename></P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Dumps bgp routes into the file <filename>.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>load [{ip|ipv6}] bgp routes <filename></P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Loads bgp routes from the file <filename>. Note that this will introduce inconsistency into the routing table.</P>
<P> </P></DIR>
</DIR>
</DIR>
</DIR>
</FONT><H4>trace log protocol information to disk or UII</H4>
<B><FONT SIZE=2><P>trace [{ip|ipv6}] bgp </FONT><FONT SIZE=4>*</P><DIR>
<DIR>
<DIR>
<DIR>
</B></FONT><FONT SIZE=2><P>Enable tracing of BGP protocol.</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>trace bgp neighbor </B>(<peer address>|<peer name>) </FONT><B><FONT SIZE=4>*</P><DIR>
<DIR>
<DIR>
<DIR>
</B></FONT><FONT SIZE=2><P>Enable tracing on the peer. (The "terminal monitor" command is required to watch this at the UII.)</P></DIR>
</DIR>
</DIR>
</DIR>
<B><P>trace bgp view (*|inet|inet6|<num>) </FONT><FONT SIZE=4>*</P><DIR>
<DIR>
<DIR>
<DIR>
</B></FONT><FONT SIZE=2><P>Enable tracing of view routing table changes.</P></DIR>
</DIR>
</DIR>
</DIR>
</FONT><H4>quitquit the mode or disconnect</H4><DIR>
<B><FONT SIZE=4><P>* </B></FONT>Note that if you set enable password in your configuration, the enable command is required in order to execute some potentially dangerous commands, such as clear bgp, config, and trace bgp (marked with an asterisk<B><FONT SIZE=4>* </B></FONT>above.)</P>
<B><P> </P>
</B><DL>
<DT> </DT></DIR>
<DT>Following are examples of the interactive interface <A NAME="bgpsim">commands:</DT>
</DL><DIR>
<CODE><P>[21] MRTd> show ip</P>
<P>4 prefixes</P>
<P> P Pref Time Destination Next Hop If</P>
<P>*S 1 74:42:37 0.0.0.0/0 198.108.60.1 ep0</P>
<P>*C 0 74:42:37 127.0.0.0/8 0.0.0.0 lo0</P>
<P>*C 0 74:42:37 192.168.12.0/24 0.0.0.0 lo0</P>
<P>*C 0 74:42:37 198.108.60.0/24 0.0.0.0 lo0</P>
<P>[17] MRTd> show ripng</P>
<P> </P>
<P>Routing Protocol is "ripng" (Using IPV6)</P>
<P>Listening on port 521 (socket 10)</P>
<P>Sending updates every 30 seconds +/- 15, next due in 29 seconds</P>
<P>Triggered update and split horizon (no poisoned reverse) implemented</P>
<P>Invalid after 180 seconds, hold down 180, flushed after 120</P>
<P> </P>
<P>106 ripng routes and 107 ripng attributes active</P>
<P>106 hash entries</P></DIR>
</CODE><H2><A NAME="_Toc409238195"><A NAME="_Toc409241006"></H2>
<H2><A NAME="_Toc451331955">4. BGPsim</A></A></A></H2>
<P>BGPsim simulates complex BGP4 routing environments with possibly high levels of routing instability/change. </P>
<P>BGPsim includes a perl program, BGPsim.pl, which is used to generate ASCII descriptions of BGP traffic for use with route_btoa and sbgp. (The BGPsim Perl code is still quite rough.) </P>
<H3><A NAME="_Toc451331956">Synopsis</A></H3>
<B><P>BGPsim [-f configuration_file] [l routing table] [-v] [-s] [-m]</P>
</B><H3><A NAME="_Toc451331957">Options</A></H3>
<B><FONT SIZE=2><DL>
<DT>-f configuration_file </DT>
</B><DD>Read the specified configuration file. By default, bgpsim tries to read ./bgpsim.conf. </DD>
<B><DT>-v </DT>
</B><DD>Turn on verbose logging to standard output. This is useful to turn on logging before the debug commands are read in the configuration file. </DD>
<B><DT>-s </DT>
</B><DD>By default, BGPSim does not set mandatory BGP attributes, including origin, nexthop and ASPath. If this flag is used, BGPsim will add these attributes and prepend the local AS to the ASPath. </DD>
<B><DT>-m </DT>
</B><DD>Use a new dump format.</DD>
</FONT><DT> </DT>
</DL>
<H3><A NAME="_Toc451331958">Description</A></H3>
<P>By default, BGPsim looks for "./bgpsim.conf". The format of the configuration file is described below. BGPsim also has an interactive (Cisco Systems router-like) interface: telnet to port 5674 on the machine running BGPsim. </P>
<B><U><P>NOTE:</B></U> <U> </U>BGPsim does not include mandatory attributes by default. You will need to explicitly include a nexthop, origin, and apsath attribute in your BGPsim configuration<U>. Also note that </U>BGPSim does not prepend its own AS by default.</P>
<H3> <A NAME="_Toc451331959">Sample Configuration File</A></H3>
<P>A sample BGPsim configuration file is shown below.</P>
<PRE>
network-list 1
range 10.0.0.0/8 11.0.0.0
stability 10 jitter 4
map 1
!
route-map 1
set nexthop 198.108.60.8
set aspath 185 123 23 23 12
set origin igp
!
network-list 2
range 192.32.0.0/24 192.32.255.0
stability 9 jitter 3
change 12 jitter 4
route-map 2 3
!
route-map 2
set next-hop 198.108.60.244
set as-path 185 123 23 23 12
set origin igp
set community 56:123
set dpa as 56 121
set local-preference 23
!
route-map 3
set as-path 185 100 10 102
set origin igp
set community 100:345
set dpa as 3 23
set local-preference 83
!
router bgp 185
neighbor 198.108.60.244 remote-as 65
neighbor 198.108.60.112 remote-as 165</PRE>
<P> </P>
<P>This file describes two simulation processes, as defined by network-list 1 and 2, which changes routes to two BGP peers (AS 65 and AS165). </P>
<P>The first simulation process, network-list 1, changes routes (10.0.0.0/8 and 11.0.0.0/8) as defined in range every 10 seconds. This simulates an announcement of the routes first, and then a withdrawal after 10 seconds. Ten seconds after the withdraw, the next announcement is propagated. Thus the announcements and withdraws are repeated every 10 seconds. These routes have attributes defined in route-map 1: nexthop is 198.108.60.8 and aspath is a sequence of 123 23 23 12. </P>
<P>The second network list describes simulation of the range of routes from 192.32.0.0/24 to 192.32.255.0/24 (i.e. 192.32.1.0/24, 192.32.2.0/24, etc.) All of these routes have an initial aspath of (123 23 23 12), a next-hop of 198.108.60.244, and others as defined in route-map 2. These attributes change every 12 seconds among route-maps 2 and 3. </P>
<P>The peers (AS 65 and AS165) receive routing updates originated by these two simulation processes. </P>
<H3><A NAME="_Toc451331960">Configuration Commands</A></H3>
<P>For information about the <B>uii, debug, </B>and<B> access-list </B>configuration commands, see Chapter 2, "Getting Started." In addition to the MRTd configuration commands, the following are available in BGPsim to simulate routing changes: </P>
<B><FONT SIZE=2><P>network-list <number></P><DIR>
</B><P>Defines a network-list with <number>. This definition behaves like a routing process which generates routing changes within a range defined by range subcommand by an interval defined by stability subcommand, changing route attributes as specified by change and route-map subcommands.</P></DIR>
</FONT><P>Options include:</P><DIR>
<DIR>
<B><FONT SIZE=2><P>range <start prefix> <end prefix></P><DIR>
<DIR>
</B><P>Defines a range to announce and withdraw, starting with <start prefix> up to <end prefix> (inclusive). The range is along classful boundaries.</P></DIR>
</DIR>
<B><P>stability <interval number of seconds> </B>[<B>jitter <jitter number></B>]</P><DIR>
<DIR>
<P>Defines an interval <number> in second to change routes. Routes are announced first and then withdrawn after the interval. Thus, with the interval, announce and withdraw <B>repeat</B>. Jitter adds/subtracts a random number of seconds between 0 and <jitter number> to the interval.</P></DIR>
</DIR>
<B><P>change <interval umber of seconds> </B>[<B>jitter <jitter number></B>] </P><DIR>
<DIR>
<P>Defines an interval <number> in second to change attributes of routes being announced. route-map subcommand defines a sequence. Jitter adds/subtracts a random <number> of seconds from the timer.</P></DIR>
</DIR>
<B><P>map <number> ...</P><DIR>
<DIR>
</B><P>Defines a sequence of route-maps to be used. The next route-mapis adopted after the interval defined in change subcommand. At the end of list, the first route-map is adopted as a next. The first route-map behaves as a default, that is, this is always adopted before adopting other route-maps.</P></DIR>
</DIR>
<B><P>file <filename> ...</P><DIR>
<DIR>
</B><P>Loads routes from routing table dump file <filename> rather than using a range of addresses. </P></DIR>
</DIR>
</DIR>
</DIR>
</FONT><P>BGPSim also adds several commands to bgp router commands:</P>
<B><FONT SIZE=2><P>neighbor <peer address> stability <seconds></P><DIR>
<DIR>
<DIR>
<DIR>
</B><P>Define stability for TCP peering session with this peer.</P></DIR>
</DIR>
</DIR>
</DIR>
</FONT><H3><A NAME="_Toc451331961">Interactive Interface Commands</A></H3>
<P>The BGPsim interactive interface supports the following commands in addition to MRTd interactive interface commands: </P>
<B><FONT SIZE=2><P>show simulation </P>
<P>stop simulation</P>
<P>start simulation</P>
</B></FONT><H2><A NAME="_Toc409238196"><A NAME="_Toc409241007"></H2>
<H2><A NAME="_Toc451331962">5. SBGP</A></A></A></H2>
<P><A NAME="sbgp">SBGP is a simple BGP4 speaker and listener. SBGP does not apply policy to routes, nor does it maintain a routing information base (RIB) of routes it has previously learned. Rather, SBGP provides a mechanism for monitoring routing information sent from a peer, and for injecting routing information into a peering session. </P>
<H3><A NAME="_Toc451331963">Synopsis</A></H3>
<B><P>sbgp [-av] [-i binary_data_in_file] [-o binary_data_out_file] [-l log_file] [-f config_file] [-c port] [-d port] [my AS] [peer_IP peer_AS]... </P>
</B><H3><A NAME="_Toc451331964">Options</A></H3>
<B><FONT SIZE=2><P>-a </P><DIR>
</B><P>Accept peering BGP connection from all peers. </P></DIR>
<B><P>-v </P><DIR>
</B><P>Turn on verbose logging to standard output. </P></DIR>
<B><P>-i binary_data_in_file </P><DIR>
</B><P>Inject routes from this file into every peering session. Use the file name 'stdin' to read input from standard in. </P></DIR>
<B><P>-o binary_data_out_file </P><DIR>
</B><P>Save route updates from all peering sessions into this file. Use the file name 'stdout' to write output to standard out. </P></DIR>
<B><P>-l log_file </P><DIR>
</B><P>Write logging information to this file. By default, SBGP logs to /tmp/bgp.log.pid, where pid is the process ID number of the SBGP process. </P></DIR>
<B><P>-f config_file </P><DIR>
</B><P>Not supported yet </P></DIR>
<B><P>-p </P><DIR>
</B><P>Not supported yet </P></DIR>
<B><P>-c port</P><DIR>
</B><P> Connect to this port on all BGP peers. </P></DIR>
<B><P>-d port</P><DIR>
</B><P> Listen on this port for BGP peering connections. </P></DIR>
<B><P>[my AS] [peer_IP peer_AS]... </P><DIR>
</B><P> Use my AS for my Autonymous System number and open peering sessions with each peer_IP address. </P>
</FONT><H3> </H3></DIR>
<H3><A NAME="_Toc451331965">Description</A></H3>
<P>As arguments, SBGP takes the local AS number followed by the IP address and AS number of the BGP4 peer. Multiple peer IP addresses and AS pairs may be specified. For example:</P>
<B><P>sbgp AS2011 enss131.t3.ans.net AS690</P>
</B><P>attempts to initiate a BGP4 peering session with the old NSFNET backone on enss131. By default, SBGP writes logging information to /tmp/bgp.log. </P>
<P>The following command directs tracing information to stdout (the -v option) and will save MRT messages containing the contents of BPG4 update packets to /tmp/data (the -o option).</P>
<B><P>sbgp -vo data AS2011 enss131.t3.ans.net AS690</P>
</B><H4>Note that the remote peer must be configured to accept a BGP4 peering session from the machine on which SBGP is running. </H4>
<P>The following command will inject routes stored in the binary MRT message file data into the peering sessions with enss131:</P>
<B><P>sbgp -vi data AS185 enss131.t3.and.net AS690</P>
</B><DL>
<DT><A NAME="route_btoa"></DT>
</DL>
<H2><A NAME="_Toc409238197"><A NAME="_Toc409241008"></H2>
<H2><A NAME="_Toc451331966">6. ROUTE_BTOA</A></A></A></H2>
<P>ROUTE_BTOA converts binary MRT messages to ASCII. By default, the program writes human-readable ASCII descriptions of MRT message streams or files to standard out. Binary MRT messages may be generated by programs such as SBGP and MRTd for monitoring, research, and statistics collection purposes. In this release of MRT, route_btoa supports the parsing of BGP, BGP+ and RIPng packets.</P>
<P>Route_btoa includes a Perl version of the program. In general, the compiled version is probably more robust and up-to-date than the Perl code. </P>
<H3><A NAME="_Toc451331967">Synopsis</A></H3>
<H4>route_btoa [-m] [-i input_binary_file] </H4>
<H3><A NAME="_Toc451331968">Options</A></H3>
<B><FONT SIZE=2><P>-i binary_data_in_file </P><DIR>
</B><P>Read routes from this file binary MRT file. Using a file name of 'stdin' will read input from standard in. </P></DIR>
<B><P>-m </P><DIR>
</B><P>Create machine-parseable output. </P></DIR>
</FONT><H3><A NAME="_Toc451331969">Description</A></H3>
<P>The following command writes a formatted, ASCII description of BGP4 update packets from a peering session with the NSFNET backbone to standard output: </P>
<B><P>sbgp -bo stdout | route_btoa -i stdin</P>
</B><P>Below is an example of the output produced by route_btoa. Most of the fields should be self-explanatory.</P><DIR>
<DIR>
<CODE><P>> /statistics/bin/route_btoa2 -i /cache/mae-east/bgp.980114.21:30 </P></DIR>
</DIR>
<P>TIME: 01/14/98 21:30:00</P>
<P>TYPE: BGP/UPDATE</P>
<P>TO: AS2885 192.41.177.169</P>
<P>FROM: 4.0.0.10 AS1</P>
<P>ASPATH: 1</P>
<P>ORIGIN: IGP </P>
<P>NEXT_HOP: 192.41.177.2</P>
<P>MULTIEXIT: 1546</P>
<P>ANNOUNCE:</P>
<P> 140.249.0.0 </P>
<P> </P>
<P>TIME: 01/14/98 21:30:01</P>
<P>TYPE: BGP/UPDATE</P>
<P>TO: AS2885 192.41.177.169</P>
<P>FROM: 144.228.107.1 AS1239</P>
<P>ASPATH: 1239 6453 5769</P>
<P>ORIGIN: IGP </P>
<P>NEXT_HOP: 192.41.177.241</P>
<P>MULTIEXIT: 91</P>
<P>ANNOUNCE:</P>
</CODE><P>Route_BtoA also supports the generation of machine-readable output. This mode generates output that is easily parsed by awk or Perl scripts for statistics calculations. Note that "<B>-m</B>" mode does not preserve information about packet boundaries. The format for each line of the machine-readable output for BGP4 and BGP4+ packets is:</P><DIR>
<DIR>
<DIR>
<DIR>
<DIR>
<DIR>
<DIR>
<DIR>
<DIR>
<DIR>
<DIR>
<DIR>
<DIR>
<DIR>
<DIR>
<DIR>
<B><P>Protocol</B> | <B>Time</B> | <B>Type</B> | <B>PeerIP</B> | <B>PeerAS</B> | <B>Prefix | <update dependant information></P></DIR>
</DIR>
</DIR>
</DIR>
</DIR>
</DIR>
</DIR>
</DIR>
</DIR>
</DIR>
</DIR>
</DIR>
</DIR>
</DIR>
</DIR>
</DIR>
</B><P>Where <B>protocol</B> is BGP, or BGP4. The <B>time</B> is number of seconds since epoch when the packet was recorded. The <B>type</B> is A for announcement, or W for withdrawal. <B>PeerIP</B> and <B>PeerAS</B> are the IP address and AS number of the BGP peer from which we received the update. <B>Prefix</B> is the route prefix described in the update.</P>
<P>For BGP announcements, update-dependant information contains:</P>
<B><P>ASPATH</B> | <B>Origin</B> | <B>NextHop</B> | <B>Local_Pref</B> | <B>MED | Community</P>
</B><P>Where <B>ASPATH</B> is the autonomous system path of the update. <B>Origin</B> is IGP, EGP, or Unknown. And <B>local_pref</B>, <B>MED</B> and <B>Community</B> are as the names imply. Below is an example of route_btoa machine output of MRTd-collected BGP packets:</P><DIR>
<DIR>
<CODE><P>BGP|884831400|A|4.0.0.10|1|140.249.0.0/16|1|IGP|192.41.177.2|0|1546</P>
<P>BGP|884831401|A|144.228.107.1|1239|205.113.0.0/16|1239 6453</P>
<P>5769|IGP|192.41.177.241|0|91</P></DIR>
</DIR>
<P>BGP|884831402|W|204.70.7.53|3561|198.163.111.0/24</P>
<P>BGP|884831402|W|204.70.7.53|3561|199.212.219.0/24</P>
<P>BGP|884831402|W|204.70.7.53|3561|199.235.123.0/24</P><DIR>
<DIR>
<P>BGP|884831402|W|204.70.7.53|3561|204.112.101.0/24</P>
<P>BGP|884831402|W|204.70.7.53|3561|204.112.232.0/24</P>
<P>BGP|884831402|W|204.70.7.53|3561|205.189.8.0/24</P>
<P>BGP|884831402|W|204.70.7.53|3561|205.211.8.0/24</P>
</CODE><P> </P></DIR>
</DIR>
<H2><A NAME="route_atob"></H2>
<H2><A NAME="_Toc409238198"><A NAME="_Toc409241009"><A NAME="_Toc451331970">7. ROUTE_ATOB</A></A></A></H2>
<P>Route_AtoB converts ASCII descriptions of MRT messages to binary. By default, the program writes binary MRT message streams or files to standard out. </P>
<P>Route_AtoB includes a perl version of the program. In general, the compiled version is probably more robust and up-to-date than the perl code. </P>
<H3><A NAME="_Toc451331971">Synopsis</A></H3>
<H4>route_atob -i ASCII_input_file </H4>
<H3><A NAME="_Toc451331972">Options</A></H3>
<B><DL>
<DT>-i ascii_input_file </DT>
</DL><DIR>
</B><FONT SIZE=2><P>Read ASCII descriptions of MRT messages from this file. Using a file name of 'stdin' will read input from standard in. </P></DIR>
</FONT><H3><A NAME="_Toc451331973">Description</A></H3>
<P>The following command sequence will inject the routes described in in the input file into the BGP peering session with enss131. </P>
<B><CODE><P>route_atob -i /tmp/input | sbgp -i stdin enss131 AS690</CODE> </P>
</B><P>See the output of route_btoa for the grammer required by route_atob. </A></A></A></A></A></P>
<H2><A NAME="_Toc451331974">8. Data Distiller</A></H2>
<P>Data Distiller generates summary reports on the number of routing messages seen at one or more peering points. Data are gathered by passive (i.e. listening only) participation in the BGP peering session. </P>
<H3><A NAME="_Toc451331975">Synopsis</A></H3>
<B><P>datadstl [-f config_file] [-p uii_port] [-v] [-d]</P>
</B><H3><A NAME="_Toc451331976">Options</A></H3>
<B><FONT SIZE=2><P>-d </P><DIR>
</B><P>Run Data Distiller as a daemon. The process detaches from its controlling tty, closes inherited file descriptors, etc. This option overrides the <B>-v</B> option. </P></DIR>
<B><P>-f configuration_file</P><DIR>
</B><P>Read the specified configuration file. If Data Distiller is not running in daemon mode, the default is datadstl.conf in the working directory. If running in daemon mode, the default is datadstl.conf in the root directory. </P></DIR>
<B><P>-p </P><DIR>
</B><P>Specifies the port on which to accept UII telnet connections. (Default: 5680) </P></DIR>
<B><P>-v </P><DIR>
</B><P>Log to stdout. If this option is specified and a log filename is included in the config file, log messages will be sent to stdout until the appropriate line in the config file is read. Note that the <B>-d</B> option overrides the <B>-v</B> option. Running Data Distiller as a daemon requires closing all inherited file descriptors, including stdout/stderr. </P></DIR>
</FONT><H3><A NAME="_Toc451331977">Description</A></H3>
<P>Data Distiller reads raw MRTd data files and cooks them into a variety of periodic reports. These reports are disseminated to the IPMA Java clients using either a web (HTTP) server, or the Dolphin server. </P>
<P>Data may be collected either by Data Distiller, or by a separate MRTd process. The former is the simplest way of running Data Distiller. However, in certain situations, running separate MRTd processes may be desired. You may, for example, wish to limit the load on the machine at the peering point. </P>
<P>If Data Distiller is responsible for data collection, it will need access to low numbered ports so that it can establish a BGP peering session. On most systems, this means root access. </P>
<P>If MRTd is collectiong the data, Data Distiller must be able to access the filesystem to which MRTd is dumping the data. Distributed file systems (such as NFS) work well with Data Distiller. If the data will be in AFS, please be sure to take heed of token expiration issues. </P>
<H3><A NAME="_Toc451331978">Operations</A></H3>
<P>Data Distiller periodically updates its state from the MRTd raw data files. It then generates cooked data. This data can either be stored using the file system, or published to the Dolphin data dissemination server. Any exceptional events (such as the server disconnecting) are logged. Data Distiller can also be configured to log more mundane events, such as processing of the raw data files, or the action of outputting each cooked data file. </P>
<H4>Telnet Interface</H4>
<P>Data Distiller uses the MRT UII facility for its telnet interface, and supports standard MRT commands for remote monitoring and administration. The telnet interface can be disabled through the configuration file. Note that Data Distiller does not look in /etc/services for its UII port number.</P>
<P>Data Distiller also supports remote configuration. Any command that may appear in a configuration file may also be issued via the telnet interface. </P>
<H4>Configuration </H4>
<P>Although Data Distiller can be configured over a telnet connection, it is easier, and more reliable, to do so via the configuration file. Below is a sample. </P>
<P> </P>
<FONT FACE="Courier New" SIZE=2><P>! ASExplorer, FlapGraph, and FlapTableDaily are the currently supported cooked</P>
<P>! data types. Each corresponds to one Java visualization tool.</P>
<P>!</P>
<P>! A command that begin with any of these applies only</P>
<P>! to that data type. All other commands are "global" -- they affect the</P>
<P>! operation of Data Distiller generally.</P>
<P>!</P>
<P>! ---------------------------------------------------------------------------- !</P>
<P>!</P>
<P>! Specify logging.</P>
<P>! format: log <level> [logpath max-length]</P>
<P>! log normal messages to /tmp/latest.log. don't exceed 100K for logfile</P>
<P>debug norm /tmp/latest.log 100000</P>
<P>! also log trace-level messages</P>
<P>debug trace</P>
<P>!</P>
<P>! ---------------------------------------------------------------------------- !</P>
<P>!</P>
<P>! UII Configuration</P>
<P>! which port to listen on?</P>
<P>! format: uii_port <port #></P>
<P>! listen on port 5690</P>
<P>uii_port 5690</P>
<P>! what's the password for access?</P>
<P>! format: password <string></P>
<P>! password is CHANGEME</P>
<P>password CHANGEME</P>
<P>!</P>
<P>! ---------------------------------------------------------------------------- !</P>
<P>!</P>
<P> </P>
<P>! Data Capture</P>
<P>! </P>
<P>! peering -- who do we capture BGP traffic from?</P>
<P>! who are we?</P>
<P>! format: router bgp <local as number></P>
<P>! we are AS -5000 </P>
<P>router bgp -5000</P>
<P>! who do we peer with, and where?</P>
<P>! format: neighbor <ip addr> remote-as <as number></P>
<P>! peer with AS 0 at 192.168.1.1</P>
<P>neighbor 192.168.1.1 remote-as 0</P>
<P>! and AS -1000 at 192.168.5.5</P>
<P>neighbor 192.168.5.5 remote-as -1000</P>
<P>!</P>
<P>! storage -- where do we put the captures, and how often?</P>
<P>! format: dump bgp updates <capture path>/<peering point>/bgp.%y%m%d.%H:%M <interval></P>
<P>! store the captures in /bgpdata/mae-east, and dump the data every 15 minutes</P>
<P>! if you change the format specifier for the date, you'll need to change</P>
<P>! parsename in bgp_db.c</P>
<P>dump bgp updates /bgpdata/mae-east/bgp.%Y%m%d.%H:%M 15m</P>
<P>!</P>
<P>! ---------------------------------------------------------------------------- !</P>
<P>! </P>
<P>! "Global" Configuration (affects all cooked data types)</P>
<P>!</P>
<P>! Tell Data Distiller where to find the datafiles.</P>
<P>! format: database_directory <capture path></P>
<P>! our files are in /bgpdata.</P>
<P>! (this is the same as capture path in "dump bgp updates".)</P>
<P>database_directory /bgpdata</P>
<P>!</P>
<P>! The data files that we read have their starting time as part of the filename.</P>
<P>! Data Distiller needs to know whether the time is in UTC or localtime.</P>
<P>! format: filename_timezone_local {0|1}</P>
<P>! filenames are in localtime</P>
<P>filename_timezone_local 1</P>
<P>!</P>
<P>! How much time is covered by each data file? </P>
<P>! format: file_timespan <interval (in seconds)></P>
<P>! This is the same interval as in "dump bgp updates", except that this must</P>
<P>! be in seconds.</P>
<P>file_timespan 900</P>
<P>!</P>
<P>! If Data Distiller is publishing data frequently (as it is in this sample</P>
<P>! conifguration), then a significant amount of time will be spent reading</P>
<P>! directory information. This can be avoided by using the directory cache.</P>
<P>! Here we indicate how long the cache is considered valid (a value of 0 will,</P>
<P>! of course, effectively disable the cache).</P>
<P>! Be careful not to set this value to more than the bucket size for the</P>
<P>! FlapGraph/FlapTableDaily data (15 minutes), because you may miss updates if</P>
<P>! you do.</P>
<P>! format: dircache_time <time (in seconds)></P>
<P>! invalidate the directory cache info after 5 minutes</P>
<P>dircache_time 300</P>
<P>!</P>
<P>! ---------------------------------------------------------------------------- !</P>
<P>! </P>
<P>! ASExplorer Configuration</P>
<P>!</P>
<P>! In our installation, the BGP data files are placed in directories according to</P>
<P>! the peering point at which they were collected. But the ASExplorer tool</P>
<P>! would like to know which probe machine collected the data. We implement the</P>
<P>! mapping with these configuration commands. This is rather "cosmetic", and</P>
<P>! optional.</P>
<P>! format: ASExplorer probe_name <directory> <probe machine></P>
<P>! files in mae-east directory contain data collected by host rs2.mae-east.rsng.net</P>
<P>ASExplorer probe_name mae-east rs2.mae-east.rsng.net</P>
<P>! files in mae-west have data from rs2.mae-west.rsng.net</P>
<P>ASExplorer probe_name mae-west rs2.mae-west.rsng.net</P>
<P>! files in aads have data from rs2.mae-west.rsng.net</P>
<P>ASExplorer probe_name aads rs2.aads.rsng.net</P>
<P>!</P>
<P>! How often should ASExplorer cooked data be updated?</P>
<P>! format: ASExplorer update_interval <interval (in seconds)></P>
<P>! update ASExplorer data every 60 seconds</P>
<P>ASExplorer update_interval 60</P>
<P>! ASExplorer generates summary information for a sliding window. Here we specify</P>
<P>! the window size.</P>
<P>! format: ASExplorer report_time_range <interval (in seconds)></P>
<P>! gather ASExplorer data over the last 90 minutes</P>
<P>ASExplorer report_time_range 4500</P>
<P>!</P>
<P>! Where do we put the cooked data? There are two possibilities.</P>
<P>! We can either save the data in the filesystem, or we can feed it to</P>
<P>! the Dolphin server. Examples follow.</P>
<P>!</P>
<P>! Output Method?</P>
<P>! format: ASExplorer output_method {dolphin|files}</P>
<P>ASExplorer output_method files</P>
<P>! Method specific configuration: files</P>
<P>! Where to put the output files?</P>
<P>! format: ASExplorer basedir <path></P>
<P>! place the files in /web/stats. as /web implies, this should</P>
<P>! be a directory accessible to your webserver.</P>
<P>ASExplorer basedir /web/stats</P>
<P>! Method specific configuration: dolphin</P>
<P>! What's the hostname of the Dolphin server?</P>
<P>! format: ASExplorer salamander <hostname></P>
<P>! ASExplorer salamander nowhere.nil</P>
<P>! What port is Dolphin listening on?</P>
<P>! format: ASExplorer port <port #></P>
<P>! ASExplorer port 8899</P>
<P>!</P>
<P>! ---------------------------------------------------------------------------- !</P>
<P>! </P>
<P>! FlapGraph Configuration</P>
<P>!</P>
<P>! These commands are analagous to the ones for ASExplorer. See the ASExplorer</P>
<P>! example above for details.</P>
<P>!</P>
<P>FlapGraph update_interval 90</P>
<P>FlapGraph output_method files</P>
<P>FlapGraph basedir /web/stats</P>
<P>!</P>
<P>! </P>
<P>! FlapTableDaily Configuration</P>
<P>!</P>
<P>FlapTableDaily update_interval 105</P>
<P>FlapTableDaily output_method files</P>
<P>FlapTableDaily basedir /web/stats</P>
</FONT><P>!</P>
<FONT FACE="Courier New" SIZE=2><P>! ---------------------------------------------------------------------------- !</P>
<P>! </P>
<P>! Miscellaneous Configuration</P>
<P>!</P>
<P>! FlapGraph and FlapTableDaily data contain summary information about acitivity</P>
<P>! since midnight. This can be done based on localtime, or UTC. We recommend</P>
<P>! using UTC. (Note: this option is not independently configurable. The command</P>
<P>! can be issued referencing either FlapGraph or FlapTableDaily, but will affect</P>
<P>! both.) This option is primarily for backward compatibility with some internal</P>
<P>! tools. You should use UTC.</P>
<P>! format: {FlapGraph|FlapTableDaily} use_localtime {0|1}</P>
<P>! publish FlapGraph (and FlapTableDaily) data in UTC</P>
<P>FlapGraph use_localtime 0</P>
<P>! equivalenty, we could have used FlapTableDaily use_localtime 0</P>
<P>!</P>
</FONT><H4>Configuring Client Tools </H4>
<P>In <basedir>, create a file called .conf. It should have the following information: </P>
<FONT FACE="Courier New" SIZE=2><P>Transport=HTTP</P>
<P>ToolListInternicURL=http://www.merit.edu/ipma/ipmaconf/</P>
<P>ASExplorer.RefreshInterval=<"ASExplorer update_interval" value></P>
<P>FlapGraph.RefreshInterval=<"FlapGraph update_interval" value></P>
<P>FlapTable.RefreshInterval=<"FlapTable update_interval" value></P>
</FONT><P>The first two lines should be copied exactly. In the last three lines, substitute the apporpriate values from the Data Distiller configuration file. </P>
<H4> </H4>
<H4>File Directories</H4>
<P>The various directories might be arranged as follows: </P>
<P> </P>
<P> </P>
<P><IMG SRC="Image11.gif" WIDTH=697 HEIGHT=418></P></BODY>
</HTML>
|