Salman Abdul Baset wrote:
> Thanks for the excellent answers. Couple of comments inline with some 
> snips:
>
>
>> 2) TCP isn't supported, because it doesn't make any sense to run RTMFP
>> over TCP. RTMP exists and works over TCP, but only for the client-server
>> cases.
>
> So presumably the DHT put/get operations are less than a MTU so 
> fragmentation and corresponding reliability issues don't kick in?
RTMFP is a complete transport protocol that (while operating over UDP) 
handles fragmentation issues, varying guarantees for delivery 
reliability (none, partial, full) and ordering (in-order, as-received... 
even supporting in-order delivery of partially-reliable data), 
TCP-friendly congestion management with variable responses to congestion 
and cross-peer congestion management (so if A is receiving high-priority 
data from B then when C sends to A it backs off more strongly if loss is 
detected), IP address mobility support, encryption (where the entire 
session setup plus keying is several round-trips fewer than TCP+TLS), 
etc. Too many features to list here, essentially.
> Media over TCP is necessary for traversing UDP blocking firewalls. If 
> the goal is to reduce load on the publisher by doing p2p, then 
> ideally, peers need to have all types of NAT/firewall traversal 
> mechanisms in their toolbox. However, as you pointed, there maybe 
> business reasons for not doing so -: One may also argue based on the 
> available data that there are too few UDP blocking firewalls, or too 
> few clients behind such firewalls so it does not really matter...
RTMFP has nearly every NAT/firewall traversal mechanism it can while 
still running over UDP. (And no, it doesn't use STUN or ICE to do that, 
and while it achieves similar results it is superior for how it is 
used... RTMFP session establishment proceeds as rapidly as possible 
without any phases for doing things like gathering addresses. Because 
RTMFP is often used from Flash Player within the browser environment, 
spending time to use STUN to determine one's addresses before doing 
anything else would just add delay to the user experience. While STUN 
and ICE works well for something like a desktop phone that can spend a 
lot of time booting and then probing before it is time to make a call, 
it doesn't work well for something like instant call setup from within a 
web page. If you want to get an idea of what it can figure out about its 
environment, check out the test server I run in my garage: 
http://cc.rtmfp.net )

Because RTMFP is a complete transport protocol with things like 
retransmission and (selective) acknowledgment, it gets very confused if 
it is sent over a reliable channel like TCP where retransmission timers 
fire but then the data arrives anyway because the lower layer was doing 
the same thing. The Flash Player already has a much better protocol for 
moving media over TCP built-in, which is RTMP.

And while RTMP only works for the client-server case, there are very few 
cases where peers are UDP-blocked and simultaneously able to accept 
incoming TCP connections, so finding a pairing where that's the case is 
so rare that we don't bother.
>
>
> Are you saying that RTMFP has a mechanism of prioritizing audio/video 
> over file transfer?
Yes. RTMFP manages a single congestion window for all flows and 
prioritizes media as requested. This means that if you are moving a 
large file to a peer at the same time you're doing VoIP with them, the 
VoIP can proceed without disruption while the file transfer uses all the 
remaining TCP-friendly bandwidth. There is also cross-peer management, 
as described above.
>
>
> Ok, so the question really is can RTMP/RTMFP(pre/post groups) be run 
> together in a way that allows peer-to-peer media sessions where 
> possible but falls back to client server? Do you think the solution 
> will be seamless for RTM* protocol series? If I was building a 
> Skype-like system, I will need to ensure that session establishment 
> does not fail due to protocol or architecture artifacts.
Another group at Adobe has developed what is now known as the "LiveCycle 
Collaboration Service" which, underneath all the interesting components, 
uses RTMP and RTMFP to do peer-to-peer when possible and client-server 
when not. So I believe that's an existence proof.

Matthew Kaufman

_______________________________________________
p2p-hackers mailing list
p2p-hackers@lists.zooko.com
http://lists.zooko.com/mailman/listinfo/p2p-hackers

Reply via email to