UDP + Math = Fast File Transfers
Wolfger writes: "A new file transfer protocol talked about in EE Times gets data from one place to another without actually transmitting the data..." Well, the information is transmitted, just not in its original form. I think there are a couple of other places working on similar ideas - wasn't there a company using this for a fast file download application? User would go to download a game demo or something, receive pieces from several different places, and knit them together? Wish I could recall the company's name.
User would go to download a game demo or something, receive pieces from several different places, and knit them together?
The file sharing networks based on fasttrack technology do that. You download a movie or game from different users at the same time. Kazaa stitches it back together.
The name of the program michael is referring to is called getright, which can connect to several known mirrors of a file and download seperate fragments from each.
This is a good idea, and pretty natural. But it isn't anything new. There are many problems to overcome, not the least of which is managing all the TCP/IP conenctions and doing the decompression/assembly.
Of course, when a 1GHz CPU costs about $90, I guess we can afford CPU-heavy file transfers.
Moderation: Put your hand inside the puppet head!
GetRight uses multiple sites to download from and then pieces them back together.
http://www.getright.com
The Transporter Fountain sits alongside a switch or router, and one Transporter Fountain is needed at the sending and receiving ends of a connection. Prices will range between $70,000 and $150,000.
Oh, boy, I'm gonna stop by CompUSA on the way home and grab one of these.
The Edonkey Software does the Same i think for download Movies and other big files, does not work perfect so could we perhaps Spawn an Open Source Project with an open Protocal for this ?
i believe it could be nice for apt-get debian install's
or distributing cd images of linux software
Here
Tarsnap: Online backups for the truly paranoid
I wonder what equations are used to convert raw unpredictable streams of data to formulas, and how come that the formulas used aren't bigger than the sent packets themselves? They mentioned XOR, but that just sounds silly, because XOR does nothing with data except do some reversible equation on them which does neither shrink or grow data.
Does anyone have more info? It does sound interesting though...
In essence, is not this the same as file compression? The amount of information is the same
(for those, who remember, what Bit is). It is just, that the usual one character per byte is awfully wastefull. Which is why the various compressors are so effective.
Add a modern data transfer protocol and you may :-)
get some start up money
In Soviet Washington the swamp drains you.
How is this different from a nifty compression and transmitting slightly differently?
To me, this sounds like a mix of compression and protocol, not necessarily that groundbreaking.
If it works, cool. But I guess it won't be that efficient on that old 486 Linux router...
You still need some form of flow control or rate limiting, otherwise a large percentage of the UDP packets are going to get dropped. Plus, you have the problem of UDP streams stealing bandwidth from TCP streams on a limited bandwidth link.
Mea navis aericumbens anguillis abundat
Sounds like flashget/jetcar to me. It's been available for quite some time. Tell that to the USPTO!
So, someone has invented a data compression technique, and applied it over a communication channel. The only original thing in the article was the clever marketing ploy to describe this old technique as something new and wonderful...
In Murphy We Turst
I wonder if it's possible to duplicate this with an open solution. If this is really as revolutionary as they say then they've earned their patents. Could free/open hackers can come up with something that delivers the same results but is unencumbered?
I mean it's not for image compression specifically, but it definitely reminds me of IFS image compression in some ways. I'll bet that compression is very time consuming, but that's fine if you're warehousing data. I wonder if the clients are pre-loaded with a body of parameterized functions, so that the server just sends information describing what functions to run and what the parameters are. I guess if it's all based on polynomials all it needs to send are vectors of constants.
Neat idea. Patents: here and here.
> These files routinely are mailed on tape rather
:P Maybe they meant 20gb. Cuz I've seen chip designs + noise analysis + whatever take dozens of gigs.
> than transmitted electronically. "FedEx is a
> hell of a lot more reliable than FTP when
> you're running 20 Mbytes,"
Having worked in the industry they mention, I'd hazard that they don't use ftp more because of the illusion of security than anything else. People in the EDA world (which is where I worked, and has a close relationship with chip manufacturers) are immensely paranoid about people getting ahold of their chip designs, because if someone steals that.. you not only lose your next chip, you enable someone else to make it for you.
These people just don't trust firewalls and ftp yet, but they do trust putting a tape in an envelope and snail mailing it. At the very least it makes someone liable if the letter gets stolen, which you can't do with electronic transfers..
At any rate, ftp is plenty reliable for transfering 20mb files.. I do it every time a new game demo comes out.
According to the artical, the technology needs exactly the right kind of equation (or what ever this technology uses to get information) according to the repersentive quoted in this artical, if you got 98% of the packets, you don't have the file. I supose this means theres a large chance that network conditions can completly mess up a download, say interference on a router somewere in Kalamazoo, or even on local ethernet line. Not sure if this is a big thing or not, but who knows.
Sleep is for the weak!
"User would go to download a game demo or something, receive pieces from several different places, and knit them together? Wish I could recall the company's name."
Uh...doesn't something like Download Accelerator Plus (yeah yeah, I know its a hive of spyware) already do that (downloads from multiple locations only to recombine the file later)?
User would go to download a game demo or something, receive pieces from several different places, and knit them together? Wish I could recall the company's name.
the network is called usenet and the company was just broken up by the government.
nothing excels in every environment
The program was called xolox,
;)
I know the developper personally and he is very disappointed about the corporate feedback he got.
People loved it, corporations didnt, so he shut down his site and with it Xolox ( unless you have a hacked version of course
Cheers.
My other sig is Funny.
It looks like they just use UDP to "send" the original data and then follow it up with parity information until the "receiving" client gets enough parity data to reconstruct any missing original data. The parity files everyone has started using on Usenet are pretty cool, and this just sounds too similar.
I wish they would quit saying my video card sucks since I own a Visiontek G3 and it ownz.
Well, one thing I noticed with Kazaa/Morpheus was that partially downloaded files were useless. I hated trying to download a movie, the file provider going offline (just rude), and then note even being able to watch the part I had downloaded. I don't know if there was a work-around to it. I just switched to using Direct Connect.
SylentBobb
Guys, this is nothing like Kazaa. Kazaa will let you download from several sources simultaneously, but only because it just requests different parts of the file from each source. At that point there are still send/ack type protocols in use.
This technology (from the write-up anyway) uses some kind of proprietary technique to re-map the data into another domain and send the information required to reproduce it. It sounds kind of like sending a waveform as a series of Fourier coefficients rather than as actual data samples. By changing to a different domain, it is possible to send metadata from which the original information can be recreated.
I have no idea exactly how they would do it, but it doesn't sound completely impossible.
However, its nothing like Kazaa or GetRight.
When downloading something large (probably everything, just more noticeable when the file is large) Morpheus connects to different users with the same file.
You must surely mean OpenCola's Swarmcast. hiro
Martin May
This sounds a lot like how vector graphics work. They don't transmit every pixel,but only send the coordinates and the instructions how to draw the image.
Somehow they managed to do the same for applications. maybe they only send the sourcecode and compile the code on location
The company which did that was openCola with a OpenSource product called Swarmcast, but as far as I know they have abandoned the project and cut of the developers off their payroll. However they are still going on at sourceforge.
I know few of the developers and one of them has started a service company, selling services for swarmcast called Onion Networks
AK
I believe Michael's talking about OpenCola's Swarmcast.
Now you just need to combine that with the revolutionary algorithm to compress any data to one bit and power your computer by cold fusion, and you got one heck of a file transferring machine!
Doesn't e-Donkey grab from all kinds of different sources and then assemble the file?
By George, I believe it does.
The company's name is OpenCola and the name of the product was SwarmCast. The guy who did SwarmCast, Justin Chapewske, is now at a company he started named Onion Networks. OpenCola appears to have completely abandon its original Open Source approach to their software.
Apparently, Justin has taken the GPL portions of Swarmcast and is improving them at Onion Networks.
Need a Python, C++, Unix, Linux develop
Debian does something similar with the Pseudo Image Kit.
It gets all the parts of the install ISO cd image, from disparate sources, stitches them together, and then uses rsync to patch it to exactly make a duplicate of the original install image.
Very nifty.
and it doesn't actually transfer the data.
The quirk is that none of the data is ever transmitted; the receiving end creates its own copy of a file based on a complete set of mathematical equations.
This is called compression. Everybody is doing it and it has been done before.
When you download a ZIP file, you are not downloading the content. You are downloading a mathematically transformed version of it. You then translate it back. Modems have been compressing and decrompressing on the fly since the late 1980s.
Maybe they have a better compression scheme? (Fractal based?) That would be news. Everything else is a distraction.
--- -- - -
Give me LIBERTY, or give me a check.
Oops, make that Justin Chapweske. That's what I get for typing out an odd name from memory. :-)
Need a Python, C++, Unix, Linux develop
"FedEx is a hell of a lot more reliable than FTP when you're running 20 Mbytes," said Charlie Oppenheimer
Who does this guy think he is kidding?? We regulary FTP AutoCad files of 100 Megs and ISO images of 500 Megs with no issues what so ever.
Sure it might take an hour or or so to complete but, that beats the hell out of FedEx and it's a lot cheaper too. This guy's been smoking a few too many of his own marketing brochures.
You'd think if they were going to call their product Fountain, and try to name it something out of Star Trek, they would at least call it "Particle Fountain" which actually appeared in at least 1 episode of TNG, I think.
;)
Oh, wait, the particle fountain blew up and didn't work so well...
Nevermind
Glenn
This is one of two:
Guess what?
Well, Morpheus will let you download gigs of these so-called "Game Demoz" for free from multiple sources at the same time!
---- I'll take you in a Hunt deathmatch any day.
From what I have seen in the past, using UDP is not always a good thing. Many of the major backbone providers, and a lot of ISP's block UDP traffic at different times for many different reasons(Smurf attacks, DoS). This can lead to several services being shutdown.
The idea itself sounds good. You more or less send a description of the file in a mathematical equation. If the equation itself is smaller in size than the file, great.
For anyone that just wants the jist of the article:
"The sending side transmits these symbols until the box on the receiving end confirms that it's collected enough symbols. "
So basically, it's not much more than UDP with a single reply telling the server to stop transmitting.
Not bad, but you better have some good timeouts worked into this thing. UDP by definition is a non-replying "if it gets dropped who cares?" protocol. If the receiver's connection were to go down, wouldn't the server just get flooding all the in-between routers with packets for awhile? That's not good for traffic congestion.
------
Let me give you the lowdown
Isn't one of TCP's purposes to throttle connections when loss (=contention) in the core starts to affect a stream? This is a method by which multiple users can share the same public network without adversely affecting one another. This technology looks like it is working around this problem by adding redundancy to the orignal data and then flooding the network, ignoring any indications of contention. This smells pretty selfish to me and could cause problems to the public internet if this technology ever takes off in large enough numbers.
The generation of random numbers is too important to leave to chance
This could be done easily without the proprietary algorithms. Just send update packets with a header in each on stating that it is packet number N and there are X total packets. Then, request missing packets when you get towards the end, and put them all together in order when you get them all.
Somewhat unrelated --- Does anyone else miss Z-Modem. We need a zmodem like program for that works over telnet so we don't have to open a separate FTP session. In the BBS days, you just typed rz filename and it came to you.
Judging from this:
The sending side transmits these symbols until the box on the receiving end confirms that it's collected enough symbols. The receiving box then performs an XOR operation on the symbols to derive the original data.
It appears to me that the transmitting side generates the symbols (parameters of the equations, I guess) and begins sending them to the receiving side as fast as it can. Apparently there are multiple solutions to the equations that will arrive at the same answer, so when the receiving end has received enough symbols to make it works it says, "stop sending already!" Apparently they're getting their speed because A) things don't have to go in any order (that's how the 'net is supposed to work, right?) and B) Alice and Bob don't have to keep up this conversation: Alice: Hey, Bob, can you send me X? Bob: Okay, are you ready? A: Yes, Go ahead? B: Okay, here it comes. A: I'm waiting. B: Here's the first packet." A: What? That packet didn't make it over. B: Okay, here it is again. A: Okay, I got that packet. B: Good. A: Okay, I'm ready for the second packet. B: Okay, here's the second packet.
Okay, I had too much fun with the Alice and Bob conversation there. Anyway, it looks like there scheme is compressing things in the form of their equations, and then just sending them in a burst until the receiver is happy.
Sounds like it might work, but it'll generate a ton of network traffic, I'd bet!
Anything that uses the music city protocol has the download from multiple available sources at the same time; if your downloading from the web then downloads managers like getright ect also are available to do a similar task.
--
The computer told me to press any key to continue,I pressed the one looking like this (|) !!OH SH*T!!
These guys are implementing a Forward Error Correction mechanism for compression. It's all from research of Michael Luby at Berkeley with FEC and Tornado codes. He is a co-founder of the company. Pretty effective technology for certain applications.
That article leaves alot to wonder. Is it just some data compression? I don't think there's any more to be done in that field that hasn't been discovered yet. Is it a protocol that sends alot of UDP packets and partiy packets so you can fill in the missing blanks? Then you have to deal with bandwitdth throttling, because you can't just have some machine sending out UDP as fast as it can to your smaller pipe, it will cause some DoS. Anyone have links to their patents? adam
Someday when we all have extraordinarily fast computers, we'll simply be able to send somebody an MD5 sum and the computers will be able to "crack" it back into the original file. At that point, commercial software wouldn't even have to come on a CD... just print the hash on a slip of paper and the user could type it in.
word.
Skiers and Riders -- http://www.snowjournal.com
The article says that they don't care if packets get dropped, as long as the right number of packets get transmitted.
Aren't the packets unique? If a packet gets dropped, how do they know which one to resend?
It doesn't make sense to me.
Yeah, I don't ftp is so slow that anyone is going to pay $70k for their proprietary 'Transporter Fountains'. Seems like anyone with a little common sense and math ability could easily cobble together a software UDP based transfer protocol that has all of the properties described in the article.
The key is to build in redundancy without increasing the amount of data sent so much that you counteract the speed gains you get by using UDP.
-josh
Just send restart at commands to many different servers, then cat the files onto each other. This is how Dowload Accelerator does it, and Fast Track is the same theory. Programs just take all the mental work out of it.
SIG: HUP
From the article:
Meltzer recalled a job where the client had a 32-Mbit/second connection available but was getting a throughput of 0.5 Mbits/s. "It wasn't a question of mere bandwidth. They had too much turnaround," he said.
Um... if you're getting 500kbps on a 32Mbps connection your protocol stinks. 1/64th of your available bandwidth isn't FTP's fault, nor is it TCP's. Either there was a severe bottleneck somewhere between the endpoints, or the protocol was designed to minimize throughput.
More shit:
"FedEx is a hell of a lot more reliable than FTP when you're running 20 Mbytes," said Charlie Oppenheimer, vice president of marketing at Digital Fountain.
They may have better bandwidth but the latency sucks. Furthermore, I've never had FTP destroy my packets. It either made it or it didn't, and it makes it 100% of the time, barring connection failure.
Sorry. I don't buy it. Yeah sending over UDP gives you less hassle than TCP but now you have to take into account all the sequencing and data transfer checks. Not terribly difficult but no rocket science, either.
In my networking class last year, they talked about new protocols having to be "TCP fair," in that they don't gain their advantages over the standard TCP by just cutting in line in front of other TCP packets...I wonder if this new algorithm claims to keep that in mind. The scenario to avoid is everybody who's 31337 switching to this new stuff, thereby slowing down the other half to gain their speedup.
/.
Conspiracy theory? Yes. But hey, this is
Slashdot 's editors are dickheads
User would go to download a game demo or something, receive pieces from several different places, and knit them together?
There is no download happenning at all here. It is doing something like this, the so-called reciever is building a binary representation of a CRC. Both sender and reciver use propietary hardware. This isn't fucking GoZilla you fucking fucktards!
The article quotes that "...FTP requires packets to arrive in sequence, and TCP requires a receiving end to acknowledge every packet that arrives, so that dropped packets can be resent..."
This is incorrect. TCP has a concept of sliding windows where once a number of packets has been received successfully, the receiver increases the number of packets that can be sent without an ack. This is an exponential number, so if it receives 2 packets successfully, it will then tell the sender that it will take 4 before an ack is needed. The only time you get a 1 for 1 ack ratio is if you miss a packet and the window slams shut.
Furthermore, UDP for data is highly unreliable, and I wouldn't trust it across WAN's. Frame Relay switches may drop packets if you exceed your CIR and begin bursting, so that whole transfer will never succeed. Therefore you actually waste bandwidth cause the whole transfer is doomed to fail, and the sender will never know it.
Also some routers have WRED configured in their queues, purposely dropping TCP packets to increase bandwidth on a global scale. This would damage the file transfer process as well if it was UDP based, as this system is.
Stick with the RFC's and the tried and true TCP transport system. This company will fail.
--- RFC 1149 Compliant.
This sounds a lot like what PostScript is to a rasterized file. A set of descriptions of what the picture looks like, which are small and easy to transmit, which are then drawn to produce the picture.
With real vector PS its easy, since you start out by creating vectors (eg, Adobe Illustrator). How you get from a non-vector "destination" to the metadata you really want to transmit sounds complicated.
Udpcast in FEC mode does this too: in addition to the original data, it can transmit an arbitratry amount of "FEC" blocks which are a linear combination of the data blocks. If some data blocks are lost in transit, udpcast can recalculate them from the FEC blocks by multiplying the vector of received data by the inverse encoding matrix.
Say no to software patents.
prozilla does the same job under linux.
Conclusion: Only sales & marketing would try to sell a product that turns 20MB into 100MB, sends it via UDP, only in order to have the results XOR'd together.
Where do they get these people?
Oh, yes, here's a link to the SourceForge project for SwarmCast.
Need a Python, C++, Unix, Linux develop
I don't have the paper in a computer format, but the number is TR-98-021 and John and Michael were both at Berkeley at the time (1998), so it should be fairly easy to find if someone is interested. Doubtlessly, a number of other reports on the subject should also exist that deals with the same problem but with different solutions.
Sorry, the whole article seems to make some magic mumbo-jumbo out of the process. Apparently the file is transformed, but how does that transformation help? The main difference between UDP and TCP in this case is, that TCP maintains the sequence of Packets, so after splitting a file up, sending it as TCP-Packets and combining it again, all parts (sent as Packets) are in the right place. UDP does no such thing, and also UDP doesn't check, if a packet really reached it's destination. This frees UDP of some overhead TCP has. But to send a large File (with a simple approach), now you have to label each UDP-Packet with a sequential number, and, at the end, check if all Packets arrived (and maybe request missing Packets again), then rearrange them according to the sequence numbers.
Now i don't see, how a transformation of content helps here, instead of adding the information where in the file the packet goes (a kind of serial number), now you have to label, where in the equation it should go (a kind of coefficient index), so the receiving end knows, whether it has all information, and which information is still missing, and must be requested again.
"By the way if anyone here is in advertising or marketing... kill yourself." -- Bill Hicks
It's an encoding scheme that sends you the instructions on how to build something rather than the stuff itself. Not so special as they make it sound. Saying that you get the data without it being sent to you is the biggest troll for mid-level clueless managers that want to download their "repr0ns" faster. Not that I'm even sure it will work that well....
SIG: HUP
That the part about /. I hate the most, the stupid phuknutz who post without engaging their brain. The company doesn't do compression like you all think, they abstract the data into a series of equations that represent the content. The result is that it doesn't matter which packets you download from the source, just that you download enough of them. Once you have enough packets, you can solve the series or equations (n equations, n unknowns) to get back the original data. Duh.
Interesting idea, I wonder how it could work in practice.
They are going to have to deal with flow control, dropped packets, etc... I wonder what happens if the receiver crashes?
I have a feeling that they may be sending quite a bit of redundant data (perhaps similar to the way CDs are encoded at the hardware level), and they are betting that the signal to noise ratio is good enough for error correction software to deal with it. With a bit of luck they should be able to use more of the bandwidth available.
I wonder what would happen if lots of people start using something like this. Would the extra bandwidth actually slow things down, even though an individual download was faster?
I wish I had more energy left after doing my day lob, since this sounds like a fun side project...
I didn't think FTP required packets to arrive in sequence. Although FTP and TCP acknowledge packets in sequence they don't actually require the packets to be recieved in sequence.
They don't really make clear why this product is interesting at all except giving it a cute name.
You create your data in records and groups. Each group contains a longitudenal XOR of the other records within the block. This comes from tape backups that were proof against bad-spots and was later used in RAID.
You then sequence and shoot your data in records across the network. If one record is dropped, it can be recreated through the XOR redundancy record. If two records are dropped, you need a rerequest mechanism. This can be either on UDP or via a separate TCP link.
If you want an example of prior art, go to the trading room of a bank. How do you think all those prices are delivered to every workstation?
See my journal, I write things there
michael, this is not what the product does. From the article:
It appears as though the singal is broken down into equations, that when combined produce the original data. These equations are all sent from the same server to the destination client. The speed increase then comes from the fact that the size of the equations is less than the size of the data.
The article does not mention that the equations come from multiple servers, which is a very big difference! IMO, this technology is much more newsworthy than yet another multi-server downloading tool like Kazaa.
----- rL
> User would go to download a game demo or something,
> receive pieces from several different places, and knit
> them together?
This technology has *nothing* to do with ``downloading chunks from multiple sources and splicing them together''. Man, it's bad enough seeing how many Slashdot readers didn't bother reading the article, but Michael himself didn't bother reading the article.
First the article says this:
"If you get 98 percent of the packets, you get nothing."
Then it says this:
"The arrangement saves time because neither side cares if a packet gets dropped, thus eliminating the dialogue required by TCP and FTP."
Huh? Well if it doesn't care that a packet gets dropped, but it still needs all the packets, how does the darn thing do anything at all?
BTW, this post needs to be modded down rather badly as the person who wrote it doesn't seem to have read the article, or if (s)he did, (s)he misunderstood it badly.
Need a Python, C++, Unix, Linux develop
Can they get more fancy? "...based on a set of mathematical equations, it creates the data on the other side..." This sounds like generating a script that generates the data on the other side and send over the script. Or even another way of seeing it is that there is a grammar generator on the server side for the language that is the input, and then the grammar is parsed on the client side and the input is regenerated.
The question is, How much more or less data is a grammar for a large input that has little repetitions? And why UDP? Isn't UDP unreliable?
I can't think of an equation that could be used to describe a file consisting of truly random
data can you? For example a setiathome file that consists of white noise off the radio telescope.
Sure you could do FFT on it but that is a type of lossy compression, you won't be able to reconstruct the file
EXACTLY from it which is vitally important with
computer data.
So can someone explain how they would get round what seems to me an unsurmountable problem?
This was done many years ago. There was a program in one of the rags for the Radio Shack CoCo that would take a large (16k in those days) file and build a tiny BASIC program that would reconstruct it when run.
This is a bit more sophisticated since it can rebuild with missing packets, but the general function is the same.
Still a good idea overall; at least until all of the transfer progs are full of Trojans.
You never really know how close to the edge you can go until you fall off.
The EETimes article is extremely poorly written.
.. it just continues listening. This is especially cool for multicast transmission since even if receivers A and B miss different parts of the message, the broadcaster doesn't have to send the missed parts of the message to the different receivers - it just continues broadcasting since any part can substitute for any other part.
The technique used by Digital Fountain is called Forward Error Correction. It allows a message M with m parts to be encoded into n parts, where n > m. The interesting thing about this is that any m of the n parts will allow the original message M to be reconstructed.
This means that if a part of the message is missed, the receiver doesn't have to request a resend
ok, people, you seem to be far away from your thinking apparatus.
compression takes data, applies an algorythm to it to generate new data that is representation of the whole.
contrary to that, this transforms the data to an algorythm that simulates the whole.
it is a minor point of order, but one worth thinking about because it is theoretically different.
this is also not distributed, it is point to point, I don't know where the submitter got the distributed model from, I suspect he pulled it out the air, but this is very clearly not that. It requires a machine at each end of the point2point.
however, logically, all data that is not random, can be represented by equations that are smaller than the data. However, the real load exists in the generation of the equations from the data, and not the reconstruction of the data itself, so for me this seems to be quite a possible project, though i suppose it will take quite a bit optimization.
one other thing, the article does not say that it uses a standardized technique, and it would be interesting if they did not use standard vector analysis or the like. If they used vectors, then this could just reduce to a system of file conversion from one standard to another. I think it would be far more interesting to be what it says it is supposed to be a file conversion to mathematical simulation of the file.
Maybe I'm misunderstanding the quote, but I semi-regularly download 600+ MB iso images and other multiple-hundred-meg files over ftp links at work, and I've never had problems. It's probably just me, but that really sounds like a load of bull, designed to whip up interest in an otherwise lack-lustre product (given it's high price).
Cheers,
Tim
It's official. Most of you are morons.
See http://www.digitalfountain.com/getDocument.htm/tec hnology/DF_MetaContentWhitePaper_v4.pdf
http://www.ietf.org/internet-drafts/draft-ietf-rmt -info-fec-01.txt
The use of Forward Error Correction in Reliable Multicast
Enjoy.
Sounds like Code Excited Linear Predition. Linear prediction uses an equation which can be used to replicate a data stream. Code excited, in this case, means you have a variety of equations to choose from, and you can plug in different coefficients for the various equations. Consequently, all you need to transmit are:
- which equation to use (if there are 256 equations to choose from, that's an 8-bit value)
- what coefficients to use with those equations
- how long to follow the resulting data sequence, before you need to change the values
CELP was applied particularly to speech compression. The DOD was using it with 4800 bps (yes, that's 4.8 kb/s, about 1/2 - 2/3 the bandwidth used by PCS cellphones) modems and encryption systems to transmit secure voice.It sounds to me like they've got a more general selection of equations, and the resulting datastreams are interleaved. If you don't get the information for all the equations, you can't accurately reconstruct the data. Additionally, since you don't have to respond to every packet, you reduce the turnaround.
Unless I'm mistaken, Fiber Channel already does the latter part.
In short: a more general application of existing compression schemes and protocols.
95% of what you read about these days is just mucking around with new combinations and applications for existing inventions.
The technique is called Forward Error Correction. I don't know much about it, but I know that you can do things like break up a file of N*B bytes into 2N blocks of B bytes each and then be able to reconstruct the file from any N of the 2N blocks. The GPL'ed Mojonation system uses it, if I recall correctly, to distribute each 32kB chunk of data into eight 8kB blocks allowing reonstruction from any four of them.
Those "Tornado Codes" you mentioned are coauthored by one of the executives of this company (Luby is CTO).
- High - Grade compression. The system they describe sounds quite similar to wavelet compression used for image data; main difference: usualy algorithm based compression works best for sound/video data where slight differences between original and reconstracted image are acceptable - you look for an algorithm that aproaches the original, but it doesn't have to be a 100% match. For application data, there obviously musten't be any information loss.
- downloading information from several sources: this is done by lots of utilities; some FTP clients, swarmcast, kazoo/morpheus to name just a few.
- sliding window IP data transfer; also old stuff, you don't even have to use UDP for this, support is bult right into TCP protocol. You can easily have a tcp connection with a large window size, i.e the ammount of data that can be "on the fly" before an acknowledgement is required. Sequence of packets isn't an issue either, TCP is perfectly happy to reorder the packets on arrival. This way you avoid the problems introduced by high bandwidth / high latency connections mentioned in the article. only really stupid applications/protocols suffer from these effects nowerdays - if your application won't send the next packet before receiving an acknowledement for the previous one, your performance will obviously suck.
Considering this, the most noteworthy thing about the article seems to be the ability of their marketing folks to make this actually sound new and interesting.you have moved your mouse, please reboot to make this change take effect
After looking through some of the material on the company's web site, this product appears to be based on LT (Luby Transform) coding. Each encoded packet is the result of XORing a random selected set of segments from the original file. When sufficient packets have been received, they can be used to reconstruct the original file. Insert magic algorithm. The nice thing about this is that the transmitter can continually stream packets, and a receiver can start collecting packets at any point in time. When the receiver has collected sufficient packets, it can reconstruct the original file. Packet ordering is totally irrelevant. You just need enough packets to generate a unique solution. The math for the code has not been published yet, but this is supposed to be a successor to tornado codes, which have been described in the literature.
Mea navis aericumbens anguillis abundat
Given the current patent practices, none of us will be able to touch this for 17 years. Even longer (70 + life) if they can claim that this is a copyright + content control (ala DMCA) technology.
--McFly777
McFly777
- - -
"What do people mean when they say the computer went down on them?" -Marilyn Pittman
I wonder how hard it would be to highjack a UDP based session like this. What if bogus packets are injected along with the stream of valid ones. Does the math include any form on encyption? Or is this a tunnel for other protocols? Damn it, we need to move away from clear text protocols, not create new ones!
With the GetRight solution, 100 people downloading from my FTP mirror = 100 TCP streams worth of bandwidth and CPU consumption. With the Digital Fountain solution, 100 people downloading from my mirror = 1 stream worth of bandwidth and CPU consumption.
http://www.opencola.org
They called it "Segmented Downloads", ie the program would hit multiple ftp sites for the same file, doing a resume to get different parts at the same time. Heck, it would even locate the mirrors for you.
And yes, it caused a substantial improvement in download speed. It seems thus that the bottleneck is seldom in the last mile.
But this has little to do with the article, which as far as I can tell is mostly gibberish.
My Karma: ran over your Dogma
StrawberryFrog
The "Math" they use is called Forward Error Correction (FEC) and is the same stuff that the Swarmcast distributed download system is based off of (http://sf.net/projects/swarmcast/).
I am the creator of Swarmcast, and we at Onion Networks (http://onionnetworks.com/) already have a product that can provide file transfers just as fast as Digital Fountain, but ours is 3-5.5% more efficient and much much cheaper.
On the open source front, we are working on the next generation of the Swarmcast technology which will combine parallel downloads over HTTP, Multicast IP, and UDP (for tunnelling through NAT). We have started work defining a standard for this system called the "Content-Addressable Web" and hope to see it implemented in everything from Apache to Mozilla.
Please mod this up, people shouldn't be paying $150k for these types of technologies.
why arent open source people making new protocals?
If you use Linux, please help development of Autopac
Something mildly along the same lines (I believe) are PAR files... you can learn more about them here. It has the ability to reconstruct files that don't exist on your HD. This has recently become quite popular in newsgroups.
http://www.disc-chord.com/smartpar/index.html
You can only solve a linear system of equations with two unkowns and two equations if the equations are independant. And you can't have more independant equations than you have variables. So your calculation is very optomistic. Imagine if I send you the following data:
X+Y=4
X+2Y=5
2X+4Y=10
2X+2Y=8
With 50% packet loss (as opposed to a 50% chance of loss per packet*) you only get two useful equations 2/3 of the time. Of course, these boxes are expensive and can do a lot more number crunching than just linear algebra. But of course, I wouldn't really have expected a good comparison from a company whose veep of marketing said "FedEx is a hell of a lot more reliable than FTP when you're running 20 Mbytes" Clearly all those game demo sites on the net need to get with the program.
*Computing the chance of loss per packet gives:
1/16 chance of getting all four, 100% success
3/16 chance of getting 3 of 4, 100% success
8/16 chance of getting 2 of 4, 66.666% success
3/16 chance of getting 1 of 4, 0% success
1/16 chance of getting none, 0% success
or 28/48 is a little more than 4/7, slightly worse odds than if you always got 2 of 4.
Please mod parent up, posters above this are STILL blathering on about distributed data transmission.
Read the article people. It's NOT anything like Kazaa, Morpheus, MojoNation or the like. It's about sending data as a mathematical representation of the data, not the data itself. And you only need a portion of the whole equation to arrive at the "solution". That means less actual packets being transmitted, and less overhead from packet loss and retransmission.
A company I used to work at experimented with a form of "preemptive" error-correction. They built a system that, instead of waiting for acknowledgemnt of a received packet, would resend a packet if the sender had not yet received an acknowledgement. The trick was that this resent packet would be XOR'ed with other packets (possibly a fresh packet). The probability that a packet was lost along the way was dynamically computed and used to determine which packets should be combined and resent in order to optimize the probability that all packets would be reconstructed. This computation could be done very fast, in a finite state machine, which could be implemented in hardware quite nicely.
Being well balanced is overrated. -- John Carmack
It's related ECC or Error Correcting Codes, and these are the same little wonders which allow you to drill a small hole to your CD and not lose information (Try it!). There's enough redundancy to reconstruct the original bit image.
The concept of redundantly spreading information so you can construct the original from less than all the parts is the basis of RAID5. I first heard of RAID5 in the mid 80's. The point is that I see no new concepts at play here. Just the application of existing concepts to move files.
More power to them if they can do it right. Earth shattering innovation? Not at all.
--- -- - -
Give me LIBERTY, or give me a check.
I expect this system is a little like Raid 5, Used on Hard Drives. Eg, 5 disks, 1 goes down, you still have enough data to restore the failed drive.- This seams simalar to been sent 5 Million UDP packets, 1Million get lost on the way, however, you still can piece together perfectly what you wanted from the remaining 4Million.
kencast has a satelite solution that transmits data this way.. its pretty old.
its just that when many parts are missing you wont get spock or something appearing on the beamer platform.
its a one way solution so lost is lost.
its like.. www.kencast.com or something.
So instead of sending "10," this new method will save time by transmitting the formula 1+1+1+1+1+1+1+1+1+1?
https://www.eff.org/https-everywhere
Has anyone considered the legal ramifications a protocol like this would cause? The whole concept of digital copyright (and of course, the 'beloved' DMCA) is to prevent users from sending copyrighted content to one another. But what if you were to send only the _instructions_ on how to make an exact copy?
Its illegal to make a bomb, but its legal to have instructions to make one (at least here in the U.S.). What do you think?
There is nothing "proprietary" here. The techniques for reliable transmission of digital data over unreliable media has been a central area of EE research for at least three decades. The unreliable media is now UDP instead of broadcast RF or transmission lines.
Line reliability in the "normal" sense is classified by bit error rates. Here, the analogous rating would be packet dropped per second. So, it seems like a straightforward application of FEC. It is useful for the reasons that they state. TCP transmissions look like this:
Client: Request Data Packet #00001
Server: Transmit Date Packet #00001 then wait for Client to say OK or Retransmit.
Client: Request Data Packet #00002
Server: Transmit Date Packet #00002 then wait for Client to say OK or Retransmit.
....
Client: Request Data Packet #20343
Server: Transmit Date Packet #20343 then wait for Client to say OK or Retransmit.
DONE
The FEC/UDP form would look like this:
Client: Request Data FILE
Server: Transmit FEC Data Packet #00001
Server: Transmit FEC Data Packet #00002
...
Server: Transmit FEC Data Packet #20343
Client: OK...I got it. Stop Transmitting.
DONE
There is no per-packet dialog between server and client. This removes network latency from the transfer equation. Note that FEC over UDP does require redundant information to be transmitted, so there is no free lunch here, but it is certainly likely to be faster than any TCP/IP implementation.
Oh yeah, and you can download our completely patent-free and open source FEC library from here and build your own Multicast or UDP based download system very quickly (provided you get the flow control right :)
--
Justin Chapweske, Onion Networks
For those of you who don't know it, this stuff is based on some very serious research performed at the University of California in Berkeley (yes, the same place that spouted the famous BSD system) together with Digital Systems research center in Palo Alto. It was published at one of most well-renowned networking conferences, SIGCOMM, in 1998. Here is a link which provides not only the paper, but also slides from the presentation.
The digital fountain approach is not a way to transmit information without transmitting it as the brurb suggests. Rather, it is an ingenious way of using forward error correction (so-called erasure codes) and broadcast (or multicast for that matter) to distribute data to a large amount of receivers.
In short, each data packet includes enough reduntant information to allow a receiver that has lost a few packets to get back in sync after receiving a number of the broadcasted packets. This way, the sender does not need to do any retransmissions; losses are repaired by the new packets that is sent out.
One place where this kind of technique could be used would be when a new, large, software package such as KDE, GNOME, or the Linux kernel, is to be distributed to a large number of receivers. The sender would just send data in a fixed rate and the receivers would just have to "tune in" to the data stream. After some time, the whole package is received. No more spikes in bandwidth consumption and no more slashdot effects.
Multicast is congestion friendly in that it can inherently seriously reduce bandwidth consumption, but it's obviously not congestion adaptive. I think the easiest (and probably best) way to introduce congestion control in a multicast is to have multiple streams at different rates, e.g., you have five simultaneous multicast webcasts of a Victoria Secret show, and folks can join the mulitcast group with the video quality that best suits the bandwidth and congestion on their pipes. This idea works very well for the Digital Fountain-style software distribution: rather than having a server serving the same stream at 10 different rates, you can have 10 servers streaming their own unsynchronized Tornado encodings, and clients can subscribe to however many their pipes can support. With 10 streams of data coming at you, you can reconstruct the original data ~10 times as fast.
OK folks, here is the "real deal."
Digital Fountain's core technology is called "meta-content (tm)". The meta-content engine produces packets based on the original content, such that if the receiver receives enough packets (just slightly more than the size of the original content), the original content can be recreated. The neat part is that it doesn't matter which meta-content packets you get. If you need to receive 10 packets, you can get 5, miss 5, get another 5, and it works. Or you can get 1, miss 10, get 9, and it works as well. As long as you receive some 10 packets from the "fountain," you can recreate the original content.
Why is this cool? Several reasons. Digital Fountain claims that TCP connections with RTT of 200ms and 2% packet loss have a bandwidth limitation of 300kbps, no matter how fast the actual transport channel is. So you just go to town to full bandwidth with UDP to use up the entire channel, and use Digital Fountain technology so it doesn't matter which 2% of packets get lost, just as long as you transmit enough packets to make up for the packet loss.
OK, why else is this cool? Imagine a Digital Fountain continuously transmitting meta-data on a multicast address. If you want to receive a file, just listen to the multicast address. It doesn't matter when you start listening, just as long as you listen for enough packets to recreate the original file. Multicast file distribution.
Interestingly enough, Digital Fountain has also pioneered multicast on-demand streaming, but the real secret sauce there is something besides meta-content, but meta-content makes it easier.
As some people have mentioned, you can use UDP with FEC to achieve some error correction. But meta-content can handle long burst errors, whereas FEC is only appropriate for short, random errors. You can literally unplug the ethernet, wait a while, and plug it back in, and you're still good to go with Digital Fountain, as long as you listen long enough.
I should mention, DF has something called "Fair Layered Increase Decrease Protocol," or FLID, to keep their UDP burst from blowing away other TCP traffic on the network.
For more information on the basic Digital Fountain technology, see: A Digital Fountain Approach to Reliable Distribution of Bulk Data.
The concept of "sending equations" instead of data is extremely well-known. It's called Forward Error Correction (FEC). FEC is a very simple idea: take the source data and encode it with parity data so that you can reconstruct the original message from any N chunks of it. One form of FEC that even your stereo components might already do is Reed-Solomon encoding; you can look this up in CS textbooks. If you Google for "Luigi Rizzo Vandermonde", you'll find a fast, free C library for FEC that you can use in your own applications.
Digital Fountain was started by Mike Luby, who is something of a luminary in information theory/cryptography. The kernel of their company's IP is "tornado codes", an FEC codec that is leaner and faster than competing codecs. The basis for their protocols, last time I checked, is FLID/DL and RLC. These protocols set up multiple channels (or "sources" if you must), each transmitting random chunks of FEC-encoded files.
The drawbacks to FEC are that it can take a long time to encode data for transfer, which makes FEC hard for some real-time applications like mail, and that the amount of data transferred is going to be some percentage greater than the original file (owing to parity information). But the drawback to FEC file transfers protocols is much more significant: they aren't TCP-friendly.
The whole Internet depends on protocols that have built-in congestion responses that mimic those of TCP. Protocols that don't either starve TCP flows, or are starved by them. Protocols with no real congestion response at all rapidly destabilize Internet links by consuming all available resources. Digital Fountain originally targeted multicast media transfer. Congestion avoidance in multicast schemes is still an open research question. Does this protocol really scale?
More to the point, what's the benefit? There's obvious payoff for FEC in multicast, where backtraffic from ACKs and NAKs quickly overwhelms the group and kills performance. But in unicast-world, where we will all be living for the next decade, TCP and TCP-friendly forward-reliable protocols like SCTP already provide good performance.
Slow news week at EETimes I guess. Or Digital Fountain just hired a PR firm.
Yup, reading a few answers here i'm already reading up on FEC (why didn't the EETimes mention this?). The nifty thing about this is, that it's also a nice way to store information in a distributed way (think freenet, gnutella, ...) as far as i understand it. This opens a whole new perspective on the whole P2P theme, since a piece of information wouldn't be stored on one host alone, and also because of the implied redundancy, meaning that the information would still survive in that network until a critical number of hosts would be disconnected. Also netload would be distributed on the sending end, opening some interesting ways for congestion control.
"By the way if anyone here is in advertising or marketing... kill yourself." -- Bill Hicks
That company that was giving out the "Open Source cola" at all the shows last year does something to the effect of "Swarming" for data.
c hn ology.shtml
Read here
http://www.opencola.com/products/4_swarmcast/te
Send the following 4 packets (where # represents XOR):
A#B
B#C
C
A
Note that ANY three of the four packets can be used to recontruct A, B and C! You just have to XOR them appropriately. It is a bit like solving a linear equation. I haven't tried to extend it to more packets, but I will fiddle with it more tonight.
Somebody has already posted some example.
x + y = 4
x + 0y = 4
2x + y = 8
0x + y = 0
You can take any two of these equations to be able
to extract the solution x = 4, y = 0.
No mention of UDP in the article.
No mention of distributed data in the article.
No mention of compression in the article.
Hmm, perhaps some sheeple*cough*people got lost on the way. Here is the link again. Read it over.
Take a chunk of data, reduce it to an equation. Break equation into symbols. Send. Receive a percentage of symbols. Perform XOR on symbols received. Rebuild equation, solve equation, recreate data. Stop send, stop receive. Thank you for using StarTrek FTP server, goodbye.
As the cost of the boxes are so high, they will probably only be used by backbones. I was hoping this would be a software only solution. The we would really see Digital Convergence. Hell, our processors are fast enough...
Kazaa's file sharing client, also used by MusicCity, combines multiple data sources to maximize the requesting client's use of bandwidth.
Get off my virtual lawn, you damned virtual kids!
I have a GPL implementation at http://rscode.sourceforge.net/
Phil Karn (KA9Q) also has an even better implementation available for download someplace.
I had the idea, along with many other people, of distributed filesystems using FEC encoding. My original idea was to spread files over a large number of anonymous FTP servers, and then "harvest" them later. I also was interested in using FEC for UDP audio streams, back in 1994 or so. Anyway, this is old news, and I would be alarmed if any patents were granted on the idea of using error correction coding to transfer files.
The other side uses rebuilds the lossy data chunk, and from that point, you've reduced the search space needed to find original data, using brute force reverse MD5 hashing.
Ofcourse, you'd need to find the optimal values for the data chunk size, and whatever lossy algorithm you choose... But I have a good feeling this will work pretty well!
Then you'll see people beefing up their computers to increase download speeds... Probably even revive chip sales, and push AMD and Intel to develop faster processors. Maybe nVidia will come out with the DPU - Download Processing Unit. ;-)
Nowhere in the article does it mention UDP. We know michael never reads the articles. So where did UDP come from? Is Wolfger a DigitalFountain plant? Doesn't look that way, but it's possible.
eDonky2000 does indeed grab from many sources at one time. There is a nice linux client for it as well. The windows client has more fancy graphics, but eDonkey's client is lightyears ahead of kza
If I am not mistaken, they are using FECs to transmit data to get over potential latencies incurred by waiting for TCP ACKs and packet ordering. In this way they worry less about dropped packets since any of the FEC packets can help reconstruct lost bits. In addition, if you kick off transfers from multiple sources, you never have to worry about receiving packets in order, etc...
Related techniques: Swarmcast, Typhoon, rmt, Fcast, mgpm, onionnetworks
Michael Luby and Amin Shokrollahi are CTO and Chief Scientist of Digital Fountain. They are a couple genuine experts on FEC (foward error correction). They have published academic papers on this topic. While at Berkeley's International Computer Science Institute, Processor Luby wrote "Benchmark Comparisons of Erasure Codes" (http://www.icsi.berkeley.edu/~luby ), and Accessing Multiple Mirror Sites in Parallel: Using Tornado Codes to Speed Up Downloads", "A Digital Fountain Approach to Reliable Data Distribution of Bulk Data" (a slideshow pitch - these last two are on digitalfountain.com/technology/library/papers ). Luby also wrote "The Use of Forward Error Correction in Reliable Multicast" (an Internet Engineering Task Force draft).
See also "Fcast multicast file distribution: Tune in, download, and drop out" from Jim Gemmell and Jim Gray of Microsoft, published in Dr. Dobbs.
Professor Luigi Rizzo from Universita a Pisa (poke around http://www.iet.unipi.it/~luigi )wrote a whole bunch of papers on Vandermonde matrix codes, including a downloadable sample program. Rizzo's work is the guts of several open-source FEC projects (most of which seem to have dried up).
All three of these guys (Luby, Rizzo, Gemmell) co-wrote "Asynchronous Layered Coding: A massively scalable reliable content delivery protocol" (another IETF draft from 7/20/2001).
My opinion is the Luby et al have improved Rizzo's FEC techniques by application of a great deal of mathematics. The Digital Fountain "LT" (Luby Transform) codes are (modest?) improvements on Tornado Codes. The Tornado Codes require less CPU than Rizzo's Vandermonde codes for gigantic erasure-code block sizes. But so what? I don't know what's so wrong with 1-k packet sizes. If the much simpler Reed-Soloman math serves well for modest block sizes, why not use modest block sizes? Complexity matters! Why write complicated code unless you really need something it alone can do? A professor may create a more optimal solution, but there are lots of examples of simple approaches that are more than good enough.
I do believe that FEC provides benefits far beyond what can be done with ftp. The issue of ack-latency and sliding window sizes is completely eliminated. You may transmit 50-300% more bytes to get the content, but at full network speed every time! And if you are transmitting the file to multiple receivers, they can join a multicast group and get the same stream without concern with where in the content they begin. As long as they get a certain fraction of the transmission, they can compute the original content. This means that tons of "dropped packets" and "data loss" can be tolerated without concern for data integrity. Specific data relating content expansion (50%? 200%?) vs data loss (bit error rate, correlated / uncorrelated packet loss), and CPU consumed by the algorithm **for code blocks of, say 100k-500k** is something I'm still trying to locate. Several of the big players try to obscure these comparisons for commercial reasons, and I don't blame them. They've spent years developing their algorithms. On the other hand, if their approaches are really much better than the simpler techniques, they have not convincingly demonstrated it. Or is there some advantage in choosing erasure code blocks of many megabytes? Why not just use Unix "split" on the file before encoding? Maybe that's what some of these other guys actually do, and maybe it works just fine.
The algorithm complexity hierarchy looks like:
1) XOR
2) Vandermonde-based RSE (Reed Soloman Erasure)
3) Cauchy-based RSE
4) Tornado
5) LT
For example, consider the transfer of a 1 GB file with an average Internet packet loss rate (2%) and global average RTT (just over 200 msec). For this case TCP has an inherent bandwidth limitation of 300 Kbps regardless of link speeds and thus will take more than 7 hours to transfer the file. A Digital Fountain server sending Meta-Content allows almost complete bandwidth utilization. With Digital Fountain, on a fully utilized 1.5 Mbps (T1) line the transfer of the 1 GB file will take about 1.5 hours and on a fully utilized 45 Mbps (T3) line the transfer time will be a little over 3 minutes.
I was a Skeptic, but I'm now that I've read the Digital Fountain white papers: Meta-Content Technology White Paper and TCP White Paper, I'm a True Believer.
I don't pretend to understand all the details, but the technology is based on the Luby transform which was invented by the company's founder. Essentially the content is broken into segments which are then randomly XORed to produce the metacontent. This provides redundancy since each segment of metacontent contains information from several of the original segments. Also the metacontent segments do not require sequential transmission.
Called Accelerator Pro, the cheap (Read: Free) version will download the same file from 8 different sites to speed things up. Works great. My slow-ass T1 (Sigh, only 160K/Second downloads) is too slow when I'm moving my (cough) 500+ meg 'recreational entertainment' files to and from 'casual onlookers' isn't enough for me anymore.
(LOL)
"It's not stealing if you don't get caught!"
http://planetanalog.com/news/OEG20010413S0034
The whole problem with Microsoft is simply they want people to spend more and more on THEM. Yah, just about every business or corporation is driven by consumer spending, but when they go to the lengths to eliminate competition and restrict consumer privileges it gets totally out of hand. Restricting consumer privileges is what this whole issue is about, right? Microsoft wants consumers to spend more on their products by eliminating the option for consumers to spend on a competing product; illegal and unorthodox business practices in the US the last time I checked. Considering Microsoft has made a clone to just about every popular software product, this is obvious (I even hear in XP they threw out Java and are replacing it with C#). Like Microsoft, the music industry too would rather restrict peoples' use of mp3s--ethically or not--and see them buying CDs and such. Ultimately, Microsoft is a monopoly bent on eliminating any competition in order to increase its own revenue, it's using unfair and illegal business practices, and the computer industry would be better if there was an equal competitor.
That was a simpler file transfer similar to FTP, but based on UDP for faster file transfert.
In it's time most of the sites using it where for trading copyrighted software (warez).
After 1995, I've not seen much of FSP.
Strikes me as kind of odd that they need to make a piece of hardware to do this, especially when they say that it "relies instead on the computational power of standard PC processors" and "The translation is straightforward enough to be handled by a Pentium III processor" ... so why not just sell the software to do this? I suppose then they wouldn't get $70,000 a copy for it.
.. according to their website
the "box" they keep referring to in the article is a special server (1.5Gbps and 5 or 85 GB of storage) with their software on it. And you don't need two of these boxes for a complete connection. The server comes with a Fountain Client program to receive transfers. And they sell an SDK to make your own clients as well.
...
ok, I think I'm answering my own question (partially)
seems like they should've mentioned some of this in the article
Usenet files are often distributed with a collection of 'par files'. These files consist of any number of files with an index-like file (*.PAR), and datafiles (*.P01, .P02, etc).
I'm not nearly savvy enough in this area to comment on internals.
Anyway, basically you can replace any number of files smaller than or equal to the number of PAR files. So if you get PAR files P01 through P04, you can replace up to 4 files that have been damaged.
This is cool stuff, since it drastically reduces terminally incomplete large binaries on Usenet servers. Which, of course, I.. uhm... have no part of, and stuff.
Check out an open source client of this thing: http://parchive.sourceforge.net/
--
(does the term Reed-Solomon ring a bell?)
"FedEx is a hell of a lot more reliable than FTP when you're running 20 Mbytes," said Charlie Oppenheimer, vice president of marketing at Digital Fountain.
Moron. In the banking industry we've been doing FTP transfers of several hundred megabytes every night for years on 486 processors. It's reliable as all hell and fast too.
If you are concerned about bandwidth, compress the data first. That's pretty much what they are doing with their "algorithms" anyway.
It's cool, they transmit packets that contain not only internal error correction information, but information about packets before and after (in decreasing degrees per level of checkbits). By watching the stream for long enough, you can get enough extra information to correct any string of bits (at the expense of decoder memory). This is why they were talking about XOR in the article. There's a lot of stuff about sparse bipartite graphs and modeling the required corrrection code transmission rates with differntial equations in the Tornado codes paper, so this isn't Mickey Mouse technology.
Black holes are where the Matrix raised SIGFPE
This was all just a clever ploy to wring 8 karma points out of one post, wasnt it?
:)
Guess I'll have to break out my red M2 pen.
--
Posting anonymous to protect the innocent (and my karma)
Is it just me or are all EE Times articles that fluffy? Do I get static cling protection with that?
Morpheus allows for downloads from simultaneous sources.
In fact, I've seen my system upload files that I was still downloading!
I have no problem with your religion until you decide it's reason to deprive others of the truth.
Erasure codes create 'shares' that are smaller than the original data. The ideal erasure code creates shares that are just the size of the original data divided by the treshold value. They also do not necessarily have the property that no information is leaked when you don't have enough shares.
Michael Rabin's Information Dispersal Algorithm is such an ideal erasure code. It's just too slow when you create a large number of shares.
As an aside: by combining secret sharing, erasure codes, and an encryption algorithm you can build a hybrid secret sharing scheme that generates small shares and is computationally secure.
I'm surprised nobody's mentioned the donkey which uses MFTP similar to GetRight.
It was faster than TCP based stuff, but it was a biatch to manage flow control and congestion control.
When you remove all the marketing talk from that article and the company website, what remains is essentially a protocol which:
a) Uses UDP instead of TCP and implements its own proprietary flow control by sending the data multiple times
b) Has no streaming capabilities whatsoever.
Also, it's pretty evident that no matter how nifty their algorithm is, the data which needs to be transmitted before the file can be reconstructed needs to be at least as big as the size of the original file. Quite probably a lot more because of redundancy since the receiver can't acknowledge data.
I second the originals' posters feelings about the protocol...
They then find the power of 2 that is just larger than that. That's Y which is equal to 2 ^ N
They then take a ruler, 1 foot long, and record on it two pieces of information:
Insert ruler into padded envelope, and mail...
Or was this just from some old science fiction story???
If you're not part of the solution, you're part of the precipitate.
Or am I completely off my rocker here?
Endless arguments over trivial contradictions in books written by ignorant savages to explain thunder in the dark.
I asked this before, but I think I was unclear.
They say that it doens't matter which packets are received, as long as there are enough of them.
What if you need to get 10 packets to transfer a file, but only 1 out of each 10 sent get through.. so you receive 10 identical packets. Can you rebuild the original file from 10 identical packets?
If you can't, then they how can they claim that they don't care which packets get through.
If they can, then why would they bother sending more than one packet?
"A new file transfer protocol talked about in EE Times gets data from one place to another without actually transmitting the data..."
A bulk of 100,000,000 keyboard trained monkeys.
Then obtaining the original file is just a matter of time.
It works when the following criteria exists
(1) You are not already maxing out your connection.
(2) The server is limiting your bandwidth
(happens if it load balances or just limits each connection)
(3) (or as opposed to #2) there are more than one server in their server pool.
What the program does is set an offset and connect to the same server (assuming there is only one web server to request from) or from multiple servers, and retrieve different portions of the file.
Thus, if you were not at your max bandwidth downloading normally, you will get closer to it. Simple math. If there are 100 users on a server that can support 100Mb/s, you are getting 1Mb/s. If you spawn 10 connections, you get 9Mb/s (roughly). IF you are at your max bandwidth though, or the server you are connecting to is sending as fast as possible, you are actually increasing the amount of time it will take to download the file.
Also, these programs (to date, the ones we have experienced on our servers) do not take into account a single web server that is not limiting bandwidth, and in not doing so, consume the resources of multiple users for single files. Too many people using them, and it becomes a web administrators' nightmare. While on a single page, 1-4 connections will generally serve a client's requests, you now have sometimes many times that for a single file.
Additionally, as well as server resources being comsumed as much as 20 times higher than normal for a single user, it also means that (on servers that balance speed per connection) your other users are suffering slower downloads due to it.
We will soon be utilizing some custom scripts on our servers to prevent such actions from occurring (if a connection to a file exists, they will refuse future connections until that connection completes, or sever the original).
- Robert
WebMaster:
BinFeeds
XXX Thumbnailed Image Newsgroups but
Lately in the binaries newsgroups, there has been increasing use of .PAR files. If a large number of .RAR or .ACE files are downloaded but some are incomplete or corrupt, just so long as you have an equal number of .PAR files as there are missing/corrupt files, the original data can be reconstructed, no matter which of the original files are missing. An explanation and a PAR file reconstruction program can be found at:
http://www.disc-chord.com/smartpar/
But where to get the mirror sites from? For example if a new Star Wars trailer hits the net?
An interesting idea here is to distribute the server workload onto the clients downwards:
Swarmcast is such a protocol. It uses forward error correction as well, and I believe some of the guys whose names were mentioned in this discussion, are involved in this as well.
Any expert who can comment on this one?
/.
Well, RECENTLY, Veronica was mouse-driven.
Of course, if you weren't a young pup still wet behind the ears, you'd remember that Archie in _Archie_Comics_ had that checker-board thingy on the sides of his head, and Veronica didn't. And I've heard that Archie was latently homosexual, and Veronica wasn't (that's why he was always chasing the unattainable Veronica instead of scoring with hot-to-trot Betty).
I'm sure Bhil will correct me if I'm wrong.
--Charlie
Bittorrent
does that! It's not really trying to be a napster or gnutella but a way to allow people to host a high volume website without having a lot of bandwidth. It works seamlessly with mozilla and IE. It's also quite fast unlike the anonymous p2p networks.
For all that at not a mention of this link from the Digital Fountain site itself?
r y/ standards.htm
http://www.digitalfountain.com/technology/libra
As for the current "new" method of decreasing download speed... it seems to me it's called file compression. Isnt that what gzip on a server does? Compress the file using a "mathematical equation", and then the client browser decompresses it on their end using "the computational power of standard PC processors" to do it? And as with a zipped or gzipped file, technically, none of the data is ever transmitted. Instead, a mathematical algorithm is used to compress and decompress saving transmit time.
Sounds to me like a fancy new name for a possibly new method of compressing data.
Of course, as the article on their website is lacking in technical information, who knows? But that's where my money would be. If not, I'd say it's a combination of that, plus commonly sent compressed data shortcuts... what I mean by that is, they could use something similar to a macro on a word processor. They could define small "macro" tags that would define certain byte sequences that they determined to frequently appear in a file, and send that "macro" along with the other compressed data. Of course, it's just another form of compression if they implement it that way as well...
- Robert
WebMaster:
BinFeeds
XXX Thumbnailed Image Newsgroups but
idiot
This was up on kuro5hin months ago. The same type of discussion: excitement by the uninformed, background from the CS people. In the end I don't think it made the section headlines, let alone the whole site.
Client: Requesting 'kword'. .5Mb.
Server: Kword binary: 1.2Mb; Kword source
Sending source.
Client: Source received. Unpacking. Compiling.
Done.
on average, the digit number would be the same length as the actual code. Hence, this would only save space on half the files. If you also sent the end digit, then it would almost never save space.
"The question of whether a computer can think is no more interesting than that of whether a submarine can swim" -EWD
What's amazing is an article this bad from a respected technical magazine. EE's can't handle the concept of FEC? Well maybe, anyway, most of the readers here have probably spent double the time on this than writer.
I'd guess they have to send about 2x as much data as the original for this to work. Maybe they're applying a compressor (like gzip) up front, and taking credit for that.
As others have pointed out, there are lots of other schemes in this class. Bear in mind that this is a protocol for broadcast and multicast, not general file transfer.
Basically it is non-destructive version on mp3ing music.
You convert a digital document into a mathematical function which when applied retrieves the elements one by one composing the document.
Mp3 do the same but in addition, they remove what you don't hear to make the mathematical function easier to produce (actually it is discreet values for a Fourier equation that is calculated, but the idea is the same).
Now, as to how they can charge so much, I have no clue. I am sure a skilled university student could do the same... unless there is a new 'patent protected' sticker on the package.
Artaxerxes
I played around with something called File Pool/Tear Drop or something like that. But the real daddy of such systems in Publius. Publius diributes files across sets of servers with redundency and encryption. It is possible for the owner of a document to restrict access and prevent deletion of the file, even bu him/her self. It is a very cool system. It would be nice to see it become more standardized and utilized.
:T:R:A:N:S:
Read the article. They're just using XOR. It's like using RAID 4 checksum blocks, except they're doing it on a file transfer instead of on disk blocks.
(I'm oversimplifying a bit, but really their approach doesn't sound all that special.)
--JoeProgram Intellivision!
This could be true genius or mediocre junk depending on the details. That article wasn't clear: Does it have to be N specific packets (in any order) or can it be any N of the transmitted packets?
N specific packets is, well, nothing special. The idea of using negative acknowledgements instead of positive acknowledgements and retransmitting only the missing pieces is nothing new. It was used extensively in pre-Internet days on dedicated connections. Ever heard of Z-Modem? Its been avoided on the Internet because it makes the congestion control problem very difficult. Translating it into symbols is really just saying that they also compress the file first. Whoop de doo.
On the other hand, if it can be ANY set of N of the transmitted packets, well, that's downright incredible. The applications for such a technique are boundless... Everything from finally making multicast viable and desirable to latency and congestion indifferent file transfers to ultra-reliable offline storage.
How would you like a web server that can serve a T3's worth of clients off of a T1 and do it in such a way that the smart web browser can pre-cache data from the server in anticipation of the reader's next click, realtime adaptive based on the documents currently in multicast transmission to somebody else? Oh yeah, the web server can be on the Moon and respond to you as fast as if it was across the street. Genius.
So which is it? Any set of N or a specific set?
Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
There was a time that I might be able to compare Freenet to such a scheme. However, Freenet has become so complicated, even some of the developers don't seem to fully understand how it works :)
But I can attest to the fact that it does work. But its no blazing fast network. Rob.
get a life. let me know how it goes too...I may decide on getting one someday....
...as a suitable high-level system for those concerned about data corruption in file transfer? (The P2P system Electronic Donkey 2000 also incorporates a great deal of high-level error checking -- discarding and retransmitting file blocks whose checksums fail and even those which were corrupted on disk since the beginning of the transfer in the event of a restarted transfer).
Called compression?
A company located at www.tsbn.com has been doing this since at least 1996. Their IP is filed back past then anyway. They claim to do it all in software without devices. Guys from some of the companies mentioned above have stock in TSBN.. interesting.
There's a difference between "stick with what we know works" and "Stick with the RFCs." RFCs are dynamic. The TCP and UDP ones have both gone through several revisions. The difference is if you stick with the RFCs you have a bunch of engineers from a bunch of different companies, schools, etc. look at your protocol and make sure it can be implemented from the spec. They also try to balance out its effect on internet traffic as a whole.
UDP is a perfectly legitimate method of moving data, especially if you can tolerate loss. It has been the general position of the IETF for years that you shouldn't reimplement retransmission--that's TCPs job. However, from descriptions it sounds more like this is a smart form of connection blasting, which isn't reinventing the wheel but can be hard on networks.
Speaking of that, it isn't the network that breaks because of UDP--it's your program. If you start sending large amounts of UDP data and chewing up the bandwith on my router, according to the spec I can start not even attempting to process the packets. This is the problem with blasting protocls--by taking up more bandwith than TCP for the same data transfer rate they invite administrative blockage.
Checkout Bandwiz(www.bandwiz.com) software based products, it seems they have far reaching capabilities than Digital Fountain.
I believe open cola's swarm cast was the info you were looking for. I remember it from a story on /. a while back, anyway, heres the link ;
http://www.opencola.com/products/4_swarmcast/
Enjoy,l8r.
They are NOT talking about downloading from multiple servers simultaneously (although this protocol would allow that to be easily done). What they are talking about is a method of transmitting data that doesn't require it's integrity to be verified. The recieving end doesn't need to keep saying "got the packet...got the packet", but rather sit there recieving until it has everything. Basically it's UDP with built in integrity check that requires no additional communication.
----
All of whose base are belong to the what-now?
This concept seems to be the same as the PAR file concept used often in USENET binaries postings. PAR files are files used to reconstruct split files. If you are missing x files from a set you can reconstruct the files if you have any x PAR files. This is usefull as it allows 1 file to replace any missing file in a set. This article seems to be appling a similar method to file transfers. More information and links are avilible from the popular windows tool for PAR files Smartpar. http://www.disc-chord.com/smartpar/index.html
WORED is a very interesting misspelling, from the context I expect you meant to type 'worked' but any of the following might also be appropriate:
Worked
Woried
Whored
Wired
Warred
Why does this remind me of that company who claimed they could compress a 1MB image down to 1 byte? Seems too good to be true.
This has nothing to do with compression or cryptography. Basically these guys are using Forward Error Correction (FEC) which amounts to adding enough redundancy to the bitstream that the message can be recovered at the other end even if a certain number of bits are lost along the way. They are assuming that the extra bits required for the redundancy is less than the extra "back-and-forth" bits required for FTP over TCP. If such is the case, then you get better throughput.
FEC is widely used in transmission media like cell phones and cable modems. These channels regularly introduce all kinds of distortion and interference. It's the use of FEC that allows you to still hear conversations despite the interference.
There are basically two kinds of FEC -- block codes and convolutional codes. Block codes are just that. They take in a block of bits (say N) and spit out (N+K) bits. The K is your added redundancy more or less. Convolutional codes operate like finite state machines. They continually take in a stream of bits and spit out more bits at a higher rate. Tornado codes, which these guys use, are (I believe) a type of block code. Most digital cell phones use a convolutional code. In fact, the founder of Qualcomm, Andrew Viterbi, is the "inventor" of the mechanism by which convolutional codes are decoded.
Hope this helps.
What's the big deal? Direct connections did this on BBS's a long time ago. Simply, streaming all the data without flow control (Xmodem and early YModem required ACK/NAK), and let the client request the packets that it is missing leisurely. ZModem was the first to allow out of order delivery, from what I recall, and it revolutionized transfers with maximized bandwidth consumption.
The only thing this particular implementation allows is connecting at an arbitrary time and listening to a continuous loop of packets until you get them all. ZModem could easily be modified to do exactly this, except with checksum data per packet rather than XORing chunks of packets or using symbolic representations. I'm not read up on FEC, but if you're transmitting already compressed data (near the bit distribution of entropy), no alternate representation is advantageous than sending the raw data.
Any connection between your reality and mine is purely coincidental.
This sounds like enhancing the good old FSP protocol with some forward error correction. No big deal, right? :)
More info at:
http://planetanalog.com/news/OEG20010413S0034
What they have done is that they have created a scheme where a server sends the SAME stream (broken into many smaller ones) to multiple clients via multicast.
Even if you lose a packet you don't ask for retransmission but you continue listening because of Forward Error Correction in the stream (lot's of math in here). There is no control information going back and forth. Their client just listens and never sends anything except when he is done.
This essentially permits to have a single server for 1000s of clients (they talk at the article above about 10,000 VHS-quality streams at 300 kbits/s).
This is for real. I've read a lot of their papers at researchindex. They mean business and they have a viable product. To be able to send video(large files) to 1000s of clients at the same time is above the abilities of akamai too.
kanenas
and lossless file distribution.
h tm
http://research.microsoft.com/barc/mbone/fcast.
UDP drops packets., UDP is unreliable and other stuff...
It's the network- and the IP layer which drops the packets, they don't mind it it's IP/IPX/Decnet or TCP/ICMP/UDP.
The difference between TCP and UDP is that TCP is session oriented (i.e. the application layer gets the data in a stream instead of per packet and doesn't have to worry about making sure they're in the right order, missing packets et al) and that UDP is not session oriented (i.e. the application layer gets the data in order of arrival, it has to worry about the missing packets, the right sequence).
For the rest, they are treated the same on the network and IP layer, it's only who has the responsibility regarding error-correction and sequencing.
bash$
DoH! Shows me for not proofreading the darned post. Worked.
-- I'm the root of all that's evil, but you can call me cookie..
Actually, if you think about it, this kind of approach would work pretty well for an encrypted/distributed sharing network like Freenet, where individual nodes of the may or may not be available. You can take all of the pieces of the given file & spew them to lots of different parts of the network, then a client can just go around asking different nodes in the network for any pieces of that file until the client has collected enough of the pieces to form the whole.
Being a sourceforge project and being mentioned on Slashdot before this was probably what Michael was thinking about.
It sounds kind of like Stream Theory that you're referring to. Getright doesn't use UDP afaik and has nothing in particular to do with game demos.
why do people have to take a technology which is perfectly reasonable and useful within a certain problem domain, and turn it into snake oil?
I read that whole article, just praying I would see the name "Shannon" or the word "congestion" in there, or even TNSTAFL, but nooooo.
What these guys are doing is absolutely wonderful when
- the bandwidth-delay product is greater than the size of the data to be transferred
- upstream bandwidth is far more expensive than downstream bandwidth
- the receiver is stealthed
- the communications link is half-duplex.
- the receiver has cheap, fast*, temporary storage available. (faster than the network, anyway).
- occult knowledge is being transmitted, and the parties wish to have some deniability
What they are doing is absolutely horrible when the network links are shared with other people -- unless they have some other means of congestion control.
That's not unreasonable. Couldn't somebody just say as much?
somebody forgot to tell these yokels that they fixed this problem in tcp years ago.
i wish them luck in their ipo
nobody
parturiunt montes, nascetur ridiculus mus
I had this idea not long ago -- FEC should be used for RAID! It would be cool to have an array of 50 drives be able to tolerate the loss of any 5 with no loss of data.
-B
Not that this wasn't entirely predictable.
Loss #1: The comparason to "FTP".
Had they said 'HTTP' people would realize, "Oh yea, I download stuff off the web all the time, works fine here. Why should I spend 150 grand?" It's a pure PR trick. They're talking about ACK delays with high-latency TCP links. The problem is better solved with a modern TCP stack at both ends (I.E. put an active TCP proxy at both ends, or even at the sending end, and your traffic flows much better)
Loss #2: "we don't require data to be acknowledged"
... translates to "If your machine crashes, we'll just keep sending UDP packets forever. So it _DOES_ need to be acknowledged, they just don't admit it because it sounds cooler.
Loss #3:"Transforms the data into a recepie..."
... much the same way gzip does. Or perhaps they're talking more like raid5 equasions on your data. Either way, they're spending a LOT of CPU power on a non-solution.
Loss #4: Lack of feedback on net conditions along your path leads to overall slower delivery.
Yes, amazing as it may seem sending data faster means it gets there slower. The net is a series of leaky pipes... build up too much pressure and packets escape (get dropped) Simply blasting UDP packets at the destination tends to waste a LOT of bandwidth, and more then likely will take longer then having them simply hit a URL and download it.
Loss #5: michael, for posting this without having any clue.
News for Nerds, stuff that matters. One tends to wish the people POSTING IT actually had any idea what these strange words (like FTP, UDP, TCP) mean.
--Dan
Very similar to hoffman encoding...
Compile a table of say... the top 2^16 1k chunks(this can be arbitrary) of data that's flowing through the net by observing the traffic flowing though the backbone. Now distribute this table (65536k in size) to everybody.. heck make it come default with Windows and Linux or something. When a person is compressing a file, the compression program will refer to this table and whenever the program comes across a 1k chunk of data in the file that is a 'hit', replace it with a 16 bit value (which is preassigned to that chunk of data) + an escape sequence. For all other data that's not found in the table, perform regular compression.
Now since this table of 65536 (this size could be arbitrary powers of 2, of course, depending on how practical the size of the final table becomes) entries are very common in net traffic, it is very likely that your file contains many 'hits', which will considerably reduce your file size (i.e. 1024 bytes reduced to 16 bits + a few more bits).
You can even have many different tables of this, one for mp3 compression, one for text files, and so on, and just have the compression program analyze your file before it selects a table, and then append a table number in front of the resulting compressed file for decoding.
So it's actually sending significantly MORE data to acheive some tolerance of dropped packets. And how is this a win over just sending the same packets multiple times?
This sounds like a problem for congestion control - UDP apps frequently don't have TCP-friendly congestion control, so they can get an unfair share of the network's bandwidth, affecting other applications that use TCP or TCP-friendly UDP protocols. FLID sounds like their form of congestion control, but if they are doing better than TCP it's quite likely it is more aggressive in its network impact. However, handling long burst errors sounds like a useful thing - of course, this can mask interesting errors in network configuration, e.g. lack of FEC on a wireless/satellite link, or lack of Frame Relay traffic shaping on a router with a FR link (this happened to a customer yesterday...).
Cutting through the vague description of this 'proprietary algorithm', it could be nothing more than an an application-level use of a block-oriented forward-error-correction code (the "+Math" part).........send a stream of bytes (the original data for a systematic code, some polynomial transform of it for a non-systematic code; this is the "UDP" part) plus the parity bytes ad nauseum until the receiver gets enough parity bytes to get a valid decode of the data, at which point the receiver sends back one ACK.........it ain't rocket science, but it could be a neat trick. You've got to have some sequence information (ya gotta know where each byte goes in the polynomial) but you can get them out of sequnce, or lose some entirely. Holes in the sequence, whether data or parity bytes, get patched by the block-code when you've received enough parity bytes (coding theory 101). The internet MDPv2 protocol uses block codes to reduce the number of ACKs (and redundant repetitions of the same errored block) in a similar manner (though with it's support for reliable multicast, it's something of the converse of the examples others have given in this thread)
Regarding Open solutions.......the algorithms, information-correcting code, and source code for the Multicast Dissemination Protocol (MDPv2) are all available on the net., with versions for WINTEL, LINUX, and other UNIX flavors..........if it's not what's done here, you could adapt the packet structures and source code for large point-to-point transfers with reduced ACK requirements; a good project to put on Source Forge.
I agree with the earlier comment that the only thing possibly new about the parent story here is the marketing hype. And for all that I like MDPv2 and its efficiency on the INTERNET..it's inspired by on an old IEEE Communications Theory Section paper from the '70s about reliable multicast in SATCOM systems....... So maybe the lesson is that some good ideas keep coming back in different guises and uses.........
Now this is interesting... My previous comment (parent of this one) was slightly wrong because the solution proposed by this company works differently. They use some FEC method that is better than Reed-Solomon codes, as I discovered later by reading their detailled technical documentation (available in their technology library.)
But I cannot understand why my comment which proposed a different method was rated three times as "Overrated (-1)", while its parent was rated twice as "Interesting (+1)". I do not understand why three different moderators would give exactly the same moderation, especially when the comment was already scored at 0 and the article contains many other comments could have been moderated up or down.
-Raphaël
Well I don't know who might have said that Archie was latently homosexual. If anyone did I suspect it was probably the Rev. Jerry Falwell or some other member of America's Taliban. They seem to see homosexuals peeking out of every closet.
As far as Archie's relationships are concerned I think you can pretty much sum it up with this quote "Veronica sends me and Betty defends me". He's clearly been completely infatuated with Veronica since the 40's. I suspect that her father's complete disapproval of Archie has added the lure of forbidden fruit to her obvious charms. Meanwhile Betty is always ready to rush to his rescue when he's in a jam and comfort him when he's down. It's a lot like the three-way relationship between Johnny Rico, Carmen and Dizzy in Paul Verhoeven's adaptation of "Starship Troopers" but I digress.
Bhil
This reminds me of a 'transform' like mathematical theory called Wavelets that I read a paper on back in the late 80s...
...with the benefit of being secure.
:)
Just sz or rz like in the good ol' dayz
woried
That's worried, you spelling-flame fuckhead.