Check out the new USENIX Web site. next up previous
Next: Implementation Up: Listening to TCP flows Previous: Dealing with False Positives

Detailed Algorithm

Figure 6: Pseudo-code for the probing algorithm.
\begin{figure}\small
\begin{quote}
{\em procedure} {\bf LISTEN(P,T,N)}
\begin{al...
...ENDIF
}\ENDIF
}\ENDIF
\end{algorithmic}\end{quote}
\vspace{-0.15in}
\end{figure}

Figure 6 presents the pseudo-code for the listen algorithm. The algorithm takes a conservative approach towards determining whether a route is verifiable. Since false positive tests can impact the performance of a few flows, the algorithm uses the constant $ C_h$ and $ C_l$ to trade off between when to test for false positives. When the test is not applied, we use the fraction of complete connections as the only metric to determine whether the route works. The setting of $ C_h, C_l$ depends on the popularity of the prefixes. Firstly, we apply the false positive tests only for popular prefixes i.e., $ C_l=0$ for non-popular prefixes. For a popular prefix, we choose a conservative estimate of $ C_h$ (closer to $ 1$) i.e., a large fraction of the connections have to complete in order to conclude that the route is verifiable. On the other hand, if we observe that a reasonable fraction of combination of incomplete connections, we apply the false positive test to $ 2$ sampled complete connections. The user has choice in tuning $ C_l$ based on the total number of false positive tests that need to be performed. For non-popular prefixes, the statistical sample of connections is small. For such prefixes, we set the value of $ C_h$ to be small.


next up previous
Next: Implementation Up: Listening to TCP flows Previous: Dealing with False Positives
116 2004-02-12