home.html 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. {% extends "base.html" %}
  2. {% block content %}
  3. <h2>What is this?</h2>
  4. <p>This tool allows you to find "good" peerings for dn42, by measuring the
  5. latency from various points in the network towards you.</p>
  6. <h2>How does it work?</h2>
  7. <p>
  8. <ol>
  9. <li>you enter your (Internet) IP address or hostname</li>
  10. <li>various routers participating in dn42 will ping you over the Internet</li>
  11. <li>after a short while, you get back all the latency results</li>
  12. <li>you can then peer with people close to you (low latency)</li>
  13. </ol>
  14. </p>
  15. <p>
  16. <form action="/submit" method="POST">
  17. Target:
  18. <input type="text" name="target" />
  19. <input type="submit" value="Launch" />
  20. </form>
  21. </p>
  22. <h2>Why look at latency?</h2>
  23. <h3>The problem of peering quality</h3>
  24. <p>Determining what is a "good" peering in dn42 is quite difficult: many
  25. criteria come into play, such as latency, jitter, capacity, packet loss,
  26. stability, or even the price your ISP will pay (peering vs. transit).</p>
  27. <p>On the other hand, a "bad" peering is easy to picture: if you are in
  28. Paris and peer with somebody in Australia, then you might end up doing
  29. Paris → Australia → Hamburg if you want to send packets to Germany. This
  30. does not feel very efficient. People usually solve this problem with
  31. policy routing (local preference and path-prepending). But it's still a
  32. good idea to build good links and avoid terrible links.</p>
  33. <p>Of course, you need to build long-distance links sometimes. Otherwise,
  34. dn42 would be made of small, independent islands. This tool can also help
  35. you to choose the best long-distance links.</p>
  36. <h3>Looking at latency</h3>
  37. <p>Latency is actually a good enough indicator of "distance". For
  38. instance, two machines located at the same ISP are expected to have low
  39. latency towards each other. On the other hand, a latency above 200 ms
  40. usually indicates that the two machines are quite far away geographically
  41. (but not always).</p>
  42. <p>Additionally, latency can vary widely for long-distance links,
  43. depending on the quality of transit and peering agreements between ISPs.
  44. For instance, to reach a specific destination in Singapore from France, we
  45. have the following latency as of September 2014:</p>
  46. <table>
  47. <tr>
  48. <th>ISP</th>
  49. <th>Latency</th>
  50. </tr>
  51. <tr>
  52. <td>Online</td>
  53. <td>177 ms</td>
  54. </tr>
  55. <tr>
  56. <td>tetaneutral.net</td>
  57. <td>264 ms</td>
  58. </tr>
  59. <tr>
  60. <td>SFR</td>
  61. <td>267 ms</td>
  62. </tr>
  63. <tr>
  64. <td>Free</td>
  65. <td>365 ms</td>
  66. </tr>
  67. <tr>
  68. <td>OVH</td>
  69. <td>402 ms</td>
  70. </tr>
  71. </table>
  72. <p>Of course, this is only a snapshot, and reflects the situation for a
  73. specific source and destination. Still, the latency more than doubles
  74. depending on the ISP, which in this case strongly favours a peering with
  75. somebody hosted by Online instead of OVH.</p>
  76. <h3>Situations this tool aims to solve</h3>
  77. <p>To sum up, this tool can help in several situations:
  78. <ol>
  79. <li>Detecting when somebody is in the same datacenter as you, so that
  80. it's mostly free to peer</li>
  81. <li>When you are far from everybody, find the peering with the lowest
  82. latency</li>
  83. </ol>
  84. </p>
  85. <p>By building low-latency links in dn42, it's actually possible to have
  86. lower latency in dn42 than over the Internet, for the same destination
  87. (it's called <em>detour routing</em>).</p>
  88. <h2>I want to participate!</h2>
  89. <p>This tool relies on a pool of workers, all over dn42, that process
  90. requests, perform ping measurements, and report back the results. You're
  91. welcome to add your own machines to the pool!</p>
  92. <h3>Registering a worker</h3>
  93. <p>You need to separately register each computer that will provide
  94. measurements. Manual validation is performed for each registration.</p>
  95. <p>The contact information is free-form, and will be shown to users when
  96. they launch measurements. This allows users to contact you if they want
  97. to peer.</p>
  98. <form action="/create/participant" method="POST">
  99. Machine name (required): <input type="text" name="name" /><br />
  100. Mean of contacting you, like IRC nick, mail address, ... (optional): <input type="text" name="contact" /><br />
  101. Country code where this machine is located (optional): <input type="text" name="country" /><br />
  102. Free-form comment, like tunnel technology (GRE, OpenVPN, ...), or things like &quot;very shitty DSL&quot; (optional): <input type="text" name="comment" /><br />
  103. <input type="submit" value="Register" />
  104. </form>
  105. <h3>Measurement script</h3>
  106. <p>The measurement script can be accessed <a href="/script.sh">here</a>.
  107. You need to edit the UUID.</p>
  108. <h2>Known issues</h2>
  109. <p>
  110. Current limitations:
  111. <ol>
  112. <li>Only the average RTT is measured, we should include other simple
  113. statistics (jitter, min/max RTT, packet loss)</li>
  114. <li>The API is not documented (just look at the code)</li>
  115. </ol>
  116. Unavoidable facts that cannot be fixed:
  117. <ol>
  118. <li>Latency measured today might be meaningless tomorrow, as routing
  119. on the Internet is always changing</li>
  120. <li>Low latency does not guarantee high throughput</li>
  121. </ol>
  122. </p>
  123. <h2>Source code</h2>
  124. <p>The source code is available <a href="https://code.ffdn.org/zorun/peerfinder">here</a></p>
  125. <h2>Privacy</h2>
  126. <p>Privacy for users of this service:
  127. <ol>
  128. <li>Only participants in the measurement pool have access to your IP
  129. address (so that they can ping you, obviously)</li>
  130. <li>New participants (see below) are moderated manually</li>
  131. <li>Results have an unpredicatble URL. Of course, if you share the
  132. link to the results, anybody can see them.</li>
  133. </ol>
  134. Privacy for participants in the measurement pool:
  135. <ol>
  136. <li>Users only get access to the machine name and contact information
  137. you provided</li>
  138. <li>In particular, users don't get access to your IP address (of
  139. course, users can always use tcpdump to see where do the ping requests
  140. come from)</lI>
  141. </ol>
  142. </p>
  143. {% endblock %}