Forum Discussion

Henrik_Gyllkra1's avatar
Oct 22, 2014

Inserting AVP:s in DIAMETER

Hello,

 

I have the following scenario: A BIG-IP PEM is used to send messages to an OCS and it seems that the PEM only includes the AVP Subscriber Id (code 443) in the initial request, but it would be vastly more efficient for the OCS if the Subscriber Id was included in additional updates for that subscriber. I'm told that if they have to crossreference the Session Id to find the Subscriber Id it will double the load on the OCS. I have created the following iRule:

 

when DIAMETER_EGRESS {
   if { [DIAMETER::is_request] }{
      set client_ip [getfield [DIAMETER::session] ";" 4]
      log local0. "Session ID: [DIAMETER::session], Codes [DIAMETER::avp codes], IP $client_ip"
      log local0. "Request type: [DIAMETER::avp data get 416 integer]"
      if { [DIAMETER::avp codes] contains "443" }{
         table set $client_ip [DIAMETER::avp data get 443 grouped] 1800
      }
      if { ([DIAMETER::avp codes] contains "263") and not ([DIAMETER::avp codes] contains "443") }{
         set avpdata [table lookup $client_ip]
         DIAMETER::avp data set 443 [table lookup $client_ip] grouped
         log local0. "Subscriber Id should be inserted, [PEM::session info $client_ip imsi], [table lookup $client_ip]"
      }
   }
}

The logic part is WIP but for now it does what I need, i.e. I can see the log messages I expected, but on the captured packets that should have the Subscriber Id AVP inserted there is still no Subscriber Id present.

 

Have anyone encountered a similar scenario, and successfulle inserted AVP:s into DIAMETER. If so, how? Any suggestions are greatly appreciated.

 

No RepliesBe the first to reply