III. THIẾT KẾ VÀ THỰC THI CÁC MÔ PHỎNG
3.1.2. Trường hợp hai: các chunk thứ tự bên trong một luồng SCTP
Trường hợp này hiển thị đặc tính truyền dữ liệu tin cậy của SCTP sử dụng kĩ thuật truyền lại và các chunk điều khiển SACK khi mạng ở tình trạng quá tải.
Hình 3-6: Lab hiển thị chức năng tin cậy của SCTP khi mạng ở trạng thái quá tải
Cấu hình lab
- Ba máy tính được cài đặt Ubuntu, lksctp và được kết nối như trên hình 3-6
- Kích hoạt modun SCTP sử dụng câu lệnh: modprobe –a sctp
- Sử dụng lệnh sctp_test để truyền luồng dữ liệu từ server đến client như sau:
Client: $./sctp_test –H server_ipaddress –P server_port –h client_address –
P client_port –s
- Sử dụng wireshark để bắt các gói tin
- Máy tính giữa có hai card mạng, hai card mạng sẽ kết hợp lại với nhau để trở thành bridge giữa server và client khi ứng dụng bridge được kích hoạt, ứng dụng netem đã được tích hợp sẵn trong Ubuntu.
Các bước thực hiện:
- Bắt các gói tin đi vào card mạng của server và client, tại thời điểm này netem chưa được sử dụng
- Xác định giá trị SSN của một chuỗi các chunk dữ liệu, so sánh những giá trị này, nếu chúng có thứ tự thì các chunk dữ liệu này thuộc cùng một luồng SCTP
- Kích hoạt chức năng netem, điều chỉnh tỉ lệ phần trăm mất gói ngẫu nhiên cho luồng dữ liệu qua nó với câu lệnh tc, trong trường hợp này tỉ lệ mất gói là 5%.
$ tc qdisc change dev eth0 root netem loss 5%
- Bắt các gói tin đi vào tại giao diện của server và client
- Kiểm tra các hoạt động nhận chunk SACK và kĩ thuật truyền lại của SCTP Kết quả
- Các gói đã được bắt bởi wireshark
- Các chunk liên tiếp bên trong một luồng SCTP sẽ được truyền theo thứ tự
- 5% các gói tin sẽ bị mất
- Các gói tin được bắt thành công
- Chunk SACK chứa các ACK còn thiếu và số TSN tổng cộng sẽ được gửi bởi client và server sẽ truyền lại các chunk dữ liệu bắt đầu với giá trị TSN + 1.
- Dữ liệu là các chunk SACK bắt được như hình 3-7
Hình 3-7: Các chunk SACK
- Dữ liệu được truyền lại như hình 3-8