COVESA / vsomeip

An implementation of Scalable service-Oriented MiddlewarE over IP
Mozilla Public License 2.0
1.01k stars 647 forks source link

[Issue]: Notification Reception Failure between Linux Client and QNX Server #646

Open KiruthikaPalanivelu opened 2 months ago

KiruthikaPalanivelu commented 2 months ago

vSomeip Version

3.1.20

Boost Version

1.71

Environment

Qnx and Linux

Describe the bug

I am encountering an issue where notifications from the QNX server (running on 192.168.120.40) are not being successfully received by the Linux client (running on 192.168.120.43). Both the client and server are running on VMs within the same board, with QNX operating as a hypervisor.

Reproduction Steps

  1. Start the Linux client on VM at 192.168.120.43.
  2. Start the QNX server on VM at 192.168.120.40.
  3. Initiate a notification from the server to the client.
  4. Observe that the notification is not received by the client.

Expected behaviour

The Linux client should successfully receive notifications sent by the QNX server.

Configuration Details: Client Configuration: Operating System: Linux IP Address: 192.168.120.43 Server Configuration: Operating System: QNX IP Address: 192.168.120.40 Additional Information: Both VMs are running on the same board. The communication setup seems to be correct as requests and responses are working between the client and server. The issue specifically pertains to receiving notifications from the server on the client.

Ports are checked using netstat command.

Logs and Screenshots

image

Based on the vsomeip community answers, If I change the above IP address to client's IP the response is not received in client,

KiruthikaPalanivelu commented 2 months ago

Config.zip

Attached the config of client and server

KiruthikaPalanivelu commented 2 months ago

@GenivivSOMEIPmaintainer Any help on this?

reymor commented 2 months ago

Hello @KiruthikaPalanivelu

As far as I know you cannot use static routing with events. This means that you shall enable the service discovery. I'm not really sure if this has changed in the last releases, but I don't think so.

You could use methods without Service Discovery (static routing). However, notifications do not work without service discovery.

You could check more here: https://github.com/COVESA/vsomeip/issues/578

Check the wiki: https://github.com/COVESA/vsomeip/wiki/vsomeip-in-10-minutes

But basically, what you had is something like this:

image

If this has change maybe the maintainer could give more details

KiruthikaPalanivelu commented 2 months ago

@reymor Thanks for the information. If in case I need to send data to the client after certain duration. What is the suggested solution to achieve this with our SD?

Is SD manadatory for notification? Any approach to pass the data to client from server without notification?

  1. ( client request server ; Server responded client) image
  2. Server needs to send some information to client

How to do this? @fcmonteiro Hope to get your thoughts.

reymor commented 2 months ago

If you want to continue with your original example, you could achieve what you said with the service discovery. In the wiki that I shared with you there is an example which uses the service discovery to communicate two devices.

https://github.com/COVESA/vsomeip/wiki/vsomeip-in-10-minutes#communication-between-two-devices

If using the service discovery is not a problem for you, just use it.


Is SD manadatory for notification? As far as I know yes, you shall enable service discovery.

And as I said before you could achieve a static routing (no SD) with methods. I will say that there is pretty much everything in the examples + wiki to achieve this.

KiruthikaPalanivelu commented 1 month ago

@reymor Thanks for the suggestion,

I'd enabled SD and with the testing the outcome was not fruitful.

When I disable SD I am able to send and receive request request and response. If I enable SD no request and response communication.

I am not sure what I am missing. Your suggestion is highly appreciated.

Config_Log.zip

@reymor @GenivivSOMEIPmaintainer