File: Compressed-TCP-NL.sgml

package info (click to toggle)
doc-linux-nl 20051127-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 16,408 kB
  • ctags: 94
  • sloc: xml: 47,403; makefile: 312; perl: 193; sh: 116; ansic: 12; csh: 9
file content (241 lines) | stat: -rw-r--r-- 9,428 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
<!doctype LINUXDOC system>
<linuxdoc>
<!-- LinuxDoc file was created by LyX 1.0 (C) 1995-1999 by <sebi> Mon Apr 17 04:12:10 2000
-->

<article>
<titlepag>
<title>Gecomprimeerde TCP/IP-Sessies met op SSH lijkende tools
</title>
<author><name>Sebastian Schreiber &lt;Schreib@SySS.de&gt;<newline>
Vertaald door: Ellen Bokhorst bokkie@nl.linux.org
</name>
</author>
<date>2.2.2000
</date>
</titlepag>

<sect>
<heading>Introductie</heading>
<p>
In het verleden, gebruikten we gecomprimeerde bestanden om diskruimte
te besparen. Tegenwoordig is diskruimte goedkoop - maar is bandbreedte beperkt.
Door het comprimeren van gegevensstromen bereik je twee doelen:
</p>

<p>1) Je bespaart op bandbreedte/transfered volume 
(dat is belangrijk als je voor
verkeer moet betalen of als je netwerk is geladen).
</p>

<p>2) Versnellen van low-bandwith connecties (Modem, GSM, ISDN).
</p>

<p>In deze HowTo wordt uitgelegd hoe je op zowel bandbreedte als
verbindingstijd kan beparen door gebruik te maken van tools
als SSH1, SSH2, OpenSSH of LSH.
</p>
</sect>

<sect><heading>Comprimeren van HTTP/FTP,...</heading>
<p>
Mijn kantoor is verbonden met een 64KBit ISDN lijn naar het internet, 
dus de maximum transportsnelheid is ongeveer
7K/s. Je kunt de connectie versnellen door het te comprimeren:
als ik bestanden download, toont Netscape een transportsnelheid tot aan 40K/s
(Logbestanden zijn comprimeerbaar tot een factor 15). SSH is een tool welke
hoofdzakelijk is ontworpen om veilige verbindingen tot stand te brengen over
onbeveiligde netwerken.
Bovendien is het met SSH mogelijk connecties te comprimeren en behoort
port forwarding tot de mogelijkheden (zoals rinetd of redir).
Dus is het de juiste tool voor het comprimeren van iedere eenvoudige
TCP/IP-connectie. "Eenvoudig" betekent dat er slechts &eacute;&eacute;n 
TCP-connectie geopend is.
FTP-connecties of een connectie tussen
between M&dollar;-Outlook en MS-Exchange zijn niet eenvoudig aangezien er
verscheidene verbindingen tot stand worden gebracht.
SSH gebruikt het LempleZiv (LZ77) compressie algoritme - dus je
zal dezelfde hoge compressie-verhouding bereiken als met winzip/pkzip.
Om alle HTTP-connecties vanaf mijn intranet naar het internet te comprimeren,
hoef ik op mijn dial-in computer slechts &eacute;&eacute;n opdracht 
uit te voeren:
</p>
<p><tt>ssh -l &lt;login ID&gt; &lt;hostname&gt; -C -L8080:&lt;proxy_at_ISP&gt;:80
-f sleep 10000</tt> 
</p>
<p>&lt;<tt>hostname</tt>&gt; = host bij mijn ISP. SSH-toegang is vereist.
</p>
<p>&lt;<tt>login ID</tt>&gt; = mijn login-ID op &lt;<tt>hostname</tt>&gt;
</p>
<p><tt>&lt;proxy_at_ISP&gt; =</tt>de web proxy van mijn ISP
</p>
<p>Mijn browser is zodanig geconfigureerd dat het <tt>localhost:8080</tt>
als proxy gebruikt. Mijn laptop is verbonden met dezelfde socket.
De verbinding wordt gecomprimeerd en door SSH naar de echte proxy doorgestuurd.
De infrastructuur ziet er ongeveer zo uit:
</p>
<p>
<verb>                  64KBit ISDN
Mijn PC------------------------------Een PC (Unix/Linux/Win-NT) bij mijn ISP
SSH-Client         gecomprimeerd     SSH-Server, Poort 22
Poort 8080                           |
|                                    |
|                                    |
|                                    |
|10MBit Ethernet                     |100MBit
|niet gecomprimeerd                  |niet gecomprimeerd
|                                    |
|                                    |
Mijn tweede PC                       ISP's WWW-proxy
met Netscape,...                     Poort 80
(Laptop)

</verb>
</p>
</sect>

<sect><heading>Email comprimeren</heading>

<sect1><heading>Inkomende Emails (POP3, IMAP4)</heading>
<p>De meeste mensen halen hun email vanaf de mailserver op via POP3. POP3 is
een protocol met vele nadelen:
</p>
<p>
<enum>
<item>POP3 transporteert het wachtwoord in gewone tekst. 
(Er zijn SSL-implementaties van POP/IMAP en een challenge/response
authenticatie, gedefinieerd in RFC-2095/2195).
</item>
<item>POP3 veroorzaakt veel protocol overhead: 
ten eerste verzoekt de client om een bericht, dan stuurt de server het bericht
op. Daarna verzoekt de client het getransporteerde artikel te verwijderen.
De server bevestigt de verwijdering. Daarna is de server pas klaar voor de
volgende transactie. Dus voor iedere email zijn 4 transacties nodig.
</item>
<item>Alhoewel email hoog comprimeerbaar (factor=3.5) is, transporteert
POP3 de mail ongecomprimeerd.
(factor=3.5).
</item>
</enum></p>
<p>Je zou POP3 kunnen comprimeren door localhost:110 via een gecomprimeerde
connectie naar je ISP's POP3-socket door te sturen. Daarna moet je je
mail-client vertellen een verbinding te maken met localhost:110 om mail te
downloaden. Dat beveiligt en versnelt de connectie -- maar de downloadtijd
ondergaat nog steeds de aan POP3 inherente protocol overhead.
</p>
<p> 
</p>
<p>Het heeft zin POP3 door een wat effici&euml;nter protocol te vervangen.
De gedachte hierachter is de gehele mailbox in &eacute;&eacute;n keer
te downloaden zonder het genereren van de protocol overhead.
Bovendien heeft het zin de connecties te comprimeren. De juiste tool welke
beide mogelijkheden biedt is SCP. Je kunt je mailbestand als volgt
downloaden:
</p>
<p> 
</p>
<p><tt>scp -C -l loginId:/var/spool/mail/loginid /tmp/newmail</tt>
</p>
<p> 
</p>
<p>Maar er is een probleem: wat gebeurt er als een nieuwe email arriveert
op de server tijdens het downloaden van je mailbox?
De nieuwe mail zou verloren gaan. Daarom heeft het meer zin de volgende
opdrachten te gebruiken:
</p>
<p><tt>ssh -l loginid mailserver -f mv /var/spool/mail/loginid /tmp/loginid_fetchme
</tt>
</p>
<p><tt>scp -C -l loginid:/tmp/my_new_mail /tmp/loginid_fetchme</tt>
</p>
<p>Een verplaatsing (mv) is een elementaire bewerking, dus je geraakt niet
in moeilijkheden als je tijdens de uitvoering van de opdrachten nieuwe mail
ontvangt. Maar als de directory's /tmp/ en /var/spool/mail op de mailserver
niet op dezelfde disk staan, krijg je wellicht problemen.
Een oplossing hiervoor is een lockbestand op de server aan te maken voordat
je de mv uitvoert:
<tt>touch /var/spool/mail/loginid.lock</tt>. Je zou het erna moeten 
verwijderen. Een betere oplossing is het bestand loginid naar dezelfde
directory te verplaatsen:
</p>
<p><tt>ssh -l loginid mailserver -f mv /var/spool/mail/loginid /var/spool/mail/loginid_fetchme
</tt>
</p>
<p>Daarna kun je formail gebruiken in plaats van procmail om /tmp/newmail
naar de juiste foler(s) te filteren:
<tt>formail -s procmail &lt; /tmp/newmail</tt>
</p>
</sect1>

<sect1><heading>Uitgaande Email (SMTP)</heading>

<p>Je stuurt email over gecomprimeerde en versleutelde SSH-connecties om te:
to:
</p>
<p>
<itemize>
<item>Besparen op netwerkverkeer
</item>
<item>De connectie te beveiligen (Dit heeft geen zin als de mail later via
niet te vertrouwen netwerken wordt getransporteerd).
</item>
<item>De authenticiteit van de zender te bevestigen.
Veel mailservers weigeren het heruitzende van mail om misbruik te voorkomen.
Als je email over een SSH-connectie zendt, denkt de remote mailserver
(b.v. sendmail of MS-exchange) lokaal een verbinding te hebben.
</item>
</itemize></p>
<p>Als je SSH-toegang op de mailserver hebt, heb je de volgende opdracht
nodig:
</p>
<p><tt>ssh -C -l loginid mailserver -L2525:mailserver:25</tt>
</p>
<p>Als je geen SSH-toegang tot de mailserver hebt, maar tot een server die
het toestaat dat je je mailserver als relay gebruikt, is de opdracht:
</p>
<p><tt>ssh -C -l loginid other_server -L2525:mailserver:25</tt>
</p>
<p>Daarna kun je je mailclient (of mailserver: zie "smarthost") zodanig
configureren dat het mail naar de localhost poot 2525 stuurt.
</p>
</sect1>
</sect>

<sect>
<heading>Gedachten over de performance.</heading>

<p>Uiteraard neemt de compressie/encryptie CPU-tijd. Het bleek dat een
oude Pentium-133 ongeveer 1GB/uur kon versleutelen en comprimeren -- dat is
heel wat. Als je SSH met de optie &dquot;--with-none&dquot; compileert, kun
je SSH laten weten geen encryptie te gebruiken.
Dat bespaart wat van de performance. Hier is een vergelijking tussen
verscheidene download methoden
(tijdens de test, werd een ongecomprimeerd 6MB-bestand getransporteerd vanaf
een 133MHz-Pentium-1 naar een 233MHz Pentium2 laptop over een
10MBit ethernet zonder andere load).
</p>
<p>
<verb>
+---------------+------+-----------+-----------+----------------------+
|               |  FTP |versleuteld| gecompri- | gecomprimeerd &amp;  |
|               |      |           | meerd     |    versleuteld       |
+---------------+------+-----------+-----------+----------------------+
+---------------+------+-----------+-----------+----------------------+
|Verstreken tijd| 7.6s |   26s     |    9s     |          23s         |
+---------------+------+-----------+-----------+----------------------+
|Doorvoer       |790K/s|  232K/s   |  320K/s   |        264K/s        |
+---------------+------+-----------+-----------+----------------------+
|Compressie     |      |           |           |                      |
|Factor         |  1   |    1      |    3.8    |          3.8         |
+---------------+------+-----------+-----------+----------------------+
</verb></p>
</sect>

<sect><heading>Groeten</heading>
<p>Met dank aan Harald Knig &lt;koenig@tat.physik.uni-tuebingen.de&gt;, wie
rcp gebruikte om complete mailboxen te downloaden. De laatste versie van deze
howto is beschikbaar op <tt>http://www.syss.de/howto.</tt>
</p>
</sect>
</article>
</linuxdoc>