Proxy_sender(1) NAME Proxy_sender Manual SYNOPSYS Proxy_sender --[OPTIONS] Proxy_sender [client_listening_port] [ip1 port1] [ip2 port2] [ip3 port3] DESCRIPTION Proxy_sender is a net utility coded with C language that comunicate with Proxy_reciver utility. It support communications with Proxy_reciver with a max of three channels.Proxy_sender is optimized for channels with RTT <= of one sec.It's used for incrase speed of comunications of 2 utility(generic client and generic server).If no option is passed Proxy_sender do listening to client from port 6001 at ip 127.0.0.1 , and try to connect 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003. If client go down Proxy_sender quit immediatly. Proxy_sender have 6 strategy of sending and strategy adopted is know at compile time.Strategy adopted is printed by program when user strat it.If adopted strategy don't like,you must recompile program and set strategy with Proxy_sender utility.For compare the six strategy see STRATEGY section in this man OPTIONS If no option is passed Proxy_sender strat with default value EXAMPLE: ./Proxy_sender -man print this man page EXAMPLE: ./Proxy_sender -man -help print fast help EXAMPLE: ./Proxy_sender -help STANDARD: you pass all connections args EXAMPLE: ./Proxy_sender 6001 127.0.0.1 7001 127.0.0.1 7002 127.0.0.1 7003 PACKET HEADER -------------------------------- | | 2 bytes | TYPE OF PACKET | ------------------------------- | | 2 bytes | SERIAL NUMBER | ------------------------------- | | 2 bytes | DATA LENGTH | ------------------------------- | | | DATA | | | TYPE OF PACKET: DATA : is data packet QUIT : is quit packet ACK : is ack packet DATA : is data of packet max data size is 1018 MIN packet size 6 bytes MAX packet size 1024 STRATEGY Strategy adopted by Proxy is decretated at compile time by utility Proxy_configure.All strategy use congestioned value for stop reading when communication delay is upper the threshold registred.when threshold is set differ by strategy in strategy.Protocol useread_ack() function for upper or dercase size of packet for this session of read_ack(). When one packet have RTT > 0.8 ack_lock of the calling channel is set OFF. For default read_ack do this: PACKET(1)----------------------------------------------------->0.2 sec 0.2 sec <-----------------------------------------------------ACK(2) RTT=0.4 sec max size of packet is upper of 64 for max of 1024 ack_lock for this channel is ON. PACKET(2) -----------------------------------------------------> 0.5 sec 0.5 sec <------------------------------------------------------ACK(2) RTT=1 sec max size of packet is reduced to 64. ack_lock for this channel is OFF next call to function don't modify size of packet. LIST OF SENDING STRATEGY SENDA: Program global choise for sending and reading is not performed only with congestioned value.When ack_lock of one channel is set OFF(one ack RTT> 0.8sec) program go at new selected speed(decrased for read_ack()) and restore ack_lock only when first packet that wait ack RTT delay time is < 0.9 secs and ack_lock is ON.Permission for writing is global , when one channel writing is set OFF all channel writing are set OFF when ON three ON. Is suggested when anomalous delayed of network can be descrybed with cyclical and continual function. SENDB: Program make global choise only with congestioned value and is very severe when decrase it.If ack_lock of one channel is set OFF or ON is set only for this channel.If one packet that wait ack RTT delay is < 0.9 sec ack_lock and write permission for this channel is set ON else is set OFF. ack_lock value is always on. When one write permission is set off congestioned value is divided by 3. If all channel are down congestioned is divided by 27!!! Is very severe algorithm is suggested when network is not affidable and delayed can not be descrybed with any type of funtion or when netowrk is evrytime congestioned. SENDC: Program have ack_lock always set ON.Congestioned value is upgrade when packet's that need ack is <0.9 sec.Write permission is set ON or OFF for singualr channel.Is a versatile strategy can be used generaly for all types of network. SENDD: This strategy is similar to SENDC but have differ in read_ack() function If read ack is ON (RTT <0.8) if max current size of packet for channel is < 600 packet size incrase X2.This modify in test_debug result bad If channel have no problem is a nice algorithm but if network have some critical delay is the wrost. SENDE: This strategy is similar to SENDA but read_ack() decrase of 128 not of 64. Write permission is not global but is personalized for channel. SENDF: This strategy is similar to SENDE but read_ack() is normal. In sintetical form is A but write permission is personalized CONFORMING This program is a University project and is not a standard.It is conforming to nothung.Program is developed for run in theory with all POSIX 2001 conform system.Is successfull tested on Gentoo Linux pcc32 (ibook G4) on Gentoo linux i686(Pentium III) on Debian i386 lenny(Pentium III) on Mac OSX Tiger(10.4) ppc32 (ibook g4). Program is coded with ANSI C89 language. BUGS Third channel have a low usage because a performed read from client is not just implemented.For other bugs please write to bonicol2@cs.unibo.it agentile@cs.unibo.it dallatorre@cs.unibo.it AUTHOR Man pages and program written by Matteo Bonicolini Alessandro Gentile Dennis Dalla Torre Program is commissioned by Vittorio Ghini for Network Programming exam at Computer Science Departmen University of Bologna