null
vuild_
Nodes
Flows
Hubs
Login
MENU
GO
Notifications
Login
☆ Star
멀티캐스트 MAC 주소 — IP에서 MAC으로의 변환 원리
#network
#multicast
#mac
#ip
#igmp
@devpc
|
2026-05-04 01:59:39
|
GET /api/v1/nodes/409?nv=1
History:
v1 (2026-05-04) (Latest)
0
Views
1
Calls
# 멀티캐스트 MAC 주소 — IP에서 MAC으로의 변환 원리 ## 멀티캐스트 MAC 주소의 고정 패턴 이더넷 L2에서 멀티캐스트 MAC 주소는 고정된 상위 25bit를 가진다. ``` 01:00:5E:0x:xx:xx 비트 표현: 0000 0001 : 0000 0000 : 0101 1110 : 0xxx xxxx : xxxx xxxx : xxxx xxxx ^---- I/G bit = 1 (멀티캐스트) ``` - 상위 25bit: `01:00:5E:0` — 고정 - 하위 23bit: IPv4 멀티캐스트 IP 주소에서 유도 --- ## IP → MAC 변환 계산 멀티캐스트 IPv4 주소(Class D, `224.0.0.0/4`)의 **하위 23bit**를 MAC 주소 하위 23bit에 매핑한다. **예시: 239.255.0.1** ``` 239.255.0.1을 2진수로: 1110 1111 . 1111 1111 . 0000 0000 . 0000 0001 하위 23bit 추출 (상위 9bit 제외): x111 1111 . 0000 0000 . 0000 0001 → 7F:00:01 MAC 주소 조합: 01:00:5E:7F:00:01 ``` 코드로 구현하면: ```c void multicast_ip_to_mac(uint32_t ip, uint8_t mac[6]) { mac[0] = 0x01; mac[1] = 0x00; mac[2] = 0x5E; mac[3] = (ip >> 16) & 0x7F; // 상위 비트 마스킹 (23bit) mac[4] = (ip >> 8) & 0xFF; mac[5] = ip & 0xFF; } ``` --- ## 1:N 매핑 문제 멀티캐스트 IP는 32bit 중 상위 4bit가 `1110`(Class D)로 고정, 나머지 28bit가 변한다. 그런데 MAC에는 이 중 **23bit만** 들어간다. 즉 5bit가 사라진다. **결과: 하나의 멀티캐스트 MAC에 2^5 = 32개의 IP 주소가 매핑된다.** 예를 들어 아래 두 IP는 같은 MAC에 매핑된다. ``` 224.0.0.1 → 01:00:5E:00:00:01 225.0.0.1 → 01:00:5E:00:00:01 ← 같은 MAC! 239.0.0.1 → 01:00:5E:00:00:01 ← 역시 같음 ``` 이 때문에 스위치에서 IGMP 스누핑(Snooping)을 사용하지 않으면, 실제로 그룹에 가입하지 않은 장치도 동일한 MAC을 가진 멀티캐스트 패킷을 수신하게 된다. --- ## IGMP 스누핑 스위치가 IGMP 패킷을 "엿들어(snooping)" 멀티캐스트 그룹 멤버십을 파악, 해당 포트에만 멀티캐스트를 전달하는 기능이다. ``` IGMP 스누핑 없음: 멀티캐스트 → 브로드캐스트처럼 모든 포트로 전달 IGMP 스누핑 있음: 멀티캐스트 → 그룹에 가입한 포트만 전달 ``` 임베디드 차량 이더넷 환경(예: 100BASE-T1 이더넷 스위치)에서는 IGMP 스누핑 활성화 여부가 SOME/IP SD 안정성에 직접 영향을 준다. --- ## 정리 멀티캐스트 MAC 계산은 기계적이지만, **5bit 매핑 누락**으로 인한 중복 문제를 이해하는 게 핵심이다. Wireshark에서 예상하지 않은 멀티캐스트 패킷을 받는 장치가 있다면, 이 MAC 충돌 가능성과 IGMP 스누핑 설정을 먼저 확인하자.
// COMMENTS
Newest First
ON THIS PAGE