디아블로2 서버에 대한 개인적고찰...
분류
디아관련
조회 수
4,558
추천 수
0
디아블로를 이루는 서버군은 총 4단계로 이루어 진듯 보여집니다.
1. 디아블로를 실행하고 서버를 선택한뒤 로그인을 행하는 로그인 서버 (배틀넷 서버)
2. 캐릭터를 불러드리는 캐릭서버 (렐름서버)
3. 채팅을 하게 해주고 대기자를 보여주는 대기열 서버(대기열서버)
4. 게임을 진행하는 게임방 서버
이중 로그인서버는 다들 아시겠지만 계정을 관리하는 계정관리 서버입니다.
1번과 2번이 한 서버로 이루어 져 있는지는 확인이 불가능 하지만 재미난건,
1번과 2번의 역활입니다.
로그인서버의 역활은 과도한 렐름의 접근을(캐릭의 선택이 빠루게 여러번 이루어진다거나..)해서 렐름서버에 무리를 주는 경우 로그인서버에서 배틀넷 접근을 잠시동안 막는 베넷따라고 흔히 저희가 부르는 내용이 이루어 진다는 것이구요.
렐름서버는 방의 생성과 대기실에서 방생성시 방제를 빨리 쓰고 들어가는 행위가 잦을시 렐름에서 일시적으로 캐릭정보를 보관하는 렐름서버의 접근제한을 둔다는 것입니다.
채팅을 하게 해주는 대기열서버는 IRC의 설계를 많이 빼다 박았다고 보여집니다.
이녀석의 역활은 방을 생성하는 유저의 수가 풀이되어서 해당 렐름의 서버내 아이피가 풀이 될경우(아시아2의 경우 101~139까지 총 39대의 서버가 가동중) 대기열(지금은 유저수가 보이지 않지만 초기때 대기열 기억하실 겁니다.)을 내보내는 역활을 합니다.
마지막 게임을 진행하는 게임룸 서버는 다 아실거라고 믿습니다.
그럼 아시아2를 기준으로 설명하면
로그인서버 1대
캐릭터서버 1대(렐름서버)
대기열서버 1대(대기열서버)
게임서버 39대(실제로 게임이 이루어지는 서버)
식의 트리구조가 나올겁니다.
이중 대기열서버는 분과 서버로 봐야 되는게 렐름과 게임서버를 이어주는 단순 이음매 역활의 성격이 짙다는 것입니다.
즉 설계당시 이녀석은 IRC의 특정 명령체계를 이용한 사용자간의 다자간 대화의 주 목적을 둔 녀석이라는 이야기가 됩니다.
즉 이 대기열서버는 게임과는 거리가 먼 커뮤니티성 서버의 성격을 갖는게 아닌가 싶습니다.
그럼 이 내용을 가지고 흔히 하는 문제에 대한 몇가지 상황을 유추해 보겠습니다.
1). 우버IP공개시 잡을 사람은 다 잡은거 같다?
게임서버의 배치는 분산형태로 이루어 집니다. 이것은 어떤 형태의 서버관리에서도 마찬가지 입니다.
우선순위 서버를 중심으로 마지막까지 배치를 미루어 트래픽을 줄이는 형태로 IP가 할당이 됩니다.
그런데 더이상 IP가 잡히지 않는다 라고 해서 당 IP가 모두잡힌것은 아닙니다.
위 내용에서도 언급했듯이 전체 IP가 모두 잡히기 위해 필요조건인 대기열이 뜨지 않았기 때문입니다.
쉽게 설명해서 IP 101~139까지의 아이피가 있다면 분산분배 방식으로 각 서버를 지정해 배치를 하고 이 배치과정에서 각 서버에 배치된 인구수가 일정치 이상을 초과할시 또 각 서버로 분배를 하는 방식을 채택합니다.
이 때 전 서버의 제한된 방수(혹은 인원수 이거나 트래픽수 일수도 있습니다.)가 모두 풀이 되면 대기열서버는 여지없이 대기열 메세지를 표현하고 먼저 방을 만들려고 대기하는 사람의 수를 표현하게 됩니다.
즉 이때 까지 IP는 풀이 되었다고 단언할 수 없게 되는 것입니다.
IP가 더이상 잡히지 않는 이유는 한가지 디아블로를 플레이 하는 인구수가 줄었기 때문이라는걸 유추 할 수 있게 됩니다.
2). 갑자기 진행하던 방이 렉으로 멈추고 죽어버려서 짜증이 난다?
이는 동일한 IP에서 누군가가 렉을 유발하는 행위(트리런 혹은 아이템 복사 등)를 해서 서버가 일시적인 멈춤현상을 보이는 것입니다.
트리런 IP를 공개하는 이유도 여기에 있다고 볼 수 있습니다.
즉 한 IP는 한 서버임을 알게 해주는 대목이기도 하지요.
예를 들어 내가 트리런을 할때 약간의 욕심으로 렉 발생히 심화됬는데도 진행을 한다면 동일 IP에 접속한 여러 사용자들은 죽게 될지도 모릅니다.^^
3). 아이템 옮기는 중 방폭이 되었다?
트리런등 과도한 렉으로 게임서버가 정지후 부팅이 된다고 보는게 가장 좋다고 생각합니다.
즉 흔히 우리가 말하는 방폭은 한대의 서버가 정지 혹은 리셋중인 상황일 가능성이 높다는 것입니다.
저는 아이템을 옮길려고 할때는 해당방에서 플레이를 진행해 보고 5~8분 정도 렉 발생이 없다면 그 방에서 템을 옮기고 렉이 발생하면 과감히 다른 방으로 새로 잡고 다시 실험해 봅니다.
이 외에도 두서없는 글이지만 서버의 구성과 그 역활을 알아두면 여러가지 문제를 사전에 에측 할 수 있고 유추할 수 있을거 같아 두서없이 써버렸네요.
대략 3가지 정도를 유추해 냈지만 여러가지가 더 있지만 이곳에 언급하기엔 좀 무리가 따르는 내용이라 일단 배제 하겠습니다.^^
심심하시면 한번 내가 이 상황에 놓였을때 저 섭의 구성을 생각해 보시면 답이 보이실 경우가 많으실지도 몰라 적었습니다.
덧붙여: 방화벽과 워크스테이션을 다루는 직업에 몇년간 종사하면서 유추해낸 개인적인 생각입니다.
어떠한 내용도 검증이 되지 않은 내용이므로 제 개인적인 사견에 문제점을 말해 주시면 정중히 경청하겠습니다.
좋은하루 되세요 (__)