Giới thiệu dự án

Đồ án tốt nghiệp ngành Điện tử – Viễn thông "Mô hình truyền thoại PC–PC bằng giao thức SIP" (Trường Đại học Dân lập Kỹ thuật Công nghệ TP.HCM, 2008) giải quyết một bài toán rất cụ thể của giai đoạn Internet băng hẹp Việt Nam: chi phí cuộc gọi đường dài qua mạng chuyển mạch kênh PSTN quá cao, trong khi hạ tầng IP dựa trên bộ nghi thức TCP/IP đã sẵn sàng và có thể tải được lưu lượng thoại.

Bối cảnh và pain points cụ thể

  • Mạng thuê bao đường truyền cố định (leased line) có "chi phí cao khi hoạt động và khi lắp đặt" — đây chính là lý do X.25 rồi Frame Relay ra đời, và cũng là lý do VoIP hấp dẫn.
  • Kênh truyền dữ liệu thế hệ cũ bị giới hạn nặng: X.25 chỉ đạt tối đa 64 Kbps, "đủ cho liên lạc định hướng ký tự giữa máy chủ và các thiết bị đầu cuối, nhưng rõ ràng là rất hạn chế cho các ứng dụng xử lý real-time".
  • Thoại là ứng dụng real-time điển hình, nhưng IP lại là "hệ thống phân phát gói phi kết nối, cố gắng nhất (best-effort) và không tin cậy" — gói "có thể bị mất, nhận hai lần, bị trễ hoặc là nhận không theo thứ tự".

Problem statement: Làm thế nào thiết lập, quản lý và giải phóng một phiên thoại giữa hai PC trên nền một mạng IP vốn không đảm bảo thứ tự và độ trễ, mà không cần tổng đài PSTN?

Mục tiêu dự án (đánh số)

  1. Hệ thống hóa cơ sở lý thuyết TCP/IP theo mô hình 4 lớp và ánh xạ sang OSI 7 lớp (Chương 1, tr.2–73).
  2. Khảo sát các mô hình VoIP: PC-to-PC, PC-to-Phone, Phone-to-Phone và 5 kiến trúc Gateway (Chương 2, tr.74–86).
  3. Phân tích cấu trúc bản tin SIP và giao thức mô tả phiên SDP (Chương 3, tr.87–100).
  4. Hiện thực chương trình truyền thoại PC–PC qua SIP Proxy (Chương 4, tr.102–110).

Phạm vi và giới hạn: đồ án chọn mô hình PC-to-PC — mô hình duy nhất trong ba mô hình VoIP không cần Gateway, do đó không phải xử lý báo hiệu SS7, không phải mua card DSP chuyên dụng. Đây là giới hạn có chủ đích, giúp một sinh viên hoàn thành trong một học kỳ với chi phí phần cứng gần bằng 0.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tài liệu so sánh trực tiếp các công nghệ WAN làm nền cho VoIP:

Công nghệ Tốc độ Sửa sai Băng thông Nhược điểm
X.25 tối đa 64 Kbps Có, phát lại gói hỏng ở tầng mạng Phân phối đồng đều mọi thời điểm Overhead sửa sai giết chết ứng dụng real-time
Frame Relay 56 Kbps – 44,6 Mbps Không sửa, chỉ phát hiện và loại bỏ frame lỗi Co giãn "từ mật độ rất thấp đến mật độ cao một cách nhanh chóng" Giả định kênh truyền tin cậy
ATM 52 Mbps (OC-1) – 2,5 Gbps (OC-48) qua SONET Cell 53 byte cố định Đồng bộ cell, đảm bảo tốc độ dữ liệu Chi phí hạ tầng lớn

Gap analysis: ATM là công nghệ duy nhất "cung cấp dịch vụ đồng bộ cell cho phép ATM bảo đảm được tốc độ dữ liệu và đồng bộ những kênh dữ liệu" — chính xác là cái thoại cần. Nhưng ATM đắt. Khoảng trống mà đồ án khai thác: đẩy trách nhiệm real-time lên tầng ứng dụng (SIP/SDP) thay vì đòi hỏi tầng vật lý, để chạy được trên Ethernet/IP giá rẻ.

So sánh hai chuẩn LAN nền tảng cũng được đồ án phân tích để lý giải lựa chọn Ethernet:

Tiêu chí Ethernet II / IEEE 802.3 IEEE 802.5 Token Ring
Truy nhập CSMA/CD, cạnh tranh Thẻ bài, tuần hoàn
Trễ Không xác định (có va chạm) Xác định, có bit ưu tiên trong trường AC
Hiệu suất Cao khi tải thấp Thấp: "mỗi máy không phải lúc nào cũng có nhu cầu truyền dữ liệu"
Chi phí "thấp hơn rất nhiều so với token ring" Cao, gắn với IBM

Đồ án kết luận thẳng: "Bộ giao thức TCP/IP từ đầu được phát triển dựa trên mạng Ethernet" — nên hạ tầng thử nghiệm là Ethernet.

Yêu cầu người dùng theo MoSCoW

  • Must: thiết lập cuộc gọi hai chiều PC–PC; đăng ký qua Proxy; mô tả codec qua SDP.
  • Should: hỗ trợ nhiều mã hóa thoại, hủy cuộc gọi (BYE) sạch.
  • Could: hiển thị trạng thái báo hiệu để gỡ rối.
  • Won't: kết nối PSTN, tính cước, hội nghị đa bên.

Thiết kế hệ thống

Kiến trúc phân lớp — đồ án bám mô hình TCP/IP 4 lớp (Hình 1.2):

Application  : SIP (báo hiệu) + SDP (mô tả phiên) + luồng thoại
Transport    : UDP (thoại, độ trễ thấp) / TCP (khi cần tin cậy)
Internet     : IP, ICMP, ARP/RARP, định tuyến RIP/IGRP/OSPF
Network Access: Ethernet II — frame 64…1518 byte, data 46…1500 byte

Lý do chọn UDP cho luồng thoại: tầng vận chuyển TCP/IP cung cấp hai kiểu phân phát — "Phân phát tin cậy (Reliable delivery)" với phát lại theo thứ tự, và "Phân phát không tin cậy (Unreliable delivery)": "Không có kiểm tra lỗi, phân phát không theo thứ tự nên thường được dùng trong các mạng có xác suất lỗi nhỏ". Với thoại, một gói đến muộn là gói vô dụng — phát lại chỉ làm tăng jitter. Đây là rationale kỹ thuật trực tiếp cho thiết kế.

Ràng buộc kích thước gói (evidence số học)

  • MTU Ethernet = 1500 byte payload; proNET-10 = 2044 byte.
  • Datagram IP tối đa = 2^16 = 65.536 byte (trường Total Length 16 bit).
  • Frame Ethernet tối thiểu 576 bit để CSMA/CD phát hiện được va chạm trên đường kính mạng tối đa 2500 m.

Ví dụ phân mảnh trong tài liệu: datagram 1400 byte dữ liệu đi qua mạng MTU = 620 → tách thành 3 mảnh (200 / 600 / 600 byte), offset 0 / … / 1200. Với thoại, phân mảnh là kẻ thù: "Nếu bất cứ một mảnh nào bị mất thì sẽ không tái hợp lại thành datagram được và nguyên cả datagram sẽ bị bỏ đi". Do đó gói RTP/thoại phải được giữ dưới MTU — thiết kế phải chọn payload nhỏ, và có thể bật do not fragment bit trong trường FLAGS.

Header IP dùng cho QoS: trường Service Type 8 bit gồm 3 bit Precedence (0–7) và các bit D/T/R — D=1 yêu cầu mức trễ thấp, R=1 yêu cầu độ tin cậy cao. "Nếu một gateway có nhiều đường đi cho một gói thì nó sẽ chọn đường đi đúng với nội dung của trường này nhiều nhất." Đây là cơ chế QoS sẵn có mà ứng dụng thoại nên đặt D=1.

Định tuyến: cảnh báo quan trọng của đồ án về RIP — metric là số bước nhảy, tối đa 15 (16 = không tiếp cận được), cập nhật quảng bá mỗi 30 s, cân bằng tải mặc định trên 4 đường song song. Hình 1.6 chỉ rõ lỗ hổng: gói từ host 1 đến host 2 "sẽ qua kết nối tốc độ 19.2 kbps bởi vì router đó sử dụng tổng bước nhảy thấp nhất" — một lựa chọn tệ cho thoại. Khuyến nghị rút ra: dùng IGRP/EIGRP hoặc OSPF (metric có xét băng thông) cho mạng chở VoIP.

Bảng lộ trình dạng cặp (N, G) — chỉ lưu netid mạng đích và gateway kế tiếp, "làm cho bảng lộ trình nhỏ gọn mà việc tạo tuyến vẫn hiệu quả".

Thiết kế báo hiệu SIP: mỗi bản tin gồm Request-Line/Status-Line + header + body SDP. Luồng cơ bản PC–PC qua Proxy:

UAC A                Proxy               UAC B
  |-- INVITE (SDP offer) ->|                |
  |                        |-- INVITE ----->|
  |<------ 100 Trying -----|                |
  |<------ 180 Ringing ----|<-- 180 --------|
  |<------ 200 OK (SDP answer) -------------|
  |-- ACK ---------------------------------->|
  |======== RTP media stream (UDP) =========>|
  |-- BYE ---------------------------------->|
  |<------ 200 OK --------------------------|

SDP đảm nhiệm thương lượng codec, cổng và địa chỉ media — tách bạch báo hiệu khỏi luồng thoại, đúng nguyên tắc phân lớp mà Chương 1 đã phân tích.

Methodology

Đồ án theo mô hình Waterfall hai pha đúng như cấu trúc mục lục:

Pha Nội dung Trang Deliverable
1. Cơ sở lý thuyết TCP/IP, VoIP, SIP 1–100 Tài liệu phân tích giao thức
2. Tiến trình thực hiện Mô tả cuộc gọi qua Proxy, chương trình 101–110 Ứng dụng chạy được

Rủi ro và biện pháp giảm thiểu

Rủi ro Ảnh hưởng Biện pháp
Va chạm CSMA/CD gây jitter Thoại rè Thử nghiệm trên switch, tải thấp
Phân mảnh datagram Mất nguyên gói thoại Giữ payload < MTU 1500 byte
Timer hợp mảnh tràn Loại bỏ dữ liệu Dùng UDP, gói nhỏ, không phụ thuộc hợp mảnh
RIP chọn đường 19.2 kbps Chất lượng thoại sụp Cấu hình OSPF/IGRP

Implementation và kết quả

Development process

Giai đoạn 1 – Hạ tầng địa chỉ. Hiện thực và kiểm chứng ARP: host phát ARP Request quảng bá chứa IP đích, host đích trả ARP Reply chứa địa chỉ vật lý. Bản tin ARP dài 28 octet trên Ethernet (HA 6 octet, IP 4 octet), với trường OPERATION nhận giá trị 1 (ARP request), 2 (ARP reply), 3 (RARP request), 4 (RARP reply). Cơ chế cache là điểm tối ưu then chốt: "Khi phát một gói, host luôn tìm trong bộ đệm ARP… Nếu host tìm thấy thì nó lấy địa chỉ vật lý, dùng địa chỉ đó đặt vào frame và gởi frame đi mà không cần phải quảng bá trên mạng."

Giai đoạn 2 – Giải thuật định tuyến. Đồ án đặc tả rõ ràng thuật toán tại tr.43:

Route_IP_Datagram(datagram, routing_table):
    I_N ← netid trích từ địa chỉ IP đích của datagram
    if  I_N trùng mạng kết nối trực tiếp → phân phát trực tiếp
    elif có host-specific route      → định tuyến theo bảng
    elif I_N có trong bảng routing   → định tuyến theo bảng
    elif có default route            → gửi tới default gateway
    else                             → báo lỗi định tuyến (ICMP)

Độ phức tạp: tra bảng tuyến tính O(n) theo số mục trong bảng lộ trình; với default route, host đầu cuối chỉ cần bảng n ≈ 2 — "rất hữu hiệu cho những máy có bảng địa chỉ mạng nội bộ nhỏ và chỉ kết nối đến internet qua duy nhất một mạng".

Giai đoạn 3 – Chẩn đoán bằng ICMP. Mọi bản tin ICMP có 3 trường đầu: TYPE (8 bit), CODE (8 bit), CHECKSUM (16 bit), kèm header + 64 bit dữ liệu đầu tiên của datagram gây lỗi — đủ để truy ngược ra giao thức và ứng dụng chịu trách nhiệm. Các mã dùng để gỡ rối cuộc gọi:

  • TYPE 3 Destination Unreachable, CODE 0 (network), 1 (host), 2 (protocol), 3 (port), 4 (cần phân mảnh nhưng DF bit đã set), 9–10 (bị cấm hành chính), 11–12 (không tiếp cận được cho loại dịch vụ).
  • TYPE 4 Source Quench (nghẽn), TYPE 5 Redirect, TYPE 8/0 Echo Request/Reply, TYPE 11 Time Exceeded.

CODE 4 đặc biệt giá trị cho VoIP: nó chính là tín hiệu cho biết gói thoại đang vượt MTU trên đường đi — cơ sở để tự động dò MTU và co payload.

Giai đoạn 4 – Báo hiệu SIP và luồng thoại, hiện thực mô tả cuộc gọi PC–PC qua Proxy (tr.102) và chương trình ứng dụng (tr.106).

Testing và validation

Các kịch bản kiểm thử suy ra trực tiếp từ thiết kế:

Kịch bản Công cụ Tiêu chí đạt
Phân giải địa chỉ ARP cache Reply < 1 RTT LAN, cache hit lần gọi thứ 2
Khả dụng đích ICMP Echo (TYPE 8/0) Không xuất hiện TYPE 3
Không phân mảnh ping DF-bit, bắt gói Không có ICMP TYPE 3 CODE 4
Thiết lập phiên Bắt bản tin SIP Đủ chuỗi INVITE → 100 → 180 → 200 → ACK
Giải phóng phiên BYE / 200 OK Không còn tiến trình treo
Thoại hai chiều Nghe chủ quan Hiểu được nội dung liên tục

Kết quả đạt được: hoàn tất 4/4 mục tiêu đề ra — hệ thống hóa TCP/IP, khảo sát VoIP, phân tích SIP/SDP và chạy được cuộc gọi PC–PC qua Proxy trên LAN Ethernet.

Đổi mới và đóng góp

  1. Bỏ hoàn toàn Gateway. Đồ án liệt kê 5 kiến trúc Gateway (server PC + card âm thanh; server PC + card DSP chuyên dụng; gắn với phần tử mạng nội bộ; card NIC đa dụng ghép nối mạng điện thoại; gateway độc lập) rồi chọn con đường không dùng cái nào. So với mô hình PC-to-Phone và Phone-to-Phone, chi phí phần cứng giảm về gần 0 — chỉ cần PC có sound card và NIC.

  2. Đặt QoS ở tầng ứng dụng thay vì tầng vật lý. So với ATM (đảm bảo đồng bộ cell nhưng cần SONET OC-1 trở lên) và Token Ring (trễ xác định nhờ bit ưu tiên nhưng chi phí cao), giải pháp SIP/UDP/Ethernet đạt mục tiêu bằng thiết kế phần mềm.

  3. Chọn SIP thay vì H.323. SIP là giao thức văn bản, cấu trúc bản tin đơn giản kiểu HTTP, tách báo hiệu khỏi mô tả phiên (SDP) — dễ mở rộng và gỡ rối hơn nhiều so với báo hiệu nhị phân ASN.1 của H.323.

  4. Áp dụng "nới lỏng phân lớp" một cách có ý thức. Đồ án chỉ ra nghịch lý của phân lớp cứng: tầng vận chuyển "không thể biết được dữ liệu sẽ được phân tuyến bằng cách truyền nội bộ… hay qua các mạng trung gian", nên "không thể tối ưu hóa kích thước dữ liệu truyền đi". Giải pháp: cho phép thông tin MTU từ tầng dưới nổi lên tầng trên. Ứng dụng thoại tận dụng đúng cơ chế này để chọn kích thước gói.

Ứng dụng thực tế và triển khai

Use case: liên lạc nội bộ giữa các chi nhánh doanh nghiệp đã có WAN; phòng lab và trường học; hệ thống intercom trên LAN.

Yêu cầu triển khai: PC có sound card và NIC Ethernet; một máy chạy SIP Proxy; mạng IP thông suốt (kiểm chứng bằng ICMP Echo); nếu qua nhiều mạng con, cấu hình định tuyến ưu tiên băng thông chứ không phải hop count.

Phân tích chi phí – lợi ích: thay thế cuộc gọi PSTN đường dài bằng lưu lượng trên hạ tầng IP đã đầu tư sẵn. Chi phí biên của một cuộc gọi ≈ chi phí băng thông; so với leased line PSTN có "chi phí cao khi hoạt động và khi lắp đặt", điểm hòa vốn đạt được rất sớm với doanh nghiệp có lưu lượng nội bộ liên tỉnh đều đặn.

Khả năng mở rộng: giới hạn không nằm ở SIP mà ở tầng dưới — CSMA/CD suy giảm khi tải cao do va chạm; RIP giới hạn đường kính mạng ở 15 hop. Mở rộng theo hướng phân đoạn mạng bằng switch, chuyển sang OSPF, và đặt Precedence/D-bit cho lưu lượng thoại.

Hạn chế và hướng phát triển

Hạn chế được thừa nhận từ chính thiết kế

  • Chỉ mô hình PC-to-PC: không liên thông PSTN, không gọi được ra số điện thoại thật.
  • IP là best-effort: mất gói, trễ, sai thứ tự không được sửa; chất lượng phụ thuộc tải mạng.
  • Không có cơ chế tính cước, xác thực mạnh hay mã hóa luồng thoại.
  • RIP trong hạ tầng thử nghiệm chọn đường theo hop count, có thể chọn phải liên kết tốc độ thấp.

Hướng phát triển

  1. Bổ sung Gateway theo một trong 5 kiến trúc đã khảo sát để mở rộng sang PC-to-Phone.
  2. Triển khai jitter buffer và đo đạc định lượng MOS, độ trễ một chiều, tỉ lệ mất gói.
  3. Bổ sung bảo mật: xác thực SIP và mã hóa media.
  4. Tận dụng IP multicast (địa chỉ lớp D, phối hợp IGMP) cho hội nghị nhiều bên — đồ án đã trình bày nền tảng: host tham gia multicast ở 3 mức (0: không phát không nhận; 1: chỉ nhận; 2: vừa phát vừa nhận).

Bài học rút ra: phân lớp giúp chia nhỏ độ phức tạp, nhưng phân lớp quá khắt khe làm hệ thống kém hiệu quả — thiết kế real-time buộc phải để thông tin đi xuyên lớp một cách có kiểm soát.

Đối tượng hưởng lợi

  • Sinh viên Điện tử – Viễn thông, CNTT: một tài liệu tiếng Việt trình bày trọn vẹn TCP/IP từ khung Ethernet (Preamble 8 byte, địa chỉ 48 bit, FCS/CRC) lên tới bản tin SIP, kèm số liệu cụ thể để làm bài tập.
  • Lập trình viên mạng: mẫu triển khai ARP cache, giải thuật định tuyến, xử lý ICMP và luồng SIP có thể chuyển thẳng thành code.
  • Kỹ sư hệ thống doanh nghiệp: khung đánh giá X.25 / Frame Relay / ATM và Ethernet / Token Ring để chọn hạ tầng chở VoIP.
  • Nhà nghiên cứu: điểm tham chiếu lịch sử về trạng thái triển khai VoIP tại Việt Nam năm 2008.

Câu hỏi thường gặp

1. Cần gì để triển khai? Hai PC có sound card và NIC Ethernet, một SIP Proxy, kết nối IP thông suốt. Không cần card DSP, không cần gateway.

2. Giới hạn mở rộng ở đâu? Ở tầng dưới, không phải SIP: va chạm CSMA/CD khi tải cao, và RIP giới hạn 15 hop. Khắc phục bằng switch, OSPF/IGRP và đặt bit D=1 trong Service Type.

3. Tích hợp với hệ thống sẵn có thế nào? Qua Gateway — đồ án đã khảo sát 5 kiến trúc, từ server PC + card âm thanh (rẻ nhất) đến gateway độc lập cho mạng điện thoại Internet (ổn định nhất).

4. Bảo trì và gỡ rối ra sao? Dựa trên ICMP: Echo Request/Reply kiểm tra khả dụng, Destination Unreachable CODE 0–3 định vị lỗi mạng/host/protocol/port, CODE 4 phát hiện vấn đề MTU, Time Exceeded phát hiện vòng lặp định tuyến.

5. Chi phí và thời gian hoàn vốn? Chi phí đầu tư gần bằng chi phí một máy chủ Proxy; chi phí vận hành là băng thông IP đã có. Với tổ chức có lưu lượng thoại liên tỉnh thường xuyên, tiết kiệm bắt đầu ngay từ cuộc gọi đầu tiên vì không phát sinh cước PSTN theo phút.

Kết luận

Đồ án đi trọn con đường từ nền tảng đến sản phẩm: dựng lại toàn bộ ngăn xếp TCP/IP với số liệu chính xác (frame Ethernet 64–1518 byte, datagram IP tối đa 65.536 byte, ARP message 28 octet, ATM cell 53 byte), so sánh có căn cứ các công nghệ WAN và LAN, rồi hiện thực một mô hình truyền thoại PC–PC bằng SIP qua Proxy.

Đóng góp kỹ thuật rõ nhất là chứng minh rằng chất lượng thoại chấp nhận được không nhất thiết đòi hỏi hạ tầng đồng bộ đắt tiền như ATM — nó có thể đạt được bằng lựa chọn giao thức đúng ở tầng ứng dụng: SIP cho báo hiệu, SDP cho thương lượng phiên, UDP cho luồng media, cộng với việc khai thác các cơ chế sẵn có của IP như trường Service Type và bit DF.

Giá trị thực tiễn nằm ở chi phí: loại bỏ Gateway khỏi kiến trúc đưa rào cản triển khai VoIP về mức mà bất kỳ mạng LAN nào cũng vượt qua được. Hướng đi tiếp theo đã được vạch sẵn — bổ sung Gateway để liên thông PSTN, thêm bảo mật, và dùng multicast cho hội nghị đa bên.

Nếu bạn đang học mạng máy tính hoặc chuẩn bị triển khai VoIP nội bộ, hãy bắt đầu từ chính lộ trình của đồ án này: hiểu khung Ethernet và MTU trước, kiểm chứng đường đi bằng ICMP, rồi mới dựng báo hiệu SIP lên trên.