Peer2peer Openfire with RTMFP and RTMP

I am currently looking at adding peer2peer support to Openfire using the Redfire plugin which has support for both RTMP and the new RTMFP (peer to peer) protocol from Adobe. I would like to get some feedback from the community to validate my thinking and confirm I am on the right track.

I know that I should be looking at Jingle and I also know I should be looking at XEP-0174: Serverless Messaging, but they don’t serve my needs and the XMPP council had reservations about my RTMP ideas for Jingle because RTMP and RTMFP are considered proprietary. Unfortunately, Flash Player has not gone away and the open HTML5 websockets is still taking its first steps as a toddler.

I have developed a new client-side RTMFP connection class for XIFF that enables clients to dynamically become nodes or supernodes (like Skype) using RTMP and RTMFP. Nodes will connect and distribute messages to each other without a server using RTMFP, while super-nodes will connect to Openfire via the Redfire connection manager using RTMP and act as proxies for their neighbour nodes. Like Openfire clustering, disconnecting super-nodes are replaced immediately by election among the neighbour nodes.

XMPP Message packets between neighbours can be sent directly peer to peer if there is a route and server messaging logging is not mandatory.

In theory, a fully populated enterprise muticast 192.168.x.x network with aproximately 64K users would only need 256 Openfire socket connections

Image2.png

As a first step towards Openfire peer2peer, the latest version of the Redfire plugin for Spark has support for RTMFP. If there is a route between clients having a two-way chat or multi-user chat, then the audio and video is sent peer2peer using RTMFP. There should be some performance gains with multiple participants in a chat room. Screenshare and remote desktop control is still done via Openfire server using RTMP with Red5.

1 Like

Cool,

My interest is P2P messaging between smack clients running on smart phones. I know there are firewall issues. Do you see this capability on the horizon? Thanks.

If Smack already supports XEP 174, then you should have P2P messaging subject to firewall restrictions on the client as you pointed out.

Skype and BitTorrent have already proven the concept of managing a community of p2p mesh networks, so it is definite capabilty for a distributed xmpp sytem.

The fact that Microsoft is buying Skype tells me it is round the corner rather than over the horizon.

Yes!!! I am involved with exactly this kind of work. Openfire is the backbone of my social networking platform and we are wanting to impliment not just RTMP but RTMFP. You don’t see a lot of open source RTMFP attention and this is exactly the kind I’ve been waiting to see! Keep up the great work!

Dele, I am very glad that someone is looking at improving the Audio / video communications with Spark. I have been unable to get Jingle working, and it seems no-one has the experience to even comment on jingle.

Does your roadmap for Redfire include a Voice only Chat feature? Most of our users do not have webcams and it seems redundant to open a webcam chat for two users with no webcams.

I love Spark as an enterprise messaging client for openfire. it’s SSO features, it’s deployability and integration with openfire are awesome. But I am forced to use Jitsi for it’s far superior Jingle implementation. I would love to think that Redfire can close this gap!

Well… Improvements are allways welcome, but propietary stuff… meh… I don’t like…

I think the question about nodes and super nodes are already being adressed by jingle nodes…

http://xmppjingle.blogspot.com/2010/11/jingle-nodes-updates.html

http://xmpp.org/extensions/xep-0278.html

http://code.google.com/p/jinglenodes/

That is great.

But why there is nobody interesting to migrate jitsi’s video feature to spark or extrat the feature as libs.

I can answer that one.

It is not a simple as puting jar files in a lib folder

It involves installing JMF which is a pain to maintain as it was been abandoned by Sun or should I say Oracle.

That is why I am only interested in technologies that work in a browser and I am NOT waiting or holding my breath for a Websockets implementation of Jingle Nodes.

It is very important to have a solution that will work with both Spark and SparkWeb

Thanks for the kind words. I am hoping to close that gap. Take a look at

http://code.google.com/p/red5-smartphone/

Thank you for the offer

Hi Dele, good work. Might be of interest:

http://freeswitch.org/node/329

Thanks for the link. I now have a reason to migrate from Asterisk to Freeswitch