DDoS Detection, Mitigation, Orchestration, and Threat Intelligence
Consolidated Security & CGNAT
TLS/SSL Inspection
Web Application Firewall
Application Security & Load Balancing
Analytics & Management
CGNAT & IPv6 Migration
HTTP Header Enrichment is the process of adding data fields in the HTTP header used by downstream servers. This is commonly used in mobile networks by adding user and device identifiers such as IMEI, IMSI, MSISDN UID or other data to identify subscriber or mobile device details.
HTTP Header Enrichment is usually done at the Gateway GPRS Support Node or at other network boundaries by gateway or edge products with this feature capability.
Additional information is typically added to HTTP headers to be processed by other systems for traffic steering, processing traffic for additional add-on services or processed by billing, analytics or subscriber application systems.
Provide unique and differentiated subscriber experiences and benefit from new service monetization opportunities with A10 HTTP header enrichment solution.
Learn How to Boost Revenue
The HTTP protocol allows custom data records to be added into the HTTP header. The format of this is usually:X-your-data: xxxxxxxxxxxxxxxxxxxxxxxx
X-your-data: xxxxxxxxxxxxxxxxxxxxxxxx
Injecting the MSISDN into the HTTP Header might look like:X-MSISDN: xxxxxxxxxxxxxxxxxx
X-MSISDN: xxxxxxxxxxxxxxxxxx
Practically anything can be added to HTTP headers. Since HTTP is a textual protocol, processing this information later is a simple operation
A use case example is presented. The code to implement this with the A10 aFleX language is presented in the next section.Adding the MSISDN Subscriber information to the HTTP Header.
# aFleX script to provide Header Enrichment for # the purpose of policy based Traffic Steering. # # This comes in 2 parts. # 1) Script that is bound to a RADIUS VPORT. # 2) Script that is bound to a HTTP VPORT. # Virtual Server Port: RADIUS # when RULE_INIT { set ::DEBUG 0 } when CLIENT_DATA { binary scan [RADIUS::avp 40] H* avp40 if { ($::DEBUG == 1) } { log "RADIUS == User-Name=[RADIUS::avp 1], User-Password=[RADIUS::avp 2], Framed-IP-Address=[RADIUS::avp 8], Filter-Id=[RADIUS::avp 11], Calling-Station-Id=[RADIUS::avp 31], Acct-Status-Type=$avp40" } if { $avp40 == 1 } { table set msisdn [RADIUS::avp 8] [RADIUS::avp 31] indef table set policy [RADIUS::avp 8] [RADIUS::avp 11] indef if { ($::DEBUG == 1) } { log "RADIUS == TABLE SET MSISDN: [table lookup msisdn [RADIUS::avp 8]] - POLICY: [table lookup policy [RADIUS::avp 8]]" } } elseif { $avp40 == 2 } { table delete msisdn [RADIUS::avp 8] table delete policy [RADIUS::avp 8] if { ($::DEBUG == 1) } { log "RADIUS == TABLE DELETE MSISDN: [table lookup msisdn [RADIUS::avp 8]] - POLICY: [table lookup policy [RADIUS::avp 8]]" } } } # # Virtual Server Port: HTTP # when RULE_INIT { set ::DEBUG 0 } when HTTP_REQUEST { HTTP::header insert MSISDN [table lookup msisdn [IP::client_addr]] HTTP::header insert User-Type [table lookup policy [IP::client_addr]] if { ($::DEBUG == 1) } { log "HTTP == MSISDN: [table lookup msisdn [IP::client_addr]] - POLICY: [table lookup policy [IP::client_addr]]" } }
The A10 Networks Thunder platform of products provides a broad set of network and security features.
Take this brief multi-cloud application services assessment and receive a customized report.