HardenedBSD/contrib/traceroute
Jose Luis Duran 8aafae6639 traceroute: Implement ECN bleaching detection
Explicit Congestion Notification (ECN) is a mechanism that allows
end-to-end notification of network congestion without dropping packets
by explicitly setting the ECN code point (2 bits).

Per RFC 8087, section 3.5, network devices should not be configured to
change the ECN code point in the packets that they forward, except to
set the CE (Congestion Experienced) code point ('11') to signal
incipient congestion.

The current commit adds an -E flag to traceroute that crafts a packet
with an ECT(1) code point ('01').

If the packet is received back with a zero ECN code point ('00'), it
outputs that the hop in question erases or "bleaches" the ECN code point
values.  Bleaching may occur for various reasons (including normalizing
packets to hide which equipment supports ECN).  This policy prevents the
use of ECN by applications.

If the packet is received back with an all-ones ECN code point ('11'),
it outputs that the hop in question is experiencing "congestion".

If the packet is received back with a different ECN code point ('10'),
it outputs that the hop in question changes or "mangles" the ECN code
point values.

If the packet is received with the same ECN code point that was sent
('01'), it outputs that the hop has "passed" the ECN bits appropriately.

Inspired by:	Darwin
Reviewed by:	imp, markj
MFC after:	1 month
Pull Request:	https://github.com/freebsd/freebsd-src/pull/879
2024-01-03 12:57:54 -05:00
..
as.c
as.h
CHANGES
FILES
findsaddr-socket.c
findsaddr.h
FREEBSD-upgrade
ifaddrlist.c
ifaddrlist.h
INSTALL
mean.awk
median.awk
README
rip_output.c
traceroute.8
traceroute.c
traceroute.h
VERSION

@(#) $Id: README,v 1.9 2000/09/16 05:32:01 leres Exp $ (LBL)

TRACEROUTE 1.4
Lawrence Berkeley National Laboratory
Network Research Group
traceroute@ee.lbl.gov
ftp://ftp.ee.lbl.gov/traceroute.tar.gz

Traceroute is a system administrators utility to trace the route
ip packets from the current system take in getting to some
destination system.  See the comments at the front of the
program for a description of its use.

This program uses raw ip sockets and must be run as root (or installed
setuid to root).

A couple of awk programs to massage the traceroute output are
included.  "mean.awk" and "median.awk" compute the mean and median time
to each hop, respectively.  I've found that something like

    traceroute -q 7 foo.somewhere >t
    awk -f median.awk t | xgraph

can give you a quick picture of the bad spots on a long path (median is
usually a better noise filter than mean).

Problems, bugs, questions, desirable enhancements, source code
contributions, etc., should be sent to the email address
"traceroute@ee.lbl.gov".