III. THIẾT KẾ VÀ THỰC THI CÁC MÔ PHỎNG
3.3.2.3. Thực hiện Lab
a. Cấu hình
Phần này tham chiếu đến hệ thống SIP chạy trên nền SCTP được phát triển trong luận văn của Thomas [21].
Hệ thống có hai agent SIP gọi là kphone [20], được cài đặt trên hai máy tính chạy hệ điều hành Ubuntu 9.0, hai máy tính này đã được tích hợp sẵn lksctp.
Agent kphone này là ứng dụng nguồn mở và được điều chỉnh để hỗ trợ cả UDP và SCTP cho giao thức SIP
Server SIP ở đây là Partsip, được cài đặt trên máy tính Ubuntu 9.0, máy tính này cũng tích hợp sẵn lksctp. Partsip gốc được điều chỉnh để hỗ trợ SCTP và dùng làm server SIP trong thực nghiệm này
Một máy tính được cài công cụ netem và bridge như ở hình dưới để mô phỏng mạng trong điều kiện thực tế như lỗi gói, mất gói… Máy tính này kết nối server SIP vào mạng LAN.
Hai agent sử dụng port mặc định của SIP là 5060, trong khi đó server SIP được cấu hình để để dùng port 5060 để nhận dữ liệu và 5061 để truyền dữ liệu
Wirehark được cài đặt trên server sip để theo dõi các luồng dữ liệu SIP
Tất cả được kết nối với nhau thông qua mạng LAN gồm các switch 100 Mbps
Các thí nghiệm bao gồm các thủ tục đăng kí của các agent, thủ tục thiết lập kết nối cho cuộc gọi SIP và thủ tục kết thúc cuộc gọi,
Để thấy được những ưu điểm của SCTP, các thí nghiệm được triển khai trên môi trường chỉ có một phiên kết nối và nhiều phiên kết nối, trong điều khiện mạng bình thường và mất gói 10%. Thí nghiệm tiến hành trên hai giao thức lớp transport là UDP và SCTP. Sau đó sẽ so sánh các kết quả thu được
Hình 3-29 : Lab thực nghiệm SIP với giao thức transport là SCTP và UDP
b. Các bước thực hiện
Trường hợp thứ nhất: một phiên kết nối
Các agent 1 và 2 tiến hành đăng kí thành công với server SIP, kết nối được thiết lập giữa agent 1 với server và agent 2 với server. Thời gian thiết lập kết nối (thời gian phản hồi từ server) được đo đạc với công cụ wireshark
Thực tế hai kết nối được thực hiện giữa agent và server. Kết nối đầu tiên được khởi tạo bởi agent 1 với port cục bộ 5060 đến port 5060 của server. Kết nối thứ hai được bắt đầu từ server giữa port 5061 của nó với port 5060 của agent 1. Một khi kết nối được thiết lập, mỗi đầu cuối sẽ kiểm soát lẫn nhau bằng cách gửi theo chu kì các chunk hearbeat. Thông điệp yêu cầu “đăng kí” được gửi từ agent 1 đến server như là một chunk dữ liệu trong thông điệp phản hổi cookie (COOKIE_ECHO), server cũng phản hồi thông điệp “đăng kí” bằng cách gửi thông điệp “200 OK” như là một chunk dữ liệu trong thông điệp COOKIE_ECHO. Như thế là agent1 đã đăng kí thành công với
server SIP. Rõ ràng là trong quá trình đăng kí với server SIP, SCTP sử dụng nhiều thông điệp hơn, đặc biệt là khi không có kết nối SCTP nào được thiết lập trước. Hơn nữa mỗi thông điệp dữ liệu SCTP đều phải được xác nhận bằng các thông điệp SACK và nếu như port để nhận và truyền dữ liệu trên server SIP không giống nhau thì sẽ có nhiều thông điệp SCTP hơn nữa để thiết lập kết nối. Trong thí nghiệm này, port nhận là 5060 và port truyền là 5061. Vì vậy thời gian “đăng kí” của SCTP lâu hơn so với UDP.
Tương tự như thí nghiệm trên, thời gian các thủ tục thiết lập cuộc gọi và kết thúc cuộc gọi giữa hai agent cũng được đo đạc cho cả hai trường hợp UDP. Dễ thấy một điều là số lượng thông điệp trao đổi giữa các bên trong trường hợp SCTP nhiều hơn hai lần so với UDP. Kết nối SCTP vẫn còn tồn tại cho đến khi các agent và server SIP được đóng, vì vậy các chunk thông điệp HEARTBEAT và HEARTBEAT_ACK vẫn được gửi giữa agent và server SIP
Kết quả (đơn vị: mili giây)
UDP SCTP
Thủ tục đăng ký SIP 5 11
Thủ tục thiết lập cuộc gọi SIP 3 5
Thủ tục kết thúc cuộc gọi SIP 2 2.5
Bảng 3-2: So sánh hiệu quả của SIP với giao thức transport lần lượt là UDP và SCTP trong điều kiện chỉ có một phiên kết nối mạng ở tình trạng bình thường
Chúng ta có thể kết luận là SCTP là giao thức hướng kết nối với các cơ chế truyền dữ liệu tin cậy nên số lượng thông điệp để thực hiện các thủ tục SIP khi dùng SCTP nhiều hơn gấp đôi hoặc hơn so với UDP. Vì vậy trong điều kiện bình thường thời gian để UDP thực hiện các thủ tục này ít hơn so với SCTP.
Trường hợp hai: môi trường mạng có mất gói 10% và nhiều phiên kết nối
Dùng Netem để thiết lập mạng ở chế độ mất gói lần lượt là 5%, 10%, 20% và 30% giữa server SIP và các agent còn lại.
Ở mỗi trường hợp mất gói, 8 tiến trình agent được cấu hình để chạy đồng thời trong cùng một kết nối trên các máy tính chứa agent kphone. Điều này đồng nghĩa với 8 luồng trong một kết nối SCTP hoặc là 8 kết nối UDP trên mỗi máy.
Số lượng giao dịch các cuộc gọi SIP mà server xử lý được đo đạc và ghi nhận lại
Kết quả: với mạng ở điều kiện mất gói hơn 10% thì server SIP xử lý số lượng cuộc gọi dùng giao thức SCTP nhiều hơn so với dùng giao thức UDP. Sở dĩ có điều này là vì UDP không có các cơ chế phục hồi như thủ tục truyền lại nhanh trong điều kiện mất gói hay giải quyết tình trạng nghẽn HOL. Do đó, khi dùng giao thức UDP, các agent SIP sẽ phải chờ hết thời gian quy định để truyền lại các gói đã mất. Điều này làm gia tăng thời gian trì hoàn, không thích hợp cho các ứng dụng thời gian thực như SIP. Như đã nói ở trên, SCTP với đặc tính multi-stream và thủ tục truyền lại nhanh nên giải quyết vấn đề nghẽn mạng và mất gói tốt hơn so với UDP. Kết quả là trong điều kiện mạng bị mất gói, server SIP sử dụng SCTP sẽ hoạt động hiệu quả hơn so với sử dụng UDP.
Nói chung thí nghiệm này tương đối đơn giản hơn nhiều so với điều kiện thực tế và sự khác biệt về hiệu suất giữa SCTP và UDP không lớn lắm, nên chưa thể kết luận chắc chắn rằng việc sử dụng SCTP cho SIP sẽ hiệu quả hơn việc sử dụng UDP.
Hình 3-30: So sánh hiệu quả của SIP với giao thức transport lần lượt là UDP và SCTP trong điều kiện có nhiều phiên kết nối mạng và mạng ở tình trạng mất gói