OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rc203soc/] [sw/] [uClinux/] [drivers/] [net/] [README.eql] - Blame information for rev 1777

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1626 jcastillo
  EQL Driver: Serial IP Load Balancing HOWTO
2
  Simon "Guru Aleph-Null" Janes, simon@ncm.com
3
  v1.1, February 27, 1995
4
 
5
  This is the manual for the EQL device driver. EQL is a software device
6
  that lets you load-balance IP serial links (SLIP or uncompressed PPP)
7
  to increase your bandwidth. It will not reduce your latency (i.e. ping
8
  times) except in the case where you already have lots of traffic on
9
  your link, in which it will help them out. This driver has been tested
10
  with the 1.1.75 kernel, and is known to have patched cleanly with
11
  1.1.86.  Some testing with 1.1.92 has been done with the v1.1 patch
12
  which was only created to patch cleanly in the very latest kernel
13
  source trees. (Yes, it worked fine.)
14
 
15
  1.  Introduction
16
 
17
  Which is worse? A huge fee for a 56K leased line or two phone lines?
18
  Its probably the former.  If you find yourself craving more bandwidth,
19
  and have a ISP that is flexible, it is now possible to bind modems
20
  together to work as one point-to-point link to increase your
21
  bandwidth.  All without having to have a special black box on either
22
  side.
23
 
24
 
25
  The eql driver has only been tested with the Livingston PortMaster-2e
26
  terminal server. I do not know if other terminal servers support load-
27
  balancing, but I do know that the PortMaster does it, and does it
28
  almost as well as the eql driver seems to do it (-- Unfortunately, in
29
  my testing so far, the Livingston PortMaster 2e's load-balancing is a
30
  good 1 to 2 KB/s slower than the test machine working with a 28.8 Kbps
31
  and 14.4 Kbps connection.  However, I am not sure that it really is
32
  the PortMaster, or if it's Linux's TCP drivers. I'm told that Linux's
33
  TCP implementation is pretty fast though.--)
34
 
35
 
36
  I suggest to ISP's out there that it would probably be fair to charge
37
  a load-balancing client 75% of the cost of the second line and 50% of
38
  the cost of the third line etc...
39
 
40
 
41
  Hey, we can all dream you know...
42
 
43
 
44
  2.  Kernel Configuration
45
 
46
  Here I describe the general steps of getting a kernel up and working
47
  with the eql driver.  From patching, building, to installing.
48
 
49
 
50
  2.1.  Patching The Kernel
51
 
52
  If you do not have or cannot get a copy of the kernel with the eql
53
  driver folded into it, get your copy of the driver from
54
  ftp://slaughter.ncm.com/pub/Linux/LOAD_BALANCING/eql-1.1.tar.gz.
55
  Unpack this archive someplace obvious like /usr/local/src/.  It will
56
  create the following files:
57
 
58
 
59
 
60
       ______________________________________________________________________
61
       -rw-r--r-- guru/ncm      198 Jan 19 18:53 1995 eql-1.1/NO-WARRANTY
62
       -rw-r--r-- guru/ncm      30620 Feb 27 21:40 1995 eql-1.1/eql-1.1.patch
63
       -rwxr-xr-x guru/ncm      16111 Jan 12 22:29 1995 eql-1.1/eql_enslave
64
       -rw-r--r-- guru/ncm      2195 Jan 10 21:48 1995 eql-1.1/eql_enslave.c
65
       ______________________________________________________________________
66
 
67
  Unpack a recent kernel (something after 1.1.92) Someplace convenient
68
  like say /usr/src/linux-1.1.92.eql. Use symbolic links to point
69
  /usr/src/linux to this development directory.
70
 
71
 
72
  Apply the patch by running the commands:
73
 
74
 
75
       ______________________________________________________________________
76
       cd /usr/src
77
       patch 
78
       ______________________________________________________________________
79
 
80
 
81
 
82
 
83
 
84
  2.2.  Building The Kernel
85
 
86
  After patching the kernel, run make config and configure the kernel
87
  for your hardware.
88
 
89
 
90
  After configuration, make and install according to your habit.
91
 
92
 
93
  3.  Network Configuration
94
 
95
  So far, I have only used the eql device with the DSLIP SLIP connection
96
  manager by Matt Dillon (-- "The man who sold his soul to code so much
97
  so quickly."--) .  How you configure it for other "connection"
98
  managers is up to you.  Most other connection managers that I've seen
99
  don't do a very good job when it comes to handling more than one
100
  connection.
101
 
102
 
103
  3.1.  /etc/rc.d/rc.inet1
104
 
105
  In rc.inet1, ifconfig the eql device to the IP address you usually use
106
  for your machine, and the MTU you prefer for your SLIP lines. One
107
  could argue that MTU should be roughly half the usual size for two
108
  modems, one-third for three, one-fourth for four, etc...  But going
109
  too far below 296 is probably overkill. Here is an example ifconfig
110
  command that sets up the eql device:
111
 
112
 
113
 
114
       ______________________________________________________________________
115
       ifconfig eql 198.67.33.239 mtu 1006
116
       ______________________________________________________________________
117
 
118
 
119
 
120
 
121
 
122
  Once the eql device is up and running, add a static default route to
123
  it in the routing table using the cool new route syntax that makes
124
  life so much easier:
125
 
126
 
127
 
128
       ______________________________________________________________________
129
       route add default eql
130
       ______________________________________________________________________
131
 
132
 
133
  3.2.  Enslaving Devices By Hand
134
 
135
  Enslaving devices by hand requires two utility programs: eql_enslave
136
  and eql_emancipate (-- eql_emancipate hasn't been written because when
137
  an enslaved device "dies", it is automatically taken out of the queue.
138
  I haven't found a good reason to write it yet... other than for
139
  completeness, but that isn't a good motivator is it?--)
140
 
141
 
142
  The syntax for enslaving a device is "eql_enslave 
143
   ".  Here are some example enslavings:
144
 
145
 
146
 
147
       ______________________________________________________________________
148
       eql_enslave eql sl0 28800
149
       eql_enslave eql ppp0 14400
150
       eql_enslave eql sl1 57600
151
       ______________________________________________________________________
152
 
153
 
154
 
155
 
156
 
157
  When you want to free a device from its life of slavery, you can
158
  either down the device with ifconfig (eql will automatically bury the
159
  dead slave and remove it from its queue) or use eql_emancipate to free
160
  it. (-- Or just ifconfig it down, and the eql driver will take it out
161
  for you.--)
162
 
163
 
164
 
165
       ______________________________________________________________________
166
       eql_emancipate eql sl0
167
       eql_emancipate eql ppp0
168
       eql_emancipate eql sl1
169
       ______________________________________________________________________
170
 
171
 
172
 
173
 
174
 
175
  3.3.  DSLIP Configuration for the eql Device
176
 
177
  The general idea is to bring up and keep up as many SLIP connections
178
  as you need, automatically.
179
 
180
 
181
  3.3.1.  /etc/slip/runslip.conf
182
 
183
  Here is an example runslip.conf:
184
 
185
 
186
 
187
 
188
 
189
 
190
 
191
 
192
 
193
 
194
 
195
 
196
 
197
 
198
 
199
  ______________________________________________________________________
200
  name          sl-line-1
201
  enabled
202
  baud          38400
203
  mtu           576
204
  ducmd         -e /etc/slip/dialout/cua2-288.xp -t 9
205
  command        eql_enslave eql $interface 28800
206
  address        198.67.33.239
207
  line          /dev/cua2
208
 
209
  name          sl-line-2
210
  enabled
211
  baud          38400
212
  mtu           576
213
  ducmd         -e /etc/slip/dialout/cua3-288.xp -t 9
214
  command        eql_enslave eql $interface 28800
215
  address        198.67.33.239
216
  line          /dev/cua3
217
  ______________________________________________________________________
218
 
219
 
220
 
221
 
222
 
223
  3.4.  Using PPP and the eql Device
224
 
225
  I have not yet done any load-balancing testing for PPP devices, mainly
226
  because I don't have a PPP-connection manager like SLIP has with
227
  DSLIP. I did find a good tip from LinuxNET:Billy for PPP performance:
228
  make sure you have asyncmap set to something so that control
229
  characters are not escaped.
230
 
231
 
232
  I tried to fix up a PPP script/system for redialing lost PPP
233
  connections for use with the eql driver the weekend of Feb 25-26 '95
234
  (Hereafter known as the 8-hour PPP Hate Festival).  Perhaps later this
235
  year.
236
 
237
 
238
  4.  About the Slave Scheduler Algorithm
239
 
240
  The slave scheduler probably could be replaced with a dozen other
241
  things and push traffic much faster.  The formula in the current set
242
  up of the driver was tuned to handle slaves with wildly different
243
  bits-per-second "priorities".
244
 
245
 
246
  All testing I have done was with two 28.8 V.FC modems, one connecting
247
  at 28800 bps or slower, and the other connecting at 14400 bps all the
248
  time.
249
 
250
 
251
  One version of the scheduler was able to push 5.3 K/s through the
252
  28800 and 14400 connections, but when the priorities on the links were
253
  very wide apart (57600 vs. 14400) The "faster" modem received all
254
  traffic and the "slower" modem starved.
255
 
256
 
257
  5.  Tester's Reports
258
 
259
  Some people have experimented with the eql device with newer kernels
260
  (than 1.1.75).  I have since updated the driver to patch cleanly in
261
  newer kernels because of the removal of the old "slave-balancing"
262
  driver config option.
263
 
264
 
265
  o  icee from LinuxNET patched 1.1.86 without any rejects and was able
266
     to boot the kernel and enslave a couple of ISDN PPP links.
267
 
268
  5.1.  Randolph Bentson's Test Report
269
 
270
 
271
 
272
 
273
 
274
 
275
 
276
 
277
 
278
 
279
 
280
 
281
 
282
 
283
 
284
 
285
 
286
 
287
 
288
 
289
 
290
 
291
 
292
 
293
 
294
 
295
 
296
 
297
 
298
 
299
 
300
 
301
 
302
 
303
 
304
 
305
 
306
 
307
 
308
 
309
 
310
 
311
 
312
 
313
 
314
 
315
 
316
 
317
 
318
 
319
 
320
 
321
 
322
 
323
 
324
 
325
 
326
 
327
 
328
 
329
 
330
 
331
  From bentson@grieg.seaslug.org Wed Feb  8 19:08:09 1995
332
  Date: Tue, 7 Feb 95 22:57 PST
333
  From: Randolph Bentson 
334
  To: guru@ncm.com
335
  Subject: EQL driver tests
336
 
337
 
338
  I have been checking out your eql driver.  (Nice work, that!)
339
  Although you may already done this performance testing, here
340
  are some data I've discovered.
341
 
342
  Randolph Bentson
343
  bentson@grieg.seaslug.org
344
 
345
  ---------------------------------------------------------
346
 
347
 
348
  A pseudo-device driver, EQL, written by Simon Janes, can be used
349
  to bundle multiple SLIP connections into what appears to be a
350
  single connection.  This allows one to improve dial-up network
351
  connectivity gradually, without having to buy expensive DSU/CSU
352
  hardware and services.
353
 
354
  I have done some testing of this software, with two goals in
355
  mind: first, to ensure it actually works as described and
356
  second, as a method of exercising my device driver.
357
 
358
  The following performance measurements were derived from a set
359
  of SLIP connections run between two Linux systems (1.1.84) using
360
  a 486DX2/66 with a Cyclom-8Ys and a 486SLC/40 with a Cyclom-16Y.
361
  (Ports 0,1,2,3 were used.  A later configuration will distribute
362
  port selection across the different Cirrus chips on the boards.)
363
  Once a link was established, I timed a binary ftp transfer of
364
  289284 bytes of data. If there were no overhead (packet headers,
365
  inter-character and inter-packet delays, etc.) the transfers
366
  would take the following times:
367
 
368
      bits/sec  seconds
369
      345600    8.3
370
      234600    12.3
371
      172800    16.7
372
      153600    18.8
373
      76800     37.6
374
      57600     50.2
375
      38400     75.3
376
      28800     100.4
377
      19200     150.6
378
      9600      301.3
379
 
380
  A single line running at the lower speeds and with large packets
381
  comes to within 2% of this.  Performance is limited for the higher
382
  speeds (as predicted by the Cirrus databook) to an aggregate of
383
  about 160 kbits/sec.  The next round of testing will distribute
384
  the load across two or more Cirrus chips.
385
 
386
  The good news is that one gets nearly the full advantage of the
387
  second, third, and fourth line's bandwidth.  (The bad news is
388
  that the connection establishment seemed fragile for the higher
389
  speeds.  Once established, the connection seemed robust enough.)
390
 
391
  #lines  speed mtu  seconds    theory  actual  %of
392
         kbit/sec      duration speed   speed   max
393
  3     115200  900     _       345600
394
  3     115200  400     18.1    345600  159825  46
395
  2     115200  900     _       230400
396
  2     115200  600     18.1    230400  159825  69
397
  2     115200  400     19.3    230400  149888  65
398
  4     57600   900     _       234600
399
  4     57600   600     _       234600
400
  4     57600   400     _       234600
401
  3     57600   600     20.9    172800  138413  80
402
  3     57600   900     21.2    172800  136455  78
403
  3     115200  600     21.7    345600  133311  38
404
  3     57600   400     22.5    172800  128571  74
405
  4     38400   900     25.2    153600  114795  74
406
  4     38400   600     26.4    153600  109577  71
407
  4     38400   400     27.3    153600  105965  68
408
  2     57600   900     29.1    115200  99410.3 86
409
  1     115200  900     30.7    115200  94229.3 81
410
  2     57600   600     30.2    115200  95789.4 83
411
  3     38400   900     30.3    115200  95473.3 82
412
  3     38400   600     31.2    115200  92719.2 80
413
  1     115200  600     31.3    115200  92423   80
414
  2     57600   400     32.3    115200  89561.6 77
415
  1     115200  400     32.8    115200  88196.3 76
416
  3     38400   400     33.5    115200  86353.4 74
417
  2     38400   900     43.7    76800   66197.7 86
418
  2     38400   600     44      76800   65746.4 85
419
  2     38400   400     47.2    76800   61289   79
420
  4     19200   900     50.8    76800   56945.7 74
421
  4     19200   400     53.2    76800   54376.7 70
422
  4     19200   600     53.7    76800   53870.4 70
423
  1     57600   900     54.6    57600   52982.4 91
424
  1     57600   600     56.2    57600   51474   89
425
  3     19200   900     60.5    57600   47815.5 83
426
  1     57600   400     60.2    57600   48053.8 83
427
  3     19200   600     62      57600   46658.7 81
428
  3     19200   400     64.7    57600   44711.6 77
429
  1     38400   900     79.4    38400   36433.8 94
430
  1     38400   600     82.4    38400   35107.3 91
431
  2     19200   900     84.4    38400   34275.4 89
432
  1     38400   400     86.8    38400   33327.6 86
433
  2     19200   600     87.6    38400   33023.3 85
434
  2     19200   400     91.2    38400   31719.7 82
435
  4     9600    900     94.7    38400   30547.4 79
436
  4     9600    400     106     38400   27290.9 71
437
  4     9600    600     110     38400   26298.5 68
438
  3     9600    900     118     28800   24515.6 85
439
  3     9600    600     120     28800   24107   83
440
  3     9600    400     131     28800   22082.7 76
441
  1     19200   900     155     19200   18663.5 97
442
  1     19200   600     161     19200   17968   93
443
  1     19200   400     170     19200   17016.7 88
444
  2     9600    600     176     19200   16436.6 85
445
  2     9600    900     180     19200   16071.3 83
446
  2     9600    400     181     19200   15982.5 83
447
  1     9600    900     305     9600    9484.72 98
448
  1     9600    600     314     9600    9212.87 95
449
  1     9600    400     332     9600    8713.37 90
450
 
451
 
452
 
453
 
454
 
455
  5.2.  Anthony Healy's Report
456
 
457
 
458
 
459
 
460
 
461
 
462
 
463
  Date: Mon, 13 Feb 1995 16:17:29 +1100 (EST)
464
  From: Antony Healey 
465
  To: Simon Janes 
466
  Subject: Re: Load Balancing
467
 
468
  Hi Simon,
469
          I've installed your patch and it works great. I have trialed
470
          it over twin SL/IP lines, just over null modems, but I was
471
          able to data at over 48Kb/s [ISDN link -Simon]. I managed a
472
          transfer of upto 7.5 Kbyte/s on one go, but averaged around
473
          6.4 Kbyte/s, which I think is pretty cool.  :)
474
 
475
 
476
 
477
 
478
 
479
 
480
 
481
 
482
 
483
 
484
 
485
 
486
 
487
 
488
 
489
 
490
 
491
 
492
 
493
 
494
 
495
 
496
 
497
 
498
 
499
 
500
 
501
 
502
 
503
 
504
 
505
 
506
 
507
 
508
 
509
 
510
 
511
 
512
 
513
 
514
 
515
 
516
 
517
 
518
 
519
 
520
 
521
 
522
 
523
 
524
 
525
 
526
 
527
 
528
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.