Vproxy Versions Save

1) proxy: LB,DNS,Socks. 2) k8s: CRD and Controllers. 3) sdn: TCP/IP Stack + Flow Tables.

1.0.0-BETA-12

1 year ago

Features

  • switch: Support AF_XDP
  • switch: Node-Graph refactor
  • switch: Support tun device for linux and macos
  • switch: Support 802.1Q subinterfaces
  • switch: Add ovs-of syntax packet filter generator
  • switch: Support ratelimit and flow statistics
  • switch: Support conntrack and NAT
  • switch: Support proxy-protocol header in tcp nat
  • library: Netty adaptor
  • library: Vert.x adaptor
  • Add a library based on kotlin coroutine
  • Use CriticalNative JNI methods wherever possible
  • Support core affinity
  • Support plugins
  • ui: Add a UI tool: ipv4 calculator

Upgrades

  • switch: allow to calculate checksum in C code
  • Project restructure: all packages in io.vproxy
  • Use docker to run tests
  • Docker network plugin upgrade: use xdp
  • Command upgrade: ls ll add mod rm
  • websocks: Support uot - udp over tcp, which uses tcp to transmit udp datagram
  • websocks: Use new vjson syntax to design vpws-agent.conf
  • Allow to use jdk 17

Runtime

jlink --add-modules jdk.unsupported,jdk.crypto.ec,jdk.crypto.cryptoki

New linux runtime:

Adoptium OpenJDK

4360fc96470a8dc29737271d7ad286f3  OpenJDK17U-jdk_x64_linux_hotspot_17.0.7_7.tar.gz
95f02bd03bd3405675870736e7ab5560  vproxy-runtime-linux.tar.gz

New musl runtime:

7b94d2301932ef2cbf6946a70779fce9  OpenJDK17U-jdk_x64_alpine-linux_hotspot_17.0.7_7.tar.gz
b2b9e39a6c45043b5adb329502e66154  vproxy-runtime-musl.tar.gz

1.0.0-BETA-11

2 years ago

Features

  1. add net/socks5 client/server
  2. now vproxy is able to retrieve DNS servers by DHCP
  3. add global inspection function, and more inspecting tools
  4. improve direct buffer management, caching, and add direct buffer statistics
  5. add FileFD and add file reading features to vproxy system
  6. add Promise support
  7. vpws-ui now supports configuration loading (from paste board)
  8. [ALPHA] add msquic support in msquic-java
  9. full refactor for processor to make it easier to use
  10. full refactor for h2 processor impl
  11. support websocket in http/1.x and h2
  12. support multiple patterns of system properties

Upgrades

  1. default configuration directory changed to ~/.vproxy, all configs are stored in this directory by default
  2. add a script to automatically configure a full building/testing environment for vproxy: see auto-deploy
  3. add page expire feature in vpws-server and support cache control headers
  4. support direct http proxy in vpws-agent
  5. cache selector related objects to improve performance
  6. use custom threads instead of threadlocals
  7. support gzip in http/1.x req/resp
  8. use TravisCI
  9. use uninitialized byte arrays

1.0.0-BETA-11-DEV-1

3 years ago

Features

This is a pre released, mainly because of the first release of my Chara project, which uses vproxy as its threading and networking base. Though the following features are tested at least once and are supposed to be working as expected.
The release of 1.0.0-BETA-11 will come later with more modifications and a full test.

User space TCP stack

Add a TCP stack run in userspace as a part of the vproxy Switch lib.

  1. listen on an address
  2. accept new connections
  3. read data and automatically send ack
  4. write data and automatically retransmit
  5. FIN and RST
  6. simple window based congestion control

Docker network plugin

Add a new feature to drive docker network based on the vproxy Switch lib. The containers can run above the vproxy virtual networking stack, and cloud be manipulated via docker commands or via vproxy commands.

Improvement

  1. support to dispatch requests based on uri (previously only support to dispatch by Host header)
  2. allow to upload CertKeys via api
  3. add AbstractProcessor to simplify the processor code
  4. better jlink support
  5. vjson lib upgrade to 1.2.1 to fix charset issues
  6. change configuration storage locations

1.0.0-BETA-10

3 years ago

Features

SDN

Added software vxlan switch support: tap and vxlan and trunk.

  1. tap device for linux, macos and windows
  2. support vxlan packets
  3. exchange vxlan packets between switches
  4. encrypted link from switch to switch
  5. synthetic ip and routes

Mirror

Allow software to generate packets to tap devices and use tcpdump to capture them.

This helps debug the SSL buffers, kcp arq fds etc.

Modular

Use gradle and Jigsaw modular system to modularize vproxy into small components.

Fix

  1. AbstractWrapBuffer fix: SSL used to hang in some cases

1.0.0-BETA-9

4 years ago

Features

  1. Kubernetes integration, visit vpctl for more info.
  2. Support HTTP and DNS health check. protocol http/dns.
  3. Use annotations to determine detailed health check arguments. See AnnotationKeys.java.
  4. Record health check time cost for each server.
  5. Record health check fail reason for each server.
  6. Support to watch health check events.
  7. Support to modify listOfCertKey in TcpLb.
  8. Support better direct-relay mechanism in vpws-agent.

Change

  1. Now http-controller and resp-controller are launched by default on startup (127.0.0.1:18776 and 16379).
  2. WebSocksProxyAgent config upgrade

Removal

  1. Remove the discovery module. Since now we support k8s, there's no need to implement a discovery module by ourselves.

1.0.0-BETA-8

4 years ago

Features

default discovery config

Now discovery is enabled by default. The default configuration will be based on the current nic config.

SRV records

Use SRV to retrieve all servers handled by the dns server.

Upgrade

  1. certificate selection should consider common name
  2. support alpn proxy in https relay
  3. support annotations in server-group/upstream
  4. change pac.address to pac.listen

Doc

  1. http api doc
  2. add vpctl doc
  3. better README format (add detail tags)

Tools

Visit here for more info.

vpctl

The control program for the vproxy instance.

1.0.0-BETA-7

4 years ago

Features

DNS

  1. Add a DNS Client, and remove the use of JDK DNS impl.
  2. Add a DNS Server and corresponding API
  3. DNS Server supports customized A/AAAA records based on server-group names

SSL

  1. Support SNI on server side, automatically select certs based on SNI

WebSocksProxyServer/Agent

  1. Server: Add an api to resolve domains.
  2. Server: Support webroot for some small static files
  3. Agent: Support dns resolve. You may choose some domains to be resolved on server side
  4. Agent: Support https relay. Netflow can automatically be proxied just by setting the DNS address and adding a root CA cert on devices.
  5. Both: Support to compress kcp-tunnel netflow

Improvement

  1. Support graalvm native-image (the latest graalvm native-image supports JDK11 and DatagramChannel)
  2. Add some scripts to generate self signed CA cert and certs for specific domains
  3. Add a Makefile to automate the building process
  4. Support to disable health check in server-groups. Corresponding APIs are upgraded.
  5. OOM check: automatically terminate the program if got OOM
  6. Some util upgrade and small code refactor

New extended Apps

  1. Add a kcptun app

bug fix

General Bug fix for:

  • SSL Buffers
  • KCP fds implementation

1.0.0-BETA-6

4 years ago

Features:

Native support (Posix API and F-Stack)

  1. Refactor: define FDs to replace the direct use of Channels
  2. Support native fds implementation for macos and linux.
  3. Support native fds implementation for F-Stack.

Protocol

  1. WebSocksProxyAgent now supports ss.
  2. WebSocksProxyAgent/Server now supports kcp (tunnel).

DevOps

  1. Add a new program Daemon to work with Systemd.
  2. Add a new program HelloWorld to quickly check whether the environment and main functionalities are ok.

1.0.0-BETA-5

4 years ago

Features

  1. handle PSH+FIN properly
  2. add http controller, support full functionality of resp controller
  3. add vjson lib
  4. add vserver
  5. add vclient
  6. refactor the discovery protocol
  7. remove smart-lb-group
  8. add smart-node-delegate
  9. add smart-group-delegate
  10. in most cases use FIN instead of RST
  11. rename some classes

Runtime

jlink --add-modules jdk.unsupported,jdk.crypto.ec,jdk.crypto.cryptoki

New linux runtime:

AdoptOpenJDK

MD5 (OpenJDK11U-jdk_x64_linux_hotspot_11.0.4_11.tar.gz) = 501e4af4764ecb96f6abe9ae1ff12b9c
MD5 (vproxy-runtime-linux.tar.gz) = f9a57f0a244b47737188581b4fef806f

New musl runtime:

MD5 (openjdk-14-ea+15_linux-x64-musl_bin.tar.gz) = 32bbc431d37382789e908990e9094fde
MD5 (vproxy-runtime-musl.tar.gz) = ad4adfc32e27df1082f748e35956d15c

1.0.0-BETA-4

4 years ago
  1. support http/1.x
  2. add a mixed processor which can handle both h2 and http/1.x
  3. support to load certs/key and enable TLS in LB
  4. alpn for h2 or http/1.1 is supported