Описание поведения кэширования протокола ARP в реализациях TCP/IP

В этой статье описывается поведение кэширования по протоколу ARP в реализациях TCP/IP.

Область применения: Windows Server 2012 R2, Windows 10 — все выпуски, Windows 7 с пакетом обновления 1 (SP1)
Исходный номер базы знаний: 949589

Введение

В этой статье описывается поведение кэширования протокола ARP в реализациях TCP/IP в Windows Vista.

Дополнительная информация

Поведение кэширования ARP было изменено в Windows Vista. Реализации стека TCP/IP в Windows Vista соответствуют RFC4861 (протокол обнаружения соседей для IP версии 6 [Ipv6]) как для процесса обнаружения IPv4, так и для процесса обнаружения соседей IPv6.

Записи реестра ArpCacheLife и ArpCacheMinReferencedLife определяют, как поддерживается кэш ARP в Windows XP и Windows Server 2003. Эти записи реестра больше не применяются к Windows Vista.

В новой реализации стека TCP/IP в Windows Vista узлы создают записи кэша соседей, если в соседнем кэше нет соответствующей записи. Запись кэша ARP для IPv4 является примером записи соседнего кэша. После успешного создания записи в соседнем кэше запись может измениться на состояние "Доступно", если запись соответствует определенным условиям. Если запись находится в состоянии "Доступно", узлы TCP/IP в Windows Vista не отправляют запросы ARP в сеть. Таким образом, узлы TCP/IP в Windows Vista используют сведения в кэше. Если запись не используется и остается в состоянии "Доступно" дольше, чем ее значение "Доступное время", запись изменяется в состояние "Устаревший". Если запись находится в состоянии "Устаревший", узел TCP/IP в Windows Vista должен отправить запрос ARP для достижения этого назначения.

Значение "Доступное время" вычисляется следующим образом:
Доступное время = baseReachable Time × (случайное значение между MIN_RANDOM_FACTOR и MAX_RANDOM_FACTOR)
RFC предоставляет следующие вычисляемые результаты.

BaseReachable Time 30 000 миллисекунда (мс)
MIN_RANDOM_FACTOR 0.5
MAX_RANDOM_FACTOR 1.5

Таким образом, значение "Доступное время" находится в диапазоне от 15 секунд (30 × 0,5 секунд) до 45 секунд (30 × 1,5 секунды). Если запись не используется в течение времени от 15 до 45 секунд, она переходит в состояние "Устаревший". Затем узел должен отправить запрос ARP для IPV4 в сеть, когда любая IP-датаграмма отправляется в это место назначения.

Чтобы увидеть текущее значение "Доступное время", выполните следующие действия.

  1. Нажмите кнопку Пуск, введите cmd в поле Начать поиск , а затем щелкните cmd в списке Программы .

  2. Если появится запрос на ввод пароля администратора или подтверждение, введите пароль или нажмите кнопку Продолжить.

  3. Введите следующую команду:
    netsh interface ipv4 show interfaces
    Пример результата:

    Idx Met MTU        State       Name
    --- --- -----      ----------- -------------------
     1  50  4294967295 connected   Loopback Pseudo-Interface 1
     9  20  1500       connected   Local Area Connection
    
    
  4. На шаге 2 значение "Подключение по локальной области" Idx равно 9. Поэтому интерфейс 9 можно отобразить, введя в командной строке следующую команду:
    netsh interface ipv4 show interface 9
    Пример результата:

    Interface Local Area Connection Parameters
    ----------------------------------------------
    IfLuid                          : ethernet_7
    IfIndex                         : 9
    Compartment Id                  : 1
    State                           : connected
    Metric                          : 20
    Link MTU                        : 1500 bytes
     Reachable Time                 : 19000 ms Base Reachable Time : 30000 ms Retransmission Interval : 1000 ms
    DAD Transmits : 3 Site Prefix Length : 64 Site Id : 1 Forwarding : disabled  
    Advertising : disabled Neighbor Discovery : enabled Neighbor Unreachability  
    Detecion : enabled Router Discovery : dhcp Managed Address Configuration :
    enabled Other Stateful Configuration : enabled Weak Host Sends : disabled Weak  
    Host Receives : disabled Use Automatic Metric : enabled Ignore Default routes :  
    disabled
    
  5. Значение BaseReachable Time можно изменить, введя в командной строке следующий пример команды:
    netsh interface ipv4 set interface 9 basereachable=60000

  6. Чтобы просмотреть результат шага 4, введите в командной строке следующую команду:
    netsh interface ipv4 show interface 9
    Пример результата:

    Interface Local Area Connection Parameters
    ----------------------------------------------
    IfLuid                            : ethernet_7
    IfIndex                           : 9
    Compartment Id                    : 1
    State                             : connected
    Metric                            : 20
    Link MTU                          : 1500 bytes
    Reachable Time                    : 61500 ms
     Base Reachable Time              : 60000 ms Retransmission Interval : 1000 ms DAD Transmits : 3 Site Prefix
    Length : 64 Site Id : 1 Forwarding : disabled Advertising : disabled Neighbor
    Discovery : enabled Neighbor Unreachability Detecion : enabled Router Discovery
    : dhcp Managed Address Configuration : enabled Other Stateful Configuration :
    enabled Weak Host Sends : disabled Weak Host Receives : disabled Use Automatic
    Metric : enabled Ignore Default routes : disabled
    

    Примечание.

    Значение "Базовое доступное время" изменилось на 60 000 мс.

  7. Чтобы увеличить ограничение кэша соседей, введите в командной строке следующую команду:
    netsh interface ipv4 set global neighborcachelimit = 4096

    Примечание.

    Ограничение кэша соседей по умолчанию составляет 256 для клиентских версий Windows и 1024 для Windows Server.

Дополнительные сведения о состояниях ввода кэша соседей см. на следующем веб-сайте:
https://www.ietf.org/rfc/rfc2461.txt

В этой статье упомянуты программные продукты независимых производителей. Корпорация Майкрософт не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.

Контактные данные сторонних организаций предоставлены в этой статье с целью помочь пользователям получить необходимую техническую поддержку. Эти данные могут быть изменены без предварительного уведомления. Корпорация Майкрософт не дает гарантий относительно правильности приведенных контактных данных сторонних производителей.