▲ 문대경 아이펀팩토리 대표

[인벤게임컨퍼런스(IGC) 발표자 소개] 문대경 대표는 넥슨 서버팀장으로 일선에서 개발을 해오다 서울대 공학 학사, UC 버클리 컴퓨터 공학 박사 학위를 취득, 현재는 아이펀팩토리의 대표로 게임서버엔진의 선봉에서 활약 중이다.

문대경 아이펀팩토리 대표는 금일(6일) 진행된 IGC 첫 날 행사에서 'PC와 모바일에서의 P2P 게임 구현에서의 차이점 비교'라는 주제로 연단에 섰다. PC와 모바일은 네트워크 환경상 P2P 게임을 구현하는 부분에 있어서 차이점이 있게 마련이다. 이날 문대경 대표는 먼저 P2P의 개념과 게임에 적용된 사례 등을 차례로 설명한 뒤, 어떤 부분에 있어 PC와 모바일 환경 상 P2P 게임 구현에 차이가 발생하는지 차근차근 설명해 나갔다.


■ 강연주제: PC와 모바일에서의 P2P 게임 구현에서의 차이점 비교


⊙ P2P란 무엇인가? 'Napster 이야기'


1999년 즈음. 이 당시 가장 널리 사용된 저장 매체는 CD와 DVD 등이었고, 일명 'CD를 굽는다'고 이야기하는 불법 복제가 활발히 이루어졌다. 그만큼 당시는 저작권에 대한 개념이 희박한 시기이기도 했다. 냅스터(Napster)또한 이 시기에 등장했다. 숀 패닝 등이 개발, 1999년 서비스를 시작한 냅스터는 손쉽게 각종 음원 파일을 공유할 수 있다는 점에서 세계적인 인기를 끌 수 있었고, 전 세계 8천만 명 이상의 등록 유저를 확보한 것으로 유명하다.

저작권에 대한 개념이 강하게 자리잡히지 않은 덕분에 별다른 제재 없이 폭발적인 인기를 끌 수 있었던 냅스터는 음원 파일의 무분별한 유통을 가능하게 했고, 심지어 미공개 음원파일이 먼저 유통되기도 하는 등의 결과를 낳았다. 때문에 냅스터는 메탈리카, 닥터드레 등 뮤지션들 및 여러 음반회사와 송사를 치러야 했으며, 2001년 8월 미국 음반산업협회(RIAA)에 의해 결국 서비스를 종료하게 된다. 국내에서는 이와 비슷하게 '소리바다'가 선풍적인 인기를 끌었으나, 냅스터와 유사하게 서비스 종료의 길을 걷게 되었다.


문대경 대표는 냅스터를 예시로 들며 P2P 서비스의 개념을 설명해 나갔다. 당시 대부분의 인터넷 서비스는 중앙 집중 방식으로, 고가의 서버 장비를 구축해 모든 정보를 중앙에서 처리하는, 한마디로 누군가가 모두를 관리하는 서비스라는 인식이 지배적이었다. 냅스터 또한 몇 가지 부분은 기존의 클라이언트-서버 방식이 사용됐지만, 정보 자체가 모든 사용자들에게 흩어져 있는 상태에서 각 사용자(Peer) 사이에서 데이터를 주고받는다는 데에서 차별점을 보였다. 사용자(peer)와 사용자(peer)가 데이터를 주고받는 통신, Peer to Peer(P2P)는 이렇게 탄생하게 되었다.

P2P 방식의 통신은 처음 사용자 간 파일 공유를 목적에서 시작됐지만, 이후 CPU 로딩을 분산해서 처리하는 영역과 함께 최종적으로는 네트워크에서도 응용되기 시작했다. 인터넷은 기본적으로 망과 망 사이의 연결을 뜻하며, 그 사이의 라우팅은 효율성과 관계없이 정책에 따른 패킷을 전달하도록 되어있다. 하지만, P2P를 이용하면 기본 라우팅 규칙에 따른 경로에서 벗어나 더 효율적으로 패킷을 전달할 수 있다. 이러한 P2P의 라우팅 우회 성질을 발견한 이후, 2000년대 중반까지 P2P와 관련한 다양한 연구가 등장하게 된다.



⊙ P2P 연구의 난제들

P2P 프로토콜을 구현하는 데 있어서는 크게 네 가지 문제를 들 수 있다. 먼저, 전체 사용자 풀에서 통신할 대상을 어떻게 찾아내느냐 하는 것과, 사용자 풀이 변화할 때 어떻게 계속 통신을 유지할 수 있느냐 하는 문제, 그리고 기본적으로 품앗이 속성을 가진 P2P 환경에서 이기적인 행동을 하는 사용자에 대한 문제와 마지막으로 사용자 간의 연결을 보장하는 문제가 바로 이것이다.

1. 통신할 상대방 찾기 (resource discovery)

'누구와 통신하는가'에 대한 문제를 해결하기 위해서 문대경 대표는 두 가지 방법을 설명했다. 첫 번째는 냅스터가 사용했던 것과 같은 방식으로, 디렉토리 서비스를 사용하는 것이다. 냅스터는 사용자 간 통신 이외에는 중앙 집중 방식의 서비스를 사용해왔다. 예를들면 중앙 서버가 사용자들이 가지고 있는 음원 파일의 이름들을 보관하고 있다가, 누군가 파일 이름을 검색할 경우 해당 파일을 보유한 사용자의 IP를 알려주는 식이다. 이 방식은 통신 방식이 매우 단순하지만 서버 과부하와 관련한 위험을 가지고 있다.

두 번째 방법은 원하는 파일이 있을 경우 주변 사용자들에게 요청하는 '브로드캐스팅' 방식이다. 이 방식은 주변 사용자 풀이 적을 경우 별도의 state 관리가 필요하지 않다는 점에서 아주 단순하지만, 반대로 사용자가 모든 쿼리를 다 받는다는 단점 또한 함께 가지고 있다.


2. 사용자가 들락날락 거리는 문제(Churn)

보통 Churn이라고 불리는 이 문제는 자신 주변의 State 관리를 의미한다. 이 영향을 줄이기 위해서는 가급적 적은 State 관리가 필수적인데, 그렇게 될수록 통신할 상대방을 찾는 범위가 좁아짐을 의미한다. 결국, 사용자의 들락날락 거리는 문제(Churn)에 대한 처리와 통신할 상대방을 찾는 작업을 을 동시에 만족시키는 것은 매우 어렵다.


3. 이기적인 사용자

대부분의 P2P 사용자들은 자신이 원하는 파일을 확보한 뒤에는 자신의 CPU와 네트워크가 사용되는 것을 막기 위해 바로 P2P서비스를 종료하는 경향을 보인다. 하지만 P2P는 사용자 간 품앗이 방식으로 동작하기 때문에 모두가 이러한 행동을 보일 경우 제대로 동작할 수 없는 환경이 된다. 그럼에도 불구하고 각 사용자들에게 P2P를 보다 성실하게 이용할 수 있도록 강제하거나 하는 것이 실질적으로 어려운 문제다.

많은 이들이 사용하고 있는 비트 토렌트와 같은 경우도 이와 같은 문제로 다양한 연구를 진행하고 있으나, 아직도 명확한 답은 나오지 않은 상태다.


4.사용자 간 연결 보장 문제(NAT traversal)

기본적으로 사용하는 인터넷 주소 체계는 32bit의 숫자로 이루어져 있어, 약 40억 개 정도의 주소만을 사용할 수 있지만 이는 이미 오래전에 모두 소진된 상태다. 때문에 이를 극복할 방안으로 128bit 주소 체계인 IPv6가 생겨났지만 널리 쓰이지는 못 했다. 이런 상태에서 일반화된 방법이 사설 IP를 사용하는 방식이다. 우리가 주로 '공유기'라고 부르는 기기의 역할이 이러한 사설 IP를 공인 IP로 매칭해주는 것인데, Network Address Translation (NAT)라고 부른다.

NAT는 한가지 재밌는 특성을 가지고 있는데, 외부의 공인 IP로부터 들어오는 내용이 내부로 선진입하는 것을 허용하지 않는다는 것이다. 한마디로 내부에서 먼저 외부로 통신하지 않는 한 외부에서는 NAT 내부로 먼저 들어올 수 없다는 것이다. NAT의 이러한 특징은 보안에서는 유용하지만 P2P 통신에서는 장애물로 작용하게 된다.

때문에 원활한 P2P 통신을 위해서는 NAT를 뚫는 방법이 필요하게 된다. 한가지 방법은 외부에 NAT를 우회할 수 있는 클라이언트를 두는 '홀 펀칭'으로, 주로 게임 등 여러 분야에서 NAT를 뚫는 방법으로 사용된다. 또 두 사용자가 모두 NAT 뒤에 있을 경우 랑데부 방식의 릴레이 서버를 사용하는 방법이 있지만, 이 경우에는 P2P 최대 이점인 사용자 간 직접 통신에 따른 서버 부하 감소 등의 효과를 기대할 수 없게 된다.


⊙ 게임에 도입된 P2P, 유선과 모바일 환경에서 어떻게 다른가


P2P를 도입해 처음 상업적으로 성공한 게임으로는 크레이지아케이드 BnB를 예로 들 수 있다. 당시 BnB를 개발하던 모글루 박세희 대표는 사용자 간 움직임에 대한 빠른 동기화를 위해 이동 관련 패킷을 신속하게 전달하기 원했고, 이를 위해 P2P 통신을 시도했다. 클라이언트 간 이동 패킷을 전송하고, 추후에는 이를 검증하기 위해 같은 패킷을 서버로도 전송하는 방식을 이용했다. 이후 FPS와 같이 딜레이에 민감한 게임들을 중심으로 P2P방식의 통신이 널리 사용되기 시작했다.

그렇다면, PC 온라인 게임으로 대표되는 유선 망과 모바일 망에서 각각 P2P 구현을 하기 위해서는 어떤 것들을 필요로 할까? 문대경 대표는 이에 대해 설명하기 앞서 각 망이 가지고 있는 특징들을 설명했다.


일단 유선 망의 경우 안정적이며 끊김이 거의 없다. 반면 모바일에서 게임을 한다고 가정하면 기지국을 옮기거나, 또는 모바일 망에서 WiFi로 옮기거나 하는 경우 여전히 끊김이 있는 경우를 많이 볼 수 있다. 뿐만 아니라 대역폭의 경우에도 모바일 망이 유선 망에 비해 상당히 가변적이다. NAT에 의한 제약 또한 모바일 망은 고가의 유통사 장비를 사용해야 하는 특성이 있기에 둘 사이의 차이는 확연히 드러나게 된다.

통신할 상대방을 찾는 문제에 대해서, P2P를 사용하는 게임은 주로 FPS 등 게임이 판 단위로 나뉘는 경우가 대부분이다. 이 경우 상대방을 찾는다는 것은 매치메이킹을 의미하며, 위에서 말한 클라이언트-서버 방식의 모델이 주로 사용된다.

Churn 관리의 경우도 네트워크 끊기는 일이 흔치 않은 PC온라인게임 특성상 한 클라이언트가 끊겨 나가는 경우 아예 판을 종료하는, 다시 말하면 '방폭'을 이용한 방법도 널리 활용될 수 있다.

이기적인 사용자, 다시 말해 치팅(cheating)의 경우는 어떨까? 유선 망에서는 딜레이가 안정적이기 때문에 그 특성상 클라이언트의 작은 이상행동 하나도 확인하는 것이 가능하다.

NAT 제약의 경우 또한 사용자 대부분이 저가 가정용 공유기를 이용하는 유선 망의 경우는 홀 펀칭 등의 방법을 통해 우회하는 것이 자유로운 편이다. NAT 자체에 표준이 없기는 하나 가정이나 회사에서 사용하는 공유기의 작동 방식은 대부분 비슷한 방식으로 동작하기 때문이다.


반면 모바일 망의 경우는 어떨까? 통신할 상대방을 찾는 일 같은 경우 마찬가지로 매치메이킹을 위해 클라이언트-서버 방식을 사용하는 관계로 모바일 망이라고 특별히 다른 점을 찾기는 힘들다. 하지만 그밖에 세 가지 문제에 있어서 온라인 망과는 확연한 차이를 가지게 된다.

우선 Churn 관리의 경우 모바일 망에서 WiFi로의 전환 등의 이유로 끊김이 잦은 모바일 망에서는 '방폭'같이 판을 깨는 형태로는 게임의 진행이 사실상 불가능하게 된다. 따라서 서버 역할을 하는 클라이언트가 갑작스럽게 접속이 단절되는 경우를 대비할 필요가 있지만, 게임처럼 순간의 딜레이에 따라 승패가 결정될 수도 있는 민감한 응용에서는 어렵다는 단점이 있다.

치팅의 경우 또한 마찬가지이다. 대역폭이 상당히 가변적인 모바일 망의 특성 상 딜레이나 단절같은 경우에 대한 처리가 관대해지게 되는데, 사용자가 이 틈을 이용해 치팅 행위를 하는 경우 유선 망에서처럼 클라이언트의 모든 행위를 감지하는 것이 어렵게 된다.

NAT 제약의 경우에도 이동통신사들은 주파수 자원의 효율적인 운영을 위해 복잡한 NAT를 사용하기 때문에 가정용 공유기를 우회하는 것과 같은 방식으로는 NAT를 뚫는 것이 불가능하다. 또한, 랑데부 방식의 릴레이 사용은 오히려 추가적인 딜레이를 유발할 수 있기 때문에 주의가 필요하다.

결론으로 돌아와, 부하 분산과 라우팅 우회라는 네트워크 특징을 가진 P2P는 딜레이가 아주 민감한 게임에서 널리 사용되기에 매력적인 방법이 될 수 있다. 하지만, P2P가 반드시 정책 기반 라우팅보다 빠른 연결을 보장한다고 할 수 없고, 또 모바일 망 같은 경우는 상대적으로 더욱 제약이 심한 만큼, 자신이 만드는 게임이 어떤 환경에서 동작하는지 확실하게 하는 것이 선행되어야 할 것이다.