Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-67926

Knx endpoint connection (tunnelingrequest flow)

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P2: Important
    • 5.11.1
    • 5.10.1, 5.11
    • KNX
    • None
    • 34cffcd585b12902bb7a9ed6622915aefc639e62

    Description

      I am very happy to be testing the qtknx library.
      I've stumbled upon an issue and I wonder if you can help me solve it.
       
      The issue presents when sending a 'WriteRequest'-frame via an 'QKnxNetIpTunnelConnection'.
      I use wireshark to analyze the packets, and I notice an issue in the packethandling.
       
      The IP interface used is 'KNX/IP Interface 730' from Weinzierl.
       
      When simulating the WriteRequest via ETS, I notice the following flow when writing to a communication object:
      ETS -> IP interface (TunnellingRequest)
      IP interface -> ETS (Ack)
      IP interface -> ETS (TunnelingRequest)
      ETS -> IP interface (Ack)
       
      When I use the function in 'sendTunnelFrame' from the 'QKnxNetIpTunnelConnection' connection, I notice the following flow:
      qtknx -> IP interface (TunnellingRequest)
      IP interface -> qtknx (Ack)
      IP interface -> qtknx (TunnelingRequest)
      IP interface -> qtknx (DISCONNECT REQUEST)
       
       
      As you notice, the qtknx library does not ACK the tunnelingrequest, which causes the IP interface to disconnect to the library.
       
      I've found thehandling for the tunnellingrequest packets here: https://github.com/qt/qtknx/blob/5.11/src/knx/netip/qknxnetipendpointconnection.cpp#L155
       
      During debugging, I notice the 'dataEndpoint'-readyReady handler is never called and that the 'controlEndpoint'-readyRead handler is called when a 'TunnellingRequest'-packet is received.
       
      I've placed the 'QKnxNetIp::ServiceType::TunnelingRequest' into the 'controlEndpoint' handler, which worked, since now it's correctly sends an ACK message back to the IP interface (see attachment for wireshark plots).

       
      Unfortunately, the ack message is send after 1 second (which is way to long for the IP interface), since the DISCONNECT REQUEST is send after a couple of milliseconds.
        
      Thanks!
       
      Jonathan.

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            heimrich Karsten Heimrich
            jonathanv Jonathan Vervaeke
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes