Comprendre F5 BIG-IP

F5 iRules : événements, routage HTTP et data groups

Lire une iRule, choisir les profils nécessaires et distinguer chemin, URI, requête et événements de connexion.

Thomas SAUTIER · Publié le · Révisions de certification

  • Référence de F5 301A consultée le · Objectifs abordés : F5 301A 1.10.
  • Référence de F5 301B consultée le · Objectifs abordés : F5 301B 2.01, F5 301B 2.02, F5 301B 2.03.

Ce guide concerne BIG-IP sur TMOS. Les noms et options doivent être confrontés à la documentation de votre version.

Repère visuelRouter une requête selon son chemin HTTP
Router une requête selon son chemin HTTP L’événement HTTP_REQUEST rend les informations HTTP disponibles. Dans l’exemple du guide, le chemin /api/* choisit le pool API et les autres chemins le pool web. La query string ne fait pas partie de HTTP::path. correspond sinon 01 Requête HTTP Exemple : /api/status?x=1 02 HTTP_REQUEST HTTP::path : /api/status 03 Comparer le chemin Préfixe /api/* 04 Pool API Branche /api/* 05 Pool web Autres chemins 06 Validation Casse, encodage, défaut
L’événement HTTP_REQUEST rend les informations HTTP disponibles. Dans l’exemple du guide, le chemin /api/* choisit le pool API et les autres chemins le pool web. La query string ne fait pas partie de HTTP::path.

L’événement définit les informations disponibles

Une iRule exécute une logique à un moment du traitement. CLIENT_ACCEPTED concerne l’acceptation de la connexion ; HTTP_REQUEST intervient lorsque les en-têtes HTTP de la requête sont analysés. Une commande HTTP n’est pas rendue disponible par le seul fait que le port est 80 ou 443.

Avant de lire les conditions, vérifiez l’événement, les profils et le côté du flux. Pour HTTPS, le traitement HTTP suppose que le contenu soit accessible après terminaison TLS. Une commande correcte placée dans un événement inadapté peut produire une erreur plutôt que le routage attendu.

Sources : F5, ltm profile http ; F5, ltm virtual.

Chemin, URI et query ne sont pas identiques

HTTP::path renvoie le chemin ; la query correspond à la partie de paramètres ; l’URI inclut le contexte de requête plus large selon la commande utilisée. Une condition visant /api/ ne doit pas être écrite comme si un paramètre de query était un répertoire.

Avec Tcl switch, -exact compare une chaîne entière, -glob interprète les motifs et -regexp utilise des expressions régulières. L’ordre des motifs compte. Un astérisque dans un switch exact ne devient pas automatiquement un wildcard.

Sources : F5, HTTP::path ; F5, Tcl switch.

Un routage par préfixe lisible

Cette iRule pédagogique suppose un VS Standard avec profil HTTP, et des pools existants dans Common. Elle distingue le répertoire API, son chemin racine sans slash et le reste. La casse est volontairement conservée.

Routage pédagogique par cheminTcl · iRule F5
when HTTP_REQUEST {
    switch -glob -- [HTTP::path] {
        "/api" -
        "/api/*" {
            pool /Common/pool_api
        }
        default {
            pool /Common/pool_web
        }
    }
}

Sources : F5, HTTP::path ; F5, Tcl switch.

Data groups : séparer les valeurs de la logique

Un data group évite de multiplier les valeurs en dur dans une règle. Son type, le mode de comparaison et la forme de ses entrées doivent correspondre au besoin. Pour des réseaux IP, ne comparez pas les adresses comme de simples sous-chaînes.

Les frontières d’un chemin méritent également une définition précise : le préfixe /admin peut englober /administrator si la condition est trop large. Pour une décision de sécurité, la normalisation et le comportement de l’application doivent être étudiés ensemble.

Sources : F5, class, data groups ; F5, HTTP::path.

Comprendre return, redirect et les règles associées

Une redirection renvoie une réponse au client ; un choix de pool oriente la requête serveur. Ce ne sont pas deux formes équivalentes de navigation. Dans une iRule, return termine le traitement courant, mais ne constitue pas une garantie qu’aucune autre iRule associée ne s’exécutera.

Inventoriez les policies et les autres règles du VS. Si plusieurs objets tentent de sélectionner un pool ou de produire une réponse, leur combinaison doit être analysée avant d’attribuer un symptôme à une seule ligne.

Sources : F5, HTTP::redirect ; F5, ltm policy ; F5, return et commandes globales.

Prévoir les cas limites

En laboratoire, contrôlez /api, /api/commande, /apiculture, une query, une différence de casse et une URL encodée. Notez la destination attendue avant l’essai. Vérifiez les erreurs dans les journaux sans laisser une journalisation par requête à fort volume en production.

Sources : F5, sys log.

Sources et portée

Références consultées le . Les exemples utilisent des noms et adresses de documentation à remplacer. Les commandes de lecture affichent l’existant ; les captures et requêtes de diagnostic sont à limiter au périmètre autorisé.

Retrouver le parcours de lecture F5 LTM

Continuer la série F5

Explorer tous les guides du parcours F5 LTM

Découvrir l’expertise F5 de Samhan

Échange

Besoin d’éclaircir votre architecture F5 ?

Échangeons sur vos flux, vos contraintes de disponibilité et votre configuration BIG-IP.