User login

Blogs

18

Jul

2019

Libtrace 4.0.9 has been released.

This release does not add any new features or APIs, but does fix a number of bugs:
* Fixed traceanon build error on systems that did not have libcrypto installed.
* Fixed DPDK detection in configure when the DPDK package was installed on either Debian buster and Ubuntu disco.
* Updated DPDK code to compile against more recent DPDK releases, such as 18.11.
* Fixed segmentation fault when failing to open a DAG device.
* Fixed issue where a pcapng packet that does not match any of our known data types ends up having an uninitialised data type.
* Fix some compilation errors when using DPDK on FreeBSD (may still be linking problems if you have built DPDK using the ports tree, though).
* Fix infinite decoding loop if libpacketdump sees an SCTP option with a length of zero.

The full list of changes in this release can be found in the libtrace ChangeLog.

You can download the new version of libtrace from the libtrace website.

01

Jul

2019

Libtrace 4.0.8 has been released.

This release upgrades the traceanon tool to be able to anonymise various sensitive AVPs within RADIUS packets. We also now allow (and strongly recommend) the use of a YAML configuration file to configure traceanon -- the old CLI options will continue to work but should be considered deprecated.

This release also fixes a bug where ndag multicast clients would bind to all addresses for a given port, rather than just their specific address for their multicast group.

The full list of changes in this release can be found in the libtrace ChangeLog.

You can download the new version of libtrace from the libtrace website.

15

May

2019

Libtrace 4.0.7 has been released.

This release adds support for parsing meta-data records included in packet captures, including ERF provenance records or pcapng section headers. We've also extended the APIs for interacting with post-layer 2 headers such as VLAN and MPLS.

Support for reading and writing TZSP streams (such as those produced by Mikrotik RouterOS) has also been added.

There are also some minor bug fixes, as well as some performance enhancements for high packet rate parallel captures.

The full list of changes in this release can be found in the libtrace ChangeLog.

You can download the new version of libtrace from the libtrace website.

16

Jan

2019

Libtrace 4.0.6 has been released.

Once again, this release is primarily a collection of bug fixes and performance enhancements on top of libtrace 4.0.5.

Major changes in this release:
* Added ability to write pcapng trace files.
* Fixed segmentation fault when using tracereplay on certain packet types.
* Fixed bug where trace_event() API was ignoring all received packets.
* Fixed build issue when enabling DPDK.
* Fixed build issue where recvmmsg availability was not detected properly.
* Fixed packet corruption bug when using the "jump to IP header mode" in tracesplit.
* Better error messaging and handling -- no more unexpected assertion failures!
* Improved read performance of both ring: and ndag: live captures.
* traceends and tracetopends now use the parallel API.

The full list of changes in this release can be found in the libtrace ChangeLog.

You can download the new version of libtrace from the libtrace website.

09

Nov

2018

Libtrace 4.0.5 has been released.

This release is a collection of bug fixes and performance improvements for libtrace 4.0.4.

Major changes in this release:
* Fixed bug where only one client could subscribe to an nDAG multicast group concurrently.
* Fixed bad payload length calculations on outgoing packets when IP length field is populated by hardware.
* Fixed build error when compiling with DPDK support.
* Improved performance when decoding ETSI records via etsilive:
* Improved ERF / DAG packet processing performance by caching the framing length.

The full list of changes in this release can be found in the libtrace ChangeLog.

You can download the new version of libtrace from the libtrace website.

02

Jul

2018

Libtrace 4.0.4 has been released.

New features in this release include:
* Added reference counting API for keeping track of packets shared across multiple threads.
* Added new input format for receiving live streams of packets encoded using the ETSI LI standard.
* Libpacketdump can now also decode ETSI-encoded packets.
* Added CLI option to tracereplay to "speed up" replays by a given factor, i.e. set to 2 to replay at double speed.
* Added new trace_flush_output() API function to force a libtrace output to flush any buffered output.

There are also plenty of bug fixes in this release, including:
* Fixed problems with trying to have two ring: inputs active at the same time.
* Fixed missing subseconds in timestamps from pcapng: packets.
* Fixed bug that was causing poor ndag: performance.
* Fixed bug that prevented trace_pstop() from working correctly on some live inputs.
* tracereplay will now skip meta-data records rather than trying to replay them and failing.
* Fixed some buffer overrun issues in the pcapng reading code.

The full list of changes in this release can be found in the libtrace ChangeLog.

You can download the new version of libtrace from the libtrace website.

02

Mar

2018

Libtrace 4.0.3 has been released.

New features in this release include:
* A new capture format (dpdkndag:), which allows nDAG records to be intercepted and decoded using a DPDK interface.
* The message queue data structure API is now publicly exported, so can be used in user code.
* The toeplitz hasher data structure API is now publicly exported, so can be used in user code.
* Added a new API function: trace_get_perpkt_thread_id(), which will return the ID number of the running packet processing thread.
* Upgraded DAG code to use the 64 bit API, so libtrace will work with large streams.

The following bug fixes are also included:
* ERF provenance records will no longer cause libtrace to halt.
* Captures from GRE tunnel interfaces should now work correctly.
* Packets captured using DPDK will no longer lose any payload after the first 1024 bytes.
* Fixed a couple of nDAG packet corruption problems.
* Ensure all key fields are correctly initialised when doing DPDK output.
* Fixed assertion failure when libwandio has an unexpected error.

We've also further improved the performance of the nDAG format.

The full list of changes in this release can be found in the libtrace ChangeLog.

You can download the new version of libtrace from the libtrace website.

20

Feb

2018

Carrying on from last week, I finished creating a multi-link failure scenario for a Fat Tree topology of k=4. I then collected recovery time stats which I have cleaned up and graphed. While collecting the recovery stats for the topology I found a bug, which I have fixed, that was causing the VM to crash. The simulation framework stops the pktgen generation process by sending a SIGINT to its PID. This PID was occasionally incorrect due to the way it was being recorded, causing termination of a process that was critical to the system, thus crashing the VM.

Closer to the end of the week I started investigating further, separating the switches into Mininet namespaces. I found out that this feature is not supported by Mininet as OpenVSwitch needs to be exposed in order to establish a connection to the OpenFlow controller. The only way to fix this behaviour would be to modify Mininet itself which doesn't seem like such a good idea at this point time. At the end of the week, I started looking at adding latency to the control channel to be able to better simulate real network conditions.

13

Feb

2018

Spent most of the short week trying to track down some issues that were preventing RabbitMQ shovels from connecting after an erlang upgrade. The issue appears to be around Server Name Indication (SNI) being enabled and the SSL upgrade taking place on an already connected socket, so only the peer address is available and not the peer name. I don't appear to be able to use SNI directly with the shovel parameters but I can set it for the erlang RabbitMQ client that gets used for the shovel.

13

Feb

2018

Continued to integrate the AMP Chromium test better into the rest of the AMP framework, specifically into the build system so that the appropriate Chromium libraries can be specified and found.

Spent most of the week in Queenstown at the NZNOG conference. Worked on Faucet briefly at the Facebook Hackathon on Wednesday, with the conference proper the rest of the week.