Anycast(애니캐스트)는 똑같은 IP 주소를 세계 여러 곳의 서버가 동시에 광고(advertise)해서, 사용자를 가장 가까운 서버로 자동으로 보내는 라우팅 방식이다. 도쿄 사용자와 런던 사용자가 같은 IP 1.1.1.1에 접속해도, 네트워크가 각자에게 가까운 노드로 트래픽을 흘려보낸다. CDN과 공용 DNS가 빠른 이유의 절반은 여기에 있다.
처음 이걸 들었을 때 "같은 IP를 여러 서버가 쓴다고? 그럼 충돌 나는 거 아냐?"라고 생각했다. 로컬 네트워크 감각으로는 이상하지만, 인터넷 규모의 라우팅에서는 완벽하게 정상이다. 원리를 뜯어보면 의외로 단순하다.
캐스트 4형제 중 하나
패킷을 누구에게 보내느냐로 전송 방식을 나눈다. 이 대비 속에서 anycast의 위치를 보면 이해가 빠르다.
| 방식 | 대상 | 한 줄 설명 |
|---|---|---|
| Unicast | 1:1 | 특정 한 대에게 |
| Broadcast | 1:전체 | 서브넷의 모두에게 |
| Multicast | 1:그룹 | 가입한 그룹에게 |
| Anycast | 1:가장 가까운 하나 | 여럿 중 최적 노드에게 |
어떻게 "가장 가까운 곳"을 찾나
마법은 BGP(Border Gateway Protocol)에 있다. 각 지역의 노드가 동일한 IP 대역(예: 1.1.1.0/24)을 자기 위치에서 BGP로 광고하면, 인터넷 곳곳의 라우터는 그 대역으로 가는 경로를 여러 개 알게 된다. 라우터는 그중 자기 기준 가장 짧은 경로(대개 AS 홉 수가 적은 쪽)를 골라 패킷을 넘긴다.
여기서 "가깝다"는 물리적 거리가 아니라 네트워크 위상(topology)상 가까움이다. 서울 사용자가 상황에 따라 도쿄가 아닌 다른 노드로 갈 수도 있다. 경로 선택은 라우터들이 알아서 하고, 서버 운영자는 같은 IP를 여러 곳에서 광고하기만 하면 된다.
# 같은 프리픽스를 두 지역에서 각각 BGP 광고 (개념 예시)
# --- Tokyo PoP ---
router bgp 65001
network 203.0.113.0 mask 255.255.255.0
# --- London PoP ---
router bgp 65001
network 203.0.113.0 mask 255.255.255.0
# => 전 세계 라우터가 두 경로를 보고 각자 가까운 쪽 선택
왜 쓰는가: 속도, 그리고 방어
- 지연 감소 — 사용자는 늘 가까운 노드에 붙으니 왕복 시간이 짧다. 공용 DNS(1.1.1.1, 8.8.8.8)와 CDN이 애니캐스트를 쓰는 첫 번째 이유다.
- DDoS 흡수 — 공격 트래픽이 하나의 서버로 몰리지 않고 전 세계 노드로 자연스럽게 분산된다. 각 지역이 자기 몫만 감당하면 되니 대규모 공격도 잘게 쪼개진다.
- 장애 격리 — 한 노드가 죽어 BGP 광고를 멈추면, 라우터는 그 경로를 지우고 다음으로 가까운 살아 있는 노드로 자동 재라우팅한다. 사용자는 IP를 바꿀 필요가 없다.
같은 IP인데 지역마다 다른 서버가 응답한다. 그래서 "이 IP 핑이 왜 나만 이렇게 다르지?"가 애니캐스트에선 정상이다. 여러분과 나는 물리적으로 다른 기계와 대화하고 있을 수 있다.
공짜는 아니다: 함정
애니캐스트가 만능은 아니다. 가장 큰 약점은 연결의 안정성이다. 라우팅 경로는 BGP 상태에 따라 도중에 바뀔 수 있는데, 경로가 바뀌어 패킷이 갑자기 다른 노드로 가면 그 노드는 앞선 대화 맥락을 모른다. UDP(DNS)처럼 요청-응답이 짧고 상태가 없는 프로토콜에는 완벽하지만, 긴 TCP 세션이나 상태 있는 연결에는 세션 이동(flap) 문제가 생길 수 있다.
그래서 현실 설계는 이렇게 나뉜다. DNS 질의처럼 짧은 건 애니캐스트로 직접 받고, HTTP 같은 긴 세션은 애니캐스트로 가장 가까운 엣지까지만 안내한 뒤 그 안에서 unicast 로드밸런서로 넘긴다. 애니캐스트를 "문 앞까지의 안내판"으로 쓰는 셈이다.
자주 묻는 질문
같은 IP를 여러 서버가 쓰면 충돌하지 않나요?
로컬 네트워크라면 충돌하지만, 애니캐스트는 각 노드가 서로 다른 위치·다른 AS에서 BGP로 같은 프리픽스를 광고하는 구조입니다. 라우터가 경로를 하나만 선택하므로 사용자 입장에서는 언제나 한 대와 통신하는 것처럼 보입니다.
애니캐스트와 GeoDNS는 뭐가 다른가요?
GeoDNS는 DNS 응답 단계에서 사용자 위치에 따라 서로 다른 IP를 돌려주는 방식이고, 애니캐스트는 하나의 IP를 유지한 채 라우팅 계층에서 노드를 고릅니다. 둘을 함께 쓰기도 합니다.
애니캐스트를 직접 구축하려면 뭐가 필요한가요?
여러 지역에 PoP를 두고, 자체 AS 번호와 프로바이더 독립 IP 대역, 그리고 각 지점에서 BGP를 광고할 수 있는 업스트림이 필요합니다. 진입 장벽이 높아 대개 클라우드·CDN 사업자의 애니캐스트를 빌려 씁니다.
애니캐스트가 DDoS를 완전히 막아주나요?
막아준다기보다 분산시킵니다. 공격이 전 세계 노드로 흩어져 각 지역이 감당할 만한 크기로 쪼개지므로 대응이 쉬워집니다. 물론 각 노드의 용량을 넘는 초대형 공격에는 별도 완화 장치가 여전히 필요합니다.

댓글 0