View Issue Details

IDProjectCategoryView StatusLast Update
000773710000-022: Base Network ModelSpecpublic2023-05-16 16:22
ReporterMatthias Damm Assigned ToGreg Majcher  
PrioritynormalSeverityfeatureReproducibilityhave not tried
Status closedResolutionno change required 
Product Version1.05.00 
Target Version1.05.03 RC1 
Summary0007737: PubSub capablity for max network message size
Description

There are different reasons for limiting the possible max network message size that can be used for a protocol binding.
This would be the maximum setting that can be used for the PubSub application.

This feature request is from a 1.05.01 RC coment and also from a discussion in the FLC WG.

We need different capablity variables for different protocol options.

Additional Information

Comment from Georg on 1.05.01 RC:
Are there any limits settable, so that an implementation may restrict itself to support e.g., 16 kByte max message size? PubSubCapabilities does not list such a capability.

Question from Brian:
We have had some discussion around multiple UAFX connections sharing a single network message, and a question came up around limiting the MaxNetworkMessageSize.

For example, a machine builder might want to configure the controller such that the MaxNetworkMessageSize can be no more than 500 bytes. That would mean that the engineering tool configuring a connection manager that talks to this controller would need to know that this limit has been set.

As I read Part 14, MaxNetworkMessageSize is a variable in the PubSubGroupType. That would imply that it is set when configuring PubSub, but there doesn’t appear to be a way for a device to advertise what is the max value that it would allow.

To your knowledge, is there a way to indicate maximum allowed value? We had some talk that maybe this could go in the Base Network Model, but others thought maybe that was not the right place. Do you have any thoughts in this?

Thanks
Brian

TagsNo tags attached.
Commit Version
Fix Due Date

Relationships

related to 0007948 closedMatthias Damm 10000-014: PubSub FX needs additional PubSub Capabilities 

Activities

Brian Batke

2022-02-17 18:51

reporter   ~0016038

Some elaboration on a use case that would benefit from this:

As a machine builder, I want to limit the maximum packet size sent on the Ethernet interface:

  • Controller has single Ethernet interface
  • Application traffic includes motion as well as non-time-critical traffic
  • TSN is not being used
  • Motion traffic latency must account for 1 large packet in the process of transmission.
  • If controller application allows 10 connections to be aggregated into a 1500 byte packet, it affects motion latency
  • Therefore it is useful to limit the max packet size that will be transmitted
  • Ideally, this would be on a per-interface basis

Matthias Damm

2022-06-20 12:28

developer   ~0016886

Added more settings to PubSubCapabilitiesType
MaxDataSetWritersPerGroup
MaxNetworkMessageSizeEthernet
MaxNetworkMessageSizeUDP

The MaxDataSetWritersPerGroup Variable defines the maximum number of DataSetWriters that can be configured in one WriterGroup. A value of 0 indicates that the OPC UA Application forces no limit on the number of DataSetWriters in one WriterGroup.

The MaxNetworkMessageSizeEthernet Variable defines the maximum number of bytes that can be configured as MaxNetworkMessageSize for NetworkMessages sent or received through OPC UA Ethernet transport protocol mapping. A value of 0 indicates that the OPC UA Application forces no limit on the maximum size.

The MaxNetworkMessageSizeUDP Variable defines the maximum number of bytes that can be configured as MaxNetworkMessageSize for NetworkMessages sent or received through OPC UA UDP transport protocol mapping. A value of 0 indicates that the OPC UA Application forces no limit on the maximum size.

Added in
OPC 10000-14 - UA Specification Part 14 - PubSub 1.05.02 Draft2.docx

If there are network interface specific limits, they should be added to the network interface definition in Part 22

Jim Luth

2022-06-21 06:45

administrator   ~0016918

Last edited: 2022-06-21 06:46

Need to add capability to the network for the use case Brian describes.

Greg Majcher

2022-08-11 15:02

developer   ~0017318

Configuration of the application-level network message sizes is configured using MaxNetworkMessageSize in Part 14.

Configuration of the network interface is the responsibility of network management. The max frame length is configured over such mechanisms (e.g., NETCONF). The OPC UA stack reads this information and should display it in a read-only variable such as MaxFrameLength (taken from ieee802-ethernet-interface.yang) instead of the MaxNetworkMessageSizeEthernet and MaxNetworkMessageSizeUDP variables that were added to Part 14.

MaxNetworkMessageSizeEthernet and MaxNetworkMessageSizeUDP Variables should be removed from Part 14 (there is no need for separate values for Ethernet and UDP as that can be calculated).

One new max frame length (MaxFrameLength) will be added to Part 22.

If an application needs another frame length on the network, it must use network configuration means (e.g., NETCONF) to set the max frame length accordingly. The new max frame length is shown in the MaxFrameLength shortly after setting the max frame length successfully.

Matthias Damm

2022-09-15 11:27

developer   ~0017663

The Part 14 1.05.02 RC does not have MaxNetworkMessageSizeEthernet and MaxNetworkMessageSizeUDP anymore.
Brian had related network setting specific requirements but my related additions were rejected by the UA WG and the Mantis Issue was assigned to Part 22 since such limits are more related to the network interfaces.

Part 14 has only optional MaxNetworkMessageSizeDatagram and MaxNetworkMessageSizeBroker to allow the application to set a max. This was a different requirement to be able to set application specific limits.

But the requirement that was introduced by Brian (see text of issue 0007737) should be discussed and solved potentially by BNM and therefore the issues was moved from Part 14 to Part 22

Brian Batke

2022-09-20 14:13

reporter   ~0017719

The use case I was concerned with was a configured controller (with a user applicatoin) being able to advertise a limit on what size PubSub message can be created. E.g., to prevent another Connection Manager from creating a UAFX connection with a very large DataSet, or trying to aggregate a number of connections thereby creating a large packet.

I wasn't thinking of solving this at a network-level, which would bring in other complications, such as: are all applications on the device intended to adhere to this limit? What if they produce a frame that is larger? Is it just dropped? Similarly for PubSub, if such as max frame size were set, then the entity configuring PubSub would need to know about this, and should receive an error message if if tried to create a publication that exceeded the limit (this should be a design time or at worst connection establishment time action to detect the error)

Greg Majcher

2023-04-06 16:02

developer   ~0019107

Applications (e.g., Motion) that require strict timing should not be held off by lower priority traffic. QoS can be used to prioritize traffic, but if a long packet of lower priority starts on the wire, it can hold up higher priority traffic. We were asking for a mechanism to limit the size of packets so that we could predict how long this delay could be. The problem is that anything we define in OPC UA would not protect us against other apps (e.g., web traffic). If we did apply a system-wide solution such as setting MaxFrameLength using NETCONF, then we would end up with other issues (e.g., web traffic being dropped with no indication as to why).

We now believe that Part 14 provides us with the ability to control the only thing we can control (MaxNetworkMessageSizeDatagram). No further action is needed.

Jim Luth

2023-05-16 16:22

administrator   ~0019388

Agreed to no-change-required in Web meeting.

Issue History

Date Modified Username Field Change
2022-02-15 21:36 Matthias Damm New Issue
2022-02-17 18:51 Brian Batke Note Added: 0016038
2022-03-11 16:57 Jim Luth Assigned To => Matthias Damm
2022-03-11 16:57 Jim Luth Status new => assigned
2022-06-20 09:54 Matthias Damm Relationship added related to 0007948
2022-06-20 12:28 Matthias Damm Status assigned => resolved
2022-06-20 12:28 Matthias Damm Resolution open => fixed
2022-06-20 12:28 Matthias Damm Fixed in Version => 1.05.02 RC1
2022-06-20 12:28 Matthias Damm Note Added: 0016886
2022-06-21 06:45 Jim Luth Status resolved => feedback
2022-06-21 06:45 Jim Luth Resolution fixed => reopened
2022-06-21 06:45 Jim Luth Note Added: 0016918
2022-06-21 06:45 Jim Luth Project 10000-014: PubSub => 10000-022: Base Network Model
2022-06-21 06:45 Jim Luth Assigned To Matthias Damm => Greg Majcher
2022-06-21 06:45 Jim Luth Status feedback => assigned
2022-06-21 06:46 Jim Luth Note Edited: 0016918
2022-07-05 14:15 Jim Luth Target Version 1.05.02 RC1 => 1.05.03 RC1
2022-08-11 15:02 Greg Majcher Note Added: 0017318
2022-09-15 11:27 Matthias Damm Note Added: 0017663
2022-09-20 14:13 Brian Batke Note Added: 0017719
2023-04-06 16:02 Greg Majcher Status assigned => resolved
2023-04-06 16:02 Greg Majcher Resolution reopened => no change required
2023-04-06 16:02 Greg Majcher Fixed in Version 1.05.02 RC1 =>
2023-04-06 16:02 Greg Majcher Note Added: 0019107
2023-05-16 16:22 Jim Luth Status resolved => closed
2023-05-16 16:22 Jim Luth Note Added: 0019388