한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

게임 렉 백서 › 일부에게만 생기는 문제

IP·기기 기준 세션 구분 버그 Session keyed by IP or machine ID

원인 ID pt-session-key · 주 담당 게임개발팀·서버 개발 · 함께 게임개발팀·클라이언트 개발

그림과 실험이 있는 원본 카드로 열기 →

서버나 중간 서버가 연결을 IP나 기기 ID로 구분하면, 같은 PC(같은 공인 IP)의 두 클라이언트를 한 사람으로 인식합니다.

왜 세션 테이블을 IP 또는 IP+기기 ID로 만듦 → 그러면 두 번째 클라이언트의 정보가 첫 번째 세션에 덮어써지거나 섞임 → 화면에서는 한쪽은 NPC가 안 보이고 다른 쪽은 접속이 끊기거나 남의 정보를 받음

증상
안 보임·유령 개체, 접속 끊김
요인
손실
누가 겪나
같은 PC의 한쪽 클라만, 같은 집, 특정 지역·통신사
언제
접속·점검 직후
담당
주 담당 게임개발팀·서버 개발 · 함께 게임개발팀·클라이언트 개발
게임개발팀 할 일
서버: 서버·중간 서버 모두 연결마다 고유한 세션 토큰으로 구분, 같은 집(공유기 NAT 뒤)의 여러 사람과 통신사가 IP 하나를 여러 가입자에게 나눠 주는 모바일 회선(CGNAT) 사용자도 같은 문제를 겪으니 꼭 고치기. 클라이언트: 실행한 클라이언트마다 따로 받은 세션 토큰 사용.
그래프에서는
일부만 높음 · 같은 공인 IP의 동시 세션 수, 세션 덮어쓰기 수
확인할 곳
서버·중간 서버 로그에 세션을 찾을 때 쓴 키, 세션 토큰, 클라이언트 IP·포트를 남기고 같은 IP에서 두 번째 접속이 들어온 순간 기존 세션이 바뀌었는지 봄. 같은 PC에서 두 클라이언트를 차례로 켜면 재현됨
이러면 맞음
두 번째 클라이언트가 접속한 순간 첫 번째 세션의 주소나 캐릭터 정보가 바뀌고, 같은 공유기나 모바일 회선(CGNAT) 뒤의 다른 유저들에게서도 같은 접속 끊김이 보임
이러면 아님
같은 IP의 두 세션이 서로 다른 토큰으로 따로 유지되면 이 원인이 아님. 두 프로세스가 같은 로컬 포트를 쓰고 있으면 고정 UDP 포트 충돌
확인 수단
게임 서버·클라이언트의 로그·지표가 필요

출처

  1. RFC 6269: Issues with IP Address Sharing IETF
    NAT·CGN으로 여러 가입자가 IPv4 주소 하나를 공유하면 IP만으로는 사용자를 구분할 수 없음

함께 보면 좋은 원인

같은 층: 일부에게만 생기는 문제

같은 증상(안 보임·유령 개체)의 다른 층 원인

그림과 실험이 있는 원본 카드 보기