Hi,
while looking for a way to reduce total-packet-sizes in order to avoid
ip-fragementation, I noticed that a lot of space is 'wasted' with
via-information in requests, that UACs actually dont need for replying, but
which is needed to route the replies on the proxy.
Especially in setups with a lot of proxies in a row (four or more), the
amount of used bytes for via-hfs is huge (the big "Via: SIP/2.0/UDP",
ip-adresses and branch-tags). Every of these lines is only required at a
specific hop and the rest of them is ignored.
So the idea is that a lot of this data can be reduced transparently at the
outgoing-proxy before sending the request to the uac and to restore the
reduced data in the reply coming from the uac.
To let this work statelessly, all the information must be stored in the
outgoing request, but because most of the data is ignored anyway at the
uac, we can change the coding of it to save bytes.
I implemented a way of doing this by patching udp_send(). An outgoing
request is disassembled, the unneeded vias are aggregated, pushed through
zlib, coded with base64 and appended to the end of the one required
via-hf.
The decoding is handled in udp_rcv_loop() before calling receive_msg.
I tested this successfully at stateless proxies loadbalancing in front of a
register-proxy. The UACs were Grandstream GXP2000.
The whole thing saves maybe about 70 or 80 bytes, which doesnt sound much,
but these could make a differences when you're trying to stay below a mtu.
Anyone interrested in discussing the whole mtu, ip/udp-fragmentation issue?
Nobody/Anonymous
core
ver 1.2.x
Public
|
Date: 2008-04-17 07:04
|
|
Date: 2008-04-16 12:08
|
| Filename | Description | Download |
|---|---|---|
| viacompression.patch | Download |
| Field | Old Value | Date | By |
|---|---|---|---|
| File Added | 237330: viacompression.patch | 2007-07-17 10:53 | marcushunger |
Copyright © 2010 Geeknet, Inc. All rights reserved. Terms of Use