kcptun-rust 1.1.0

A Rust implementation of kcptun, a fast and reliable tunnel based on KCP protocol
Documentation
# kcptun-rust 功能特性

## ✅ 完整实现的功能

### 1. 加密算法支持 🔐

已完整实现 13 种加密算法,与 Go 版本完全兼容:

| 算法 | 说明 | 密钥长度 | 推荐度 |
|------|------|----------|--------|
| `aes` / `aes-128` | AES-128 加密 | 16 字节 | ⭐⭐⭐⭐⭐ |
| `aes-192` | AES-192 加密 | 24 字节 | ⭐⭐⭐⭐⭐ |
| `aes-256` | AES-256 加密 | 32 字节 | ⭐⭐⭐⭐⭐ |
| `sm4` | SM4 国密算法 | 16 字节 | ⭐⭐⭐⭐ |
| `salsa20` | Salsa20 流加密 | 32 字节 | ⭐⭐⭐⭐ |
| `blowfish` | Blowfish 加密 | 可变 | ⭐⭐⭐ |
| `twofish` | Twofish 加密 | 可变 | ⭐⭐⭐ |
| `cast5` | CAST5 加密 | 16 字节 | ⭐⭐⭐ |
| `3des` | 3DES 加密 | 24 字节 | ⭐⭐ |
| `tea` | TEA 加密 | 16 字节 | ⭐⭐ |
| `xtea` | XTEA 加密 | 16 字节 | ⭐⭐ |
| `xor` | SimpleXOR 加密 | 可变 ||
| `none` | 不加密 | - | ⚠️ |

**使用示例:**

```bash
# 使用 AES-128 加密(默认,推荐)
./kcptun-server --crypt aes --key "your-secret-key"

# 使用 SM4 国密算法
./kcptun-server --crypt sm4 --key "your-secret-key"

# 使用 Salsa20
./kcptun-server --crypt salsa20 --key "your-secret-key"
```

### 2. KCP 协议特性 🚀

- **多种速度模式**:normal、fast、fast2、fast3
- **FEC 前向纠错**:支持 Reed-Solomon 纠删码
- **窗口大小调节**:可配置发送/接收窗口
- **MTU 自定义**:适应不同网络环境
- **NoDelay 配置**:精细控制延迟和重传
- **流模式**:优化大数据传输

### 3. SMUX 多路复用 🔀

- **版本支持**:SMUX v1 和 v2
- **会话管理**:自动创建和回收
- **流控制**:每个流独立的缓冲区
- **Keep-Alive**:心跳保持连接
- **帧大小配置**:可调整最大帧大小

### 4. 配置灵活性 ⚙️

- **命令行参数**:所有参数都可通过命令行指定
- **JSON 配置文件**:支持从文件加载配置
- **密钥派生**:使用 PBKDF2 从密码派生密钥
- **自动模式配置**:根据 mode 自动设置参数

### 5. 性能优化 ⚡

- **异步 I/O**:基于 Tokio 的高性能异步运行时
- **零拷贝**:尽可能减少数据复制
- **并发连接**:客户端支持多个并发 KCP 连接
- **连接池管理**:会话复用和自动过期

## 📊 性能特点

- **编译文件大小**  - 客户端:约 3.5 MB
  - 服务端:约 3.6 MB

- **内存占用**:低内存占用,适合在资源受限环境中运行

- **兼容性**:与 Go 版本 kcptun 完全兼容

## 🎯 使用场景

1. **网络加速**:加速 TCP 连接,降低延迟
2. **弱网环境**:在丢包严重的网络中保持稳定传输
3. **跨境传输**:优化跨国网络连接质量
4. **游戏加速**:降低游戏延迟
5. **远程办公**:加速 SSH、RDP 等远程连接

## 📝 配置建议

### 低延迟场景(游戏、实时应用)

```bash
--mode fast3 --mtu 1300 --sndwnd 512 --rcvwnd 512 --datashard 5 --parityshard 2
```

### 高带宽场景(文件传输、视频)

```bash
--mode fast --mtu 1400 --sndwnd 2048 --rcvwnd 2048 --datashard 10 --parityshard 3
```

### 弱网环境(高丢包率)

```bash
--mode fast2 --mtu 1200 --datashard 20 --parityshard 10
```

## 🔒 安全建议

1. **使用强密码**:密钥长度至少 16 字符,包含大小写字母、数字和特殊字符
2. **选择合适的加密算法**:推荐使用 AES-128 或 AES-256
3. **定期更换密钥**:建议每月更换一次密钥
4. **不要使用默认密钥**:务必修改默认的 "it's a secrect"

## 🚧 注意事项

1. **客户端和服务端配置必须匹配**   - 加密算法(crypt)
   - 密钥(key)
   - FEC 参数(datashard/parityshard)
   - SMUX 版本(smuxver)

2. **防火墙配置**   - 服务端需要开放 UDP 端口
   - 客户端需要允许出站 UDP 连接

3. **MTU 设置**   - 设置过大可能导致分片
   - 设置过小会降低效率
   - 建议根据网络环境测试调整

## 📚 更多信息

- GitHub:https://github.com/xtaci/kcptun(Go 版本参考)
- KCP 协议:https://github.com/skywind3000/kcp
- rust_tokio_kcp:https://crates.io/crates/rust_tokio_kcp
- smux_rust:https://crates.io/crates/smux_rust