SlideShare a Scribd company logo
1 of 80
PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교
아이펀팩토리 문대경
(dkmoon@ifunfactory.com)
Inven Game Conference
0
Overview
왕년에 CD/DVD 좀 구워 보셨습니까?
0
Overview
그렇다면 이 프로그램들도 기억하시겠네욤
0
Overview
Napster 이야기
 Sean Fanning, Sean Parker 등으로부터 1999년 서비스 시작
 최대 8천만 명의 등록 유저
 미공개 음원 유통으로 Metallica 로부터 “너 고소”
 Dr. Dre 의 저작물 삭제 요청 무시로 “너 고소”
 유저들의 저작권 위반 방조 이유로 A&M Records 로부터 “너 고소”
 … (연속 고소미 콤보)
 유저의 저작권 위반 행위를 적극적으로 방지하라는 법원 명령에
2001년 서비스 종료
0
Overview
Napster 동작 방식
냅스터의
인덱싱 서버
① 보유한 MP3 파일명과
자신의 IP 주소 등록
② 노래 검색
③ 저장된 파일명 DB를 이용해 검색 매칭 후
MP3 보유 컴퓨터 IP 반환
④ 파일 전송 요청
1
Client-Server Model vs. Peer-to-Peer Model
기존 서비스 구성 방법의 특징
• Centralized:
모든 정보는 중앙에 집중됨
• Managed:
전담 관리자가 서비스를 관리함
1 Napster 의 클라이언트-서버 통신 부분
냅스터의
인덱싱 서버
클라이언트-서버 통신
Client-Server Model vs. Peer-to-Peer Model
1 Napster 의 사용자간 통신 부분 (P2P)
냅스터의
인덱싱 서버
사용자간 통신
Client-Server Model vs. Peer-to-Peer Model
1 기존 서비스 아키텍처와의 차이점
 Decentralized:
정보는 흩어져 있음
 Unmanaged:
전담 관리자가 존재하지 않음
Client-Server Model vs. Peer-to-Peer Model
1 기존 서비스 아키텍처와의 차이점
 Decentralized:
정보는 흩어져 있음
 Unmanaged:
전담 관리자가 존재하지 않음
변화의 동기
 운영 비용 문제
Client-Server Model vs. Peer-to-Peer Model
1 Client-Server Model
Client-Server Model vs. Peer-to-Peer Model
1 Client-Server Model
Pros
 Centralized: 서비스 변경이 쉬움
 Managed: 안정적인 서비스 가능
Client-Server Model vs. Peer-to-Peer Model
1 Client-Server Model
Pros
 Centralized: 서비스 변경이 쉬움
 Managed: 안정적인 서비스 가능
Cons
 서버 과부하
 네트워크 과부하
Client-Server Model vs. Peer-to-Peer Model
1 Peer-to-Peer Model
Client-Server Model vs. Peer-to-Peer Model
1 Peer-to-Peer Model
→ 참여자간 품앗이
Client-Server Model vs. Peer-to-Peer Model
1 P2P 관련 잘못된 믿음 #1
P2P 는 사용자들끼리 통신하는 것이다.
Client-Server Model vs. Peer-to-Peer Model
1 P2P 관련 잘못된 믿음 #1
P2P 는 사용자들끼리 통신하는 것이다.
 클러스터링을 위해 서버간 P2P 망을 구성할 수도 있다.
예) 로그인한 유저 정보를 REDIS 에 몰아서 저장하기
vs.
로그인한 유저 정보를 서버들 각각이 저장하기
 P2P 는 중앙집중 요소를 없애는 범용 테크닉임
Client-Server Model vs. Peer-to-Peer Model
2
Peer-to-Peer Application
P2P 응용의 확장
파일 공유
2
Peer-to-Peer Application
P2P 응용의 확장
파일 공유 컴퓨팅 파워 공유
(분산 처리)
2
Peer-to-Peer Application
P2P 응용의 확장
파일 공유 컴퓨팅 파워 공유
(분산 처리)
네트워크 공유
(라우팅)
3
Overlay Network by P2P
P2P의 라우팅에서의 응용
인터넷 inter + net (망 사이의 연결)
망 사이의 패킷 전달 규칙
= 정책 기반 라우팅 (policy-based routing)
= 효율성과 관계없이 정책에 따라 패킷을 보냄
(특정 국가를 우회하거나, 특정 망 사업자를 선호하거나..)
망사업자
A
망사업자
C
망사업자
B
망사업자
D
3
Overlay Network by P2P
P2P 를 통한 정책 기반 라우팅 극복
A
서버
클라
쓰리쿠숀 클라
(라우터로 동작)
B C
D
E
기본 라우팅 규칙에 따른 경로
P2P 로 다른 클라 에게
패킷을 릴레이 하는 경우 경로
3
Overlay Network by P2P
P2P의 라우팅에서의 응용
A
CB
D
서버
클라
클라
클라들이 같은 망 사업자에 연결된 경우도 당연히 유용하다.
서버까지 갔다 오는 경로
직접 클라로 가는 경로
0 P2P 관련 잘못된 믿음 #2
P2P 가 더 빠르다.
Overlay Network by P2P
 Topology 에 따라 그럴 수도 있고 아닐 수도 있다.
0 P2P 관련 잘못된 믿음 #2
P2P 가 더 빠르다.
CB
A
서버
클라 클라
Overlay Network by P2P
3
Overlay Network by P2P
2000 년대 중반까지의 P2P 연구 전성기
라우팅 우회라는 네트워크적 효용성으로
2000년대 중반까지 P2P 관련 수많은 연구가 쏟아짐
(CAN, Pastry, Tapestry, Chord, Kademila, BitTorrent, …)
참고: 물리 네트워크 위에 다시 논리 네트워크를 만든 것 같다 하여
오버레이 네트워크 (Overlay Network) 이라 함
4
Issues Related to Peer-to-Peer Approach
P2P 연구의 난제들
P2P 프로토콜 설계/구현에서의 난제들
1. 통신할 상대방 찾기 (resource discovery)
2. 참여자의 들락날락거림 처리 (churn handling)
3. 품앗이에서 치팅 방지 (fairness enforcement)
4. 통신 채널 보장하기 (NAT traversal)
4 P2P 연구의 난제 #1 - 통신할 상대방 찾기
Q1. 전체 사용자 풀에서 어떻게 통신 대상을 찾아낼 것인가?
Approach 1. Directory (e.g., Napster)
인덱싱 서버
① 보유한 MP3 파일명과
자신의 IP 주소 등록
② 노래 검색
③ 저장된 파일명 DB를 이용해 검색 매칭 후
MP3 보유 컴퓨터 IP 반환
④ 파일 전송 요청
Issues Related to Peer-to-Peer Approach
4 P2P 연구의 난제 #1 - 통신할 상대방 찾기
인덱싱 서버
① 보유한 MP3 파일명과
자신의 IP 주소 등록
② 노래 검색
③ 저장된 파일명 DB를 이용해 검색 매칭 후
MP3 보유 컴퓨터 IP 반환
④ 파일 전송 요청
Approach 1. Directory (e.g., Napster)
Pros: Simplicity (통신 방식이 단순함)
Cons: Single point of failure (디렉토리에 과부하나 오류 발생한다면?)
Issues Related to Peer-to-Peer Approach
Q1. 전체 사용자 풀에서 어떻게 통신 대상을 찾아낼 것인가?
4 P2P 연구의 난제 #1 - 통신할 상대방 찾기
Approach 2. Broadcasting (e.g., Gnutella)
…
…
박효신
Issues Related to Peer-to-Peer Approach
Q1. 전체 사용자 풀에서 어떻게 통신 대상을 찾아낼 것인가?
4 P2P 연구의 난제 #1 - 통신할 상대방 찾기
…
…
박효신
Approach 2. Broadcasting (e.g., Gnutella)
Issues Related to Peer-to-Peer Approach
Q1. 전체 사용자 풀에서 어떻게 통신 대상을 찾아낼 것인가?
4 P2P 연구의 난제 #1 - 통신할 상대방 찾기
…
…
박효신
Approach 2. Broadcasting (e.g., Gnutella)
Issues Related to Peer-to-Peer Approach
Q1. 전체 사용자 풀에서 어떻게 통신 대상을 찾아낼 것인가?
4 P2P 연구의 난제 #1 - 통신할 상대방 찾기
…
…
박효신
저요!
Approach 2. Broadcasting (e.g., Gnutella)
Issues Related to Peer-to-Peer Approach
Q1. 전체 사용자 풀에서 어떻게 통신 대상을 찾아낼 것인가?
4 P2P 연구의 난제 #1 - 통신할 상대방 찾기
…
…
박효신
저요!
Approach 2. Broadcasting (e.g., Gnutella)
Issues Related to Peer-to-Peer Approach
Q1. 전체 사용자 풀에서 어떻게 통신 대상을 찾아낼 것인가?
4 P2P 연구의 난제 #1 - 통신할 상대방 찾기
…
…
Approach 2. Broadcasting (e.g., Gnutella)
Issues Related to Peer-to-Peer Approach
Q1. 전체 사용자 풀에서 어떻게 통신 대상을 찾아낼 것인가?
4 P2P 연구의 난제 #1 - 통신할 상대방 찾기
…
…
박효신
Approach 2. Broadcasting
Pros: Simplicity (별도의 state 관리가 필요없음)
Cons: Query storms (사용자는 모든 쿼리를 다 받는다)
Issues Related to Peer-to-Peer Approach
Q1. 전체 사용자 풀에서 어떻게 통신 대상을 찾아낼 것인가?
4 P2P 연구의 난제 #1 - 통신할 상대방 찾기
Approach 3. Cascaded directory
Approach 4. Distributed Hash Table (DHT)
…
Issues Related to Peer-to-Peer Approach
Q1. 전체 사용자 풀에서 어떻게 통신 대상을 찾아낼 것인가?
4 P2P 연구의 난제 #2 – Churn 처리
Q2. 사용자 풀 변화에도 어떻게 계속 통신할 것인가?
Case 1: 중간 노드가 죽었다면?
…
…
박효신
저요!
?
Issues Related to Peer-to-Peer Approach
4 P2P 연구의 난제 #2 – Churn 처리
Case 2: 새 노드가 들어왔다면?
…
…
문대경
저요!
?
Issues Related to Peer-to-Peer Approach
Q2. 사용자 풀 변화에도 어떻게 계속 통신할 것인가?
4 P2P 연구의 난제 #2 – Churn 처리
…
…
문대경
저요!
?
 Churn 처리는 결국 state 관리를 의미한다.
 Churn 의 영향을 줄이기 위해서는 가급적 적은 state 만 관리해야 된다.
 그러나 discovery 속도를 올리기 위해서는 가급적 많은 state 가 유리하다.
 따라서 churn 처리와 discovery 성능 둘을 동시에 만족시키는 것은 매우 어렵다.
Issues Related to Peer-to-Peer Approach
Q2. 사용자 풀 변화에도 어떻게 계속 통신할 것인가?
4 P2P 연구의 난제 #3 – 치팅 방지하기
Q3. 이기적인 사용자가 있는 경우 어떻게 할까?
Issues Related to Peer-to-Peer Approach
4 P2P 연구의 난제 #3 – 치팅 방지하기
 P2P 는 품앗이 방식으로 동작한다.
 따라서 모든 사용자가 이기적으로 행동할 경우
service collapse 가 발생한다.
 이기적인 행동을 제재하거나
정당하게 행동하도록 동기부여가 필요하다.
그런데 어떻게? -_-
Issues Related to Peer-to-Peer Approach
Q3. 이기적인 사용자가 있는 경우 어떻게 할까?
4 P2P 연구의 난제 #3 – 치팅 방지하기
 P2P 는 품앗이 방식으로 동작한다.
 따라서 모든 사용자가 이기적으로 행동할 경우
service collapse 가 발생한다.
 이기적인 행동을 제재하거나
정당하게 행동하도록 동기부여가 필요하다.
그런데 어떻게? -_-
Issues Related to Peer-to-Peer Approach
Q3. 이기적인 사용자가 있는 경우 어떻게 할까?
4 P2P 연구의 난제 #3 – 치팅 방지하기
 P2P 는 품앗이 방식으로 동작한다.
 따라서 모든 사용자가 이기적으로 행동할 경우
service collapse 가 발생한다.
 이기적인 행동을 제재하거나
정당하게 행동하도록 동기부여가 필요하다.
그런데 어떻게? -_-
Issues Related to Peer-to-Peer Approach
Q3. 이기적인 사용자가 있는 경우 어떻게 할까?
4 P2P 연구의 난제 #4 – 연결 보장하기
Issues Related to Peer-to-Peer Approach
Q4. 사용자간 연결은 어떻게 보장하나?
4 P2P 연구의 난제 #4 – 연결 보장하기
Issues Related to Peer-to-Peer Approach
Q4. 사용자간 연결은 어떻게 보장하나?
IPv4 주소는 32bit 를 사용하므로 2^32 = 약 40억개만 사용 가능하다.
4 P2P 연구의 난제 #4 – 연결 보장하기
Issues Related to Peer-to-Peer Approach
Q4. 사용자간 연결은 어떻게 보장하나?
128bit 주소 체계인 IPv6 도입이 지지부진한 틈을 타 NAT 장비를 통한 “사설 IP” 가 일반화됨
그리고 NAT 는 외부에서의 선진입을 허용하지 않는다.
이미지 출처: iptime
4 P2P 연구의 난제 #4 – 연결 보장하기
Issues Related to Peer-to-Peer Approach
Q4. 사용자간 연결은 어떻게 보장하나?
128bit 주소 체계인 IPv6 도입이 지지부진한 틈을 타 NAT 장비를 통한 “사설 IP” 가 일반화됨
그리고 NAT 는 외부에서의 선진입을 허용하지 않음
이미지 출처: iptime
4 P2P 연구의 난제 #4 – 연결 보장하기
Issues Related to Peer-to-Peer Approach
Hole Punching: NAT 에 구멍 뚫기
이미지 출처: iconfinder.com
클라 A 클라 B
NAT (공유기)
4 P2P 연구의 난제 #4 – 연결 보장하기
Issues Related to Peer-to-Peer Approach
Hole Punching: NAT 에 구멍 뚫기
이미지 출처: iconfinder.com
클라 A 클라 B
NAT (공유기)
NAT traversal server
(E.g., STUN)
4 P2P 연구의 난제 #4 – 연결 보장하기
Issues Related to Peer-to-Peer Approach
Hole Punching: NAT 에 구멍 뚫기
이미지 출처: iconfinder.com
클라 A 클라 B
사설 IP
공인 IP
NAT (공유기)
NAT traversal server
(E.g., STUN)
4 P2P 연구의 난제 #4 – 연결 보장하기
Issues Related to Peer-to-Peer Approach
Hole Punching: NAT 에 구멍 뚫기
이미지 출처: iconfinder.com
클라 A 클라 B
사설 IP
공인 IP
NAT (공유기)
NAT traversal server
(E.g., STUN)
4 P2P 연구의 난제 #4 – 연결 보장하기
Issues Related to Peer-to-Peer Approach
Hole Punching: NAT 에 구멍 뚫기
이미지 출처: iconfinder.com
클라 A 클라 B
사설 IP
공인 IP
NAT (공유기)
NAT traversal server
(E.g., STUN)
① 외부로 나갈 때 사설 IP, port 가
공인 IP, port 로 변환됨
4 P2P 연구의 난제 #4 – 연결 보장하기
Issues Related to Peer-to-Peer Approach
Hole Punching: NAT 에 구멍 뚫기
이미지 출처: iconfinder.com
클라 A 클라 B
사설 IP
공인 IP
NAT (공유기)
NAT traversal server
(E.g., STUN) A 공인 IP, port 기록
② 디렉토리 서버는
패킷으로부터
A 의 공인 IP, port 기록
4 P2P 연구의 난제 #4 – 연결 보장하기
Issues Related to Peer-to-Peer Approach
Hole Punching: NAT 에 구멍 뚫기
이미지 출처: iconfinder.com
클라 A 클라 B
사설 IP
공인 IP
NAT (공유기)
NAT traversal server
(E.g., STUN) A 공인 IP, port 기록
③ B 는 디렉토리 서버에서
A 의 공인 IP, port 파악
4 P2P 연구의 난제 #4 – 연결 보장하기
Issues Related to Peer-to-Peer Approach
Hole Punching: NAT 에 구멍 뚫기
이미지 출처: iconfinder.com
클라 A 클라 B
사설 IP
공인 IP
NAT (공유기)
NAT traversal server
(E.g., STUN) A 공인 IP, port 기록
④ B 는 A 의 공인 IP, port 로 접속
4 P2P 연구의 난제 #4 – 연결 보장하기
Issues Related to Peer-to-Peer Approach
NAT 의 문제: 표준이 없음
4 P2P 연구의 난제 #4 – 연결 보장하기
Issues Related to Peer-to-Peer Approach
이미지 출처: iconfinder.com
클라 A 클라 B
사설 IP
공인 IP
NAT (공유기)
NAT traversal server
(E.g., STUN)
① 외부로 나갈 때 사설 IP, port 가
공인 IP, port 로 변환됨
NAT 의 문제: 표준이 없음
4 P2P 연구의 난제 #4 – 연결 보장하기
Issues Related to Peer-to-Peer Approach
Full cone NAT
Address-restricted conn NAT
Port-restricted conn NAT
Symmetric NAT
NAT 의 문제: 표준이 없음
4 P2P 연구의 난제 #4 – 연결 보장하기
Issues Related to Peer-to-Peer Approach
Full cone NAT
Address-restricted conn NAT
Port-restricted conn NAT
Symmetric NAT모두 각각의 NAT 뒤에
있을 때 P2P 통신 불가
NAT 의 문제: 표준이 없음
4
Issues Related to Peer-to-Peer Approach
둘 다 NAT 뒤에 있으면 랑데부 방식의 릴레이 서버를 이용한다
클라 A 클라 B
NAT (공유기)
릴레이 서버 (e.g., TURN)
NAT (공유기)
P2P 관련 잘못된 믿음 #3
4
Issues Related to Peer-to-Peer Approach
둘 다 NAT 뒤에 있으면 랑데부 방식의 릴레이 서버를 이용한다
P2P 관련 잘못된 믿음 #3
① 동작
② 판정
③ 결과전송③ 결과전송
클라이언트 클라이언트
게임 서버
① 동작
② 판정
③ 결과전송
클라이언트 클라이언트 (리슨 서버)
게임 서버
① 동작 ② 전달(동작)
③ 판정
③ 전달(결과)④ 결과
전송
클라이언트 클라이언트 (리슨 서버)
릴레이 서버
1. 클라이언트-서버 모델 2. 직접 통신 가능한 P2P 모델 3. 릴레이를 통하는 P2P 모델
4 Peer-to-Peer 요약
→ 참여자간 품앗이
Issues Related to Peer-to-Peer Approach
4 Peer-to-Peer 요약
→ 참여자간 품앗이
Pros
 서버 부하 감소라는 확실한 이점
 라우팅 우회라는 잠재적 이점
Issues Related to Peer-to-Peer Approach
4 Peer-to-Peer 요약
→ 참여자간 품앗이
Pros
 서버 부하 감소라는 확실한 이점
 라우팅 우회라는 잠재적 이점
Cons
 Discovery, Churn, Fairness 어려움
 NAT traversal 표준의 부재
Issues Related to Peer-to-Peer Approach
5
Peer-to-Peer in Gaming
게임에 P2P 의 도입
상업적으로 성공한 첫 P2P 게임
5
Peer-to-Peer in Gaming
게임에 P2P 의 도입
BnB 클라 BnB 클라
BnB 서버
① P2P 가능 시
이동 패킷 전송
① 검증용으로
서버에도 전송
② 검증
③ 위치 보정에
참고
5
Peer-to-Peer in Gaming
PC 온라인 게임과 모바일 게임의 네트워크적 가정의 차이
PC 온라인 게임 모바일 게임
동작 환경 유선 초고속 인터넷
3G/LTE 모바일 망
WiFi
연결 안정성 끊김 드묾
망 간 이동에 따른
끊김 빈번
대역폭 xDSL, FTTH, Giga lan 3G, LTE
딜레이 < 100 msec RTT 왔다갔다하는 RTT (jitter)
NAT 제약 저가 가정용 공유기 고가 이통사 장비
PC 온라인 게임 모바일 게임
동작 환경 유선 초고속 인터넷
3G/LTE 모바일 망
WiFi
연결 안정성 끊김 드묾
망 간 이동에 따른
끊김 빈번
대역폭 xDSL, FTTH, Giga lan 3G, LTE
딜레이 < 100 msec RTT 왔다갔다하는 RTT (jitter)
NAT 제약 저가 가정용 공유기 고가 이통사 장비
5
Peer-to-Peer in Gaming
PC 온라인 게임과 모바일 게임의 네트워크적 가정의 차이
네트워크적 가정의 차이로 모바일에서의 P2P 게임 개발은 PC 온라인과는 크게 다름!!
보다 정확히는 모바일 망에서의 P2P 개발은 유선망과 다름을 의미
PC 온라인 게임 모바일 게임
동작 환경 유선 초고속 인터넷
3G/LTE 모바일 망
WiFi
연결 안정성 끊김 드묾
망 간 이동에 따른
끊김 빈번
대역폭 xDSL, FTTH, Giga lan 3G, LTE
딜레이 < 100 msec RTT 왔다갔다하는 RTT (jitter)
NAT 제약 저가 가정용 공유기 고가 이통사 장비
5
Peer-to-Peer in Gaming
PC 온라인 게임과 모바일 게임의 네트워크적 가정의 차이
네트워크적 가정의 차이로 모바일에서의 P2P 게임 개발은 PC 온라인과는 크게 다름!!
보다 정확히는 모바일 망에서의 P2P 개발은 유선망과 다름을 의미
5
Peer-to-Peer in Gaming
유선 환경에서의 P2P 대응
룸-로비 방식의 게임에 주로 사용됨
따라서 discovery 는 결국 matchmaking 과 동일함
이 부분만 directory service 를 이용하는 client-server 모델을 주로 활용
Discovery
5
Peer-to-Peer in Gaming
유선 환경에서의 P2P 대응
룸-로비 방식의 게임에 주로 사용됨
따라서 discovery 는 결국 matchmaking 과 동일함
이 부분만 directory service 를 이용하는 client-server 모델을 주로 활용
유선 네트워크는 연결이 끊기는 일이 거의 없음
따라서 갑자기 나가는 경우에 대한 처리는 방폭 형태로 처리
만들어진 방에 난입하는 기획이 아닌 한 갑자기 들어올 수도 없음
Discovery
Churn
5
Peer-to-Peer in Gaming
유선 환경에서의 P2P 대응
룸-로비 방식의 게임에 주로 사용됨
따라서 discovery 는 결국 matchmaking 과 동일함
이 부분만 directory service 를 이용하는 client-server 모델을 주로 활용
유선 네트워크는 연결이 끊기는 일이 거의 없음
따라서 갑자기 나가는 경우에 대한 처리는 방폭 형태로 처리
만들어진 방에 난입하는 기획이 아닌 한 갑자기 들어올 수도 없음
사용자가 치팅을 하지 않도록 유도하는 것은 불가능함
그러나 안정적인 유선 네트워크 특성상 작은 이상 행동도 확인 가능
Discovery
Churn
Fairness
5
Peer-to-Peer in Gaming
유선 환경에서의 P2P 대응
룸-로비 방식의 게임에 주로 사용됨
따라서 discovery 는 결국 matchmaking 과 동일함
이 부분만 directory service 를 이용하는 client-server 모델을 주로 활용
유선 네트워크는 연결이 끊기는 일이 거의 없음
따라서 갑자기 나가는 경우에 대한 처리는 방폭 형태로 처리
만들어진 방에 난입하는 기획이 아닌 한 갑자기 들어올 수도 없음
사용자가 치팅을 하지 않도록 유도하는 것은 불가능함
그러나 안정적인 유선 네트워크 특성상 작은 이상 행동도 확인 가능
가정용 공유기의 NAT 구현은 복잡도가 크지 않음
Discovery
Churn
Fairness
NAT Traversal
5
Peer-to-Peer in Gaming
모바일 망 환경에서의 P2P 대응
유선 환경과 마찬가지로, 룸-로비 방식의 게임에 주로 사용됨Discovery
5
Peer-to-Peer in Gaming
모바일 망 환경에서의 P2P 대응
유선 환경과 마찬가지로, 룸-로비 방식의 게임에 주로 사용됨
수시로 네트워크 단절 가능
따라서 유선처럼 방폭 형태로 처리할 경우 게임 진행 불가
서버 역할의 클라 단절에 대비한 state replication 필요
그러나 게임처럼 딜레이에 민감한 응용에서 이는 어려움
Discovery
Churn
5
Peer-to-Peer in Gaming
모바일 망 환경에서의 P2P 대응
유선 환경과 마찬가지로, 룸-로비 방식의 게임에 주로 사용됨
수시로 네트워크 단절 가능
따라서 유선처럼 방폭 형태로 처리할 경우 게임 진행 불가
서버 역할의 클라 단절에 대비한 state replication 필요
그러나 게임처럼 딜레이에 민감한 응용에서 이는 어려움
모바일 망은 딜레이나 단절에 더 관대한 처리를 해야 되는데,
이 틈을 이용해 치팅이 가능해짐
Discovery
Churn
Fairness
5
Peer-to-Peer in Gaming
모바일 망 환경에서의 P2P 대응
유선 환경과 마찬가지로, 룸-로비 방식의 게임에 주로 사용됨
수시로 네트워크 단절 가능
따라서 유선처럼 방폭 형태로 처리할 경우 게임 진행 불가
서버 역할의 클라 단절에 대비한 state replication 필요
그러나 게임처럼 딜레이에 민감한 응용에서 이는 어려움
모바일 망은 딜레이나 단절에 더 관대한 처리를 해야 되는데,
이 틈을 이용해 치팅이 가능해짐
이통사는 주파수 자원의 효율적 운용을 위해 더욱 복잡한 NAT 를 사용
기존의 홀펀칭으로는 NAT 극복 불가능
랑데부 방식의 릴레이 사용은 추가적인 딜레이를 유발
Discovery
Churn
Fairness
NAT Traversal
6
Summary
결론
 P2P 는 파일 공유에서 일반적으로 활용된 기법
 부하 분산이라는 강력한 특성을 가지고 있음
 라우팅 우회라는 특성 덕분에 overlay 등의 네트워크 응용에 활용
 게임에서도 이런 네트워크적 특성때문에 도입
 그러나 P2P 가 반드시 빠른 연결을 보장하지는 않음
 또한 모바일 망 환경에서 P2P 게임 구현은 힘듦
감사합니다
아 이 펀 팩 토 리
문 대 경

More Related Content

What's hot

[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
 
스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들Hyunjik Bae
 
Scaling server side web rtc applications the janus challenge by lorenzo miniero
Scaling server side web rtc applications the janus challenge by lorenzo minieroScaling server side web rtc applications the janus challenge by lorenzo miniero
Scaling server side web rtc applications the janus challenge by lorenzo minieroGreg Kawere
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가Seungmo Koo
 
Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architectureJongwon Kim
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기SeungYong Oh
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현YEONG-CHEON YOU
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けモノビット エンジン
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Esun Kim
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceXionglong Jin
 
[KGC 2012] Online Game Server Architecture Case Study Performance and Security
[KGC 2012] Online Game Server Architecture Case Study Performance and Security[KGC 2012] Online Game Server Architecture Case Study Performance and Security
[KGC 2012] Online Game Server Architecture Case Study Performance and SecuritySeungmin Shin
 
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜 リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜 Yugo Shimizu
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)Heungsub Lee
 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPSeungmo Koo
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~torisoup
 
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민Hyunjik Bae
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...Amazon Web Services Korea
 
Bench, a Framework for Benchmarking Kafka Using K8s and OpenMessaging Benchma...
Bench, a Framework for Benchmarking Kafka Using K8s and OpenMessaging Benchma...Bench, a Framework for Benchmarking Kafka Using K8s and OpenMessaging Benchma...
Bench, a Framework for Benchmarking Kafka Using K8s and OpenMessaging Benchma...HostedbyConfluent
 
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現Yoshifumi Kawai
 

What's hot (20)

[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
 
스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들
 
Scaling server side web rtc applications the janus challenge by lorenzo miniero
Scaling server side web rtc applications the janus challenge by lorenzo minieroScaling server side web rtc applications the janus challenge by lorenzo miniero
Scaling server side web rtc applications the janus challenge by lorenzo miniero
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가
 
Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architecture
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
 
[KGC 2012] Online Game Server Architecture Case Study Performance and Security
[KGC 2012] Online Game Server Architecture Case Study Performance and Security[KGC 2012] Online Game Server Architecture Case Study Performance and Security
[KGC 2012] Online Game Server Architecture Case Study Performance and Security
 
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜 リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCP
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
 
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
 
Bench, a Framework for Benchmarking Kafka Using K8s and OpenMessaging Benchma...
Bench, a Framework for Benchmarking Kafka Using K8s and OpenMessaging Benchma...Bench, a Framework for Benchmarking Kafka Using K8s and OpenMessaging Benchma...
Bench, a Framework for Benchmarking Kafka Using K8s and OpenMessaging Benchma...
 
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
 

Similar to PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교

[IGC 2016] 아이펀팩토리 문대경 - PC와 모바일에서의 P2P 게임 구현에서의 차이점 비교
[IGC 2016] 아이펀팩토리 문대경 - PC와 모바일에서의 P2P 게임 구현에서의 차이점 비교[IGC 2016] 아이펀팩토리 문대경 - PC와 모바일에서의 P2P 게임 구현에서의 차이점 비교
[IGC 2016] 아이펀팩토리 문대경 - PC와 모바일에서의 P2P 게임 구현에서의 차이점 비교강 민우
 
NAT and Hole Punching_SYS4U I&C
NAT and Hole Punching_SYS4U I&CNAT and Hole Punching_SYS4U I&C
NAT and Hole Punching_SYS4U I&Csys4u
 
NAT Traversal and P2P
NAT Traversal and P2PNAT Traversal and P2P
NAT Traversal and P2PJungIn Jung
 
Opensource contributor 회고_ver_0.6
Opensource contributor 회고_ver_0.6Opensource contributor 회고_ver_0.6
Opensource contributor 회고_ver_0.6명준 김
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)Heungsub Lee
 
[1D5]모바일 p2p 미디어 스트리밍 방법
[1D5]모바일 p2p 미디어 스트리밍 방법[1D5]모바일 p2p 미디어 스트리밍 방법
[1D5]모바일 p2p 미디어 스트리밍 방법NAVER D2
 
서비스 발견을 위한 패턴언어
서비스 발견을 위한 패턴언어서비스 발견을 위한 패턴언어
서비스 발견을 위한 패턴언어eva
 
캡스톤1문헌조사
캡스톤1문헌조사캡스톤1문헌조사
캡스톤1문헌조사Sinyeol An
 
[ETHCon Korea 2019] Kim hyojun 김효준
[ETHCon Korea 2019] Kim hyojun 김효준[ETHCon Korea 2019] Kim hyojun 김효준
[ETHCon Korea 2019] Kim hyojun 김효준ethconkr
 

Similar to PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교 (10)

[IGC 2016] 아이펀팩토리 문대경 - PC와 모바일에서의 P2P 게임 구현에서의 차이점 비교
[IGC 2016] 아이펀팩토리 문대경 - PC와 모바일에서의 P2P 게임 구현에서의 차이점 비교[IGC 2016] 아이펀팩토리 문대경 - PC와 모바일에서의 P2P 게임 구현에서의 차이점 비교
[IGC 2016] 아이펀팩토리 문대경 - PC와 모바일에서의 P2P 게임 구현에서의 차이점 비교
 
NAT and Hole Punching_SYS4U I&C
NAT and Hole Punching_SYS4U I&CNAT and Hole Punching_SYS4U I&C
NAT and Hole Punching_SYS4U I&C
 
NAT Traversal and P2P
NAT Traversal and P2PNAT Traversal and P2P
NAT Traversal and P2P
 
컴퓨터개론11
컴퓨터개론11컴퓨터개론11
컴퓨터개론11
 
Opensource contributor 회고_ver_0.6
Opensource contributor 회고_ver_0.6Opensource contributor 회고_ver_0.6
Opensource contributor 회고_ver_0.6
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
 
[1D5]모바일 p2p 미디어 스트리밍 방법
[1D5]모바일 p2p 미디어 스트리밍 방법[1D5]모바일 p2p 미디어 스트리밍 방법
[1D5]모바일 p2p 미디어 스트리밍 방법
 
서비스 발견을 위한 패턴언어
서비스 발견을 위한 패턴언어서비스 발견을 위한 패턴언어
서비스 발견을 위한 패턴언어
 
캡스톤1문헌조사
캡스톤1문헌조사캡스톤1문헌조사
캡스톤1문헌조사
 
[ETHCon Korea 2019] Kim hyojun 김효준
[ETHCon Korea 2019] Kim hyojun 김효준[ETHCon Korea 2019] Kim hyojun 김효준
[ETHCon Korea 2019] Kim hyojun 김효준
 

More from iFunFactory Inc.

2019 아이펀팩토리 Dev Day 세션6 아이펀엔진 운영툴 연동하기 - 장수원
2019 아이펀팩토리 Dev Day 세션6 아이펀엔진 운영툴 연동하기 - 장수원2019 아이펀팩토리 Dev Day 세션6 아이펀엔진 운영툴 연동하기 - 장수원
2019 아이펀팩토리 Dev Day 세션6 아이펀엔진 운영툴 연동하기 - 장수원iFunFactory Inc.
 
2019 아이펀팩토리 Dev Day 세션5 아이펀엔진으로 만든 게임 성능 분석 및 디버깅 - 남승현
2019 아이펀팩토리 Dev Day 세션5 아이펀엔진으로 만든 게임 성능 분석 및 디버깅 - 남승현2019 아이펀팩토리 Dev Day 세션5 아이펀엔진으로 만든 게임 성능 분석 및 디버깅 - 남승현
2019 아이펀팩토리 Dev Day 세션5 아이펀엔진으로 만든 게임 성능 분석 및 디버깅 - 남승현iFunFactory Inc.
 
2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현
2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현
2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현iFunFactory Inc.
 
2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱
2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱
2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱iFunFactory Inc.
 
2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱
2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱
2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱iFunFactory Inc.
 
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표iFunFactory Inc.
 
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTOiFunFactory Inc.
 
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기iFunFactory Inc.
 
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기iFunFactory Inc.
 
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유iFunFactory Inc.
 
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석iFunFactory Inc.
 
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 iFunFactory Inc.
 
[아이펀팩토리] 2017 NDCP
[아이펀팩토리] 2017 NDCP [아이펀팩토리] 2017 NDCP
[아이펀팩토리] 2017 NDCP iFunFactory Inc.
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트iFunFactory Inc.
 
유니티 쉐이더 단기속성
유니티 쉐이더 단기속성유니티 쉐이더 단기속성
유니티 쉐이더 단기속성iFunFactory Inc.
 
게임 서버 성능 분석하기
게임 서버 성능 분석하기게임 서버 성능 분석하기
게임 서버 성능 분석하기iFunFactory Inc.
 
혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버iFunFactory Inc.
 
Python과 AWS를 이용하여 게임 테스트 환경 구축하기
Python과 AWS를 이용하여 게임 테스트 환경 구축하기Python과 AWS를 이용하여 게임 테스트 환경 구축하기
Python과 AWS를 이용하여 게임 테스트 환경 구축하기iFunFactory Inc.
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기iFunFactory Inc.
 
게임 운영에 필요한 로그성 데이터들에 대하여
게임 운영에 필요한 로그성 데이터들에 대하여게임 운영에 필요한 로그성 데이터들에 대하여
게임 운영에 필요한 로그성 데이터들에 대하여iFunFactory Inc.
 

More from iFunFactory Inc. (20)

2019 아이펀팩토리 Dev Day 세션6 아이펀엔진 운영툴 연동하기 - 장수원
2019 아이펀팩토리 Dev Day 세션6 아이펀엔진 운영툴 연동하기 - 장수원2019 아이펀팩토리 Dev Day 세션6 아이펀엔진 운영툴 연동하기 - 장수원
2019 아이펀팩토리 Dev Day 세션6 아이펀엔진 운영툴 연동하기 - 장수원
 
2019 아이펀팩토리 Dev Day 세션5 아이펀엔진으로 만든 게임 성능 분석 및 디버깅 - 남승현
2019 아이펀팩토리 Dev Day 세션5 아이펀엔진으로 만든 게임 성능 분석 및 디버깅 - 남승현2019 아이펀팩토리 Dev Day 세션5 아이펀엔진으로 만든 게임 성능 분석 및 디버깅 - 남승현
2019 아이펀팩토리 Dev Day 세션5 아이펀엔진으로 만든 게임 성능 분석 및 디버깅 - 남승현
 
2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현
2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현
2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현
 
2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱
2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱
2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱
 
2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱
2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱
2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱
 
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
 
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
 
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기
 
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
 
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
 
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
 
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
 
[아이펀팩토리] 2017 NDCP
[아이펀팩토리] 2017 NDCP [아이펀팩토리] 2017 NDCP
[아이펀팩토리] 2017 NDCP
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
 
유니티 쉐이더 단기속성
유니티 쉐이더 단기속성유니티 쉐이더 단기속성
유니티 쉐이더 단기속성
 
게임 서버 성능 분석하기
게임 서버 성능 분석하기게임 서버 성능 분석하기
게임 서버 성능 분석하기
 
혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버
 
Python과 AWS를 이용하여 게임 테스트 환경 구축하기
Python과 AWS를 이용하여 게임 테스트 환경 구축하기Python과 AWS를 이용하여 게임 테스트 환경 구축하기
Python과 AWS를 이용하여 게임 테스트 환경 구축하기
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
 
게임 운영에 필요한 로그성 데이터들에 대하여
게임 운영에 필요한 로그성 데이터들에 대하여게임 운영에 필요한 로그성 데이터들에 대하여
게임 운영에 필요한 로그성 데이터들에 대하여
 

PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교

  • 1. PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교 아이펀팩토리 문대경 (dkmoon@ifunfactory.com) Inven Game Conference
  • 2. 0 Overview 왕년에 CD/DVD 좀 구워 보셨습니까?
  • 4. 0 Overview Napster 이야기  Sean Fanning, Sean Parker 등으로부터 1999년 서비스 시작  최대 8천만 명의 등록 유저  미공개 음원 유통으로 Metallica 로부터 “너 고소”  Dr. Dre 의 저작물 삭제 요청 무시로 “너 고소”  유저들의 저작권 위반 방조 이유로 A&M Records 로부터 “너 고소”  … (연속 고소미 콤보)  유저의 저작권 위반 행위를 적극적으로 방지하라는 법원 명령에 2001년 서비스 종료
  • 5. 0 Overview Napster 동작 방식 냅스터의 인덱싱 서버 ① 보유한 MP3 파일명과 자신의 IP 주소 등록 ② 노래 검색 ③ 저장된 파일명 DB를 이용해 검색 매칭 후 MP3 보유 컴퓨터 IP 반환 ④ 파일 전송 요청
  • 6. 1 Client-Server Model vs. Peer-to-Peer Model 기존 서비스 구성 방법의 특징 • Centralized: 모든 정보는 중앙에 집중됨 • Managed: 전담 관리자가 서비스를 관리함
  • 7. 1 Napster 의 클라이언트-서버 통신 부분 냅스터의 인덱싱 서버 클라이언트-서버 통신 Client-Server Model vs. Peer-to-Peer Model
  • 8. 1 Napster 의 사용자간 통신 부분 (P2P) 냅스터의 인덱싱 서버 사용자간 통신 Client-Server Model vs. Peer-to-Peer Model
  • 9. 1 기존 서비스 아키텍처와의 차이점  Decentralized: 정보는 흩어져 있음  Unmanaged: 전담 관리자가 존재하지 않음 Client-Server Model vs. Peer-to-Peer Model
  • 10. 1 기존 서비스 아키텍처와의 차이점  Decentralized: 정보는 흩어져 있음  Unmanaged: 전담 관리자가 존재하지 않음 변화의 동기  운영 비용 문제 Client-Server Model vs. Peer-to-Peer Model
  • 11. 1 Client-Server Model Client-Server Model vs. Peer-to-Peer Model
  • 12. 1 Client-Server Model Pros  Centralized: 서비스 변경이 쉬움  Managed: 안정적인 서비스 가능 Client-Server Model vs. Peer-to-Peer Model
  • 13. 1 Client-Server Model Pros  Centralized: 서비스 변경이 쉬움  Managed: 안정적인 서비스 가능 Cons  서버 과부하  네트워크 과부하 Client-Server Model vs. Peer-to-Peer Model
  • 14. 1 Peer-to-Peer Model Client-Server Model vs. Peer-to-Peer Model
  • 15. 1 Peer-to-Peer Model → 참여자간 품앗이 Client-Server Model vs. Peer-to-Peer Model
  • 16. 1 P2P 관련 잘못된 믿음 #1 P2P 는 사용자들끼리 통신하는 것이다. Client-Server Model vs. Peer-to-Peer Model
  • 17. 1 P2P 관련 잘못된 믿음 #1 P2P 는 사용자들끼리 통신하는 것이다.  클러스터링을 위해 서버간 P2P 망을 구성할 수도 있다. 예) 로그인한 유저 정보를 REDIS 에 몰아서 저장하기 vs. 로그인한 유저 정보를 서버들 각각이 저장하기  P2P 는 중앙집중 요소를 없애는 범용 테크닉임 Client-Server Model vs. Peer-to-Peer Model
  • 19. 2 Peer-to-Peer Application P2P 응용의 확장 파일 공유 컴퓨팅 파워 공유 (분산 처리)
  • 20. 2 Peer-to-Peer Application P2P 응용의 확장 파일 공유 컴퓨팅 파워 공유 (분산 처리) 네트워크 공유 (라우팅)
  • 21. 3 Overlay Network by P2P P2P의 라우팅에서의 응용 인터넷 inter + net (망 사이의 연결) 망 사이의 패킷 전달 규칙 = 정책 기반 라우팅 (policy-based routing) = 효율성과 관계없이 정책에 따라 패킷을 보냄 (특정 국가를 우회하거나, 특정 망 사업자를 선호하거나..) 망사업자 A 망사업자 C 망사업자 B 망사업자 D
  • 22. 3 Overlay Network by P2P P2P 를 통한 정책 기반 라우팅 극복 A 서버 클라 쓰리쿠숀 클라 (라우터로 동작) B C D E 기본 라우팅 규칙에 따른 경로 P2P 로 다른 클라 에게 패킷을 릴레이 하는 경우 경로
  • 23. 3 Overlay Network by P2P P2P의 라우팅에서의 응용 A CB D 서버 클라 클라 클라들이 같은 망 사업자에 연결된 경우도 당연히 유용하다. 서버까지 갔다 오는 경로 직접 클라로 가는 경로
  • 24. 0 P2P 관련 잘못된 믿음 #2 P2P 가 더 빠르다. Overlay Network by P2P
  • 25.  Topology 에 따라 그럴 수도 있고 아닐 수도 있다. 0 P2P 관련 잘못된 믿음 #2 P2P 가 더 빠르다. CB A 서버 클라 클라 Overlay Network by P2P
  • 26. 3 Overlay Network by P2P 2000 년대 중반까지의 P2P 연구 전성기 라우팅 우회라는 네트워크적 효용성으로 2000년대 중반까지 P2P 관련 수많은 연구가 쏟아짐 (CAN, Pastry, Tapestry, Chord, Kademila, BitTorrent, …) 참고: 물리 네트워크 위에 다시 논리 네트워크를 만든 것 같다 하여 오버레이 네트워크 (Overlay Network) 이라 함
  • 27. 4 Issues Related to Peer-to-Peer Approach P2P 연구의 난제들 P2P 프로토콜 설계/구현에서의 난제들 1. 통신할 상대방 찾기 (resource discovery) 2. 참여자의 들락날락거림 처리 (churn handling) 3. 품앗이에서 치팅 방지 (fairness enforcement) 4. 통신 채널 보장하기 (NAT traversal)
  • 28. 4 P2P 연구의 난제 #1 - 통신할 상대방 찾기 Q1. 전체 사용자 풀에서 어떻게 통신 대상을 찾아낼 것인가? Approach 1. Directory (e.g., Napster) 인덱싱 서버 ① 보유한 MP3 파일명과 자신의 IP 주소 등록 ② 노래 검색 ③ 저장된 파일명 DB를 이용해 검색 매칭 후 MP3 보유 컴퓨터 IP 반환 ④ 파일 전송 요청 Issues Related to Peer-to-Peer Approach
  • 29. 4 P2P 연구의 난제 #1 - 통신할 상대방 찾기 인덱싱 서버 ① 보유한 MP3 파일명과 자신의 IP 주소 등록 ② 노래 검색 ③ 저장된 파일명 DB를 이용해 검색 매칭 후 MP3 보유 컴퓨터 IP 반환 ④ 파일 전송 요청 Approach 1. Directory (e.g., Napster) Pros: Simplicity (통신 방식이 단순함) Cons: Single point of failure (디렉토리에 과부하나 오류 발생한다면?) Issues Related to Peer-to-Peer Approach Q1. 전체 사용자 풀에서 어떻게 통신 대상을 찾아낼 것인가?
  • 30. 4 P2P 연구의 난제 #1 - 통신할 상대방 찾기 Approach 2. Broadcasting (e.g., Gnutella) … … 박효신 Issues Related to Peer-to-Peer Approach Q1. 전체 사용자 풀에서 어떻게 통신 대상을 찾아낼 것인가?
  • 31. 4 P2P 연구의 난제 #1 - 통신할 상대방 찾기 … … 박효신 Approach 2. Broadcasting (e.g., Gnutella) Issues Related to Peer-to-Peer Approach Q1. 전체 사용자 풀에서 어떻게 통신 대상을 찾아낼 것인가?
  • 32. 4 P2P 연구의 난제 #1 - 통신할 상대방 찾기 … … 박효신 Approach 2. Broadcasting (e.g., Gnutella) Issues Related to Peer-to-Peer Approach Q1. 전체 사용자 풀에서 어떻게 통신 대상을 찾아낼 것인가?
  • 33. 4 P2P 연구의 난제 #1 - 통신할 상대방 찾기 … … 박효신 저요! Approach 2. Broadcasting (e.g., Gnutella) Issues Related to Peer-to-Peer Approach Q1. 전체 사용자 풀에서 어떻게 통신 대상을 찾아낼 것인가?
  • 34. 4 P2P 연구의 난제 #1 - 통신할 상대방 찾기 … … 박효신 저요! Approach 2. Broadcasting (e.g., Gnutella) Issues Related to Peer-to-Peer Approach Q1. 전체 사용자 풀에서 어떻게 통신 대상을 찾아낼 것인가?
  • 35. 4 P2P 연구의 난제 #1 - 통신할 상대방 찾기 … … Approach 2. Broadcasting (e.g., Gnutella) Issues Related to Peer-to-Peer Approach Q1. 전체 사용자 풀에서 어떻게 통신 대상을 찾아낼 것인가?
  • 36. 4 P2P 연구의 난제 #1 - 통신할 상대방 찾기 … … 박효신 Approach 2. Broadcasting Pros: Simplicity (별도의 state 관리가 필요없음) Cons: Query storms (사용자는 모든 쿼리를 다 받는다) Issues Related to Peer-to-Peer Approach Q1. 전체 사용자 풀에서 어떻게 통신 대상을 찾아낼 것인가?
  • 37. 4 P2P 연구의 난제 #1 - 통신할 상대방 찾기 Approach 3. Cascaded directory Approach 4. Distributed Hash Table (DHT) … Issues Related to Peer-to-Peer Approach Q1. 전체 사용자 풀에서 어떻게 통신 대상을 찾아낼 것인가?
  • 38. 4 P2P 연구의 난제 #2 – Churn 처리 Q2. 사용자 풀 변화에도 어떻게 계속 통신할 것인가? Case 1: 중간 노드가 죽었다면? … … 박효신 저요! ? Issues Related to Peer-to-Peer Approach
  • 39. 4 P2P 연구의 난제 #2 – Churn 처리 Case 2: 새 노드가 들어왔다면? … … 문대경 저요! ? Issues Related to Peer-to-Peer Approach Q2. 사용자 풀 변화에도 어떻게 계속 통신할 것인가?
  • 40. 4 P2P 연구의 난제 #2 – Churn 처리 … … 문대경 저요! ?  Churn 처리는 결국 state 관리를 의미한다.  Churn 의 영향을 줄이기 위해서는 가급적 적은 state 만 관리해야 된다.  그러나 discovery 속도를 올리기 위해서는 가급적 많은 state 가 유리하다.  따라서 churn 처리와 discovery 성능 둘을 동시에 만족시키는 것은 매우 어렵다. Issues Related to Peer-to-Peer Approach Q2. 사용자 풀 변화에도 어떻게 계속 통신할 것인가?
  • 41. 4 P2P 연구의 난제 #3 – 치팅 방지하기 Q3. 이기적인 사용자가 있는 경우 어떻게 할까? Issues Related to Peer-to-Peer Approach
  • 42. 4 P2P 연구의 난제 #3 – 치팅 방지하기  P2P 는 품앗이 방식으로 동작한다.  따라서 모든 사용자가 이기적으로 행동할 경우 service collapse 가 발생한다.  이기적인 행동을 제재하거나 정당하게 행동하도록 동기부여가 필요하다. 그런데 어떻게? -_- Issues Related to Peer-to-Peer Approach Q3. 이기적인 사용자가 있는 경우 어떻게 할까?
  • 43. 4 P2P 연구의 난제 #3 – 치팅 방지하기  P2P 는 품앗이 방식으로 동작한다.  따라서 모든 사용자가 이기적으로 행동할 경우 service collapse 가 발생한다.  이기적인 행동을 제재하거나 정당하게 행동하도록 동기부여가 필요하다. 그런데 어떻게? -_- Issues Related to Peer-to-Peer Approach Q3. 이기적인 사용자가 있는 경우 어떻게 할까?
  • 44. 4 P2P 연구의 난제 #3 – 치팅 방지하기  P2P 는 품앗이 방식으로 동작한다.  따라서 모든 사용자가 이기적으로 행동할 경우 service collapse 가 발생한다.  이기적인 행동을 제재하거나 정당하게 행동하도록 동기부여가 필요하다. 그런데 어떻게? -_- Issues Related to Peer-to-Peer Approach Q3. 이기적인 사용자가 있는 경우 어떻게 할까?
  • 45. 4 P2P 연구의 난제 #4 – 연결 보장하기 Issues Related to Peer-to-Peer Approach Q4. 사용자간 연결은 어떻게 보장하나?
  • 46. 4 P2P 연구의 난제 #4 – 연결 보장하기 Issues Related to Peer-to-Peer Approach Q4. 사용자간 연결은 어떻게 보장하나? IPv4 주소는 32bit 를 사용하므로 2^32 = 약 40억개만 사용 가능하다.
  • 47. 4 P2P 연구의 난제 #4 – 연결 보장하기 Issues Related to Peer-to-Peer Approach Q4. 사용자간 연결은 어떻게 보장하나? 128bit 주소 체계인 IPv6 도입이 지지부진한 틈을 타 NAT 장비를 통한 “사설 IP” 가 일반화됨 그리고 NAT 는 외부에서의 선진입을 허용하지 않는다. 이미지 출처: iptime
  • 48. 4 P2P 연구의 난제 #4 – 연결 보장하기 Issues Related to Peer-to-Peer Approach Q4. 사용자간 연결은 어떻게 보장하나? 128bit 주소 체계인 IPv6 도입이 지지부진한 틈을 타 NAT 장비를 통한 “사설 IP” 가 일반화됨 그리고 NAT 는 외부에서의 선진입을 허용하지 않음 이미지 출처: iptime
  • 49. 4 P2P 연구의 난제 #4 – 연결 보장하기 Issues Related to Peer-to-Peer Approach Hole Punching: NAT 에 구멍 뚫기 이미지 출처: iconfinder.com 클라 A 클라 B NAT (공유기)
  • 50. 4 P2P 연구의 난제 #4 – 연결 보장하기 Issues Related to Peer-to-Peer Approach Hole Punching: NAT 에 구멍 뚫기 이미지 출처: iconfinder.com 클라 A 클라 B NAT (공유기) NAT traversal server (E.g., STUN)
  • 51. 4 P2P 연구의 난제 #4 – 연결 보장하기 Issues Related to Peer-to-Peer Approach Hole Punching: NAT 에 구멍 뚫기 이미지 출처: iconfinder.com 클라 A 클라 B 사설 IP 공인 IP NAT (공유기) NAT traversal server (E.g., STUN)
  • 52. 4 P2P 연구의 난제 #4 – 연결 보장하기 Issues Related to Peer-to-Peer Approach Hole Punching: NAT 에 구멍 뚫기 이미지 출처: iconfinder.com 클라 A 클라 B 사설 IP 공인 IP NAT (공유기) NAT traversal server (E.g., STUN)
  • 53. 4 P2P 연구의 난제 #4 – 연결 보장하기 Issues Related to Peer-to-Peer Approach Hole Punching: NAT 에 구멍 뚫기 이미지 출처: iconfinder.com 클라 A 클라 B 사설 IP 공인 IP NAT (공유기) NAT traversal server (E.g., STUN) ① 외부로 나갈 때 사설 IP, port 가 공인 IP, port 로 변환됨
  • 54. 4 P2P 연구의 난제 #4 – 연결 보장하기 Issues Related to Peer-to-Peer Approach Hole Punching: NAT 에 구멍 뚫기 이미지 출처: iconfinder.com 클라 A 클라 B 사설 IP 공인 IP NAT (공유기) NAT traversal server (E.g., STUN) A 공인 IP, port 기록 ② 디렉토리 서버는 패킷으로부터 A 의 공인 IP, port 기록
  • 55. 4 P2P 연구의 난제 #4 – 연결 보장하기 Issues Related to Peer-to-Peer Approach Hole Punching: NAT 에 구멍 뚫기 이미지 출처: iconfinder.com 클라 A 클라 B 사설 IP 공인 IP NAT (공유기) NAT traversal server (E.g., STUN) A 공인 IP, port 기록 ③ B 는 디렉토리 서버에서 A 의 공인 IP, port 파악
  • 56. 4 P2P 연구의 난제 #4 – 연결 보장하기 Issues Related to Peer-to-Peer Approach Hole Punching: NAT 에 구멍 뚫기 이미지 출처: iconfinder.com 클라 A 클라 B 사설 IP 공인 IP NAT (공유기) NAT traversal server (E.g., STUN) A 공인 IP, port 기록 ④ B 는 A 의 공인 IP, port 로 접속
  • 57. 4 P2P 연구의 난제 #4 – 연결 보장하기 Issues Related to Peer-to-Peer Approach NAT 의 문제: 표준이 없음
  • 58. 4 P2P 연구의 난제 #4 – 연결 보장하기 Issues Related to Peer-to-Peer Approach 이미지 출처: iconfinder.com 클라 A 클라 B 사설 IP 공인 IP NAT (공유기) NAT traversal server (E.g., STUN) ① 외부로 나갈 때 사설 IP, port 가 공인 IP, port 로 변환됨 NAT 의 문제: 표준이 없음
  • 59. 4 P2P 연구의 난제 #4 – 연결 보장하기 Issues Related to Peer-to-Peer Approach Full cone NAT Address-restricted conn NAT Port-restricted conn NAT Symmetric NAT NAT 의 문제: 표준이 없음
  • 60. 4 P2P 연구의 난제 #4 – 연결 보장하기 Issues Related to Peer-to-Peer Approach Full cone NAT Address-restricted conn NAT Port-restricted conn NAT Symmetric NAT모두 각각의 NAT 뒤에 있을 때 P2P 통신 불가 NAT 의 문제: 표준이 없음
  • 61. 4 Issues Related to Peer-to-Peer Approach 둘 다 NAT 뒤에 있으면 랑데부 방식의 릴레이 서버를 이용한다 클라 A 클라 B NAT (공유기) 릴레이 서버 (e.g., TURN) NAT (공유기) P2P 관련 잘못된 믿음 #3
  • 62. 4 Issues Related to Peer-to-Peer Approach 둘 다 NAT 뒤에 있으면 랑데부 방식의 릴레이 서버를 이용한다 P2P 관련 잘못된 믿음 #3 ① 동작 ② 판정 ③ 결과전송③ 결과전송 클라이언트 클라이언트 게임 서버 ① 동작 ② 판정 ③ 결과전송 클라이언트 클라이언트 (리슨 서버) 게임 서버 ① 동작 ② 전달(동작) ③ 판정 ③ 전달(결과)④ 결과 전송 클라이언트 클라이언트 (리슨 서버) 릴레이 서버 1. 클라이언트-서버 모델 2. 직접 통신 가능한 P2P 모델 3. 릴레이를 통하는 P2P 모델
  • 63. 4 Peer-to-Peer 요약 → 참여자간 품앗이 Issues Related to Peer-to-Peer Approach
  • 64. 4 Peer-to-Peer 요약 → 참여자간 품앗이 Pros  서버 부하 감소라는 확실한 이점  라우팅 우회라는 잠재적 이점 Issues Related to Peer-to-Peer Approach
  • 65. 4 Peer-to-Peer 요약 → 참여자간 품앗이 Pros  서버 부하 감소라는 확실한 이점  라우팅 우회라는 잠재적 이점 Cons  Discovery, Churn, Fairness 어려움  NAT traversal 표준의 부재 Issues Related to Peer-to-Peer Approach
  • 66. 5 Peer-to-Peer in Gaming 게임에 P2P 의 도입 상업적으로 성공한 첫 P2P 게임
  • 67. 5 Peer-to-Peer in Gaming 게임에 P2P 의 도입 BnB 클라 BnB 클라 BnB 서버 ① P2P 가능 시 이동 패킷 전송 ① 검증용으로 서버에도 전송 ② 검증 ③ 위치 보정에 참고
  • 68. 5 Peer-to-Peer in Gaming PC 온라인 게임과 모바일 게임의 네트워크적 가정의 차이 PC 온라인 게임 모바일 게임 동작 환경 유선 초고속 인터넷 3G/LTE 모바일 망 WiFi 연결 안정성 끊김 드묾 망 간 이동에 따른 끊김 빈번 대역폭 xDSL, FTTH, Giga lan 3G, LTE 딜레이 < 100 msec RTT 왔다갔다하는 RTT (jitter) NAT 제약 저가 가정용 공유기 고가 이통사 장비
  • 69. PC 온라인 게임 모바일 게임 동작 환경 유선 초고속 인터넷 3G/LTE 모바일 망 WiFi 연결 안정성 끊김 드묾 망 간 이동에 따른 끊김 빈번 대역폭 xDSL, FTTH, Giga lan 3G, LTE 딜레이 < 100 msec RTT 왔다갔다하는 RTT (jitter) NAT 제약 저가 가정용 공유기 고가 이통사 장비 5 Peer-to-Peer in Gaming PC 온라인 게임과 모바일 게임의 네트워크적 가정의 차이 네트워크적 가정의 차이로 모바일에서의 P2P 게임 개발은 PC 온라인과는 크게 다름!! 보다 정확히는 모바일 망에서의 P2P 개발은 유선망과 다름을 의미
  • 70. PC 온라인 게임 모바일 게임 동작 환경 유선 초고속 인터넷 3G/LTE 모바일 망 WiFi 연결 안정성 끊김 드묾 망 간 이동에 따른 끊김 빈번 대역폭 xDSL, FTTH, Giga lan 3G, LTE 딜레이 < 100 msec RTT 왔다갔다하는 RTT (jitter) NAT 제약 저가 가정용 공유기 고가 이통사 장비 5 Peer-to-Peer in Gaming PC 온라인 게임과 모바일 게임의 네트워크적 가정의 차이 네트워크적 가정의 차이로 모바일에서의 P2P 게임 개발은 PC 온라인과는 크게 다름!! 보다 정확히는 모바일 망에서의 P2P 개발은 유선망과 다름을 의미
  • 71. 5 Peer-to-Peer in Gaming 유선 환경에서의 P2P 대응 룸-로비 방식의 게임에 주로 사용됨 따라서 discovery 는 결국 matchmaking 과 동일함 이 부분만 directory service 를 이용하는 client-server 모델을 주로 활용 Discovery
  • 72. 5 Peer-to-Peer in Gaming 유선 환경에서의 P2P 대응 룸-로비 방식의 게임에 주로 사용됨 따라서 discovery 는 결국 matchmaking 과 동일함 이 부분만 directory service 를 이용하는 client-server 모델을 주로 활용 유선 네트워크는 연결이 끊기는 일이 거의 없음 따라서 갑자기 나가는 경우에 대한 처리는 방폭 형태로 처리 만들어진 방에 난입하는 기획이 아닌 한 갑자기 들어올 수도 없음 Discovery Churn
  • 73. 5 Peer-to-Peer in Gaming 유선 환경에서의 P2P 대응 룸-로비 방식의 게임에 주로 사용됨 따라서 discovery 는 결국 matchmaking 과 동일함 이 부분만 directory service 를 이용하는 client-server 모델을 주로 활용 유선 네트워크는 연결이 끊기는 일이 거의 없음 따라서 갑자기 나가는 경우에 대한 처리는 방폭 형태로 처리 만들어진 방에 난입하는 기획이 아닌 한 갑자기 들어올 수도 없음 사용자가 치팅을 하지 않도록 유도하는 것은 불가능함 그러나 안정적인 유선 네트워크 특성상 작은 이상 행동도 확인 가능 Discovery Churn Fairness
  • 74. 5 Peer-to-Peer in Gaming 유선 환경에서의 P2P 대응 룸-로비 방식의 게임에 주로 사용됨 따라서 discovery 는 결국 matchmaking 과 동일함 이 부분만 directory service 를 이용하는 client-server 모델을 주로 활용 유선 네트워크는 연결이 끊기는 일이 거의 없음 따라서 갑자기 나가는 경우에 대한 처리는 방폭 형태로 처리 만들어진 방에 난입하는 기획이 아닌 한 갑자기 들어올 수도 없음 사용자가 치팅을 하지 않도록 유도하는 것은 불가능함 그러나 안정적인 유선 네트워크 특성상 작은 이상 행동도 확인 가능 가정용 공유기의 NAT 구현은 복잡도가 크지 않음 Discovery Churn Fairness NAT Traversal
  • 75. 5 Peer-to-Peer in Gaming 모바일 망 환경에서의 P2P 대응 유선 환경과 마찬가지로, 룸-로비 방식의 게임에 주로 사용됨Discovery
  • 76. 5 Peer-to-Peer in Gaming 모바일 망 환경에서의 P2P 대응 유선 환경과 마찬가지로, 룸-로비 방식의 게임에 주로 사용됨 수시로 네트워크 단절 가능 따라서 유선처럼 방폭 형태로 처리할 경우 게임 진행 불가 서버 역할의 클라 단절에 대비한 state replication 필요 그러나 게임처럼 딜레이에 민감한 응용에서 이는 어려움 Discovery Churn
  • 77. 5 Peer-to-Peer in Gaming 모바일 망 환경에서의 P2P 대응 유선 환경과 마찬가지로, 룸-로비 방식의 게임에 주로 사용됨 수시로 네트워크 단절 가능 따라서 유선처럼 방폭 형태로 처리할 경우 게임 진행 불가 서버 역할의 클라 단절에 대비한 state replication 필요 그러나 게임처럼 딜레이에 민감한 응용에서 이는 어려움 모바일 망은 딜레이나 단절에 더 관대한 처리를 해야 되는데, 이 틈을 이용해 치팅이 가능해짐 Discovery Churn Fairness
  • 78. 5 Peer-to-Peer in Gaming 모바일 망 환경에서의 P2P 대응 유선 환경과 마찬가지로, 룸-로비 방식의 게임에 주로 사용됨 수시로 네트워크 단절 가능 따라서 유선처럼 방폭 형태로 처리할 경우 게임 진행 불가 서버 역할의 클라 단절에 대비한 state replication 필요 그러나 게임처럼 딜레이에 민감한 응용에서 이는 어려움 모바일 망은 딜레이나 단절에 더 관대한 처리를 해야 되는데, 이 틈을 이용해 치팅이 가능해짐 이통사는 주파수 자원의 효율적 운용을 위해 더욱 복잡한 NAT 를 사용 기존의 홀펀칭으로는 NAT 극복 불가능 랑데부 방식의 릴레이 사용은 추가적인 딜레이를 유발 Discovery Churn Fairness NAT Traversal
  • 79. 6 Summary 결론  P2P 는 파일 공유에서 일반적으로 활용된 기법  부하 분산이라는 강력한 특성을 가지고 있음  라우팅 우회라는 특성 덕분에 overlay 등의 네트워크 응용에 활용  게임에서도 이런 네트워크적 특성때문에 도입  그러나 P2P 가 반드시 빠른 연결을 보장하지는 않음  또한 모바일 망 환경에서 P2P 게임 구현은 힘듦
  • 80. 감사합니다 아 이 펀 팩 토 리 문 대 경