Hi All,

What reason could cause a big reassembly list on the specific ILL?

I ran into a NIC driver UDP performance issue recently. After the 
debugging, I found it caused by a packets dropping issue in upper layer.

The netstat output showed  ipReasmFails is extremely high while this 
issue is happened:

# netstat -I igb1 -s -P ip                     
Name  Mtu  Net/Dest      Address        Ipkts  Ierrs Opkts  Oerrs Collis 
Queue
igb1  1500 11.0.3.0      11.0.3.11      7716786 0     26538  0     
0      0    

IPv4    ipForwarding        =     2     ipDefaultTTL        =   255
        ipInReceives        =7718245    ipInHdrErrors       =     0
        ipInAddrErrors      =     0     ipInCksumErrs       =     0
        ipForwDatagrams     =     0     ipForwProhibits     =     0
        ipInUnknownProtos   =    70     ipInDiscards        =     0
        ipInDelivers        = 48737     ipOutRequests       = 32338
        ipOutDiscards       =     1     ipOutNoRoutes       =     0
        ipReasmTimeout      =    60     ipReasmReqds        =690804
        ipReasmOKs          =    83     ipReasmFails        =695798
        ipReasmDuplicates   =     0     ipReasmPartDups     =     0
        ipFragOKs           =     0     ipFragFails         =     0
        ipFragCreates       =     0     ipRoutingDiscards   =     0
        tcpInErrs           =     0     udpNoPorts          =   118
        udpInCksumErrs      =     0     udpInOverflows      =     0
        rawipInOverflows    =     0     ipsecInSucceeded    =     0
        ipsecInFailed       =     0     ipInIPv6            =     0
        ipOutIPv6           =     0     ipOutSwitchIPv6     =   106


My dtrace command showed the massive packets were dropped by 
ill_frag_prune in IP layer:

bash-3.2# dtrace -n mib:::ipIfStatsReasmFails'[EMAIL PROTECTED]()]=count();}' 
dtrace: description 'mib:::ipIfStatsReasmFails' matched 3 probes
^C
              ip`ill_frag_free_pkts+0x84
              ip`ill_frag_prune+0x1d0
              ip`ip_rput_fragment+0x39c
              ip`ip_udp_input+0x80c
              ip`ip_input+0xb94
              dls`soft_ring_drain+0x68
              dls`soft_ring_worker+0x5c
              unix`thread_start+0x4
                1

              ip`ip_mib2_add_ip_stats+0x1ac
              ip`ip_snmp_get_mib2_ip_traffic_stats+0x130
              ip`ip_snmp_get+0xd8
              ip`snmpcom_req+0x280
              ip`ip_wput_nondata+0x674
              unix`putnext+0x208
              genunix`strput+0x1a0
              genunix`strputmsg+0x26c
              genunix`msgio32+0x398
              genunix`putmsg32+0x98
              unix`syscall_trap32+0xcc
                6

              ip`ip_mib2_add_ip_stats+0x1ac
              ip`ip_snmp_get_mib2_ip_traffic_stats+0x130
              ip`ip_snmp_get+0xd8
              ip`snmpcom_req+0x280
              ip`ip_wput_nondata+0x674
              unix`putnext+0x208
              unix`putnext+0x208
              unix`putnext+0x208
              unix`putnext+0x208
              unix`putnext+0x208
              genunix`strput+0x1a0
              genunix`strputmsg+0x26c
              genunix`msgio32+0x398
              genunix`putmsg32+0x98
              unix`syscall_trap32+0xcc
               66

              ip`ill_frag_free_pkts+0x84
              ip`ill_frag_prune+0x100
              ip`ip_rput_fragment+0x39c
              ip`ip_udp_input+0x80c
              ip`ip_input+0xb94
              dls`soft_ring_drain+0x68
              dls`soft_ring_worker+0x5c
              unix`thread_start+0x4
           232825


It seems it is caused by a big reassembly list:

        /* If the reassembly list for this ILL will get too big, prune it */
        if ((msg_len + sizeof (*ipf) + ill->ill_frag_count) >=
            ipst->ips_ip_reass_queue_bytes) {
                ill_frag_prune(ill,
                    (ipst->ips_ip_reass_queue_bytes < msg_len) ? 0 :
                    (ipst->ips_ip_reass_queue_bytes - msg_len));
                pruned = B_TRUE;
        }

But I want to know the major reasons which could cause the big 
reassembly list on the specific ILL.

Could you shed some light on this issue? Thanks!

-- 
Cheers,

------------------------------------------------------------
Oliver Yang | http://blog.csdn.net/yayong

_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to