skitter determines the unidirectional IP path from its location (defined as the source) to one or more destinations. A unidirectional IP path is defined as the IP devices traversed by IP packets traveling from a source to a destination at a single point in time. Because skitter does not use any source routing, the network layer will always determine the path of a skitter probe.
Note that a point in time is nonsensical for skitter measurements in most cases. It is not possible to obtain a path measurement instantaneously without simultaneous access to all IP devices along the path. The IP record-route option would allow some accuracy for the first 9 hops of any path, but is not reliable in many cases: some routers drop packets with options; some ignore the options and reply without them; still others reply with garbage. Hence skitter uses a method similar to that of traceroute, probing each hop along the path by incrementing time-to-live (TTL) in the IP header. The method for determining how skitter labels IP hops is as follows: the Nth hop in an IP path is the device that sends an ICMP TIMEXCEED message in response to a packet with a TTL of N.
Kernel Modification for Timestamp Accuracy
To improve the accuracy of its round-trip time measurements, CAIDA added a kernel module to the FreeBSD Unix operating system on which skitter runs. While this timestamping may be insufficient for one-way measurements or detailed correlation across skitter platforms, it does provide an indication of performance variations across the infrastructure. By comparing data across various sources, analysts can identify points of congestion and performance degradation or areas for improvements in the infrastructure.
Short Individual Path Polls and Overall Poll Cycles
In order to collect data showing changes in paths over a period of time. skitter must track the path changes from one poll to the next. The span of time taken to determine a particular path should be short, since we're interested in a snapshot-like measurement of the path. At the same time, skitter needs to determine paths to many destinations in a short period of time, which requires polling paths in parallel. These two requirements are in conflict, and require that we compromise.
skitter Packets: Format and Rateskitter packets have a simple singular format. Look here for details.
The user should have coarse control of skitter's output packet rate, while input packet rate is under the influence of network vagaries. In operational use thus far, the amortized input rate seems reasonably close to the outbound rate, but the reality of the system is that input packet rates can be very bursty and synchronization can develop. We do not aggravate congestion collapse since we do not become more aggressive in the face of loss, and we do not allow a high input packet rate to increase our output, but we do not yet use the input packet rate and an estimator to control output packet rate. Skitter's parallel polling of paths in its breadth-first search will exacerbate the synchronization effect, as will low RTTs, low RTT variance, and high fanout on outbound paths.