← Back to team overview

opensand team mailing list archive

Re: Ideas for phase two

 

Andy,

> After some time with project documentation (mainly "dev manual" and
> "coding rules") my preparation are done and I'm working on my task
> now.

Great!
 
> In order to perform my task I decide to track any name which doesn't
> look as AAL5/ATM.
> As I said in last email I came up with some questions as usual :)
> Here you go:
> 
> 1. First of all what is a true nature of ATM and AAL5 coexistence in
> this project? It will help me understand better why you have to relay
> on this transformation.
> As far as I know AAL5 stands for ATM Adaptation Layer (from level 1
> to 5). I guess we use level 5 to implement a specific procedure which
> defines segment and reassemble higher-layer packets into ATM cells. I
> presume that algorithm is working fine. Only inconsistency with
> naming is an issue.

Yes, you got it.

ATM is a way to transmit data over DVB-S/RCS satellite systems. It is
not the only one, OpenSAND also supports MPEG2-TS/ULE and GSE. These
methods are called "encapsulation" stacks/methods/schemes in OpenSAND.

ATM defines virtual channels (see virtual paths and virtual circuits in
the Wikipedia page [1]) to segregate data for different STs and/or of
different QoS classes.

On these channels, small chunks of data are transmitted: ATM cells.
They are 53-byte long. They can contain 48 bytes of payload.

ATM is not specific to the transmission of IP packets. It can transmit
other protocols as well.

When transmitting IP over ATM, an adaptation layer is required to allow
large IP packets (up to 65535 bytes) to be split in several 53-byte ATM
cells. The adaptation layer is AAL5 [2].

[1] https://en.wikipedia.org/wiki/Asynchronous_Transfer_Mode
[2] https://en.wikipedia.org/wiki/AAL5


> So far I've found that following files needs our attention:
> 
> *opensand-trunk/opensand-plugins/atm/src/*
> 
>    - Atm.cpp
>    - atm_aal5.py
>    - atm_support.py
>    - Makefile (header)
> 
> *opensand-trunk/opensand-plugins/gse/src/*
> 
>    - Gse.cpp
>    - gse.py
> 
> *opensand-trunk/opensand-plugins/mpeg/src/*
> 
>    - Mpeg.cpp
>    - mpeg.py   ....

Seems OK for source files.

Julien: could you check the list please?


> Checking each of folder one by one is a pain in the bottom :) So I
> decide to use something more sophisticated - which is quite obvious
> in that case:)
> 
> grep -rl "ATM/AAL5" /home/andyg/opensand-trunk/

:-)
 

> Results are in the attached file. It's looks like there is quite a
> lot of files to update. I checked only half of it so far.

Many of them are configuration files for automated tests (almost
everything in opensand-tests/). 

You can update in an automated way with a smart editor / IDE or with a
shell script.


> For the other phrase ("AAL5/ATM") I have found nothing:
> 
> Search through phrase "ATM" is point less (to many results).
> My question is in what situation this phrase can be replaced by
> "AAL5/ATM" ??

It can be replaced when it is:
 - the string that identifies the encapsulation scheme (XML
   configuration files, configuration parsing, GUI...).
 - in a comment that refers to the encapsulation scheme.

 
> 2. Is there any area where information about ATM or AAL5 shouldn't
> stay as it is (simply ATM or AAL5)?
> I asked about it because you mention before that the issue is not only
> related to changes from ATM/AAL5 to  AAL5/ATM. It's also related to
> ATM only.
> Based on my code research I can say that they are some sources which
> are related only to ATM functionality, and they are separate from AAL5
> extension (modular approach). I presume that most of this is an area
> where changes shouldn't be made.

There is code that is ATM-only. Some that is AAL5-only. Some that is
both, with ATM/AAL5 instead of AAL5/ATM. Some that is both, with
ATM instead of AAL5/ATM.

An example of ATM-only code is opensand-plugins/atm/src/AtmCell.cpp. It
defines an ATM cell, and it does not refer to AAL5 at all.

An example of mostly-AAL5-only code is opensand-plugins/atm/src/Aal5Packet.cpp.
It defines an AAL5 packet. Most of it refers only to AAL5, however it
seldom refers to ATM because AAL5 and ATM interacts together. For example,
the following comment is OK and shall be kept unchanged:
  // AAL5 packet length must be multiple of 48 (= ATM payload length)

An example of code with ATM/AAL5 instead of AAL5/ATM is
opensand-plugins/gse/src/Gse.cpp. It defines the GSE encapsulation
scheme, that can be stacked with the AAL5/ATM encapsulation scheme. For
example, in the Gse constructor, the following line shall be changed:
  this->upper[REGENERATIVE].push_back("ATM/AAL5");

An example of code with ATM instead of AAL5/ATM is
opensand-plugins/atm/src/Atm.cpp. It defines the AAL5/ATM encapsulation
scheme, not the ATM-only encapsulation. The file shall be renamed to
Aal5Atm.cpp, and the class it contains too.


I hope that I answered your questions. If not, tell so.

Regards,
Didier



Follow ups

References