RE: Re: Ultrapper to Ultrapper Protocol

"Philippe Verdy" <[email protected]>
Newsgroups gmane.network.gnutella.devel
Organization Ordinateur Personnel
Message-ID <[email protected]>
Ne thing should be noted: when an Ultrapeer initiates a request to the
network, not acting as a proxy for its connected leaf, it behaves much like
in the old legacy Gnutella protocol, when there was no lyering distinction
between Ultrapeers and Leaves.
In other words, they have much more freedom for talking the way they want.
The requirement for Ultrapeers is to offer a shielding for the leaves it
accepts to serve, by implementing at least the QRP protocol between the
leaves and itself.

Implementing the QRP protocol between two ultrapeers has some other
requirements, because it must combine/merge its own QRP table with the QRP
tables coming from its locally incoming leaves. This is the tricky part, but
QRP routing is optional between Ultrapeers (it is mandatory for routing the
incoming search requests to the Leaves, by filtering these requests
according to the QRP table for each connected leaf), although it is now
highly recommended.

But beside this, the protocol is exactly the same, as well as the usage
policy. The policy is more complex to compute in ultrapeers because it will
have more connections to manage (about 30 to 60 incoming leaf nodes, and 3
to 5 incoming or outgoing connections to other Ultrapeers).

Note that an Ultrapeer cannot normally perform a connection request directly
to a remote peer acting as a Leaf node. When an Ultrapeer connects to
another peer, it does not know immediately that it is another Ultrapeer, but
if the connection succeeds, the remote is not a Leaf node (because by
definition, a peer acting as a Leaf node will not accept and will reject all
directly incoming connections but will guide the Ultrapeer to other possible
Ultrapeers).

There are however some tricky cases: even if a leaf node is not accepting
incomoing connections, it may still accept to honir incoming requests coming
from other foreign peers than just the few Ultrapeers with which the leaf
already has an established outgoing connection. This is the case for example
for requests routed via UDP without being proxied by Ultrapeers, and this
will work if the leaf node is not firewalled, or its firewall supports
dynamic routing of UDP messages through port punching (by the firewalled
Leaf node, that are maintaining some minimum traffic).

This allows for example the FW2FW protocol (that allows bypassing some
firewall limitations, in hosts that are NOT protected by true firewall but
only by routers implementing NAT+PAT for connection sharing within a private
locale network) to work directly between two leaf nodes, even though a leaf
node cannot normally connect directly to another leaf node without the help
of its already connected Ultrapeers.

Note also that when a peer is acting as a leaf node, it does not necessarily
mean that it is firewalled and will reject all incoming connections. It's
just that he currently does not run as an ultrapeer because it still does
not honor some other conditions for becoming an Ultrapeer. The distinction
between leaf nodes and ultrapeer nodes is not about their firewall status,
but about the support by ultrapeers of incoming QRP tables from leaf nodes,
and honoring by the Ultrapeer the filtering of incoming requests coming from
everywhere before proxying them to its leaf nodes.

The leaf of Ultrapeer status is also not assigned to the nodes, but to each
established link: when a link is shieldedwith the QRP protocol, there's a
leaf side and an Ultrapeer side for that link, and the link side is not
necessarily terminal (even though it looks like it is terminal for the rest
of the world that can reach the Ultrapeer). So a peer may act as a leaf node
on some links initiated by itself to other peers, and act as an Ultrapeer
for some other links.

This dual status, depending of who the peer is talking to (a sort of
"schizophrenic" behaviour) may be:
* a transitory status when a peer changes from a Leaf-only mode and becomes
eligible to acting as an Ultrapeer : it does not necessarily needs to close
other existing connections to other ultrapeers, but may need to transform
its existing QRP table it has given to other Ultrapeers, using merged QRP
tables with incoming QRP tables from other Leaf nodes, and then sending
patches each time the local peer (now also an Ultrapeer) accepts incoming
connections from other leaf nodes.
* but this may also be the result of the local topology of an Ultrapeer that
is acting as a proxying agent for all other nodes with which it shares its
connection to the Internet in a private network: this proxying status is not
visible to the outside world and may require adjustment, by the Ultrapeer,
of the TTL distance of messages from the outside Internet world routed by
the Ultrapeer. From the outside view, these shielded leaf nodes in the
private network are not visible, the world sees this dual-acting peer as if
it was a single peer acting as a leaf node (even though is acts as an
Ultrapeer for the leaf nodes connected to it from the local private
network)...In such topology, the Ultrapeer will often need to become a full
proxy not only for Gnutella connections and messaging, but also for HTTP
transfers.

Supporting this dual "schizophrenic" mode does not change the protocol or
its policy. This is a local only policy, invisible from the outside. It just
needs to be consistent during the time, over each connection, instead of
just for all the connections of the local peer: the local-only
"schizophrenic" behaviour will be invisible from other peers in the global
network, and without consequences in the policy applied by them.

> -----Message d'origine-----
> De : [email protected] [mailto:[email protected]] De la part
> de [email protected]
> Envoyé : mercredi 26 septembre 2007 13:23
> À : [email protected]
> Objet : [the_gdf] Re: Ultrapper to Ultrapper Protocol
> 
> Quoting Tehsin azmi <[email protected]> from ml.gnutella.dev-forum:
> :Where can I find, Gnutella Ultrapper to Ultrapeer protocol specification?
> 
> What do you mean, Ultrapeer to Ultrapeer?  The protocol is the same
> between Ultrapeers and between Leaves and Ultrapeers.  The nature and
> semantics of the messages can vary of course (e.g. QRP routing means
> something different between Ultrapeers and between a Leaf and its
> Ultrapeer).
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.