It’s not a matter of *what* the program is reading, but *where* it's reading in 
the buffer. This makes it usable for *all* programs reading this file format, 
not just Wireshark. Prefixing it with zero padding (even a nibble) would 
achieve that.
I’m done.


> On 16 Feb 2021, at 10:05, Timmy Brolin <t...@hms.se> wrote:
> 
> 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 
> <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:
> 
>  
> 
> Normal preamble, decoding successful:
> 
>  
>  
> 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
> 
> 
> 
> 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 
> <https://www.wireshark.org/lists/wireshark-dev>
> Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev 
> <https://www.wireshark.org/mailman/options/wireshark-dev>
>             mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe 
> <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 
> <https://www.wireshark.org/lists/wireshark-dev>
> Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev 
> <https://www.wireshark.org/mailman/options/wireshark-dev>
>             mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe 
> <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

___________________________________________________________________________
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