⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eql.txt

📁 嵌入式系统设计与实例开发实验教材二源码 多线程应用程序设计 串行端口程序设计 AD接口实验 CAN总线通信实验 GPS通信实验 Linux内核移植与编译实验 IC卡读写实验 SD驱动使
💻 TXT
字号:
  EQL Driver: Serial IP Load Balancing HOWTO  Simon "Guru Aleph-Null" Janes, simon@ncm.com  v1.1, February 27, 1995  This is the manual for the EQL device driver. EQL is a software device  that lets you load-balance IP serial links (SLIP or uncompressed PPP)  to increase your bandwidth. It will not reduce your latency (i.e. ping  times) except in the case where you already have lots of traffic on  your link, in which it will help them out. This driver has been tested  with the 1.1.75 kernel, and is known to have patched cleanly with  1.1.86.  Some testing with 1.1.92 has been done with the v1.1 patch  which was only created to patch cleanly in the very latest kernel  source trees. (Yes, it worked fine.)  1.  Introduction  Which is worse? A huge fee for a 56K leased line or two phone lines?  It's probably the former.  If you find yourself craving more bandwidth,  and have a ISP that is flexible, it is now possible to bind modems  together to work as one point-to-point link to increase your  bandwidth.  All without having to have a special black box on either  side.  The eql driver has only been tested with the Livingston PortMaster-2e  terminal server. I do not know if other terminal servers support load-  balancing, but I do know that the PortMaster does it, and does it  almost as well as the eql driver seems to do it (-- Unfortunately, in  my testing so far, the Livingston PortMaster 2e's load-balancing is a  good 1 to 2 KB/s slower than the test machine working with a 28.8 Kbps  and 14.4 Kbps connection.  However, I am not sure that it really is  the PortMaster, or if it's Linux's TCP drivers. I'm told that Linux's  TCP implementation is pretty fast though.--)  I suggest to ISPs out there that it would probably be fair to charge  a load-balancing client 75% of the cost of the second line and 50% of  the cost of the third line etc...  Hey, we can all dream you know...  2.  Kernel Configuration  Here I describe the general steps of getting a kernel up and working  with the eql driver.	From patching, building, to installing.  2.1.	Patching The Kernel  If you do not have or cannot get a copy of the kernel with the eql  driver folded into it, get your copy of the driver from  ftp://slaughter.ncm.com/pub/Linux/LOAD_BALANCING/eql-1.1.tar.gz.  Unpack this archive someplace obvious like /usr/local/src/.  It will  create the following files:       ______________________________________________________________________       -rw-r--r-- guru/ncm	198 Jan 19 18:53 1995 eql-1.1/NO-WARRANTY       -rw-r--r-- guru/ncm	30620 Feb 27 21:40 1995 eql-1.1/eql-1.1.patch       -rwxr-xr-x guru/ncm	16111 Jan 12 22:29 1995 eql-1.1/eql_enslave       -rw-r--r-- guru/ncm	2195 Jan 10 21:48 1995 eql-1.1/eql_enslave.c       ______________________________________________________________________  Unpack a recent kernel (something after 1.1.92) someplace convenient  like say /usr/src/linux-1.1.92.eql. Use symbolic links to point  /usr/src/linux to this development directory.  Apply the patch by running the commands:       ______________________________________________________________________       cd /usr/src       patch </usr/local/src/eql-1.1/eql-1.1.patch       ______________________________________________________________________  2.2.	Building The Kernel  After patching the kernel, run make config and configure the kernel  for your hardware.  After configuration, make and install according to your habit.  3.  Network Configuration  So far, I have only used the eql device with the DSLIP SLIP connection  manager by Matt Dillon (-- "The man who sold his soul to code so much  so quickly."--) .  How you configure it for other "connection"  managers is up to you.  Most other connection managers that I've seen  don't do a very good job when it comes to handling more than one  connection.  3.1.	/etc/rc.d/rc.inet1  In rc.inet1, ifconfig the eql device to the IP address you usually use  for your machine, and the MTU you prefer for your SLIP lines.	One  could argue that MTU should be roughly half the usual size for two  modems, one-third for three, one-fourth for four, etc...  But going  too far below 296 is probably overkill. Here is an example ifconfig  command that sets up the eql device:       ______________________________________________________________________       ifconfig eql 198.67.33.239 mtu 1006       ______________________________________________________________________  Once the eql device is up and running, add a static default route to  it in the routing table using the cool new route syntax that makes  life so much easier:       ______________________________________________________________________       route add default eql       ______________________________________________________________________  3.2.	Enslaving Devices By Hand  Enslaving devices by hand requires two utility programs: eql_enslave  and eql_emancipate (-- eql_emancipate hasn't been written because when  an enslaved device "dies", it is automatically taken out of the queue.  I haven't found a good reason to write it yet... other than for  completeness, but that isn't a good motivator is it?--)  The syntax for enslaving a device is "eql_enslave <master-name>  <slave-name> <estimated-bps>".  Here are some example enslavings:       ______________________________________________________________________       eql_enslave eql sl0 28800       eql_enslave eql ppp0 14400       eql_enslave eql sl1 57600       ______________________________________________________________________  When you want to free a device from its life of slavery, you can  either down the device with ifconfig (eql will automatically bury the  dead slave and remove it from its queue) or use eql_emancipate to free  it. (-- Or just ifconfig it down, and the eql driver will take it out  for you.--)       ______________________________________________________________________       eql_emancipate eql sl0       eql_emancipate eql ppp0       eql_emancipate eql sl1       ______________________________________________________________________  3.3.	DSLIP Configuration for the eql Device  The general idea is to bring up and keep up as many SLIP connections  as you need, automatically.  3.3.1.  /etc/slip/runslip.conf  Here is an example runslip.conf:  ______________________________________________________________________  name		sl-line-1  enabled  baud		38400  mtu		576  ducmd		-e /etc/slip/dialout/cua2-288.xp -t 9  command	 eql_enslave eql $interface 28800  address	 198.67.33.239  line		/dev/cua2  name		sl-line-2  enabled  baud		38400  mtu		576  ducmd		-e /etc/slip/dialout/cua3-288.xp -t 9  command	 eql_enslave eql $interface 28800  address	 198.67.33.239  line		/dev/cua3  ______________________________________________________________________  3.4.	Using PPP and the eql Device  I have not yet done any load-balancing testing for PPP devices, mainly  because I don't have a PPP-connection manager like SLIP has with  DSLIP. I did find a good tip from LinuxNET:Billy for PPP performance:  make sure you have asyncmap set to something so that control  characters are not escaped.  I tried to fix up a PPP script/system for redialing lost PPP  connections for use with the eql driver the weekend of Feb 25-26 '95  (Hereafter known as the 8-hour PPP Hate Festival).  Perhaps later this  year.  4.  About the Slave Scheduler Algorithm  The slave scheduler probably could be replaced with a dozen other  things and push traffic much faster.	The formula in the current set  up of the driver was tuned to handle slaves with wildly different  bits-per-second "priorities".  All testing I have done was with two 28.8 V.FC modems, one connecting  at 28800 bps or slower, and the other connecting at 14400 bps all the  time.  One version of the scheduler was able to push 5.3 K/s through the  28800 and 14400 connections, but when the priorities on the links were  very wide apart (57600 vs. 14400) the "faster" modem received all  traffic and the "slower" modem starved.  5.  Testers' Reports  Some people have experimented with the eql device with newer  kernels (than 1.1.75).  I have since updated the driver to patch  cleanly in newer kernels because of the removal of the old "slave-  balancing" driver config option.  o  icee from LinuxNET patched 1.1.86 without any rejects and was able     to boot the kernel and enslave a couple of ISDN PPP links.  5.1.	Randolph Bentson's Test Report  From bentson@grieg.seaslug.org Wed Feb  8 19:08:09 1995  Date: Tue, 7 Feb 95 22:57 PST  From: Randolph Bentson <bentson@grieg.seaslug.org>  To: guru@ncm.com  Subject: EQL driver tests  I have been checking out your eql driver.  (Nice work, that!)  Although you may already done this performance testing, here  are some data I've discovered.  Randolph Bentson  bentson@grieg.seaslug.org  ---------------------------------------------------------  A pseudo-device driver, EQL, written by Simon Janes, can be used  to bundle multiple SLIP connections into what appears to be a  single connection.  This allows one to improve dial-up network  connectivity gradually, without having to buy expensive DSU/CSU  hardware and services.  I have done some testing of this software, with two goals in  mind: first, to ensure it actually works as described and  second, as a method of exercising my device driver.  The following performance measurements were derived from a set  of SLIP connections run between two Linux systems (1.1.84) using  a 486DX2/66 with a Cyclom-8Ys and a 486SLC/40 with a Cyclom-16Y.  (Ports 0,1,2,3 were used.  A later configuration will distribute  port selection across the different Cirrus chips on the boards.)  Once a link was established, I timed a binary ftp transfer of  289284 bytes of data.	If there were no overhead (packet headers,  inter-character and inter-packet delays, etc.) the transfers  would take the following times:      bits/sec	seconds      345600	8.3      234600	12.3      172800	16.7      153600	18.8      76800	37.6      57600	50.2      38400	75.3      28800	100.4      19200	150.6      9600	301.3  A single line running at the lower speeds and with large packets  comes to within 2% of this.  Performance is limited for the higher  speeds (as predicted by the Cirrus databook) to an aggregate of  about 160 kbits/sec.	The next round of testing will distribute  the load across two or more Cirrus chips.  The good news is that one gets nearly the full advantage of the  second, third, and fourth line's bandwidth.  (The bad news is  that the connection establishment seemed fragile for the higher  speeds.  Once established, the connection seemed robust enough.)  #lines  speed	mtu  seconds	theory  actual  %of	 kbit/sec      duration	speed	speed	max  3	115200  900	_	345600  3	115200  400	18.1	345600  159825  46  2	115200  900	_	230400  2	115200  600	18.1	230400  159825  69  2	115200  400	19.3	230400  149888  65  4	57600	900	_	234600  4	57600	600	_	234600  4	57600	400	_	234600  3	57600	600	20.9	172800  138413  80  3	57600	900	21.2	172800  136455  78  3	115200  600	21.7	345600  133311  38  3	57600	400	22.5	172800  128571  74  4	38400	900	25.2	153600  114795  74  4	38400	600	26.4	153600  109577  71  4	38400	400	27.3	153600  105965  68  2	57600	900	29.1	115200  99410.3 86  1	115200  900	30.7	115200  94229.3 81  2	57600	600	30.2	115200  95789.4 83  3	38400	900	30.3	115200  95473.3 82  3	38400	600	31.2	115200  92719.2 80  1	115200  600	31.3	115200  92423	80  2	57600	400	32.3	115200  89561.6 77  1	115200  400	32.8	115200  88196.3 76  3	38400	400	33.5	115200  86353.4 74  2	38400	900	43.7	76800	66197.7 86  2	38400	600	44	76800	65746.4 85  2	38400	400	47.2	76800	61289	79  4	19200	900	50.8	76800	56945.7 74  4	19200	400	53.2	76800	54376.7 70  4	19200	600	53.7	76800	53870.4 70  1	57600	900	54.6	57600	52982.4 91  1	57600	600	56.2	57600	51474	89  3	19200	900	60.5	57600	47815.5 83  1	57600	400	60.2	57600	48053.8 83  3	19200	600	62	57600	46658.7 81  3	19200	400	64.7	57600	44711.6 77  1	38400	900	79.4	38400	36433.8 94  1	38400	600	82.4	38400	35107.3 91  2	19200	900	84.4	38400	34275.4 89  1	38400	400	86.8	38400	33327.6 86  2	19200	600	87.6	38400	33023.3 85  2	19200	400	91.2	38400	31719.7 82  4	9600	900	94.7	38400	30547.4 79  4	9600	400	106	38400	27290.9 71  4	9600	600	110	38400	26298.5 68  3	9600	900	118	28800	24515.6 85  3	9600	600	120	28800	24107	83  3	9600	400	131	28800	22082.7 76  1	19200	900	155	19200	18663.5 97  1	19200	600	161	19200	17968	93  1	19200	400	170	19200	17016.7 88  2	9600	600	176	19200	16436.6 85  2	9600	900	180	19200	16071.3 83  2	9600	400	181	19200	15982.5 83  1	9600	900	305	9600	9484.72 98  1	9600	600	314	9600	9212.87 95  1	9600	400	332	9600	8713.37 90  5.2.	Anthony Healy's Report  Date: Mon, 13 Feb 1995 16:17:29 +1100 (EST)  From: Antony Healey <ahealey@st.nepean.uws.edu.au>  To: Simon Janes <guru@ncm.com>  Subject: Re: Load Balancing  Hi Simon,	  I've installed your patch and it works great. I have trialed	  it over twin SL/IP lines, just over null modems, but I was	  able to data at over 48Kb/s [ISDN link -Simon]. I managed a	  transfer of up to 7.5 Kbyte/s on one go, but averaged around	  6.4 Kbyte/s, which I think is pretty cool.  :)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -