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
|
<pre>Network Working Group B. Noble
Request for Comments: 2041 Carnegie Mellon University
Category: Informational G. Nguyen
University of California, Berkeley
M. Satyanarayanan
Carnegie Mellon University
R. Katz
University of California, Berkeley
October 1996
<span class="h1">Mobile Network Tracing</span>
Status of this Memo
This memo provides information for the Internet community. This memo
does not specify an Internet standard of any kind. Distribution of
this memo is unlimited.
Abstract
Mobile networks are both poorly understood and difficult to
experiment with. This RFC argues that mobile network tracing
provides both tools to improve our understanding of wireless
channels, as well as to build realistic, repeatable testbeds for
mobile software and systems. The RFC is a status report on our work
tracing mobile networks. Our goal is to begin discussion on a
standard format for mobile network tracing as well as a testbed for
mobile systems research. We present our format for collecting mobile
network traces, and tools to produce from such traces analytical
models of mobile network behavior.
We also describe a set of tools to provide network modulation based
on collected traces. Modulation allows the emulation of wireless
channel latency, bandwidth, loss, and error rates on private, wired
networks. This allows system designers to test systems in a
realistic yet repeatable manner.
<span class="grey">Noble, et. al. Informational [Page 1]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-2" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
<span class="h2"><a class="selflink" id="section-1" href="#section-1">1</a>. Introduction</span>
How does one accurately capture and reproduce the observed behavior
of a network? This is an especially challenging problem in mobile
computing because the network quality experienced by a mobile host
can vary dramatically over time and space. Neither long-term average
measures nor simple analytical models can capture the variations in
bandwidth, latency, and signal degradation observed by such a host.
In this RFC, we describe a solution based on network tracing. Our
solution consists of two phases: trace recording and trace
modulation.
In the trace recording phase, an experimenter with an instrumented
mobile host physically traverses a path of interest to him. During
the traversal, packets from a known workload are generated from a
static host. The mobile host records observations of both packets
received from the known workload as well as the device
characteristics during the workload. At the end of the traversal,
the list of observations represents an accurate trace of the observed
network behavior for this traversal. By performing multiple
traversals of the same path, and by using different workloads, one
can obtain a trace family that collectively characterizes network
quality on that path.
In the trace modulation phase, mobile system and application software
is subjected to the network behavior observed in a recorded trace.
The mobile software is run on a LAN-attached host whose kernel is
modified to read a file containing the trace (possibly postprocessed
for efficiency,) and to delay, drop or otherwise degrade packets in
accordance with the behavior described by the trace. The mobile
software thus experiences network quality indistinguishable from that
recorded in the trace. It is important to note that trace modulation
is fully transparent to mobile software --- no source or binary
changes have to be made.
Trace-based approaches have proved to be of great value in areas such
as file system design [<a href="#ref-2" title="and Patterson">2</a>, <a href="#ref-10" title="and Satyanarayanan">10</a>, <a href="#ref-11" title="and Ousterhout">11</a>] and computer architecture. [1, 5,
13] Similarly, we anticipate that network tracing will prove valuable
in many aspects of mobile system design and implementation. For
example, detailed analyses of traces can provide insights into the
behavior of mobile networks and validate predictive models. As
another example, it can play an important role in stress testing and
debugging by providing the opportunity to reproduce the network
conditions under which a bug was originally uncovered. As a third
example, it enables a system under development to be subjected to
network conditions observed in distant real-life environments. As a
final example, a set of traces can be used as a benchmark family for
evaluating and comparing the adaptive capabilities of alternative
<span class="grey">Noble, et. al. Informational [Page 2]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-3" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
mobile system designs.
Our goal in writing this RFC is to encourage the development of a
widely-accepted standard format for network traces. Such
standardization will allow traces to be easily shared. It will also
foster the development and widespread use of trace-based benchmarks.
While wireless mobile networks are the primary motivation for this
work, we have made every effort to ensure that our work is applicable
to other types of networks. For example, the trace format and some
of the tools may be valuable in analyzing and modeling ATM networks.
The rest of this RFC is organized as follows. We begin by examining
the properties of wireless networks and substantiating the claim that
it is difficult to model such networks. Next, in <a href="#section-3">Section 3</a>, we
describe the factors that should be taken into account in designing a
trace format. We present the details of a proposed trace format
standard in <a href="#section-4">Section 4</a>. <a href="#section-5">Section 5</a> presents a set of tools that we
have built for the collection, analysis and replay of traces.
Finally, we conclude with a discussion of related and future work.
<span class="h2"><a class="selflink" id="section-2" href="#section-2">2</a>. Modeling Wireless Networks</span>
Wireless channels are particularly complex to model, because of their
inherent dependence on the physical properties of radio waves (such
as reflections from "hard" surfaces, diffraction around corners, and
scattering caused by small objects) and the site specific geometries
in which the channel is formed. They are usually modeled as a time-
and distance-varying signal strength, capturing the statistical
nature of the interaction among reflected radio waves. The signal
strength can vary by several orders of magnitude (+ or - 20-30 dB)
within a short distance. While there have been many efforts to
obtain general models of radio propagation inside buildings and over
the wide area, these efforts have yielded inherently inaccurate
models that can vary from actual measurements by an order of
magnitude or more.
Signal-to-noise ratio, or SNR, is a measure of the received signal
quality. If the SNR is too low, the received signal will not be
detected at the receiver, yielding bit errors and packet losses. But
SNR is not the only effect that can lead to losses. Another is
inter-symbol interference caused by delay spread, that is, the
delayed arrival of an earlier transmitted symbol that took a
circuitous propagation path to arrive at the receiver, thereby
(partially) canceling out the current symbol. Yet another problem is
doppler shift, which causes frequency shifts in the arrived signal
due to relative velocities of the transmitter and the receiver,
thereby complicating the successful reception of the signal. If
coherent reception is being used, receiver synchronization can be
<span class="grey">Noble, et. al. Informational [Page 3]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-4" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
lost.
More empirically, it has been observed that wireless channels adhere
to a two state error model. In other words, channels are usually
well behaved but occasionally go into a bad state in which many burst
errors occur within a small time interval.
Developers of network protocols and mobility algorithms must
experiment with realistic channel parameters. It is highly desirable
that the wireless network be modeled in a thoroughly reproducible
fashion. This would allow an algorithm and its variations to be
evaluated in a controlled and repeatable way. Yet the above
discussion makes it clear that whether analytical models are used or
even actual experimentation with the network itself, the results will
be either inaccurate or unlikely to be reproducible. A trace-based
approach alleviates these problems.
<span class="h2"><a class="selflink" id="section-3" href="#section-3">3</a>. Desirable Trace Format Properties</span>
In designing our trace format, we have been guided by three
principles. First, the format should be extensible. Second, it
should be self-describing. Third, traces should be easy to manage.
This section describes how each of these principles has affected our
design.
Although we have found several interesting uses for network traces,
it is certain that more will evolve over time. As the traces are
used in new ways, it may be necessary to add new data to the trace
format. Rather than force the trace format to be redesigned, we have
structured the format to be extensible. There is a built-in
mechanism to add to the kinds of data that can be recorded in network
traces.
This extensibility is of little use if the tool set needs to change
as the trace format is extended. Recognizing this, we have made the
format -- particularly the extensible portions -- self-describing.
Thus, old versions of tools can continue to work with extended
traces, if perhaps in a less than optimal way.
In our experience with other tracing systems, management of trace
files is often difficult at best. Common problems include the need
to manage multiple trace files as a unit, not easily being able to
extract the salient features of large trace files, and having to use
dedicated trace management tools to perform even the simplest tasks.
To help cope with file management, we have designed the the traces to
be split or merged easily. To reduce dependence on specialized
tools, we've chosen to store some descriptive information as ASCII
strings, allowing minimal access to the standard UNIX tool suite.
<span class="grey">Noble, et. al. Informational [Page 4]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-5" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
<span class="h2"><a class="selflink" id="section-4" href="#section-4">4</a>. Trace Format</span>
This section describes the format for network traces. We begin by
presenting the basic abstractions that are key to the trace format:
the record, and the track, a collection of related records. We then
describe the records at the beginning and end of a trace, the header
and footer. The bulk of the section describes the three kinds of
record tracks: packet, device, and general. These also make up the
bulk of the actual trace. We conclude the section with a discussion
of two special purpose records: the annotation and the trace data
loss records.
<span class="h3"><a class="selflink" id="section-4.1" href="#section-4.1">4.1</a>. Basic Abstractions</span>
<span class="h4"><a class="selflink" id="section-4.1.1" href="#section-4.1.1">4.1.1</a>. Records</span>
A record is the smallest unit of trace data. There are several
different types of records, each of which is discussed in Sections
4.2 through 4.7. All of the records share several features in
common; these features are described here.
Records are composed of fields, which are stored in network order.
Most of the fields in our records are word-sized. Although this may
be wasteful in space, we chose to leave room to grow and keep trace
management simple.
The first field in each record is a magic word, a random 32 bit
pattern that both identifies the record's type and lends some
confidence that the record is well formed. Many record types have
both required and optional fields; thus they can be of variable size.
We place every record's size in its second field. By comparing the
size of a record to the known constraints for the record's type, we
can gain further confidence that a record is well-formed. This basic
record structure is illustrated in Figure 1.
All records also contain a two-word timestamp. This timestamp can
take one of two formats: timeval or timespec. Only one of the two
formats is used in any given trace, and the format is specified at
the start of a trace file. The first word in either format is the
number of seconds that have elapsed since midnight, January 1, 1970.
The second word is the additional fractions of a second. In the
timeval format, these fractions are expressed in microseconds, in the
same way that many current operating systems express time. In the
timespec format, these fractions are expressed in nanoseconds, the
POSIX time standard. We've chosen these two values since they are
convenient, cover most current and anticipated systems' notions of
time, and offer appropriate granularity for measuring network events.
<span class="grey">Noble, et. al. Informational [Page 5]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-6" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
+------------------+
| Magic Number |
| Size of Record |
+------------------+
| Required Fields |
| ... |
+------------------+
| Optional Fields |
| ... |
+------------------+
Figure 1: Record format
<span class="h4"><a class="selflink" id="section-4.1.2" href="#section-4.1.2">4.1.2</a>. Tracks</span>
Many of the record types have both fixed, required fields, as well as
a set of optional fields. It is these options that provide
extensibility to our trace format. However, to provide a self-
describing trace, we need some compact way of determining which
optional fields are present in a given record. To do this, we group
related sets of packets into tracks. For example, a set of records
that captured packet activity for a single protocol between two
machines might be put together into a track. A track is a header
followed by some number of related records; the header completely
describes the format of the individual records. Records from
separate tracks can be interleaved with one another, so long as the
header for each individual track appears before any of the track's
records. Figure 2 shows an example of how records from different
tracks might be interleaved.
Track headers describe their records' content through property lists.
An entry in a property list is a two-element tuple consisting of a
name and a value. The name is a word which identifies the property
defined by this entry. Some of these properties are measured only
once for a track, for example, the address of a one-hop router in a
track recording packets from that router. Others are measured once
per record in that track, such as the signal strength of a device
which changes over time. The former, which we call header-only
properties, have their most significant name bit set. The value
field of a header-only property holds the measured value of the
property. Otherwise, the value field holds the number of words used
in each of the track's records.
<span class="grey">Noble, et. al. Informational [Page 6]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-7" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
+----------++----------++----------++----------++----------+
| Track #1 || Track #1 || Track #2 || Track #1 || Track #2 |
| Header || Entry || Header || Entry || Entry |
+----------++----------++----------++----------++----------+
Figure 2: Interleaved track records
Those properties measured in each record in the track are grouped
together in a value list at the end of each such record. They appear
in the same order that was specified in the track header's property
list so that tools can properly attribute data. Thus, even if a tool
doesn't know what property a particular name represents, it can
identify which parts of a trace record are measuring that property,
and ignore them.
<span class="grey">Noble, et. al. Informational [Page 7]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-8" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
<span class="h3"><a class="selflink" id="section-4.2" href="#section-4.2">4.2</a>. Trace Headers and Footers</span>
Trace files begin with a trace header, and end with a trace footer.
The formats of these appear in Figure 3. The header specifies
whether this trace was collected on a single machine, or was merged
from several other traces. In the former case, the IP address and
host name of the machine are recorded. In the latter, the IP address
is taken from the family of Class E address, which are invalid. We
use a family of invalid addresses so that even if we cannot identify
a number of hosts participating in the trace we can still distinguish
records from distinct hosts.
#define TR_DATESZ 32
#define TR_NAMESZ 64
struct tr_header_t {
u_int32_t h_magic;
u_int32_t h_size;
u_int32_t h_time_fmt; /* usec or nsec */
struct tr_time_t h_ts; /* starting time */
char h_date[TR_DATESZ]; /* Date collected */
char h_agent[TR_NAMESZ]; /* DNS name */
u_int32_t h_agent_ip;
char h_desc[0]; /* variable size */
};
struct tr_end_t {
u_int32_t e_magic;
u_int32_t e_size;
struct tr_time_t e_ts; /* end time */
char e_date[32]; /* Date end written */
};
Figure 3: Trace header and footer records
The trace header also specifies which time stamp format is used in
the trace, and the time at which the trace begins. There is a
variable-length description that is a string meant to provide details
of how the trace was collected. The trace footer contains only the
time at which the trace ended; it serves primarily as a marker to
show the trace is complete.
Unlike other kinds of records in the trace format, the header and
footer records have several ASCII fields. This is to allow standard
utilities some access to the contents of the trace, without resorting
to specialized tools.
<span class="grey">Noble, et. al. Informational [Page 8]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-9" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
<span class="h3"><a class="selflink" id="section-4.3" href="#section-4.3">4.3</a>. Packet Tracks</span>
Measuring packet activity is the main focus of the network tracing
project. Packet activity is recorded in tracks, with a packet header
and a set of packet entries. A single track is meant to capture the
activity of a single protocol, traffic from a single router, or some
other subset of the total traffic seen by a machine. The required
portions of packet headers and entries are presented in Figure 4.
Packet track headers identify which host generated the trace records
for that track, as well as the time at which the track began. It
records the device on which these packets are received or sent, and
the protocol used to ship the packet; these allow interpretation of
device-specific or protocol-specific options. The header concludes
with the property list for the track.
struct tr_pkt_hdr_t {
u_int32_t ph_magic;
u_int32_t ph_size;
u_int32_t ph_defines; /* magic number defined */
struct tr_time_t ph_ts;
u_int32_t ph_ip; /* host generating stream */
u_int32_t ph_dev_type; /* device collected from */
u_int32_t ph_protocol; /* protocol */
struct tr_prop_lst_t ph_plist[0]; /* variable size */
};
struct tr_pkt_ent_t {
u_int32_t pe_magic;
u_int32_t pe_size;
struct tr_time_t pe_ts;
u_int32_t pe_psize; /* packet size */
u_int32_t pe_vlist[0]; /* variable size */
};
Figure 4: Packet header and entry records
A packet entry is generated for every traced packet. It contains the
size of the traced packet, the time at which the packet was sent or
received, and the list of property measurements as specified in the
track header.
The options we have defined to date are in Table 1. Several of these
have played an important role in our early experiments. ADDR_PEER
identifies the senders of traffic during the experiment. We can
determine network performance using either PKT_SENTTIME for one-way
traffic between two hosts with closely synchronized clocks, or round
<span class="grey">Noble, et. al. Informational [Page 9]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-10" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
trip ICMP ECHO traffic and the ICMP_PINGTIME option. Tracking
PKT_SEQUENCE numbers sheds light on both loss rates and patterns.
<a href="#section-5">Section 5</a> discusses how these measurements are used.
<span class="h3"><a class="selflink" id="section-4.4" href="#section-4.4">4.4</a>. Device Tracks</span>
Our trace format records details of the devices which carry network
traffic. To date, we've found this most useful for correlating lost
packets with various signal parameters provided by wireless devices.
The required portions of device header and entry records appear in
Figure 5, and are quite simple. Device track headers identify the
host generating the track's records, the time at which the
observation starts, and the type of device that is being traced.
Each entry contains the time of the observation, and the list of
optional characteristics.
+---------------+-----------------------------------------------+
| ADDR_PEER | Address of peer host |
| ADDR_LINK | Address of one-hop router |
| BS_LOC_X | One-hop router's X coordinate (header only) |
| BS_LOC_Y | One-hop router's Y coordinate (header only) |
| PKT_SEQUENCE | Sequence number of packet |
| PKT_SENTTIME | Time packet was sent |
| PKT_HOPS | Number of hops packet took |
| SOCK_PORTS | Sending and receiving ports |
| IP_PROTO | Protocol number of an IP packet |
| ICMP_PINGTIME | Roundtrip time of an ICMP ECHO/REPLY pair |
| ICMP_KIND | Type and code of an ICMP packet |
| ICMP_ID | The id field of an ICMP packet |
| PROTO_FLAGS | Protocol-specific flags |
| PROTO_ERRLIST | Protocol-specific status/error words |
+---------------+-----------------------------------------------+
Table 1: Current optional fields for packet entries
<span class="grey">Noble, et. al. Informational [Page 10]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-11" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
struct tr_dev_hdr_t {
u_int32_t dh_magic;
u_int32_t dh_size;
u_int32_t dh_defines; /* Magic number defined */
struct tr_time_t dh_ts;
u_int32_t dh_ip; /* host generating stream */
u_int32_t dh_dev_type; /* device described */
struct tr_prop_lst_t dh_plist[0]; /* Variable size */
};
struct tr_dev_ent_t {
u_int32_t de_magic;
u_int32_t de_size;
struct tr_time_t de_ts;
u_int32_t de_vlist[0]; /* Variable size */
};
Figure 5: Device header and entry records
These optional characteristics, listed in Table 2, are mostly
concerned with the signal parameters of the wireless interfaces we
have available. Interpreting these parameters is heavily device-
dependent. We give examples of how we've used device observations in
<a href="#section-5">Section 5</a>.
+-----------------+--------------------------------------------------+
| DEV_ID | Major and minor number of device (header only) |
| DEV_STATUS | Device specific status registers |
| WVLN_SIGTONOISE | Signal to noise ratio reported by WaveLAN |
| WVLN_SIGQUALITY | Signal quality reported by WaveLAN |
| WVLN_SILENCELVL | WaveLAN silence level |
+-----------------+--------------------------------------------------+
Table 2: Current optional fields for packet entries
<span class="h3"><a class="selflink" id="section-4.5" href="#section-4.5">4.5</a>. Miscellaneous Tracks</span>
We use miscellaneous, or general, tracks to record things that don't
fit clearly in either the packet or device model. At the moment,
physical location of a mobile host is the only attribute tracked in
general trace records. The required portion of the general header
and entry records is shown in Figure 6, the two optional properties
are in Table 3. In addition to the property list, general headers
have only the IP address of the host generating the record and the
time at which observations began. General entries have only a
timestamp, and the optional fields.
<span class="grey">Noble, et. al. Informational [Page 11]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-12" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
<span class="h3"><a class="selflink" id="section-4.6" href="#section-4.6">4.6</a>. Annotations</span>
An experimenter may occasionally want to embed arbitrary descriptive
text into a trace. We include annotation records to provide for
this. Such records are not part of a track; they stand alone. The
structure of an annotation record is shown in Figure 7. Annotations
include the time at which the annotation was inserted in the trace,
the host which inserted the annotation, and the variable-sized text
of the annotation itself.
struct tr_gen_hdr_t {
u_int32_t gh_magic;
u_int32_t gh_size;
u_int32_t gh_defines;
struct tr_time_t gh_ts;
u_int32_t gh_ip;
struct tr_prop_lst_t gh_plist[0]; /* Variable size */
};
struct tr_gen_ent_t {
u_int32_t ge_magic;
u_int32_t ge_size;
struct tr_time_t ge_ts;
u_int32_t ge_vlist[0]; /* Variable size */
};
Figure 6: General header and entry records
+------------+--------------------------------------------+
| MH_LOC_X | Mobile host's X coordinate (map-relative) |
| MH_LOC_Y | Mobile host's Y coordinate (map-relative) |
| MH_LOC_LAT | Mobile host's GPS latitude |
| MH_LOC_LON | Mobile host's GPS longitude |
+------------+--------------------------------------------+
Table 3: Current optional fields for general entries
struct tr_annote_t {
u_int32_t a_magic;
u_int32_t a_size;
struct tr_time_t a_ts;
u_int32_t a_ip;
char a_text[0]; /* variable size */
};
Figure 7: Annotation records
<span class="grey">Noble, et. al. Informational [Page 12]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-13" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
<span class="h3"><a class="selflink" id="section-4.7" href="#section-4.7">4.7</a>. Lost Trace Data</span>
It is possible that, during collection, some trace records may be
lost due to trace buffer overflow or other reasons. Rather than
throw such traces away, or worse, ignoring the lost data, we've
included a loss record to count the types of other records which are
lost in the course of trace collection. Loss records are shown in
Figure 8.
struct tr_loss_t {
u_int32_t l_magic;
u_int32_t l_size;
struct tr_time_t l_ts;
u_int32_t l_ip;
u_int32_t l_pkthdr;
u_int32_t l_pktent;
u_int32_t l_devhdr;
u_int32_t l_devent;
u_int32_t l_annote;
};
Figure 8: Loss records
<span class="h2"><a class="selflink" id="section-5" href="#section-5">5</a>. Software Components</span>
In this section, we describe the set of tools that have been built to
date for mobile network tracing. We believe many of these tools are
widely applicable to network tracing tasks, but some have particular
application to mobile network tracing. We begin with an overview of
the tools, their applicability, and the platforms on which they are
currently supported, as well as those they are being ported to. This
information is summarized in Table 4.
We have made every effort to minimize dependencies of our software on
anything other than protocol and device specifications. As a result,
we expect ports to other BSD-derived systems to be straightforward;
ports to other UNIX systems may be more complicated, but feasible.
There are three categories into which our tracing tools can be
placed: trace collection, trace modulation, and trace analysis.
Trace collection tools are used for generating new traces. They
record information about the general networking facilities, as well
as data specific to mobile situations: mobile host location, base
station location, and wireless device characteristics. These tools
are currently supported on BSDI, and are being ported to NetBSD. We
describe these tools in <a href="#section-5.1">Section 5.1</a>.
<span class="grey">Noble, et. al. Informational [Page 13]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-14" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
Trace modulation tools emulate the performance of a traced wireless
network on a private wired network. The trace modulation tools,
discussed in <a href="#section-5.2">Section 5.2</a>, are currently supported on NetBSD
platforms. They are geared toward replaying low speed/quality
networks on faster and more reliable ones, and are thus most
applicable to reproducing mobile environments.
In <a href="#section-5.3">Section 5.3</a>, we conclude with a set of trace processing and
analysis tools, which are currently supported on both NetBSD and BSDI
platforms. Our analyses to date have focused on properties of
wireless networks, and are most directly applicable to mobile traces.
The processing tools, however, are of general utility.
+--------------+--------------+--------------+
| Collection | Modulation | Analysis |
+-----------+--------------+--------------+--------------+
| NetBSD | In Progress | Supported | Supported |
| BSDI | Supported | Planned | Supported |
+-----------+--------------+--------------+--------------+
This table summarizes the currently supported platforms for the tracing
tool suites, and the platforms to which ports are underway.
Table 4: Tool Availability
<span class="h3"><a class="selflink" id="section-5.1" href="#section-5.1">5.1</a>. Trace Collection Tools</span>
The network trace collection facility comprises two key components:
the trace agent and the trace collector. They are shown in Figure 9.
The trace agent resides in the kernel where it can obtain data that
is either expensive to obtain or inaccessible from the user level.
The agent collects and buffers data in kernel memory; the user-level
trace collector periodically extracts data from this kernel buffer
and writes it to disk. The buffer amortizes the fixed costs of data
transfer across a large number of records, minimizing the impact of
data transfer on system performance. The trace collector retrieves
data through a pseudo-device, ensuring that only a single -- and
therefore complete -- trace file is being generated from a single
experiment. To provide simplicity and efficiency, the collector does
not interpret extracted data; it is instead processed off-line by the
post-processing and analysis tools described in Sections <a href="#section-5.2">5.2</a> and <a href="#section-5.3">5.3</a>.
There are three sorts of data collected by the tracing tools: network
traffic, network device characteristics, and mobile host location.
The first two are collected in much the same way; we describe the
methodology in <a href="#section-5.1.1">Section 5.1.1</a>. The last is collected in two novel
ways. These collection methods are addressed in <a href="#section-5.1.2">Section 5.1.2</a>.
<span class="grey">Noble, et. al. Informational [Page 14]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-15" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
+-----------+ write to disk
| Trace | ==============>
| Collector |
+-----------+
A
========================================|===== kernel boundary
+-----------------+ |
| Transport Layer | |
|-----------------| +------------------+
| Network Layer |------------>| Trace +------+ |
|-----------------| | Agent |buffer| |
| NI | NI | NI |------------>| +------+ |
+-----------------+ +------------------+
This figure illustrates the components of trace collection. The NI's
are network interfaces.
Figure 9: Components of trace collection
<span class="h4"><a class="selflink" id="section-5.1.1" href="#section-5.1.1">5.1.1</a>. Traffic and Device Collection</span>
The trace agent exports a set of function calls for traffic and
device data collection. Traffic data is collected on a per-packet
basis. This is done via a function called from device drivers with
the packet and a device identifier as arguments. For each packet,
the trace record contains the source and destination address options.
Since our trace format assembles related packets into tracks, common
information, such as the destination address, is recorded in the
track header to reduce the record size for each packet entry. We
also record the size of each packet.
Information beyond packet size and address information is typically
protocol-dependent. For transport protocols such as UDP and TCP, for
example, we record the source and destination port numbers; TCP
packet records also contain the sequence number. For ICMP packets,
we record their type, code and additional type-dependent data. As
explained in <a href="#section-5.2.3">Section 5.2.3</a>, we record the identifier, sequence number
and time stamp for ICMP ECHOREPLY packets.
Before appending the record to the trace buffer, we check to see if
it is the first record in a track. If so, we create a new packet
track header, and write it to the buffer prior the packet entry.
Our trace collection facility provides similar mechanisms to record
device-specific data such as signal quality, signal level, and noise
level. Hooks to these facilities can be easily added to the device
drivers to invoke these tracing mechanisms. The extensible and
self-describing features of our trace format allow us to capture a
wide variety of data specific to particular network interfaces.
<span class="grey">Noble, et. al. Informational [Page 15]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-16" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
For wireless network devices, we record several signal quality
measurements that the interfaces provide. Although some interfaces,
such as NCR's WaveLAN, can supply this of information for every
packet received, most devices average their measurements over a
longer period of time. As a result, we only trace these measurements
periodically. It is up to the device drivers to determine the
frequency at which data is reported to the trace agent.
When devices support it, we also trace status and error events. The
types of errors, such as CRC or buffer overflow, allow us to
determine causes for some observed packet losses. For example, we
can attribute loss to either the wireless channel or the network
interface.
<span class="h4"><a class="selflink" id="section-5.1.2" href="#section-5.1.2">5.1.2</a>. Location Tracing</span>
At first thought, recording the position of a mobile host seems
straightforward. It can be approximated by recording the base
station (BS) with which the mobile host is communicating. However,
due to the large coverage area provided by most radio interfaces,
this information provides a loose approximation at best. In
commercial deployments, we may not be able to reliably record the
base station with which a mobile host communicates. This section
outlines our collection strategy for location information in both
outdoor and indoor environments.
The solution that we have considered for wide-area, outdoor
environments makes use of the Global Positioning System (GPS). The
longitude and latitude information provided by the GPS device is
recorded in a general track.
Indoor environments require a different approach because the
satellite signals cannot reach a GPS device inside a building. We
considered deploying an infrared network similar to the Active Badge
[<a href="#ref-14" title="and Gibbons">14</a>] or the ParcTab [<a href="#ref-12" title="and Want">12</a>]; however, this significant addition to the
wireless infrastructure is not an option for most research groups.
As an alternative, we have developed a graphical tool that displays
the image of a building map and expects the user to "click" their
location as they move; the coordinates on the map are recorded in one
or more general tracks. The header of such tracks can also record
the coordinates of the base stations if they are known.
An extension can be easily added to this tool to permit multiple
maps. As the user requests that a new map be loaded into the
graphical tracing tool, a new location track is created along with an
annotation record that captures the file name of that image.
Locations of new base stations can be recorded in this new track
<span class="grey">Noble, et. al. Informational [Page 16]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-17" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
header. Each location track should represent a different physical
and wireless environment.
<span class="h3"><a class="selflink" id="section-5.2" href="#section-5.2">5.2</a>. Trace Modulation Tools</span>
A key tool we have built around our trace format is PaM, the Packet
Modulator. The idea behind PaM is to take traces that were collected
by a mobile host and distill them into modulation traces. These
modulation traces capture the networking environment seen by the
traced host, and are used by a PaM kernel to delay, drop, or corrupt
incoming and outgoing packets. With PaM, we've built a testbed that
can repeatably, reliably mimic live systems under certain mobile
scenarios.
There are three main components to PaM. First, we've built a kernel
capable of delaying, dropping, and corrupting packets to match the
characteristics of some observed network. Second, we've defined a
modulation trace format to describe how such a kernel should modulate
packets. Third, we've built a tool to generate modulation traces
from certain classes of raw traces collected by mobile hosts.
<span class="h4"><a class="selflink" id="section-5.2.1" href="#section-5.2.1">5.2.1</a>. Packet Modulation</span>
The PaM modulation tool has been placed in the kernel between the IP
layer and the underlying interfaces. The tool intercepts incoming
and outgoing packets, and may choose to drop it, corrupt it, or delay
it. Dropping an incoming or outgoing packet is easy, simply don't
forward it along. Similarly, we can corrupt a packet by flipping
some bits in the packet before forwarding it.
Correctly delaying a packet is slightly more complicated. We model
the delay a packet experiences as the time it takes the sender to put
the packet onto the network interface plus the time it takes for the
last byte to propagate to the receiver. The former, the transmission
time, is the size of the packet divided by the available bandwidth;
the latter is latency.
Our approach at delay modulation is simple -- we assume that the
actual network over which packets travel is much faster and of better
quality than the one we are trying to emulate, and can thus ignore
it. We delay the packet according to our latency and bandwidth
targets, and then decide whether to drop or corrupt it. We take care
to ensure that packet modulation does not unduly penalize other
system activity, using the internal system clock to schedule packets.
Since this clock is at a large granularity compared to delay
resolution, we try to keep the average error in scheduling to a
minimum, rather than scheduling each packet at exactly the right
time.
<span class="grey">Noble, et. al. Informational [Page 17]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-18" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
<span class="h4"><a class="selflink" id="section-5.2.2" href="#section-5.2.2">5.2.2</a>. Modulation Traces</span>
To tell the PaM kernel how the modulation parameters change over
time, we provide it with a series of modulation-trace entries. Each
of these entries sets loss and corruption percentages, as well as
network latency and inter-byte time, which is 1/bandwidth. These
entries are stored in a trace file, the format of which is much
simpler than record-format traces, and is designed for efficiency in
playback. The format of modulation traces is shown in Figure 10.
struct tr_rep_hdr_t {
u_int32_t rh_magic;
u_int32_t rh_size;
u_int32_t rh_time_fmt; /* nsec or used */
struct tr_time_t rh_ts;
char rh_date[TR_DATESZ];
char rh_agent[TR_NAMESZ];
u_int32_t rh_ip;
u_int32_t rh_ibt_ticks; /* units/sec, ibt */
u_int32_t rh_lat_ticks; /* units/sec, lat */
u_int32_t rh_loss_max; /* max loss rate */
u_int32_t rh_crpt_max; /* max corrupt rate */
char rh_desc[0]; /* variable size */
};
struct tr_rep_ent_t {
u_int32_t re_magic;
struct tr_time_t re_dur; /* duration of entry */
u_int32_t re_lat; /* latency */
u_int32_t re_ibt; /* inter-byte time */
u_int32_t re_loss; /* loss rate */
u_int32_t re_crpt; /* corrupt rate */
};
Figure 10: Modulation trace format
Modulation traces begin with a header that is much like that found in
record-format trace headers. Modulation headers additionally carry
the units in which latency and inter-byte time are expressed, and the
maximum values for loss and corruption rates. Individual entries
contain the length of time for which the entry applies as well as the
latency, inter-byte time, loss rate, and corruption rate.
<span class="grey">Noble, et. al. Informational [Page 18]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-19" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
<span class="h4"><a class="selflink" id="section-5.2.3" href="#section-5.2.3">5.2.3</a>. Trace Transformation</span>
How can we generate these descriptive modulation traces from the
recorded observational traces described in <a href="#section-4">Section 4</a>? To ensure a
high-quality modulation trace, we limit ourselves to a very narrow
set of source traces. As our experience with modulation traces is
limited, we use a simple but tunable algorithm to generate them.
Our basic strategy for determining latency and bandwidth is tied
closely to our model of packet delays: delay is equal to
transmission time plus latency. We further assume that packets which
traversed the network near one another in time experienced the same
latency and bandwidth during transit. Given this, we look for two
packets of different size that were sent close to one another along
the same path; from the transit times and sizes of these packets, we
can determine the near-instantaneous bandwidth and latency of the
end-to-end path covered by those packets. If traced packet traffic
contains sequence numbers, loss rates are fairly easy to calculate.
Likewise, if the protocol is capable of marking corrupt packets,
corruption information can be stored and then extracted from recorded
traces.
Using timestamped packet observations to derive network latency and
bandwidth requires very accurate timing. Unfortunately, the laptops
we have on hand have clocks that drift non-negligibly. We have
chosen not to use protocols such as NTP [<a href="#ref-9" title="D. L. Improved Algorithms for Synchronizing Computer Network Clocks. IEEE/ACM Transactions on Networking 3">9</a>] for two reasons. First,
they produce network traffic above and beyond that in the known
traced workload. Second, and perhaps more importantly, they can
cause the clock to speed up or slow down during adjustment. Such
clock movements can play havoc with careful measurement.
As a result, we can only depend on the timestamps of a single machine
to determine packet transit times. So, we use the ICMP ECHO service
to provide workloads on traced machines; the ECHO request is
timestamped on it's way out, and the corresponding ECHOREPLY is
traced. We have modified the ping program to alternate between small
and large packets. Traces that capture such altered ping traffic can
then be subject to our transformation tool.
The tool itself uses a simple sliding window scheme to generate
modulation entries. For each window position in the recorded trace,
we determine the loss rate, and the average latency and bandwidth
experienced by pairs of ICMP ECHO packets. The size and granularity
of the sliding window are parameters of the transformation; as we
gain experience both in analysis and modulation of wireless traces,
we expect to be able to recommend good window sizes.
<span class="grey">Noble, et. al. Informational [Page 19]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-20" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
Unfortunately, our wireless devices do not report corrupt packets;
they are dropped by the hardware without operating system
notification. However, our modulation system will also coerce any
such corruptions to an increased loss rate, duplicating the behavior
in the original network.
<span class="h3"><a class="selflink" id="section-5.3" href="#section-5.3">5.3</a>. Trace Analysis Tools</span>
A trace is only as useful as its processing tools. The requirements
for such tools tools include robustness, flexibility, and
portability. Having an extensible trace format places additional
emphasis on the ability to work with future versions. To this end,
we provide a general processing library as a framework for users to
easily develop customized processing tools; this library is designed
to provide both high portability and good performance.
In this section, we first present the trace library. We then
describe a set of tools for simple post-processing and preparing the
trace for further analyses. We conclude with a brief description of
our analysis tools that are applied to this minimally processed data.
<span class="h4"><a class="selflink" id="section-5.3.1" href="#section-5.3.1">5.3.1</a>. Trace Library</span>
The trace library provides an interface that applications can use to
simplify interaction with network traces, including functions to
read, write, and print trace records. The trace reading and writing
functions manage byte swapping as well as optional integrity checking
of the trace as it is read or written. The library employs a
buffering strategy that is optimized to trace I/O. Trace printing
facilities are provided for both debugging and parsing purposes.
<span class="h4"><a class="selflink" id="section-5.3.2" href="#section-5.3.2">5.3.2</a>. Processing Tools</span>
The processing tools are generally the simplest set of tools we have
built around the trace format. By far the most complicated one is
the modulation-trace transformation tool described in <a href="#section-5.2.3">Section 5.2.3</a>;
the remainder are quite simple in comparison. The first such tool is
a parser that prints the content of an entire trace. With the trace
library, it is less than a single page of C code. For each record,
it prints the known data fields along with their textual names,
followed by all the optional properties and values.
Since many analysis tasks tend to work with records of the same type,
an enhanced version of the parser can split the trace data by tracks
into many files, one per track. Each line of the output text files
contains a time stamp followed by the integer values of all the
optional data in a track entry; in this form traces are amenable to
further analysis be scripts written in an interpreted language such
<span class="grey">Noble, et. al. Informational [Page 20]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-21" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
as perl.
We have developed a small suite of tools providing simple functions
such as listing all the track headers and changing the trace
description as they have been needed. With the trace library, each
such tool is trivial to construct.
<span class="h4"><a class="selflink" id="section-5.3.3" href="#section-5.3.3">5.3.3</a>. Analysis Tools</span>
Analysis tools depend greatly on the kind of information an
experimenter wants to extract from the trace; our tools show our own
biases in experimentation. Most analyses derive common statistical
descriptions of traces, or establish some correlation between the
trace data sets.
As early users of the trace format and collection tools, we have
developed a few analysis tools to study the behavior of the wireless
networks at our disposal. We have been particularly interested in
loss characteristics of wireless channels and their relation to
signal quality and the position of the mobile host. In this section,
we briefly present some of these tools to hint at the kind of
experimentation possible with our trace format.
Loss characteristics are among the most interesting aspects of
wireless networks, and certainly among the least well understood. To
shed light on this area, we have created tools to extract the loss
information from collected traces; in addition to calculating the
standard parameters such as the packet loss rate, the tool also
derives transitional probabilities for a two-state error model.
This has proven to be a simple yet powerful model for capturing the
burstiness observed in wireless loss rates due to fading signals. To
help visualize the channel behavior in the presence of mobility, our
tool can replay the movement of the mobile host while plotting the
loss rate as it changes with time. It also allows us to zoom in the
locations along the path and obtain detailed statistics over
arbitrary time intervals.
Our traces can be further analyzed to understand the relationship
between channel behavior and the signal quality. For wireless
devices like the NCR WaveLAN, we can easily obtain measurements of
signal quality, signal strength, and noise level. We have developed
a simple statistical tool to test the correlation between measured
signal and the loss characteristics. Variations of this test are
also possible using different combinations of the three signal
measurements and the movement of the host.
<span class="grey">Noble, et. al. Informational [Page 21]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-22" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
The question of just how mobile such mobile hosts are can also be
investigated through our traces. Position data are provided by
traces that either involved GPS or user-supplied positions with our
trace collection tools. This data is valuable for comparing and
validating various mobility prediction algorithms. Given adequate
network infrastructure and good signal measurements, we can determine
the mobile location within a region that is significantly smaller
than the cell size. We are developing a tool to combine position
information and signal measurement from many traces to identify the
"signal quality" signature for different regions inside a building.
Once this signature database is completed and validated, it can be
used to generate position information for other traces that contain
only the signal quality information.
<span class="h2"><a class="selflink" id="section-6" href="#section-6">6</a>. Related Work</span>
The previous work most relevant to mobile network tracing falls into
two camps. The first, chiefly exemplified by tcpdump [<a href="#ref-7" title="and McCanne">7</a>] and the BSD
Packet Filter, or BPF [<a href="#ref-8" title="and Jacobson">8</a>], collect network traffic data. The second,
notably Delayline [<a href="#ref-6" title="and Parrington">6</a>], and the later Probe/Fault Injection Tool [<a href="#ref-4" title="and Jahanian">4</a>],
and the University of Lancaster's netowrk emulator [<a href="#ref-3" title="and Friday">3</a>], provide
network modulation similar to PaM.
There are many systems that record network packet traffic; the de
facto standard is tcpdump, which works in concert with a packet
filter such as BPF. The packet filter is given a small piece of code
that describes packets of interest, and the first several bytes of
each packet found to be interesting is copied to a buffer for tcpdump
to consume. This architecture is efficient, flexible, and has
rightly found great favor with the networking community.
However, tcpdump cpatures only traffic data. It records neither
information concerning mobile networking devices nor mobile host
location. Rather than adding seperate software components to a host
running tcpdump to capture this additional data, we have chosen to
follow an integrative approach to ease trace file administration. We
have kept the lessons of tcpdump and BPF to heart; namely copying
only the information necessary, and transferring data up to user
level in batches. It may well pay to investigate either
incorporating device and location information directly into BPF, or
taking the flexible filtering mechanism of BPF and including it in
our trace collection software. For the moment, we do not know
exactly what data we will need to explore the properties of mobile
networks, and therefore do not exclude any data.
There are three notable systems that provide packet modulation
similar to PaM. The earliest such work is Delayline, a system
designed to emulate wide-area networks atop local-area ones; a goal
<span class="grey">Noble, et. al. Informational [Page 22]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-23" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
similar to PaM's. The most striking difference between Delayline and
PaM is that Delayline's emulation takes place entirely at the user-
level, and requires applications to be recompiled against a library
emulating the BSD socket system and library calls. While this is a
portable approach that works well in the absence of kernel-level
source access, it has the disadvantage that not all network traffic
passes through the emulation layer; such traffic may have a profound
impact on the performance of the final system. Delayline also
differs from PaM in that the emulated network uses a single set of
parameters for each emulated connection; performance remains fairly
constant, and cannot change much over time.
The Lancaster network emulator was designed explicitly to model
mobile networks. Rather than providing per-host modulation, it uses
a single, central server through which all network traffic from
instrumented applications passes. While this system also does not
capture all traffic into and out of a particular host, it does allow
modulation based on multiple hosts sharing a single emulated medium.
There is a mechanism to change the parameters of emulation between
hosts, though it is fairly cumbersome. The system uses a
configuration file that can be changed and re-read while the system
is running.
The system closest in spirit to PaM is the Probe/Fault Injection
Tool. This system's design philosophy allows an arbitrary protocol
layer -- including device drivers -- to be encapsulated by a layer
below to modulate existing traffic, and a layer above to generate
test traffic. The parameters of modulation are provided by a script
in an interpreted language, presently Tcl, providing considerable
flexibility. However, there is no mechanism to synthesize such
scripts -- they must be explicitly designed. Furthermore, the use of
an interpreted language such as Tcl limits the use of PFI to user-
level implementations of network drivers, and may have performance
implications.
<span class="h2"><a class="selflink" id="section-7" href="#section-7">7</a>. Future Work</span>
This work is very much in its infancy; we have only begun to explore
the possible uses for mobile network traces. We have uncovered
several areas of further work.
The trace format as it stands is very IP-centric. While one could
imagine using unknown IP addresses for non-IP hosts, while using
header-only properties to encode other addressing schemes, this is
cumbersome at best. We are looking into ways to more conveniently
encode other addressing schemes, but are content to focus on IP
networks for the moment.
<span class="grey">Noble, et. al. Informational [Page 23]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-24" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
Two obvious questions concerning wireless media are the following.
How does a group of machines perform when sharing the same bandwidth?
How asymmetric is the performance of real-world wireless channels?
While we do have tools for merging traces taken from multiple hosts
into a single trace file, we've not yet begun to examine such
multiple-host scenarios in depth. We are also looking into
instrumenting wireless base stations as well as end-point hosts.
Much of our planned work involves the PaM testbed. First and
foremost, many wireless channels are known to be asymmetric;
splitting the replay trace into incoming and outgoing modulation
entries is of paramount importance. We would like to extend PaM to
handle multiple emulated interfaces as well as applying different
modulation parameters to packets from or to different destinations.
One could also imagine tracing performance from several different
networking environments, and switching between such environments
under application control. For example, consider a set of traces
showing radio performance at various altitudes; an airplane simulator
in a dive would switch from high-altitude modulation traces to low-
altitude ones.
Finally, we are anxious to begin exploring the properties of real-
world mobile networks, and subjecting our own mobile system designs
to PaM to see how they perform. We hope others can make use of our
tools to do the same.
Acknowledgements
The authors wish to thank Dave Johnson, who provided early pointers
to related work and helped us immeasurably in RFC formatting. We
also wish to thank those who offered comments on early drafts of the
document: Mike Davis, Barbara Denny, Mark Lewis, and Hui Zhang.
Finally, we would like to thank Bruce Maggs and Chris Hobbs, our
first customers!
This research was supported by the Air Force Materiel Command (AFMC)
and ARPA under contract numbers F196828-93-C-0193 and DAAB07-95-C-
D154, and the State of California MICRO Program. Additional support
was provided by AT&T, Hughes Aircraft, IBM Corp., Intel Corp., and
Metricom. The views and conclusions contained here are those of the
authors and should not be interpreted as necessarily representing the
official policies or endorsements, either express or implied, of
AFMC, ARPA, AT&T, Hughes, IBM, Intel, Metricom, Carnegie Mellon
University, the University of California, the State of California, or
the U.S. Government.
<span class="grey">Noble, et. al. Informational [Page 24]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-25" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
Security Considerations
This RFC raises no security considerations.
Authors' Addresses
Questions about this document can be directed to the authors:
Brian D. Noble
Computer Science Department
Carnegie Mellon University
5000 Forbes Avenue
Pittsburgh, PA 15213-3891
Phone: +1-412-268-7399
Fax: +1-412-268-5576
EMail: bnoble@cs.cmu.edu
Giao T. Nguyen
Room 473 Soda Hall #1776 (Research Office)
University of California, Berkeley
Berkeley, CA 94720-1776
Phone: +1-510-642-8919
Fax: +1-510-642-5775
EMail: gnguyen@cs.berkeley.edu
Mahadev Satyanarayanan
Computer Science Department
Carnegie Mellon University
5000 Forbes Avenue
Pittsburgh, PA 15213-3891
Phone: +1-412-268-3743
Fax: +1-412-268-5576
EMail: satya@cs.cmu.edu
Randy H. Katz
Room 231 Soda Hall #1770 (Administrative Office)
University of California, Berkeley
Berkeley, CA 94720-1770
Phone: +1-510-642-0253
Fax: +1-510-642-2845
EMail: randy@cs.berkeley.edu
<span class="grey">Noble, et. al. Informational [Page 25]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-26" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
References
[<a id="ref-1">1</a>] Chen, J. B., and Bershad, B. N. The Impact of Operating System
Structure on Memory System Performance. In Proceedings of the
14th ACM Symposium on Operating System Principles (Asheville,
NC, December 1993).
[<a id="ref-2">2</a>] Dahlin, M., Mather, C., Wang, R., Anderson, T., and Patterson,
D. A Quantitative Analysis of Cache Policies for Scalable
Network File Systems. In Proceedings of the 1994 ACM SIGMETRICS
Conference on Measurement and Modeling of Computer Systems
(Nashville, TN, May 1994).
[<a id="ref-3">3</a>] Davies, N., Blair, G. S., Cheverst, K., and Friday, A. A
Network Emulator to Support the Development of Adaptive
Applications. In Proceedings of the 2nd USENIX Symposium on
Mobile and Location Independent Computing (April 10-11 1995).
[<a id="ref-4">4</a>] Dawson, S., and Jahanian, F. Probing and Fault Injection of
Dependable Distributed Protocols. The Computer Jouranl 38, 4
(1995).
[<a id="ref-5">5</a>] Gloy, N., Young, C., Chen, J. B., and Smith, M. D. An Analysis
of Dynamic Branch Prediction Schemes on System Workloads. In
The Proceedings of the 23rd Annual International Symposium on
Computer Architecture (May 1996).
[<a id="ref-6">6</a>] Ingham, D. B., and Parrington, G. D. Delayline: A Wide-Area
Network Emulation Tool. Computing Systems 7, 3 (1994).
[<a id="ref-7">7</a>] Jacobson, V., Leres, C., and McCanne, S. The Tcpdump Manual
Page. Lawrence Berkeley Laboratory, Berkeley, CA.
[<a id="ref-8">8</a>] McCanne, S., and Jacobson, V. The BSD Packet Filter: A New
Architecture for User-level Packet Capture. In Proceedings of
the 1993 Winter USENIX Technical Conference (San Deigo, CA,
January 1993).
[<a id="ref-9">9</a>] Mills, D. L. Improved Algorithms for Synchronizing Computer
Network Clocks. IEEE/ACM Transactions on Networking 3, 3 (June
1995).
[<a id="ref-10">10</a>] Mummert, L. B., Ebling, M. R., and Satyanarayanan, M.
Exploiting Weak Connectivity for Mobile File Access. In
Proceedings of the 15th Symposium on Operating System Prinicples
(Copper Mountain, CO, December 1995).
<span class="grey">Noble, et. al. Informational [Page 26]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-27" ></span>
<span class="grey"><a href="./rfc2041">RFC 2041</a> Mobile Network Tracing October 1996</span>
[<a id="ref-11">11</a>] Nelson, M. N., Welch, B. B., and Ousterhout, J. K. Caching in
the Sprite Network File System. ACM Transactions on Computer
Systems 6, 1 (February 1988).
[<a id="ref-12">12</a>] Schilit, B., Adams, N., Gold, R., Tso, M., and Want, R. The
PARCTAB Mobile Computing System. In Proceedings of the 4th IEEE
Workshop on Workstation Operating Systems (Napa, CA, October
1993), pp. 34--39.
[<a id="ref-13">13</a>] Uhlig, R., Nagle, D., Stanley, T., Mudge, T., Sechrest, S., and
Brown, R. Design Tradeoffs for Software-Managed TLBs. ACM
Transactions on Computer Systems 12, 3 (August 1994).
[<a id="ref-14">14</a>] Want, R., Hopper, A., Falcao, V., and Gibbons, J. The Active
Badge Location System. ACM Transactions on Information Systems
10, 1 (January 1992), 91--102.
Noble, et. al. Informational [Page 27]
</pre>
|