6

My understanding is that the time(out) between two consecutive DIMSE communications (request or response) is DIMSE Timeout.

So, in MWL operation, MWL SCU (establishes the connection and association and) sends the MWL CFind request. SCP should send first response before DIMSE Timeout expires. Similarly, each next response should be sent by SCP before DIMSE Timeout expires.

Similarly, for CStore operation, CStore SCU sends the request and SCP should respond before DIMSE timeout expires. This should happen for each instance sent on that association.

Is my understanding correct?

If yes, then how does this work for big size instances those take long time (more than DIMSE Timeout set) to completely transfer?

For example, CStore SCU is pushing an instance (big size multi frame lets say) which take 1000 milliseconds to transfer completely. DIMSE Timeout on both SCP and SCU is set to 500 milliseconds. What is expected result here? Will SCP or SCU encounter DIMSE Timeout?

Amit Joshi
  • 15,448
  • 21
  • 77
  • 141

2 Answers2

5

A DIMSE C-STORE message for a big object is split into multiple P-DATA packets (PDUs, those are the TCP packets sent through the network). So actually, two timeouts apply:

  • The DIMSE timeout. This timeout occurs between two subsequent DIMSE messages
  • The PDU timeout. This occurs between two subsequent PDUs.

E.g. for the C-STORE service:

  • if the SCP does not send the C-STORE response timely after the request has been completely sent (i.e. all frames transferred) -> DIMSE timeout
  • if the SCU does not send the first PDU for the next C-STORE request timely after the response to the previous object has been sent by the SCP -> DIMSE timeout
  • if the timespan between 2 subsequent fragments (PDUs) sent by the SCU exceeds the SCP's expectations -> PDU timeout
Markus Sabin
  • 3,916
  • 14
  • 32
  • do you mean dimse timeout base on dimse primitives? – Kamil Dec 10 '20 at 07:14
  • Not sure to understand your question. My answer explains the different timeouts that can occur one of which is referring to DIMSE primitives. But below that, a PDU timeout can occur since a DIMSE message may be split into several PDUs – Markus Sabin Dec 10 '20 at 08:40
  • seems your answer shows: between dimse primitive communication, if one primitive(response primitive, ex.) not responsed by scp, it will cause dimse timeout, am I right? – Kamil Dec 10 '20 at 10:09
  • Yes. I would really like to understand your confusion to improve my answer. Is the unclarity caused by not explicitly stating that C-STORE _is_ a DIMSE request? – Markus Sabin Dec 10 '20 at 15:55
0

I think that it's cause the action is still in progress, the system knows this and doesn't timeout, DIMSE message (in progress) are still being sent. The DIMSE timeout is for when the system doesn't get a DIMSE response for the configured time, like if the machine disappears from the network.

Also I believe most systems will be using non-blocking mode and so will not timeout in the middle of a transfer. For example you send 100 images and after 98 images the system doesn't receive a new image for 20 hours, unless a cancel operation signal is sent the system will still be waiting for those last two images.

treesloth
  • 56
  • 4