ݺߣ

ݺߣShare a Scribd company logo
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 (20)

홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
devCAT Studio, NEXON
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
devCAT Studio, NEXON
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가
Seungmo Koo
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
Chanwoong Kim
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
강 민우
Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theorem
Seungmo Koo
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
DongMin Choi
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
Heungsub Lee
중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직
Hoyoung Choi
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
MinGeun Park
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
Heungsub Lee
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
Xionglong Jin
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
devCAT Studio, NEXON
라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성
Hyunjik Bae
게임 디자이너와 게임 서버
게임 디자이너와 게임 서버게임 디자이너와 게임 서버
게임 디자이너와 게임 서버
ByungChun2
게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP
Seungmo Koo
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
QooJuice
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기
Seungjae 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 IOCP
Seungmo Koo
Windows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance ComparisonWindows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance Comparison
Seungmo Koo
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
devCAT Studio, NEXON
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
devCAT Studio, NEXON
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가
Seungmo Koo
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
Chanwoong Kim
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
강 민우
Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theorem
Seungmo Koo
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
DongMin Choi
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
Heungsub Lee
중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직
Hoyoung Choi
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
MinGeun Park
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
Heungsub Lee
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
Xionglong Jin
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
devCAT Studio, NEXON
라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성
Hyunjik Bae
게임 디자이너와 게임 서버
게임 디자이너와 게임 서버게임 디자이너와 게임 서버
게임 디자이너와 게임 서버
ByungChun2
게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP
Seungmo Koo
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
QooJuice
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기
Seungjae 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 IOCP
Seungmo Koo
Windows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance ComparisonWindows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance Comparison
Seungmo Koo

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

[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 situation
Jonghyon 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 Camp
MookeunJi
웹기반원격감시제어 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
Quic을 이용한 네트워크 성능 개선
 Quic을 이용한 네트워크 성능 개선 Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선
NAVER D2
멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면
Byeongsu Kang
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
SU BO KIM
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
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
201702-Oracle Container Cloud Service
201702-Oracle Container Cloud Service201702-Oracle Container Cloud Service
201702-Oracle Container Cloud Service
오라클 클라우드
Oracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker OverviewOracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker Overview
Taewan Kim
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
iFunFactory Inc.
[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 situation
Jonghyon 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 Camp
MookeunJi
웹기반원격감시제어 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
Quic을 이용한 네트워크 성능 개선
 Quic을 이용한 네트워크 성능 개선 Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선
NAVER D2
멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면
Byeongsu Kang
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
SU BO KIM
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
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 Overview
Taewan Kim
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
iFunFactory Inc.

More from Hyunjik Bae (7)

웹서버와 ProudNet 서버간 상호작용 가이드
웹서버와 ProudNet 서버간 상호작용 가이드웹서버와 ProudNet 서버간 상호작용 가이드
웹서버와 ProudNet 서버간 상호작용 가이드
Hyunjik Bae
Unity에서 회전하는 cube 만드는 법
Unity에서 회전하는 cube 만드는 법Unity에서 회전하는 cube 만드는 법
Unity에서 회전하는 cube 만드는 법
Hyunjik Bae
웹서버와 프라우드넷 서버간 상호작용 가이드
웹서버와 프라우드넷 서버간 상호작용 가이드웹서버와 프라우드넷 서버간 상호작용 가이드
웹서버와 프라우드넷 서버간 상호작용 가이드
Hyunjik Bae
프라우드넷의 IL2CPP 적응 기록-정종채
프라우드넷의 IL2CPP 적응 기록-정종채프라우드넷의 IL2CPP 적응 기록-정종채
프라우드넷의 IL2CPP 적응 기록-정종채
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
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
Hyunjik Bae
웹서버와 ProudNet 서버간 상호작용 가이드
웹서버와 ProudNet 서버간 상호작용 가이드웹서버와 ProudNet 서버간 상호작용 가이드
웹서버와 ProudNet 서버간 상호작용 가이드
Hyunjik Bae
Unity에서 회전하는 cube 만드는 법
Unity에서 회전하는 cube 만드는 법Unity에서 회전하는 cube 만드는 법
Unity에서 회전하는 cube 만드는 법
Hyunjik Bae
웹서버와 프라우드넷 서버간 상호작용 가이드
웹서버와 프라우드넷 서버간 상호작용 가이드웹서버와 프라우드넷 서버간 상호작용 가이드
웹서버와 프라우드넷 서버간 상호작용 가이드
Hyunjik Bae
프라우드넷의 IL2CPP 적응 기록-정종채
프라우드넷의 IL2CPP 적응 기록-정종채프라우드넷의 IL2CPP 적응 기록-정종채
프라우드넷의 IL2CPP 적응 기록-정종채
Hyunjik Bae
KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론
Hyunjik Bae
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
Hyunjik Bae

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

  • 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 은 기존에 접속했던 서버 머신 에서만 정상 작동 합니다.