Live data from Hacker News

Designing Network Protocols

journal.paul.querna.org

1–10 of 24 posts

Re: Designing Network Protocols

#3

I think the short version is: in the past 5 years, simple wire-oriented serialisation formats have become much more common. At the time you had your pick of ASN (humongous) or Thrift (brand new).

I don't believe a tl;dr is necessary for this short article.

I enjoyed reading through his thought process for designing a simple protocol which is:

  * Easy to use (requiring little/no additional libraries)
  * Easy to extend (simple keyword/value extensions)
  * Immune to changes in technology
  * (above all) easy to understand

Re: Designing Network Protocols

#4

I think the short version is: in the past 5 years, simple wire-oriented serialisation formats have become much more common. At the time you had your pick of ASN (humongous) or Thrift (brand new).

Actually, the short version is: I wanted it easily debuggable by a network admin. (It's a point he made repeatedly). All the other arguments were moot.

Re: Designing Network Protocols

#5
As someone who troubleshoots networks for living, it can't be overstated what value easily understood information has. Normal factors such as lack of understanding of a system, miscommunication, false assumptions, false information, all types of bugs, and operator error already plague troubleshooting. Anything you can do to simplify is extremely important. Little things like being able to read debugs directly out of wireshark can make the difference between solving something between minutes and hours, days and weeks.

Unfortunately serviceability is not normally high in the initial product requirements, but I've seen a direct correlation between customer satisfaction in support and products/protocols/designs with good serviceability.

Re: Designing Network Protocols

#6
post #4

I think the short version is: in the past 5 years, simple wire-oriented serialisation formats have become much more common. At the time you had your pick of ASN (humongous) or Thrift (brand new).

Actually, the short version is: I wanted it easily debuggable by a network admin. (It's a point he made repeatedly). All the other arguments were moot.

So the network protocol must be in text so that a network admin could debug it? This is absurd.

Re: Designing Network Protocols

#7
post #4

Earlier quoted context omitted.

Actually, the short version is: I wanted it easily debuggable by a network admin. (It's a point he made repeatedly). All the other arguments were moot.

So the network protocol must be in text so that a network admin could debug it? This is absurd.

Not as absurd as you'd think. You don't want to debug the protocol itself, but you want to be able to easily read what messages were exchanged.

I get the rationale. But I think it's weak, and this entire post is lots of fluff around that core rationale. (I've been writing extensible binary protocols back in 1988 - and it never struck me as particularly difficult even back then.)

Re: Designing Network Protocols

#8

I think the short version is: in the past 5 years, simple wire-oriented serialisation formats have become much more common. At the time you had your pick of ASN (humongous) or Thrift (brand new).

I don't believe a tl;dr is necessary for this short article. I enjoyed reading through his thought process for designing a simple protocol which is: * Easy to use (requiring little/no additional libraries) * Easy to extend (simple keyword/value extensions) * Immune to changes in technology * (above all) easy to understand

Yet he himself says he considered and rejected a binary protocol for the reason I gave: "I considered using a binary format, but the immediate problem was having extendable fields.", going on to point out that he rejected Thrift because it was too new and ASN.DER because it was too big.

That said, I think he didn't want a binary format in any case -- his "doing it again today" remarks point to JSON.

Re: Designing Network Protocols

#9

I think the short version is: in the past 5 years, simple wire-oriented serialisation formats have become much more common. At the time you had your pick of ASN (humongous) or Thrift (brand new).

Not particularly fair. You also had XDR (ubiquitous on Unix systems), IIOP, TLV, ICE... not to mention what ever protocol designer for the past 20 years has used: network byte order integers and ASCII/UTF8 strings.

Some people just like ASCII, human readable protocols. There's nothing wrong with that, but it's a little silly to suggest that the options for a packed binary encoding in 2007 were limited because Thrift and Protocol Buffers were too new.

Re: Designing Network Protocols

#10
post #4

Earlier quoted context omitted.

Actually, the short version is: I wanted it easily debuggable by a network admin. (It's a point he made repeatedly). All the other arguments were moot.

So the network protocol must be in text so that a network admin could debug it? This is absurd.

How does a network admin debug a binary protocol for which no dissector has been implemented/merged into core for Wireshark, and no decoder has been written for tcpdump?

It's obviously doable, but it's very painful.

Post reply on HN