#keywords igmp,multicast,ipv4,ipv6,ra,proc,linux,kernel #title Linux에서 Multicast통신의 IGMP version을 강제로 선택 [wiki:Home 대문] / [wiki:TroubleShooting 문제해결] / [wiki:LinuxMulticastIGMPVersionSet Linux에서 Multicast통신의 IGMP version을 강제로 선택] ---- == [wiki:LinuxMulticastIGMPVersionSet Linux에서 Multicast통신의 IGMP version을 강제로 선택] == * 작성자 조재혁([mailto:minzkn@minzkn.com]) * 고친과정 2007년 6월 2일 : 처음씀 [[TableOfContents]] === 문제해결 === Multicast 는 IGMP 를 사용합니다.[[br]] 최근 Linux kernel 은 IGMP v3 를 지원하게 되어 있습니다.[[br]] 문제는 아직까지도 Router 들이 IGMP v2 까지만 지원하는 경우가 있습니다.[[br]] 그러나 Linux kernel 은 똑똑하게도 IGMP v3 를 시도해보고 안되면 일정시간 (약 10초 정도) 경과후 IGMP v3 -> IGMP v2 -> IGMP v1 순으로 버젼을 낮추어가면서 적응하도록 되어 있습니다.[[br]] 그런데 문제는 부팅후 이 경과시간이 초과되어야 IGMP v2 이하버젼에서 수신이 가능해진다는 점입니다.[[br]] Router를 바꿔달라고 이야기 하고 싶습니다.[[br]] 하지만 고가장비를 그렇게 쉽게 바꿀수는 없는것이죠.[[br]] Linux는 그러한것을 sysctl 을 통해서 강제시킬수 있게 되어 있습니다. 만약 IGMP v2 로 즉시 강제하고자 한다면 다음과 같이 할수 있습니다. (기본값은 0으로 순차적응입니다.) {{{#!plain bash# echo 2 > /proc/sys/net/ipv4/conf//force_igmp_version }}} 예를 들자면 무조건 모든 Interface 에 대해서 적용하고 싶을때는 {{{#!plain bash# echo 2 > /proc/sys/net/ipv4/conf/all/force_igmp_version }}} 설정시점 이후에 올라오는 Interface 에 대해서만 적용하고 싶을때는 {{{#!plain bash# echo 2 > /proc/sys/net/ipv4/conf/default/force_igmp_version }}} "eth0" 만 적용하고 싶을때는 {{{#!plain bash# echo 2 > /proc/sys/net/ipv4/conf/eth0/force_igmp_version }}} 이런식으로 강제할수 있습니다. 이렇게 함으로써 버젼적응시간이 필요없고 바로 해당 버젼으로 시도하게 되어 부팅후 곧바로 Multicast 수신이 가능해지게 됩니다.