이 글의 목적은 Windows 업데이트에서 배달 최적화(Delivery Optimization) 피어 캐시가 서로 충돌하거나 정상적으로 피어를 찾지 못해 업데이트가 느려지거나 실패하는 상황을 재현 가능한 점검 순서와 복구 절차로 정리하여 현장에서 즉시 해결할 수 있도록 돕는 것이다.
1. 배달 최적화 피어 캐시 충돌이란 무엇인가
배달 최적화는 Windows가 업데이트와 Microsoft Store 콘텐츠를 내려받을 때, 동일 네트워크 또는 동일 그룹의 다른 PC로부터 일부 데이터를 받아 대역폭을 절감하는 기능이다. 이 과정에서 장치가 피어(동료 장치)로 동작하며 로컬 캐시에 콘텐츠 조각을 보관하고 공유하게 된다.
피어 캐시 충돌은 일반적으로 다음 상황에서 발생하는 현상을 통칭하는 표현이다.
- 피어링이 켜져 있으나 피어를 찾지 못해 계속 HTTP/CDN으로만 다운로드하거나 다운로드가 비정상적으로 느려지는 증상이 발생하다.
- 같은 조직에서 장치 그룹(그룹 ID)을 운영하는데 정책이 서로 달라 같은 네트워크에서도 서로 다른 그룹으로 분리되어 피어가 존재하지 않는 상태가 되다.
- 배달 최적화 캐시 데이터 또는 상태 데이터가 손상되어 피어 기능이 불안정하게 동작하다.
- 사내 방화벽·보안 정책·분리망·VPN·프록시 구성으로 피어 통신 포트가 막혀 피어 공유가 실패하다.
2. 대표 증상과 로그 관찰 포인트
2-1. 현장에서 자주 보이는 증상
| 증상 | 현상 설명 | 가능 원인 |
|---|---|---|
| 업데이트가 갑자기 느려지다 | 다운로드가 0~수 Mbps로 들쭉날쭉하거나 특정 구간에서 정체되다 | 피어 통신 불가, 캐시 손상, 정책 충돌, 방화벽 차단 |
| LAN에 PC가 많은데 피어가 0으로 나오다 | 피어 캐시를 기대했으나 항상 Microsoft CDN에서만 받다 | 다운로드 모드가 피어링 비활성(0/99), 그룹 ID 불일치 |
| 특정 VLAN/사무실만 문제 발생하다 | 다른 구역은 정상인데 특정 구역만 피어가 안 잡히다 | 구역 방화벽, 라우팅/ACL, NAT/VPN 정책, 포트 7680 차단 |
| 업데이트 실패가 간헐적으로 발생하다 | 일부 장치에서만 재시도 반복 또는 다운로드 재개가 반복되다 | 캐시/상태 DB 손상, 디스크 부족, 보안 제품 충돌 |
2-2. 상태 확인에 유용한 PowerShell 명령
관리자 권한 PowerShell에서 아래 명령으로 배달 최적화 상태를 먼저 확인하는 것이 좋다.
# 배달 최적화 현재 상태 확인 Get-DeliveryOptimizationStatus
배달 최적화 성능/피어링 스냅샷 확인(환경에 따라 출력 항목이 다를 수 있다)
Get-DeliveryOptimizationPerfSnap
출력에서 특히 확인해야 하는 항목은 다운로드 모드(DODownloadMode), 피어에서 받은 바이트(FromPeers) 관련 지표, HTTP로 받은 바이트(FromHttp) 관련 지표이다. 피어링이 정상이라면 FromPeers 계열 값이 증가하는 경향을 보이다.
3. 원인별 해결 전략 요약
현장에서는 “정책 충돌 → 포트/방화벽 문제 → 캐시 손상” 순서로 빈도가 높다. 다음 표의 순서대로 진행하면 불필요한 조치로 시간을 낭비하는 일을 줄일 수 있다.
| 우선순위 | 점검 항목 | 핵심 확인 내용 | 주요 조치 |
|---|---|---|---|
| 1 | 다운로드 모드 충돌 | 피어링 가능한 모드(1/2/3)가 적용되어 있는지 확인하다 | GPO/Intune에서 Download Mode 정합성을 맞추다 |
| 2 | 그룹 ID 충돌 | Group Download Mode(2) 사용 시 Group ID가 동일해야 하다 | Group ID를 통일하거나 운영 기준을 확정하다 |
| 3 | 서비스 상태 | Delivery Optimization 서비스(DoSvc)가 정상 동작해야 하다 | 서비스 재시작, 시작 유형 점검, 종속 서비스 점검을 하다 |
| 4 | 포트/방화벽 | 피어 기능은 TCP 7680 통신이 필요하다 | 인바운드/아웃바운드 허용 규칙을 적용하다 |
| 5 | 캐시/상태 손상 | 캐시 폴더가 비정상적으로 커지거나 손상될 수 있다 | DoSvc 중지 후 캐시 폴더 정리, 구성 요소 초기화를 하다 |
4. 단계별 해결 절차
4-1. 1단계: 다운로드 모드(DODownloadMode)부터 정합성 점검하다
피어링이 작동하려면 다운로드 모드가 피어링 가능한 값이어야 하다. 일반적으로 다음 기준으로 운영한다.
- 모드 1(LAN): 동일 NAT/동일 서브넷 중심의 내부 공유를 목표로 할 때 적합하다.
- 모드 2(Group): 그룹 ID를 기준으로 지정된 장치끼리만 공유하도록 통제할 때 적합하다.
- 모드 3(Internet): 인터넷 피어까지 포함할 수 있으나 보안/정책 검토가 필요하다.
운영 환경이 조직 단위로 그룹을 묶는 방식이라면 모드 2가 자주 사용되다. 다만 모드 2는 “그룹 ID”가 필수로 맞아야 하다.
4-2. 2단계: Group ID 충돌을 제거하다
모드 2를 사용하는데 Group ID가 장치마다 다르면 서로 피어가 되지 못하다. 특히 다음과 같은 운영 패턴에서 충돌이 자주 발생하다.
- 일부 장치는 GPO로 Group ID를 받고, 일부 장치는 Intune/MDM으로 Group ID를 받아 값이 달라지다.
- 사이트/지점별로 서로 다른 그룹 ID를 쓰는데, 장치가 지점 이동 또는 VPN 접속으로 경계를 넘나들다.
- Configuration Manager(MECM/SCCM)에서 경계 그룹 기반 그룹 ID를 쓰는데 GPO의 그룹 ID가 동시에 설정되어 덮어쓰기가 발생하다.
해결의 핵심은 “한 소스에서만 정책을 주고, 그룹 ID의 운영 기준을 문서화하여 변경을 통제”하는 것이다. 현장에서 빠르게 충돌 여부를 판단하려면 먼저 정책이 어디서 내려오는지(GPO/MDM/로컬/ConfigMgr)를 확인하고, 실제 장치의 Group ID가 기대 값과 같은지 확인해야 하다.
4-3. 3단계: DoSvc 서비스 상태를 복구하다
배달 최적화는 Delivery Optimization 서비스(서비스 이름 DoSvc)가 핵심이다. 서비스가 중지되거나 비정상 상태면 피어링과 캐시 동작이 불안정해지다. 다음 절차로 복구를 진행하다.
# 서비스 상태 확인 sc query DoSvc
서비스 재시작
net stop DoSvc
net start DoSvc
서비스가 중지되지 않거나 오류가 발생한다면, 동시에 Windows Update 관련 구성 요소가 꼬여 있는 경우가 있으므로 4-6단계의 “업데이트 구성 요소 초기화” 절차까지 같이 수행하는 것이 효과적이다.
4-4. 4단계: 피어 통신 포트(7680) 방화벽 충돌을 해결하다
피어 투 피어 공유는 TCP 7680을 사용하다. 조직 내부 방화벽, EDR, 개인 방화벽 정책, 특정 하드닝 정책이 포트를 막으면 피어 캐시가 사실상 동작하지 않다. 다음을 점검해야 하다.
- Windows Defender 방화벽 인바운드/아웃바운드에서 TCP 7680이 차단되어 있지 않아야 하다.
- 사내 구간 방화벽(층간, VLAN 간, 지점 간)에서 7680이 허용되어야 하다.
- 피어링을 같은 서브넷에서만 쓰는지, 교차 서브넷에서도 쓰는지 운영 기준이 확정되어야 하다.
현장에서 빠르게 확인하려면 같은 네트워크의 두 PC 사이에서 7680 연결 가능 여부를 테스트해야 하다. PowerShell에서 다음과 같이 확인할 수 있다.
# 상대 PC의 IP로 테스트하다 Test-NetConnection -ComputerName 192.168.0.10 -Port 7680 4-5. 5단계: 배달 최적화 캐시 손상/비대화 문제를 정리하다
피어 캐시 충돌이 오래 지속되면 배달 최적화 캐시가 비정상적으로 커지거나 상태가 꼬여 문제가 반복될 수 있다. 이때는 캐시를 정리하고 서비스를 재가동하는 방식이 가장 빠른 복구 방법이다.
다음 절차는 로컬 캐시를 지우는 조치이므로, 진행 중인 다운로드가 있다면 중지한 뒤 수행하는 것이 안전하다.
# 1) 배달 최적화 서비스 중지 net stop DoSvc
2) 캐시 폴더 정리(관리자 권한 CMD 또는 PowerShell)
일반적으로 아래 경로에 캐시가 존재하다
C:\Windows\SoftwareDistribution\DeliveryOptimization
PowerShell 예시
Remove-Item -Path "C:\Windows\SoftwareDistribution\DeliveryOptimization*" -Recurse -Force
3) 서비스 재시작
net start DoSvc
캐시 정리 후에는 업데이트를 다시 시도하여 피어 수치가 정상적으로 올라오는지 확인해야 하다. 캐시 정리만으로 개선되면 “캐시 손상” 케이스일 가능성이 크다.
4-6. 6단계: Windows 업데이트 구성 요소까지 함께 초기화하다
피어 캐시 문제처럼 보이지만 실제로는 Windows Update 구성 요소(BITS, WUAUSERV, SoftwareDistribution, Catroot2)가 함께 꼬여 있어 DoSvc만 재시작해서는 해결되지 않는 경우가 있다. 이때는 아래 초기화 루틴을 수행하는 것이 효과적이다.
# 관리자 권한 CMD 권장이다
net stop wuauserv
net stop bits
net stop cryptsvc
net stop DoSvc
ren C:\Windows\SoftwareDistribution SoftwareDistribution.old
ren C:\Windows\System32\catroot2 catroot2.old
net start cryptsvc
net start bits
net start wuauserv
net start DoSvc
초기화 이후에는 장치 재부팅을 1회 수행하고 업데이트를 재시도하는 것이 안정적이다.
5. 조직 환경에서 재발을 막는 운영 기준
5-1. 정책 소스 단일화가 핵심이다
배달 최적화는 GPO, Intune/MDM, ConfigMgr, 로컬 정책이 섞이면 충돌이 쉽게 발생하다. 운영 기준은 다음 중 하나로 단일화하는 것이 바람직하다.
- GPO 중심 운영으로 통일하고, MDM에서는 동일 항목을 미구성 상태로 유지하다.
- Intune/MDM 중심 운영으로 통일하고, GPO의 해당 항목은 제거 또는 미적용으로 유지하다.
- ConfigMgr 경계 그룹 기반 운영을 사용할 경우, Group ID를 덮어쓰는 GPO/MDM이 존재하지 않도록 정리하다.
5-2. 그룹 운영(모드 2)이라면 Group ID 관리 절차가 필요하다
모드 2는 통제에 강점이 있으나 Group ID 관리가 느슨하면 피어가 분절되어 효과가 급감하다. 다음을 권장하다.
- 지점·부서·망 구분 단위로 Group ID를 정의하고, 변경 요청 절차를 만들다.
- 지점 이동이 잦다면 장치가 속한 그룹의 전환 규칙을 별도로 정하다.
- VPN 사용 시에는 “VPN에서 피어링을 허용할지” 정책적으로 결정하고, 허용하지 않으면 해당 구간은 피어링 기대를 제거하다.
5-3. 방화벽 기준선을 문서화하다
피어 캐시는 네트워크 정책의 영향을 크게 받다. 따라서 내부 보안팀과 합의된 기준선이 필요하다.
- 동일 VLAN 내 피어링만 허용하다.
- 동일 지점 내 여러 VLAN 간 피어링을 허용하다.
- 지점 간 피어링을 금지하다.
운영 기준에 따라 TCP 7680 허용 범위를 명확히 하고, 예외 정책이 생기면 “그 구간은 피어링이 되지 않는 것이 정상”이라는 설명이 가능해야 하다.
6. 현장용 체크리스트
| 체크 항목 | 정상 기준 | 점검 방법 | 조치 |
|---|---|---|---|
| 다운로드 모드 | 피어링 가능 모드(1/2/3)로 통일되다 | Get-DeliveryOptimizationStatus로 확인하다 | GPO/MDM 정책을 정합화하다 |
| Group ID | 모드 2 사용 시 동일 그룹은 동일 ID를 가지다 | 정책 원천과 실제 값을 대조하다 | 그룹 ID 운영 기준을 통일하다 |
| DoSvc 서비스 | 실행 중이며 재시작이 가능하다 | sc query DoSvc로 확인하다 | 서비스 재시작 또는 구성 요소 초기화를 하다 |
| TCP 7680 통신 | 동일 정책 구간에서 연결이 가능하다 | Test-NetConnection -Port 7680로 확인하다 | 방화벽/구간 방화벽 정책을 수정하다 |
| 캐시 상태 | 비정상 비대화/오류가 없다 | DeliveryOptimization 폴더 용량과 오류 반복을 확인하다 | DoSvc 중지 후 캐시 정리를 하다 |
FAQ
피어 캐시를 켰는데도 항상 Microsoft 서버에서만 다운로드되다
다운로드 모드가 피어링 가능한 값인지 먼저 확인해야 하다. 모드가 LAN(1)인데 다른 서브넷과 피어링을 기대하거나, 모드가 Group(2)인데 Group ID가 다르면 피어가 0으로 보일 수 있다. 다음으로 TCP 7680이 차단되어 있지 않은지 확인해야 하다.
캐시 폴더를 지우면 업데이트가 망가지다
캐시 폴더 정리는 배달 최적화가 보관한 “공유/재사용용 조각”을 삭제하는 조치이다. 진행 중인 다운로드는 중단될 수 있으므로 작업 전 다운로드를 멈추고 수행하는 것이 안전하다. 정리 후에는 필요한 콘텐츠를 다시 내려받게 되다.
사내 보안 정책상 7680 포트를 열 수 없다
이 경우 피어 캐시 기반 최적화는 기대하기 어렵다. 대신 동일 구간에서만 제한적으로 허용하거나, 피어 기능을 비활성화하고 HTTP/CDN 중심으로 안정성을 확보하는 방식이 현실적이다. 운영 의사결정을 먼저 확정하는 것이 재발 방지에 도움이 되다.
WSUS를 쓰면 배달 최적화 피어 캐시를 못 쓰다
WSUS 사용 여부와 별개로 배달 최적화는 동작할 수 있다. 다만 조직의 업데이트 공급 경로, 프록시, 방화벽, 정책 소스 혼재로 인해 피어링이 제한될 수 있다. 따라서 WSUS 자체보다도 다운로드 모드, 그룹 ID, 포트 정책이 더 직접적인 원인이 되는 경우가 많다.