개념
저하 지점을 폰 안으로 옮긴다
레슨 2의 결론은 "PC를 통과하는 폰 트래픽은 PC 도구가 못 본다"였다. 가장 확실한 해결은 저하를 거는 지점을 폰 자신으로 옮기는 것 이다.
[PC 기반] 폰 → PC(핫스팟) → 인터넷
↑ 여기서 걸려다 실패
[기기 내장] 폰 → 인터넷
↑ 여기서 건다. 경로를 탈 필요가 없다경로가 짧아지면 실패할 구석도 줄어든다. 추가 장비도, 커널 드라이버 설치 승인도, 프록시 인증서도 필요 없다. 오늘 당장 되는 방법이 이것이다.
방법 ① — iOS 네트워크 링크 컨디셔너
애플이 제공하는 기기 내장 기능이다. iOS 실기기 네트워크 테스트의 사실상 표준 수단이라고 봐도 된다.
활성화 절차
기본적으로 숨겨져 있고, 개발자 모드를 한 번 켜야 메뉴가 나타난다.
1. Xcode가 설치된 Mac에 기기를 USB로 1회 연결한다
기기에서 [이 컴퓨터를 신뢰] 를 선택한다
2. 기기에 개발자 모드가 활성화되면 재시동한다
3. 설정 > 개발자 > Network Link Conditioner 로 이동한다
4. 프로파일을 선택하고 [Enable] 을 켠다
→ 즉시 기기 전체 통신에 적용된다1단계 때문에 Mac과 Xcode가 한 번은 필요하다. 한 번 켜두면 그 뒤로는 Mac 없이 폰에서만 조작할 수 있다. 팀에 Mac이 한 대만 있어도 테스트 기기들을 미리 전부 활성화해두면 된다.
주요 프로파일
| 프로파일 | 재현하는 것 | 이 모듈의 상태 모델 대응 |
|---|---|---|
| Edge | 저속·고지연 회선 | 저하 |
| 3G | 구형 이동통신 회선 | 저하 |
| Very Bad Network | 극단적으로 나쁜 회선 | Limited Service |
| 100% Loss | 완전 단절 | 단절 |
| High Latency DNS | 이름 해석만 지연 | Limited-B (레슨 6) |
| 사용자 정의 | 대역폭·손실·DNS 지연 개별 입력 | 임의 조건 |
High Latency DNS 가 이 도구의 숨은 강점이다. 다른 도구로는 DNS만
골라 지연시키기가 까다로운데, 여기서는 프로파일 하나로 된다. DNS 실패는
Limited Service의 주요 원인 중 하나라 레슨 6에서 다시 다룬다.
사용자 정의로 상태 모델 맞추기
프리셋은 편하지만 우리 조건표와 수치가 어긋난다. 정확한 값이 필요하면 사용자 정의에 직접 입력한다. 입력 항목은 다음과 같다.
In Bandwidth / In Packets Dropped / In Delay
Out Bandwidth / Out Packets Dropped / Out Delay
DNS DelayIn(다운)과 Out(업로드)을 따로 입력할 수 있다는 점이 중요하다. 레슨 1에서 강조한 비대칭 조건을 여기서 그대로 만들 수 있다.
[비대칭 저하 조건 예]
In Bandwidth 5000 Kbps / Out Bandwidth 500 Kbps
In Delay 150 ms / Out Delay 150 ms
In Dropped 2 % / Out Dropped 2 %주의사항 — 기기 전체에 걸린다
이 기능은 특정 앱이 아니라 기기 전체 통신에 적용된다. 통화, 메시지, 사내 업무용 앱, 인증 앱까지 전부 영향을 받는다.
테스트 전용 단말 사용을 강력히 권장한다. 개인 단말에 걸었다가 중요한 알림을 놓치는 일이 실제로 일어난다.
또 하나. 프로파일을 반복해서 전환한 뒤 통신이 정상으로 복구되지 않은 사례가 보고되어 있다. 여러 조건을 연속으로 테스트할 때는 조건 사이에 Enable을 껐다 켜고, 정상 속도가 회복되는지 확인하는 편이 안전하다.
종료할 때는 반드시 Enable을 끄고 통신 상태를 실제로 확인 한다. 이건 레슨 끝의 원복 체크리스트에 다시 나온다.
방법 ② — Android 개발자 옵션 다운로드 속도 제한
Android 15부터 개발자 옵션에 네트워크 다운로드 속도 제한 (Network download rate limit) 항목이 제공된다. Pixel 등 일부 Android 13 기기에도 존재한다.
설정 절차
1. 개발자 옵션 열기
설정 > 휴대전화 정보 > 소프트웨어 정보에서
빌드번호를 7회 연속 탭
2. 항목 진입
설정 > 개발자 옵션 > 네트워크 다운로드 속도 제한
3. 값 지정
바이트/초 단위로 목표 속도 선택 (제한 없음 = 해제)
4. 적용 확인
fast.com 접속해 목표값 ±20% 이내인지 확인 후 테스트 시작단위가 바이트/초 라는 점을 놓치면 안 된다. 레슨 2의 환산표를 다시 보자.
Mbps → 바이트/초 : × 1,000,000 ÷ 8
30 Mbps = 3,750,000 B/s (≈ 3.75 MB/s)
10 Mbps = 1,250,000 B/s (≈ 1.25 MB/s)
1 Mbps = 125,000 B/s (≈ 125 KB/s)
0.1 Mbps = 12,500 B/s (≈ 12 KB/s)Wi-Fi와 셀룰러 모두에 적용된다 는 것도 특징이다. iOS NLC와 마찬가지로 기기 전체에 걸린다.
한계 — 다운로드 대역폭 하나뿐
이 기능의 범위는 명확하다.
| 제어 가능 | 제어 불가 |
|---|---|
| 다운로드 대역폭 | 업로드 대역폭 |
| 지연(RTT) | |
| 지터 | |
| 패킷 손실 | |
| DNS |
레슨 1의 4축 중 하나만 건드린다. 이게 무슨 뜻인지 분명히 해두자 — 이 방법만으로는 재시도·타임아웃·중복 요청 결함을 재현할 수 없다. 그런 결함은 지연과 손실에서 나오기 때문이다.
그래서 Android 단독 테스트에서 이 기능의 쓰임은 제한적이다. "이미지가 많은 화면이 느린 회선에서 어떻게 보이는가" 같은 대역폭 민감 시나리오에는 훌륭하지만, 그 이상은 레슨 4(프록시)나 레슨 5 (리눅스 AP)로 가야 한다.
또 하나, 이 기능은 커널 지원이 필요해 제조사·기종에 따라 항목이 아예 없을 수 있다. 없으면 없는 것이고, 대안으로 넘어간다.
활용 팁 — 핫스팟 경유
이 항목이 있는 기기를 핫스팟으로 켜고 다른 테스트 기기를 연결하면 제한이 함께 적용되는 경우가 있다. 기기·OS 조합에 따라 다르므로 반드시 연결된 기기 쪽에서 속도를 측정해 확인해야 한다.
동작한다면 항목이 없는 기기에도 대역폭 제한을 걸 수 있는 우회로가 된다.
두 방법의 위치
iOS NLC Android 속도 제한
─────────────────────────────────────────────────────
대역폭 ✅ (In/Out 별도) ✅ (다운로드만)
지연 ✅ (In/Out 별도) ❌
손실 ✅ (In/Out 별도) ❌
DNS 지연 ✅ ❌
비대칭 ✅ ❌
비용 무료 무료
난이도 낮음 (Mac 1회 필요) 낮음
적용 범위 기기 전체 기기 전체iOS는 이 방법 하나로 이 모듈의 거의 모든 조건을 만들 수 있다. Android는 대역폭만 되므로, 지연·손실이 필요하면 다른 방법과 병행한다.
이 비대칭이 실무에서 의미하는 바가 있다. "두 OS를 같은 조건으로 동시에 회귀하고 싶다"면 기기 내장 기능으로는 안 된다. 그때가 레슨 5의 리눅스 AP를 구축할 시점이다.
원복 — 잊으면 다음 테스트가 오염된다
iOS 설정 > 개발자 > Network Link Conditioner 의 Enable 해제
→ 정상 속도 회복 확인 (fast.com)
→ 통화·문자 수신 확인
Android 개발자 옵션 > 네트워크 다운로드 속도 제한 > [제한 없음]
→ 정상 속도 회복 확인원복 확인까지가 테스트 절차다. 걸어둔 채로 반납한 테스트 기기 때문에 다음 사람이 반나절을 날리는 일이 흔하다. 기기 대장에 "조건 적용 여부" 칸을 만들어두는 팀도 있다.
실무에서 왜 필요한가
오늘 당장 시작할 수 있다
레슨 4·5의 방법은 준비가 필요하다. 프록시는 인증서를 설치해야 하고, 리눅스 AP는 반나절 구축이 든다. 기기 내장 기능은 준비 시간이 사실상 0이다.
"네트워크 저하 테스트를 시작해야 하는데 어디부터"라는 상황에서 답은 언제나 이것이다. 여기서 시작해 필요가 커지면 확장한다.
보안 정책과 충돌하지 않는다
커널 드라이버도, 루트 인증서도 설치하지 않는다. OS가 제공하는 기능을 켜는 것뿐이다. 보안팀 승인이 필요 없다는 점 이 조직에 따라서는 가장 큰 장점이 된다.
실기기 라디오 동작이 그대로다
에뮬레이터와 달리 실제 Wi-Fi·셀룰러 라디오가 그대로 동작한다. 핸드오버, 절전 모드 진입, 신호 세기 변화 같은 실기기 고유 동작 위에서 저하가 얹힌다. 모듈 17 레슨 5에서 다룬 실기기의 가치가 여기서도 그대로다.