Windows의 netem과 Network Link Conditioner
Linux에는 tc netem이, Mac에는 Network Link Conditioner가 있습니다. Windows에는 지연과 손실을 더하는 기본 도구가 없습니다. 이 페이지는 이미 아는 것을 Bean Network Tester에 대응시키고, 숫자가 그대로 옮겨지지 않는 부분을 짚습니다.
netem 옵션을 하나씩
여기 있는 모든 명령에 --target과 --duration을 붙이세요. 그렇지 않으면 컴퓨터 전체에 영향을 줍니다.
| netem | 창의 설정 | 플래그 |
|---|---|---|
delay 100ms | Latency | --latency 100 |
delay 100ms 20ms | Latency, Jitter | --latency 100 --jitter 20 |
loss 5% | Loss | --loss 5 |
loss 5% 25% | Loss, Losses in a row (burst) | --loss 5 --loss-burst 4 |
duplicate 1% | Duplication | --dup 1 |
corrupt 0.1% | Corruption | --corrupt 0.1 |
reorder 25% | Spike chance, Spike size | --spike-prob 5 --spike-ms 200 |
rate 1mbit | Download, Upload | --down 122 --up 122 |
limit 1000 | Buffer | --buffer 1000 |
- 연속 손실. netem의 상관 값은 연속 길이가 아닙니다. Losses in a row (burst)는 연속으로 잃는 패킷 수의 평균이며, 가장 가까운 대응입니다.
- 순서 바꾸기. 순서를 바꾸는 비율 설정은 없습니다. 스파이크는 패킷 하나를 지연시켜 그 뒤에 보낸 패킷이 앞지르게 하며, Statistics 페이지의 순서가 바뀐 패킷 카운터가 실제로 일어났는지 알려 줍니다.
- 큐 크기. netem의 limit은 패킷 수로 셉니다. Buffer는 밀리초 단위의 시간입니다.
알아 둘 세 가지 차이
방향. netem은 인터페이스에서 나가는 것만 지연시키고 응답은 그대로 돌아옵니다. 이 도구는 양방향을 잡으므로 --latency 100은 핑에 약 200ms를 더합니다. 갈 때 100, 올 때 100입니다. netem과 같은 동작을 얻으려면 나가는 트래픽만 잡으세요.
BeanNetworkTester.exe --filter out --latency 100 --jitter 20 --target myapp.exe --duration 120
단위. netem의 rate는 초당 비트입니다. 속도 제한 입력란은 KB/s이며 K는 1024입니다. 메가비트 환산은 다음과 같습니다.
| netem rate | 속도 제한 입력란(KB/s) |
|---|---|
1mbit | 122 |
5mbit | 610 |
10mbit | 1221 |
50mbit | 6104 |
100mbit | 12207 |
범위. tc는 네트워크 인터페이스 전체를 다루고 root가 필요합니다. 이 도구는 --target으로 프로그램 하나만 겨냥하며 관리자 권한이 필요합니다.
Network Link Conditioner에 익숙하다면
Apple의 도구는 이름 붙은 프로필로 동작합니다. 여기서 가장 가까운 것은 다음과 같습니다.
| Network Link Conditioner | 여기서 가장 가까운 것 |
|---|---|
| 100% Loss | Loss를 100으로 설정 |
| 3G | 3G network |
| DSL | Home DSL (VDSL) |
| LTE | LTE / 4G |
| WiFi | Good WiFi |
| Very Bad Network | Terrible network |
| Edge | 대응하는 프로필이 없습니다. 속도 제한과 지연을 직접 입력한 다음 Save... 버튼으로 나만의 프로필로 저장하세요. |
숫자는 Apple의 것이 아니므로 프로필을 출발점으로 삼으세요. 프로필이 설정하는 모든 값은 참조 페이지에 나와 있습니다.
Windows에서 얻는 것
- 컴퓨터 전체가 아닌 프로그램 하나. 장애를 앱 하나에만 겨냥하면 나머지는 평소처럼 유지됩니다.
- 셸 스크립트 대신 타임라인. 시간별 시나리오는 정해 둔 초에 설정을 바꿉니다. Linux에서
tc와sleep스크립트가 하는 일입니다. - 파이프라인에서 실행할 수 있음. 같은 실행 파일이 CI에서 돌고 종료 코드로 결과를 알립니다.
Linux나 macOS에서는 원래 도구를 쓰세요. 이 도구는 Windows 전용입니다.