Network Characterization Service for Beginner(papers)

Table of Contents

Introduction to NCS How to use NCS NCS HighLight downloading distribution and re-build binaries

Introduction to NCS:

Network Characterization Service (NCS) is a network information service that provides hop-by-hop router/switch characteristics to adaptive gateways to do the congestion control, and to TCP based applications to do TCP tuning. NCS is the first tool successfully to provide both available and physical bandwidths hop-by-hop. When used with netest , another dynamic and static bandwidth analysis tool for end-to-end diagnosis, most network problems can be nailed down very quickly.

How to use NCS:

Daemon: Start a NCS daemon (ncsd) on a host with a fast NIC by root. suid will not work.
Syntax:
	ncsd [-irtc] [-l] [-max #] [-P #] &

The "-l" option is for overcoming the non responsive and/or troubled network
elements (routers/switches), or firewall. Especially, when you see this message:

 ncsd [1.2 Sep26-2K1] : can't reach the host3[xxx.yyy.xxx.hhh] with max_ttl(#)
 try to analyze partial path instead


 the error message is similar to the pipechar

 pipechar [Mar25-2K1] : can't reach the host3[xxx.yyy.xxx.hhh] with max_ttl(#)
 try to analyze partial path instead


The "-l" option should be used. The recommend arguments are:

	ncsd -l -P 11 -irtc &

The "-max #" is also for the above reason. The recommend value is 25.
When try to use smaller value for "-max", use "-l" with it. These two options
may be forced to use in the future since we have found more and more routers
that send bogus ICMP and TTL to the source.
The less # for "-P" option will make faster initial probing, but may result
in less accurate measurements.

pipechar (a desktop version of NCS) uses these options in the same way.
 tutorial  of these tools explains the pipechar output.

Current ncsd distribution is non-registered version, which runs only in single
server mode. If this is the first time to run ncsd on a host, you may
see the following message:

ncsd [1.2 Sep26-2K1] : no cache file loaded; Error<2> No such file or directory

This is not an error. This tells that it is a new ncsd. Do not try to start
another ncsd, it is already running. You can use ncs client -- ncsC --
to inquire now.


Client:	
Syntax:

	ncsC -s ncsd-name [-ah] [-TCPWin] destination(s)
	ncsC -rm destination(s)
	ncsC -START | STOP destination
	ncsC -chng [train #] [sched interval-tick [start tick]] destination

ncsd-name is the host where you run the NCS daemon (ncsd). You can change the
default ncsd name in ncsC_example.c, line 73, and recompile it:

	{"-s", "%s", 0, 1, 1, "server name", 0, argu_ranges(DEMO_DEF_NCSD)},
to
	{"-s", "%s", 0, 1, 1, "server name", 0, argu_ranges("your_NCSD_name")},

 Most frequently used options:

-ah	will report all hops info.
-TCPWin	will report RTT and Tuned TCP window size for Tx.
-rm	will remove a target from NCS cache. Only the initiator and the daemon
	can remove the target. That is, if a target (destination) is probed
	from host A, then host B will not be able to remove it.  e.g.

	host-A % ncsC target-someone 
IP = ncsd-IP
1 hops to target-someone
hop  1:     xyz.243.2.##: BW avl  99 Mb max  100 Mb;    RTT min 0.4 avg 0.6 ms
hop  1:     xyz.243.2.##: Dynamic bottleneck -- BW 99 Mb
hop  1:     xyz.243.2.##:  Static bottleneck -- BW 100 Mb

	 host-B % ncsC -rm target-someone 
IP = ncsd-IP
ncsC [1.2 Sep25-2K1] : dst xyz.243.2.## failed to remove

Change path parameters

ncsC [-s server] -STOP destination stops reprobing scheduler for this path on ncsd (server). ncsC [-s server] -START destination starts reprobing scheduler for this path on ncsd (server). Notice that this command only be executed by the initiator (owner) of the path. ncsC [-s server] -chng train length and/or sched interval-tick [start tick] destination changes the probe train length, scheduler period, [and the scheduler start time] on this path. These parameters can be changed in one command or separated commands. Each tick is 5 minutes. For example: ncsC [-s server] -chng sched 10 yahoo.com changes the scheduling frequency from current to 50 minutes (10 x 5) for path from server to yahoo.com. The starting time is unknown (whatever left in previous scheduling). ncsC [-s server] 12.34.45.56 -chng sched 10 60 changes the scheduling frequency from current to 50 minutes (10 x 5) for this path, and start the new scheduling in 5 hours (60 * 5 minutes). Caution: ncsC [-s server] -chng sched 10 100 12.23.34.45 is ok, but ncsC [-s server] -chng sched 10 12.23.34.45 will cause error. Put IP before the flag "-chng" in this case. The default tick time can be changed. Define DEFAULT_SCHED_TIMER in Makefile or change its value from 300, in ncsd.c, to whatever work for you. Then, recompile the ncsd -- make ncsd.out . "-EX" option has the same functionality as "-chng", but it is used only for initiator. Once the path is initialized, use "-chng" to change parameters. For other options, type "ncsC -h".

NCSD HighLight:

It is very important to understand what information NCS service can provide.


Release History:

Download NCSD distribution:

  • ncsd binary/source for UNIX

    The ncsd distribution includes ncsd.c (the daemon source), and ncsC_example.c, (client), in src/netest/sources/metric/ncs directory. The program API design document API is also available in that directory.

    The binaries are for FreeBSD, BSD/OS, Solaris, Linux 2.4/2.2, AIX and IRIX. They include ncsd (daemon), ncsC (client), pipechar, netest , etc.

    re-build binaries:

    All dependent libraries and header files are also distributed in src/netest/include and src/$ARCH/{bin, lib}. To modify and recompile the program, change directory to
    	src/netest/sources/metric/ncs
    
    edit the file, change "cd" to src directory and type "install.ncs ????.out" to rebuild the binary, such as ???? = pipechar.

    For example,
    ./install.ncs pipechar.out netest.out
    Without an argument, install.ncs will rebuild all binaries.
    ./install.ncs

    For how to program a client to query the desired information from ncsd services, please refer to the program API design document, and the ncs Client program -- ncsC_example.c and ncs-api.h in the NCS distribution .
    For modifying ncs daemon -- ncsd.c -- please refer to the pipechar.h for data information. Most characteristic information is in struct "hop_info", pointed by pd_path in pc_d_t structure.


    Tips for getting GigE fully utilized: (details are in papers ) 64-bit/66Mhz PCI 160-240 MBps memory bandwidth (66-100 MHz main bus) 300 MBps memory bandwidth (133 MHz main bus) or 32-bit/33Mhz PCI 600 MBps memory bandwidth or use jumbo frame or bad performance (normally is around 380-450 Mbps)
    DIDC HOME PAGE

    DSD HOME PAGE


    Created on Friday, 2000 July 14; Revised at 2001 April
    Updated Thursday, 15-May-2003 15:15:00 PDT ([an error occurred while processing this directive])