tcpquiclab report initialized
This commit is contained in:
@@ -5,6 +5,7 @@ This guide adapts the Windows-based experiment manual for a Linux environment.
|
||||
## 1. Prerequisites
|
||||
|
||||
Ensure you have the following installed:
|
||||
|
||||
- `gcc` (Compiler)
|
||||
- `quiche` library (Headers and Shared Object installed)
|
||||
- `openssl` (For certificates)
|
||||
@@ -20,6 +21,7 @@ make
|
||||
```
|
||||
|
||||
This will generate:
|
||||
|
||||
- `tcp_server`, `tcp_client` (Task 1)
|
||||
- `quic_server`, `quic_client` (Task 2)
|
||||
- `tcp_perf_server`, `tcp_perf_client` (Task 3 Performance)
|
||||
@@ -30,23 +32,29 @@ This will generate:
|
||||
## 3. Task 1: Basic TCP Client-Server
|
||||
|
||||
1. **Start the Server:**
|
||||
|
||||
```bash
|
||||
./tcp_server
|
||||
```
|
||||
|
||||
2. **Run the Client (in a new terminal):**
|
||||
|
||||
```bash
|
||||
./tcp_client
|
||||
```
|
||||
|
||||
|
||||
**Expected Output:** The client sends "Hello...", server receives it and replies.
|
||||
|
||||
## 4. Task 2: Basic QUIC Client-Server
|
||||
|
||||
1. **Start the Server:**
|
||||
|
||||
```bash
|
||||
./quic_server
|
||||
```
|
||||
|
||||
2. **Run the Client (in a new terminal):**
|
||||
|
||||
```bash
|
||||
./quic_client
|
||||
```
|
||||
@@ -58,9 +66,11 @@ This will generate:
|
||||
### 3.1 Connection Establishment Time
|
||||
|
||||
1. Start capture on loopback:
|
||||
|
||||
```bash
|
||||
sudo tcpdump -i lo -w handshake.pcap
|
||||
```
|
||||
|
||||
*(Or use Wireshark on the `lo` interface)*
|
||||
|
||||
2. Run the TCP or QUIC client/server pairs again.
|
||||
@@ -82,11 +92,14 @@ We use Linux `tc` (Traffic Control) with `netem` instead of `clumsy`.
|
||||
**Scenario A: 5% Packet Loss**
|
||||
|
||||
1. Apply 5% loss to the loopback interface:
|
||||
|
||||
```bash
|
||||
sudo tc qdisc add dev lo root netem loss 5%
|
||||
```
|
||||
|
||||
2. Run the perf tests again.
|
||||
3. **Important:** Remove the rule after testing!
|
||||
|
||||
```bash
|
||||
sudo tc qdisc del dev lo root
|
||||
```
|
||||
@@ -94,11 +107,14 @@ We use Linux `tc` (Traffic Control) with `netem` instead of `clumsy`.
|
||||
**Scenario B: 100ms Delay**
|
||||
|
||||
1. Apply 100ms delay:
|
||||
|
||||
```bash
|
||||
sudo tc qdisc add dev lo root netem delay 100ms
|
||||
```
|
||||
|
||||
2. Run the perf tests again.
|
||||
3. Remove the rule:
|
||||
|
||||
```bash
|
||||
sudo tc qdisc del dev lo root
|
||||
```
|
||||
@@ -111,29 +127,38 @@ This task compares the performance of 5 parallel TCP connections against a singl
|
||||
Establish 5 TCP connections simultaneously, each transferring 20MB (Total 100MB).
|
||||
|
||||
1. Start TCP Multi-Connection Server:
|
||||
|
||||
```bash
|
||||
./tcp_multi_server
|
||||
```
|
||||
|
||||
2. Run TCP Multi-Connection Client:
|
||||
|
||||
```bash
|
||||
./tcp_multi_client
|
||||
```
|
||||
|
||||
3. Record total time and throughput from the server output.
|
||||
|
||||
**Scenario 2: QUIC Single-Connection Multi-Streaming**
|
||||
Establish 1 QUIC connection and open 5 streams concurrently, each transferring 20MB (Total 100MB).
|
||||
|
||||
1. Start QUIC Multi-Stream Server:
|
||||
|
||||
```bash
|
||||
./quic_multi_server
|
||||
```
|
||||
|
||||
2. Run QUIC Multi-Stream Client:
|
||||
|
||||
```bash
|
||||
./quic_multi_client
|
||||
```
|
||||
|
||||
3. Record the performance statistics.
|
||||
|
||||
**Analysis Points:**
|
||||
|
||||
- Compare completion times in a normal network.
|
||||
- Use `tc` to simulate packet loss (e.g., 5%). Observe how QUIC's multiplexing avoids TCP's Head-of-Line (HoL) blocking, where a single lost packet in one TCP connection doesn't stall the other streams in QUIC.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user