Gnutella Forums

Gnutella Forums (
-   General Discussion (
-   -   Streaming Phex features with extension if gnutella protocol (

Lovric August 1st, 2009 07:42 AM

Streaming Phex features with extension if gnutella protocol

Is it possible to add streaming P2P features within PHEX ?
The Gnutella protocol seems to be only applicable to files. Maybe an extension of the protocol is necessary. I need such new features to transmit live P2P video for eseco systems web3.0 appliances.
Ivan Lovric

arne_bab August 1st, 2009 09:49 AM

For ideas what to change you could look at peercast: PeerCast P2P Broadcasting

They seem to use Gnutella internally (though I don't know if it's an old version - if my memory serves me right they only supported Gnutella 0.4 for quite some time).

Lovric August 10th, 2009 02:29 PM

Peercast is too old

I tried to use peercast, however the version seems old and it is not maintained since 2007.
However, I will look at their source to see if it is possible to merge it with jtella, and extend the gnutella protocol.
Ivan Lovric

arne_bab August 10th, 2009 11:38 PM

AFAIK jtella is even older than peercast.

If you want to use an up-to-date java-based Gnutella client, just have a look at Phex (at least if you want to have a chance to see your improvements in the mainline client).

- Phex sources:

Lovric August 11th, 2009 11:37 PM

Interoperability tests with PHEX

I have found two versions of JTELLA (Jtella-07 very old 2001, and Jtella-08 more recent 2003).
A Jtella-07 peer doesn't work with a peer Phex because Phex only accept ultrapeers, so I get 503 error codes.
The Jtella-08 seems to be able to connect with Phex because a jtella08 peer can act as an ultrapeer, so I don't have the 503 error anymore. However, I still have some issues when querying files. I will look at both source codes to see if this is an inteoperability issue.

I did also some tests with Limewire but that doesn't work at all (even when I try to connect a Limewire peer with a Phex peer).

After fixing these protocol issues, I will try to extend it with streaming features using peercast.

Have you any ideas about the interoperability issues ?

GregorK August 12th, 2009 12:13 AM

Yes, firewall detection issues.
Phex will not reply with search results if it determines that downloads won't work anyway because both nodes seem to be firewalled.

Lovric August 13th, 2009 12:39 AM

TCP checksum is bad
1 Attachment(s)
To try interoperability tests within Phex and Jtella, I use the wireshark sniffer.
It seems that Phex truncates the TCP packets (Connect, pong...) which results in bad TCP checksum. This error causes Jtella to close the connection. (I attached the wireshark file). is Phex is Jtella

GregorK August 13th, 2009 01:12 AM

Sorry but I can't really believe that Phex is truncating anything on TCP level. The implementation is very high level and is not doing anything TCP related.
If anything is truncated at such a low level, its either because of a bug in the Java VM, OS or something similar.
Additionally there are no connection problems with other client. I assume the interoperability problem is not caused from such a low level problem like faulty TCP packages.


Lovric August 13th, 2009 05:15 AM

TCP checksum is bad
Yes, it seems that the TCP checksum is not the real cause the problem.
After looking deeper in the source and doing some more tests, I see an interoperability issue in PHEX and Jtella.
The Gnutella RFC 0.6 says in section 2.3:
"Servents SHOULD remove any GGEP blocks from Ping, Pong and Push
messages before sending those messages to hosts that have not
indicated GGEP support."
Here, PHEX has not seen that Jtella-0.8 doesn't support GGEP, but sends the GGEP extension anyway. This causes Jtella to discard the PONG message due to a wrong payload exceeding 14 bytes.
AFter modifying some code in JTella, the PONG message coming from PHEX is now accepted, but I guess that a correction should also been done in PHEX, to avoid sending GGEP extensions to servents that doo not support this feature.

Ivan Lovric

GregorK August 13th, 2009 07:38 AM

I just added the code to drop the GGEP data from pongs to SVN. I have no tested if it works correct, can you please do this...
You can get the changes directly from the Phex SVN or sometimes tonight or tomorrow from our automated build system (in case its running correctly): Index of /snapshots

I only did this change because it was quite easy to integrate, though actually I don't believe it is necessary to still support outdated nodes that don't yet support GGEP extension...


All times are GMT -7. The time now is 06:50 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2022, vBulletin Solutions, Inc.
SEO by vBSEO 3.6.0 ©2011, Crawlability, Inc.

Copyright 2020 Gnutella Forums.
All Rights Reserved.