Forum Discussion
abeny_894
Mar 07, 2012Nimbostratus
Diameter questions
Hi all, Good Day! I have a question about F5 LTM with Diameter need to seek advise, anybody can help?
For a Diameter (DCCA) charging, a CCR ( Initial, Update, Terminate) may consist multiple MSCC. Is it possible that: 1) when incoming CCR with multiple MSCC, F5 can detect it, and break it to multiple CCR (each CCR with only 1 MSCC)?
2) if 1) is possible, can F5 consolidate all related (single MSCC) CCR, concatenate to a single CCR and response to original CCR?
Can iRules handle the above case? Thank so much
Abeny
- Nat_ThirasuttakornEmployee> 1) when incoming CCR with multiple MSCC, F5 can detect it, and break it to multiple CCR (each CCR with only 1 MSCC)?
when DIAMETER_EGRESS { extract header (yeah, we should have a better way of cloning whole header) set v [DIAMETER::header version] set r [DIAMETER::header rflag] set p [DIAMETER::header pflag] set e [DIAMETER::header eflag] set t [DIAMETER::header tflag] set c [DIAMETER::command] set aid [DIAMETER::header hopid] set hid [DIAMETER::header hopid] set eid [DIAMETER::header hopid] set count [DIAMETER::avp count 456] for { set i 0 } { $i < $count } { incr i } { copy all AVPs to variable set avps [DIAMETER::payload] delete other MSCCs for { set j 0 } { $j < $count } { incr j } { if { $j != $i { DIAMETER::avp delete 456 $j source $avps } } we might need to modify hop by hop id and end to end id to make it unique otherwise, server may be confused. however, it may also depend on server's implementation we might also need to keep some tracking information? so we can combine them back later on... DIAMETER::respond $v $r $p $e $t $c $aid $hid $eid $avps } drop original CCR DIAMETER::drop }
- abeny_894NimbostratusThanks so much Nat :)
- Nat_ThirasuttakornEmployeeHi Abeny,
when DIAMETER_INGRESS { if it is not the last one, collect data, drop if it is last CCA, append data which is collected earlier before pass it through if { ! $last_CCA_of_the_same_series } { save necessary part of response, for example, you may - delete common avp such as, Origin-Host/Realm/etc example: set avps [DIAMETER::payload] DIAMETER::avp delete Origin-Host source $avps Then append avps to a variable use some form of unique key such as hid/eid/subscriber-id? to ensure resposne belongs to same CCR append collected_avps($key) $avps Then drop current response DIAMETER::drop } else { DIAMETER::payload replace [DIAMETER::payload]$collected_avps } }
- abeny_894NimbostratusNat, thanks so much for your kindly help. :)
Recent Discussions
Related Content
DevCentral Quicklinks
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
Discover DevCentral Connects