Project

General

Profile

Bug #9832

Original bug discovered as 9560 has friends IPv4 packets coming in as IPv6 creating chaos

Added by Jorge Schrauwen about 1 year ago. Updated about 1 year ago.

Status:
New
Priority:
Normal
Assignee:
Category:
networking
Start date:
2018-09-11
Due date:
% Done:

0%

Estimated time:
Difficulty:
Medium
Tags:
needs-triage

Description

The basic situation is very similar as in 9560...

macbook pro > UniFI AP [tags traffic with vlan 10) -(trunk with multiple vlans including 10) -> Ubiquiti Switch -(trunk with multiple vlans including 10)> ixgbe at the computenode -> zone

Again it is an apple device, doing the same action (connecting to a cifs share on samba) from a windows laptop does not trigger it.

Data copied from a gist shared with Dan.

Loading modules: [ unix genunix specfs dtrace mac cpu.generic uppc apix scsi_vhci ufs ip hook neti sockfs arp usba stmf_sbd stmf zfs mm sd lofs idm mpt_sas sata random cpc logindmux ptm sppp nfs ]
> $c
vpanic()
0xfffffffffbe15358()
mac_ip_hdr_length_v6+0x6f(fffffeb52ac52d04, fffffeb52ac52d44, fffffe00f4b1a7dc, fffffe00f4b1a7df, fffffe00f4b1a7d0)
get_dhcpv6_info+0x42(fffffeb52ac52d04, fffffeb52ac52d44, fffffe00f4b1a870)
mac_protect_intercept_dynamic_one+0xcd(fffffeb57643c390, fffffeb44d564be0)
mac_protect_intercept_dynamic+0x3b(fffffeb57643c390, fffffeb44d564be0)
mac_rx_srs_drain+0x447(fffffeb5764b4340, 800)
mac_rx_srs_process+0x5d3(fffffeb3321189c0, fffffeb5764b4340, fffffeb44d564be0, 0)
mac_rx_common+0x149(fffffeb3321189c0, fffffeb3320275b0, fffffeb44d564be0)
mac_rx+0xb6(fffffeb3321189c0, fffffeb3320275b0, fffffeb44d564be0)
mac_rx_ring+0x2b(fffffeb3321189c0, fffffeb3320275b0, fffffeb44d564be0, 0)
ixgbe_intr_rx_work+0x5c(fffffeb331f35600)
ixgbe_intr_msix+0x58(fffffeb331f237f8, 0)
apix_dispatch_by_vector+0x8c(20)
apix_dispatch_lowlevel+0x25(20, 0)
switch_sp_and_call+0x13()
apix_do_interrupt+0x54d(fffffe00f4ac9ab0, fffffeb30bdb4ac0)
_interrupt+0x1e9()
i86_mwait+0xd()
cpu_idle_mwait+0x109()
idle+0xa7()
thread_start+8()
> fffffeb52ac52d04::print ipha_t
{
    ipha_version_and_hdr_length = 0x45
    ipha_type_of_service = 0
    ipha_length = 0x4000
    ipha_ident = 0
    ipha_fragment_offset_and_flags = 0x40
    ipha_ttl = 0x40
    ipha_protocol = 0x6
    ipha_hdr_checksum = 0x8f11
    ipha_src = 10.23.10.152
    ipha_dst = 10.23.10.100
}
>fffffeb52ac52d04::print ip6_t
{
    ip6_ctlun = {
        ip6_un1 = {
            ip6_un1_flow = 0x40000045
            ip6_un1_plen = 0
            ip6_un1_nxt = 0x40
            ip6_un1_hlim = 0
        }
        ip6_un2_vfc = 0x45
    }
    ip6_src = 4006:118f:a17:a98:a17:a64:c8c7:1bd
    ip6_dst = 8923:b54f::b002:ffff:8bcd:0
}
> fffffeb44d564be0::print mblk_t
{
    b_next = 0xfffffeb44d564b80
    b_prev = 0
    b_cont = 0
    b_rptr = 0xfffffeb52ac52cf2
    b_wptr = 0xfffffeb52ac52d44
    b_datap = 0xfffffeb52ac52c80
    b_band = 0
    b_tag = 0
    b_flag = 0
    b_queue = 0
}
> fffffeb52ac52d04-0xd::print "struct ether_header" 
{
    ether_dhost = {
        ether_addr_octet = [ 0x1, 0xf0, 0x18, 0x98, 0x40, 0xe0 ]
    }
    ether_shost = {
        ether_addr_octet = [ 0x66, 0x81, 0, 0, 0xa, 0x86 ]
    }
    ether_type = 0x45dd
}
> fffffeb52ac52d04-0xe::print "struct ether_header" 
{
    ether_dhost = {
        ether_addr_octet = [ 0x10, 0x1, 0xf0, 0x18, 0x98, 0x40 ]
    }
    ether_shost = {
        ether_addr_octet = [ 0xe0, 0x66, 0x81, 0, 0, 0xa ]
    }
ether_type = 0xdd86
[
{
"repo": "smartos-live",
"branch": "master",
"commit_date": "1535588133",
"rev": "3aa5ebb0c59f057460518c79959c376bb376e72c",
"url": "https://github.com/sjorge/smartos-live.git" 
},
{
"repo": "illumos-joyent",
"branch": "master",
"commit_date": "1535588127",
"rev": "fb2422a25cfeb7137e66e7a24541eafb83165362",
"url": "https://github.com/sjorge/illumos-joyent.git" 
},
{
"repo": "illumos-extra",
"branch": "master",
"commit_date": "1534512676",
"rev": "ceb43b210e7dcac11a2a13afcad12dc1ca412ea8",
"url": "https://github.com/joyent/illumos-extra.git" 
},
{
"repo": "kvm",
"branch": "master",
"commit_date": "1535405591",
"rev": "4149738a32ab6ac380a31c309d116e3dfef47a98",
"url": "https://github.com/joyent/illumos-kvm.git" 
},
{
"repo": "kvm-cmd",
"branch": "master",
"commit_date": "1535391715",
"rev": "121a78dc5b5933ae188fca449e0db2f616bb908b",
"url": "https://github.com/joyent/illumos-kvm-cmd.git" 
},
{
"repo": "mdata-client",
"branch": "master",
"commit_date": "1482175115",
"rev": "dbb3fdec26373f8e86c9ea0057ebba48581ff476",
"url": "https://github.com/joyent/mdata-client.git" 
},
{
"repo": "ur-agent",
"branch": "master",
"commit_date": "1532549773",
"rev": "6918e2cde9b03c084be49e450b04d96340707b30",
"url": "https://github.com/joyent/sdc-ur-agent.git" 
}
]

History

#1

Updated by Jorge Schrauwen about 1 year ago

As rzezeski pointed out on IRC, those are tagged we might want ether_vlan_header

> fffffeb44d564be0::print mblk_t b_rptr |::print struct ether_vlan_header
{
    ether_dhost = {
        ether_addr_octet = [ 0, 0x22, 0x6, 0x6, 0x10, 0x1 ]
    }
    ether_shost = {
        ether_addr_octet = [ 0xf0, 0x18, 0x98, 0x40, 0xe0, 0x66 ]
    }
    ether_tpid = 0x81
    ether_tci = 0xa00
    ether_type = 0xdd86
}
> fffffeb52ac52d04-0x12::print "struct ether_vlan_header" 
{
    ether_dhost = {
        ether_addr_octet = [ 0, 0x22, 0x6, 0x6, 0x10, 0x1 ]
    }
    ether_shost = {
        ether_addr_octet = [ 0xf0, 0x18, 0x98, 0x40, 0xe0, 0x66 ]
    }
    ether_tpid = 0x81
    ether_tci = 0xa00
    ether_type = 0xdd86
}
[root@carbon ~]# vmadm get 5c9eaccf-8ecc-6fc8-ec74-af9cd85a133b | json nics.0.mac
00:22:06:06:10:01
[hyperon :: sjorge][~]
[.]$ ifconfig en0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether f0:18:98:40:e0:66
    inet6 fe80::xxx:xxx:xxx:xxx%en0 prefixlen 64 secured scopeid 0xa
    inet 10.23.10.152 netmask 0xffffff00 broadcast 10.23.10.255
    inet6 2001:470:7ee7:10:xxx:xxx:xxx:xxx prefixlen 64 autoconf temporary
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect
    status: active

The dhost is indeed the VM and the shost does match the mac of the macbook

#2

Updated by Dan McDonald about 1 year ago

The IP version checking is supposed to happen upstack in ip_input() or ip_input_v6(). Unfortunately, MAC makes packet-inspecting assumptions that trip up the ASSERT in mac_ip_hdr_length_v6().

Replacing the ASSERT with a returns-FALSE if the version isn't IPv6 is the straightforward fix. Unfortunately, its failure always is assumed by the caller to be an ENOSPC sort of situation, vs. a fully malformed packet. In a perfect world, a mismatched IP-version/ethertype pair would kick up to IP, where its input routines selected from ethertype would catch the bad IP-version and bump the appropriate counters. MAC makes that proposition difficult.

#3

Updated by Jorge Schrauwen about 1 year ago

oxygen-BZ.v3.9.42# tcpdump -i eth0.10 -vvv 'port 445'
tcpdump: WARNING: eth0.10: no IPv4 address assigned
tcpdump: listening on eth0.10, link-type EN10MB (Ethernet), capture size 65535 bytes
18:58:08.143133 IP6 (flowlabel 0xb163d, hlim 64, next-header TCP (6) payload length: 44) 2001:470:7ee7:10:f12d:f255:c537:4d78.50028 > atlas.vlan20.acheron.be.445: Flags [SEW], cksum 0xaba9 (correct), seq 3964522776, win 65535, options [mss 1440,nop,wscale 5,nop,nop,TS val 523872969 ecr 0,sackOK,eol], length 0
18:58:08.171868 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 64)
    hyperon.vlan10.acheron.be.50029 > atlas.vlan20.acheron.be.445: Flags [S], cksum 0x6079 (correct), seq 1691463485, win 65535, options [mss 1460,nop,wscale 5,nop,nop,TS val 523872999 ecr 0,sackOK,eol], length 0
18:58:08.172409 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 60)
    atlas.vlan20.acheron.be.445 > hyperon.vlan10.acheron.be.50029: Flags [S.], cksum 0xa3f3 (correct), seq 4068313106, ack 1691463486, win 32806, options [sackOK,TS val 70824254 ecr 523872999,mss 8960,nop,wscale 5], length 0
18:58:08.175958 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    hyperon.vlan10.acheron.be.50029 > atlas.vlan20.acheron.be.445: Flags [.], cksum 0x6019 (correct), seq 1, ack 1, win 4117, options [nop,nop,TS val 523873001 ecr 70824254], length 0
18:58:08.175978 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    hyperon.vlan10.acheron.be.50029 > atlas.vlan20.acheron.be.445: Flags [F.], cksum 0x6018 (correct), seq 1, ack 1, win 4117, options [nop,nop,TS val 523873001 ecr 70824254], length 0
18:58:08.175986 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 64)
    hyperon.vlan10.acheron.be.50031 > atlas.vlan20.acheron.be.445: Flags [S], cksum 0xfe09 (correct), seq 3514279168, win 65535, options [mss 1460,nop,wscale 7,nop,nop,TS val 523873001 ecr 0,sackOK,eol], length 0
18:58:08.176504 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    atlas.vlan20.acheron.be.445 > hyperon.vlan10.acheron.be.50029: Flags [.], cksum 0xf002 (correct), seq 1, ack 2, win 32806, options [nop,nop,TS val 70824258 ecr 523873001], length 0
18:58:08.176539 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 60)
    atlas.vlan20.acheron.be.445 > hyperon.vlan10.acheron.be.50031: Flags [S.], cksum 0xbcf0 (correct), seq 1717541058, ack 3514279169, win 32806, options [sackOK,TS val 70824258 ecr 523873001,mss 8960,nop,wscale 5], length 0
18:58:08.180281 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    hyperon.vlan10.acheron.be.50031 > atlas.vlan20.acheron.be.445: Flags [.], cksum 0xa722 (correct), seq 1, ack 1, win 57863, options [nop,nop,TS val 523873004 ecr 70824258], length 0
18:58:08.180303 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 125)
    hyperon.vlan10.acheron.be.50031 > atlas.vlan20.acheron.be.445: Flags [P.], cksum 0xc0cc (correct), seq 1:74, ack 1, win 57863, options [nop,nop,TS val 523873004 ecr 70824258], length 73
SMB PACKET: SMBnegprot (REQUEST)
SMB Command   =  0x72
Error class   =  0x0
Error code    =  0 (0x0)
Flags1        =  0x8
Flags2        =  0x1
Tree ID       =  65535 (0xffff)
Proc ID       =  1 (0x1)
UID           =  65535 (0xffff)
MID           =  0 (0x0)
Word Count    =  0 (0x0)
smb_bcc=34
Dialect=NT LM 0.12
Dialect=SMB 2.002
Dialect=SMB 2.???

18:58:08.180734 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    atlas.vlan20.acheron.be.445 > hyperon.vlan10.acheron.be.50031: Flags [.], cksum 0x08b7 (correct), seq 1, ack 74, win 32806, options [nop,nop,TS val 70824262 ecr 523873004], length 0
18:58:08.295598 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 258)
    atlas.vlan20.acheron.be.445 > hyperon.vlan10.acheron.be.50031: Flags [P.], cksum 0xad8a (correct), seq 1:207, ack 74, win 32806, options [nop,nop,TS val 70824377 ecr 523873004], length 206SMB-over-TCP packet:(raw data or continuation?)

18:58:08.298159 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    hyperon.vlan10.acheron.be.50031 > atlas.vlan20.acheron.be.445: Flags [.], cksum 0xa522 (correct), seq 74, ack 207, win 57861, options [nop,nop,TS val 523873120 ecr 70824377], length 0
18:58:08.298269 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 164)
    hyperon.vlan10.acheron.be.50031 > atlas.vlan20.acheron.be.445: Flags [P.], cksum 0xf48c (correct), seq 74:186, ack 207, win 57861, options [nop,nop,TS val 523873120 ecr 70824377], length 112SMB-over-TCP packet:(raw data or continuation?)

18:58:08.298635 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    atlas.vlan20.acheron.be.445 > hyperon.vlan10.acheron.be.50031: Flags [.], cksum 0x068f (correct), seq 207, ack 186, win 32806, options [nop,nop,TS val 70824380 ecr 523873120], length 0
18:58:08.463289 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 258)
    atlas.vlan20.acheron.be.445 > hyperon.vlan10.acheron.be.50031: Flags [P.], cksum 0xc46a (correct), seq 207:413, ack 186, win 32806, options [nop,nop,TS val 70824545 ecr 523873120], length 206SMB-over-TCP packet:(raw data or continuation?)

18:58:08.465877 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    hyperon.vlan10.acheron.be.50031 > atlas.vlan20.acheron.be.445: Flags [.], cksum 0xa297 (correct), seq 186, ack 413, win 57860, options [nop,nop,TS val 523873286 ecr 70824545], length 0
18:58:08.478905 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    atlas.vlan20.acheron.be.445 > hyperon.vlan10.acheron.be.50029: Flags [F.], cksum 0xeed3 (correct), seq 1, ack 2, win 32806, options [nop,nop,TS val 70824560 ecr 523873001], length 0
18:58:08.481052 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    hyperon.vlan10.acheron.be.50029 > atlas.vlan20.acheron.be.445: Flags [.], cksum 0x5db9 (correct), seq 2, ack 2, win 4117, options [nop,nop,TS val 523873301 ecr 70824560], length 0
18:58:10.963751 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    hyperon.vlan10.acheron.be.50031 > atlas.vlan20.acheron.be.445: Flags [F.], cksum 0x98eb (correct), seq 186, ack 413, win 57860, options [nop,nop,TS val 523875761 ecr 70824545], length 0
18:58:10.964338 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    atlas.vlan20.acheron.be.445 > hyperon.vlan10.acheron.be.50031: Flags [.], cksum 0xf104 (correct), seq 413, ack 187, win 32806, options [nop,nop,TS val 70827046 ecr 523875761], length 0
18:58:10.990392 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    atlas.vlan20.acheron.be.445 > hyperon.vlan10.acheron.be.50031: Flags [F.], cksum 0xf0e9 (correct), seq 413, ack 187, win 32806, options [nop,nop,TS val 70827072 ecr 523875761], length 0
18:58:10.992515 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    hyperon.vlan10.acheron.be.50031 > atlas.vlan20.acheron.be.445: Flags [.], cksum 0x8eea (correct), seq 187, ack 414, win 57860, options [nop,nop,TS val 523875794 ecr 70827072], length 0
^C
23 packets captured
27 packets received by filter
0 packets dropped by kernel
oxygen-BZ.v3.9.42# tcpdump -i eth0.10 -vvv -n 'port 445'
tcpdump: WARNING: eth0.10: no IPv4 address assigned
tcpdump: listening on eth0.10, link-type EN10MB (Ethernet), capture size 65535 bytes
18:58:23.705936 IP6 (flowlabel 0x79cbe, hlim 64, next-header TCP (6) payload length: 44) 2001:470:7ee7:10:f12d:f255:c537:4d78.50033 > 2001:470:7ee7:20::100.445: Flags [SEW], cksum 0x43f4 (correct), seq 908309115, win 65535, options [mss 1440,nop,wscale 5,nop,nop,TS val 523888449 ecr 0,sackOK,eol], length 0
18:58:23.775782 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 64)
    10.23.10.152.50034 > 10.23.20.100.445: Flags [S], cksum 0x1b67 (correct), seq 2735110519, win 65535, options [mss 1460,nop,wscale 5,nop,nop,TS val 523888517 ecr 0,sackOK,eol], length 0
18:58:23.776370 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 60)
    10.23.20.100.445 > 10.23.10.152.50034: Flags [S.], cksum 0x950e (correct), seq 2839895592, ack 2735110520, win 32806, options [sackOK,TS val 70839859 ecr 523888517,mss 8960,nop,wscale 5], length 0
18:58:23.780027 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    10.23.10.152.50034 > 10.23.20.100.445: Flags [.], cksum 0x5133 (correct), seq 1, ack 1, win 4117, options [nop,nop,TS val 523888520 ecr 70839859], length 0
18:58:23.780061 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    10.23.10.152.50034 > 10.23.20.100.445: Flags [F.], cksum 0x5132 (correct), seq 1, ack 1, win 4117, options [nop,nop,TS val 523888520 ecr 70839859], length 0
18:58:23.780069 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 64)
    10.23.10.152.50036 > 10.23.20.100.445: Flags [S], cksum 0x9ea3 (correct), seq 4000230091, win 65535, options [mss 1460,nop,wscale 7,nop,nop,TS val 523888520 ecr 0,sackOK,eol], length 0
18:58:23.780551 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    10.23.20.100.445 > 10.23.10.152.50034: Flags [.], cksum 0xe11c (correct), seq 1, ack 2, win 32806, options [nop,nop,TS val 70839863 ecr 523888520], length 0
18:58:23.780622 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 60)
    10.23.20.100.445 > 10.23.10.152.50036: Flags [S.], cksum 0xcd02 (correct), seq 4072497142, ack 4000230092, win 32806, options [sackOK,TS val 70839863 ecr 523888520,mss 8960,nop,wscale 5], length 0
18:58:23.783870 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    10.23.10.152.50036 > 10.23.20.100.445: Flags [.], cksum 0xb733 (correct), seq 1, ack 1, win 57863, options [nop,nop,TS val 523888524 ecr 70839863], length 0
18:58:23.783899 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 125)
    10.23.10.152.50036 > 10.23.20.100.445: Flags [P.], cksum 0xd0dd (correct), seq 1:74, ack 1, win 57863, options [nop,nop,TS val 523888524 ecr 70839863], length 73
SMB PACKET: SMBnegprot (REQUEST)
SMB Command   =  0x72
Error class   =  0x0
Error code    =  0 (0x0)
Flags1        =  0x8
Flags2        =  0x1
Tree ID       =  65535 (0xffff)
Proc ID       =  1 (0x1)
UID           =  65535 (0xffff)
MID           =  0 (0x0)
Word Count    =  0 (0x0)
smb_bcc=34
Dialect=NT LM 0.12
Dialect=SMB 2.002
Dialect=SMB 2.???

18:58:23.784344 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    10.23.20.100.445 > 10.23.10.152.50036: Flags [.], cksum 0x18c8 (correct), seq 1, ack 74, win 32806, options [nop,nop,TS val 70839867 ecr 523888524], length 0
18:58:23.828581 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    10.23.20.100.445 > 10.23.10.152.50034: Flags [F.], cksum 0xe0eb (correct), seq 1, ack 2, win 32806, options [nop,nop,TS val 70839911 ecr 523888520], length 0
18:58:23.830874 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    10.23.10.152.50034 > 10.23.20.100.445: Flags [.], cksum 0x50cc (correct), seq 2, ack 2, win 4117, options [nop,nop,TS val 523888569 ecr 70839911], length 0
18:58:23.898218 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 258)
    10.23.20.100.445 > 10.23.10.152.50036: Flags [P.], cksum 0xe29b (correct), seq 1:207, ack 74, win 32806, options [nop,nop,TS val 70839980 ecr 523888524], length 206SMB-over-TCP packet:(raw data or continuation?)

18:58:23.900638 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    10.23.10.152.50036 > 10.23.20.100.445: Flags [.], cksum 0xb538 (correct), seq 74, ack 207, win 57861, options [nop,nop,TS val 523888637 ecr 70839980], length 0
18:58:23.900667 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 164)
    10.23.10.152.50036 > 10.23.20.100.445: Flags [P.], cksum 0x04a3 (correct), seq 74:186, ack 207, win 57861, options [nop,nop,TS val 523888637 ecr 70839980], length 112SMB-over-TCP packet:(raw data or continuation?)

18:58:23.901222 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    10.23.20.100.445 > 10.23.10.152.50036: Flags [.], cksum 0x16a5 (correct), seq 207, ack 186, win 32806, options [nop,nop,TS val 70839983 ecr 523888637], length 0
18:58:23.901697 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 258)
    10.23.20.100.445 > 10.23.10.152.50036: Flags [P.], cksum 0x4a5a (correct), seq 207:413, ack 186, win 32806, options [nop,nop,TS val 70839984 ecr 523888637], length 206SMB-over-TCP packet:(raw data or continuation?)

18:58:23.903694 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    10.23.10.152.50036 > 10.23.20.100.445: Flags [.], cksum 0xb3f4 (correct), seq 186, ack 413, win 57860, options [nop,nop,TS val 523888640 ecr 70839984], length 0
18:58:26.485797 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    10.23.10.152.50036 > 10.23.20.100.445: Flags [F.], cksum 0xa9ed (correct), seq 186, ack 413, win 57860, options [nop,nop,TS val 523891206 ecr 70839984], length 0
18:58:26.486383 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    10.23.20.100.445 > 10.23.10.152.50036: Flags [.], cksum 0x01b3 (correct), seq 413, ack 187, win 32806, options [nop,nop,TS val 70842569 ecr 523891206], length 0
18:58:26.512501 IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    10.23.20.100.445 > 10.23.10.152.50036: Flags [F.], cksum 0x0198 (correct), seq 413, ack 187, win 32806, options [nop,nop,TS val 70842595 ecr 523891206], length 0
18:58:26.514767 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 52)
    10.23.10.152.50036 > 10.23.20.100.445: Flags [.], cksum 0x9f97 (correct), seq 187, ack 414, win 57860, options [nop,nop,TS val 523891240 ecr 70842595], length

This is a tcpdump -vvv from the traffic that triggers it (well I did the same thing that made it dump 4x in a row yesterday, but on release now so it doesn't dump on the assert)

It still looks good at the AP, I can't dump it on the switch unfortunately. This narrows it down to either the switch fucking up or we (driver, stack) messing up. Not sure why it only happens with Apple device though, I wonder if they are setting some odd bits in there headers that make either the switch or us trip up when vlans are involved.

#4

Updated by Dan McDonald about 1 year ago

You can always use dtrace to inspect the mblks on ixgbe_rx_assoc_hcksum() assuming you have HW checksumming checked (and you should).

#5

Updated by Jorge Schrauwen about 1 year ago

Is HW checksumming a manual nob that needs to be turned on? I though it was on by default?

#include <sys/types.h>
#include <sys/ethernet.h>

fbt:ixgbe:ixgbe_rx_assoc_hcksum:entry
{
self->mp = (mblk_t *)args[1];
self->ether = (struct ether_header*)self->mp->b_rptr;
}

Results in

dtrace: error on enabled probe ID 1 (ID 77634: fbt:ixgbe:ixgbe_rx_assoc_hcksum:entry): invalid address (0x800093) in action #2 at DIF offset 12

So I am probably doing something wrong, my dtrace foo is poor.

#6

Updated by Dan McDonald about 1 year ago

mp is arg0 ===> `self->mp = (mblk_t *)arg0;`

#7

Updated by Jorge Schrauwen about 1 year ago

Ah right 0 indexed!

#include <sys/types.h>
#include <sys/ethernet.h>

fbt:ixgbe:ixgbe_rx_assoc_hcksum:entry
{
self->mp = (mblk_t *)args[0];
self->ether = (struct ether_vlan_header*)self->mp->b_rptr;
self->daddr = self->ether->ether_dhost;
self->saddr = self->ether->ether_shost;
self->dest = self->daddr;
self->src = self->saddr;
self->type = (self->ether->ether_type & 0xf0)|(self->ether->ether_type &0xf);
printf("Destination: ");
printf("%x:", (char)self->dest.ether_addr_octet[0]);
printf("%x:", (char)self->dest.ether_addr_octet[1]);
printf("%x:", (char)self->dest.ether_addr_octet[2]);
printf("%x:", (char)self->dest.ether_addr_octet[3]);
printf("%x:", (char)self->dest.ether_addr_octet[4]);
printf("%x", (char)self->dest.ether_addr_octet[5]);
printf(" - Source: ");
printf("%x:", (char)self->src.ether_addr_octet[0]);
printf("%x:", (char)self->src.ether_addr_octet[1]);
printf("%x:", (char)self->src.ether_addr_octet[2]);
printf("%x:", (char)self->src.ether_addr_octet[3]);
printf("%x:", (char)self->src.ether_addr_octet[4]);
printf("%x", (char)self->src.ether_addr_octet[5]);
printf(" - Type: ");
printf("%x%x\n", (self->type&0xf), (self->type&0xf0));
}
[root@carbon /zones/global/cores]# dtrace -q -C -s ixgbe_rx.p
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 1:0:5e:0:0:fb - Source: f0:18:98:40:e0:66 - Type: 80
Destination: 33:33:0:0:0:fb - Source: f0:18:98:40:e0:66 - Type: 680
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 1:80:c2:0:0:e - Source: f0:9f:c2:b:ef:91 - Type: 40
Destination: 1:0:5e:0:0:fb - Source: 78:4f:43:25:b:91 - Type: 80
Destination: 33:33:0:0:0:fb - Source: 78:4f:43:25:b:91 - Type: 680
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 1:0:5e:0:0:fb - Source: 78:4f:43:25:b:91 - Type: 80
Destination: 33:33:0:0:0:fb - Source: 78:4f:43:25:b:91 - Type: 680
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 1:0:5e:0:0:fb - Source: 78:4f:43:25:b:91 - Type: 80
Destination: 1:0:5e:0:0:fb - Source: 78:4f:43:25:b:91 - Type: 80
Destination: 33:33:0:0:0:fb - Source: 78:4f:43:25:b:91 - Type: 680
Destination: 1:0:5e:0:0:fb - Source: 78:4f:43:25:b:91 - Type: 80
Destination: 33:33:0:0:0:fb - Source: 78:4f:43:25:b:91 - Type: 680
Destination: 1:0:5e:0:0:fb - Source: 78:4f:43:25:b:91 - Type: 80
Destination: 33:33:0:0:0:fb - Source: 78:4f:43:25:b:91 - Type: 680
Destination: 1:0:5e:0:0:fb - Source: 78:4f:43:25:b:91 - Type: 80
Destination: 33:33:0:0:0:fb - Source: 78:4f:43:25:b:91 - Type: 680
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 1:80:c2:0:0:0 - Source: f0:9f:c2:b:ef:91 - Type: 30
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:3:10:1 - Source: 0:4:4b:55:35:26 - Type: 80
Destination: 0:22:6:3:10:1 - Source: 0:4:4b:55:35:26 - Type: 80
Destination: 0:22:6:3:10:1 - Source: 0:4:4b:55:35:26 - Type: 80
Destination: 0:22:6:3:10:1 - Source: 0:4:4b:55:35:26 - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 1:0:5e:0:0:fb - Source: 78:4f:43:25:b:91 - Type: 80
Destination: 33:33:0:0:0:fb - Source: 78:4f:43:25:b:91 - Type: 680
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 1:0:5e:0:0:fb - Source: 78:4f:43:25:b:91 - Type: 80
Destination: 33:33:0:0:0:fb - Source: 78:4f:43:25:b:91 - Type: 680
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 1:0:5e:0:0:fb - Source: 78:4f:43:25:b:91 - Type: 80
Destination: 33:33:0:0:0:fb - Source: 78:4f:43:25:b:91 - Type: 680
Destination: 0:22:6:3:10:1 - Source: 72:89:ba:aa:84:4a - Type: 80
Destination: 1:80:c2:0:0:0 - Source: f0:9f:c2:b:ef:91 - Type: 30
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 1:0:5e:0:0:fb - Source: f0:18:98:40:e0:66 - Type: 80
Destination: 33:33:0:0:0:fb - Source: f0:18:98:40:e0:66 - Type: 680
Destination: 1:80:c2:0:0:0 - Source: f0:9f:c2:b:ef:91 - Type: 30
Destination: 1:0:5e:0:0:fb - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 33:33:0:0:0:fb - Source: f8:d0:27:cf:98:9f - Type: 680
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 1:0:5e:0:0:fb - Source: f0:18:98:40:e0:66 - Type: 80
Destination: 33:33:0:0:0:fb - Source: f0:18:98:40:e0:66 - Type: 680
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:3:10:1 - Source: 0:4:4b:55:35:26 - Type: 80
Destination: 1:80:c2:0:0:0 - Source: f0:9f:c2:b:ef:91 - Type: 30
Destination: 0:22:6:5:30:1 - Source: 92:57:d7:fb:bc:7d - Type: 680
Destination: 33:33:ff:0:0:1 - Source: 4c:74:bf:dc:ac:50 - Type: 680
Destination: 0:22:6:3:10:1 - Source: 72:89:ba:aa:84:4a - Type: 80
Destination: 1:80:c2:0:0:0 - Source: f0:9f:c2:b:ef:91 - Type: 30
Destination: 33:33:ff:0:0:1 - Source: 4c:74:bf:dc:ac:50 - Type: 680
Destination: 0:22:6:4:30:1 - Source: 92:57:d7:fb:bc:7d - Type: 80
Destination: 0:22:6:3:10:1 - Source: 0:4:4b:55:35:26 - Type: 80
Destination: 0:22:6:3:10:1 - Source: 0:4:4b:55:35:26 - Type: 80
Destination: 0:22:6:3:10:1 - Source: 0:4:4b:55:35:26 - Type: 80
Destination: 0:22:6:3:10:1 - Source: 0:4:4b:55:35:26 - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 33:33:ff:0:0:1 - Source: 4c:74:bf:dc:ac:50 - Type: 680
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:6:20:1 - Source: 52:1e:25:cf:84:b0 - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 1:80:c2:0:0:0 - Source: f0:9f:c2:b:ef:91 - Type: 30
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:4:30:1 - Source: 92:57:d7:fb:bc:7d - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 80

0:22:6:6:20:1 is the vnic where the traffic is supose to go to... I am not seeing anything with that source that is causing the issue (f0:18:98:40:e0:66).

Potentially I am incorrectly outputthem them 'Destination: 1:80:c2:0:0:0 - Source: f0:9f:c2:b:ef:91 - Type: 30' looks like nothing of mine.

#8

Updated by Dan McDonald about 1 year ago

Your ethertype is being grabbed wrongly.:

self->type = (self->ether->ether_type & 0xf0)|(self->ether->ether_type &0xf); /* WRONG. */

#include <sys/byteorder.h>
self->type = BE_16(self->ether->ether_type); /* In network order, convert to print-friendly. *?

#9

Updated by Jorge Schrauwen about 1 year ago

Destination: 0:22:6:5:30:1 - Source: 92:57:d7:fb:bc:7d - Type: 86dd
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 800
Destination: 1:80:c2:0:0:0 - Source: f0:9f:c2:b:ef:91 - Type: 300
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 800
Destination: 1:80:c2:0:0:e - Source: f0:9f:c2:b:ef:91 - Type: 4f0
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 800
Destination: 0:22:6:3:10:1 - Source: f8:d0:27:cf:98:9f - Type: 800

That looks a bit better. Most of my dtrace is by reading the man page and googling and hacking something together. I now have this. I will let this run tonight when I can access the box that generates the traffic. (Which is off now)

There still seem to be a few types that I cannot find in the spec: 4f0 and 300...

It's a simple 10Gbe link without LAGG or anything fancy aside from Jumbo frames...

interface  0/49
mtu 9018
switchport mode trunk
switchport trunk allowed vlan 5,10,20,30,40
lldp transmit-tlv port-desc
lldp transmit-tlv sys-name
lldp transmit-tlv sys-desc
lldp transmit-tlv sys-cap
exit
/*
dtrace -q -C -s ixgbe_rx.p
*/

#include <sys/types.h>
#include <sys/ethernet.h>
#include <sys/byteorder.h>

fbt:ixgbe:ixgbe_rx_assoc_hcksum:entry
{
    self->mp = (mblk_t *)args[0];
    self->ether = (struct ether_vlan_header*)self->mp->b_rptr;
    self->daddr = self->ether->ether_dhost;
    self->saddr = self->ether->ether_shost;
    self->type = BE_16(self->ether->ether_type);
    printf("Destination: ");
    printf("%x:", (char)self->daddr.ether_addr_octet[0]);
    printf("%x:", (char)self->daddr.ether_addr_octet[1]);
    printf("%x:", (char)self->daddr.ether_addr_octet[2]);
    printf("%x:", (char)self->daddr.ether_addr_octet[3]);
    printf("%x:", (char)self->daddr.ether_addr_octet[4]);
    printf("%x", (char)self->daddr.ether_addr_octet[5]);
    printf(" - Source: ");
    printf("%x:", (char)self->saddr.ether_addr_octet[0]);
    printf("%x:", (char)self->saddr.ether_addr_octet[1]);
    printf("%x:", (char)self->saddr.ether_addr_octet[2]);
    printf("%x:", (char)self->saddr.ether_addr_octet[3]);
    printf("%x:", (char)self->saddr.ether_addr_octet[4]);
    printf("%x", (char)self->saddr.ether_addr_octet[5]);
    printf(" - Type: ");
    printf("%x\n", self->type);
}
#10

Updated by Dan McDonald about 1 year ago

Maybe some of the frames are stock ethernet frames (not VLAN ones).

Also available in: Atom PDF