Friday, July 31, 2009

Jingle Relay Nodes Full Description


In the creation of the very first version of the Jingle Protocol, one of the main goals was to achieve a P2P enable protocol, that would depend on XMPP for routing, but would be also able to negotiate sessions and exchange content without main proxy servers like present SIP deployments.

After 5 years we still don't have any massive deployments containing and fully supported the current specifications, and even the closer to the specification ones are suffering when P2P is not possible and relay is required and there is no available ones.

SIP in the other hand is not very efficient and simple for P2P methods but is widely deployed around the planet as it is much simpler to deploy and although with higher costs, can provide media connectivity.

Jingle Nodes comes in place with the goal of making more nodes available, as it makes the task of having public relays close to trivial, as you just need to run an XMPP client with a Public Node Policy available for everyone. Also makes every buddy in your contact list a potential Node.
Another positive point is that a client don't need to implement a Relay Node if not applicable, it only needs to implement the Usage specification that would be no more than two or three pages of specification as the main logic is on server side.

A few words about Jingle Nodes
Jingle Nodes and Super Nodes are intend to provide easy to use Jingle Relay Type Candidates that can be used in ICE-UDP and also on RAW-UDP Jingle Sessions.
Relay Candidates can provide NAT Traversal for users that don't have STUN/TURN Support, but also for users with STUN/TURN support that the negotiation failed.

What about similar architecture and approach?
The unique similar project is Skype, which is a closed and non inter-operable network.
Skype Network works in a similar way except that on Skype you can't choose whether share your bandwidth or not. And as a closed protocol you can't do anything about it.
On Jingle you can choose to share with:
* everyone
* nobody
* only buddies
* only whitelist
* blacklist
* etc...
In other words you are free to choose and decide about your device and network.

Another similar technologies but with less coverage is STUN/TURN.
STUN is very nicely designed technology, and it is responsible for almost all P2P VoIP traffic available nowadays. The idea is very efficient and assertive.
I also like TURN security and assertion, but it doesn't seem like the market already adopted it very widely to serve as the default VoIP relay system. But both lacks badly in simplicity and implementation timeframe.
TURN RFC is something about 80 pages, which makes it very complex and unpractical for "thin" clients like mobile voip clients, where vendors needs to release a version for almost each new mobile phone model.
Jingle Relay Nodes uses the benefit of the embedded security and flexibility of XMPP to provide the same functionality of Relay, but in a much simpler process and minimal implementation.
So we can finally have XMPP Clients doing VoIP with a pure XMPP Stack Client.

What is it that people really need?
People needs to talk. End users don't necessarily care about which protocol or connection type is being used in the call, but if it effectively has audio and with reasonable quality.
The Jingle Nodes try to promote the beauty of P2P, but without dropping the Jingle Responsibility with the end user, which is call completion.

What does Jingle have and what needs to be done?
Jingle already have specifications for Direct Media, P2P based on ICE-STUN, but it needs an extension to cover Jingle Relay Nodes.
The long term goal is to have Jingle widely deployed across the world and collaborate to this adoption by providing "easy to use" and "always works" solutions.

Wednesday, July 29, 2009

More on Jingle Relay Nodes

In the creation of the very first version of the Jingle Protocol, one of the main goals was to achieve a P2P enable protocol, that would depend on XMPP for routing, but would be also able to negotiate sessions and exchange content without main proxy servers like present SIP deployments.

After 5 years we still don't have any massive deployments containing and fully supported the current specifications, and even the closer to the specification ones are suffering when P2P is not possible and relay is required and there is no available ones.

SIP in the other hand is not very efficient and simple for P2P methods but is widely deployed around the planet as it is much simpler to deploy and although with higher costs, can provide media connectivity.

Jingle Nodes comes in place with the goal of making more nodes available, as every buddy in your contact list could be a potential Node, and specially makes the task of having public relays close to trivial, as you just need to run an XMPP client with a Public Node Policy available for everyone.

A few words about Jingle Nodes
Jingle Nodes and Super Nodes are intend to provide easy to use Jingle Relay Type Candidates that can be used in ICE-UDP and also on RAW-UDP Jingle Sessions.
Relay Candidates can provide NAT Traversal for users that don't have STUN/TURN Support, but also for users with STUN/TURN support that the negotiation failed.

What about similar architecture and approach?
The unique similar project is Skype, which is a closed and non inter-operable network.

Skype Network works in a similar way except that on Skype you can't choose whether share your bandwidth or not. And as a closed protocol you can't do anything about it.
On Jingle you can choose to share with:
* everyone
* nobody
* only buddies
* only whitelist
* blacklist
* etc...
In other words you are free to choose and decide about your device and network.

What people really need?
People needs to talk. End users don't necessarily care about which protocol or connection type is being used in the call, but if it effectively has audio and with reasonable quality.
The Jingle Nodes try to promote the beauty of P2P, but without dropping the Jingle Responsibility with the end user, which is call completion.

What does Jingle have and what needs to be done?
Jingle already have specifications for Direct Media, P2P based on ICE-STUN, but it needs an extension to cover Jingle Relay Nodes.
The long term goal is to have Jingle widely deployed across the world and collaborate to this adoption by providing "easy to use" and "always works" solutions.

Wednesday, July 22, 2009

SIP Communicator is Coming Back To The Family

After putting on hold Jingle support for some time, Emil Ivov, the SIP Communicator Founder, told me today that they are adding Jingle again in early 2010. And it will also come fully packed with new and powerful features like ICE P2P communication and Video support!

He mentioned that SIP Communicator project have now a speed boost, as they graciously received funding from NLnet foundation, concerning the completion of the ice4j stack, Jingle telephony, brand new support for file transfer, and multi-party conference calls for SIP and Jingle/XMPP.



Some Super Cool Expected Features:
* Jingle ICE - Enabling P2P and server-less communication
* Jingle Video - Enable real time Video chat
* H264 Codec - Provides great video quality with regular bandwidth usage
* ZRTP - Secure and encrypted Audio/Video Streams

Stay Tuned for More Jingle Happy Days!

Tuesday, July 21, 2009

Adobe goes P2P - XMPP and FMS

After Google requirement of having a P2P method to provide Voice and Video on GMail, Adobe finally put some effort and released a very decent support for P2P on Flash Player 10.
It is called Stratus and you can also you it as we do in UDP-ICE, we can have several alternative and fall-back methods, including RTMP as a last resort.

Adobe was probably holding this at all costs as they were afraid on the reduction of amount of FMS license sales. But it turns out that at some point they needed to open it, so they could get bigger market share, as not everybody can afford 100% of Audio/Video proxied on their networks.
This also means that every company now can have their own Voip Services and also full featured Video Conference Platforms running internally using only an ejabberd and FMS on server side and browser based application on client side.

I tested myself the UDP based traffic, and the quality as expect actually much better with compared with the Slow and Lagged RTMP TCP based solution, specially in long distance and high latency networks.



Check it out at:
http://labs.adobe.com/technologies/stratus/

Looks like now we have more consistent reasons to have kind of Flash RTMFP Transport in Jingle.
You can also see a very cool tutorial on this link (Flash P2P Tutorial).

Saturday, July 18, 2009

Why use Jingle?

Back in early 2006 I was working at Jive Software with Matt Tucker in a presentation for OSCON.
We were very excited as it was just after we published the very first Smack-Jingle version containing also the first implementation of Jingle ICE protocol in the world that was based on XSF Standards.

This presentation makes a parallel between SIP and Jingle and also exemplify why Jingle can solve P2P issues on SIP. The illustration of how ICE works is also awesome!

Check the presentation here:
Jingle-Cutting-Edge-Voip


Cheers Matt!

Friday, July 17, 2009

Jingle Nodes Preview

I've been working on Jingle Nodes XEP from the past 3 months. But as I usually do, I implement it beforehand so I can make sure I don't release any sci-fi specification.
So far the results are satisfactory and sounds promising even though the implementation is at very early stage.
I will post below some nice features to be covered and a RTP Diagram showing some use cases:

Main Goal
Jingle Nodes and Super Nodes are intend to provide easy to use Jingle Relay Type Candidates that can be used in ICE-UDP and also on RAW-UDP Jingle Sessions.
Relay Candidates can provide NAT Traversal for users that don't have STUN/TURN Support, but also for users with STUN/TURN support that the negotiation failed.

Similarity
Skype Network works in a similar way except that on Skype you can't choose whether share your bandwidth or not. And as a closed protocol you can't do anything about it.
On Jingle you can choose to share with:
* everyone
* nobody
* only buddies
* only whitelist
* blacklist
* etc...
In other words you are free to choose and decide about your device and network.

Diagram


Jingle Client Developers with interest in helping creating prototype or being early adopters are welcome. Leave a comment and you will be contacted.

Mobile Voip over XMPP

Mobile Voip is one of the hottest trends now on new generation phones. But what's the most efficient way to do it?
In a time that calling is not the absolute main feature, but another in a combination of: Calling, Presence and Contacts. Telecom companies choose to go for SIP/SIMPLE IMS based systems.
Well it turns out that we all know that it exists but we never saw it live in a mobile in front of us. I mean, at least in a way that the battery survived more that 4 hours or so.

Analyzing IMS specs you will notice that it is nothing but a lot of work around in order to let SIP do what he wasn't meant to do from the beginning. And another question that pops up is interoperability, as the specs are quite open to interpretation in several aspects.
Work-arounds like XCaps which is just a web service but behind a cool name and lack of a defined and more strict way for contact management are leading IMS implementations through a long off-road track. A race that they don't wanna quit as they spent billions of dollars acquiring already obsolete plataforms.

In the other hand XMPP have shown that Presence and Contact List are very simple doable things and that this can inter-operate successfully among different networks, devices and even protocols.
And now it has another advantage, which is the mobile Voip ability. Already deployed live for millions of users on Nimbuzz Network.
One of the coolest features of Jingle it is his almost natural way to deal with P2P negotiations, which leads to much better and reliable negotiation of media specially when compared to SIP.
XMPP Jingle demystified Voip showing the real simplicity behind it, removing all the obfuscated logics behind SIP tags, branchs, CSeqs and transactions. (Check MiniJingle as an example)

All this packed together can guarantee that whatever the market wants in next months and years, XMPP is way ahead when dealing with extensibility, simplicity and interoperability.
Which are the strongest tendencies for near future communication.

Friday's Top 5 - Must Die Applications

Big companies are always trying to overuse their versions, dragging them to the limit of "durability" seeking for extra profit. But just like real waste, this is not healthy for software ecosystem.
We all are annoyed by software waste, specially that ones that drag us in order to keep backward compatibility.
Something that big companies also don't tell is that backward compatibility is always responsible for at least 25% of overall costs of a new version. So now guess who pays for that? YOU!
So this Friday's Top 5 is dedicated to all crap waste software and technology that stays among us.

5. RealNetworks Real Player
"In order for your browser to display the following paragraph this site must download new software; please wait. Sorry, the requested codec was not found. Please upgrade your system."
I still don't believe when some people say that they saw a web site using it. The lowest usability, compatibility and flexibility you can achieve in a media player.
Besides the original format never took off specially due special requirements and slowness.

4. Norton Uninstall Tools
Why would you want an application to uninstall another? I understand that on Windows 95 Mud Times, but now with a huge set of different softwares and different installation procedures and mainly decent ones with correct unistallation, why would you use Norton Unistall?
And more, we are almost in 2010, I can't believe you still using operating systems that don't provide at least a regular package and installation manager.
(If you are an user, starting changing your OS to something good(Ubuntu, MacOs, Debian, etc...) before going to such solutions.) But this one is unused that don't even pollute our software environment.

3. Windows Vista
Red, Pink or Brown? Red!
Windows vista is the most non-baked OS that was shipped out this decade.
Containing lots of ridiculous newbie issues, regarding graphic cards, permissions, security, usability, stability and specially performance.
What about compatibility? That was quite a disaster on very first versions. The IT economic crisis might have some relation with this...hehehe
Well, I don't have to describe one of the biggest reason to start using Linux ever.

2. IE6
Better known as "Microsoft Bug Collection", Internet Explorer 6 still being used for a lot of unresponsive people all over the world. And also causing a lot of work to Web Developers in order to achieve compatibility with one of the worst piece of software ever dragged.
It is said that browser compatibility consumes at least 30% of development time and effort in a Web application, and it gets even worst when it comes to Web 2.0 applications.
IE6 is considered the scariest nightmare for the Web Developers, Users and whoever gets closer to it.

1. IPV4
The Number 1 Enemy of: Voip, Security, Scalability, Flexibility, P2P etc...
Considered obsolete since 1995 with the creation of RFC1752, IPV4 is being dragged causing a lot of side effects including hundreds of thousands of companies, software and even protocols in order to solve its problems and limitations.
A great example is ICE specification for P2P Connection, contains more than 70% of dedicated content, that didn't even need to exists if IPV4 had fade out already.
Besides IPV4 being a obsolete old guy, we own it lots of respect for being one of the biggest drivers for Internet the way it is nowadays.
We love and hate you IPV4!

Thursday, July 16, 2009

FISL10 Presentations

On June 2009, I was invited for two talks on FISL10 in Brazil.
The first one was about XMPP Freedom and its master plan for world domination.
The second one was a hands on session implementing a Jingle Client in 40 Minutes using MiniJingle.

Attending to wishes I'm dropping them here as Drop.IO which is in my opinion one of the coolest and newest tools on the web regarding file sharing and collaboration. Cheers and Congrats to Drop.IO XMPP Team!

XMPP and Mobile Freedom - Download
Jingle CookBook - Download

Wednesday, July 15, 2009

Google Voice - So... What New?

Google Announced officially the release of Google Voice.
Besides all market posts and mass comments, the set of new or innovative Voice Features so far are empty. They are just trying to move backwards in time when talking about obsolete and non simple features.
I honestly was expecting much more than a service binded to a real mobile number attached to a formal operator.
In a time that everybody is questioning the meaning of a phone number in the "post email ERA", Google came and released a service based on operator number.
When it might be a short term boom, but as other examples, this might achieve some success not for an innovative concept, but based on Google fame. Google fans probably will use it just to be recognized as early-adopters.
Where is the Interoperability? The Extensibility? The Open Service API? It seems like some basic principles of new Internet where forgotten somewhere under operators shoes.

In short words: "Google Voice does basically what your phone and your operator together always did."

If you are really looking for something that your phone never did before, try Nimbuzz Mobile and feel the real sensation of doing something that your phone never have done before.

Nimbuzz will show you that a "phone number" is the last thing in the world that you need in a full communicator solution.

Nimbuzz uses XMPP and Jingle in order to provide the biggest and feature rich mobile platform ever.

Monday, July 13, 2009

My Fridge XMPP Client

No, it is not a Jetsons Episode! A few weeks ago I spoke with a guy from an appliance Industry, and guess what?
XMPP is being tested as the solution for domestic devices interactivity.
Meaning that in some years you will probably check in real time the presence of milk and ice cream in your fridge directly from your phone, wherever you are! (Via Nimbuzz?)
Interesting things you might be able to do:
* Monitor you food consumption at the end of the month.
* Check whats missing at the supermarket. Goodbye to shopping lists.
* Check if you forgot your oven on, and be able to turn it off remotely.
* Speed up the cooling of your beer before you get home.
* Get updated in real time and receive pictures in case someone break into your house. Directly in your phone.



I cannot tell the company name, but they promised to have something in the Brazilian market by 2011 as pilot.

Check some Jetsons and Inspector Gadget episodes for more ideas.