SlideShare a Scribd company logo
1 of 24
2015. 09. 10 / 넷텐션㈜
혁신 / 정도 / 인내
피어간 통신 & 연결 유지 기능
개발팀 / 윤현민
프라우드넷의 피어간 통신 Overview
• Peer to Peer 그룹 기능
• Just In Time(JIT) 홀펀칭
• 메시지 통신 경로 제어
• Reliable UDP(RUDP)
Peer To Peer 그룹이란?
• Peer 간 통신을 위하여 그룹 개념을
사용합니다.
• 클라이언트들은 원하는 그룹에 가입하여
피어간 Direct 통신을 할 수 있습니다.
(Default 로 다른 Peer에게 메시지를 전송
하면 서버를 통하여 전송 됩니다.)
• 개발자는 걱정 없이 그룹 가입 직후 바로
통신을 하여도 됩니다.
P2P 그룹 프로세스
Just In Time(JIT) 홀펀칭
Unreliable 메시지 송신
Background 로 홀펀칭 시작
UDP 홀펀칭 랑데뷰서버 역할
홀펀칭 과정중에도 통신 가능!
메시지 통신 경로 제어
• 메시지 통신 경로 제어는 제일 윗 단에서
동작합니다.
• Relay, Direct P2P 통신의 속도를 실시간으
로 검사하여 최적의 경로로 통신을 합니다.
★ Relay 통신이 많아지면 서버의 부하 가 따를 수 있습니다.
이런 제어 옵션도 개발자에게 제공이 되어 On/Off 만으로
쉽게 사용할 수 있습니다.
Reliable UDP(RUDP)
• 다른 Peer에게 Reliable 메시지 전송 시
흔히 말하는 RUDP 를 내부적으로
사용합니다.
• TCP Stack을 그대로 구현 하였습니다.
- Slow Start
- Sliding Window
- Congestion Control
- Fast retransmission
- Etc.
이것만 알면 됩니다!
• 다른 Peer 에게 Reliable 메시지 전송 시
(P2P Group)
RUDP 로 송/수신
서로간 P2P 그룹 원인 상태
이것만 알면 됩니다!
• 다른 Peer 에게 Reliable 메시지 전송 시
(Non P2P Group)
서로간 P2P 그룹 원이 아닌 상태
To Server Relay 송/수신
피어간 통신 Q&A
Q. P2P 그룹에 여러 클라이언트가 있다면,
각 클라이언트마다 UDP 소켓이 할당 되나요?
A. Peer 간 UDP 소켓은 한 개만 사용 합니다.
피어간 통신 Q&A
Q. P2P 그룹의 Peer 간 Reliable 메시지 통신 중에
UDP 에 문제가 생기면 어떻게 되나요?
A. UDP 의 로스율이 심해지고 레이턴시가 심해지면
자동으로 Relay 통신으로 전환이 되므로
안심 하셔도 됩니다.
간단하게 보는 프라우드넷
메시지 처리 계층도
Message Route Control Layer
(메시지 통신 경로 제어)
ProudNet Protocol Layer
(RUDP, UDP Congestion Control, TCP Custom Layer 등
자체 개발 송/수신 프로토콜 처리)
Fallbackable Layer
(To Server TCP, UDP 통신 경로 제어)
1.7 신기능 연결 유지 기능
(Auto Connection Recovery – ACR)
연결 유지 기능 Overview
• 모바일 데이터 사용률 추이
• 셀룰러  WiFi 전환 시 문제점
• 연결 유지 기능(ACR) 이란?
• 앞으로 해결 해야 될 문제점
모바일 데이터 사용률 추이
• 무제한 요금제가 있지만 아직 WiFi 사용률이 더 높습니다.
• WiFi 의 신호 영역은 생각 외로 좁습니다.
2014년도 모바일 데이터 사용률 통계
따라서 개발자는 셀룰러  WiFi 핸드오버를
감안하고 프로그램을 개발 해야 합니다!
셀룰러  WiFi 전환 시 문제점
• 네트워크 핸드오버가 일어날 시에
응용 프로그램의 소켓은 모두 일제히
끊겨 버립니다.
• 더욱 큰 문제는 WiFi 의 신호가 약해져
셀룰러로 전환이 될 때, PC 의 랜선이
뽑힌 현상과 비슷한 상황이 연출 됩니다.
• 더 골치 아픈 건, 이 현상이 폰 기종마다
상이 하다는 겁니다!
개발 진행 중 문제점
• WiFi <-> 셀룰러 핸드오버 시, OS 는
네트워크 전환이 일어났지만
어플리케이션에서 일정시간 새로운
이더넷을 감지 하지 못합니다.
이 일정시간은 같은 OS 라 하더라도 폰 기종
마다 상이 합니다.
그래서 개발 했습니다!
연결 유지 기능(ACR) 이란?
• 프라우드넷 내부에서 네트워크 감지 기능으로 새로운
네트워크 전환 시 빠르게 재 접속을 시도 합니다.
• 연결이 끊겨 있던 상태에서 보냈던 메시지들도
재 접속 되었을 때, 송신을 보장 합니다.
• P2P 그룹 정보도 유지가 되며, 서버에
재 접속이 완료 되면 자동으로 홀펀칭을 시도 합니다.
• 개발자는 잠깐 레이턴시가 길어 졌다 생각하면 됩니
다.
연결 유지 기능(ACR) 이란?
약간의 전송 지연
Message Keeping,
Reconnection,
Authentication
User Layer
ProudNet
Layer
1. 네트워크 전환
User Layer
ProudNet
Layer
2. 재 연결
3. 재 인증 요청
4. 인증 확인
5. 전송 하지 못했던 패킷들 재전송
이 모든 것이 자동으로 동작 하며,
개발자는 이벤트 처리만 해주면 됩니다!
Client Event Method
Server Event Method
연결 유지 기능 시연 동영상
앞으로 해결 해야 될 문제점
• WiFi 수신 감도가 낮아 졌을 때.
• L4 스위치 or 로드 밸런서 지원
- 현재 ACR 은 기존에 접속했던 서버 머신 에서만
정상 작동 합니다.

More Related Content

What's hot

실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략YEONG-CHEON YOU
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가Seungmo Koo
 
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능Yongha Kim
 
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버준철 박
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀승명 양
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)Heungsub Lee
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013devCAT Studio, NEXON
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019devCAT Studio, NEXON
 
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델Seungmo Koo
 
[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유Hwan Min
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012devCAT Studio, NEXON
 
멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)Bongseok Cho
 
게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱Seungmo Koo
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기Jaeseung Ha
 
그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기Yongha Kim
 
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCNdc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCHo Gyu Lee
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉iFunFactory Inc.
 
게임 디자이너와 게임 서버
게임 디자이너와 게임 서버게임 디자이너와 게임 서버
게임 디자이너와 게임 서버ByungChun2
 
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)내훈 정
 
중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직Hoyoung Choi
 

What's hot (20)

실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가
 
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능
 
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
 
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
 
[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
 
멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)
 
게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
 
그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기
 
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCNdc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABC
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
 
게임 디자이너와 게임 서버
게임 디자이너와 게임 서버게임 디자이너와 게임 서버
게임 디자이너와 게임 서버
 
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
 
중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직
 

Viewers also liked

Unity에서 회전하는 cube 만드는 법
Unity에서 회전하는 cube 만드는 법Unity에서 회전하는 cube 만드는 법
Unity에서 회전하는 cube 만드는 법Hyunjik Bae
 
프라우드넷의 IL2CPP 적응 기록-정종채
프라우드넷의 IL2CPP 적응 기록-정종채프라우드넷의 IL2CPP 적응 기록-정종채
프라우드넷의 IL2CPP 적응 기록-정종채Hyunjik Bae
 
KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론Hyunjik Bae
 
라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성Hyunjik Bae
 
ProudNet 1.7 소개
ProudNet 1.7 소개ProudNet 1.7 소개
ProudNet 1.7 소개Hyunjik Bae
 
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직Hyunjik Bae
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조Hyunjik Bae
 

Viewers also liked (7)

Unity에서 회전하는 cube 만드는 법
Unity에서 회전하는 cube 만드는 법Unity에서 회전하는 cube 만드는 법
Unity에서 회전하는 cube 만드는 법
 
프라우드넷의 IL2CPP 적응 기록-정종채
프라우드넷의 IL2CPP 적응 기록-정종채프라우드넷의 IL2CPP 적응 기록-정종채
프라우드넷의 IL2CPP 적응 기록-정종채
 
KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론
 
라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성
 
ProudNet 1.7 소개
ProudNet 1.7 소개ProudNet 1.7 소개
ProudNet 1.7 소개
 
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조
 

Similar to 프라우드넷의 연결 유지 기능과 홀펀칭-윤현민

[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가NAVER D2
 
스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들Hyunjik Bae
 
글로벌 모바일 네트워크 환경 이해 Understanding global mobile network situation
글로벌 모바일 네트워크 환경 이해 Understanding global mobile network situation글로벌 모바일 네트워크 환경 이해 Understanding global mobile network situation
글로벌 모바일 네트워크 환경 이해 Understanding global mobile network situationJonghyon Sohn
 
모니터링 영역의 변천사_클라우드, 디지털 경험까지)
모니터링 영역의 변천사_클라우드, 디지털 경험까지)모니터링 영역의 변천사_클라우드, 디지털 경험까지)
모니터링 영역의 변천사_클라우드, 디지털 경험까지)IMQA
 
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항Ji-Woong Choi
 
장호상, 유재우 제안서 130327
장호상, 유재우 제안서 130327장호상, 유재우 제안서 130327
장호상, 유재우 제안서 130327호상 장
 
[1D5]모바일 p2p 미디어 스트리밍 방법
[1D5]모바일 p2p 미디어 스트리밍 방법[1D5]모바일 p2p 미디어 스트리밍 방법
[1D5]모바일 p2p 미디어 스트리밍 방법NAVER D2
 
SDN - 2018 Zeropage Devil's Camp
SDN - 2018 Zeropage Devil's CampSDN - 2018 Zeropage Devil's Camp
SDN - 2018 Zeropage Devil's CampMookeunJi
 
웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD활 김
 
1st SDN Interest Group Seminar - Session1 (121017)
1st SDN Interest Group Seminar - Session1 (121017)1st SDN Interest Group Seminar - Session1 (121017)
1st SDN Interest Group Seminar - Session1 (121017)NAIM Networks, Inc.
 
장애 분석 절차 (서영일)
장애 분석 절차 (서영일)장애 분석 절차 (서영일)
장애 분석 절차 (서영일)WhaTap Labs
 
스마트폰 위의 딥러닝
스마트폰 위의 딥러닝스마트폰 위의 딥러닝
스마트폰 위의 딥러닝NAVER Engineering
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
 
Quic을 이용한 네트워크 성능 개선
 Quic을 이용한 네트워크 성능 개선 Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선NAVER D2
 
멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면Byeongsu Kang
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)수보 김
 
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos uEngine Solutions
 
Oracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker OverviewOracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker OverviewTaewan Kim
 

Similar to 프라우드넷의 연결 유지 기능과 홀펀칭-윤현민 (20)

[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
 
스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들
 
글로벌 모바일 네트워크 환경 이해 Understanding global mobile network situation
글로벌 모바일 네트워크 환경 이해 Understanding global mobile network situation글로벌 모바일 네트워크 환경 이해 Understanding global mobile network situation
글로벌 모바일 네트워크 환경 이해 Understanding global mobile network situation
 
모니터링 영역의 변천사_클라우드, 디지털 경험까지)
모니터링 영역의 변천사_클라우드, 디지털 경험까지)모니터링 영역의 변천사_클라우드, 디지털 경험까지)
모니터링 영역의 변천사_클라우드, 디지털 경험까지)
 
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
 
장호상, 유재우 제안서 130327
장호상, 유재우 제안서 130327장호상, 유재우 제안서 130327
장호상, 유재우 제안서 130327
 
[1D5]모바일 p2p 미디어 스트리밍 방법
[1D5]모바일 p2p 미디어 스트리밍 방법[1D5]모바일 p2p 미디어 스트리밍 방법
[1D5]모바일 p2p 미디어 스트리밍 방법
 
SDN - 2018 Zeropage Devil's Camp
SDN - 2018 Zeropage Devil's CampSDN - 2018 Zeropage Devil's Camp
SDN - 2018 Zeropage Devil's Camp
 
웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD
 
1st SDN Interest Group Seminar - Session1 (121017)
1st SDN Interest Group Seminar - Session1 (121017)1st SDN Interest Group Seminar - Session1 (121017)
1st SDN Interest Group Seminar - Session1 (121017)
 
장애 분석 절차 (서영일)
장애 분석 절차 (서영일)장애 분석 절차 (서영일)
장애 분석 절차 (서영일)
 
스마트폰 위의 딥러닝
스마트폰 위의 딥러닝스마트폰 위의 딥러닝
스마트폰 위의 딥러닝
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
Quic을 이용한 네트워크 성능 개선
 Quic을 이용한 네트워크 성능 개선 Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선
 
멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos
 
Oracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker OverviewOracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker Overview
 
201702-Oracle Container Cloud Service
201702-Oracle Container Cloud Service201702-Oracle Container Cloud Service
201702-Oracle Container Cloud Service
 

Recently uploaded

캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 

Recently uploaded (6)

캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 

프라우드넷의 연결 유지 기능과 홀펀칭-윤현민

  • 1. 2015. 09. 10 / 넷텐션㈜ 혁신 / 정도 / 인내 피어간 통신 & 연결 유지 기능 개발팀 / 윤현민
  • 2. 프라우드넷의 피어간 통신 Overview • Peer to Peer 그룹 기능 • Just In Time(JIT) 홀펀칭 • 메시지 통신 경로 제어 • Reliable UDP(RUDP)
  • 3. Peer To Peer 그룹이란? • Peer 간 통신을 위하여 그룹 개념을 사용합니다. • 클라이언트들은 원하는 그룹에 가입하여 피어간 Direct 통신을 할 수 있습니다. (Default 로 다른 Peer에게 메시지를 전송 하면 서버를 통하여 전송 됩니다.) • 개발자는 걱정 없이 그룹 가입 직후 바로 통신을 하여도 됩니다.
  • 5. Just In Time(JIT) 홀펀칭 Unreliable 메시지 송신 Background 로 홀펀칭 시작 UDP 홀펀칭 랑데뷰서버 역할 홀펀칭 과정중에도 통신 가능!
  • 6. 메시지 통신 경로 제어 • 메시지 통신 경로 제어는 제일 윗 단에서 동작합니다. • Relay, Direct P2P 통신의 속도를 실시간으 로 검사하여 최적의 경로로 통신을 합니다. ★ Relay 통신이 많아지면 서버의 부하 가 따를 수 있습니다. 이런 제어 옵션도 개발자에게 제공이 되어 On/Off 만으로 쉽게 사용할 수 있습니다.
  • 7. Reliable UDP(RUDP) • 다른 Peer에게 Reliable 메시지 전송 시 흔히 말하는 RUDP 를 내부적으로 사용합니다. • TCP Stack을 그대로 구현 하였습니다. - Slow Start - Sliding Window - Congestion Control - Fast retransmission - Etc.
  • 8. 이것만 알면 됩니다! • 다른 Peer 에게 Reliable 메시지 전송 시 (P2P Group) RUDP 로 송/수신 서로간 P2P 그룹 원인 상태
  • 9. 이것만 알면 됩니다! • 다른 Peer 에게 Reliable 메시지 전송 시 (Non P2P Group) 서로간 P2P 그룹 원이 아닌 상태 To Server Relay 송/수신
  • 10. 피어간 통신 Q&A Q. P2P 그룹에 여러 클라이언트가 있다면, 각 클라이언트마다 UDP 소켓이 할당 되나요? A. Peer 간 UDP 소켓은 한 개만 사용 합니다.
  • 11. 피어간 통신 Q&A Q. P2P 그룹의 Peer 간 Reliable 메시지 통신 중에 UDP 에 문제가 생기면 어떻게 되나요? A. UDP 의 로스율이 심해지고 레이턴시가 심해지면 자동으로 Relay 통신으로 전환이 되므로 안심 하셔도 됩니다.
  • 12. 간단하게 보는 프라우드넷 메시지 처리 계층도 Message Route Control Layer (메시지 통신 경로 제어) ProudNet Protocol Layer (RUDP, UDP Congestion Control, TCP Custom Layer 등 자체 개발 송/수신 프로토콜 처리) Fallbackable Layer (To Server TCP, UDP 통신 경로 제어)
  • 13. 1.7 신기능 연결 유지 기능 (Auto Connection Recovery – ACR)
  • 14. 연결 유지 기능 Overview • 모바일 데이터 사용률 추이 • 셀룰러  WiFi 전환 시 문제점 • 연결 유지 기능(ACR) 이란? • 앞으로 해결 해야 될 문제점
  • 15. 모바일 데이터 사용률 추이 • 무제한 요금제가 있지만 아직 WiFi 사용률이 더 높습니다. • WiFi 의 신호 영역은 생각 외로 좁습니다. 2014년도 모바일 데이터 사용률 통계
  • 16. 따라서 개발자는 셀룰러  WiFi 핸드오버를 감안하고 프로그램을 개발 해야 합니다!
  • 17. 셀룰러  WiFi 전환 시 문제점 • 네트워크 핸드오버가 일어날 시에 응용 프로그램의 소켓은 모두 일제히 끊겨 버립니다. • 더욱 큰 문제는 WiFi 의 신호가 약해져 셀룰러로 전환이 될 때, PC 의 랜선이 뽑힌 현상과 비슷한 상황이 연출 됩니다. • 더 골치 아픈 건, 이 현상이 폰 기종마다 상이 하다는 겁니다!
  • 18. 개발 진행 중 문제점 • WiFi <-> 셀룰러 핸드오버 시, OS 는 네트워크 전환이 일어났지만 어플리케이션에서 일정시간 새로운 이더넷을 감지 하지 못합니다. 이 일정시간은 같은 OS 라 하더라도 폰 기종 마다 상이 합니다.
  • 20. 연결 유지 기능(ACR) 이란? • 프라우드넷 내부에서 네트워크 감지 기능으로 새로운 네트워크 전환 시 빠르게 재 접속을 시도 합니다. • 연결이 끊겨 있던 상태에서 보냈던 메시지들도 재 접속 되었을 때, 송신을 보장 합니다. • P2P 그룹 정보도 유지가 되며, 서버에 재 접속이 완료 되면 자동으로 홀펀칭을 시도 합니다. • 개발자는 잠깐 레이턴시가 길어 졌다 생각하면 됩니 다.
  • 21. 연결 유지 기능(ACR) 이란? 약간의 전송 지연 Message Keeping, Reconnection, Authentication User Layer ProudNet Layer 1. 네트워크 전환 User Layer ProudNet Layer 2. 재 연결 3. 재 인증 요청 4. 인증 확인 5. 전송 하지 못했던 패킷들 재전송
  • 22. 이 모든 것이 자동으로 동작 하며, 개발자는 이벤트 처리만 해주면 됩니다! Client Event Method Server Event Method
  • 23. 연결 유지 기능 시연 동영상
  • 24. 앞으로 해결 해야 될 문제점 • WiFi 수신 감도가 낮아 졌을 때. • L4 스위치 or 로드 밸런서 지원 - 현재 ACR 은 기존에 접속했던 서버 머신 에서만 정상 작동 합니다.