Does anyone know the difference between Credit-Control-Application and Ro application in the diameter protocol? Their implementation in Mobicents diameter stack is almost identical.
I have searched within corresponding RFCs and 3GPP documents but couldn't find out which one must be used for online charging process.
Put in a simple way: IETF specifies the protocol while 3GPP specifies how to use the protocol in a very specific context. 3GPP may have additional requirements or recommendations in place when specifying a reference point (or "interface"), but normally this is done w/o violating any IETF RFCs (otherwise conflicts with be liaised to IETF for resolution).
The above usually describes most of the relationship between an IETF-specified protocol and their corresponding use in 3GPP.
For Diameter applications, 3GPP sometimes may also extends IETF RFCs with additional application IDs, AVPs, as well as defining how to map Information Elements (IEs) from other 3GPP interfaces into the AVPs.
Now down to the Credit-control diameter application and Ro interface. The former is defined in RFC 4006, while the latter is defined in 3GPP TS 32.299. I haven't gone through the 3GPP spec in great details, but it's not too difficult to find just a few differences. For example, Credit-Control-Request (CCR) Message for Ro Interface does not used Requested-Service-Unit AVP and a few others as pointed out in Table 6.4.2 of 32.299; but the CCR message may contain QoS-Information, a group AVP defined in 29.212, and this is Ro-specific. Table 6.4.3 of 32.299 describes similar for Credit-Control-Answer message, and look out for more differences laid out by the document.
As for Mobicents, I don't have experiences with its implementation but it won't surprise me that an open-sourced version is not fully-compliant with 3GPP specifications and omits some of the additional features.