Re: Making Gnutella "IPv6-Ready"

[email protected] Wed, 10 Aug 2011 20:54:22 +0000 (UTC)
Newsgroups gmane.network.gnutella.devel
Organization Home, Grenoble, France
Message-ID <[email protected]>
--hDQWc9zCHyPCnPjGMTnuVSeLLu78RXZec4v5Nor
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

Quoting Jeroen Asselman <[email protected]> from ml.gnutella.dev-forum:
:I find the naming confusing. Without reading the description I would say "IP/6.0"
:is IPv6 only. and "IP/6.4" having both 6 and 4. When reading the descriptions I
:find the feature names counter intuitive.

True, it's strikingly confusing for humans.  But you don't have to read it that
way.  6.0 and 6.4 as version numbers express evolution: as soon as some
IPv6-Ready servents are going to appear, they'll advertise 6.0 because they're
going to have both IPv4 and IPv6 connectivity, most likely.  In time, IPv4
support is going to disappear and then we'll only have 6.4 versions.

:> 5.4 Ping
:> 
:> The "SCP" payload is extended to include two new flags:
:> 
:> 	0x4		Node also wants IPv6 addresses
:> 	0x8		Node does not want any IPv4
:> 
:> These flags govern whether "IPP" or "IPP6" (or both) will be sent back.
:> Legacy servents will not supply any of these flags and will therefore
:> only get back "IPP" in their pongs.
:
:What would be the suggested behaviour when 0x4 is not set, but 0x8 is? Future
:reservation?

It is currently UNDEFINED.  Servents could assume 0x8 implies 0x4, or not.
In that latter case only setting 0x8 would return nothing.

:> 5.5 Queries and HEAD Ping
:> 
:> Gnutella queries and HEAD Ping request must include an empty "I6" GGEP
:> extension to advertise that they can accept IPv6 addresses.  If they
:> can only accept IPv6, then they must include a 1 byte payload with the
:> value 1.
:
:What should clients do when another value is read. Say 3, read it as a bit flag
:and having bit 1 set indicate a IPv6 only?

This is a very good point.  It is a mistake to speak about values here,
we should only define flags.  I'll amend the specs to say that bit 0 of the
payload must be set.  This will leave room for more flags, if needed.

:There is something what worries me, although I am not sure it is a problem,
:suppose the following situation:
:
:Node A [IPv4 only] 
:    ||
:Node B [IPv4 & 6]
:    ||
:Node C [IPv6 only] 
:    ||
:Node D [IPv4 & 6] 
:    ||
:Node E [IPv4 only]
:
:As IPv6 only nodes won't include an IPv4 addresses, wouldn't this raise the
:possibility of IPv4 islands?

In time, there is a danger of Gnutella being split into two: IPv4-only
hosts and IPv6-only ones.  Since IPv4 and IPv6 are two different network
protocols, this is inevitable.  As long as there remains Ultrapeers
connecting on both IPv4 and IPv6 however, some bridging will occur which
will connect the islands partially.

Legacy servents and dead ones (those no longer developped and which therefore
cannot hope to become IPv6-Ready) will remain in the IPv4-only portion of
Gnutella. Those running on IPv6-only will depend on ultrapeers connected to
both IPv4 and IPv6.

Gnutella users should therefore have an incentive to get both IPv4 and IPv6
connectivity and also move to Gnutella servents that are supporting the
IPv6-Ready specifications.

Raphael

--hDQWc9zCHyPCnPjGMTnuVSeLLu78RXZec4v5Nor
Content-Type: text/html; charset=ISO-8859-1
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>Quoting Jeroen Asselman &lt;<a href="mailto:jeroen%40asselman.com">[email protected]</a>&gt; from ml.gnutella.dev-forum:<br>
:I find the naming confusing. Without reading the description I would say &quot;IP/6.0&quot;<br>
:is IPv6 only. and &quot;IP/6.4&quot; having both 6 and 4. When reading the descriptions I<br>
:find the feature names counter intuitive.<br>
<br>
True, it's strikingly confusing for humans.  But you don't have to read it that<br>
way.  6.0 and 6.4 as version numbers express evolution: as soon as some<br>
IPv6-Ready servents are going to appear, they'll advertise 6.0 because they're<br>
going to have both IPv4 and IPv6 connectivity, most likely.  In time, IPv4<br>
support is going to disappear and then we'll only have 6.4 versions.<br>
<br>
:&gt; 5.4 Ping<br>
:&gt; <br>
:&gt; The &quot;SCP&quot; payload is extended to include two new flags:<br>
:&gt; <br>
:&gt; 	0x4		Node also wants IPv6 addresses<br>
:&gt; 	0x8		Node does not want any IPv4<br>
:&gt; <br>
:&gt; These flags govern whether &quot;IPP&quot; or &quot;IPP6&quot; (or both) will be sent back.<br>
:&gt; Legacy servents will not supply any of these flags and will therefore<br>
:&gt; only get back &quot;IPP&quot; in their pongs.<br>
:<br>
:What would be the suggested behaviour when 0x4 is not set, but 0x8 is? Future<br>
:reservation?<br>
<br>
It is currently UNDEFINED.  Servents could assume 0x8 implies 0x4, or not.<br>
In that latter case only setting 0x8 would return nothing.<br>
<br>
:&gt; 5.5 Queries and HEAD Ping<br>
:&gt; <br>
:&gt; Gnutella queries and HEAD Ping request must include an empty &quot;I6&quot; GGEP<br>
:&gt; extension to advertise that they can accept IPv6 addresses.  If they<br>
:&gt; can only accept IPv6, then they must include a 1 byte payload with the<br>
:&gt; value 1.<br>
:<br>
:What should clients do when another value is read. Say 3, read it as a bit flag<br>
:and having bit 1 set indicate a IPv6 only?<br>
<br>
This is a very good point.  It is a mistake to speak about values here,<br>
we should only define flags.  I'll amend the specs to say that bit 0 of the<br>
payload must be set.  This will leave room for more flags, if needed.<br>
<br>
:There is something what worries me, although I am not sure it is a problem,<br>
:suppose the following situation:<br>
:<br>
:Node A [IPv4 only] <br>
:    ||<br>
:Node B [IPv4 &amp; 6]<br>
:    ||<br>
:Node C [IPv6 only] <br>
:    ||<br>
:Node D [IPv4 &amp; 6] <br>
:    ||<br>
:Node E [IPv4 only]<br>
:<br>
:As IPv6 only nodes won't include an IPv4 addresses, wouldn't this raise the<br>
:possibility of IPv4 islands?<br>
<br>
In time, there is a danger of Gnutella being split into two: IPv4-only<br>
hosts and IPv6-only ones.  Since IPv4 and IPv6 are two different network<br>
protocols, this is inevitable.  As long as there remains Ultrapeers<br>
connecting on both IPv4 and IPv6 however, some bridging will occur which<br>
will connect the islands partially.<br>
<br>
Legacy servents and dead ones (those no longer developped and which therefore<br>
cannot hope to become IPv6-Ready) will remain in the IPv4-only portion of<br>
Gnutella. Those running on IPv6-only will depend on ultrapeers connected to<br>
both IPv4 and IPv6.<br>
<br>
Gnutella users should therefore have an incentive to get both IPv4 and IPv6<br>
connectivity and also move to Gnutella servents that are supporting the<br>
IPv6-Ready specifications.<br>
<br>
Raphael<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%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%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=X3oDMTJxbjJ0a3QxBF9TAzk3MzU5NzE0BGdycElkAzI2ODQyNTMEZ3Jwc3BJZAMxNzA1MDE2MDYxBG1zZ0lkAzIzNzkyBHNlYwNmdHIEc2xrA3JwbHkEc3RpbWUDMTMxMzAwOTY4Mg--?act=reply&messageNum=23792">Reply <span style="font-weight: 700;">via web post</span></a> |
            	<a href="http://groups.yahoo.com/group/the_gdf/post;_ylc=X3oDMTJlYm5pbzBwBF9TAzk3MzU5NzE0BGdycElkAzI2ODQyNTMEZ3Jwc3BJZAMxNzA1MDE2MDYxBHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTMxMzAwOTY4Mg--" style="font-weight: 700;">Start a New Topic</a>
      </div>

                <a href="http://groups.yahoo.com/group/the_gdf/message/23786;_ylc=X3oDMTM2NmFuYjM0BF9TAzk3MzU5NzE0BGdycElkAzI2ODQyNTMEZ3Jwc3BJZAMxNzA1MDE2MDYxBG1zZ0lkAzIzNzkyBHNlYwNmdHIEc2xrA3Z0cGMEc3RpbWUDMTMxMzAwOTY4MgR0cGNJZAMyMzc4Ng--">Messages in this topic</a>
          (<span style="font-weight: 700;">7</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/links;_ylc=X3oDMTJnMXRiMzVoBF9TAzk3MzU5NzE0BGdycElkAzI2ODQyNTMEZ3Jwc3BJZAMxNzA1MDE2MDYxBHNlYwN2dGwEc2xrA3ZsaW5rcwRzdGltZQMxMzEzMDA5Njgy" 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=X3oDMTJlbmlmaDZxBF9TAzk3MzU5NzE0BGdycElkAzI2ODQyNTMEZ3Jwc3BJZAMxNzA1MDE2MDYxBHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTMxMzAwOTY4Mg--" 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=X3oDMTJkNDdxdjIxBF9TAzk3MzU5NzE0BGdycElkAzI2ODQyNTMEZ3Jwc3BJZAMxNzA1MDE2MDYxBHNlYwNmdHIEc2xrA2dmcARzdGltZQMxMzEzMDA5Njgy" 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=23792/stime=1313009682/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 -->


--hDQWc9zCHyPCnPjGMTnuVSeLLu78RXZec4v5Nor--