Releases: iqiyi/dpvs
Releases · iqiyi/dpvs
Release v1.9.8
Features
- dpvs: Support QUIC/HTTP3, add nginx patches and facilitating code snippets for use of quic.
- dpvs: Support SCTP forwarding implementation.
- dpvs: Support LLDP protocol.
- dpvs: Update default dpdk version to dpdk-stable-20.11.10.
- dpvs: IPVS supports ipset based allow/deny list which allows for cidr acl rule.
- dpvs: Support IPv6 link-local address auto configuration.
- tools: Add ipset supports in dpvs-agent.
- tools: Add snapshot caches for dpvs-agent virtual server apis.
- doc: Update README.md.
Bugfixes
- dpvs: Fix multicast address sync problems and add dpip supports for multicast address lookup.
- dpvs: Fix build errors and warnings with gcc verison 8.0+.
- dpvs: Fix coredump problem when starting dpvs with insufficient memory.
- dpvs: Use dpdk random generator in critical datapath for performance enhancement.
- dpvs: Fix ipset default address family problem.
- dpvs: Fix segmentation fault problem when running on machines whose cpu number is over DPVS_MAX_LCORE.
- dpvs: Refactor netif_rte_port_alloc with netif_alloc.
- dpvs: Fix prolems in IPv6 all-nodes and all-routers address initialization.
- dpvs: Fix memory corruption problem when retrieving nic's xstats.
- tools: Fix concurrency racing problem when dpvs-agent and healthcheck changing rs simultaneously.
- tools: Fix healthchech bad icmp checksum problem ocasionally appeared in udp and udpping checkers.
- tools: Fix keepalived quorum up script not excuted problem when old rs removed and new ones added in a reload.
- tools: Fix ipvsadm local IP won't remove problem.
- tools: Fix ipset list-all problem and improve efficiency.
- tools: Fix dpip delay problem when list empty ipset with sorting enabled.
Release v1.9.6
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.
Release v1.9.4
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.
Release v1.9.2
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.
Release v1.8.12
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.
Release v1.9.0
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.
Release v1.8.10
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.
Release v1.8.8
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.
Release v1.8.4
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.
Release v1.8.2: Performance Enhancement
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.