Diniz Martins

Mar 30, 20201 min

A10 | aFleX

Updated: Mar 31, 2020

What is aFlex?

aFleX is a scripting tool that is built into the Thunder Series Server Load Balancers. aFleX is based on a standard scripting language, TCL (Tools Command Language), enabling the load balancer to perform Layer 7 deep-packet inspection (DPI). Information in the header or data portion of the packet can then be erased, changed or manipulated as needed, or the packet can be dropped or redirected based on the information.

Advantages of using aFleX:

aFleX policies allow you to exercise more granular control of packet inspection and traffic load balancing.

Elements of an aFleX script:

Events, Operators and aFleX commands.

- Events

aFleX scripts are event-driven, which means the aFleX script is triggerd when the specified event occurs.

Examples:

HTTP_REQUEST event occurs when an HTTP request is received.

CLIENT_ACCCEPTED event occurs when a client has established a connection.

- Operators

Standard Tcl operators Note: Tcl tutorial

Relational operators:  contains, matches, equals, starts_with, ends_with, matches_regex

Logical operators: not, and, or

- aFleX commands

Used to query for data, manipulate data, or specify a traffic destination. These may be grouped into three main categories:

> Statement commands.
 
Example: pool directs traffic to the named load balancing pool.

> Commands that query or manipulate data
 
Examples:

IP::remote_addr returns the remote IP address of a connection.

HTTP::header remove removes the last occurrence of the named header from a request or response.

> Utility commands – useful for parsing and manipulating content
 
Example: decode_uri decodes the named string using HTTP URI encoding and returns the result.

Some scenarios:

    6490
    8