1.-querier.md
1 # Querier 2 3 Рассмотрим чуть более сложный случай: 4 5  6 7 В клиентский сегмент подключено два \(или больше\) маршрутизатора, которые могут вещать трафик. Если ничего не сделать, мультикастовый трафик будет дублироваться — оба маршрутизатора ведь будут получать Report от клиентов. Во избежание этого существует механизм выбора **Querier** — опрашивателя. Тот кто победит, будет посылать Query, мониторить Report и реагировать на Leave, ну и, соответственно, он будет отправлять и трафик в сегмент. Проигравший же будет только слушать Report и держать руку на пульсе. 8 9 Выборы происходят довольно просто и интуитивно понятно. 10 Рассмотрим ситуацию с момента включения маршрутизаторов R1 и R2. 11 **1\)** Активировали IGMP на интерфейсах. 12 **2\)** Сначала по умолчанию каждый из них считает себя Querier. 13 **3\)** Каждый отправляет IGMP General Query в сеть. Главная цель — узнать, есть ли клиенты, а параллельно — заявить другим маршрутизаторам в сегменте, если они есть, о своём желании участвовать в выборах. 14 **4\)** General Query получают все устройства в сегменте, в том числе и другие IGMP-маршрутизаторы. 15 **5\)** Получив такое сообщение от соседа, каждый маршрутизатор оценивает, кто достойнее. 16 **6\)** Побеждает маршрутизатор с **меньшим IP** \(указан в поле Source IP пакета IGMP Query\). Он становится Querier, все другие — Non-Querier. 17 **7\)** Non-Querier запускает таймер, который обнуляется каждый раз, как приходит Query с меньшим IP-адресом. Если до истечения таймера \(больше 100 секунд: 105-107\) маршрутизатор не получит Query с меньшим адресом, он объявляет себя Querier и берёт на себя все соответствующие функции. 18 **8\)** Если Querier получает Query с меньшим адресом, он складывает с себя эти обязанности. Querier'ом становится другой маршрутизатор, у которого IP меньше. 19 20 _Тот редкий случай, когда меряются, у кого меньше._ 21 22 Выборы Querier очень важная процедура в мультикасте, но некоторые коварные производители, не придерживающиеся RFC, могут вставить крепкую палку в колёса. Я сейчас говорю о IGMP Query с адресом источника 0.0.0.0, которые могут генерироваться коммутатором. Такие сообщения не должны участвовать в выборе Querier, но надо быть готовыми ко всему. [Вот пример](http://nag.ru/articles/article/25136/takie-raznyie-problemyi.html) весьма сложной долгоиграющей проблемы. 23