> 1) when incoming CCR with multiple MSCC, F5 can detect it, and break it to multiple CCR (each CCR with only 1 MSCC)?
yes, it is possible. in latest version, you can do something like this...
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
}
> 2) if 1) is possible, can F5 consolidate all related (single MSCC) CCR, concatenate to a single CCR and response to original CCR?
I guess you mean CCA? yes, it is possible. however, when we receive each CCA, we may need to save its response to variable, drop it. whenl the last response comes, then you combine all responses into the last CCA and send back to client.
Nat