bugCERTI - Bugs: bug #54166, BEST_EFFORT (UDP Based)...

 
 

bug #54166: BEST_EFFORT (UDP Based) communication for CERTI

Submitter:  JbCh <jb_ch>
Submitted:  Thu 21 Jun 2018 09:31:21 PM UTC
   
 
Category:  CERTI Severity:  * 2 - Minor
Item Group:  Feature request Status:  Need Info
Privacy:  Public Assigned to:  jb_ch
Open/Closed:  Open Release:  * Unknown
Reproducibility:  Every Time Fixed Release:  * Unknown
* Mandatory Fields

Add a New Comment Rich Markup
   

Thu 21 Jun 2018 09:31:21 PM UTC, original submission:  

Hello,

I am writing this ticket to keep kind of documentation on this topic. I investigated a little and this topic is much complex than I thought. Therefore I am writing what I think (my understanding) and anyone is welcome to comment or document. I have tried many modifications of the CERTI implementation but the problem itself requires a little software design...

For years now, as a lof of other RTIs, CERTI is using RELIABLE (TCP based) communications. The TCP based distributed exchange is great for its simplicity. Every federate connects to the RTIG TCP socket and internally the RTIG create a dedicated socket (or a logical equivalent) for each federate. Therefore the RTIG is able to reach any RTIAs by using send function.

For the UDP, the RTIG UDPSocket class keeps memory of a sender ID (IP address, UDP port) and a receiver ID (IP address, UDP port). When the RTIG receive a network message on a UDP channel, it receives a message on its port (default in CERTI is 64000) and it know where it comes from (the ID is (local_rtia_ip_addr, local_rtia_udp_port)). But the socket class structure is not capable to register to whom it is supposed to forward the UDP message received (for example to all federate which registered to the interaction or updateAttributesValues). The reason is that the RTIG is not able to store currently (using SocketUDP class in SOcketServer class) all the federate ID (IP adress and UDP port) to which it has to send message.

I see two options:
1) First one is to use SocketUDP as it is and store in the class some map<federate_handle, ID(federate_ip_address, udp_port>> and change the federate ID many times before the SocketUDP;send() function
2) Create a dedicated UDP socket (for sending for example named SendingUDP socket class) for each federate in the RTIG. Thefore the RTIG wil use its existing UDPSocket in SocketServer only to reply back to the sending RTIA (direct feedback) and uses the others sending socket to send data to subscribes federates.

Any comments is welcome!
Cheers,
Jb_Ch

JbCh <jb_ch>
Group administrator

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by jb_ch (Submitted the item)
  •  

    No changes have been made to this item

    Back to the top

    Powered by Savane 3.13-cf05.
    Corresponding source code