SCTP에서 멀티 호밍을 서버 측으로 구현할 때 문제가 있습니다. 서버는 청취중인 두 개의 IP를 가지고 있습니다. 은 거의 다 해요,하지만 거기에 2 문제가 있습니다 : 그것은해야하지만, 다른 IP가 INIT-ACK에 두 번 같은 IP를 반환으로SCTP 멀티 호밍이 예상대로 작동하지 않습니다.
- 먼저 IP 헤더 내부에 2 개 개의 다른 IP를 가진 INIT-ACK를 반환 머리글.
- 멀티 홈 (multi-homing)에서 100 %를 지원하지 않는 것처럼 보입니다. 예를 들어, 링크 중 하나가 다운 된 경우 장애 조치가 표시되지 않습니다.
그래서 SCTP_SOCKOPT_BINDX_ADD 옵션이있는 setsockopt를 제외한 경우 다른 것을 (어쩌면 SCTP_PRIMARY_ADDR?) 필요합니까, 아니면 구현에 문제가 있는지 알고 싶습니다.
다음 코드는 두 번이 코드를 입력하고 소켓과 첫 번째 주소를 바인딩 한 다음 다시 두 번째 IP 주소로 바인딩 한 다음 setsockopt를 실행하여 두 주소와 소켓.
bind(socket, &sock_addr.addr.sock_addr, sock_addr_len);
if(SHARED.num_used_entries_in_sockaddr_array == 0)
{
SHARED.saved_socket = socket;
SHARED.sockaddr_array[1] = sock_addr.addr.sock_addr;
}
else
{
SHARED.sockaddr_array[0] = sock_addr.addr.sock_addr;
}
if(SHARED.num_used_entries_in_sockaddr_array > 0)
{
sock_rc = setsockopt(SHARED.saved_socket,
IPPROTO_SCTP,
SCTP_SOCKOPT_BINDX_ADD,
(char*)SHARED.sockaddr_array,
sizeof(SCKOS_SOCK_ADDR));
sock_rc = setsockopt(socket,
IPPROTO_SCTP,
SCTP_SOCKOPT_BINDX_ADD,
(char*)SHARED.sockaddr_array,
sizeof(SCKOS_SOCK_ADDR));
}
SHARED.num_used_entries_in_sockaddr_array++;
감사합니다 !!!
감사를 구현하기가 훨씬 용이 sctp_bindx을 사용 – kurdt