DANM 4.2 - New feature release arrives with a bag of networking goodies!
New features and enhancements
DANM 4.2 is a full-fledged feature release, containing lots of enhancements long sought after by our community!
Thoroughest IPv6 support imaginable
IPv6 was always something we generally supported, albeit with some restrictions. With DANM 4.2 all such restrictions are things of the past, and we are confident our users will appreciate all the thought that went into creating the most seamless V6 network management experience available for Kubernetes.
These are:
- DANM IPAM now supports defining allocation pools for V6 subnets as well: #177 , #178
- IP allocation algorithm optimized to work in constant time even with big (~4 million) addresses: #179
- V6 usage is now enabled on interfaces even when "none" allocation scheme is used: #174
- V4 and V6 IP routes now work independently from each other, as intended: #205
- D(uplicate)A(ddress)D(etection) is automatically disabled on DANM managed V6 interfaces to avoid unnecessarily delaying, or failing startup of V6 using Pods: #215
- ndisc_notify is set to 1 on all DANM managed V6 interfaces to automatically force neighbour update in a V6 fabric: #222
Svcwatcher becomes production-grade
Svcwatcher implements a very handy functionality, but it was always more of a showcase of what use-cases suddenly become possible with the DANM platform, rather than a utility used in production. But after the following enhancements we now confidently propose taking it into production use as well:
- support added for V6 endpoints, endpoint update stability GREATLY increased: #187
- performance greatly improved by limiting processing to only the relevant API objects: #200
- svcwatcher created EndPoints are now fully compatible with latest Kubernetes DNS backends, enabling Pod name based DNS queries: #204
CI and deployment enhancements
New features are nice, but development and operator experience are equally important! Thanks to @carstenkoester and @eMGabriel DANM made great strides in this regard as well:
- build process was refactored and as a result became more convinient, and way faster: #196
- dependency management is now based on standard Go modules: #190
- DANM can now be auto-installed on existing Kubernetes environments: #212
Some call it "chaos testing", we call it... testing
DANM is deployed in production by various TelCo products, and as such is subject to rigorous E2E system testing processes. Unfortunetaly Kubernetes, and the CNI architecture in general is not entirely without shortcomings when facing node, cluster, or network outage events, but we do our best to maintain cluster state even when the unexpected happens by:
- retrying network access dependent execution paths to protect against network outages, and tying IP reservations and releases to the success of these operations: #188
- employ the fresh new error handling Informer API to protect against long-term network outages: #207
- automatically hunting for dangling resources during every CNI_ADD operation: #216
Dummy interfaces just become smarter
One of our recent hit feature was the creation of dummy interfaces in place of non-kernel managed DPDK devices to convey network allocations to unprivileged user space apps. However, due to the simplicity of the SR-IOV architecture users were still having trouble identifying which interface belongs to which device in complex setups, containing multiple allocations.
With the recent enhancement #214 DANM created dummy interfaces now convey their DPDK device's PCI ID, VLAN tag, and even their original MAC address!
DANM goes utils
From 4.2 and onward the DANM project now consists of two repositories!
Newly created danm-utils houses all the new, optional components / controllers / operators built on top of the DANM core platform, but being only loosely related to the core project. The main idea is to implement all higher-level, value adding features as optional add-ons, so you can individually decide if you would like to add their related complexity to your cluster.
So if you like DANM core, you might be interested in danm-utils too: https://github.com/nokia/danm-utils.
Together with this release we are also publicly announcing the generic availability of the first two such utilities:
https://github.com/nokia/danm-utils/releases/tag/cleaner-v1.0
If the outage scenarios described in this release notes were hampering you in the past, make sure to check out our optional Cleaner utility!