* scamper:
* handle many ports in BPF compiler better.
* remove cycles, autoreload features from file input sources.
* do not compile in support for select(2) by default (saving CPU and
memory in the default use).
* normalize kqueue(2) / epoll(2) code paths.
* use IP_RECVIF on platforms (FreeBSD) that don't have IP_PKTINFO.
* remove sig_tx_ip_src from task signature structure, nothing used it.
* add holdtime (-H) parameter back to scamper, will controls the
length of time that scamper will hold task signatures before
allowing a follow up measurement to use the same signature. 5
seconds by default, disable with zero (to save memory and CPU).
* fix compilation when platform has IPV6_PKTINFO but not
IPV6_RECVPKTINFO setsockopt (old platforms).
* replace calls to getaddrinfo AI_NUMERICHOST with calls to inet_pton
(fixes complilation on old MacOS, and is probably the faster
solution generally).
* increase pps-max (scamper -p) to 50,000.
* adjust timestamps using datalink timestamps when using
trace -N <squeries>.
* reduce memory use in storing traceroute state.
* remove per-measurement pktbufs, to save a tiny amount of memory.
* refactor BPF compiler to make it more obvious what is going on.
* refactor ping task signatures to make it more obvious what is going
on.
* refactor scamper's timeout calculation to make it more obvious what
is going on.
* move output of done tasks into its own function to make it more
obvious what is going on.
OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=77
* scamper:
* add -O noring to disable use of ring buffer on Linux when
scamper is configured with --enable-scamper-ring
* udpprobe: add -S src parameter, update manual page with
previously supported but undocumented options
* sc_prefixprober:
* allow do-not-probe list to be embedded in the input set of
prefixes to probe, update manual page.
* add -v to emit version of scamper release the sc_prefixprober
utility came from
* Python module:
* add src parameter to ScamperCtrl.do_udpprobe
* update to version 20240916:
* scamper:
* with ping -F 0 and trace -s 0, choose a different TCP or UDP source
port if an otherwise available source port has been used in the past
5 seconds to the same destination IP and port.
* ping: add udp-sport probe method
* ping: refactor udp packet matching on datalink sockets
* allow -D when outputting to a file.
* use SO_TIMESTAMP on linux packet sockets, rather than call an ioctl,
to fix buggy linux timestamps when not using ring
* rework privsep code to be signal aware, and forward signals from
scamper's privileged process to scamper's unprivileged process via
the socketpair between the processes. i.e.,
scamper -D -U /path/to/scamper-unix-socket -e /path/to/scamper.pid
kill -HUP `cat /path/to/scamper.pid`
now works. TERM and INT also propagate from privileged to
unprivileged process. this allows the user that started scamper to
OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=72
* scamper
* add -O dl-any option to scamper, which causes scamper to open a
cooked datalink interface bound to "any" on Linux. Note that
scamper's implementation of -O dl-any currently prevents
transmission of packets on the datalink socket, but this will
change in the future.
* add -O dyn-filter option to scamper, which causes scamper to
dynamically adjust the BPF filter that it configures on a datalink
socket according to TCP/UDP ports that scamper is using. this
option is only available on Linux, and BSD systems with BIOCSETFNR
(FreeBSD and MacOS). note that both -O dyn-filter and -O dl-any
cannot currently be used at the same time, but this will change in
the future.
* only raise SO_SNDBUF and SO_RCVBUF; some systems (e.g. Linux)
already have larger socket buffers than scamper's defaults.
* add -O sockrx to ping, to force ping to receive ICMP responses over
a regular socket, even when using -O dl (which still records datalink
transmit timestamps).
* speed up receiving on datalink sockets by avoiding unnecessary
memsets and removing unused fields, and adjust BSD, Linux, DLPI code
to follow similar code patterns.
* consider both directions for TCP packets on datalink sockets,
allowing datalink transmit timestamps to be recorded for non TCP-syn
packets.
* avoid processing duplicate copies of the same packet on Linux
loopback interface with datalink sockets.
* remove "observe" functionality from scamper control socket, as
signalled over a year ago. "outfile" and "source" will be removed
from the control socket in the future.
OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=69
* scamper:
* improvements with -N squeries; let -Q send all probes when using -N.
add -H wait-probe-hop, which specifies the minimum delay between
probes with the same TTL. identify the hop that would have caused
traceroute to stop when not using -N so that a normal traceroute
path with one hop representing the destination or stopping hop in
the path is rendered. in the json output, put extra hops beyond
the stopping hop into a extra_hops array.
* make ring-nolocked the default when using -O ring.
* improvements with udpprobe: provide ability to send multiple copies
of the same payload, add json output, reuse available UDP sockets
where possible.
* consistently set and record the IPv4 tos and IPv6 tclass fields for
both ping and trace.
* fix warts.bz2 and warts.xz output, which could previously use all
available space on the file system.
* speed up rendering of byte arrays as hex in json output.
* fix obtaining IPv6 hoplimit on received packets on MacOS.
* record the name of the interface that received IPv4 and IPv6 ICMP
responses in ping.
* add TXT queries to host command; add chaos query class; add
DNS-over-TCP.
* fix use of ctype functions according to netbsd (cast all parameters
to unsigned char). make pass through use of ctype functions to do
ctype function calls last in most logical statements.
* cleanup scamper_file_warts.h so that only necessary struct
definitions are in that header.
* libscamperfile:
* add new functions, bump library version due to udpprobe changes.
OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=66
- update to 20240229:
* bugfix: correct SCAMPER_DL_IS_ICMP_TIME_REPLY macro so that scamper
does not ignore ICMP replies quoting TCP/UDP packets for 1/256
source port values.
* bugfixes for -O icmp-rxerr: handle EPOLLERR on linux, try using
IPV6_RECVHOPLIMIT before IPV6_HOPLIMIT for IPv6 udp probing.
* bugfix: fix possible assertions in dealias, trace, and tracelb code.
* ping: count UDP replies as from the target
* trace: correct datalink timestamp adjustments
* add more specific error messages when a scamper command is not
accepted, return them over control socket or terminal, as appropriate.
* scamper_fd_t: refactor fd_addr, fd_sport, fd_dl, fd_ifindex
* scamper_fd_t: decouple udp4raw/udp4dg from each other. use udp4dg
and udp6 sockets in udpprobe primitive, rather than have each
udpprobe task create its own socket.
* scamper_fd_t: add methods that return an available open socket for
probing a given destination without blocking if another task is
probing the same destination. use this with ping -F 0 and trace -s 0,
instead of generating random port values, so that scamper opens
the minimum number of file descriptors.
* ping and trace: have -O dl mean to capture transmit and receive
timestamps from a datalink interface. add -O raw option so that
IPv4 TCP probes can be transmitted over a raw socket, to allow transmitted
TCP packets to be observed on the datalink interface.
* add memory-mapped ring buffer support (PACKET_RX_RING) for receiving
packets on datalink sockets on Linux. enable at scamper runtime
with -O ring. contributed by Alistair King.
## python module:
* generate module .c with Cython 0.29.37, to enable module to compile
with Python 3.11.
OBS-URL: https://build.opensuse.org/request/show/1158597
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/scamper?expand=0&rev=28
* bugfix: correct SCAMPER_DL_IS_ICMP_TIME_REPLY macro so that scamper
does not ignore ICMP replies quoting TCP/UDP packets for 1/256
source port values.
* bugfixes for -O icmp-rxerr: handle EPOLLERR on linux, try using
IPV6_RECVHOPLIMIT before IPV6_HOPLIMIT for IPv6 udp probing.
* bugfix: fix possible assertions in dealias, trace, and tracelb code.
* ping: count UDP replies as from the target
* trace: correct datalink timestamp adjustments
* add more specific error messages when a scamper command is not
accepted, return them over control socket or terminal, as appropriate.
* scamper_fd_t: refactor fd_addr, fd_sport, fd_dl, fd_ifindex
* scamper_fd_t: decouple udp4raw/udp4dg from each other. use udp4dg
and udp6 sockets in udpprobe primitive, rather than have each
udpprobe task create its own socket.
* scamper_fd_t: add methods that return an available open socket for
probing a given destination without blocking if another task is
probing the same destination. use this with ping -F 0 and trace -s 0,
instead of generating random port values, so that scamper opens
the minimum number of file descriptors.
* ping and trace: have -O dl mean to capture transmit and receive
timestamps from a datalink interface. add -O raw option so that
IPv4 TCP probes can be transmitted over a raw socket, to allow transmitted
TCP packets to be observed on the datalink interface.
* add memory-mapped ring buffer support (PACKET_RX_RING) for receiving
packets on datalink sockets on Linux. enable at scamper runtime
with -O ring. contributed by Alistair King.
## python module:
* generate module .c with Cython 0.29.37, to enable module to compile
with Python 3.11.
OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=64
* scamper
* fix regression in 20240117 where trace -W 0 (probe as soon as
there's a response) was not accepted, despite being the default.
add unit test for this.
* for trace, improve probe and reply matching of UDP packets
* fix printing UDP responses to traceroute probes in scamper -O text output
* for trace section of scamper.1 man page, document -O const-payload,
and expand documentation for -O dl.
* python module:
* ship scamper release with a the C source code pre-generated for the
python module, so that the build process does not require a cython
installation. bootstrap.pl will build the C source code unless told
not to via --without-cython
* rename ScamperPing.reply_count to ScamperPing.stop_count, as the
reply_count attribute meant something different on a ScamperPing
object than what it means with ScamperDealiasProbe, etc
* sc_remoted:
* expand sc_remoted.1 manual page with information about validating
scamper client TLS certificates, and how to use -M monitor-name.
OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=61
- update to version 20240117:
- scamper:
- fix crashes if a task is provided an apparent response, but the task
- has not yet sent a packet in ping, sting, tbit, trace, tracelb.
- find and fix memory leaks in measurement command parsing code via
- fuzzing.
- add udpprobe, http, dealias -m midarest, and dealias -m midardisc methods.
- udpprobe and http do not currently have json output methods.
- remove -d dport, -s sport, and -t ttl dealias parameters. these
- were only valid for mercator, and can be specified in a probedef instead.
- record size of responses for dealias probes.
- modify all commands to be able to take human-friendly wait parameters --
- e.g. trace -W 0.5s or trace -W 500ms instead of trace -W 50000.
- support transmitting raw packets on linux ppp interfaces
- add -b payload-size parameter to ping
- python interface:
- add python interface to most of scamper. building this module requires
- cython < 3.0. to build, use something like:
- PYTHON=/path/to/python CYTHON=/path/to/cython ./configure --with-python
- the documentation for this interface is available at
- https://www.caida.org/catalog/software/scamper/python/
- the ubuntu PPA provides python3-scamper, and the FreeBSD port should
- hopefully provide py-scamper shortly. these sources may be useful
- for getting the module packaged for other operating systems.
- https://launchpad.net/~matthewluckie/+archive/ubuntu/scamper
- libscamperfile and libscamperctrl:
- improvements, bump versions
- tests:
- many new unit tests and fuzzing cradles for scamper components
- sc_pinger:
- add -l limit and -M move-dir options
- sc_remoted:
- no need to link against libscamperfile, remove dependency
- sc_attach, sc_filterpolicy, sc_prefixscan, sc_wartsfix:
- compile / link on windows.
OBS-URL: https://build.opensuse.org/request/show/1139442
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/scamper?expand=0&rev=26
- scamper:
- fix crashes if a task is provided an apparent response, but the task
- has not yet sent a packet in ping, sting, tbit, trace, tracelb.
- find and fix memory leaks in measurement command parsing code via
- fuzzing.
- add udpprobe, http, dealias -m midarest, and dealias -m midardisc methods.
- udpprobe and http do not currently have json output methods.
- remove -d dport, -s sport, and -t ttl dealias parameters. these
- were only valid for mercator, and can be specified in a probedef instead.
- record size of responses for dealias probes.
- modify all commands to be able to take human-friendly wait parameters --
- e.g. trace -W 0.5s or trace -W 500ms instead of trace -W 50000.
- support transmitting raw packets on linux ppp interfaces
- add -b payload-size parameter to ping
- python interface:
- add python interface to most of scamper. building this module requires
- cython < 3.0. to build, use something like:
- PYTHON=/path/to/python CYTHON=/path/to/cython ./configure --with-python
- the documentation for this interface is available at
- https://www.caida.org/catalog/software/scamper/python/
- the ubuntu PPA provides python3-scamper, and the FreeBSD port should
- hopefully provide py-scamper shortly. these sources may be useful
- for getting the module packaged for other operating systems.
- https://launchpad.net/~matthewluckie/+archive/ubuntu/scamper
- libscamperfile and libscamperctrl:
- improvements, bump versions
- tests:
- many new unit tests and fuzzing cradles for scamper components
- sc_pinger:
OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=58
- scamper:
* fix compile-on-windows support; use icmp-echo probes instead of UDP
probes for traceroute on windows; provide "attach" support on
windows.
* fix compile-on-FreeBSD-15+ where pf firewall does not have
DIOCGETSTATUS ioctl
* in scamper's remote control (-R option), fix file descriptor leak
when unable to reconnect to the remote controller.
* add --disable-scamper-trace --disable-scamper-ping
--disable-scamper-tracelb --disable-scamper-dealias
--disable-scamper-tbit --disable-scamper-sting
--disable-scamper-sniff --disable-scamper-host configure options
to build scamper without specific measurement capabilities.
- sc_attach:
* add windows support
OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=54
- update to version 20230614a
* configure:
* better tests for zlib, libbz2, and liblzma that check for both
libraries and headers.
* change --with-sc_uptime, --with-sc_hoiho, and --with-tests to be
--enable-sc_uptime, --enable-sc_hoiho, and --enable-tests
* disable maintainer mode, pass foreign to AM_INIT_AUTOMAKE
* scamper:
* remove reading regular files from poll/select/epoll/kqueue path,
which fixes reading regular input files (-f option to scamper) using
epoll or kqueue
* fix reading stdin as input (-f option to scamper) when using
epoll (catch EPOLLHUP)
* add DNS server to host signature, add host path for scamper_task_find
* rework scamper_osinfo to work with malformed release names (uname -r)
* dealias: do not crash on malformed prefixscan and bump commands
* dealias: fix memory leak of probedefs on malformed commands
* sting: fix memory leak of recorded packets
* remove tsps input method (-O tsps option to scamper)
* update manual page
* libscamperctrl:
* link against list.o and splaytree.o so that the library is self-contained
* fix memory leak when task is not accepted
* API improvements
* libscamperfile:
* fix memory leak when reading SOA/MX from warts file
* fix memory leak when reading PMTUD traceroute structures from warts file
* sting: fix memory leak of recorded packets
* sc_analysis_dump, sc_warts2pcap, sc_wartscat, sc_wartsfilter:
* link against list.o/utils.o so that these utilities are not reliant on
those symbols being exported from libscamperfile
* sc_prefixprober:
* allow compression type to be specified using -O
* free scamper_addr_t as each are removed from the list to probe
* sc_remoted:
* catch EPOLLHUP with epoll
* sc_warts2text:
* fix memory leaks
* sc_wartsdump:
* fix memory leaks
* link against utils.o so that sc_wartsdump is not reliant on those
symbols being exported from libscamperfile
OBS-URL: https://build.opensuse.org/request/show/1103080
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/scamper?expand=0&rev=22
* configure:
* better tests for zlib, libbz2, and liblzma that check for both
libraries and headers.
* change --with-sc_uptime, --with-sc_hoiho, and --with-tests to be
--enable-sc_uptime, --enable-sc_hoiho, and --enable-tests
* disable maintainer mode, pass foreign to AM_INIT_AUTOMAKE
* scamper:
* remove reading regular files from poll/select/epoll/kqueue path,
which fixes reading regular input files (-f option to scamper) using
epoll or kqueue
* fix reading stdin as input (-f option to scamper) when using
epoll (catch EPOLLHUP)
* add DNS server to host signature, add host path for scamper_task_find
* rework scamper_osinfo to work with malformed release names (uname -r)
* dealias: do not crash on malformed prefixscan and bump commands
* dealias: fix memory leak of probedefs on malformed commands
* sting: fix memory leak of recorded packets
* remove tsps input method (-O tsps option to scamper)
* update manual page
* libscamperctrl:
* link against list.o and splaytree.o so that the library is self-contained
* fix memory leak when task is not accepted
* API improvements
* libscamperfile:
* fix memory leak when reading SOA/MX from warts file
* fix memory leak when reading PMTUD traceroute structures from warts file
* sting: fix memory leak of recorded packets
* sc_analysis_dump, sc_warts2pcap, sc_wartscat, sc_wartsfilter:
* link against list.o/utils.o so that these utilities are not reliant on
OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=50
* HEADSUP: if you previously used -e pidfile to record the pid of a
running scamper process, there is a good chance that the pidfile is
owned by root. scamper now attempts to write this file using the uid
that started scamper, and will not be able to write it if scamper is
not started by root (it should not be, rather the scamper binary
should be setuid root). Please delete the existing pidfile, or change
its ownership, prior to restarting scamper, or scamper will not start.
* scamper:
* write a process ID that the user that started scamper can kill
in the pidfile when using privsep.
* when using privsep, exit the unprivileged process if the privileged
process exits (is killed)
* run as real uid from the start of scamper, for both privsep and
not-privsep.
* fix bug where attempting to open an unsupported datalink would
leave a freed scamper_fd_t in the fd_tree and fd_list, leading to
a crash.
* fix double free triggered when a user provides an invalid dealias
command.
* fix memory leak if the payload was specified twice to ping or trace
* rework pollfunc selection logic, use kqueue/epoll by default.
* remove _malloc_options = "AJ" as this only works on unsupported
versions of FreeBSD.
* add additional paramaters to attach command to allow the user
to override list and cycle parameters, documented in manual page.
* catch EAGAIN/EINTR from select/kqueue/epoll to allow gdb to attach
and detach without flagging errors.
* for DNS replies for host command, record reply flags and rcode.
* add support for SOA and NS queries in host.
OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=47
- scamper:
* use a random source port / ICMP ID in trace if -s 0.
* better parallelize pings to a single destination that use
udp-dport, tcp-ack-sport, or tcp-syn-sport probe methods.
* document default value of source port consistently for all
measurements that take a source port parameter in the man page.
- sc_wartscat:
* print useful error messages when encountering an error.
* add ability to merge neighbourdisc, tbit, sting, sniff, and host.
OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=45
- Update to version 20230224:
- scamper:
- allow multiple parallel measurements to the same destination,
- provided the measurements have probe signatures that scamper can
- distinguish.
- return the associated task ID with each DATA blob in control socket.
- this task ID matches the ID returned in an OK when scamper accepted
- the task.
- in ping, only compute delay statistics on responses from destination.
- in ping, allow timeout to be expressed in fractions of a second.
- libscamperfile:
- support reading gz-compressed warts files.
- libscamperctrl:
- add libscamperctrl, a library to interact with a collection of
- scamper instances.
- modify sc_ally, sc_filterpolicy, sc_prefixscan, sc_speedtrap, and
- sc_pinger to use this library.
- this library is likely to evolve. current behaviour is documented
- in libscamperctrl manual page.
- misc:
- improve sc_wartsfilter manual page with examples.
- add remote control socket support to sc_pinger.
- fix kqueue/epoll loop in sc_remoted.
- consistently use size_t throughout when counting number of items.
- build without warnings using -Wextra -Wno-unused-parameter.
- improvements through adding function attributes to printf-like
- functions.
- deorbit some unused functions from utils.c.
OBS-URL: https://build.opensuse.org/request/show/1067531
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/scamper?expand=0&rev=19
- scamper:
- allow multiple parallel measurements to the same destination,
- provided the measurements have probe signatures that scamper can
- distinguish.
- return the associated task ID with each DATA blob in control socket.
- this task ID matches the ID returned in an OK when scamper accepted
- the task.
- in ping, only compute delay statistics on responses from destination.
- in ping, allow timeout to be expressed in fractions of a second.
- libscamperfile:
- support reading gz-compressed warts files.
- libscamperctrl:
- add libscamperctrl, a library to interact with a collection of
- scamper instances.
- modify sc_ally, sc_filterpolicy, sc_prefixscan, sc_speedtrap, and
- sc_pinger to use this library.
- this library is likely to evolve. current behaviour is documented
- in libscamperctrl manual page.
- misc:
- improve sc_wartsfilter manual page with examples.
- add remote control socket support to sc_pinger.
- fix kqueue/epoll loop in sc_remoted.
- consistently use size_t throughout when counting number of items.
- build without warnings using -Wextra -Wno-unused-parameter.
- improvements through adding function attributes to printf-like
- functions.
- deorbit some unused functions from utils.c.
OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=43
- scamper:
* gracefully handle situations where there is no
/etc/resolv.conf, or no nameserver lines in an /etc/resolv.conf
but a measurement or scamper-internal task wants to resolve a
name
* tidy up buggy prinf-like statements in scamper and some drivers.
- warts/json:
* in JSON output for ping, print the TCP/UDP src/dst ports or
ICMP id/seq used in individual probe packets,
* fix regression in libscamperfile so that it can read old warts
files.
OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=41
* add an option (-O cafile=/path/to/file) to load CA certificates
from a specific file when starting scamper for validating a
remote controller's certificate (this was released in 20211212a)
* add options
-O client-certfile=/path/to/certfile and
-O client-privfile=/path/to/privfile
to have scamper present a client certificate during a TLS handshake
with a remote controller
* fix bugs that prevent scamper from reconnecting to a remote
controller
* fix -d debugfile when scamper is built with privilege separation
* fix bug when writing neighbordisc measurements to warts file that
prevents a neighbordisc measurement from being read
* fix bug when reading some tracelb measurements with unresponsive hops
from a warts file
* allow user to specify fractions of a second to ping timeout (-W)
* use a random source port / ICMP ID in ping if -F 0
- sc_remoted:
* add -C option to specify a CA PEM file to verify client certificates
presented by scamper instances.
* add -O skipnameverification option to tell sc_remoted to verify
scamper presents a certificate signed by the CA, but do not do
name verification
OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=37
- No changelog available.
- update to version 20211212:
- scamper:
* in hostname code, handle nameserver lines with comments in them
- sc_remoted:
* fix logic to handle TLSv1.3 handshakes
- sc_hoiho:
* add the ability to learn regular expressions that extract
network names from router hostnames, documented in the
sc_hoiho man page
OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=32
scamper:
* in trace, allow probes to multiple consecutive hops to be
outstanding in the network without having to stop and wait,
using the -N parameter documented in scamper's man page.
* in trace, do optional PTR lookups using the option documented
in scamper's man page. output these hostnames into warts and
json outputs.
* bump libscamperfile version for the above changes.
* document that scamper's control socket can be told to return
JSON through an option now documented in scamper's man page.
* improvements to reading warts files via fuzzing.
* other man page tidy ups.
sc_erosprober:
* add the ability to adjust the probe list at run time through a
unix domain socket, documented in the sc_erosprober man page.
sc_hoiho:
* add the ability to learn regular expressions that extract
geographic hints from router hostnames, documented in the
sc_hoiho man page
OBS-URL: https://build.opensuse.org/package/show/network:utilities/scamper?expand=0&rev=31