Difference between CCA and Ro applications in Diameter protocol? - diameter-protocol

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.

Related

Is there any use cases where other DNS classes are useful apart INTERNET?

IN(ternet) class is the default one.
I know another useful one, CHAOS :
censurfridns :
% dig #91.239.100.100 version.bind TXT CHAOS +short
"9.11.4-P2+dampening"
Are the other ones have a use case ?
CS aka CSNET class (Obsolete)
HS aka Hesiod [Dyer 87]
From http://www.faqs.org/rfcs/rfc2929.html
RR CLASS IANA Considerations
DNS CLASSes have been little used but constitute another dimension
of the DNS distributed database. In particular, there is no
necessary relationship between the name space or root servers for
one CLASS and those for another CLASS. The same name can have
completely different meanings in different CLASSes although the
label types are the same and the null label is usable only as root
in every CLASS. However, as global networking and DNS have
evolved, the IN, or Internet, CLASS has dominated DNS use.
There are two subcategories of DNS CLASSes: normal data containing
classes and QCLASSes that are only meaningful in queries or updates.
The current CLASS assignments and considerations for future
assignments are as follows:
Decimal Hexadecimal
0 0x0000 - assignment requires an IETF Standards Action.
1 0x0001 - Internet (IN).
2 0x0002 - available for assignment by IETF Consensus as a data CLASS.
3 0x0003 - Chaos (CH) [Moon 1981].
4 0x0004 - Hesiod (HS) [Dyer 1987].
5 - 127 0x0005 - 0x007F - available for assignment by IETF Consensus as data
CLASSes only.
128 - 253 0x0080 - 0x00FD - available for assignment by IETF Consensus as
QCLASSes only.
254 0x00FE - QCLASS None [RFC 2136].
255 0x00FF - QCLASS Any [RFC 1035].
256 - 32767 0x0100 - 0x7FFF - assigned by IETF Consensus.
32768 - 65280 0x8000 - 0xFEFF - assigned based on Specification Required as defined
in [RFC 2434].
65280 - 65534 0xFF00 - 0xFFFE - Private Use.
65535 0xFFFF - can only be assigned by an IETF Standards Action.
All other ones are basically now obsolete and not used.
See https://miek.nl/2009/july/31/dns-classes/ for some explanations, like:
The CH class has its use in the Chaosnet, which is a network implementation that didn’t make it, unlike the current Ethernet + TCP/IP combo. [..] Today the CH class is missused by BIND, for the following neat tricks: ...
and
The HS class has its origins Project Athena (also see Wikipedia. Which is a naming server ala nis or more recent ldap. With HS class you can put user and group data in your DNS, so you can do without an ldap server. The package hesiod still can be installed if you want to play with this.
Section 3.2 of RFC2929 (september 2000!) already says:
DNS CLASSes have been little used but constitute another dimension of
the DNS distributed database. [..] However,
as global networking and DNS have evolved, the IN, or Internet, CLASS
has dominated DNS use.
It is widely believed now that the DNS specification is not clear enough regarding classes and how much they are isolated one from another.
This latest document (https://tools.ietf.org/id/draft-sullivan-dns-class-useless-03.html) in July 2016 gives explanations on the current status and what to do in the future:
Domain Name System Resource Records are identified in part by their class. The class field is not effective, and it is not used the way it appears to have been intended. This memo makes no recommendation about the DNS parameters registry, but urges those defining new RRTYPEs to define them for all classes.
[..]
As of this writing, there are only three "ordinary" classes assigned. Class 1 is the Internet or IN class. Class 3 is the Chaos or CH class. Class 4 is the Hesiod or HS class. Class 2 is noted in [RFC1035] as the CSNET or CS class, but the current registry (at http://www.iana.org/assignments/dns-parameters/dns-parameters.xml#dns-parameters-2) no longer includes the assignment.
[..]
DNS classes are effectively vestigial
Given the considerations above, it is plain that DNS classes are unlikely to be useful in the future. Designers of new name systems should consider the design of classes in the DNS. If a similar feature is desirable, its design needs to be different in order to be useful. Given the the way the DNS has managed to thrive effectively without classes, however, it would be worth asking whether the feature is useful at all.
You can find a lot of discussions on it, specifically in the IETF Working Group dnsop that cater for these topics:
https://www.mail-archive.com/dnsop#ietf.org/msg14877.html
https://www.iab.org/mail-archive/web/inip-discuss/current/msg00060.html
This specific Internet-Draft is also referenced in RFC 8324 - DNS Privacy, Authorization, Special Uses, Encoding, Characters, Matching, and Root Structure: Time for Another Look?
as [Sullivan-Class] in:
In recent years, demand for new and extended services and uses of the
DNS have, in turn, led to proposals for DNS extensions or changes of
various sorts. [..] A
few features of the original DNS specification, such as the CLASS
property and label types, have also been suggested to be so badly
specified that they should be deprecated [Sullivan-Class].
and
3.6. Alternate Namespaces for Public Use in the DNS Framework: The
CLASS Problem
The DNS standards include specification of a CLASS value, which "identifies a protocol family or instance of a protocol" (RFC 1034, Section 3.6, and elsewhere). While CLASS was used effectively in the early days of the DNS to manage different protocol families within the same administrative environment, recent attempts to use it to either partition the DNS namespace in other ways such as for non-ASCII names (partially to address the issues in Sections 3.2 and 3.3) or use DNS mechanisms for entirely different namespaces have exposed fundamental problems with the mechanism [Sullivan-Class]. Perhaps the most fundamental of those problems is disagreement about whether multiple CLASSes were intended to exist within a given zone (with records within RRSETs) or whether different CLASSes implied different zones. Different implementations make different assumptions [Faltstrom-2004] [Vixie-20170704]. These problems have led to recommendations that it be dropped entirely [Sullivan-Class], but discussions on the IETF list and in WGs in mid-2017 made it clear that there is no clear consensus on that matter.

What is the semantic of having an item flow between Blocks rather than Parts in SysML 1.4?

From my understanding, SysML 1.4 allows to have itemFlows between Block as well as Part
Here is an excerpt from pag 75 of the SysML 1.4 specs
which shows that it is possible to have itemFlow(s) between Blocks.
I am not sure about the semantic of this.
For example, referring to the excerpt from the SysML 1.4 specs, does it mean that every instance of Engine block requires an "itemFlow" connection to an instance of a Transmission block and that a Torque will flow between every Instance of Engine block to the associated instance of Transmission Block?
Yes, of course. At least if the Engine/Transmission are blocks instantiated from this model.
You are free to define other Engines/Transmissions where not Torque is transported (e.g. if you see a copper cable as transmission where current is transported rather than torque).
An item flow in general tells that "something physical" is moved from source to target. The above transports torque. You can also transport current, gas, fluid, etc. Even abstract information can be transported, though SysML is designed to map physical objects, rather than abstract things (where UML will be sufficient).
There is an association between Engine and Transmission. Since we don't see any multiplicity, we may assume that it is 1. That means every Engine instance must be linked to a Transmission instance and vice versa. This is not realistic, but hey, who wants models of reality ;-). In the real world the multiplicity is 0..1.
The item flow just says, that Torque can potentially flow across a link between the two instances.
By the way: This is also not realistic, since torque is the potential to flow, not the item flowing. The item is rather angular momentum. For reasons I don't understand, the potential (e.g. Torque) or the rate (e.g. Current) is often used in place of the item that is flowing in reality.

Formal way to describe protocols

Is there a formal/traditional way to describe data/command exchange protocols? For example, for programming languages there are multiple approaches to describe the syntax and semantics (like: http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form).
The approach I am looking for is rather utilitarian (in contrast to academic). I need something for day-to-day use for data exchange description while working on specifications, just to transfer/spread clearly the idea to others. So, if there is something that is not recognized as a de-facto standard but is useful - it is ok too.
I took a look at UML sequence diagrams and "Formal Methods for Communication Protocol Specification And Verification, by Carl A. Sunshine, 1979". Former method is missing the description of "payloads" (at least from what I understood) while latter one is rather an educative paper describing considerations rather than methods (I am still going through this paper, though).
Thanks in advance
Protocols are about messages sent in accordance to a series of interactions.
The best way to specify protocols that I have seen is with Colored Petri Nets (CPNs).
CPNs are based on ("uncolored") Petri Nets (PNs), which define how parallel activities synchronize, e.g., the message responses, by using Places to represent possible states, Tokens-in-places to represent state, and transition (synchronization) gates to indicate where parallel states must coincide to make progress. Petri Nets can model Finite State Machines (an FSA is a PN that always has a "single token", e.g., the "current state") and so are a generalization; in fact, they can "exponentially compress" certain FSAs into very small descriptions and can thus be quite succinct even for complex interaction sequences. But a conventional PN does not address the data being exchanged.
CPNs generalize PNs to add data types. The tokens now have "colors" (funny way to say "data type") and transitions can not only synchronize but can combine tokens to produce other tokens, e.g., compute new values.
A protocol modelled as CPN thus has message content as data types, and PNs states to indicate the syncronization. If you've never used a CPN, it is really worth your trouble to learn what they are, because they are such a pretty generalization of FSAs.
Regarding OPs' "utilitarian" remark, there are very good tools available at CPN Tools, including graphical modelling and code generation.
In telecommunications, the standard for describing interaction between network elements is Z.100 : Specification and Description Language (SDL) and the companion Z.120 : Message Sequence Chart (MSC) recommendations. The suite includes a testing framework.
A more mathematically bent approach would be to use various state machine models of some type.
One of the early publications, Design and Validation of Computer Protocols (1991), was written by Gerard Holzmann to describe the SPIN model checker and the PROMELA language.
Almost any other notation like TLA+, Petri-nets, Alloy, CSP, Z, ... can also be used to reason about protocols and the choice often depends on familiarity and tools availability.
If rigour is not essential, then Harel state charts provide a notation familiar to many engineers.
Fundamentally, the problem with sequence charts on their own is that they describe a single trace through the protocol. They cannot easily show the non-determinism required to describe parallel operations, and struggle to succinctly represent choice. When extended with hierarchical message charts (HMC) then they fall back into the state machine space.
If by "utilitarian" you mean "useful", consider Petri Nets. Please see my reply below or consider a PDF version of the reply.
first page of reply http://www.aespen.ca/AEnswers/lMtbX1428143440-0_Page_1.jpg
second page of reply http://www.aespen.ca/AEnswers/lMtbX1428143440-0_Page_2.jpg
For what it's worth, since you mention BNF: I believe I have read that Wirth used EBNF to specify protocols, with prose explaining which parts of the string were to be emitted by the client and which parts by the server. I am unable to find the reference off-hand, but my recollection is that the example I read was clearer than most protocol descriptions I have read elsewhere.

Tool for protocol or interface description

We have to develop a protocol as a interface description between different systems in different companies. The implementations will be made in different languages (not known) by the developers in each company.
However, we want to develop the protocol on a textual description base together. I will have the base copy of the current version and want to send it out to all for comments.
What is a good tool to do so?
At the moment we are using MS Word what leads to several problems:
We need a lot of time for text formatting things.
Its not possible to reference to a datatype in the methods description.
The wording differs from chapter to chapter (different authors) and is hard to align.
Perfect would be:
A tool with a glossary and auto-completion.
References to other items (methods, data types, ...) with active links.
Automatic generation of a human-readable (PDF-) document.
Do you know such a tool?
PS: I did not get Sparx Systems Enterprise Architect doing the job. Maybe also hints for this one?
This is a very big question, since there are many possible aspects you may (should) wish to document in a protocol specification. The two most important ones would be data structures and message sequences, then there's error management, authentication, timing, etc etc.
UML can certainly be used to describe these things, and Enterprise Architect is eminently able to generate versatile documentation from a model - it will definitely help with your reference issues. But first you will have to determine quite strictly how each aspect of the protocol is to be modelled, and from that you will need to construct the necessary EA configuration / adaptation.
In order to get good quality documents out of EA, I recommend generating the documents from an Add-In using the Object Model's DocumentGenerator class as this gives you more flexibility than the traditional RTF generator - for one thing, you can access Word's API in addition to EA's and thus do far more with the document than is possible using EA's API alone.
Without knowing the size or complexity of your protocol, I'd say this would require at the very least a few weeks' work for someone who is experienced in writing EA adaptations. But if the scope of your project is such that there are several companies involved, it is likely to be worth the investment.

Show business process information flow direction on UML interfaces

UML component diagrams are good at showing technical client-server-like inteface relationships between components, using the "lollipop" notation or dependency arrows.
Is there a notation in component diagrams for showing in which direction information flows through interfaces on business process level? Like a client can connect to a server and
put/push information,
get/pull information or
the interface is used bidirectionally.
How can that be depicted in component diagrams?
UML activity diagrams allow for in-flow and out-flow pins, however ommitting the bidirectional case. Would it be sane to use the pin notation on component ports?
Sure can, a high level conceptual line was added to UML at some point. They are called information flows. The direction of the arrow makes sense to business users as well. The OMG spec covers this pretty well. For the push, pull, etc meta data I would use keywords or stereotypes to convey this. Interfaces, Classes, Data Types can all be referenced by the Information flow as what is traveling between the two classifiers (Components, Classes, etc). Many tools have implemented this construct because of it's usefulness despite in being and auxiliary construct.
Link to OMG spec and location: Section 17.2 on printed page 609. Superstructure, ie what you use (http://www.omg.org/cgi-bin/doc?formal/09-02-02)
17.2 InformationFlows
The InformationFlows package provides mechanisms for specifying the exchange of information between entities of a
system at a high level of abstraction. Information flows describe circulation of information in a system in a general
manner. They do not specify the nature of the information (type, initial value), nor the mechanisms by which this
information is conveyed (message passing, signal, common data store, parameter of operation, etc.). They also do not
specify sequences or any control conditions. It is intended that, while modeling in detail, representation and realization
links will be able to specify which model element implements the specified information flow, and how the information
will be conveyed.
The contents of the InformationFlows package is shown in Figure 17.2. The InformationFlows package is one of the
packages of the AuxiliaryConstructs package.

Resources