=====================================
Bonded Internet 4.0 release notes
=====================================

April 12, 2011

Additions
^^^^^^^^^^

- Bonding now uses a proprietary tunnel process and a special protocol for transporting packets between a bonder and the aggregator. The tunnel uses the flowlet algorithm to balance outbound packets and a special reordering algorithm to restore the correct order to inbound packets. TCP performance is greatly improved in some situations.
- Legs of different types, such as ADSL and cable connections, can now be  bonded successfully.
- The pppauth command has been added to the configuration server. This allows an administrator to manually update the username and password for a PPP connection.
- Performance and usage statistics such as bonder traffic, CPU use, and link ping time are tracked and graphed over time. The graphs appear on the bond details page, as well as on dedicated pages for aggregator and system-wide statistics. Graphs are generated by the open-source software Munin.
- Bonds can be restarted by clicking the "Restart" button the bond's details page. This is useful for troubleshooting.
- The Linux distribution and kernel version of a bonder are now now tracked on the bond's details page.
- The system info page now reports versions of more installed software, as well as the version of the Bonding Debian package in the apt repository.

Removals
^^^^^^^^^

- OpenVPN is no longer used to transport bonded traffic.
- Statistics balancing mode is no longer available. All traffic is balanced using the flowlet algorithm. (However, the algorithm is essentially disabled if given a delta value of 0.)
- The Apply button has been removed from the bond editing page. Use the Save button instead.
- The variable "NETWORK" has been removed from the environment passed to WAN IP hooks.
- The variable "BALANCING" has been removed from the environment passed to bond hooks.

Changes
^^^^^^^^

- The new tunnel has simplified Bonding, which now starts and stops much faster. Its threading model has also been simplified, making it more reliable.
- Failover support no longer requires the config server. Messages are passed directly from bonder to aggregator, without going through the config server. This greatly increases the reliability and speed of failover. Leg failures are detected in 0.5 seconds or less, rather than 5-10 seconds as before.
- Leg icons in the config interface now report if there are inconsistencies between the status of the leg as seen by the bonder and the status of the leg as seen by the aggregator.
- Some major modules in Bonding are now written in the Cython programming language, for speed and protection of intellectual property.
- Celery has been updated to version 2.2.5.
- Django has been updated to version 1.2.5.

Fixes
^^^^^^

- The restartupdates command now refuses to run while Celery is running. This helps avoid inconsistencies in the update queue.
- The restartupdates command now restarts crashed tasks.
- Changing the flowlet delta value for a bond now changes it on the aggregator, not just on the bonder.
- A IOError exception on the config server is now caught. This will result in fewer useless e-mails being sent to administrators.
- Only one leg can be set as failover. Previously, multiple legs could be set as failover, which would result in unknown behaviour.

Defects
^^^^^^^^

- PPP authentication details cannot yet be managed from the configuration interface.
- When any leg configuration is changed, the tunnel process on both the bonder and aggregator is restarted. This causes the icons for all the bond's legs to appear as down for a moment in the configuration interface.
- The balancing mode option still appears in the config server. This is to support bonders running version 3 of Bonding until they are upgraded, and will be removed in version 4.1.
- The tunnel interface IP address appears in traceroute reports for queries originating from behind the bonder.
