What is HTTP Header Enrichment?
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.
Boost Revenue with HTTP Header Enrichment in Mobile Networks
Provide unique and differentiated subscriber experiences and benefit from new service monetization opportunities with A10 HTTP header enrichment solution.
How HTTP Header Enrichment Works
The HTTP protocol allows custom data records to be added into the HTTP header. The format of this is usually:X-your-data: xxxxxxxxxxxxxxxxxxxxxxxx
Injecting the MSISDN into the HTTP Header might look like: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
Example Use Case
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.
- Parse the Username from the instream HTTP Header. This is the network Subscriber Username already existing in the HTTP headers.
- Query the provider Radius server with the Username and retrieve the related MSISDN for this specific Subscriber
- Inject the data X-msisdn and related data into the HTTP Header
Code Sample
# 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]]" }
}
How A10 Networks Can Help
The A10 Networks Thunder platform of products provides a broad set of network and security features.
- A10’s Thunder Application Delivery Controller (ADC) includes the aFleX language with the ability to easily enhance HTTP headers and many other customized features for managing and controlling network traffic.
- A10’a Thunder Convergent Firewall (CFW) is a large scale mobile network carrier solution purpose designed for carrier networks.