Đếm một gói G.729 qua một đường hầm IPsec
Một ví dụ G.729 đã tính cho thấy tải trọng, RTP, ESP và khung Ethernet cộng lại thế nào, và vì sao cùng một cuộc gọi tốn băng thông khác nhau ở mỗi ranh giới.
Thoại qua IPsec thường được nêu bằng bitrate của codec, và con số đó sai ở mọi ranh giới trừ ranh giới của chính codec. Âm thanh là 8 kbit/s, gói mang nó lớn hơn, vỏ ESP còn lớn hơn nữa, và khung Ethernet thêm phần đóng khung mà không bản bắt gói nào trên đường hầm cho thấy. Đếm một gói từ một định dạng đã nêu là cách duy nhất để biết liên kết vật lý thực sự phải mang gì. Phần trình bày dưới đây chỉ làm việc đó cho một chiều, và mọi con số ở đây là số học, không phải phép đo.
Hãy bắt đầu từ lựa chọn đóng gói, không phải từ con số của codec
Bảng codec chỉ cho tốc độ tải trọng và không gì khác: G.729 phát ra 8 kbit/s, tức 30 byte âm thanh mỗi 30 ms. Nó không nói gì về tiêu đề, bảo vệ hay đóng khung, và chính ba thứ đó chi phối kết quả. Khoảng thời gian là một lựa chọn chính sách mà hai đầu phải đồng ý, nên hãy chọn nó trước và nêu rõ, vì mọi con số sau đó đều phụ thuộc vào quyết định duy nhất ấy.
Ví dụ này dùng 30 ms, nên tốc độ gói là 33.3 mỗi giây. Nó giả định tiêu đề RTP 12 byte, tiêu đề UDP 8 byte và tiêu đề IPv4 bên trong 20 byte không có tuỳ chọn, và không có SRTP, nén tiêu đề hay phần đệm bảo mật luồng giao thông; bất kỳ thay đổi nào cũng dịch chuyển ngân sách theo, vì thế các giả định nằm ngay cạnh câu trả lời.
Thêm các tiêu đề bên trong, rồi đến vỏ ESP
Ứng dụng gửi tải trọng cộng RTP cộng UDP cộng IP, tức 70 byte ở cách đóng gói này. Luồng bên trong đó ra 18.7 kbit/s, đã hơn hai lần tốc độ codec, vì tiêu đề chứ không phải âm thanh chiếm phần lớn gói. Không byte nào trong số đó là giọng nói; chúng là cái giá của việc đánh địa chỉ và đánh số thứ tự. Một bản bắt gói trên đường hầm cho thấy đúng con số này, và đó là con số người ta trích dẫn khi nói cuộc gọi nhỏ.
Đây cũng là con số không bao giờ tới được dây. Chế độ đường hầm ESP thêm SPI và số thứ tự 8 byte, IV tường minh 8 byte cho AES-GCM, phần đuôi 2 byte và thẻ xác thực 16 byte. Tải trọng 70 byte cộng phần đuôi thành 72, vốn đã thoả căn lề bốn byte, nên ở đây không cần đệm thêm.RFC 4106 quy định kích thước IV và thẻ của GCM, và cả hai thuộc về số học, không phải chú thích:
30 payload, G.729 at 30 ms
12 RTP
8 UDP
20 inner IPv4
--
70 inner IP packet
8 ESP SPI and sequence
8 explicit IV
2 pad length and next header
16 authentication tag
--
104 ESP packetThêm các tiêu đề bên ngoài mà việc đi qua NAT đòi hỏi
Bên ngoài vỏ ESP có tiêu đề IPv4 ngoài 20 byte và tiêu đề UDP 8 byte cho việc đi qua NAT, nên gói thành 132 byte. Việc đóng gói UDP tồn tại vì gói phải đi qua một thiết bị dịch giữa hai đầu, và nó đổi hình dạng bên ngoài mà không chạm vào tải trọng được bảo vệ. Ở 33.3 gói mỗi giây, 132 byte là khoảng 35.2 kbit/s, tức xấp xỉ bốn lần tốc độ danh nghĩa của codec.
Không thể bỏ thẻ hay IV khỏi ước tính để làm nó nhỏ hơn, vì cả hai là phần của thứ mà liên kết thực sự sẽ mang. Một ước tính bỏ qua chúng mô tả một gói mà bên nhận sẽ từ chối. Điều tương tự áp dụng cho phần đuôi, vốn tồn tại để đánh dấu ranh giới tải trọng và tiêu đề kế tiếp trong vùng được bảo vệ.
Nêu tên ranh giới trước khi trích dẫn con số
Con số IP bên ngoài vẫn loại trừ phần đóng khung Ethernet. Một liên kết truy cập có gắn thẻ hay không gắn thẻ thêm tiêu đề MAC 14 byte và chuỗi kiểm tra khung 4 byte, làm khung thành 150 byte, đó là kích thước mà một cổng chuyển mạch đếm. Ở cùng tốc độ gói, đó là 40 kbit/s, gấp năm lần tốc độ codec, và khác biệt không phải lãng phí mà là cái giá của việc vận chuyển.
| Boundary | Packet size | Rate at 33.3 packets/s | What it counts |
|---|---|---|---|
| Codec payload | 30 bytes | 8.0 kbit/s | The audio alone |
| Inner IP packet | 70 bytes | 18.7 kbit/s | Application headers included |
| Outer IP packet | 132 bytes | 35.2 kbit/s | ESP and NAT-T included |
| Ethernet frame | 150 bytes | 40.0 kbit/s | Link framing included |
Con số 40 kbit/s vẫn loại trừ phần mở đầu, khoảng trống giữa các khung, thẻ VLAN, phần đóng gói của nhà cung cấp, RTCP, báo hiệu và âm thanh đi theo chiều ngược lại. Đây là ước tính cho một chiều, không phải đặt trước liên kết, và trích dẫn nó như một sự đặt trước sẽ phóng đại thứ liên kết phải dành ở một chỗ trong khi đánh giá thấp ở chỗ khác. Bản bắt gói trên máy chủ cũng có thể bỏ sót phần đóng khung mà liên kết thêm vào, vì thế phải nêu tên ranh giới bên cạnh con số, và vì thế một bảng ranh giới hữu ích hơn một con số tiêu đề duy nhất. Hãy đặt trước riêng cho chiều bạn không đếm.
Đối chiếu số học với giao diện
Trước khi tin vào ước tính, hãy so nó với những gì giao diện báo cáo cho một số gói đã biết. Hãy bắt gói trên giao diện vật lý chứ không phải thiết bị đường hầm, để phần đóng khung bạn đang cố tính được bao gồm, và chờ một sai lệch nhỏ thay vì khớp hoàn hảo.
sudo tcpdump -ni eth0 -c 50 'udp port 4500'
ip -s link show eth0Bản bắt gói xác nhận kích thước gói bên ngoài, trong khi bộ đếm giao diện cho thấy tốc độ bao gồm đóng khung. Nếu hai bên lệch nhau khoảng mức cho phép của Ethernet, số học là đúng và chỉ có ranh giới bị đặt tên sai. Một khác biệt lớn hơn nhiều so với một tiêu đề khung cho thấy có thứ khác trên liên kết, như truyền lại hay một luồng khác dùng chung giao diện. Hãy viết khoảng đóng gói, bộ bảo vệ và ranh giới bên cạnh con số, vì một ước tính thiếu ba thứ đó sẽ được người đọc kế tiếp trích dẫn như một phép đo.