From 8d315ea4e7a89bbe3122ea30a5d6870301811649 Mon Sep 17 00:00:00 2001 From: Datong Sun Date: Sun, 10 Apr 2022 03:25:32 -0700 Subject: [PATCH] docs(README) add packet header diagram --- README.md | 4 +++- images/packet-headers.png | Bin 0 -> 30455 bytes 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 images/packet-headers.png diff --git a/README.md b/README.md index cb42a10..4a8859d 100644 --- a/README.md +++ b/README.md @@ -234,6 +234,8 @@ Phantun's additional overhead: 12 bytes. I other words, when using Phantun, the UDP packet is reduced by 12 bytes. This is the minimum overhead possible when doing such kind of obfuscation. +![Packet header diagram](images/packet-headers.png) + [Back to TOC](#table-of-contents) ## MTU calculation for WireGuard @@ -307,7 +309,7 @@ Here is a quick overview of comparison between those two to help you choose: | UDP over UDP obfuscation | ❌ | ✅ | | Multi-threaded | ✅ | ❌ | | Throughput | Better | Good | -| Raw IP mode | TUN interface | Raw sockets + BPF | +| L4 IP mode | TUN interface | Raw sockets + BPF | | Tunneling MTU overhead | 12 bytes | 44 bytes | | Seprate TCP connections for each UDP connection | Client/Server | Server only | | Anti-replay, encryption | ❌ | ✅ | diff --git a/images/packet-headers.png b/images/packet-headers.png new file mode 100644 index 0000000000000000000000000000000000000000..fad4ba904feee13af3576e1d3652c8e7aed49efc GIT binary patch literal 30455 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 g`CAxTV&93Wq08y8F_){tUrqZ#Ni_@% literal 0 HcmV?d00001