Date: Fri, 21 Jan 94 04:30:08 PST
From: Advanced Amateur Radio Networking Group <tcp-group@ucsd.edu>
Errors-To: TCP-Group-Errors@UCSD.Edu
Reply-To: TCP-Group@UCSD.Edu
Precedence: Bulk
Subject: TCP-Group Digest V94 #17
To: tcp-group-digest


TCP-Group Digest            Fri, 21 Jan 94       Volume 94 : Issue   17

Today's Topics:
                       TCP-Group Digest V94 #16
                TCP MSS and TCP WIN settings (3 msgs)
                 TNOS Missing Function - NOT (2 msgs)
                       Wampes loopback (3 msgs)

Send Replies or notes for publication to: <TCP-Group@UCSD.Edu>.
Subscription requests to <TCP-Group-REQUEST@UCSD.Edu>.
Problems you can't solve otherwise to brian@ucsd.edu.

Archives of past issues of the TCP-Group Digest are available
(by FTP only) from UCSD.Edu in directory "mailarchives".

We trust that readers are intelligent enough to realize that all text
herein consists of personal comments and does not represent the official
policies or positions of any party.  Your mileage may vary.  So there.
----------------------------------------------------------------------

Date: Fri, 21 Jan 94 09:50:38 GMT
From: A.D.S.Benham@bnr.co.uk
Subject: TCP-Group Digest V94 #16
To: TCP-Group@UCSD.EDU

> ------------------------------
> 
> Date: Wed, 19 Jan 94 16:46:28 CST
> From: Jack Snodgrass                    <kf5mg@kf5mg.ampr.org>
> Subject: TCP MSS and TCP WIN settings
> To: tcp-group mailling list             <tcp-group@ucsd.edu>
> 
> Is there any way to assign a TCP WIN and TCP MSS setting per port? 9600b ports
> can use larger Window's and Packets than 1200b ports. I'm sure that it's been
> asked before but now that I've got a 9600b port going, I need to know what to
> do to get the most out of the system. Thanks.
> 
> 73's  de  Jack  -  kf5mg
> Internet        -  kf5mg@kf5mg.ampr.org            -  44.28.0.14
> AX25net         -  kf5mg@kf5mg.#dfw.tx.usa.noam    -  home (817) 488-4386
> Dialup          -  kf5mg@tcet.unt.edu              -  work (looking  for)
 
I put the window mod into my JNOS sources last year. I'll post the deltas next
week.
The settings are set with the "ifconfig <port>" subcommands. Setting the window
is slightly more complicated than it might at first appear, because when one
initiates a session on port <n> the reverse path traffic might arrive on port <m>.
I therefore use the "tcp window" for the SYN frame, and then set the window on
all other outgoing frames for that session according to the value set for the
window on the port on which the replies are received.

Don't worry if it sounds too complicated, I'll mail the deltas.

73,

Andrew Benham, G8FSL
--------------------------------------------------------------------
adsb@bnr.co.uk   BNR Europe Ltd, London Road, Harlow, Essex CM17 9NA
adsb@bnr.ca      +44 279 402372    Fax: +44 279 402029
Home:            g8fsl@g8fsl.ampr.org [44.131.19.165]
--------------------------------------------------------------------

------------------------------

Date: Wed, 19 Jan 1994 19:19:08 -0800
From: Phil Karn <karn@qualcomm.com>
Subject: TCP MSS and TCP WIN settings
To: kf5mg@kf5mg.ampr.org

If the physical port is on the same machine as the TCP, then TCP
already limits its MSS to avoid fragmentation out through that port.
For example, if the other end advertises that it will accept a MSS of
1460 bytes but the MTU of the local interface you'll take to reach it
is only 576 bytes, then the local TCP will use a MSS of only 536 bytes
(576-40).

If the interface with the small MTU is on another router, however, the
originating TCP won't know this and fragmentation will occur.

Note also that the effective window size used by TCP, the "congestion
window" is always less than the window advertised by the other
end. The congestion window size is controlled by the slow start and
congestion control algorithms in TCP. These are not perfect, but they
do help.

Phil

------------------------------

Date: Thu, 20 Jan 94 05:53:01 CST
From: Jack Snodgrass                    <kf5mg@kf5mg.ampr.org>
Subject: TCP MSS and TCP WIN settings
To: tcp-group@ucsd.edu

Phil Karn writes:
> If the physical port is on the same machine as the TCP, then TCP
> already limits its MSS to avoid fragmentation out through that port.
> For example, if the other end advertises that it will accept a MSS of
> 1460 bytes but the MTU of the local interface you'll take to reach it
> is only 576 bytes, then the local TCP will use a MSS of only 536 bytes
> (576-40).

    Well...  that's what I thought should happen, but I tried it with JNOS 
1.10x15.  There's a IFCONFIG MTU command that I used to set the MTU to a 
value of 256.  The MSS was 1024 and the WINDOW was 4K.  When I made a FTP 
connect, I figured that NOS would use 256 byte packets, but it used 512 
byte packets.  The IFCONFIG MTU value didn't seem to have an effect.  
    I took a look at the TCP*.C files. There are only a couple of places
where the Tcp_mss and Tcp_window settings are assigned to a connection. It
appears that it would be easy to change this to a Tcp_mss.Interface and 
Tcp_window.Interface so that you could use different Window and MSS sizes 
per interface. The only problem is I don't see where in the TCP*.C code 
that it references what Interface it's using. Any idea how to tell what 
Interface a TCP socket is going to be using?

73's  de  Jack  -  kf5mg
Internet        -  kf5mg@kf5mg.ampr.org            -  44.28.0.14
AX25net         -  kf5mg@kf5mg.#dfw.tx.usa.noam    -  home (817) 488-4386
Dialup          -  kf5mg@tcet.unt.edu              -  work (looking  for)

------------------------------

Date: Thu, 20 Jan 1994 14:10:25 -0600
From: miltonm@inetnode.austin.ibm.com (Milton Miller)
Subject: TCP MSS and TCP WIN settings
To: kf5mg@kf5mg.ampr.org

mss is automatically lowered to mtu-40 based on the mtu of the first
hop in the routing table.  For window, you would have to rely on
the congestion window I guess.

Some tcp stacks have started keeping mtu in the routing table (probably
only those that use the "new" mtu probing.  Who is adding that to nos? :-)

milton
--
Milton Miller  KB5TKF  miltonm@austin.ibm.com
I never speak for IBM

------------------------------

Date: Thu, 20 Jan 94 09:02:13 EST
From: brian@lantz.cftnet.com (Brian A. Lantz)
Subject: TNOS Missing Function - NOT
To: tcp-group@ucsd.edu

Come on, guys! It's a little unfair to blame TNOS for not including standard
BorlandC 3.x DOS library functions in case you are running a version of the
compiler that is 2-3 years old! The before mentioned function is a part of
Borland's library for versions 3.0, 3.1, and 4.0.

Lack of memory.... Borland C 3.x and up uses EMS/XMS to permit virtually
unlimited source size. Is this file big, yep!

As for the commment about it being perfect out of the box, NOT! If you
expected that it would compile under every possible combination, your
expectations are based in the clouds! Your mileage will vary!

As for TNOS support, I suggest subscribing to TNOS-TOPICS and sending the
messages there. I don't know that Brian wants a lot of "how do you compile
this TNOS feature" stuff in this group. We don't want to abuse his
understanding.

               /----------------------------------------------/
              /   Brian A. Lantz/KO4KS                       /
             /                                              /
            /   Packet:   KO4KS@KO4KS.#TPAFL.FL.USA.NA     /
           /   Internet: brian@lantz.cftnet.com           /
          /        {   printf ("Hey Jude");              /
         /                bad = !make;                  /
        /               better = sad_song;    }        /
       /----------------------------------------------/

------------------------------

Date: Fri, 21 Jan 94 04:26:00 -0000
From: mikebw@bilow.uu.ids.net (Mike Bilow)
Subject: TNOS Missing Function - NOT
To: tcp-group@ucsd.edu

Cc: brian@lantz.cftnet.com

In a msg on <Jan 20 14:02>, Brian A. Lantz writes:

 BAL> Come on, guys! It's a little unfair to blame TNOS for not 
 BAL> including standard BorlandC 3.x DOS library functions in 
 BAL> case you are running a version of the compiler that is 2-3 
 BAL> years old! The before mentioned function is a part of 
 BAL> Borland's library for versions 3.0, 3.1, and 4.0.

The _dos_xxxx() form (like "_dos_getfileattr()") of the Borland library calls
was added for increased source level compatibility with Microsoft library calls
as of BC++ 3.0.  These are made equivalent in system header macro definitions
to the old form Borland calls (like "getfileattr()").  Another motivation for
the change was to more clearly indicate which functions are not part of the
ANSI C specification because they are specific to the operating system or
platform.  ANSI suggests that such symbols be started with the extra prepended
underscore character.  Similar changes were made in designating "near" and
"far" keywords as "_near" and "_far" in newer compilers.

It would be fairly easy to generate a special header file for older Borland
compilers that would implement some extremely simple text translations, such as
defining the newer prefaces (like "_dos_") so that they were stripped by
translating them to empty text strings.  This special header file would have to
be included ahead of any system header files.  Somebody has probably already
done this somewhere, but I don't know of it.

Changes to the Borland assembler are a more irritating situation.  Borland
doesn't really seem to care very much about the quality of TASM, essentially
regarding it as a throwaway product.  Source code that assembles perfectly with
TASM 2.5 (from BC++ 2.0) breaks substantially under the newer TASM 3.1 (from
BC++ 3.1), a known fact for a long time.  You almost never see this with the C
compilers, where source code only breaks in the opposite direction, going from
newer to older compilers.  The most irritating part of it for me is that TASM
actually has a switch which is supposed to allow it to emulate any prior
version of TASM or MASM, but it doesn't work right.  Probably the best solution
would be to provide a prebuilt ASMOBJ.LIB of the assembly modules as Phil does
for the base KA9Q source kit; he originally started doing this when TC 2.0 was
all that some people had and Borland didn't even make an assembler.

 BAL> Lack of memory.... Borland C 3.x and up uses EMS/XMS to permit 
 BAL> virtually unlimited source size. Is this file big, yep!

BC++ 2.0 comes with two different command-line versions, BCC.EXE and BCCX.EXE. 
BCC runs in real mode, while BCCX runs in protected mode with an included DOS
extender.  You can also use compiler switches on BCC to enable it to use
XMS/EMS while compiling.

There are some bugs in the old Borland tools that can cause serious XMS/EMS
corruption, and this can be devastating if you are running SMARTDRV or a
similar disk cache which maintains disk buffers in XMS/EMS.  BCCX spawns the
real mode linker, TLINK, instead of the protected mode linker, TLINKX.  If you
use the "-l" switch on BCCX to pass an argument to the linker which enables the
use of XMS/EMS, then this will conflict with the loaded DOS extender and very
bad things will occur.  When using BCCX, you must either live with the real
mode linker and no XMS/EMS, or use the protected mode linker manually by
starting TLINKX from the command line.  By default, NOS MAKEFILEs invoke the
compiler as a final step just to run the linker, and this might have to be
changed.  The real mode linker should work fine for NOS in most cases, since
you will probably run out of DGROUP space long before you run out of symbol
space.

As was noted by someone else, the MAKE utility can be invoked with the "-S"
switch to enable swapping itself out of memory, but there is a fairly serious
speed penalty for that.  When I was compiling NOS on a 386SX-16 in the old
days, it took about an hour from scratch.  On my current system, running the
compiler in an OS/2 DOS emulation with DPMI seeing a lot of virtual memory, it
takes about three or four minutes.

 BAL> As for TNOS support, I suggest subscribing to TNOS-TOPICS and 
 BAL> sending the messages there. I don't know that Brian wants a 
 BAL> lot of "how do you compile this TNOS feature" stuff in this 
 BAL> group. We don't want to abuse his understanding.

Why are you referring to yourself in the third person?  Have you been reading
"The Education of Henry Adams" or something?

-- Mike

------------------------------

Date: Thu, 20 Jan 94 15:55:30 EDT
From: "Jan Jaeger" <JANJ@ACCIVM.acci.COM.AU>
Subject: Wampes loopback
To: tcp-group@ucsd.edu

I have ported wampes to the IBM RT (6150 & 6151) running AOS (BSD 4.3).
I seem to have run into a problem where packets send over the loopback
interface cause wampes to crash.  The problem is that loopback->send
is defined as NULLFP in iface.c and ip_route() tries to call (loopback->send).
I have also compiled wampes in an RS6K (3.2.4) and the same problem exist.
Am I safe to assume that this is not a porting problem? (It still needs to
be fixed of course).

Jan PA3EFU/VK3CEX

------------------------------

Date: Thu, 20 Jan 94 21:40:00 MST
From: Dieter Deyke <deyke@mdddhd.fc.hp.com>
Subject: Wampes loopback
To: JANJ@ACCIVM.acci.COM.AU, tcp-group@ucsd.edu

> I have ported wampes to the IBM RT (6150 & 6151) running AOS (BSD 4.3).

Could  you  send  me  your  changes,  so  I  can  merge  them  into  the
distribution?

> I seem to have run into a problem where packets send over the loopback
> interface cause wampes to crash.  The problem is that loopback->send
> is defined as NULLFP in iface.c and ip_route() tries to call (loopback->send).
> I have also compiled wampes in an RS6K (3.2.4) and the same problem exist.
> Am I safe to assume that this is not a porting problem? (It still needs to
> be fixed of course).

This can only  happen  if you set up a route to some  address  different
from 127.0.0.1 thru the loopback interface.  Just don't do this.  In the
next  version of WAMPES I will put in a  safeguard,  which  will  ignore
packets routed this way, instead of crashing the system.

> Jan PA3EFU/VK3CEX

--
Dieter Deyke - deyke@fc.hp.com - dk5sg@db0sao.ampr.org

------------------------------

Date: Fri, 21 Jan 94 05:01:00 -0000
From: mikebw@bilow.uu.ids.net (Mike Bilow)
Subject: Wampes loopback
To: tcp-group@ucsd.edu

Cc: JANJ@ACCIVM.acci.COM.AU

In a msg on <Jan 20 19:55>, Jan Jaeger of writes:

 JJ> I have ported wampes to the IBM RT (6150 & 6151) running AOS (BSD 4.3).

Great!  We have one of those dinosaurs here.  Unfortunately, it is running AIX.
 Still worse, it is running AIX v2, since AIX v3 needs the RS machines and will
not run on the RT machines.  I think we have the native TCP/IP support, but no
one knows where the manual is, and no one at IBM seemed to care much about
locating another one even when we dangled small bills in front of them.

Is your port available at any FTP site, ideally UCSD.EDU?

-- Mike

------------------------------

End of TCP-Group Digest V94 #17
******************************
******************************