Re: [Idr] 2 week WG LC for draft-ietf-idr-shutdown-02 (1/17 to 1/31/2017)

"Peter van Dijk" <> Wed, 18 January 2017 21:54 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 5B1211294E6; Wed, 18 Jan 2017 13:54:17 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id R4nZ203Tmz5m; Wed, 18 Jan 2017 13:54:15 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 57A0D129437; Wed, 18 Jan 2017 13:54:15 -0800 (PST)
Received: from [] (unknown []) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: peter) by (Postfix) with ESMTPSA id 19848C1B96; Wed, 18 Jan 2017 22:54:12 +0100 (CET)
From: "Peter van Dijk" <>
To: "Susan Hares" <>
Date: Wed, 18 Jan 2017 22:54:19 +0100
Message-ID: <>
In-Reply-To: <01b801d27105$45702bc0$d0508340$>
References: <01b801d27105$45702bc0$d0508340$>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Mailer: MailMate (1.9.6r5319)
Archived-At: <>
Subject: Re: [Idr] 2 week WG LC for draft-ietf-idr-shutdown-02 (1/17 to 1/31/2017)
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Inter-Domain Routing <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 18 Jan 2017 21:54:17 -0000


On 17 Jan 2017, at 22:04, Susan Hares wrote:

> This begins a 2 week WG Last Call for draft-ietf-idr-shutdown-02.txt
> (1/17/2017 to 1/31/2017).  Section 7 of this document lists the
> implementations that have been created for this BGP functionality.   
> These
> include: ExaBGP, pmacct, OpenBGPD, Wireshark (packet analyzer), and 
> tcpdump
>    o  OpenBGPD [3

I did the openbgpd implementation of draft-ietf-idr-shutdown. Please 
find my
implementation report below.

A functional description of the implementation can be found at . Note that the 
version of the patch is a few mails down in that thread (and phessler@ 
did some
last whitespace fixes before committing it to OpenBSD CVS). In short, 
openbgpd implementation is complete; it can send shutdown communications 
the config file and from the command line; it logs received 
communications to
syslog and exposes them in various forms of 'bgpctl .. show'.

During implementation, I have found the draft very clear to read, and 
there were
no ambiguities in how an implementation was supposed to work. In every 
one of
the few situations I had doubts arising from interoperability testing 
with other
fresh implementations, it turned out there was a bug in the other 
and each time this was quickly corrected on the other side after a 
reading of the draft or the involved code.

Implementation took a few evenings, spread out over weeks, showing that 
cognitive load involved with understanding this draft is quite low.

Development was done on OpenBSD 6.0 (as openbgpd has not been ported to 
platforms). The work was divided in logical pieces (log incoming 
remember them for bgpctl show; send them from bgpctl neighbor X down 
send them from the configuration file on a reload+refresh).

Interoperability was continuously tested against the then-current
implementations of -shutdown in exabgp and pmacct pmbgpd, running on a 
Linux VM, as at that time pmacct only had support for sending a shutdown
message, and exabgp was only able to receive shutdown messages. Various 
bugs in the exabgp and pmacct implementations surfaced and were fixed 
this process.

Unprintable characters (both of the 'control' and the 'UTF-8' nature) 
easily dealt with via the vis(3) ( facility
available on all BSDs, in octal mode as is also used in C string 
Incidentally Debian has a 'libbsd' that provides it. A standalone 
would not be hard to do either. vis-encoded strings can be decoded by 
'unvis' on
the commandline, or by simply pasting them into a Python interpreter. 
This way
full Unicode support is achieved without having to worry about 'what 
encoding is
syslog actually in'.

As an example, the Unicode unicorn (U+1F984), encoded on the wire in 
UTF-8 (as
the draft specifies), yields a syslog message such as

     neighbor received shutdown reason: 


     echo "\360\237\246\204" | unvis

on an UTF-8 capable terminal, or typing


into a Python2 prompt, will recover said unicorn. 🦄

Kind regards,
Peter van Dijk