tcpquiclab report initialized

This commit is contained in:
2026-01-21 20:29:40 +08:00
parent 8d6c7c923f
commit 866490dae4
8 changed files with 23540 additions and 94 deletions

View File

@@ -5,6 +5,7 @@
## 1. 预备工作
确保已安装以下工具和库:
- `gcc` (编译器)
- `quiche` 库 (已安装头文件和共享库/静态库)
- `openssl` (用于生成证书)
@@ -20,6 +21,7 @@ make
```
这将生成以下可执行文件:
- `tcp_server`, `tcp_client` (任务一:基础 TCP)
- `quic_server`, `quic_client` (任务二:基础 QUIC)
- `tcp_perf_server`, `tcp_perf_client` (任务三TCP 性能测试)
@@ -30,23 +32,29 @@ make
## 3. 任务一:基础 TCP 客户端-服务器
1. **启动服务器:**
```bash
./tcp_server
```
2. **运行客户端 (在新的终端窗口)**
```bash
./tcp_client
```
**预期输出:** 客户端发送消息,服务器接收并回复。
## 4. 任务二:基础 QUIC 客户端-服务器
1. **启动服务器:**
```bash
./quic_server
```
2. **运行客户端 (在新的终端窗口)**
```bash
./quic_client
```
@@ -58,9 +66,11 @@ make
### 3.1 连接建立时间
1. 在回环接口 (`lo`) 上开始抓包:
```bash
sudo tcpdump -i lo -w handshake.pcap
```
*(或者使用 Wireshark 监听 `lo` 接口)*
2. 再次运行 TCP 或 QUIC 的客户端/服务器程序。
@@ -82,11 +92,14 @@ make
**场景 A: 5% 丢包率**
1. 设置回环接口 5% 丢包:
```bash
sudo tc qdisc add dev lo root netem loss 5%
```
2. 再次运行性能测试程序。
3. **重要:** 测试结束后删除规则!
```bash
sudo tc qdisc del dev lo root
```
@@ -94,11 +107,14 @@ make
**场景 B: 100ms 延迟**
1. 设置 100ms 延迟:
```bash
sudo tc qdisc add dev lo root netem delay 100ms
```
2. 再次运行性能测试程序。
3. 删除规则:
```bash
sudo tc qdisc del dev lo root
```
@@ -111,29 +127,38 @@ make
同时建立 5 个 TCP 连接,每个连接传输 20MB 数据 (总计 100MB)。
1. 启动 TCP 多连接服务器:
```bash
./tcp_multi_server
```
2. 启动 TCP 多连接客户端:
```bash
./tcp_multi_client
```
3. 记录服务器输出的总时间与吞吐量。
**场景 2: QUIC 单连接多流复用**
建立 1 个 QUIC 连接,在其中同时开启 5 个流 (Stream),每个流传输 20MB 数据 (总计 100MB)。
1. 启动 QUIC 多流服务器:
```bash
./quic_multi_server
```
2. 启动 QUIC 多流客户端:
```bash
./quic_multi_client
```
3. 记录服务器输出的统计数据。
**分析重点:**
- 在正常网络下,两者的总耗时差异。
- 使用 `tc` 模拟丢包 (如 5%) 后对比两者性能下降的幅度。QUIC 的多流复用应能避免 TCP 的“队头阻塞”问题 (即一个包丢失不影响其他流的传输),从而在丢包环境下表现更优。