테스트 목적으로 나쁜 인터넷 연결을 어떻게 시뮬레이트 할 수 있습니까?


105

온라인 멀티 플레이어 게임을 개발 중입니다. 로컬 영역 네트워크에서 테스트 할 때 잘 작동하지만 릴리스하기 전에 서버에 잘 연결되지 않은 사람에게 사용자 경험이 어떻게 작동하는지 테스트하고 싶습니다. 로컬 환경에있을 때 높은 대기 시간, 낮은 대역폭, 지터 및 가끔씩 패킷이 손실되는 인터넷 연결 상태를 어떻게 시뮬레이트 할 수 있습니까?


69
테스트를 위해 나에게 보내십시오! 우리 나라의 연결은 기본적으로 끔찍합니다.
Stephan

7
훌륭한 목표. 나는 출판 된 스튜디오가 똑같이하기를 바란다. 에픽 게임즈, 당신을보고 있어요
Gusdor

7
Comcast를 사용하는 주변의 친구를 찾으십시오 ...
WernerCD

12
인터넷 연결 불량을 시뮬레이션 하면 현재 답변 등이 포함됩니다.
MichaelHouse

2
나는이 최근의 다른 SE 질문을 바로 생각했다 : superuser.com/questions/637594/…
Patrick M

답변:


63

나는 Dummynet 이 당신이 찾고있는 것이라고 생각 합니다. Dummynet은 대역폭 제한, 지연, 패킷 손실 등을 시뮬레이션 할 수있는 네트워크 에뮬레이션 도구입니다. 차단할 트래픽을 쉽게 선택하고 제한을 구성 할 수 있습니다 (예 : 들어오는 모든 TCP 트래픽을 2Mbit / s로 제한)

ipfw add pipe 2 in proto tcp
ipfw pipe 2 config bw 2Mbit/s

알려진 ipfw 방화벽에 의해 트래픽 선택이 이루어지고 파이프는 제한 기능을 제공합니다.

FreeBSD, Linux 및 Windows에서 사용할 수 있습니다.


Windows 루프백 어댑터와 함께 작동합니까?
Andriy Tylychko

내 자신의 질문에 대답하는 것은 아닙니다. 서명 된 드라이버 강화를 비활성화 한 후에도 Windows 8.1에서는 작동하지 않습니다.
Andriy Tylychko

@AndyT 루프백과 함께 작동하는 것을 찾았습니까? packloss와 루프백으로 작동하는 것을 찾는 것은 어려워 보입니다.
AaronLS

@AaronLS : 여기에 다른 답변을 참조하십시오 : gamedev.stackexchange.com/a/100779/4731
Andriy Tylychko

33

네트워크 링크 컨디셔너

Mac을 사용하는 경우 네트워크 링크 컨디셔너를 사용할 수 있습니다.

네트워크 링크 컨디셔너 환경 설정 창

Edge 및 3G를 포함하여 다양한 인터넷 연결 불량 사례를 시뮬레이션 할 수 있습니다.

또한 고유 한 설정으로 고유 한 프로파일을 만들 수 있습니다.

네트워크 링크 컨디셔너 사용자 정의 프로파일

Xcode에서 무료로 다운로드 할 수 있습니다 (Xcode → 개발자 도구 열기 → 추가 개발자 도구…로 이동하여 Xcode 용 하드웨어 IO 도구를 다운로드하십시오 ).


이 도구가 마음에 들지만 자동화 된 테스트에 사용할 수있는 도구가 필요합니다. 이를 위해 명령 행 인터페이스가 있는지 아는 사람이 있습니까?
Erik B

15

Linux를 사용하는 경우 netem 을 사용 하여 높은 대기 시간, 낮은 대역폭, 패킷 손실 및 기타 여러 가지 네트워크와 관련된 가능한 모든 문제를 시뮬레이션 할 수 있습니다 .

NetLimiter 라는 Windows 옵션 있지만 사용하지 않았으므로 보증 할 수 없습니다.

SlowlyApp 이라는 Mac 앱을 찾았 습니다 .


1
-1 다른 답변과 마찬가지로. 이것은 단지 링크입니다. 응용 프로그램의 기능 및 수행 방법에 대한 설명을 포함하도록 답변을 업데이트하십시오.
MichaelHouse

8
@ Byte56 :이 앱의 기능은 질문에서 요구하는 것처럼 느리거나 신뢰할 수없는 네트워크 연결을 시뮬레이션하는 것입니다. 나는 그들이 어떻게 하는지이 사이트의 범위를 벗어난 것이라고 확신 합니다 . 나는 이것이 질문에 대한 완벽하게 좋은 대답이라고 말하고 싶습니다. 문제가 있으면 답변이 아니라 문제에 있습니다.
Ilmari Karonen

1
기술적으로이 질문은 "잘못된 인터넷 연결을 어떻게 시뮬레이트 할 수 있습니까?"라고 묻습니다. 응용 프로그램을 요구하지 않습니다. 그러나 그렇습니다. 나는이 질문이이 사이트의 범위 밖이라고 생각합니다.
MichaelHouse


7

로컬 환경에있을 때 높은 대기 시간, 낮은 대역폭, 지터 및 가끔씩 패킷이 손실되는 인터넷 연결 상태를 어떻게 시뮬레이트 할 수 있습니까?

Windows를 사용하는 경우 SoftPerfect Connection Emulator를 사용해보십시오 . 기본적으로 선택한 NIC의 응용 프로그램과 네트워크 계층 (Wireshark / WinPCAP와 유사) 사이에 자신을 삽입하고 제한된 대역폭, 대기 시간, 패킷 손실 및 기타 사항을 시뮬레이션 할 수있는 드라이버입니다. UI는 간단하고 간단합니다.

이 제품은 상용 제품이지만이 시험판을 사용하면이 도구가 원하는 기능을 수행하는지 판단하기에 충분한 30 초의 "간섭"버스트를 수행 할 수 있습니다.

또 다른 크로스 플랫폼 옵션은 DummyNet인데 , 이는 ipfw를 통해 유사한 방식으로 작동하지만 사용하기가 덜 쉽습니다.

서버에 제대로 연결되지 않은 사람에게 사용자 경험이 어떻게 작동하는지 테스트하고 싶습니다.

질문의이 부분은 "응용 프로그램의 네트워크 대기 시간을 어떻게 처리합니까?" 일반적으로 사용되는 효과적인 기술 중 하나는 Dead Reckoning 입니다. 링크 된 기사는 내가 할 수있는 것보다 더 잘 설명하지만 기본 아이디어는 클라이언트가 각 엔티티가 있어야하는 위치와 알고리즘에 의해 수행해야하는 작업을 "시뮬레이션"하는 것입니다. 엔터티가이 알고리즘 (예 : 플레이어 입력, 서버 측 이벤트 등)에서 벗어날 때마다 각 클라이언트에 업데이트를 보냅니다.


5

한동안 사용해 본 적이 없지만 이것을 테스트하기 위해 Charles 를 사용 했습니다. "높은 대기 시간, 낮은 대역폭, 지터 및 가끔씩 패킷 손실이 발생하는 인터넷 연결 불량"과 같은 문제를 시뮬레이션하는 등 다양한 네트워크 진단 도구가있는 응용 프로그램입니다.


1
첫눈에 Charles는 일종의 HTTP 프록시처럼 보이므로 일반 TCP 또는 UDP 트래픽을 형성 할 수 없습니다. 뭔가 빠졌습니까?
vbo

그리고 심지어 +5를 얻었습니다.
Marian Paździoch

"일반 TCP 또는 UDP 트래픽 형성"의 의미를 잘 모르겠지만 OP가 요구 한 바를 정확하게 파악하기 위해이 도구를 사용하여 인터넷 연결 상태가 좋지 않았습니다.
jhocking

1
@jhocking 그는 HTTP 트래픽에서만 작동한다는 것을 의미합니다. 많은 실시간 게임은 TCP 또는 UDP를 사용합니다.
AaronLS

0

당신과 잘 아는 경우 피들러 , 당신이있어 에만 HTTP / 1 다음 스크립팅 할 수 있습니다이 관심.

Fiddler는 HTTP / 2를 지원하지 않으므로이를 차단하면 모든 HTTP 트래픽이 HTTP / 1로 다운 그레이드됩니다.


흥미 롭군 더 자세한 정보를 제공 할 수 있습니까? 어쩌면 예제 스크립트일까요?
필립

@Philipp이 답변 ( stackoverflow.com/a/47401557/442351 )에 예가 있습니다.
BanksySan

http 만 지원합니까? 웹 소켓조차도? 그런 다음 게임 개발에 많이 사용되지 않는다고 생각합니다. 대기 시간이 걱정된다면 처음에는 http를 사용하지 않을 것입니다. 그러나 어쨌든 언급 해 주셔서 감사합니다.
필립

@Philipp는 WebSockets, 핫 HTTP / 2를 지원합니다. 그러나 HTTP / 2를 살펴 봐야합니다. HTTP / 1, 더 이상 헤드 라인 차단, 더 이상 여러 핸드 셰이크, 더 이상 중복 헤더 및 / 또는 쿠키가 없습니다.
BanksySan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.