Dpvs Versions Save

DPVS is a high performance Layer-4 load balancer based on DPDK.

v1.9.6

4 months ago

Features

  • New tool: dpvs-agent, a management daemon tool for dpvs based on OpenAPI(doc).
  • New tool: healthcheck, a service health check daemon tool cooperating with dpvs-agent.
  • Dpvs: Develop passive health check methods for tcp and bidirectional udp backends(doc).
  • Dpvs: Add supports for Proxy Protocol with both v1 and v2 versions(doc).
  • Dpvs: Add supports for extended statistics of ethernet devices.
  • Dpvs: Add configuration file and dpip supports for allmulticast setting switch.
  • Build: Transfer all build configurations to a top-level file config.mk.
  • Containerization: Draft a Dockerfile and a tutorial document(doc) to build and run dpvs in container.

Bugfixes

  • Dpvs: Protect toa from source address spoofing attack and increase success ratio for source address delivery via toa.
  • Dpvs: Adjust tcp window scale in outbound direction for synproxy to improve throughput in bulk upload cases.
  • Dpvs: Fix timer inaccuracy problem when timing over 524s.
  • Dpvs: Fix the crash problem caused by ether address list buffer overflow.
  • Dpvs: Fix the crash problem caused by dividing by zero when bonding slaves attempt to send packets out.
  • Dpvs: Fix the crash problem caused by inconsistent data structures of dp_vs_dest_compat between dpvs and keepalived.
  • Dpvs: Correct ipo option length for judgement of branching to standalone uoa.
  • Dpvs: Inhibit setting multicast ether address from slave lcores.
  • Dpvs: Fix service flag conflicts of synproxy and expire-quiescent.
  • Dpvs: Fix the chaos use of flag, flags and fwdmode in dest and service structures.
  • Dpvs: Fix service flush function not usable problem.
  • Dpvs: Fix invalid port problem when getting verbose information of netif devices.
  • Dpvs: Use atomic operation to generate packet id for ipv4 header.
  • Dpvs: Remove fragile implementations of strategy routing for snat.
  • Dpvs: Remove the stale config item "ipc_msg/unix_domain".
  • Keepalived: Do not delete and re-add vs/rs to eliminate service disturbances at reload.
  • Keepalived: Fix a carsh problem caused by missing definition of allowlist/denylist config items.
  • Ipvsadm: Add conn-timeout configuration option for service.
  • Ipvsadm: Fix the ambiguous use of '-Y' configuration option.
  • Ipvsadm: Fix icmpv6 configuration option -1 lost problem.
  • Ipvsadm: Update help text, including supported schedulers, laddr and allow/deny ip list.
  • Dpip: Fix line break problem in help message.
  • Uoa: Enable ipv6 with a macro for uoa example server.

v1.9.4

1 year ago

Features

  • Dpvs: Multiple instance deployment support.
  • Dpvs: IPC improvements between keepalived/ipvsadm and dpvs by combining data structs.

Bugfixes

  • Dpvs: Fix memory problem when setting MATCH service.
  • Ipvsadm: Fix service list problem when dpvs lcore ids are not continuous.
  • Ipvsadm: Fix the problem that service/dest/laddr cannot be listed per-lcore.
  • Ipvsadm: Support version info.
  • Fix several spelling mistakes.
  • Fix compiling errors on RHEL 9, Ubuntu 22.04 and microsoft standard WSL2.
  • Keepalived: Fix service deletion by mistake problem caused by uninitialized local variable.
  • Dpvs: Do not increase service num unless it's hashed sucessfully.
  • Dpvs: Fix sa_entry leak when flushing snat connections.
  • Keepalived: Fix ipvs allow/deny list config problem caused by incorrect parameters.
  • Dpvs: Fix dead lock problem of eal-mem show and rte_free.
  • Dpvs: Fix crash problem caused by msg_destroy when msg->refcnt==0.
  • Dpvs: Fix eal-mem module uninitialized problem.
  • Dpvs: Fix memory leak problem in ipvs allow list.

v1.9.2

1 year ago

Features

  • Dpvs: Add ipset framework and 12 set types.
  • Dpvs: Add an ipset based tc classifier -- tc_cls_ipset.
  • Dpvs: Add l2/l3/l4 header parse apis for mbuf.
  • Dpvs: Add config option "dedicated_queues" for bonding mode 4 (802.3ad).
  • Dpvs: Isolate kni ingress traffic using kni address flow.
  • Dpvs: Update rss reta table according to configured workers after device bootup.
  • Dpvs: Expire quiescent connections after realserver was removed.
  • Dpvs: Make async log mempool size and log timestamp configurable.
  • Dpvs: Enable dpvs log only when macro CONFIG_DPVS_LOG is defined.
  • Dpvs: Make debug fields in dp_vs_conn configurable for memory optimization.
  • Toa: Support linux kernel verison v5.7.0+.
  • Keepalived: Add UDP_CHECK health checker.
  • Test: Add flame graph scripts for performance tests.
  • Test: Add performance benchmark tests for v1.9.2.
  • Docs: Update some docs.

Bugfixes

  • Dpvs: Fix a crash problem when timer is scheduled from within another timer's callback.
  • Dpvs: Fix a crash problem caused by incorrect mbuf pointer in IPv4 fragmentation.
  • Dpvs: Fix a crash problem caused by using unsafe list macro in conhash.
  • Dpvs: Fix the fullnat tcp forwarding failure problem when defer_rs_syn enabled.
  • Dpvs: Fix the ipvs rr/wrr/wlc problem of uneven load distribution across dests.
  • Dpvs: Fix the weight ratio update problem in conhash schedule algorithm.
  • Dpvs: Send tcp rst to both ends when snat conneciton expired.
  • Dpvs: Use unified dest validation in mh scheduling algorithm.
  • Dpvs: Fix the icmp sending failure problem when no route cached in mbuf.
  • Dpvs: Fix the compiling failure problem when icmp debug is enabled.
  • Dpvs: Fix the icmpv6 sending failure problem caused by incorrect mtu.
  • Dpvs: Fix icmpv6 checksum error caused by incorrect payload length endian in ipv6 header.
  • Dpvs: Fix the checksum problem caused by incorrect netif interface.
  • Dpvs: Fix the bonding mode 4 problem caused by lacp failure.
  • Dpvs: Fix the ipv6 neighbour ring full problem to kni isolated lcore.
  • Dpvs: Fix the list/edit problem for MATCH type service (snat service).
  • Dpvs: Fix incorrect oifname typo in MATCH type.
  • Dpvs: Fix the dpvs worker blocking problem when async log is enabled.
  • Dpvs: Fix some memory overflow problems when log messages are truncated.
  • Dpvs: Fix the msg sequence duplicated problem in ipvs allow list.
  • Dpvs: Fix the incorrect uoa client source port problem in fnat64.
  • Uoa: Fix uoa data parse problem of ipv4 opp, and add a module parameter to parse uoa data in forward chain.
  • Keepalived: Fix an exit problem when reload.
  • Keepalived: Fix some compile problems found on ubuntu.
  • Ipvsadm: Use correct flag in listing ipvs connections.

v1.8.12

2 years ago

Features

  • Dpvs: Add ipset framework and 12 set types.
  • Dpvs: Add l2/l3/l4 header parse apis from mbuf.
  • Dpvs: Add an ipset based tc classifier -- tc_cls_ipset.
  • Docs: Update docs of tc and ipset.
  • Dpvs: Add config option "dedicated_queues" for bonding mode 4 (802.3ad).
  • Keepalived: Add UDP_CHECK health checker.

Bugfixes

  • Dpvs: Fix ipvs rr/wrr/wlc problem of uneven load distribution across dests.
  • Dpvs: Fix bonding mode 4 problem caused by LACP failure.

v1.9.0

2 years ago

Major changes

  • Adapt dpvs to dpdk 20.11 (dpdk-stable-20.11.1).
  • Create branch DPVS-1.8-LTS to support dpdk 18.11.
  • Obsolete supports for dpdk 17.11.

Features

  • Dpvs: Add netif_flow module using generic flow api (rte_flow), and replace flow director with rte_flow.
  • Dpvs: Replace mbuf userdata with mbuf dynfields.
  • Dpvs: Adapt dpvs to several renamed type names in dpdk 20.11.
  • Dpvs: Update Makefiles to support dpdk 20.11.
  • Dpvs: Add config option "dedicated_queues" for bonding mode 4 (802.3ad).
  • Dpdk: Add helper script to facilitate dpdk build.
  • Dpdk: Porting patches to dpdk 20.11 and remove patches of previous dpdk versions (18.11, 17.11).
  • Dpdk: Patch dpdk ixgbe pmd driver to support dpvs's flow api.
  • Dpdk: Patch dpdk bonding mode 4 for mlx5 to fix crash problem when debug.
  • Keeaplived: Add UDP_CHECK health checker.
  • Docs: Refine tutorial doc of section 'Full-NAT with Keepalived (one-arm)'.
  • Docs: Update docs for dpvs use with dpdk 20.11.
  • Ci: Update dpvs ci to support dpdk 20.11.

Bugfixes

  • Dpvs: Fix ipvs rr/wrr/wlc problem of uneven load distribution across dests.
  • Dpvs: Fix bonding mode 4 problem caused by LACP failure.

v1.8.10

3 years ago

Features

  • CI: Enable CI workflow.
  • Dpvs: TC stability and performance enhancement.
  • Dpvs: TC supports ipv6 and ingress traffic.
  • Dpvs: Add document and examples for dpvs tc.
  • Dpvs: Add supports for ipvs whitelist.
  • Dpvs: Support icmp forwarding with icmp_fwd_core.
  • Dpvs: Support mtu config.
  • Dpvs: Obsolete dpdk 16.07 and 17.05.02.
  • Patch: Add eal memory debug patch for dpdk-stable-18.11.2.

Bugfixes

  • Dpvs: Fix traceroute problem of dpvs ip address.
  • Dpvs: Fix flags conflicts for ipvs conn/service/dest.
  • Dpvs: Reset tcp connection when syn-cookie check fails.
  • Dpvs: Use correct mbuf:l4_len for checkout offload.
  • Dpvs: Fix udp checksum problem for uoa when checksum offload is off.
  • Dpvs: Simplify checksum calculations and remove superfluous checksum functions.
  • Dpvs: Refactor netif recv procedure.
  • Dpvs: Fix debug level log problem.
  • Keepalived: Fix problem that local ip config doesn't take effect when restart.
  • Keepalived: Fix crash problem when tunnel is configured.

v1.8.8

3 years ago

Features

  • Dpvs: Configurable kni worker type.
  • Dpvs: Support mh(meglev hash) scheduling.
  • Dpvs: Udp one-packet forwarding.
  • Dpvs: Dpdk-pdump for package capture.
  • Dpvs: Support examination of eal memory(ring/seg/zone/pool) usage.
  • Dpvs: Sapool memory optimization.
  • Dpvs: Support ENA driver on AWS
  • Dpvs: Some code refactorings, including sockopt definitions, jobs initializations, main function, etc.
  • Update some documents.
  • Delete some useless codes.

Bugfixes

  • Dpvs: Fix lcore packet statistics loss problem on isol_rx_lcore.
  • Dpvs: Fix per-lcore mulitcast address initialization problem.
  • Dpvs: Fix ifa::tstemp timer problem when updating ifa entry.
  • Dpvs: Fix ifa adding fail problem by reusing expired ifa.
  • Dpvs: Fix memory leak problem when mbuf is invalid.
  • Dpvs: Fix problem that rs cannot get client's real ip for some short tcp connections.
  • Dpvs: Fix unnecessary memory waste caused by incorrect setting of rte_mempool size.
  • Dpvs: Fix connection limitation problem caused by incorrect rs connection statistics.
  • Dpvs: Fix illegal instruction problem by using the same RTE_MACHINE and cpu CFLAGS as dpdk.
  • Dpvs: Fix mismatch problem when deleting blacklist addresses.
  • Dpvs: Fix problem that mbuf may be used after released.
  • Keepalived: Conhash scheduler performance optimization.
  • Keepalived: Use correct return value for netlink_route.
  • Keepalived: Fix compile error with kernel 3.11 and above.
  • Keepalived: Fix too many open file descriptor problem for tcp_check health check.
  • Keepailved: Fix epoll_wait error after keepalived running for a long time.
  • Ipvsadm: Fix compile warnings of format-overflow and restriction.
  • Ipvsadm: Fix ipvsadm -ln show null error.
  • Toa: Fix problem when getting/setting pte writable flag.

v1.8.4

3 years ago

Bugfixes

  • Keepalived: Fix virtual server partial deletion problem when configured with virtual server group.
  • Keepalived: Fix realserver deletion problem when the realservers marked as down state by health_checker.
  • Keepalived: Fix reload problem for some configurations, such as conn timeout, blklst addresses, etc.
  • Keepalived: Fix configurations would not load problem after restart on occasion.
  • Keepalived: Fix port transition support problem in fullnat mode.
  • Keepalived: Fix logging problem for MATCH/ICMP/ICMPv6 in keepalived.
  • Keepalived: Fix snat configuration and reload problem.
  • Keepalived: Fix conhash scheduler configuration problem in keepalived.
  • Keepalived: Fix incorrect ipvs stats problem caused by mismatch structures of keepalived and dpvs.
  • Keepalived: Fix crash when snat and fullnat configured together.
  • Keepalived: Fix address family setting problem for nat64 forwarding.
  • Keepalived: Fix dpvs route setting problem in keepalived vrrp.
  • Keepalived: Fix laddr configuration problems with ip range style.
  • Keepalived: Mergerd virtual server group address into range list.
  • Keepalived: Update libipvs and related headers.
  • Ipvsadm: do not show address family for MATCH rule.
  • Dpvs: Fix ipv6 and nat64 blklst support problem.
  • Dpvs: Fix duplicated ipv4 local-in routes problem.
  • Dpvs: Allow to use non-continuous lcores, like "-l 0,1-8,11-18".
  • Dpvs: Fix crash prolbem when cpu id is not set correctly by ipvsadm.
  • Dpvs: Fix compile error caused by inline method.
  • Dpvs: Fix a array boundary overflow issue.
  • Dpvs: Fix crash problem when executing 'dpip -v/-s addr show [dev]'.
  • Dpvs: Fix laddr lookup problem in slave worker.

v1.8.2

4 years ago

Features

  • Per-cpu refactor for service/dest/inetaddr/laddr/sapool modules.
  • Keepalived upgrades from v1.2.13 to v2.0.19.
  • Add supports for newer dpdk: dpdk-stable-18.11.2 and dpdk-stable-17.11.6.
  • Add dpvs scheduler module to manage jobs on master and slaves in the same fasion.
  • Add support for Mallenox 25G NIC MLX5.
  • Add iftraf module to collect top N traffic clients.
  • Add dpvs worker performance tuning doc.
  • Add debug module for dpvs.
  • Use dpvs mempool to allocate memory for arp/neighbour.
  • Enable dpdk pdump tool for DPVS.
  • Show the concrete neighbour entry info when its queue is full.
  • Adjust header files used both by tools(keepalived/dpip/ipvsadm) and dpvs.

Bugfixes

  • Use async multicast msg to avoid config setting failures caused by msg timeout.
  • Alleviate the NIC imiss problem caused by inetaddr lock and heap memory.
  • Reduce sapool stats lookup failures.
  • Fix memory underflow problem and add more debug info for dpvs mempool.
  • Fix failure problem when add ipv6 addresses.
  • Fix crash problem when delete all local addresses in fullnat mode.
  • Fix toa ipv6 crash problem caused by page write protect.
  • Fix memory leak problem in tunnel_xmit.
  • Fix crash problem when out of memory.
  • Fix problem when DPDK EAL param '--master-lcore' or '--lcores' is used.
  • Patch dpdk-stable-17.11.2 to support rh75.
  • Several optimizations of memory allocation from eal memory heaps.
  • Refactor several code episodes to make logic clear.
  • Adjust some logs.

v1.7.8

4 years ago

Feature

  • IPVS IPv6 tunnel forwarding mode
  • IPVS IPv6 over IPv4 tunnel forwarding mode (NAT64 tunnel)
  • Enable dedicated queue for bonding mode 4
  • Simple ipset and outwall route for IPv4
  • DPVS asynchronous logging
  • DPVS memory pool
  • Add more debug info

Bugfixes

  • Fix keepalived vrrp process crash problem
  • Fix IPv4 fragment problem for OSPF protocol
  • Fix crash problem when cpu worker number over DPVS_MAX_LCORE
  • Fix serveral problems in ip_vs_redirect
  • Simplify dpvs msg and fix its crash problem
  • Fix inaccuracy problem when carry for DPVS timer
  • Fix contention problem for DPVS global timer
  • Fix templated-conn invalidation problem for DPVS persistent sessions
  • Fix some memory leak problems
  • Fix some formatting problem