느린 인터넷 연결 시뮬레이션


188

나는 이것이 이상한 질문이라는 것을 안다. 일반적으로 모든 사용자의 인터넷 연결 속도가 느린 "가정"을 기반으로 응용 프로그램을 개발하기 때문입니다. 그러나 누구나 인터넷 연결 속도를 프로그래밍 방식으로 시뮬레이션 할 수있는 방법이 있다고 생각합니까? 그래서 다양한 "연결 속도"에서 응용 프로그램의 성능을 "볼"수 있습니까?

어떤 언어가 사용되는지 걱정하지 않습니다. 그리고 코드 샘플이나 다른 것을 찾지 않고 그 뒤에있는 논리에 관심이 있습니다.

답변:


109

창문을 사용하는 경우 피들러 는 훌륭한 도구입니다. 모뎀 속도를 시뮬레이션하는 설정이 있으며 더 많은 제어를 원하는 사람에게는 각 요청에 대기 시간을 추가 하는 플러그인이 있습니다 .

지연 시간 코드를 훨씬 더 현실적인 시뮬레이션이므로 실제 비트를 디자인하거나 코딩하지 않기 때문에 이와 같은 도구를 사용하여 애플리케이션에 지연 시간 코드를 넣는 것을 선호합니다. 가장 좋은 코드는 내가 쓸 필요가없는 코드입니다.

추가 : 소프트웨어 기술에 관한 Pavel Donchev의 블로그에있는이 기사는 맞춤형 시뮬레이션 속도를 만드는 방법을 보여줍니다 : Fiddler를 통한 인터넷 연결 속도 제한 .


6
안녕하세요, 유용 할 수있는 느린 인터넷 연결을 시뮬레이션하는 데 대한 약간의 가이드를 작성했습니다. developertipoftheday.com/2010/12/…- 전체 공개-이것은 내 블로그이지만, 확산에 도움이되는 경우 :-) 피들러의 좋은 단어
알렉스 KeySmith

이 피들러 접근법의 문제점은 지연 시간 시뮬레이션이 정확하지 않고 잘못된 프로토콜 레벨에서 작동하므로 느린 시작을 올바르게 시뮬레이션하지 못한다는 것입니다.
Sam Saffron

@ SamSaffron, 이렇게 오래된 게시물을 파 내게되어 미안하지만, 느린 시작 시뮬레이션에 도움이되는 다른 도구를 알고 있습니까?
Anish Ramaswamy

@AnishRam 가장 좋은 방법은 dummynet / IPFW를 사용하는 것입니다 BSD와 가족, FreeBSD의, 함께 제공되는 OSX 등 barkingiguana.com/2009/12/04/...
샘 사프란

@AnishRam 또한 netem도 참조하십시오. linuxfoundation.org/collaborate/workgroups/networking/netem 은 iproute2를 사용하여 여러 조건을 시뮬레이션 할 수 있습니다.
Philip Rieck

154

Chrome 38 부터는 플러그인 없이이 작업을 수행 할 수 있습니다. 검사 요소 (또는 F12핫키)를 클릭 한 다음 "장치 모드 전환"을 클릭 여기에 이미지 설명을 입력하십시오하면 다음과 같이 표시됩니다.

여기에 이미지 설명을 입력하십시오

다른 많은 기능 중에서 특정 인터넷 연결 (3G, GPRS)을 시뮬레이션 할 수 있습니다

업로드 속도를 제한하려는 사람들을위한 PS . 슬프게도 현재로서는 불가능합니다.

PS2는 이제 아무것도 토글 할 필요가 없습니다. 조절 패널은 네트워크 패널에서 바로 사용할 수 있습니다.여기에 이미지 설명을 입력하십시오

제한 없음 을 클릭하면 사용자 지정 제한 옵션을 만들 수 있습니다.

여기에 이미지 설명을 입력하십시오


2
이제 Chrome 개발자 도구 제한으로 다운로드 및 업로드 속도가 모두 제한됩니다. 그러나 Chrome의 현재 페이지에만 제한되므로 다른 브라우저에서 페이지를 테스트하는 데 사용할 수 없습니다. 그러려면 Fiddler와 같은 다른 도구를 사용해야합니다.
Leonid Vasilev

3
현재 WebSocket이 이런 식으로 조절되지 않는다는 것을 언급 할 가치가 있습니다. bugs.chromium.org/p/chromium/issues/detail?id=423246
mseddon

최신 버전 (70.0)을 포함하여 Chrome의 일부 버전에서는 업로드 조절 기능이 작동하지 않았습니다. 트래커에 버그 보고서 가 있습니다 .
Matt

내 경험상 웹 속도 저하의 가장 큰 원인은 케이블 ISP의 비정상적인 DNS가 광고 서버 나 CDN을 확인할 수 없기 때문입니다. 문제 해결 시도가 성공하거나 시간 초과 될 때까지 전체 페이지가 비어있는 경우가 있습니다. Chrome에서이를 시뮬레이션 할 수 있습니까?
StackOverthrow

45

1
네트워크 링크 컨디셔너는 Apple에서 유지 관리하므로 안정적이고 안정적이지만 Xcode의 시뮬레이터에만 적용됩니다.
벤 휠러

4
@BenWheeler 최근에 그것을 시도했다 그것은 확실히 시스템 전체, 심지어 localhost에 적용되었습니다
aromero

2
Network Link Conditioner가 실제로 전체 네트워크 스택에 적용되어 있음을 확인할 수 있습니다.
Fred Vollmer 17 :

14

Linux 컴퓨터에서 u를 사용할 수 있습니다 wondershaper

apt-get install wondershaper

$ sudo wondershaper {interface} {down} {up}

{down} 및 {up}은 kpbs의 대역폭입니다.

예를 들어 인터페이스 eth1의 대역폭을 업 링크 256kbps 및 다운 링크 128kbps로 제한하려는 경우,

$ sudo wondershaper eth1 256 128

한도를 지우려면

$ sudo wondershaper clear eth1 

13

http://www.netlimiter.com/ 을 사용 하고 있었고 잘 작동합니다. 단일 프로세스의 속도를 제한 할뿐만 아니라 실제 전송 속도도 보여줍니다.


다른 툴들 대부분은 인공 지연을 통한 대역폭 제어를 제공하는데, 이는 netlimiter와는 그렇지 않은 것처럼 보입니다. 그러나 결국 상용 버전 (시험판 포함)이며 Windows에서만 사용할 수 있습니다.
Aleksander Stelmaczonek

6

iprelay 및 Sloppy와 같이 느린 연결을 시뮬레이션하기 위해 대역폭 형성을 수행하는 TCP 프록시가 있습니다. ipfw 및 iptables와 같은 IP 필터링 도구를 사용하여 대역폭 형성을 수행하고 패킷 손실을 시뮬레이션 할 수도 있습니다.


감사합니다. iprelay와 Sloppy joe를 살펴 보겠습니다.

고맙습니다, ipfw는 훌륭하게 작동합니다. 여기 도움이 된 빠른 안내서가 있습니다 : barkingiguana.com/2009/12/04/…
Eric Nguyen

4

Dummynet 을 시도 하면 대기열 및 대역폭 제한, 지연, 패킷 손실 및 다중 경로 효과를 시뮬레이션 할 수 있습니다


4

Charles 또는 Fiddler 와 같은 조절 기능이있는 웹 디버깅 프록시를 사용하십시오 .

일반적으로 유용한 웹 개발을 찾을 수 있습니다. 주요 차이점은 Charles는 쉐어웨어이고 Fiddler는 무료입니다.


프록시로 실행합니다. 브라우저가 자동으로 브라우저에 연결하고 요청을 웹앱으로 전달합니다.
벤 M

Fiddler의 경우 브라우저 내부 / 외부에서 작동하는 두 가지 모드가 있습니다.
Ken D

4

또한 일부 * nix에서 느린 연결을 시뮬레이트하기 위해 ipfw를 사용해 볼 수 있습니다 . 이 Quora 질문 에 대한 Ben Newman의 답변이 더 많은 정보를 제공합니다.


2

TCPMon 과 같은 도구를 사용하십시오 . 연결 속도가 느려질 수 있습니다.

기본적으로 정확히 같은 것을 요청하고 정확히 동일한 요청을 실제 서버로 전달 한 다음 설정된 바이트 수로 응답을 지연시킵니다.


2

당신은 사용할 수 있습니다 NetEm (네트워크 에뮬레이션) A와 많은 네트워크 특성을 모방하는 프록시 서버 (속도, 지연, 패킷 손실 등). iproute2 패키지를 사용하여 네트워킹을 제어하며 대부분의 Linux 배포판 커널에서 활성화됩니다.

iproute2 패키지 의 tc명령 줄 응용 프로그램에 의해 제어 되지만 NetEm 용 웹 인터페이스 GUI (예 : PHPnetemGUI2)도 있습니다.

내가 쓴 것처럼 다른 네트워크 속도를 에뮬레이션 할 수있을뿐만 아니라 패킷 손실, 복제 및 / 또는 손상, 임의 또는 정의 된 지연 등을 에뮬레이션 할 수 있다는 장점이 있습니다.

응용 프로그램의 경우 완전히 투명하므로 NetEm 프록시 서버를 사용하도록 운영 체제를 구성 할 수 있으므로 해당 시스템의 모든 연결은 NetEm을 통해 이루어집니다. 또는 응용 프로그램 만 프록시로 사용하도록 구성 할 수 있습니다.

다양한 에뮬레이션 된 저 성능 네트워크에서 Android 앱의 성능을 테스트하는 데 사용했습니다.


1

10.10 이후의 Mac OSX에는 Murus Firewall 이라는 앱이 있습니다.이 앱 은 ipfw를 대체하는 pf의 GUI 역할을합니다.

시스템 전체 또는 도메인 별 조절에 매우 효과적입니다. 스트리밍 비디오 플레이어가 어떻게 조정되는지 테스트하기 위해 300Kbps와 30Mbps 사이에서 다운로드 속도를 슬라이드하는 데 사용할 수있었습니다.


0

WIPFW라는 또 다른 도구가있다 - http://wipfw.sourceforge.net/

조금 오래된 학교이지만 느린 연결을 시뮬레이션하는 데 사용할 수 있습니다. Windows 기반이며이 도구를 사용하면 관리자가 라우터가 특정 시스템에서 가져 오는 트래픽의 양 또는 전달하는 WWW 트래픽의 양을 모니터링 할 수 있습니다.


0

내가 찾은 답변이 언급되지 않았으므로 이것을 업데이트 한 (9 년 후 요청) :

Firefox에는 연결 속도 조절을위한 사전 설정도 있습니다. 개발자 도구 의 네트워크 모니터 탭 에서 찾으십시오 . 기본값은 '조절 없음'입니다.

가장 느린은 GPRS ( 50 Kbps의 업로드 속도 : 20 Kbps까지, 최소 대기 시간 (밀리 초) : 다운로드 속도 500 ), '좋은'과 DSL과에 '일반'2G, 3G 및 4G를 통해 이르기까지 와이파이 ( 다운로드 속도 : 30Mbps의 업로드를 속도 : 15Mbps, 최소 대기 시간 (ms) : 2 ).

개발자 도구 문서 에서 자세히 알아보십시오 .


0

Linux의 경우 다음 논문 목록이 유용 할 수 있습니다.

반면 개인적으로, Dummynet이 좋은, 내가 찾을 NetEm을 내 유스 케이스에 대한 다양한 최대한으로; 나는 일반적으로 대역폭 (예 : WiFi 연결 문제)이 아닌 지연의 영향에 관심이 있으며 임의의 패킷 손실 / 손상 등을 에뮬레이션하는 것이 매우 쉽습니다. 또한 하드웨어 기반의 Linktropy 와 달리 매우 액세스가 쉽고 무료입니다. ).

부수적으로 Windows의 경우 Clumsy 는 훌륭합니다. 또한 (웹 사이트와 관련하여) 브라우저 조절이 실제 네트워크 문제를 에뮬레이트하는 정확한 방법이 아니라고 덧붙이고 싶습니다.

이것이 누군가를 돕기를 바랍니다!


0

단일 TCP 연결을 형성하는 일반적인 경우는 실제로 다음 과 같이 이중 쌍으로 socat그리고 cpipeUNIX 방식 으로 조립 될 수 있습니다 .

socat TCP-LISTEN:5555,reuseaddr,reuseport,fork SYSTEM:'cpipe -ngr -b 1 -s 10 | socat - "TCP:localhost:5000" | cpipe -ngr -b 1 -s 300'

이 약 300KB / s의 대역폭과의 연결 시뮬레이션 에서 의 서비스를 :5000하고 약에서 10kB에서 / S 및 수신 대기 :5555들어오는 연결합니다. 주의 사항 :이 연결 당 각 개별 TCP 연결 이이 금액을 얻습니다.

설명 : 외부 (왼쪽) socat는 지정된 옵션을 :5555포크 서버로 인식합니다. 첫 번째 cpipe의 명령 SYSTEM:...옵션은 다음 갔다 데이터를 조절하는 5555을 (및 외부, 처음 나오는 : 소켓 socatS /) 가장 10kByte에서합니다. 그런 다음 해당 데이터는 socat연결하려는 다른 데이터를 사용하여 전달 하고 있습니다 localhost:5000(느리게하려는 서비스가 수신 대기해야 함). 데이터 로부터는 localhost:5000 그 오른쪽에 넣고 cpipe300KB 정도까지로 조절하는 (소정 값) 명령 / S.

옵션 -ngr으로는 cpipe중요하다. 입력 파일 디스크립터에서 cpipe를 읽지 않게 읽습니다. 그렇지 않으면, 버퍼에있는 데이터가 전달되지 않고 응답을 기다리는 중일 수 있습니다.

보다 일반적인 buffer도구를 사용하는 cpipe것도 가능합니다.

(크레딧 : 이것은 Christophe Loor의 "더블 티"레시피를 socat문서 에서 기반으로합니다 )

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.