tcpquiclab report initialized
This commit is contained in:
@@ -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 的“队头阻塞”问题 (即一个包丢失不影响其他流的传输),从而在丢包环境下表现更优。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user