Archive for May, 2008

P2PSIP and pushing voice down into local clouds…

Friday, May 23rd, 2008

p2psip.jpgWhy do you write so much about P2P SIP? Who’s really going to use it? Why do you care? Isn’t it really just a lame attempt to create an open standards version of Skype?

As you might imagine, I’ve heard those questions more than a few times. And yet still I keep writing about it. Why? Part of the answer lies in my post back in Decembertoday the world of SIP is all really “client/server” but the future might be quite different. Today you have SIP user agents that register and connect to SIP servers (which might be SIP proxies, SIP registrars or other types of servers). In fact, our own Prophecy product is a powerful SIP application server. Our Evolution developer portal is a massive SIP-application-server-in-the-cloud (more here) that connects to and from SIP clients.

But now imagine a SIP deployment without servers.

Imagine that you could simply distribute a series of SIP phones and have them all rapidly interconnect to each other and start communicating. Think of how fast you could potentially deploy a small office. In this time of US presidential campaigns, I think of the “advance teams” that are dropped into some office space in some city to organize an area. Imagine if they could be given a bunch of phones which just self-organized into a working communication environment? Plug the phones into a network switch and have them sort out extensions, PSTN gateways, all of that. There are all sorts of similar situations. Teams of consultants or auditors. Emergency environments. Short-term branch offices. Outside of the rapid deployment, there are just general uses in small businesses that don’t want to pay for servers. You could even see it being used in a home environment. Today this kind of thing can be done with “teleworker” phones hooked back to a central IP-PBX or hosted service (I know because I helped launch one back in 2003), but what if it could be even easier?

This is the promise of P2P SIP. Take a bunch of SIP endpoints and they form their own P2P “cloud” (or “overlay network” in P2P lingo). They discover resources like PSTN gateways or application servers. If a phone dies, the P2P cloud routes around it and continues. Communication happens.

Now the reality is not quite there today. There is a great amount of work being done within the IETF on this subject through the P2PSIP Working Group. There are P2PSIP implementations (mostly open source and a few commercial). There is a great amount of academic research going on (one example here). It is all still early days, though.

And on one level, that is what is so exciting. We are re-imagining what a network could be. We are pushing the power and intelligence truly out to the very edge of the network.

We are creating clouds.

Local clouds. Self-organizing clouds. Network “clouds” that connect to other clouds. It’s a different mindset… a different paradigm… thinking of networks not in terms of servers with their clients but in terms of nodes able to communicate with other nodes.

Will it work on a large scale? We’ll see… there’s a whole whack of security issues… privacy issues… scalability issues… but people are looking at those issues. Skype has certainly shown that a P2P telephony environment can be created and can be quite successful. (Although it should be noted that purists might not consider Skype a pure P2P network because they do have enrollment servers that deal with authentication, etc.) Other P2P networks for file sharing have shown the potential is there to build massively scalable networks. The building blocks are all around us.

So what’s the Voxeo angle, eh? Why do I care about it?

Two answers, really. First, there is the basic reality that just because you are creating a new way of connecting a telephony system it doesn’t remove the need for voice application services. You still want to run voice applications. You still need IVR systems. You still need ways to mashup voice with web services. You still need to connect to the PSTN. Some of those services may be able to live within the actual P2P cloud. Some of them will need to be in external servers or services. Obviously that’s what we do and so my interest is in how our software and services might play in this evolving space.

Second, it’s all about clouds. While there is a huge buzz these days about “cloud computing” and “virtualization“, this is what we’ve been doing here at Voxeo since our founding back in 1999! You can go right now to our Evolution developer portal, create your free account and start building voice applications that run in our massively distributed computing cloud. Behind the scenes, there’s a massively-scalable, geographically-distributed, open-standards-based, redundant (and, incidentally, patented) network architecture that virtualizes your voice and IVR applications. You have no idea what server your voice apps are running on and you don’t care. Need more ports… need more CPU cycles… the cloud adjusts for all of that. It’s all transparent to you.

Our “cloud” is then connected out into other “clouds”. You can connect to our cloud from the PSTN, SIP or Skype and then go back out to the PSTN or SIP clouds. We’re part of the massive interconnect currently being built online.

So as there is the potential to create local P2P “clouds”, my interest on multiple levels is pretty basic - how do we connect those small local clouds to our larger cloud and from there to the rest of the interconnected voice and data networks? I want to look at how our services can enable the proliferation of P2P SIP clouds.

Sure, large numbers of “production” deployments of P2P SIP are probably 3-5 years out… maybe even longer (but maybe not). At the current time there’s not a whole lot I can really do except engage in the ongoing conversations about P2P SIP and try to see what where it’s going. But that’s what I and my colleagues in our Office of the CTO do. We’re the guys up in the crow’s nest looking out and scanning the horizon for what’s coming next. Companies that expect to be around have to keep doing that. So that’s what I do. And that’s why I write about P2P SIP and why I’ll keep writing about it.

It’s all about the clouds… and how we connect them all together…

Technorati Tags:
, , , , , , , , , , , ,

IETF P2P Workshop agenda and papers now available

Tuesday, May 20th, 2008

ietflogo-2.jpgAs I wrote about previously, the IETF is hosting a “P2P Infrastructure Workshop” next week on May 28th on the MIT campus near Boston. There have been some updates in the past week:

Reading through the agenda, it sounds like it will be a great session. P2P is really the next great area of network development, in my opinion, and making sure that the environment is such that we can do it well is key to seeing innovation and growth in that space. Anything like this workshop that can help set the stage for P2P developments is definitely to be encouraged.

P.S. I had hoped to attend myself, but given that I’ve got a moving truck showing up about 36 hours after this workshop ends (I’m moving from VT to NH) I somehow don’t see me getting down there.

Technorati Tags:
, , , ,

P-Charge-Info and incredible disconnect between PSTN billing and the new world of SIP

Tuesday, May 13th, 2008

ietflogo-2.jpgDo “intrastate” versus “interstate” billing rates make any sense whatsoever in the world of SIP where geography ceases to be relevant?

There is a fundamental disconnect today between the legacy world of PSTN billing practices and this new world of SIP-based interconnection that we are all building. The Internet ignores geography. We can connect to any random points in the cloud, regardless of where they are physically located.

But until the day when we have truly built the IP-interconnect and can all be bypassing the PSTN, we do have to deal with the PSTN… and all the legacy tariff/billing infrastructure that goes with it. How do you mesh the two worlds?

Consider this case within the US:

  • A company in Massachusetts with phone number 617-555-1111 calls a customer
    also in Massachusetts with phone number 617-555-2222.

  • The Caller ID presented to the receiving party is 617-555-1111.

  • The company calling is billed the intrastate rate because the call appears
    to have originated and terminated within Massachusetts. For this
    example, and purely picking a number out of the air, let’s say the call at intrastate rates would have cost $5.

  • However, the company in MA was actually using a hosted telephony service
    and while the call appears to have originated from Massachusetts based
    on the CallerID presented to the user (and transmitted as “6175551111@sipgw.carrier.com” in the SIP From
    and/or P-Asserted-Identity headers), the number actually entered the PSTN
    from a data center in New York with the number 212-555-1111.

  • Had the calling company presented their billing identifier as 212-555-1111, they
    would have been billed the interstate rate for calling and for this
    example let say that the call would have only cost $3. (And yes, for those of you outside the US, this is true, calls within a state are more expensive than calls between states!)

  • Naturally, the calling company wants to present its Caller ID to the
    end user as its own number of 617-555-1111 but it is contracting with the
    SIP telephony hosting provider in part to get cheaper rates. The hosting provider would
    naturally like to be billed at the interstate rate versus the intrastate rate
    when the calls enter the PSTN from their data centers.

There is the disconnect. PSTN billing is still tied to the identity of the originating number as seen through the carrier’s billing systems. Yet with SIP, the caller identity can be different from the identity of the PSTN interconnect point. (And yes, “Caller ID” can be spoofed on the PSTN but there are still underlying billing identifiers in the PSTN signaling.) As long as we continue to have tariffs in North America that have different rates based on geography, we’ll continue to have this problem.

A few years back, the folks over at Sonus Networks came up with an idea to address this disconnect - pass a custom SIP header called “P-Charge-Info” in the SIP INVITE that sets up the call and include in that header the SIP address to which to charge the call. They added this header to some of their equipment and some carriers started using it. So in the case above, the SIP headers might include headers like these:

From: <sip:617555111@sipgw.carrier.com>
P-Charge-Info: <sip:2125551111@proxy.hostingprovider.com>

To the person receiving the call, nothing has changed. The “Caller ID” that is presented on their phone is the same identity they saw before. But inside the cloud, the billing identity has been changed.

[Do note that there's a double-edged sword here. If the hosting provider and the carrier agree to use P-Charge-Info as the authoritative header for billing purposes, and then in my example above the Massachusetts customer starts making a lot of calls into New York they will wind up being charged the higher intrastate rate based on the P-Charge-Info header. So some analysis of calls needs to be done before agreeing to use this special header.]

Anyway, as one of the largest providers of VoiceXML/CCXML hosting, we are always looking at ways to ensure our customers receive the fairest billing. Late last year after one of our carriers suggested we look at using the P-Charge-Info header, we did so and were quite pleased with the results. Subsequently we have now started using this with multiple carriers.

Being strong proponents of open standards, we noticed that P-Charge-Info was not yet registered on IANA’s list of SIP parameters and so we approach Sonus Networks about going through the RFC 3427 process of registering a custom P-header. They agreed and so Tolga Asveren from Sonus Networks and I submitted an Internet Draft defining the P-Charge-Info header. We received a good bit of feedback/critique and our fourth version (-03) was just posted today.

Why are we going through this registration process, which can be quite lengthy? Several reasons:

  • Expanded Usage - We would like to use this with other carriers but until this draft there was no specification for exactly how the header should be used. We would like this to be available as something to point other carriers/service providers to.

  • Prevention of Further P-header Proliferation - Right now, if someone is looking for a SIP header to pass billing information, odds are they will look at IANA’s registry to see what headers have been added to SIP. Today the only billing headers are those of the 3GPP defined in RFC 3455 which do differ in intent from what P-Charge-Info does. If they don’t like the RFC 3455 P-headers, they may very well go off and invent their own P-header (anyone can) to deal with passing billing information.

    Our concern is that as we all in the industry continue building this IP interconnect, sooner or later we’re going to want to find ways to exchange billing information and if we have six different headers in production use it’s going to be a real headache. In the ideal world we would have a standard header (not a P-header) for passing billing information and probably we eventually will… but that will take some time to get developed and then deployed. In the meantime, let’s document and register what’s out there now so that people can see the choices they have and not necessarily go right off creating yet another billing information header.

  • Prevention of Identity Conflict - It’s very possible that someone going off and creating their own SIP P-header could very well choose to call their header “P-Charge-Info”. One would hope that someone creating a new P-header might use Google to search for the header name they are planning to use (in which case they would discover this existing usage of P-Charge-Info), but someone might not and start using it. It could then happen that some day someone out there would wind up needing to interoperate with two different pieces of equipment that both use a “P-Charge-Info” header, but in different ways. IANA registration is designed to help prevent this.

  • It’s The “Right Thing” To Do - If you read section 4.2 of RFC 3427 it states very clearly:

    Any P-header
    used outside of a very restricted research or teaching environment
    (such as a student lab on implementing extensions) MUST meet those
    requirements [of section 4.1] and MUST be documented in an RFC and be IANA registered.

    Now obviously no one is enforcing this. There are many P-headers in common usage today that are not documented. No one will slap you down and revoke your right to use SIP if you don’t. But it’s the right thing to do for the reasons outlined above as well as to respect the process defined in RFC 3427.

So where is P-Charge-Info in the RFC 3427 process of IANA registration? Well, Tolga and I now have a fourth revision of our Internet Draft out (it’s the fourth because the first was “-00″) and we would very definitely like comment on the draft. Please do send them in via email (or leave them as comments here). Once the document has gone through more review (perhaps another draft or two) we will then continue the steps in section 4.1 of RFC 3427 and request “expert review”. Ultimately the goal is to have the document published as informational RFC so that it can be registered with IANA.

As I said, comments and feedback are definitely welcome. What do you think of the document? of the problem we are trying to solve?

Technorati Tags:
, , , , , , , , ,

SIPit 22 summary now available

Thursday, May 8th, 2008

sipit.jpgAs we mentioned previously, SIPit22 was held April 14-18, 2008, up at the University of New Hampshire Interoperability Lab. SIPit coordinator Robert Sparks has now posted a SIPit22 Summary which provides a view into the types of products that were being tested.

Now the summary is based on surveys filled out by individual vendors, so it relies on their accuracy (i.e. the information is not independently verified) but it makes for interesting reading. (I was personally struck by the fact that 42% of the SIP implementations indicated they had IPv6 support!) These summaries (older ones available, too) are useful in seeing what vendors are actually deploying and developing versus what we are discussing in the IETF. As noted in Robert’s final paragraph, the issue of NAT traversal for SIP still continues to be one of the most challenging aspects of interoperability.

For our part, attending SIPit 22 was very worthwhile as it gave one of our lead developers a chance to really test the improvements we are making to our SIP stack in an upcoming release of Prophecy. Stay tuned for more on that in the months ahead.

If you do have a product that works with SIP, we do strongly recommend that you do consider attending a SIPit event with your product. We’re a huge believer in open standards… and there’s no better way to test how “standard” your implementation is than to be testing it with a wide range of other vendors!

Technorati Tags:
, , , , , ,

What is a “P-header” in SIP? (and why/how would you use one?)

Tuesday, May 6th, 2008

Have you ever wanted to send information between two applications using SIP that didn’t fit into one of the existing “headers” that are using in the SIP communication exchange? Did you look through the various headers in RFC 3261 (and associated RFCs) and find that none fit exactly what you were seeking to send?

If so, what you can use instead is what is called a “private header” or “P-header” for short.

Before we jump into P-headers, let’s first take a moment to switch to the world of email. With email, there are so-called “experimental headers” that are sent in the SMTP exchange that all start with “X-”. Here are some examples:

X-Priority: 	Normal
X-Mailer: 	Apple Mail (2.753)
X-Authentication-Warning: 	blogs.voxeo.com: apache set sender to wordpress@blogs.voxeo.com using -f
X-Spam: 	exempt
X-Mail-From: 	<wordpress@blogs.voxeo.com>
X-Source-Ip: 	[(unknown)]

These “X-” headers are added by various programs to email messages that are sent and share the common characteristic that they are all informational. They do not indicate any action that has to occur. They are not SMTP commands. Each of these X-headers are purely containers of information that is passed along in the SMTP message. On the receiving end, the application accepting the SMTP connection can look at those X-headers and then potentially decide to take some action on the received message based on the contents of those X-headers. If a receiving application doesn’t no what to do with an X-header it receives, it simply ignores the header. With regard to the “informational” nature of X-headers, the idea is that if an application ignored all X-headers, the email message should still be able to be delivered. X-headers add extra information and capabilities, but don’t block the basic existing SMTP.

These “experimental” headers are now widely used by mail programs, by anti-spam software and basically all sorts of other programs that interact with email. They are a way to pass along extra information about the email message. Companies, vendors and individuals can all define and use their own X-headers to try out new services and offerings. They don’t need to check with anyone. They can just go ahead and create a new header to try it out. (Presumably checking first to see that their new name didn’t conflict with existing X-headers on their network.)

Back in the world of SIP, the IETF defined a process in RFC 3427 for extending SIP that was similar to the experimental headers of email. The fundamental difference was that in SIP instead of beginning with an “X-” the headers begin with a “P-”, as in “P-Asserted-Identity”. Otherwise, they are very similar. P-headers in SIP must, like the X-headers of email, be purely informational. They cannot be used to create new commands and must not interfere/block the regular transmission of SIP messages. They merely pass extra information that the receiving application can choose to do something with (or not).

Here are some examples:

P-Asserted-Identity: "Dan York" <sip:dan@company2.com>
P-Charge-Info: <sip:proxy1@company2.com>
P-Charging-Vector: icid-value=1234bc9876e;
                   icid-generated-at=192.0.6.8;
                   orig-ioi=home1.net
P-Visited-Network-ID: "Visited network number 1"
P-I-Made-This-Up: "Pretty silly, isn't it?"

Here is how a couple of these would look in an actual SIP message:

INVITE sip:1234@company2.com SIP/2.0
Via: SIP/2.0/UDP proxy.company2.com:5060;branch=z9hG5bK21ghi7ab34
Via: SIP/2.0/UDP sip.company1.com:5060;branch=z9hG4bKnashds7
To: sip:1234@company2.com
From: sip:dan@company1.com;tag=451248
Call-ID: 324817637683475998ababcc10
CSeq: 1 INVITE
Contact: sip:dan@company1.com
Max-Forwards: 50
P-Asserted-Identity: "Dan York" <sip:dan@company2.com>
P-Charge-Info: <sip:proxy1@company2.com>

The application receiving this SIP message can then choose to read these headers and potentially perform some action based on the contents of the headers. (If you are developing your application on our platform and using CCXML, we’ve provided instructions for how to access those SIP headers.) For instance, the “P-Asserted-Identity” header is very often used as the “Caller ID” that is displayed on the end user’s phone or other SIP device.

So what should you do if you want to start using a P-header to pass information via SIP between two applications?

First, you should head over to the IANA registry of SIP headers to see if someone has already defined a P-header that might do what you are looking to do. For instance, P-Asserted-Identity has been defined in RFC 3325. The 3GPP has defined several P-headers related to IMS in RFC 3455.

Second, if you don’t see any defined P-headers, you might want to search the IETF database of Internet-Drafts to see if there are any P-headers in a proposal stage that might work for you. The process of registering a P-header with IANA (so that people know about it and to prevent naming conflict) is documented in RFC 3427 and first involves the creation of an Internet-Draft document. For instance, I have an Internet-Draft submitted on the P-Charge-Info header that we are seeking to register with IANA.

Third, while in the IETF database you might also just want to search for the general type of information you are seeking to pass between applications. It may be that there is some work underway in an IETF Working Group that would wind up creating standard headers (versus P-headers) to pass the information you are seeking to pass.

Finally, if you are unable to find any current or in-progress P-headers, you can create your own. Keep in mind that it should start with “P-” and the general convention has been to put a dash between any words in the name and to use initial capitals, as in “P-Asserted-Identity”.

For more information about creating P-headers, please do read RFC 3427.

Technorati Tags:
, ,

Did AOL just become the biggest SIP fanboy on the block?

Thursday, May 1st, 2008

aollogo-1.jpgDid AOL, the historical king of walled gardens, just become the biggest public advocate for SIP and open standards for VOIP?

That’s the point David Beckemeyer makes in his blog post challenging my view of the launch of AOL’s “Open Voice Program” as of questionable value. David counters:

However, it is significant for SIP - we now have a household brand not referring just to “VoIP” but referring to “SIP” - the standards-based protocol for VoIP, something neither Skype nor Vonage has done. SIP means interoperability and that’s a good thing for users and the VoIP ecosystem at large. A brand as big as AOL providing awareness for SIP and promoting interoperability is terrific - nobody else is doing it.

He goes on:

It’s important to note that we have never been able to do this so with Skype, even though the service has been out for four years or more - they could have offered this years ago.

Indeed… point taken, David.

While many of us in the VoIP industry have been trumpeting SIP as the VoIP protocol of choice for years, and work of groups like the SIP Forum has helped in that, outside the walls of our telecommunications/networking community a poll of people would probably find that pretty much no one has heard of “SIP” as it relates to VoIP.

On one level, why should they? It’s just a protocol and at the end of the day it shouldn’t really matter. People just want their phone to work… and SIP and other protocols are just the underlying plumbing.

But for those of us who passionately want to see that plumbing be based on open standards like SIP, David’s right… putting the AOL brand behind SIP is a good thing to help raise awareness of SIP and the need for interoperability. AOL is letting users connect any SIP device to their network. Any device. Not just “certified” ones… not “recommended” ones… any device.

It’s a beautiful thing.

And maybe, just maybe, the people who do start using the service will enjoy the freedom of choice that comes with interoperable open standards and maybe… maybe… they’ll start asking for that interoperability in other services. <rosecoloredglasses>Is that too much to hope for?</rosecoloredglasses>

And so while I still may wonder how many people will really use AOL’s service, as a huge believer in open standards… working for Voxeo, a company who bases its existence on open standards… as a believer in the messy but open process of the IETF to create SIP standards… as an advocate for open protocols and interoperability… as all of that I have to join David in applauding AOL’s move. Thank you, AOL, for jumping behind SIP and helping, in some small way, to help tear down the walls that have locked in telephony for way too long.

Go AOL! Go SIP!

Technorati Tags:
, , , , , , , , ,