RFC: 4271
Оригинал: A Border Gateway Protocol 4
Предыдущие версии: RFC 1654, RFC 1771
Категория: Проект стандарта
Дата публикации:
Авторы: , ,
Перевод: Николай Малых
  • Состояние Established
  • В состоянии Established машина BGP FSM может обмениваться сообщениями UPDATE, NOTIFICATION и KEEPALIVE со своим партнером. Любые стартовые события (1, 3-7) игнорируются в состоянии Established.

    В ответ на событие ManualStop (Событие 2), инициированное оператором, локальная система будет:

    • передавать сообщение NOTIFICATION с кодом Cease;
    • устанавливать ConnectRetryTimer = 0;
    • освобождать все ресурсы BGP;
    • сбрасывать соединение TCP;
    • устанавливать ConnectRetryCounter = 0;
    • переходить в состояние Idle.

    В ответ на событие AutomaticStop (8) локальная система будет:

    • передавать сообщение NOTIFICATION с кодом Cease;
    • устанавливать ConnectRetryTimer = 0;
    • удалять все маршруты, связанные с этим соединением;
    • освобождать все ресурсы BGP;
    • сбрасывать соединение TCP;
    • увеличивать значение ConnectRetryCounter на 1;
    • (необязательно) выполнять процедуру подавления осцилляций, если DampPeerOscillations = TRUE;
    • переходить в состояние Idle.

    Одной из причин сигнала AutomaticStop может быть получение сообщений UPDATE с числом префиксов, превышающим заданный предел общего числа префиксов. Локальная система будет автоматически разрывать соединение с данным партнером.

    В ответ на событие HoldTimer_Expires (10) локальная система будет:

    • передавать сообщение NOTIFICATION с кодом ошибки Hold Timer Expired;
    • устанавливать ConnectRetryTimer = 0;
    • освобождать все ресурсы BGP;
    • сбрасывать соединение TCP;
    • увеличивать значение ConnectRetryCounter на 1;
    • (необязательно) выполнять процедуру подавления осцилляций, если DampPeerOscillations attribute = TRUE;
    • переходить в состояние Idle.

    По сигналу KeepaliveTimer_Expires (Событие 11) локальная система будет:

    • передавать сообщение KEEPALIVE;
    • заново запускать таймер KeepaliveTimer, если согласованное значение HoldTime не равно 0.

    Каждый раз при получении локальной системой сообщения KEEPALIVE или UPDATE она заново запускает таймер KeepaliveTimer, если согласованное значение HoldTime не равно 0.

    Сигнал TcpConnection_Valid (Событие 14), принятый для корректного порта, будет инициировать систему отслеживания второго соединения.

    Некорректные соединения (Tcp_CR_Invalid — Событие 15) будут игнорироваться.

    В ответ на индикацию завершения организации соединения TCP (Событие 16 или 17) следует отслеживать второе соединение, пока не будет передано сообщение OPEN.

    Если получено корректное сообщение OPEN (BGPOpen — Событие 19) и CollisionDetectEstablishedState = TRUE, сообщение OPEN будет проверяться на предмет конфликта (параграф 6.8) с другими соединениями. Если реализация BGP принимает решение о разрыве данного соединения, она будет генерировать сигнал OpenCollisionDump (Событие 23). Если соединение нужно разорвать, локальная система будет:

    • передавать сообщение NOTIFICATION с кодом Cease;
    • устанавливать ConnectRetryTimer = 0;
    • удалять все маршруты, связанные с соединением;
    • освобождать все ресурсы BGP;
    • сбрасывать соединение TCP;
    • увеличивать значение ConnectRetryCounter на 1;
    • (необязательно) выполнять процедуру подавления осцилляций, если DampPeerOscillations = TRUE;
    • переходить в состояние Idle.

    Если локальная система получает сообщение NOTIFICATION (Событие 24 или 25) или сигнал TcpConnectionFails (Событие 18) от нижележащего уровня TCP, она будет:

    • устанавливать ConnectRetryTimer = 0;
    • удалять все маршруты, связанные с соединением;
    • освобождать все ресурсы BGP;
    • сбрасывать соединение TCP;
    • увеличивать значение ConnectRetryCounter на 1;
    • переходить в состояние Idle.

    При получении сообщения KEEPALIVE (Событие 26) локальная система будет:

    • заново запускать таймер HoldTimer, если согласованное значение HoldTime не равно 0;
    • сохранять состояние Established.

    В ответ на сообщение UPDATE (Событие 27) локальная система будет:

    • обрабатывать принятое сообщение;
    • заново запускать таймер HoldTimer, если согласованное значение HoldTime не равно 0;
    • сохранять состояние Established.

    Если локальная система получает сообщение UPDATE и процедура контроля ошибок в сообщениях UPDATE (см. параграф 6.3) обнаруживает ошибку (Событие 28), локальная система будет:

    • передавать сообщение NOTIFICATION с кодом Update Error;
    • устанавливать ConnectRetryTimer = 0;
    • удалять все маршруты, связанные с соединением;
    • освобождать все ресурсы BGP;
    • сбрасывать соединение TCP;
    • увеличивать значение ConnectRetryCounter на 1;
    • (необязательно) выполнять процедуру подавления осцилляций, если DampPeerOscillations = TRUE;
    • переходить в состояние Idle.

    В ответ на все прочие события (9, 12-13, 20-22) локальная система будет:

    • передавать сообщение NOTIFICATION с кодом Finite State Machine Error,
    • удалять все маршруты, связанные с соединением;
    • устанавливать ConnectRetryTimer = 0;
    • освобождать все ресурсы BGP;
    • сбрасывать соединение TCP;
    • увеличивать значение ConnectRetryCounter на 1;
    • (необязательно) выполнять процедуру подавления осцилляций, если DampPeerOscillations = TRUE;
    • переходить в состояние Idle.
2007 - 2018 © Русские переводы RFC, IETF, ISOC.