이론/기초

게임 네트워크 토폴로지

tsyang 2023. 8. 27. 18:44

개요


네트워크 토폴로지란 여러 컴퓨터가 네트워크상에서 연결되어 있는 모습을 말한다.

 

대표적으로

  • 클라이언트 - 서버
  • P2P

가 있으며, 둘을 섞은 토폴로지도 존재한다.

 

 

.

 

 

클라이언트 - 서버(CS)


CS 토폴로지에서는 게임 인스턴스 하나를 서버로 두고 나머지 게임 인스턴스는 서버에 접속하는 클라이언트가 된다.

 

클라이언트는 오직 서버하고만 통신하며, 서버는 이들 모든 클라와 통신을 전담한다.

 

클라가 n개면 O(2n)개의 연결이 존재하게 된다. 클라가 초당 b바이트 데이터를 보낸다면, 초당 b*n 바이트를 수신할 있도록 서버의 대역폭을 확보해야 한다. , 클라가 증가할수록 서버의 대역폭도 선형으로 늘어난다.

 

클라이언트가 받는 데이터의 양도 작게나마 늘어나긴 한다. 받아야 하는 데이터가 많아지기 때문이다. 

 

CS 구현되는 게임은 권한 집중형으로 서버를 구현한다. CS토폴로지에서는 대안이 없기 때문이다.

권한 집중이란 시뮬레이션을 동시에 여러 기계에서 진행할 , 어떤 올바른지를 판단하는 권한을 서버에 집중한다는 의미이다. 클라가 서버랑 달라지면 자기 자신을 서버에 맞춰야 하며. 필연적으로 클라이언트가 수행하는 액션에 약간의 렉 또는 지연이 발생하게 된다.

 

서버의 종류를 세분화해보자면

 

  • 전용서버(dedicated server) : 게임을 진행하고 클라와 통신하는 용도로만 별도로 띄우는 서버.
  • 리스닝서버 : 플레이어가 자신이 서버를 띄운 머신을 가지고 클라로도 직접 게임 참여하는 방식. 즉, 개인 컴퓨터를 서버로 쓰는 것이 여기에 포함된다. 이 방식이 p2p랑 혼동될 수 있는데 엄밀이 따지면 피어 호스팅 방식임. p2p와 달리 엄연히 서버가 존재한다.
    이 경우에 호스트가 튕길 경우에 대한 대비를 해야한다. 대비책 중 하나는 호스트 마이그레이션인데, 리스닝 서버가 튕기면 클라이언트 중 하나가 새로 서버 역할을 맡는 것이다. 그러나 이 방법을 위해서 클라이언트끼리 미리 필요한 정보를 주고받은 상태여야 한다. 따라서 호스트 마이그레이션을 사용한다 하면 CS에 P2P방식을 섞게 된다.

 

A와 B클라이언트가 통신을 한다 했을 때,

서버 지연 =  A클라 RTT/2 + 서버 지연 + B클라 RTT/2

 

 

.

 

 

P2P


여기서는 게임에 참여하는 머신이 동일 게임에 참여하는 다른 모든 머신과 연결된다. n개의 피어가 있다면 피어는 n-1개의 연결을 유지하며, 전체적으로는 O(n^2) 연결이 존재하게 된다.

 

P2P에서는 판정 권한이 어디에 있는지 불분명한데, 보통은 피어마다 "입력을 공유해서 각자가 입력을 시뮬레이션"하는 방식을 쓴다. 이걸 "입력 공유 모델"이라고도 부른다.

 

P2P에 입력 공유 모델을 사용했을 때의 추가적인 장점으로는 지연이 상대적으로 적어진다는 것에 있다. 두 피어사이의 지연은 RTT의 절반이기 때문. 그러나 여전히 레이턴시가 존재하므로 모든 피어의 동기화를 맞추기가 까다롭다는 단점이 있다.

 

피어 상태 일관성 검사를 위해 체크섬을 도입하거나, 난수 발생기를 동기화


신규 피어가 들어올 들어간다고 요청할 대상을 따로 두기도 한다. 이때 해당 대상이 되는 피어를 마스터피어라 부른다.

 

중간에 릴레이서버를 둬서 릴레이서버가 모든 패킷을 피어 사이에 중개할 있다. 이 방식은 트래픽이 중앙 서버에 집중되었다가 분배되기에 서버 부하가 조금 있을 수 있다. 그대신 피어가 다른 피어의IP주소를 필요가 없다는 장점이 있고. 따라서 보안면에서도 유리하다. (IP 알면 피어가 다른 피어에 DDOS를 걸 수 있음)

 

'이론 > 기초' 카테고리의 다른 글

네트워크 - 레이턴시 및 신뢰성  (0) 2023.09.01
OS - 라이브러리  (0) 2023.08.20
OS - 메모리 관리 기초  (0) 2023.08.13
OS - 쓰레드  (0) 2023.08.06
OS - 프로세스  (0) 2023.07.30