minor link state updates и циклы маршрутизации при миграции с Exchange 2003
Во многих статьях указано, что при миграции с Exchange 2003 на более новые версии (Exchange 2007\2010), не поддерживающие link state updates, перед созданием любых дополнительных коннекторов между группами маршрутизации Exchange 2003 и Exchange 2010, помимо коннектора, созданного при первоначальной инсталляции новых версий Exchange в организации, необходимо внести изменение в реестр на всех серверах Exchange 2003. А именно
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\RESvc\Parameters
SuppressStateChanges
Type: DWORD
Value: 1
Данная рекомендация приводит к отключению так называемых "minor link state updates", отсутствие поддержки которых в более новых версиях может привезти к образованию "циклов маршрутизации". Это связано с тем, что в некоторых случах возможно возникновение циклов маршрутизации, например, в случае, если какой-то из коннекторов Exchange 2003 помечен как Down (недоступный) и Exchange 2003 выберет путь не с наименьшей стоимостью. В связи с чем, данная проблема может появиться не сразу, а через некоторое время.
Однако в каком именно случае и почему может возникнуть зацикливание при маршрутизации сообщения? Рассмотрим схему ниже в качестве примера. Предполагается, что коннекторы созданы к bridgehead серверам Exchange 2010 в разных сайтах (т.е. между сайтами есть некий site link cost, но в данном случае это не существенно).
В данной конфигурации можно сказать следующее - если коннекторы BC и CD равнозначны с точки зрения стоимости и адресного пространства, то при отправке из роутинговой группы C может быть использован любой коннектор. Он выбирается произвольно и предпочтений в данном случае нет. В случае недоступности используемого коннектора будет использован второй, однако если первый коннектор станет снова доступен, то переключение обратно произведено не будет.
Т.е. в роунтинговую группу Exchange 2010 трафик может пойти одним из двух путей - CB-BA либо CD-DE, а далее сообщение уже будет доставлено локально в сайте, либо смаршрутизировано в другой сайт HUB серверами.
При этом если на коннекторе DE указано несколько bridgehead серверов Exchange 2010, то bridgehead сервер выбирается произвольно и таким образом достигается балансировка запросов, которые поступают на данный коннектор. При этом, если сообщение уже было смаршрутизировано на какой-то сервер и этот сервер становится недоступен – альтернативный маршрут выбран не будет. Т.е. сообщение будет находиться в очереди до тех пор, пока сервер не станет снова доступным. Link state содержит только информацию о состоянии коннектора, а коннектор всегда считается доступным, если хотя бы один bridgehead сервер доступен. Если же какой-то bridgehead сервер становится недоступным, то маршрутизация производится между оставшимися доступными серверами.
В данной конфигурации сложно представить ситуацию, которая может привести к возникновению циклов в маршрутизации. Например, это может произойти в случае, если оба коннектора BD и BC не доступны (помечены как down). Тогда при отправке сообщений из A в C будет выбран путь AB-BC как с наименьшей стоимостью и локальный для сайта. У B же единственный маршрут – обратно в A. В случае недоступности одного коннектора может получиться неоптимальный путь для прохождения почтового трафика.
Но в случае, если бы стоимость коннектора BD была, к примеру, 20, то для возникновения аналогичной ситуации было бы достаточно только недоступности коннектора BC.
Поскольку в реальной жизни схема маршрутизации намного сложнее, анализ ее на предмет возникновения циклов маршрутизации является более затруднительным. Поэтому стоит последовать рекомендации, и все же отключить "minor link state updates", даже с учетом того, что ремаршрутизация сообщений больше не будет производиться серверами Exchange 2003.
Дополнительная информация по данному вопросу тут: