From owner-freebsd-stable@FreeBSD.ORG Thu Nov 11 04:52:27 2010 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ED0BB106566B for ; Thu, 11 Nov 2010 04:52:27 +0000 (UTC) (envelope-from oberman@es.net) Received: from mailgw.es.net (mail1.es.net [IPv6:2001:400:201:1::2]) by mx1.freebsd.org (Postfix) with ESMTP id D84F48FC17 for ; Thu, 11 Nov 2010 04:52:27 +0000 (UTC) Received: from ptavv.es.net (ptavv.es.net [IPv6:2001:400:910::29]) by mailgw.es.net (8.14.3/8.14.3) with ESMTP id oAB4qQuP030957 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Wed, 10 Nov 2010 20:52:27 -0800 Received: from ptavv.es.net (localhost [127.0.0.1]) by ptavv.es.net (Tachyon Server) with ESMTP id DCA681CC0F; Wed, 10 Nov 2010 20:52:26 -0800 (PST) To: Kirill Yelizarov In-reply-to: Your message of "Wed, 10 Nov 2010 04:21:12 PST." <889823.70463.qm@web120506.mail.ne1.yahoo.com> Date: Wed, 10 Nov 2010 20:52:26 -0800 From: "Kevin Oberman" Message-Id: <20101111045226.DCA681CC0F@ptavv.es.net> Cc: freebsd-stable@freebsd.org Subject: Re: icmp packets on em larger than 1472 X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 11 Nov 2010 04:52:28 -0000 > Date: Wed, 10 Nov 2010 04:21:12 -0800 (PST) > From: Kirill Yelizarov > Sender: owner-freebsd-stable@freebsd.org > > Hi, > > All my em cards running 8.1 stable don't reply to icmp echo requests packets larger than 1472 bytes. > > On stable 7.2 the same hardware works as expected: > # ping -s 1500 192.168.64.99 > PING 192.168.64.99 (192.168.64.99): 1500 data bytes > 1508 bytes from 192.168.64.99: icmp_seq=0 ttl=63 time=1.249 ms > 1508 bytes from 192.168.64.99: icmp_seq=1 ttl=63 time=1.158 ms > > Here is the dump on em interface > 15:06:31.452043 IP 192.168.66.65 > *****: ICMP echo request, id 28729, seq 5, length 1480 > 15:06:31.452047 IP 192.168.66.65 > ****: icmp > 15:06:31.452069 IP **** > 192.168.66.65: ICMP echo reply, id 28729, seq 5, length 1480 > 15:06:31.452071 IP *** > 192.168.66.65: icmp > > Same ping from same source (it's a 8.1 stable with fxp interface) to em card running 8.1 stable > #pciconf -lv > em0@pci0:3:4:0: class=0x020000 card=0x10798086 chip=0x10798086 rev=0x03 hdr=0x00 > vendor = 'Intel Corporation' > device = 'Dual Port Gigabit Ethernet Controller (82546EB)' > class = network > subclass = ethernet > > # ping -s 1472 192.168.64.200 > PING 192.168.64.200 (192.168.64.200): 1472 data bytes > 1480 bytes from 192.168.64.200: icmp_seq=0 ttl=63 time=0.848 ms > ^C > > # ping -s 1473 192.168.64.200 > PING 192.168.64.200 (192.168.64.200): 1473 data bytes > ^C > --- 192.168.64.200 ping statistics --- > 4 packets transmitted, 0 packets received, 100.0% packet loss > > And here is it's dump on em card > 5:11:15.191496 IP 192.168.66.65 > *****: ICMP echo request, id 33593, seq 0, length 1480 > 15:11:15.191534 IP 192.168.66.65 > *****: icmp > 15:11:16.192119 IP 192.168.66.65 > *****: ICMP echo request, id 33593, seq 1, length 1480 > 15:11:16.192156 IP 192.168.66.65 > ******: icmp > > igb cards on 8.1 stable are not affected I'm unsure why it ever worked. Was the interface MTU set to 1500 (default) under V7? Most ping programs (including FreeBSD) send the specified number of DATA bytes. Add the ICMP header (8 bytes) and the IP header (20 bytes) to 1472 and you get 1500, the largest packet that should work. It even gives you a hint as, for no reason I have never understood, the program includes the ICMP header is the displayed packet size (1480/1508). Also, the IP MTU of 1500 does not include the Ethernet framing which includes 12 bytes of address and two bytes of ethertype or the CRC. If the igb is allowing over 1500 bytes of IP packet through, assuming the MTU has not been increased for the standard 1500, something is clearly broken. 1472 is the right answer and 1500 (or 1473) is not. -- R. Kevin Oberman, Network Engineer Energy Sciences Network (ESnet) Ernest O. Lawrence Berkeley National Laboratory (Berkeley Lab) E-mail: oberman@es.net Phone: +1 510 486-8634 Key fingerprint:059B 2DDF 031C 9BA3 14A4 EADA 927D EBB3 987B 3751