Dan York

Just a guy in Vermont trying to connect all the dots...

Author's posts

The Publishing of RFC 8496 Concludes the 10-year Saga of P-Charge-Info

Rfc 8496 p charge info

October 31, 2018, was a special day for me. Not because it was Halloween, but because after 10 years a small little document I co-authored about the "P-Charge-Info" header for SIP-based Voice-over-IP (VoIP) was published as informational RFC 8496. You can see it at either:

Ultimately, all this document does is register the Session Initiation Protocol (SIP) Header Field of "P-Charge-Info" within the "SIP Parameters" registry maintained by IANA at:

But the story of getting that registration to happen is a long one!

In the beginning...

The short version is this. Back in around 2007 or so, I was working for Voxeo and we were using the "P-Charge-Info" header in our large SIP-based application server to pass along billing information. Essentially, when someone made a call on our system, we wanted to pass a billing identifier that was often different from the source phone number (i.e. "CallerID"). This quote from RFC 8496 was pretty much Voxeo's use case:

As another example, a hosted telephony provider or hosted voice application provider may have a large SIP network with customers distributed over a very large geographic area using local market PSTN numbers but with only a very few actual PSTN interconnection points.

The customers may all have local phone numbers yet outgoing calls are actually routed across a SIP network and out specific PSTN gateways or across specific SIP connections to other SIP service providers. The hosted provider may want to pass a billing identifier to its SIP service providers either for the purpose of simplicity in billing or to obtain better rates from the SIP service providers.

While we at Voxeo were already using P-Charge-Info extensively, we wanted to use the P-Charge-Info header with more SIP service providers, and needed some form of documentation for how to use the header. We also were concerned about the profileration of more P-headers and wanted to register "P-Charge-Info" with IANA so that more people might find and use that header rather than inventing their own. (We were happy with P-Charge-Info and didn't want to have to support more SIP headers related to charging identifiers.)

So I began the process of submitting an Internet Draft way back in February 2008 documenting P-Charge-Info and requesting its addition to the IANA registry.

Almost immediately Tolga Asveren, then at Sonus Networks, contacted me to let me know they were using P-Charge-Info in the SIP equipment they were selling. He had some great suggestions, supplied some additional text, and was interested in working on the document with me. So I published a -01 draft 3 days after the first draft, and Tolga and I began our 10-year journey through the process of getting this document published.

Square pegs in round holes - slamming ISDN info into a SIP header

Along the way, others approached us from traditional PSTN telecom companies indicating that they were interested in using P-Charge-Info as a way of passing the "ISUP Charge Number" that was part of ISDN signaling. Though it was not something that either Tolga or I worked directly with, we were okay adding this in, and so two new parameters got added:

  • Numbering Plan Indicator (NPI)
  • Nature of Address (NOA)

... along with a substantial amount of new text.

A 2011 version of the document can show what this was all about.

Lost in limbo

Meanwhile, the document had gotten caught up in the need to wait while RFC 3427 was replaced by RFC 5727, which defined the whole SIP Header Field registration process.

And then I wound up leaving Voxeo to join the Internet Society (my current employer). And so my attention was no longer focused on VoIP and so this draft was truly a "back burner" kind of thing that I just worked on in random moments.

And unfortunately, it turned out that slamming legacy PSTN signalling into a SIP header caused a whole number of challenges, both with getting agreement - and also with some of the internal IETF processes. It turned out that to do this registration, we were going to have to do some other registrations - and more.

I also published a version that changed some of the parameters values in a way that was not backwards-compatible, which caused some friction.

By 2015, both Tolga and I were ready to ... just... let... it... die...

Returning from the dead - and returning to the SIP roots

And then in early 2017, Henning Schulzrinne and Richard Shockey contacted me to let us know that the US FCC was interested in the status of P-Charge-Info. The FCC had some billing issues between carriers where the carriers were in some cases already using P-Charge-Info, but the carriers really wanted an actual RFC versus an expired draft. There was also some potential interest in having the header around as one of many different tools in the FCC's efforts to combat robo-calling / spam phone calls.

So Tolga and I worked with Henning and the IETF area directors to come up with a plan to resuscitate the document. In doing so, we stripped out all the legacy PSTN signaling. Specifically we removed the NPI and NOA parameters, and all the mentions of the ISUP Charge Number.

We returned it to the simplicity of the original document way back in 2008.

The original goal had been to simply document existing usage of the P-Charge-Info header, as it was being used by various SIP providers and vendors. We returned it to that root.

Success!

After a number of further drafts, an expert review by Adam Roach, and more feedback from Area Director Ben Campbell, the draft finally entered the RFC Editor queue by way of the Independent Series Editor (ISE). Many thanks are due to Ben to sponsoring the draft. He, Jean Mahoney, and Adam were all critical in helping get it across the finish line. Thanks, too, to Henning and Richard who provided the spark for us to revive the document.

It would not have happened, either, if Tolga had not taken the lead over the past year in making edits, answering all the questions from people, proposing solutions and continually asking how to move the draft forward. I may have been the one editing the XML and submitting the new draft versions, but he was the one driving the text revisions.

It's great to see the document finally published as Informational RFC 8496. Looking back on the journey, there were:

  • 16 revisions of draft-york-sipping-p-charge-info (2008-2012)
  • 6 revisions of draft-york-dispatch-p-charge-info (2012-2015)
  • 9 revisions of draft-york-p-charge-info (2017-2018)

Now, granted, some of those were a simple "update to keep the document from being 'expired'", but still it was all a great amount of work.

I learned a HUGE amount along the way. When the journey began in 2008, I didn't really understand much about IETF processes. Now I do - and now understand how we could have done this quite differently along the way.

Thanks to everyone who provided feedback and support over the years.

P-Charge-Info is finally registered in that IANA registry! :-)

WordPress.com Offering free .Blog subdomains for new sites

 

The good folks over at WordPress.com are doing something interesting - they are giving free .blog subdomains for any new sites created on WordPress.com.

Now, to be clear, this is not ANY subdomain under .blog. For instance, I was immediately curious if I could get “danyork.blog”, but no, they are giving away for free third-level subdomains under the following second-level domains:

  • art.blog
  • business.blog
  • car.blog
  • code.blog
  • data.blog
  • design.blog
  • family.blog
  • fashion.blog
  • finance.blog
  • fitness.blog
  • food.blog
  • game.blog
  • health.blog
  • home.blog
  • law.blog
  • movie.blog
  • music.blog
  • news.blog
  • photo.blog
  • poetry.blog
  • politics.blog
  • school.blog
  • science.blog
  • sport.blog
  • tech.blog
  • travel.blog
  • video.blog
  • water.blog

So I could possibly get “danyork.tech.blog”, “danyork.news.blog”, “york.family.blog”, or “Vermont.travel.blog”. Basically, a free domain underneath that set of domains.

When you create a NEW site (and that is important because this is currently NOT available to existing WordPress.com sites), you will have a chance to claim one of these subdomains in this process.

Now, for most of us who are more serious about this, we may already have a domain. Or at least will want to get our own.

But for someone just starting out, I could see this being a useful way to get started without having to buy a domain, get it set up, etc.  Cool move by the Automattic team behind WordPress.com!

Video: Mit Docker Compose WordPress installieren

Kurz nach der Veröffentlichung meines letzten Beitrags über die Verwendung von Docker zur Installation von WordPress und MySQL, habe ich zufällig ein Video, das im Grunde den gleichen Prozess:

Der Sprecher geht durch die Schritte, die Sie tun müssen, um die Docker-compose.yml Datei, auf die ich in diesem letzten Beitrag hingewiesen habe.

Viel Spaß!

Video: Using Docker Compose to install WordPress

Shortly after publishing my last post about how to use Docker to install WordPress and MySQL, I happened to watch a video showing basically the same process:

The speaker walks through the steps you need to do to create the docker-compose.yml file I referenced in that last post.

Enjoy!

Nominations Now Open for Public Interest Registry (Operator of .ORG) Board of Directors (Featured Blog)

More...

Nominations Now Open for Public Interest Registry (Operator of .ORG) Board of Directors (Featured Blog)

Would you be interested in helping guide the future of the Public Interest Registry (PIR), the non-profit operator of the .ORG, .NGO and .ONG domains? If so, the Internet Society is seeking nominations for three positions on the PIR Board of Directors. The nominations deadline is Monday, February 4, 2019, at 15:00 UTC. There are three positions opening on the PIR Board. Directors will serve a 3-year term that begins mid-year 2019 and expires mid-year 2022. More...

Nominations Now Open for Public Interest Registry (Operator of .ORG) Board of Directors (Featured Blog)

Would you be interested in helping guide the future of the Public Interest Registry (PIR), the non-profit operator of the .ORG, .NGO and .ONG domains? If so, the Internet Society is seeking nominations for three positions on the PIR Board of Directors. The nominations deadline is Monday, February 4, 2019, at 15:00 UTC. There are three positions opening on the PIR Board. Directors will serve a 3-year term that begins mid-year 2019 and expires mid-year 2022. More...

New Github repo for using WordPress with Docker

As I wrote over on my Disruptive Conversations site, I’ve been playing around with using Docker as a way to easily test new WordPress versions and plugins.  As part of that testing, I was trying to use the official WordPress image found on Dockerhub.

However, I was struggling with getting started, because the WordPress container is just… WordPress. It also needs a database to work, and my Docker experience was not yet strong enough to sort out how to link various containers together. So I raised an issue on Github asking about a step-by-step tutorial.

Github user wglambert very kindly provided a simple docker-compose.yaml file that could launch both WordPress and MySQL in separate containers and set up the necessary network and links.

It works wonderfully! And it has now been added to the instructions on DockerHub. (Thank you to the DockerHub admins for merging it in.)

Because I want to easily use the file on different systems, I put it up in a Github repo:

https://github.com/danyork/wordpress-basic-docker

Any of you are welcome to use it, too!

As I noted in my Disruptive Conversations article, I’m planning to start writing here a good bit more about using Docker. I’m rather impressed by all that can be done – and want to capture my own experiments here for my own future knowledge… and if it helps any of you all out, too, all the better!

How to Run WordPress in a Docker Container, Part 1

Wordpress docker installation

Here is a quick 3-step process for launching WordPress in a Docker container. You can use this to easily launch a new WordPress instance on your local system to test out new versions, new plugins or anything else.

First, though, you need to have Docker installed on your system. The simplest way for Mac and Windows users is to install Docker Desktop. This desktop download also gives you Docker Compose, which you will need. If you are running Docker on a Linux system, you will need to manually install Docker and Docker Compose.

To run WordPress, you also need a database running. The steps here use Docker Compose to launch TWO containers: one for WordPress and one for MySQL.

Three steps

Step 1 - Create a directory (a.k.a. "folder") and install the docker-compose.yaml file found in this Github repository. You can get the file three ways:

The key is to have this all in a separate directory because your WordPress installation will store some plugins there (see the notes below).

Step 2 - In a terminal window[1] type 'docker-compose up

This will launch the two containers and link them together. You will see logging to your terminal window. You can press Ctrl+C to stop the containers and get your command prompt back. To launch the containers in the background add a "-d" option:

docker-compose up -d

Step 3 - Connect to your new WordPress server at http://localhost:8080/

That's it!

Wordpress installation 660px

Now you simply go through the normal WordPress installation process and within a few screens your new site will be fully active.

Next you can update WordPress to the latest version, install whatever plugins you want, etc.

For example, I installed the WordPress Beta Tester plugin, went into its settings and turned on "Bleeding edge nightlies", performed an upgrade... and now I'm running the very latest WordPress 5.0 build. Perfect for the testing I want to do.

Credit for the simplicity of this approach is due to Github user "wglambert" who answered a request I made about help using the WordPress Docker container. Thank you!

Notes

  • Stopping the containers - do 'docker-compose stop'. This will stop the containers from running. Doing 'docker-compose start' will start them up again.
  • A 'wp-content' directory is created is created inside the directory in which you put the docker-compose.yaml file. Any plugins or themes you add will be stored here. This allows you to do a reinstallation and have all the plugins and themes available.
  • WHEN YOU ARE DONE and want all this to go away, just type 'docker-compose down' and the services will be stopped and the containers removed.

There are many more things you can do with docker-compose. The command-line documentation can help you learn more.

Next parts

I labeled this as "Part 1" because I'm planning to write about my own ongoing testing with Docker and WordPress. In future parts of this series, I intend to cover:

  • How to load in an existing site for testing
  • How to save your changes in a Dockerfile (so you don't have to start at the very basic installation each time)
  • ... and other things I learn along the way.

I also expect I may update THIS article over time as I do more with using WordPress and Docker.

I hope you found this helpful. Please feel free to leave comments here (unfortunately I have to moderate due to spam, and so comments will not appear immediately).

I also welcome pointers to other "WordPress and Docker" tutorials that people have found helpful. If you want to follow along with some of my other experiments with Docker and containers in general, I'll be writing about that over on Code.DanYork.com.


[1] or "command shell" or "powershell" or whatever you call it...

Watching the spammers invade Known

Watching the spammers invade Known

It's been over 3 years since I last posted here on Known. I had in fact not thought much about this site.

UNTIL... about 5 days ago when I started getting notifications about comments being added to various posts here.

Yep, the spammers are here.  Maybe they have been for a while and just hadn't yet targeted my posts. But now they have.

Rather ironically, they were posting spam comments on a post I wrote in 2014 about Webmentions and the possibility of spam.

Obviously that is still an issue. :-(

This is why we can't have nice things.