728x90
반응형

SCTP 멀티호밍(Multi-homing): 고가용성 네트워크 구현의 이해와 적용


SCTP 멀티호밍의 개념

  • 멀티호밍(Multi-homing) 은 두 개 이상의 랜카드(NIC)와 서로 다른 대역의 IP 주소를 통해 데이터 통신을 구현하는 기술입니다.
  • SCTP(Steam Control Transmission Protocol)는 이러한 멀티호밍을 지원하며, 하나의 연결에 여러 IP 주소를 바인딩할 수 있습니다.

서버와 클라이언트 코드

서버 코드: 멀티호밍 설정

python

import socket
import sctp

NIC1_IP = "192.168.0.1"  # 첫 번째 랜카드의 IP
NIC2_IP = "10.0.0.1"     # 두 번째 랜카드의 IP
PORT = 5000

server_socket = sctp.sctpsocket_tcp(socket.AF_INET)
server_socket.bindx([(NIC1_IP, PORT), (NIC2_IP, PORT)])
server_socket.listen(5)

print(f"SCTP 멀티호밍 서버가 {NIC1_IP}:{PORT} 및 {NIC2_IP}:{PORT}에서 대기 중입니다...")
conn, addr = server_socket.accept()
print(f"클라이언트 연결됨: {addr}")

data = conn.recv(1024)
print(f"클라이언트로부터 받은 데이터: {data.decode()}")
conn.sendall(b"Hello from Multi-Homed SCTP server!")
conn.close()
server_socket.close()

클라이언트 코드: 서버와의 통신

python

import socket
import sctp

SERVER_PRIMARY_IP = "192.168.0.1"
SERVER_SECONDARY_IP = "10.0.0.1"
PORT = 5000

client_socket = sctp.sctpsocket_tcp(socket.AF_INET)
client_socket.connect((SERVER_PRIMARY_IP, PORT))
print(f"서버 {SERVER_PRIMARY_IP}:{PORT}에 연결됨")

client_socket.sendall(b"Hello from Multi-Homed SCTP client!")
data = client_socket.recv(1024)
print(f"서버로부터 받은 데이터: {data.decode()}")
client_socket.close()

멀티호밍 동작 원리와 전환 조건

  • 멀티호밍 전환 조건:

      1. 타임아웃(Timeout): Heartbeat 메시지 응답 실패 시 보조 경로로 전환.
      1. 패킷 재전송 실패: 재전송 시도 후 응답이 없으면 경로 전환.
      1. Heartbeat 실패: 일정 횟수 Heartbeat ACK 실패 시 경로 비활성화.
      1. 명시적 장애 보고: OS 또는 네트워크 장비에서 장애 보고 시 전환.
  • 전환 관련 주요 파라미터:

    • RTO, Path.Max.Retrans, Heartbeat Interval, SACK 등.

정리: SCTP 멀티호밍의 장점과 활용

  • 장점:
    • 장애 발생 시 데이터 전송 경로를 자동으로 전환.
    • 네트워크의 가용성과 안정성을 증가시킴.
  • 활용 사례:
    • 고가용성이 필요한 서버 환경.
    • 다중 경로를 이용한 효율적인 데이터 전송.
728x90
반응형

+ Recent posts