SCTP
hỗ trợ đa hướng gốc nếu tôi hiểu chính xác sẽ tự động định tuyến lại gói của bạn qua NIC phụ nếu giao diện chính bị hỏng. Tôi nhân bản chức năng này với TCP bằng cách viết một deamon định tuyến tùy chỉnh để sửa đổi các bảng định tuyến nếu NIC chính của tôi bị hỏng. Tôi muốn thử sử dụng SCTP
để thay thế.SCTP với Multihoming thay thế cho TCP
Trong Steven Unix Network Programming V1 3rd Edition trên trang 288 nó nói:
Đối với ví dụ này, chúng tôi sử dụng một một-nhiều kiểu máy chủ. Chúng tôi thực hiện lựa chọn này vì một lý do quan trọng. Các ví dụ trong Chương 5 có thể sửa đổi để chạy trên
SCTP
với một thay đổi nhỏ: thay đổi cuộc gọisocket
chức năng để xác địnhIPPROTO_SCTP
thay vìIPPROTO_TCP
như là đối số thứ ba. Chỉ cần thực hiện thay đổi này, tuy nhiên, sẽ không tận dụng bất kỳ tính năng bổ sung nào của các tính năng bổ sung được cung cấp bởiSCTP
ngoại trừ đa homing.
Bây giờ tôi đã thử điều này với kết quả khá kém.
Tôi đang chạy trên Ubuntu 9.04 với gói libsctp1, libsctp-dev và lksctp-tools được cài đặt. Tôi đã xác minh với lksctp-tools rằng SCTP
đang hoạt động bình thường.
Tôi lấy số UNP example code và sửa đổi như được nêu ở trên các chương trình ~/unpv13e/tcpcliserv/tcpserv04.c
và ~/unpv13e/select/tcpcli02.c
.
Đây là cặp máy chủ/máy khách echo đơn giản. Máy chủ chạy nghe rõ ràng, nhưng các máy khách thoát ra nói rằng kết nối đã bị từ chối. Kể từ netstat không hỗ trợ SCTP
tôi đã sử dụng lsof -n | grep tcpserv
mà chỉ cho tôi:
tcpserv04 6208 alice 3u sock 0,4 33889 can't identify protocol
này dường như không để cho tôi biết nhiều ngoại trừ tcpserv04 có một số loại ổ cắm mở.
Tôi đã viết lại và kiểm tra máy khách TCP ban đầu trong perl, vì vậy tôi chuyển nó sang sctp và có thể kết nối mặc dù đường ống một tệp trên stdin không hoàn toàn hoạt động (treo khoảng 2/3 trong quá trình nhận lưng của echo). Có vẻ như UNP ngụ ý rằng việc chuyển các ứng dụng TCP tới SCTP để tận dụng lợi thế của multi-homing là tầm thường, nhưng dựa trên nỗ lực đơn giản này mà thực sự không phải là trường hợp.
Bất cứ ai có thể chỉ cho tôi một hướng dẫn hay hoặc đưa ra lời khuyên tốt về mọi ứng dụng cần lưu ý khi chuyển các ứng dụng TCP sang SCTP một-một-một để tận dụng lợi thế của multi-homing?
TCP cũng có thể triển khai hình thức dự phòng này — nhiều tuyến từ a đến b trong bảng định tuyến - tại sao phải bận tâm? –
@Hassan Syed: Vì tôi tò mò. –
bạn đã thử chụp hình wireshark chưa. Nếu mọi thứ được thiết lập đúng, một cuộc gọi kết nối trên máy khách sẽ kích hoạt bắt tay 4 chiều đối với máy chủ. Bên cạnh đó, tôi không thể tìm thấy tệp khách hàng (~/unpv13e/select/tcpcli02.c) từ liên kết bạn đã cung cấp. –