From owner-freebsd-net Thu Oct 24 4:52:32 2002 Delivered-To: freebsd-net@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1C86737B401 for ; Thu, 24 Oct 2002 04:52:31 -0700 (PDT) Received: from otdel-1.org (draculina.otdel-1.org [195.230.89.101]) by mx1.FreeBSD.org (Postfix) with ESMTP id 854AB43E42 for ; Thu, 24 Oct 2002 04:52:29 -0700 (PDT) (envelope-from bsd#nms@otdel-1.org) Received: by otdel-1.org (CommuniGate Pro PIPE 4.0) with PIPE id 2280564; Thu, 24 Oct 2002 15:52:13 +0400 Date: Thu, 24 Oct 2002 15:52:08 +0400 From: Nikolai Saoukh To: freebsd-net@FreeBSD.ORG Subject: Re: For those who had problems with MPD server and win clients Message-ID: <20021024115208.GA23575@otdel1.org> Mail-Followup-To: freebsd-net@FreeBSD.ORG References: <20021018132732.GA27692@otdel1.org> <200210201818.g9KIIdqF048199@arch20m.dellroad.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200210201818.g9KIIdqF048199@arch20m.dellroad.org> User-Agent: Mutt/1.5.1i X-Mailer: CommuniGate Pro CLI mailer Sender: owner-freebsd-net@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org Applying patches to mpd does not fix bugs in MS software ;-) In MS software (Win XP Pro SP1 at least) there is the option 'negotiate multi-link for single link connections'. Unfortunately it can't handle it, when succesfully negotiated. One can verify it at (page to frame 82) http://www.otdel-1.org/nms/mpd/wire.txt (~700Kb) MS is not alone. Ethereal-0.9.7 can't handle rfc1990 fragments too ;-( IMHO, to make mpd damnMSproof, the interface mtu for single link scenario should be set to link mru. And if multilink negotiated, then mtu should be decremented for rfc1990 overhead to avoid fragmentation at all. Like this --- bund.c.orig Thu Oct 24 04:10:45 2002 +++ bund.c Thu Oct 24 15:44:12 2002 @@ -547,12 +547,13 @@ mtu = NG_IFACE_MTU_DEFAULT; /* Reset to default settings */ break; case 1: - if (!bund->multilink) { /* If no multilink, use peer MRU */ - mtu = MIN(bund->links[the_link]->lcp.peer_mru, + mtu = MIN(bund->links[the_link]->lcp.peer_mru, bund->links[the_link]->phys->type->mtu); - break; + if (bund->multilink) { + /* If multilink, decrease mtu to avoid MS bug */ + mtu -= 4; /* XXX: proper name for 4? */ } - /* FALLTHROUGH */ + break; default: /* We fragment everything, use bundle MRRU */ mtu = bund->mp.peer_mrru; break; P.S. Anyone knows how to submit bug report to MS & Ethereal? [without silly registrations] To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message