Mnet FAQ v1.3.4
What is Mnet?
Mnet is a distributed file store.
Ok, so what is a ”distributed file store” then?
A distributed file store is a single, global virtual space into which you can put, and from which you can get, files. It comes with a single global namespace so that there is no conflict over file names.
Why would I want to use Mnet?
You might want to use it to upload and download files. Files uploaded to Mnet stay there even if the publishing user goes offline, so it's a good way to send files to your friends even if you're not online at the same time. See the Advanced section for more info about why you should use Mnet.
What's the difference between Mnet and Freenet?
Mnet and Freenet were originally conceived at about the same time, and without knowledge of one another. They have some similarities and many differences in their current implementation, in their architectures, and in their grand ambitions. One very important difference is that Freenet already implements "application-layer" privacy, which makes it hard for operators of other Freenet nodes to learn for sure what you are doing with your Freenet node. Mnet currently offers no such privacy. There are many other differences in architecture and in future plans.
So, does Mnet offer any privacy to the user?
Yes. And No. This is a hard question to answer because "privacy" isn't binary. It isn't even scalar -- it is a set of overlapping meanings. Mnet does encrypt the files on disk and it encrypts the communications between the nodes, but your IP-number is visible to those that you upload and download to and from so with a little deduction they might be able to figure out what files you download. There is a test going on with something called ”One hop privacy”.
Can you tell me more about ”One hop privacy” please?
The ”one hop privacy” feature is experimental. The idea is to only communicate with a ”trusted” node which relays your messages to the world so that the other nodes only sees the relay's IP and never yours. This would increase the privacy but reduce up- and download speed.
I'm interested, How do I use Mnet?
First go to our Download page. Find the client that suits you and install that. In windows there is an installer that you should just click on and it will take care of the installation for you. When the installation is complete, just double-click on the icon that sais ”Mnet” and you're good to go.
I'm behind a firewall, can I still use Mnet?
Yes you can. Mnet automatically detects this and instructs your node to use a ”relay”. You do not need to open any ports or do anything else. It just works! Read more about this in the advanced section though.
I've started my node but when I search I don't see any files. What's up with that?
There could be a number of reasons. If you're behind a firewall there might not be any relays online for you to use. Another reason might be that there are no ”content trackers” availible. Yet another reason could be that there are no ”block servers” online. To find out what's happening you need to look at the logfile, it should be located in a directory called ”broker”.
Hold on, what's a ”Content tracker”, and what's a ”Block server”?
These are the services that make Mnet function. There are three basic functions. First there's the ”Block server” which is where Mnet stores the files that people upload and download. Then there's the ”Content tracker” which is essentially a search-engine for Mnet. Finally there's the ”Relay server” which acts like a mailbox for machines behind firewalls.
Why should I run any of those services?
First of all it makes you a better person, second it will make you attractive, rich and successful. Ok, not really. By running these services you make Mnet function better. In future releases we will add some sort of micropayment between nodes so that people who run services will be rewarded.
Why does Mnet publish twice the data when I publish a file?
It has something to do with how Mnet functions. Just accept it, or read more about it in the ”Advanced” section.
If I download a website from Mnet, what am I seeing?
These are websites that have been archived and stored in the Mnet filesystem. Hence they are a snapshot of the website at the time they were made, and can't subsequently be updated.
Why would I want to use mnet, part II?
might want to use the components that Mnet provides: a distributed
file store, a self-organizing network, and a flexible
communications system that transparently bypasses firewalls and
What filesystem semantics does Mnet use?
Mnet implements very limited filesystem features: it can be seen as a "Write Once, Read Many" filesystem in that a file, once written, cannot be changed in any way. In addition, the namespace is immutably bound to contents of the files, as names are always equal to the cryptographic hash of the contents. (This namespace has the same properties as Freenet's CHK's -- Content Hash Keys.). These simple semantics are much easier to implement, and much easier to make efficient and secure.
Will Mnet implement more sophisticated filesystem features in the future?
We would really like to implement mutable files, such as those identified by Freenet's SSK's -- Sub-Space Keys.
What's the difference between Mnet and Freenet, part II?
You know, I don't really like answering this question, even though it is a FAQ. Why do you want to know? If it is in order to analyze the different techniques used, then let's talk about routing, erasure coding, NAT-traversal, replication, metadata, privacy, attack-resistance, APIs, programming languages, and so forth. We can write a paper about the issues publish it in an academic journal or conference proceedings, and reference it in this FAQ.
If your question is in order to decide whether you should spend your time using Mnet or using Freenet, then I urge you to try both and report back how they compare. Installing and trying out each one should only take a few minutes. Indeed, I encourage you to continue running both, and to provide feedback to both the Freenet and Mnet teams about how the software behaves.
If your question is in order to decide whether you should spend your
time hacking on Mnet or Freenet, then let's talk! Mnet is coded primarily
in Python, with modules in C and C++, and Freenet is coded primarily in
Java, with Freenet-using applications coded in various languages. Perhaps
if you suggest what specific kind of hacks you are interested in, I could
suggest how well they would fit in with the current Mnet development. There
are several different active development efforts extending Mnet and
integrating it with other projects. The Mnet developers are friendly and
polite, and have been called
Mnet behind a firewall, part II [dura-link]
If You want to bypass your firewall and connect Your node directly without going through a relay, or if You want to run a relay-server, You'll have to open a few ports and modify your broker.conf or node.conf depending on what version of Mnet you're using. In broker.conf or node.conf you'll need to change these:
IP_ADDRESS_OVERRIDE: External IP
TRANSACTION_MANAGER_ANNOUNCED_PORT: Any free port
TRANSACTION_MANAGER_LISTEN_PORT: Any free portThen you'll have to restart your node. How You configure your firewall depends on the type You use. If You use IPFilter then this is one way of doing it.
pass in quick on ed0 proto tcp from any to The_IP_from_broker.conf/32 port = The_port_from_broker.conf flags S keep state keep fragsipnat.conf
rdr ed0 0.0.0.0/0 port The_port_from_broker.conf -> The_IP_from_broker.conf The_port_from_broker.conf
How can I prevent my node from giving out my IP? Can I hide it?
Not completely, no. The ”One hop privacy” mentioned above gives you a chance to set a trusted node and only communicate with that one node. We'll have to get back to you about this question.
What about content transfer hiding?
We'll answer this soon.
Ok, so what about censorship resistance then?
Basically, Mnet's current approach to censorship resistance is based on erasure coding plus replication and content encryption. The files are split up into multiple shares using erasure coding, which is much like RAID in that it adds redundancy to the data so that even if one or more of the shares is destroyed the original file can still be downloaded using the remaining shares. Then these shares are encrypted and stored on nodes called "Block Servers". The Block Servers cannot, in general, decrypt the shares in order to determine the contents of the original file.
Why does Mnet publish twice the data when I publish a file, part II?
Mnet uses somthing called erasure codes which allow us to break an encoded file into several parts, and then to recreate the file from a subset of those parts. (For example we might break an encoded file into 24 parts where you only need 12 of those parts to recreate the original file.) For a more complete overview look at the doc/filesystem_overview. Basically, this is some mathmatical magic, but it doubles the file size, so you have to upload twice as much data to get the added robustness.
Can I limit the amount of bandwidth that Mnet uses?
Yes. Stop your Mnet node, then edit your "broker.conf" file. Add the following lines:
TCP_THROTTLE_OUT: true TCP_MAX_KILOBITS_PER_SECOND_OUT: 128 TCP_THROTTLE_IN: true TCP_MAX_KILOBITS_PER_SECOND_IN: 128Adjust the numbers to taste. The bandwidth throttling algorithm sometimes underestimates and allows too much traffic through, so if you want to be on the safe side, put in a number a bit smaller than your real upper limit.
Oh yeah, then start your Mnet node again.
I think the GUI suck, is there another?
Actually there is. Point your favouite browser to http://localhost:4004 and you can access Mnet through there. If you can't see anything from that link you need to change the configuration of your node to allow access. The value to change is RUN_LOCALHOST_GATEWAY to YES. Shut down your Mnet node, edit the broker.conf file to change that
I want to run Mnet on a remote node, how do I do that?
Just install it the normal way. To access your node you should probably change RUN_LOCALHOST_GATEWAY to ”yes” and change ALLOW_ACCESS_FROM_OUTSIDE_LOCALHOST to ”yes” as well. This will allow anyone who knows about your node to use it just you use it.. Perhaps not what you want.
How do I set up a private Mnet? (For example, just for me and my friends, or for use internally on my own network.)
You need to run a MetaTracker. Here are the steps, in brief. This is new stuff and you may encounter difficulties.
1. Download and build the new version of the source code, v0.7. See the README file from the mnet_new/ CVS module for instructions. (You have to build it yourself from source.)
2. Run it once so that it generates a "node.conf" configuration file. Shut it down. The node.conf file appears in your MNETCONFDIR directory, which defaults to being in your home directory and being named ".mnet".
3. Edit the node.conf file and add the following lines:
METATRACKER: RUN_METATRACKER: true
4. Run it again. This time it is running a MetaTracker in addition to any other services that it is configured to run.
5. Look in the output that it writes out at startup for a line that begins with "MULTI_ROOT_ID_TRACKER_CONTACT_INFO". Copy the entire line into a text file, as a single line, making a 1-line-long text file. This file is called "the bootpage".
6. Make the bootpage available via HTTP (i.e., run an HTTP server and put the bootpage file into the appropriate directory so that it can be fetched via an HTTP GET operation).
7. Now any Mnet node which has the URL to the bootpage in its "BOOTPAGE_URLS:" list in its configuration file will connect to the Mnet network centered around that MetaTracker.
What's the strange dance I have to go through to update the webpages on mnet.sf.net?
Look in the www/ module for a script named "updateme.sh". Everything you need is explained there. Most of the time you can probably just execute that script.
This web site is licensed under a Creative Commons License.