Solaris 11 버전으로 업그레이드한 후 TCP 연결에 장애가 발생했습니다.

Solaris11.3버전 업그레이드 후 네트워크 연결 수가 많아지면 콘센트 연결이 실패하는 현상이 드물게 발생하여 재처리됩니다.왜냐면 타임.WAIT와 실행기 포트의 포트 번호 설정 방식 때문임을 알기 때문에 메모로 기재했습니다.

이벤트


Solaris 10에서 Solaris 11까지.3버전 업그레이드 후 서버 간 (서버 A→서버 B) 연결을 통해connect()
ECONREFUSID가 복원되어 연결할 수 없는 이벤트가 발생했습니다.
접속수가 많을 때 발생했지만 Solaris 10과의 경우 접속수, 통신량에는 변화가 없었다.
또한 연결 포트는 효과 미라 포트를 사용했다.

까닭


인터넷 추적 등을 통해 재현 조사를 한 결과는 다음과 같다.
  • 연결을 닫은 후 일정 시간(기본값 60초)에 TIME-WAIT 상태에서 연결을 유지합니다.
    TCP 사양입니다.사용하는 포트 번호도 OS에 저장됩니다.
  • 다음 연결에서 포트 번호는 이전에 닫힌 연결에 사용된 포트 번호(효과 포트)로 할당됩니다.
    따라서 TIME-WAIT 상태로 간주되어 connect에서 RST가 복원됩니다.
    동작이 바뀌어 Solaris 11에서 실행기 포트를 무작위로 선택하게 되므로 이전에 간혹 사용했던 포트 번호와 같은 번호가 할당됩니다.
    (Solaris10 이전에는 +1 계수 방식이었기 때문에 같은 포트 번호를 분배할 가능성이 매우 낮음)
  • Solaris에서 TIME-WAIT 상태가 유지되는 동안 동일한 클라이언트의 IP 주소 포트 번호에서
    연결 요구 사항이 있으면 RFC 793 규약에 따라 RST로 돌아갑니다.
    RFC 793 새로운 RFC 1122에서도 TIME-WAIT는 새로운 연결 요청을 수용할 수 있습니다.
    Windows와 Linux는 이를 기준으로 RST가 발생하지 않은 것 같습니다.

    대응


    TIME-WAIT 시간 변경 등을 고려했지만 다른 영향을 고려했습니다.
    결국 RST가 반환되지 않도록 포함을 다시 시도합니다.
    실제로 세 번 재시도한 뒤 문제가 발생하지 않았다.
    Windows, Linux에서는 이 문제가 발생하지 않지만 Solaris 전환 시 고려해야 합니다.
    connect RST가 복귀한 경우 미리 재시험 처리에 편입되어야 한다고 생각합니다.

    좋은 웹페이지 즐겨찾기