Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 22 Jun 2020 00:05:41 +0100
From:      Alexander V. Chernikov <melifaro@freebsd.org>
To:        "current@FreeBSD.org" <current@freebsd.org>, net <net@freebsd.org>, freebsd-hackers <freebsd-hackers@freebsd.org>
Subject:   routed && route6d removal proposal
Message-ID:  <273191592779927@mail.yandex.ru>

next in thread | raw e-mail | index | archive | help
Hey,

I would like to propose removal of  sbin/routed and usr.sbin/route6d.

routed(8) is the daemon implementing RIPv2 routing protocol.
route6d(8) is the daemon implementing RIPng routing protocol for IPv6.

RIP [1] was one of the first  protocols used in the networking. The first version was implemented back in 1982.

1. Network landscape has changed since then. BGP, OSPF, IS-ISIS and other routing protocols have been created and greatly improved over years. People have created and adopted numerous designs leveraging OSPF/ISIS or BGP.
RIP became obsolete a while ago as there were no competitive advantage it can offer.
"It is the oldest routing protocol used by the network industry and is considered by many to be inefficient or border-line obsolete." — [2], 2009
"Today, the only reason you might run across a network running RIPv2 is either that the network is very old and in serious need of an upgrade or the network is running cheaper, consumer-grade routing hardware that can only support RIP" — [3], 2016.

1.1. Nowadays the daemon name is simply misleading. Given situation described above, one does expect far wider functionality from the program named "route[6]d" than just  RIP implementation.

2. Multiple routing stacks supporting all major routing protocol including RIP exists these days: bird, frr, quagga. Many BGP-only designs in are gaining popularity, so do bgp speakers such as exabgp or gobgp.  Nowadays, if one needs dynamic routing on the host, OSPF or BGP speaker is the choice. FreeBSD packages contains well-maintained ports for these. Having RIP[ng] speakers in base offers no advantage. 

3. Both routed/route6d are largely unmaintained [4] and presents an additional attack vector. Here is the list of last non-trivial commits to routed/route6d:

sbin/routed:
r327276 - coverity
r317035 - rtsock fix
r299825 - coverity
r299822 - coverity, from netbsd
r299821 - coverity, from netbsd
r299784 - coverity, from netbsd
r299771 - coverify, from netbsd
r286347 - bugfix
r276602 - SA14:21 patch
r271919 - SA14:21 fix
r215702 - logic fix, 2010

usr.sbin/route6d:
r337500 - functional fix, 2018
r317035 - rtsock fix
r311994 - coverity
r311985 - coverity
r299869 - coverity
r299491 - coverity
r270234 - link-local fix
r243233 - functionality improvement, 2012

To summarise: RIP protocol is obsolete, implementations for newer protocols exists in ports,  implementation in base  is unmaintained.

With all that in mind I propose to remove routed and route6d from base in FreeBSD 13.
Timeline:
June 5 - feedback aggregation and decision point
July 19 - removal (proposed)


[1] https://en.wikipedia.org/wiki/Routing_Information_Protocol
[2] https://www.globalknowledge.com/ca-en/resources/resource-library/articles/basics-of-understanding-rip/
[3] https://www.networkcomputing.com/data-centers/comparing-dynamic-routing-protocols
[4] https://bugs.freebsd.org/bugzilla/buglist.cgi?cmdtype=runnamed&list_id=361897&namedcmd=routed_prs

/Alexander



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?273191592779927>