Порядок событий iRule

Выберите набор профилей виртуального сервера BIG-IP — Client-SSL, HTTP, Server-SSL, пул — и посмотрите порядок, в котором срабатывают типичные события iRule, от CLIENT_ACCEPTED до CLIENT_CLOSED, в виде таймлайна и списка. Всё в браузере.

Сети

Набор профилей виртуального сервера

Шаблоны:

Вычислено в вашем браузере. Ничего никуда не отправляется.

Модель документированного поведения F5 для виртуального сервера Standard. Никогда не обращается к BIG-IP.

Последовательность событий

сторона клиентасторона сервераглобально
1CLIENT_ACCEPTEDConnection setup · сторона клиента2CLIENTSSL_CLIENTHELLOClient-side TLS · сторона клиента3CLIENTSSL_HANDSHAKEClient-side TLS · сторона клиента4HTTP_REQUESTRequest · сторона клиента5LB_SELECTEDLoad balancing · глобально6SERVER_CONNECTEDServer-side setup · сторона сервера7SERVERSSL_HANDSHAKEServer-side TLS · сторона сервера8HTTP_REQUEST_SENDSend to server · сторона сервера9HTTP_RESPONSEResponse · сторона клиента10SERVER_CLOSEDTeardown · сторона сервера11CLIENT_CLOSEDTeardown · сторона клиента

События по порядку

  1. CLIENT_ACCEPTEDсторона клиента

    A client connection is established. On a Standard virtual server this is when the TCP three-way handshake completes; on FastL4 it fires on the initial SYN.

  2. CLIENTSSL_CLIENTHELLOсторона клиента

    The client's TLS ClientHello has been received, before the handshake is processed. Useful for SNI-based decisions.

  3. CLIENTSSL_HANDSHAKEсторона клиента

    The client-side TLS handshake has completed successfully.

  4. HTTP_REQUESTсторона клиента

    The system has fully parsed the complete client HTTP request headers.

  5. LB_SELECTEDглобально

    The system has selected a pool member for the connection.

  6. SERVER_CONNECTEDсторона сервера

    The server-side connection to the selected pool member has been established.

  7. SERVERSSL_HANDSHAKEсторона сервера

    The server-side TLS handshake has completed successfully.

  8. HTTP_REQUEST_SENDсторона сервера

    Immediately before the HTTP request is sent to the server-side TCP stack. Runs in the server-side context.

  9. HTTP_RESPONSEсторона клиента

    The system has parsed all of the response status and header lines from the server response.

  10. SERVER_CLOSEDсторона сервера

    The server-side connection has been closed.

  11. CLIENT_CLOSEDсторона клиента

    The client-side connection has been closed.

Условные события

Они срабатывают только при определённых условиях: TCP::collect или HTTP::collect, сбой балансировки или ответ 100 Continue.

  • HTTP_REQUEST_DATAHTTP_REQUEST

    After an HTTP::collect has gathered the specified amount of request payload.

  • LB_FAILEDLB_SELECTED

    Instead of LB_SELECTED, when the system fails to select a pool or member, or the selected resource is unreachable.

  • HTTP_RESPONSE_CONTINUEHTTP_RESPONSE

    Before HTTP_RESPONSE, whenever the server sends a 100 Continue interim response.

  • HTTP_RESPONSE_DATAHTTP_RESPONSE

    After an HTTP::collect has gathered the specified amount of response payload.

  • Within a single event, multiple iRules run by priority (default 500, lowest number first); the priority command overrides that. This ordering is across events, not within one.
  • Availability also depends on provisioning: module events (APM ACCESS_*, ASM/Advanced WAF, bot defense) only fire when that module is provisioned. And CLIENT_DATA, SERVER_DATA, HTTP_REQUEST_DATA, and HTTP_RESPONSE_DATA need an explicit TCP::collect or HTTP::collect first.
API endpointGEThttps://ronutz.com/api/v1/f5-irules-event-orderDocumented, not served. Opens the specification.

Источники