Hi,

Would anyone mind if I submit a merge request which makes Wireshark capable of 
dissecting all valid Ethernet mPackets according to IEEE 802.3br?
It is a reasonably small change. But I don’t want to put in the effort if the 
merge request would be blocked.


Jaap:
Note that Figure 99-4 has absolutely no information about how to dissect the 
CRC, SMD, FRAG_COUNT and PREAMBLE.

Wireshark

  *   Dissects the CRC according to section 99.3.6 and figure 99-6
  *   Dissects the SMD according to section 99.3.3 and figure 99-6
  *   Dissects the FRAG_COUNT according to section 99.3.4 and figure 99-6

But it does NOT dissect the PREAMBLE according to figure 99-6

Are you not reading a little too much into a single line of text on the tcpdump 
webpage?
If figure 99-4 is the only specification for ‘type 274 - 
LINKTYPE_ETHERNET_MPACKET’, do you think dissection of the CRC, SMD and 
FRAG_COUNT according to sections 99.3.3, 99.3.4, 99.3.6 and figure 99-6 should 
be removed from Wireshark?

The intention is obviously that pcapng type “LINKTYPE_ETHERNET_MPACKET” should 
be able to hold any and all valid Ethernet mPackets according to IEEE 802.3br.

Regards,
Timmy Brolin



From: Wireshark-dev <wireshark-dev-boun...@wireshark.org> On Behalf Of Jaap 
Keuter
Sent: den 15 februari 2021 21:12
To: Developer support list for Wireshark <wireshark-dev@wireshark.org>
Subject: Re: [Wireshark-dev] pcapng decoding error when preamble is shortened

Hi,

A not uncommon, but unfortunate misconception is that of Wireshark being a 
capture device, or receiver as you put it. In short Wireshark doesn’t capture, 
it is a program reading files, containing packets conforming to specifications 
as laid out in the Link Layer Header Types on the tcpdump website, among 
others. To accommodate users it does provide interfaces to capture filters, 
most famous to BPF via libpcap, and as of recent to Npcap, as well as extcaps. 
These programs are invoked to interface between the Link Layer (L2) and the 
wiretap interface build into Wireshark to read capture file formats. In that 
respect Wireshark sits on top of the Data Link Layer of whatever medium is 
underneath.

In the context of Ethernet, Wireshark indeed expects the capture filter to 
provide well-formed packets, starting at the first octet after the SFD and 
optionally with an FCS. The fact wether or not to accept a frame with an 
invalid FCS is up to the network driver combined with the hardware (MAC/PHY). 
In normal cases the driver/hardware does filter out incorrect frames, either 
for their destination MAC not matching, invalid FCS, but also short frames (<64 
octets), too long frames (jabber), or otherwise corrupted frames. To allow for 
wider packet sniffing capabilities some of these checks can be configured being 
off, the promiscuous mode. This holds true for destination MAC and FCS and 
maybe others.

Regardless of mode (promiscuous or normal) the capture filter is still expected 
to deliver the packet beginning with the first octet of the destination MAC 
address. Whether or not the FCS is to be part of the captured packet is a bit 
of a contentious subject, but there’s no ambiguity about where the captured 
packet should begin. That is at the first octet after the SFD. The MAC is 
reponsible to hunt for this frame synchronisation, the capture filter is 
sending the correctly aligned packet to the capture engine.

Where the format for Ethernet (Link Layer Header Type 1) is somewhat loosely 
defined as "IEEE 802.3 Ethernet”, in case of Link Layer Header Type 274 this is 
made very explicit:
"mPackets, as specified by IEEE 802.3br Figure 99-4, starting with the preamble 
and always ending with a CRC field.” Notwithstanding the text and/or figures in 
the rest of this IEEE standard, this figure is the format to which packets need 
to adhere in order to be valid packets of Link Layer Header Type 274. To 
accommodate an even lower level of IEEE 802.3br packet reception an additional 
Link Layer Header Type would need to be defined, with additional specification 
of the packets’ physical reception characteristics. The number of received 
preamble symbols would be one of them, the IPG length could be another, and 
maybe even other data for TSN purposes. This would then be an evolved 
alternative to the currently defined Link Layer Header Type for capture filters 
that requires this. Or a Link Layer Header Type with a pseudo header containing 
these physical reception characteristics of the packet, followed by the mPacket 
data as per Figure 99-4. This would then be alike Link Layer Header Type 127, 
"Radiotap link-layer information followed by an 802.11 header.”, where the 
existing IEEE 802.11 dissector is being reused, while providing extra reception 
information from the Radiotap header.

Regards,
Jaap



On 14 Feb 2021, at 00:57, Timmy Brolin <t...@hms.se<mailto:t...@hms.se>> wrote:

Yes, the capture device is indeed capturing data completely accurately.

You are referring to the transmission section of IEEE 802.3br-2016.
If you look at the receive section on page 51, you will find that receivers are 
required to accept any length preamble. Hence, Wireshark is not compliant with 
the IEEE 802.3br-2016 specification.

It is just like the specification requires the FCS to always be transmitted 
correct, but receivers are required to also expect and handle an incorrect FCS 
without breaking down.
Wireshark does not require capture devices to repair any faulty FCS, does it?


Preamble reduction is quite common practice. In this particular case I have a 
SGMII RJ45 SFP on the network which randomly chops off one byte of the preamble 
on some packets. This is common and accepted behavior for various pieces of 
network equipment.

The entire point of using a mPacket capture device is to be able to correctly 
monitor and debug everything from the lowest to the highest level aspects of 
Ethernet.
All specification-compliant packets on the wire should decode properly in 
Wireshark, and Wireshark should not lie to the user about how the packet looks 
on the wire.

Regards,
Timmy Brolin

From: Wireshark-dev 
<wireshark-dev-boun...@wireshark.org<mailto:wireshark-dev-boun...@wireshark.org>>
 On Behalf Of Jaap Keuter
Sent: den 13 februari 2021 10:43
To: Developer support list for Wireshark 
<wireshark-dev@wireshark.org<mailto:wireshark-dev@wireshark.org>>
Subject: Re: [Wireshark-dev] pcapng decoding error when preamble is shortened

Hi,

The capture file (View | Reload as File Format/Capture) contains an Interface 
Descriptor Block which states Link Type 274.
According to https://www.tcpdump.org/linktypes.html the Packet Data in the 
capture file must adhere to "mPackets, as specified by IEEE 802.3br Figure 
99-4, starting with the preamble and always ending with a CRC field.”
According to IEEE 802.3br-2016 the mPacket has either
* 7 octets preamble (0x55), 1 octet SMD followed by the mData and 4 octets CRC.
* 6 octets preamble (0x55), 1 octet SMD, 1 octet fragment count followed by the 
mData and 4 octets CRC.

The first packet in the capture has 7 preamble octets and an SMD-E making it an 
Express Packet.
The second packet in the capture has 6 preamble octets, an SMD-E and a 
frag_count field of 0x01. That format does not align with the mPacket 
specification. The SMD has to be of a different type and the frag_count field 
has to be properly encoded.

In the second packet, when counting out from the SMD, the first and second 
sextet look like Ethernet MAC addresses (from the same device sending the first 
packet to the LLDP multicast address) with the LLDP ether type. So the intended 
mData seems to be a valid Ethernet packet.

What is wrong though is that the capture device is creating a capture file, 
declaring to write Link Type 274 packet blocks, which are as defined in 
IEEE802.3br figure 99-4, but fails to adhere to that format in all 
circumstances. It assumes that writing short(-er) preambles is okay, but this 
violates the Link Type specification.

I can think of two reasons why this is done. 1) the capture device wants to 
record as accurately as possible what its receiver is able to detect on the 
wire. While that means that it may miss symbols due to its slicer still getting 
in sync, it shows what it can. 2) the capture devices misaligns the received 
symbols into the receive buffer, thereby distorting the intended receive frame.

From what you write it seems that reason 1) is applicable. Unfortunately the 
chosen Link Type is not suitable for this. The Link Type 274 is not intended 
for mPackets where the reader is to hunt for frame synchronisation. That task 
is left to the receiver before writing IEEE802.3br compliant mPackets in the 
file. Currently there is no defined Link Type for that, nor a dissector capable 
of this.

What you could do is to contact the supplier of the capture device and discuss 
the options, or write a program to correct these capture files before loading 
them in Wireshark.

Regards,
Jaap







On 9 Feb 2021, at 11:21, Timmy Brolin <t...@hms.se<mailto:t...@hms.se>> wrote:

Hi,

It seems Wireshark fails to decode captured packets with shortened preamble?

Normally Ethernet packets have a preamble and SFD like this:
55555555555555D5
But during transmission over Ethernet, sometimes the preamble arrives slightly 
shorter at the receiving end. Some bytes, or even half a byte(!), at the start 
of the preamble can go missing for various technical reasons.
This is considered normal, and all Ethernet MACs are required to properly 
decode packets with shortened preamble, as well as packets where the preamble 
is a non-integer number of bytes.

But it seems Wireshark does not?


Decoding failure when preamble is shortened:
[cid:image001.png@01D70448.F645E090]

Normal preamble, decoding successful:
[cid:image002.png@01D70448.F645E090]


I have attached a pcapng file with these two packets.

Timmy Brolin
M.SC. Computer Systems Engineering

HMS Industrial Networks AB
Stationsgatan 37, Box 4126
300 04 Halmstad, Sweden

Email: t...@hms.se<mailto:t...@hms.se>
Direct: +46 35 17 29 32
[cid:image003.png@01D70448.F645E090]

HALMSTAD | BARCELONA | BEIJING | BOSTON | BUCHEN | CHICAGO | COVENTRY | DUBAI | 
HEDEL | IGUALADA |
KARLSRUHE | MILAN | MULHOUSE | NIVELLES | PUNE | RAVENSBURG | SEOUL | SINGAPORE 
| TOKYO | WETZLAR

www.hms-networks.com<http://www.hms-networks.com/>

___________________________________________________________________________
Sent via:    Wireshark-dev mailing list 
<wireshark-dev@wireshark.org<mailto:wireshark-dev@wireshark.org>>
Archives:    https://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev
            mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe

___________________________________________________________________________
Sent via:    Wireshark-dev mailing list 
<wireshark-dev@wireshark.org<mailto:wireshark-dev@wireshark.org>>
Archives:    https://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev
            mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe

___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev@wireshark.org>
Archives:    https://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe

Reply via email to