View Issue Details

IDProjectCategoryView StatusLast Update
000552410000-006: MappingsSpecpublic2024-05-21 15:38
ReporterV. Monfort Assigned ToRandy Armstrong  
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionreopened 
Product Version1.03 
Fixed in Version1.05.04 RC1 
Summary0005524: No error code identified to limit size on server side of response message to be sent
Description

Hello,

In TCPUA protocol and sessions services each peer (client/server) might declare a maximum size for OPC UA message it will accept to receive.
There is no revision of those parameters, i.e. MaxMessageSize/MaxChunkCount in HEL/ACK and maxResponse/maxRequest
MessageSize, which means it is not possible to declare we will limit size when encoding message to be sent to the other peer.
However it seems not reasonable to accept unlimited or too large sizes for availability and even security issues (memory limits, etc.).
There is no clear indication on how to deal with message to be sent in the specification whereas it is described for message received, the following status code seem only meant to be used in reception:

  1. "Bad_RequestTooLarge: The request message size exceeds limits set by the server." (v1.03, part 4, table 172)
  2. "Bad_ResponseTooLarge: The response message size exceeds limits set by the client." (v1.03, part 4, table 172)
  3. "Bad_EncodingLimitsExceeded: The message encoding/decoding limits imposed by the Communication Stack have
    been exceeded." (v1.03, part 4, table 172)
  4. "TcpMessageTooLarge: The size of the Message specified in the header is too large.
    The Server returns this error if the Message size exceeds its maximum buffer size or the receive buffer size negotiated during the Hello/Acknowledge exchange.` (v1.03, part 6, table 38)

Status codes 1. and 2. indicates explicitly that it means to be used for the peer limit (and not for self limit when encoding the message).
It is also indicated in part §5.3:
"The Server should return a Bad_ResponseTooLarge fault if a serialized response message exceeds the message size specified by the Client. Similarly, the Client Communication Stack should report a Bad_RequestTooLarge error to the application before sending a message that exceeds the Server’s limit."

Status code 3. might be appropriate given its description but the only mention in the specification also indicate it shall be used for decoding only in §5.3:
"Message parsing can fail due to syntax errors or if data contained within the message exceeds ranges supported by the receiver. When this happens messages shall be rejected by the receiver. If the receiver is a Server then it shall return a ServiceFault with result code of Bad_DecodingError or Bad_EncodingLimitsExceeded. If the receiver is the Client then the Communication Stack should report these errors to the Client application."

And finally status code 4 is only meant to be used for a reception of a message invalid size.

I guess status code 3 might be used also in case of sender limit that cannot be declared during HEL/ACK or CreateSession, but it is not cleary stated by the spec. It is also what I understand from 0000254.
Could you make this use of the status code when encoding explicit in the specification if you agree ?

Moreover this analysis came from issues with UACTT 1.3.341.390 for View Basic tests 005/015/020 in which UACTT specifies no limit in reception and send huge BrowseRequest of more than 3000 elements. As a consequence the response need 12 chunks of 65k and sending a ServiceFault with Bad_EncodingLimitsExceeded is not managed by UACTT to reduce the request size in addition to issue 0005517.

Best regards

TagsNo tags attached.
Commit Version1.05.04 RC
Fix Due Date

Relationships

related to 0009556 closedMatthias Damm 10000-004: Services No error code identified to limit size on server side of response message to be sent 

Activities

Jim Luth

2020-05-19 16:56

administrator   ~0012080

Randy needs to read this to see if there is an issue.

Randy Armstrong

2020-06-17 03:36

administrator   ~0012367

Bad_RequestTooLarge and Bad_ResponseTooLarge are used when the peer MaxMessageSize limits provided in HEL/ACK are exceeded.

Bad_TcpMessageTooLarge is used when the a MessageChunk exceeds the ReceiveBufferSize for the Server.

Bad_EncodingLimitsExceeded are reported by encoders/decoders at a layer above the UA-CP message and apply to max lengths of arrays and strings appearing in a Message.

Changed Bad_TcpMessageTooLarge text to:
The size of the MessageChunk specified in the header is too large.

Jim Luth

2020-06-18 17:31

administrator   ~0012435

Agreed to changes in virtual F2F.

Matthias Damm

2023-10-17 10:01

developer   ~0020198

The text for Bad_ResponseTooLarge still refers only to the client but the server may have reduced the limit futher.
Christian Zugfil will provide futher details.

Randy Armstrong

2023-10-18 01:45

administrator   ~0020203

Changed to:
The response message size exceeds limits set by the client or server.

Jim Luth

2024-05-21 15:38

administrator   ~0021219

Agreed to change in Web Meeting.

Issue History

Date Modified Username Field Change
2020-03-12 10:57 V. Monfort New Issue
2020-05-19 16:56 Jim Luth Project UA Specification => 10000-006: Mappings
2020-05-19 16:56 Jim Luth Note Added: 0012080
2020-05-19 16:56 Jim Luth Assigned To => Randy Armstrong
2020-05-19 16:56 Jim Luth Status new => assigned
2020-06-17 03:36 Randy Armstrong Status assigned => resolved
2020-06-17 03:36 Randy Armstrong Resolution open => fixed
2020-06-17 03:36 Randy Armstrong Note Added: 0012367
2020-06-18 17:31 Jim Luth Status resolved => closed
2020-06-18 17:31 Jim Luth Fixed in Version => 1.05
2020-06-18 17:31 Jim Luth Note Added: 0012435
2023-10-17 10:01 Matthias Damm Status closed => feedback
2023-10-17 10:01 Matthias Damm Resolution fixed => reopened
2023-10-17 10:01 Matthias Damm Note Added: 0020198
2023-10-18 01:45 Randy Armstrong Status feedback => resolved
2023-10-18 01:45 Randy Armstrong Note Added: 0020203
2024-05-21 15:35 Jim Luth Issue cloned: 0009556
2024-05-21 15:35 Jim Luth Relationship added related to 0009556
2024-05-21 15:38 Jim Luth Status resolved => closed
2024-05-21 15:38 Jim Luth Fixed in Version => 1.05.04 RC1
2024-05-21 15:38 Jim Luth Commit Version => 1.05.04 RC
2024-05-21 15:38 Jim Luth Note Added: 0021219