You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
sequence of protocol headers/trailers
e.g. Application Data, UDP, IPv4, IEEE 802.2 LLC, IEEE 802.15.4
sequence of protocol modules
App, Udp, Ipv4, Ieee8022Llc, Ieee802154
dispatch decision (can be hardcoded, locally parametrizable, can depend on packet data or meta data, looked up from database, overridden by being already specified)
App -> Udp (App)
Udp -> Ipv4 (Udp by destination address)
Ipv4 -> Ieee8022Llc (App, Network interface?)
Ieee8022Llc -> Ieee802154 (Network interface)
Ieee802154 -> NetworkInterface (Ipv4, App)
determining the next protocol for a packet in a protocol module (DispatchProtocolReq) (outgoing/incoming)
can be unspecified
can be hard-coded into C++ source of the module that is currently processing the packet
can be specified by a protocol parameter on the module
can be determined by a socket
can be determined by the address type (e.g. Ipv4, Ipv6) of a destination address
can be determined by one or more header fields from an incoming packet using a protocol group mapping
can be determined by a header field directly referencing the protocol
can be the requested transport protocol, network protocol, MAC protocol (TransportProtocolReq, NetworkProtocolReq, MacProtocolReq)
can be the expected protocol of a network interface
can be determined by the current packet protocol
can be determined by from which protocol module the packet came (e.g. DispatchProtocolInd)
can be determined by a module that created or previously processed the packet (e.g. application by EncapsulationProtocolReq)
can be the first protocol in encapsulation protocol request (EncapsulationProtocolReq)
can be determined by some other packet meta-data (e.g. EncapsulationProtocolReq?)
what should we do when the payload protocol is not specified in the packet (e.g. 802.15.4 or 802.11)?
this information should be attached as a meta-data to the packet by the module which knows this, so a packet dissector (or printer) can process the packet without context
documentation goes into Developer's Guide
who adds DispatchProtocolReq?
the module who determines the next protocol
who queries DispatchProtocolReq?
the message dispatcher module
who removes DispatchProtocolReq?
the DispatchProtocolReq destination module who processes the packet
how is the EncapsulationProtocolReq used now?
RelayInterfaceSelector appends network interface protocol into EncapsulationProtocolReq if DispatchProtocolReq is already present
Ieee8021qTagEpdHeaderInserter removes first protocol from EncapsulationProtocolReq if present to use in DispatchProtocolReq
Ieee8021rTagEpdHeaderInserter removes first protocol from EncapsulationProtocolReq if present to use in DispatchProtocolReq
Ipv4 appends network interface protocol to the end of EncapsulationProtocolReq and copies first entry to DispatchProtocolReq
StreamEncoder delays existing DispatchProtocolReq and inserts 802.1q and 802.1r protocols into EncapsulationProtocolReq depending on what tags are attached
+? PacketTaggerBase adds EncapsulationProtocolReq with 802.1q if PcpReq is added
what are typical delayed protocol dispatch actions?
pop protocol at the beginning of EncapsulationProtocolReq, get first protocol to where the packet must be sent to
push protocol at the beginning of EncapsulationProtocolReq to send packet to a specific protocol first
push protocol at the end of EncapsulationProtocolReq to send packet to a specific protocol last
fallback mechanism for next protocol:
if InterfaceReq is added, push network interface protocol at the end of EncapsulationProtocolReq
if L3 destination address is specified, set NetworkProtocolReq to corresponding network protocol
pop protocol at the beginning of EncapsulationProtocolReq
if no protocol is found, use module specific next protocol parameter
if no protocol is specified, use module specific hard-coded next protocol
in applications use the protocol from TransportProtocolReq
in transport protocols use the protocol from NetworkProtocolReq
in network protocols use the protocol from MacProtocolReq
if no protocol is hard-coded, leave DispatchProtocolReq unspecified (direct connections decide who processes the packet next)
This discussion was converted from issue #782 on February 21, 2023 16:17.
Heading
Bold
Italic
Quote
Code
Link
Numbered list
Unordered list
Task list
Attach files
Mention
Reference
Menu
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Use case:
e.g. Application Data, UDP, IPv4, IEEE 802.2 LLC, IEEE 802.15.4
App, Udp, Ipv4, Ieee8022Llc, Ieee802154
App -> Udp (App)
Udp -> Ipv4 (Udp by destination address)
Ipv4 -> Ieee8022Llc (App, Network interface?)
Ieee8022Llc -> Ieee802154 (Network interface)
Ieee802154 -> NetworkInterface (Ipv4, App)
determining the next protocol for a packet in a protocol module (DispatchProtocolReq) (outgoing/incoming)
what should we do when the payload protocol is not specified in the packet (e.g. 802.15.4 or 802.11)?
this information should be attached as a meta-data to the packet by the module which knows this, so a packet dissector (or printer) can process the packet without context
documentation goes into Developer's Guide
who adds DispatchProtocolReq?
who queries DispatchProtocolReq?
who removes DispatchProtocolReq?
how is the EncapsulationProtocolReq used now?
+? PacketTaggerBase adds EncapsulationProtocolReq with 802.1q if PcpReq is added
what are typical delayed protocol dispatch actions?
fallback mechanism for next protocol:
TSN use case:
App [app] -> udp (udp app) ()
Udp [udp app] -> ipv4 (ipv4 udp app) ()
Ipv4 [ipv4 udp app] -> ethernetmac (ethernetmac ipv4 udp app) ()
StreamIdentifier [ipv4 udp app] -> ethernetmac (ethernetmac ipv4 udp app) ()
StreamEncoder [ipv4 udp app] -> ieee8021r (ethernetmac ieee8021q ieee8021r ipv4 udp app) (ethernetmac ieee8021q)
Ieee8021r [ieee8021r ipv4 udp app] -> ieee8021q (ethernetmac ieee8021q ieee8021r ipv4 udp app) (ethernetmac)
Ieee8021q [ieee8021q ieee8021r ipv4 udp app] -> ethernetmac (ethernetmac ieee8021q ieee8021r ipv4 udp app) ()
EthernetMac [ethernetmac ieee8021q ieee8021r ipv4 udp app] -> network interface (ethernetmac ieee8021q ieee8021r ipv4 udp app) ()
802.15.4 use case:
App [app] -> udp (udp app) ()
Udp [udp app] -> ipv4 (ipv4 udp app) ()
Ipv4 [ipv4 udp app] -> ieee802154 (ieee802154 ipv4 udp app) ()
Llc [ipv4 udp app] -> ieee8022llc (ieee802154 ieee8022llc ipv4 udp app) (ieee802154)
Ieee8022llc [ieee8022llc ipv4 udp app] -> ieee802154 (ieee802154 ieee8022llc ipv4 udp app) ()
Ieee802154 [ieee802154 ieee8022llc ipv4 udp app] -> network interface (ieee802154 ieee8022llc ipv4 udp app) ()
Beta Was this translation helpful? Give feedback.
All reactions