Re: Making Gnutella "IPv6-Ready"

Michael Green <[email protected]> Thu, 23 Jun 2011 19:41:33 +0100
Newsgroups gmane.network.gnutella.devel
Message-ID <1308854493.28707.48.camel@michael-Presario-C700-Notebook-PC>
--jUvv9pe2V0IoBfSUoa1SiBEUq064QET6dYdE-jG
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Hey Raphael,

> The "6" extension holds the *leading* 12 bytes of the IPv6 address, the
> trailing 4 bytes being held in the legacy IPv4 field of the message.
> The IPv6 address needs therefore to be reconstructed by concatenating
> the leading 12 bytes (big-endian) of the "6" extension payload with
> the trailing 4 bytes (big-endian) of the legacy field to form the 16
> bytes (big-endian) of the servent's IPv6 address.  The presence of this
> extension indicates that the servent only has an IPv6 address.
> 
> This design has the following properties:
> 
> - It clearly communicates the level of IPv6 support: IPv4 only (neither
>   "I6" nor "6" present), IPv4 and IPv6 support ("I6" present), IPv6 only
>   ("6" present).
> 
> - When parsed by a non IPv6-Ready servent, the IPv4 field will be
>   meaningful most of the time, excepted when "6" is present.
>   In that case however, since the address read will be the lowest 4 bytes
>   of the actual IPv6 address, it is likely that this will be read as an
>   address in 0/8, which is an invalid IPv4 address block.
> 
> - Ultimately when everyone uses IPv6, the legacy 4-byte field will not be
>   wasted.  Everyone will be sending "6" extensions, thereby optimizing the
>   overhead.

This particular bit is in my eyes a no-no. That the translated IPv4
address will likely be an 0/8 address is an incorrect assumption. 

An IPv6 address assigned based on the host MAC address would be a case
in point: 2001:0db8:85a3:0000:0000:8a2e:d155:9268/64 - A certain
well-known search engine would not be very pleased with that assumption.

"Likely" means "not always", which is something you would want to avoid
at all cost.

It is safer to dedicate a particular loopback address (127/8) that would
give an indication to the servent that the "I6" extension contains the
only valid IPv6 address (and therefore has no IPv4 support).

Say, 127.6.0.1 for example - well out of the range of common uses (think
RBLs) but safe enough, that in the event of a poorly written servent it
does not cause harm to the network or unwilling participants.

This would also negate the need for the "6" extension, simplifying
things rather than introducing two extensions for essentially the same
purpose.

Obviously, this would affect OOB Queries as well (2.3) and require some
revisions in other sections.

-- Mike


--jUvv9pe2V0IoBfSUoa1SiBEUq064QET6dYdE-jG
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 7bit




<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
</head>







<body style="background-color: #fff;">
<span style="display:none">&nbsp;</span>

<!--~-|**|PrettyHtmlStartT|**|-~-->
<div id="ygrp-mlmsg" style="position:relative;">
  <div id="ygrp-msg" style="z-index: 1;">
<!--~-|**|PrettyHtmlEndT|**|-~-->

    <div id="ygrp-text" >
      
      
      <p>Hey Raphael,<br>
<br>
&gt; The &quot;6&quot; extension holds the *leading* 12 bytes of the IPv6 address, the<br>
&gt; trailing 4 bytes being held in the legacy IPv4 field of the message.<br>
&gt; The IPv6 address needs therefore to be reconstructed by concatenating<br>
&gt; the leading 12 bytes (big-endian) of the &quot;6&quot; extension payload with<br>
&gt; the trailing 4 bytes (big-endian) of the legacy field to form the 16<br>
&gt; bytes (big-endian) of the servent's IPv6 address.  The presence of this<br>
&gt; extension indicates that the servent only has an IPv6 address.<br>
&gt; <br>
&gt; This design has the following properties:<br>
&gt; <br>
&gt; - It clearly communicates the level of IPv6 support: IPv4 only (neither<br>
&gt;   &quot;I6&quot; nor &quot;6&quot; present), IPv4 and IPv6 support (&quot;I6&quot; present), IPv6 only<br>
&gt;   (&quot;6&quot; present).<br>
&gt; <br>
&gt; - When parsed by a non IPv6-Ready servent, the IPv4 field will be<br>
&gt;   meaningful most of the time, excepted when &quot;6&quot; is present.<br>
&gt;   In that case however, since the address read will be the lowest 4 bytes<br>
&gt;   of the actual IPv6 address, it is likely that this will be read as an<br>
&gt;   address in 0/8, which is an invalid IPv4 address block.<br>
&gt; <br>
&gt; - Ultimately when everyone uses IPv6, the legacy 4-byte field will not be<br>
&gt;   wasted.  Everyone will be sending &quot;6&quot; extensions, thereby optimizing the<br>
&gt;   overhead.<br>
<br>
This particular bit is in my eyes a no-no. That the translated IPv4<br>
address will likely be an 0/8 address is an incorrect assumption. <br>
<br>
An IPv6 address assigned based on the host MAC address would be a case<br>
in point: 2001:0db8:85a3:0000:0000:8a2e:d155:9268/64 - A certain<br>
well-known search engine would not be very pleased with that assumption.<br>
<br>
&quot;Likely&quot; means &quot;not always&quot;, which is something you would want to avoid<br>
at all cost.<br>
<br>
It is safer to dedicate a particular loopback address (127/8) that would<br>
give an indication to the servent that the &quot;I6&quot; extension contains the<br>
only valid IPv6 address (and therefore has no IPv4 support).<br>
<br>
Say, 127.6.0.1 for example - well out of the range of common uses (think<br>
RBLs) but safe enough, that in the event of a poorly written servent it<br>
does not cause harm to the network or unwilling participants.<br>
<br>
This would also negate the need for the &quot;6&quot; extension, simplifying<br>
things rather than introducing two extensions for essentially the same<br>
purpose.<br>
<br>
Obviously, this would affect OOB Queries as well (2.3) and require some<br>
revisions in other sections.<br>
<br>
-- Mike<br>
<br>
</p>

    </div>
     

    <!--~-|**|PrettyHtmlStart|**|-~-->
    <div style="color: #fff; height: 0;">__._,_.___</div>

        
  
   
    <div id="ygrp-actbar" style="clear: both; margin-bottom: 10px; white-space: nowrap; color: #666; padding-top: 15px;">
      <div>
        <a href="mailto:[email protected]?subject=Re%3A%20%5Bthe_gdf%5D%20Making%20Gnutella%20%22IPv6-Ready%22" style="margin-right: 0; padding-right: 0;">
	  Reply to <span style="font-weight: 700;">sender</span></a> |
        <a href="mailto:[email protected]?subject=Re%3A%20%5Bthe_gdf%5D%20Making%20Gnutella%20%22IPv6-Ready%22">
	  Reply to <span style="font-weight: 700;">group</span></a> |
        	  <a href="http://groups.yahoo.com/group/the_gdf/post;_ylc=X3oDMTJxZzhvOHVmBF9TAzk3MzU5NzE0BGdycElkAzI2ODQyNTMEZ3Jwc3BJZAMxNzA1MDE2MDYxBG1zZ0lkAzIzNzg3BHNlYwNmdHIEc2xrA3JwbHkEc3RpbWUDMTMwODg1NDUwNQ--?act=reply&messageNum=23787">Reply <span style="font-weight: 700;">via web post</span></a> |
            	<a href="http://groups.yahoo.com/group/the_gdf/post;_ylc=X3oDMTJlbGttMmMzBF9TAzk3MzU5NzE0BGdycElkAzI2ODQyNTMEZ3Jwc3BJZAMxNzA1MDE2MDYxBHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTMwODg1NDUwNQ--" style="font-weight: 700;">Start a New Topic</a>
      </div>

                <a href="http://groups.yahoo.com/group/the_gdf/message/23786;_ylc=X3oDMTM2MjdjMjdiBF9TAzk3MzU5NzE0BGdycElkAzI2ODQyNTMEZ3Jwc3BJZAMxNzA1MDE2MDYxBG1zZ0lkAzIzNzg3BHNlYwNmdHIEc2xrA3Z0cGMEc3RpbWUDMTMwODg1NDUwNQR0cGNJZAMyMzc4Ng--">Messages in this topic</a>
          (<span style="font-weight: 700;">2</span>)
          </div> 
<!------- Start Nav Bar ------>

<!-- |**|begin egp html banner|**| -->
<div id="ygrp-vital" style="background-color: #e0ecee; font-family: Verdana; font-size: 10px; margin-bottom: 10px; padding: 10px;">
      <span id="vithd" style="font-weight: bold; color: #333; text-transform: uppercase; ">Recent Activity:</span>

    <ul style="list-style-type: none; margin: 0; padding: 0; display: inline;">
            <li style="border-right: 1px solid #000; font-weight: 700; display: inline; padding: 0 5px; margin-left: 0;">
      <span class="cat"><a href="http://groups.yahoo.com/group/the_gdf/members;_ylc=X3oDMTJmMTJxaHB2BF9TAzk3MzU5NzE0BGdycElkAzI2ODQyNTMEZ3Jwc3BJZAMxNzA1MDE2MDYxBHNlYwN2dGwEc2xrA3ZtYnJzBHN0aW1lAzEzMDg4NTQ1MDU-?o=6" style="text-decoration: none;">New Members</a></span>
      <span class="ct" style="color: #ff7900;">2</span>
    </li>
                              <li style="border-right: 1px solid #000; font-weight: 700; display: inline; padding: 0 5px; margin-left: 0;">
      <span class="cat"><a href="http://groups.yahoo.com/group/the_gdf/links;_ylc=X3oDMTJnNmhmaDVsBF9TAzk3MzU5NzE0BGdycElkAzI2ODQyNTMEZ3Jwc3BJZAMxNzA1MDE2MDYxBHNlYwN2dGwEc2xrA3ZsaW5rcwRzdGltZQMxMzA4ODU0NTA1" style="text-decoration: none;">New Links</a></span>
      <span class="ct" style="color: #ff7900;">1</span>
    </li>
                      </ul>
    
  <div style="clear: both; padding-top: 2px; color: #1e66ae;">
    <a href="http://groups.yahoo.com/group/the_gdf;_ylc=X3oDMTJlbjRmMDhiBF9TAzk3MzU5NzE0BGdycElkAzI2ODQyNTMEZ3Jwc3BJZAMxNzA1MDE2MDYxBHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTMwODg1NDUwNQ--" style="text-decoration: none;">Visit Your Group</a>
  </div>
</div>

  
<div id="ft" style="font-family: Arial; font-size: 11px; margin-top: 5px; padding: 0 2px 0 0; clear: both;">
  <a href="http://groups.yahoo.com/;_ylc=X3oDMTJkMm1kbmV2BF9TAzk3MzU5NzE0BGdycElkAzI2ODQyNTMEZ3Jwc3BJZAMxNzA1MDE2MDYxBHNlYwNmdHIEc2xrA2dmcARzdGltZQMxMzA4ODU0NTA1" style="float: left;"><img src="http://l.yimg.com/a/i/us/yg/logo/us.gif" height="15" width="137" alt="Yahoo! Groups" style="border: 0;"/></a>
  <div style="color: #747575; float: right;">Switch to: <a href="mailto:[email protected]?subject=Change Delivery Format: Traditional" style="text-decoration: none;">Text-Only</a>, <a href="mailto:[email protected]?subject=Email Delivery: Digest" class="margin-rt" style="text-decoration: none;">Daily Digest</a> &bull; <a href="mailto:[email protected]?subject=Unsubscribe" style="text-decoration: none;">Unsubscribe</a> &bull; <a href="http://docs.yahoo.com/info/terms/" style="text-decoration: none;">Terms of Use</a></div>
</div>

<!-- |**|end egp html banner|**| -->

  </div> <!-- ygrp-msg -->

  <!-- Sponsor -->
  <!-- |**|begin egp html banner|**| -->
  <div id="ygrp-sponsor" style="width:160px; float:right; clear:none; margin:0 0 25px 0; background: #fff;">

<!-- Start Recommendations -->
<div id="ygrp-reco">
     </div>
<!-- End Recommendations -->



  </div>   <!-- |**|end egp html banner|**| -->

  <div style="clear:both; color: #FFF; font-size:1px;">.</div>
</div>

  <img src="http://geo.yahoo.com/serv?s=97359714/grpId=2684253/grpspId=1705016061/msgId=23787/stime=1308854505/nc1=1/nc2=2/nc3=3" width="1" height="1"> <br>

<div style="color: #fff; height: 0;">__,_._,___</div>
<!--~-|**|PrettyHtmlEnd|**|-~-->

</body>

<!--~-|**|PrettyHtmlStart|**|-~-->
<head>
  <style type="text/css">
  <!--
  #ygrp-mkp {
  border: 1px solid #d8d8d8;
  font-family: Arial;
  margin: 10px 0;
  padding: 0 10px;
}

#ygrp-mkp hr {
  border: 1px solid #d8d8d8;
}

#ygrp-mkp #hd {
  color: #628c2a;
  font-size: 85%;
  font-weight: 700;
  line-height: 122%;
  margin: 10px 0;
}

#ygrp-mkp #ads {
  margin-bottom: 10px;
}

#ygrp-mkp .ad {
  padding: 0 0;
}

#ygrp-mkp .ad p {
  margin: 0;
}

#ygrp-mkp .ad a {
  color: #0000ff;
  text-decoration: none;
}
  #ygrp-sponsor #ygrp-lc {
  font-family: Arial;
}

#ygrp-sponsor #ygrp-lc #hd {
  margin: 10px 0px;
  font-weight: 700;
  font-size: 78%;
  line-height: 122%;
}

#ygrp-sponsor #ygrp-lc .ad {
  margin-bottom: 10px;
  padding: 0 0;
}

  a {
    color: #1e66ae;
  }

  #actions {
    font-family: Verdana;
    font-size: 11px;
    padding: 10px 0;
  }

  #activity {
    background-color: #e0ecee;
    float: left;
    font-family: Verdana;
    font-size: 10px;
    padding: 10px;
  }

  #activity span {
    font-weight: 700;
  }

  #activity span:first-child {
    text-transform: uppercase;
  }

  #activity span a {
    color: #5085b6;
    text-decoration: none;
  }

  #activity span span {
    color: #ff7900;
  }

  #activity span .underline {
    text-decoration: underline;
  }

  .attach {
    clear: both;
    display: table;
    font-family: Arial;
    font-size: 12px;
    padding: 10px 0;
    width: 400px;
  }

  .attach div a {
    text-decoration: none;
  }

  .attach img {
    border: none;
    padding-right: 5px;
  }

  .attach label {
    display: block;
    margin-bottom: 5px;
  }

  .attach label a {
    text-decoration: none;
  }
  
  blockquote {
    margin: 0 0 0 4px;
  }

  .bold {
    font-family: Arial;
    font-size: 13px;
    font-weight: 700;
  }

  .bold a {
    text-decoration: none;
  }

  dd.last p a {
    font-family: Verdana;
    font-weight: 700;
  }

  dd.last p span {
    margin-right: 10px;
    font-family: Verdana;
    font-weight: 700;
  }

  dd.last p span.yshortcuts {
    margin-right: 0;
  }

  div.attach-table div div a {
    text-decoration: none;
  }

  div.attach-table {
    width: 400px;
  }

  div.file-title a, div.file-title a:active, div.file-title a:hover, div.file-title a:visited {
    text-decoration: none;
  }

  div.photo-title a, div.photo-title a:active, div.photo-title a:hover, div.photo-title a:visited {
    text-decoration: none;
  }

  div#ygrp-mlmsg #ygrp-msg p a span.yshortcuts {
    font-family: Verdana;
    font-size: 10px;
    font-weight: normal;
  }

  .green {
    color: #628c2a;
  }

  .MsoNormal {
    margin: 0 0 0 0;
  }

  o {
    font-size: 0;
  }

  #photos div {
    float: left;
    width: 72px;
  }

  #photos div div {
    border: 1px solid #666666;
    height: 62px;
    overflow: hidden;
    width: 62px;
  }

  #photos div label {
    color: #666666;
    font-size: 10px;
    overflow: hidden;
    text-align: center;
    white-space: nowrap;
    width: 64px;
  }

  #reco-category {
    font-size: 77%;
  }

  #reco-desc {
    font-size: 77%;
  }

  .replbq {
    margin: 4px;
  }

  #ygrp-actbar div a:first-child {
   /* border-right: 0px solid #000;*/
    margin-right: 2px;
    padding-right: 5px;
  }

  #ygrp-mlmsg {
    font-size: 13px;
    font-family: Arial, helvetica,clean, sans-serif;
    *font-size: small;
    *font: x-small;
  }

  #ygrp-mlmsg table {
    font-size: inherit;
    font: 100%;
  }

  #ygrp-mlmsg select, input, textarea {
    font: 99% Arial, Helvetica, clean, sans-serif;
  }

  #ygrp-mlmsg pre, code {
    font:115% monospace;
    *font-size:100%;
  }

  #ygrp-mlmsg * {
    line-height: 1.22em;
  }

  #ygrp-mlmsg #logo {
    padding-bottom: 10px;
  }

  #ygrp-mlmsg a {
    color: #1E66AE;
  }

  #ygrp-msg p a {
    font-family: Verdana;
  }

  #ygrp-msg p#attach-count span {
    color: #1E66AE;
    font-weight: 700;
  }

  #ygrp-reco #reco-head {
    color: #ff7900;
    font-weight: 700;
  }

  #ygrp-reco {
    margin-bottom: 20px;
    padding: 0px;
  }

  #ygrp-sponsor #ov li a {
    font-size: 130%;
    text-decoration: none;
  }

  #ygrp-sponsor #ov li {
    font-size: 77%;
    list-style-type: square;
    padding: 6px 0;
  } 

  #ygrp-sponsor #ov ul {
    margin: 0;
    padding: 0 0 0 8px;
  }

  #ygrp-text {
    font-family: Georgia;
  }

  #ygrp-text p {
    margin: 0 0 1em 0;
  }

  #ygrp-text tt {
    font-size: 120%;
  }

  #ygrp-vital ul li:last-child {
    border-right: none !important; 
  } 
  -->
  </style>
</head>

<!--~-|**|PrettyHtmlEnd|**|-~-->
</html>
<!-- end group email -->


--jUvv9pe2V0IoBfSUoa1SiBEUq064QET6dYdE-jG--