|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Subcategories: | ||||||||||||||||||||||||||||||||||||||||||||
|
Please note that these pages are not the appropriate place to ask questions. If you are unable to find the full answer to one of your questions here, please contact the help desk so that they can answer your question for you.
| ||||||||||||||||||||||||||||||||||||||||||||
Welcome to distributed.net's automated Faq-O-Matic! On these pages you will find answers to your Frequently Asked Questions (FAQ). This is a dynamic resource that allows users to contribute and help maintain accurate and useful information, ensuring that the answers found here will never go out of date.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Basic information about distributed.net and its goals, intended to inform new users about us.
| ||||||||||||||||||||||||||||||||||||||||||||
|
Answers in this category: | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
As a "loosely knit" group of computer users from all over the world, we take up challenges and run projects which require a lot of computing power. We solve these by utilizing the combined idle processing cycles of our members' computers. That's why we are called "distributed.net". Our more official name is Distributed Computing Technologies Inc. (or DCTI in short). You can read more about DCTI in our legal area or read more about our goals in our mission statement. A (by no means comprehensive) list of some of the people behind the organization of distributed.net is also available. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
There are several reason's why you should join us. First of all, our main goal is to explore the possibilities of distributed computing. Together we can learn more about this exciting new form of computing. Second, if we solve the RSA Challenges, we win $10000! There's $1000 or $2000 for you if your computer is the one that finds the right key, and $6000 to the non-profit organization voted upon by the users. Third, we have some nifty statistics. The more cpu cycles you donate to our projects, the higher you will be ranked. And of course you want to stay above your friends, right? ;) | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Our first victory was announced at 13:25 UTC on October 19, 1997, indicating that we had found the correct solution for RSA Labs' RC5-32/12/7 56-bit secret-key challenge. Confirmed by RSA Labs, the key 0x532B744CC20999 presented us with the plaintext message for which we had been searching for 250 days. | ||||||||||||||||||||||||||||||||||||||||||||
|
Our second victory was announced on February 24, 1998, confirming that we had found the correct solution for the RSA Labs' DES-II-1 56-bit secret-key challenge. The solution key was 76 9E 8C D9 F2 2F 5D EA and was found after 40 days of work. | ||||||||||||||||||||||||||||||||||||||||||||
|
Our third victory was on January 19, 1999 at 07:15 PST, when we found the correct key to the RSA Labs DES-III contest, with the help of the Electronic Frontier Foundation's "Deep Crack" customized DES cracker. The correct key was 92 2C 68 C4 7A EA DF F2, and it revealed the following message:
The unknown message is: See you in Rome (second AES conference, March 22-23, 1999)
| ||||||||||||||||||||||||||||||||||||||||||||
|
Our fourth victory was on 16 January 2000 when, shortly before 0630 GMT, we received the winning key (00438EF36FE3FC21 for you tech junkies) for the CSC contest from a Sparc in the United States after searching for 62 days. The secret message was:
CS-Cipher a ete presente en mars 97 a 'Fast Software Encryption' (PARIS). Congratulations to the winner!
The Winner is Paul Ilardi, Grad student University of Rochester. Congratulations to Paul. | ||||||||||||||||||||||||||||||||||||||||||||
|
Our fifth victory was on July 14, 2002 when we completed the RC5-64 project, after 1,757 days of working. The key 0x63DE7DC154F4D039 produces the plaintext output:
The unknown message is: some things are better left unread
| ||||||||||||||||||||||||||||||||||||||||||||
| Our sixth victory was completing the search for OGR-24 on 1-Nov-2004, and determining that the best previously known OGR-24 was in fact the optimal 24 mark Golomb ruler.
| ||||||||||||||||||||||||||||||||||||||||||||
|
Visit our Press Room for more information and to read the announcements. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Founded in 1997, distributed.net has grown to become a very large network of users all over the world. Most of us just run the clients, but on our Credits page you can find the people administrating the network, coding the clients, and helping with a bunch of other things that make distributed.net work the way it does. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
More information on our past or future projects, as well as the ongoing projects can be found on our projects page. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
The main distributed.net web site can be found at http://www.distributed.net. Be sure to fully explore the website because there are many layers of useful information available there. Additionally, we maintain a rather lively IRC channel on the CuckooNet IRC network. You can connect to the network using the round robin dns irc.distributed.net. Many of the distributed.net principals can be found there and even when the topic of conversation is not one of our ongoing projects or distributed.net. The quality of the discussion is usually quite good (for an IRC channel). Many talented technical people hang out on the channel and there is usually something interesting to be learned. We also have several mailing lists that anyone can join. Once you subscribe to any of the lists, you will be able to participate in additional discussions relating to the current distributed.net projects. An archive of all of the mailing lists is also available online. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Early on in distributed.net's formation, Jeff Lawson decided that it was necessary to associate an easily recognizable figurehead with the effort in order to gain support and a wide following. Because Jeff's webserving computer at the time of distributed.net's formation had the hostname of bovine.st.hmc.edu, the term "bovine" (meaning "of cowlike qualities") quickly became associated with the organization.
Although in the past, distributed.net had planned to associate discinct animals for each new project ("Project Bovine: RC5", "Project Monarch: DES", "Project Kangaroo: OGR", "Project Polarbear: CSC"), many of our users indicated that they much preferred seeing a greater role given to the easygoing cow. Therefore the friendly bovine cow has now been chosen to be the official mascot for all distributed.net projects.
| ||||||||||||||||||||||||||||||||||||||||||||
| High-resolution images (in several vector formats) of the cow logo can be obtained from http://www.distributed.net/logos/
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| On November 27, 2000, distributed.net and United Devices made an announcement that they will be working together to advance the field of large-scale distributed computing. You can read the press releases here:
http://www.distributed.net/pressroom/news-20001127.html | ||||||||||||||||||||||||||||||||||||||||||||
| Subcategories:
Answers in this category: | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| No, the two organizations are still separate and unrelated, but they both share the goal of advancing distributed computing. There are many related aspects of distributed computing that are shared, regardless of whether one is working on non-profit or for-profit tasks and by consolidating resources we hope to be able to better serve everyone.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| A new dual processor Xeon Dell server has already been given to distributed.net by United Devices for the role of a new stats server. Installation, configuration, and transfering of the existing stats data to the new machine has already begin and is nearly complete. It is expected that this new server will be put into operation and will be able to replace the current stats server within the next couple of weeks.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
The initial effort to win the RC5-56 contest was started by New Media Laboratories. Due to various internal factors, New Media opted to discontinue their involvement in the decryption effort. In the chaos that arose after the New Media server mysteriously disappeared, a student at Harvey Mudd college, Jeff Lawson (aka Bovine), coded the Bovine Proxy Keyserver. Initially, the goal was to allow the New Media effort to continue, storing completed keys, until the New Media server came back online. However, after it became clear that New Media would not be returning to the effort, the Key Server was modified to act as the master coordinator, completely controlling key generation and assuming full control of the effort. The rest, as they say, is history. As the newly formed Bovine Project began to gain members, and therefore computing power, it occurred to us that a large, distributed computer like ours could be used to solve several interesting problems unrelated to RC5 or even encryption. distributed.net registered as an official nonprofit organization (officially Distributed Computing Technologies, Inc.) in November of 1997 with this new, long-range goal in mind. In support of this new goal a new class of general purpose client, is being designed. The future clients will be modular and will support any number of different, challenge specific computing cores. The completion of those clients will make it possible for distributed.net to take part in a large number of distributed computing projects at the same time. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Distributed computing can be used in a variety of situations where there is a need for a large amount of computation, but there are a number of factors that that may limit the effectiveness of distributed computing. Although it is possible to parallelize nearly any computation problem, if the "overhead" of distributing a problem is very expensive (in terms of time and/or network bandwidth) then it may actually be quicker to simply compute it on one machine instead. In general, the goal of distributed computing is to minimize the overall time required to complete a problem, from start to finish. data-to-compute ratioOne of the most significant factors is whether or not a problem has a low "data-to-compute" ratio. This ratio reflects the amount of network communication that needs to be sent or received to each machine (from the servers), relative to the amount of computation that is performed on each machine. Problems that require a lot of data to be sent before any computation can be done may mean that more time is spent just delivering the information required to begin computation, than actually performing it. All of the projects that have been selected by distributed.net have had the property that only a few hundred bytes of data need to be transmitted for several hours of computation. inter-node communicationAnother factor that is partially related to the previous item is how much "inter-node communication" is required for a problem. Some types of distributed computing problems require that machines occasionally synchronize, coordinate, or exchange information with the other machines that are also working on the problem. Depending on the choice of implementation, this communication can be directly between machines (via direct "peer-to-peer" communication, via server-based coordination, or other techniques).
Problems that do not require any type of coordination or synchronization between machines, nor any ordering in computation of work, are commonly called "embarrasingly parallel". These types of problems are very well suited for very large-scale distributed computing since the individual pieces of work can be completed in any order, and can be redistributed to other machines if any single result fails to be returned. Depending on the type of computation being done, not all of the workunits may need to positively be completed if certain "key" results are received, or if a certain threshold has been met. All projects that distributed.net has worked on generally fit in this category.
Programming libraries such as MPI (Message Passing Interface), PVM (Parallel Virtual Machine), BSPlib (Bulk Synchronous Parallel library), and others are commonly used in scientific applications that require a high amount of precise intercommunication and syncronization between machines. These libraries generally are only usable in cluster environments because they need very fast network connectivity between machines due to the large amount of nearly continuous network traffic that is done. The fact that network communication is done between all machines in the computation also means that there generally cannot be firewalls or other highly restrictive network blocking between machines. Generally they also all require that there be very all machines remain available from start to finish of the problem. Because of these constraints, problems that require these libraries (or otherwise need a high degree of interconnect) are generally not well suited for large-scale Internet based computing.
In multi-pass, server-based coordination schemes, all of the intermediate results are collected by a central server, data coordination performed by that server, and then redistributed back to machines again, if needed. Problems that rely on this technique still need to have a low "data-to-compute" ratio, since the amount of time that is spent communicating with the server and getting back another piece of work can become expensive.
public attraction and incentivesIn public Internet projects like distributed.net, the machines that are performing the computational work are generally volunteered machines that are owned by other people. Therefore in order to get people to install the client on their machines, your problem will need to have some level of appeal or attraction that will make people want to donate their computer's power toward the effort. Projects that have a potential benefit for the common good tend to have high amounts of appeal (such as encouraging higher levels of data security, searching for cures for cancer/diseases). Projects that have technical appeal can also be popular among some groups of people, but are sometimes difficult to encourage wide appeal (such as proving large prime numbers, identifying mathematical oddities). Some people are willing to allow their machines to be used for arbitrary purposes if there is the potential for significant compensation in return. (Some groups of people are even willing to permit the use of their machines for commercial purposes that would not benefit themselves or any public entity as long as they are personally compensated in some way.) Sometimes this type of compensation may mean direct compensation for every unit of time utilized, while other times it may mean a potential for a larger compensation that is awarded in a lottery-style selection process. Other groups of people are motivated by community competition that are possible via "statistics" and ranking of the amount of computational time contributed. These groups of people enjoy "seeing their name in lights", especially if their name is ranked higher than someone else's name. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| This category contains information related to explaining the basics of how users contribute to the distributed.net projects.
| ||||||||||||||||||||||||||||||||||||||||||||
| Subcategories:
Answers in this category: | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
To accomplish this great computational task, we need you to help out by running a special client program on your computer and allow it to connect to one of our coordinating proxy keyservers. When the client program starts for the first time it will contact a keyserver and request one or more keyblocks. When finished it will begin testing the keys looking for the one that deciphers the contest message. When all of your keyblocks have been tested the results will be transferred back to a keyserver and a new set of keyblocks will be downloaded. The amount of time it will take your computer to test all the keys in a block depends on the type and speed of the computer. Very slow systems might take as much as 12 hours per block whereas the fastest multi-CPU systems can do a block in under 3 minutes (search the Client Speed database for more information about your particular computer). | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
All you need is a computer that is occasionally connected to the internet (once every couple of days, say). | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
You shouldn't run the client on any machine that you do not own or administer. For instance, it is considered bad form to run the client on your ISP's servers without their knowledge or permission. For more on this important topic, please read thoroughly our Official Policy page. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
All currently available client packages are available at http://www.distributed.net/download/clients.php If you would rather download the clients via ftp, all clients can also be found at ftp://ftp.distributed.net/pub/dcti/current-client/ | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Absolutely not! The clients have the ability to fetch work to be completed at a later time when your computer is offline for example. If all this work is completed before the computer reconnects to the Internet then the client will continue working until the network is available. This allows any machine, even one that is only online once every couple of days or so, to work continuously. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Any modem is just fine! Your computer will only want to communicate when it needs to download new work or report the status of the work it has done. Depending on the buffer sizes you select and the speed of your computer, this may only need to happen once every several days. The amount of information that is transferred to and from your computer is tiny (about 125 bytes per block for the RC5 challenge, for instance) so even when moving a large amount of work over a slow modem it doesn't take too long. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
The key to completing our projects in a reasonable period of time is to get more computers, not necessarily more powerful computers. The computing power of the world's fleet of aging 386s and 486s far outweighs the (idle) computing power of any supercomputers we could conceivably recruit. An interesting point to consider: the DES contest message was deciphered by a Pentium 90 running FreeBSD with only 16 megabytes of RAM. Not big iron by a long shot. Both the 48-bit RC5 and the 56-bit DES challenges were cracked by machines not even in the top 20 in the stats. Everyone has a chance of finding the correct solution. Every computer contributing to the effort is an asset. Note: Very old machines (pre-386 class) cannot be used at the present time. The RC5 algorithm, for instance, depends heavily on 32-bit data manipulations. The current set of clients all use 32-bit code that won't execute on these earlier machines. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Some of our projects, including RC5, DES and CSC, involve cryptography. There is nothing illegal, immoral, or dishonest about what we are trying to accomplish. These are legitimate contests sponsored by legitimate and respected organizations (RSA Data Security, Inc. and CS Communications & Systems). We are trying to decrypt encoded phrases which have been released to the public specifically to test and evaluate the strength of the encryption algorithm used in each contest. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
You have several ways of obtaining help. First, check out our Faq-O-Matic section for | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
People of every background and technical skill level are participating
in the effort. You don't need to be a skilled programmer or an expert
at cryptography to take part in the fun. All you need
is a computer that occasionally connects to the internet and a
desire to take part in a large, internet distributed computing
project! A quick scan of the participating teams shows a wide variety
of businesses, organizations and individuals are working on the
project right now. Maybe the more important question to ask is, who
IS NOT involved! The success of this effort depends on getting as
many people to participate as possible. Join us today and tell
your friends!
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| You can if you want, but we recommend that you not modify your normal usage of your computer specifically for distributed.net. After all, distributed.net's purpose is to demonstrate the computational prowess that is attainable by utilizing computer cycles that are normally just wasted.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| There are arguments for both sides, so you could decide either way. There is occasionally quite a bit of discussion about this topic on the mailing list, and the following is some of the observations that were made.
| ||||||||||||||||||||||||||||||||||||||||||||
|
The mean time between failures of hard drives is about 10 years at 24/7, and normally drives either die after a few months, or they keep going essentially for ever. On most hard drives, turning them off and on causes more damage than leaving them running 24/7. I know of many bits of equipment (10 year old fileservers) that were turned off for Y2K, and the increased load when turning the drives back on resulted in drive failure.
Disk access frequency is not really a factor in HDD failure. Most of the drives that failed on my machines were backup drives which were used relatively infrequently.
Most people now accept that the easiest way to achieve hardware reliability is to have a machine in a cool low humidity environment, to turn it on, and leave it permanently on. Start up loads are far more damaging than continuous use.
In my opinion, the biggest factor on how long drives last is background
vibration, humidity, and how well they are cooled.
| ||||||||||||||||||||||||||||||||||||||||||||
| A computer that's on 24/7 is actually at slightly
LESS (exactly HOW MUCH less is a subject still being debated among the
experts) risk of failure since it isn't experiencing the jolt of power at
startup time, and isn't having to start the drives spinning. Spinning up
from dead stop is the most stressful time in a hard drive's life -
depending on the specific drive, the power required to spin up from a cold
start can be as much as *100 times* (that's a worst-case situation -
Usually it's closer to 3-5 times) what is required to keep it spinning
while idle! The sudden draw on the power supply to handle that can cause
failure of the system all by itself.
| ||||||||||||||||||||||||||||||||||||||||||||
| Running a laptop 24/7 is just not a good idea, they're not designed to be
run continously. Most don't have adequate cooling, and they're much more
fragile than standard computers.
| ||||||||||||||||||||||||||||||||||||||||||||
| Most semiconductor failures come from the slow dispersion
of the "doping" (impurity) atoms through the crystal matrix of the substrate
(silicon/germanium). The dispersion rate increases with temperature, and
even with cooling fans, it's going to be faster when the machine is running than when it is not.
I also have some good news: this effect is usually minimal, and chances are the
machine will be hopelessly obsolete before it breaks even under 24/7 conditions. | ||||||||||||||||||||||||||||||||||||||||||||
| As someone else mentioned, the extra current
knocks dopants from N type silicon into the P type silicon at the junction,
leading to failure of a transistor. I seem to recall reading that this can
happen in a couple years of use if you seriously overclock and keep the CPU
busy, or in ten year or more if you don't overclock. (If you overclock, but
only occasionally use it at full power, it'll live longer. Linux, and
probably some other OSes, use the halt instruction in their idle loop to put
the cpu into low power, wait-for-an-interrupt mode.) | ||||||||||||||||||||||||||||||||||||||||||||
| Running any client 24x7 doesn't contribute to failure any more quickly than
an idling machine. Idling means only that the CPU is passing mostly zeros
through its registers. The CPU is still pushing instructions, most of them
simply do nothing.
| ||||||||||||||||||||||||||||||||||||||||||||
| Has anyone bothered to look at the additional stress on the CPU that is
not running the client? As an example, consider a server that usually sits
idle but periodically gets a burst of work. The CPU on this server is going to
be cool while idle between jobs then quickly heats up when a job starts and
cools down again when the job is done. Differential temperature changes during these heating and cooling cycles are going to create thermal stresses on the chip. These stresses can cause minor flaws in the chip to expand until a critical circuit is broken and the CPU fails. By running the client the CPU is always busy so the thermal variations will be minimized.
| ||||||||||||||||||||||||||||||||||||||||||||
| My work experience with semiconductor chip failures
were most often at the bonding pad level which is
stressed by thermal fatigue rather than constant high
temperature. Maybe interconnects have improved over the
years - there are many fewer of them these days. Any
equipment that I want to keep running simply stays on
all the time. The stresses of power on / off is where &
when most of the failures of electronics fails for me.
| ||||||||||||||||||||||||||||||||||||||||||||
| I would suspect that the first failures in a computer system would be observed in the mechanical systems such as the hard drive or in the power supplies. Integrated circuits which have survived the infant mortality period (usually 48 hours) should last 10-20 years, no matter what you do to them. They should not be adversely affected by the stress of thermal cycling, and dopants should not diffuse at typical junction temperatures on the order of 100 C. Two operating-life failure mechanisms of integrated circuits are hot electron injection and electromigration. Hot electrons are produced when a transistor switches states. They cause charge to be trapped in the gate oxide of the transistor, eventually (after many years) changing the behavior of the transistor and causing it to fail. Leaving your system on will hasten its death due to hot electron injection. However, as I stated above, I believe components other than the ICs are likely to fail first. The rate of hot electron injection is also proportional to the voltage and clock speed of the chip and so can be affected by overclocking. Electromigration occurs when the current density in the wire traces on the chip is too high. The flow of electrons can actually begin to move the metal in the wires until it causes an open circuit. This generally only occurs in a poorly designed circuit and should not be a concern. I have also seen operating-life failures due to random particulate defects on the chip. However, it is not the thermal cycling but the electric fields on the chip which cause these defects to kill a circuit. Most of this type of defect are weeded out during the infant mortality stage. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Remember that our recommended policy is that users not modify their normal usage of the computer just to allow the client to continue running. Because of this, computers shouldn't generally be running unless they're in actively use or were going to be left on anyways.
Many modern computers can enter low power-usage states when they detect they are idle. This mostly involves powering down the monitor, stopping the hard drive, and allowing the CPU to enter a slower idle state that does not produce as much heat. Running the client on a normally idle should not affect its ability to power down the monitor, which is a significant part of the power usage. However, the hard drives of a power-saving machine may be prevented from spinning down if the client continues to periodically save or load blocks to disk. If you have multiple hard drives in your machine, you may want to consider ensuring that your client buffers and logs are on the hard drive that is most likely to have other activity as well (such as your OS swap file, or OS System directory), allowing the other less frequently accessed drives to spin-down unaffected. You might also want to consider enabling the Client's "nodisk" mode so that it only uses RAM for its operations, but be aware that your work may be lost if your computer crashes or loses power (wasting the power and idle cycles that the client could have used for productive work if it wasn't lost). You might also want to be aware of the fact that spinning up/down your hard drives can actually reduce its lifetime. Additionally it is true that the Client will also probably prevent your CPU idle from entering its reduced power consumption idle cycle mode (sometimes called "HLT" mode in x86 processors). However, the actual power consumption by the CPU processor alone is actually a minor portion of the total usage by the computer (much less than 20% usually), and entering the lower usage idle mode only reduces that amount slightly. Note that this idle mode is unrelated to the CPU frequency-lowering that is sometimes done automatically by APM services when no user interactivity is detected (the client will not interfere with this reduction). You should also be aware that sometimes computer fans run only when excessive heat is detected (such as from a continuously operating CPU or hard drive). These cooling fans are an additional source of power usage. Overall, the actual difference in power consumption by computers that are running the client during periods of time when they are normally left on (for unrelated purposes) is very minor. Distributed.net's purpose is solely to use the idle cycles that would normally be unused.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| We maintain a number of public pages that contain graphs, rates, statistics, and other analyses of combined work being done by the collective cooperation of all participants. This section discusses some of the most common questions regarding this information.
| ||||||||||||||||||||||||||||||||||||||||||||
| Subcategories:
Answers in this category: | ||||||||||||||||||||||||||||||||||||||||||||
|
A tutorial on statistics is also available to guide you through our stats system. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Subcategories:
Answers in this category: | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Before you can join a team, you must first have your password (see The simplest way is to simply go to your team's stats summary page and click the "I want to join this team" link. You'll be presented with a login dialog box where you should enter your email address and your password. That's all there is to it! | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Perhaps there is a "team creation" faq out there that gives erroneous instructions, because this question is actually pretty common. When you created the team, it was explained pretty clearly so I'll simply repeat here in the FAQ what you read when the team was created:
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| To set a password or to make your team lists public, you need to edit you team information. There you can edit the properties of the team member list. To restrict access, you would set it to password or completely disable your team list.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| You have to go into your personal preferences page via the "Edit your information" link and click on the "If you do not wish to be on a team, click here." link next to your current team affiliation.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| No. Once blocks are allocated to a team, they cannot be allocated to a different team. Blocks completed in the future can be set to a different team. This would be completed by re-setting the team affiliation of your team member's emails.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| If you are currently on a team that allows public viewing of team members, you can click on the link below the team-specific status entitled "Click here to view this team's participant stats for yesterday or overall." If your team list is private, you will need a password for your team list. Contact your team administrator for the password needed to view your team member list. When entering your password needed to view the team lists, please note that it is not case-sensitive.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| All blocks completed previous to your joining a team will become permanent property of the team you join first. If you wish to change teams, you may, however, all blocks will be owned by the team you were working for while completing them.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
This is a commonly-requested feature, but it's our view that a person's team membership is private and to display that on stats would be a violation of participants' privacy. Imagine a controversial team, like a pro-life team or a drug-legalization team. It's concievable that a person might wish to support that team by being a member yet wouldn't want to advertise their support or make it known that they are on that team. Or, imagine being a participant in the top 10 who is not on any team at all. That person would (due to the suspicious lack of a team affiliation line on their summary) likely be deluged in requests to join people's teams. "dood! you rool! join team luser!" We'd prefer to allow people to participate individually in peace and privacy. To offset this, please feel free to mention your team affiliation in your participant motto, which shows up on your summary page. The motto allows html, so you can even embed a link if you wish. We feel that this compromise is the best of both situations. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
To make things more interesting, some people have decided to work together in groups (rather than individually) and thus increase interest and participation. It is important to note that this is not about one team versus another, or about who actually cracks the key. This is an effort to demonstrate that a collection of amateur internet enthusiasts can break strong 64-bit encryption using only their existing computing resources. Teams are optional! They are fun and the rivalries between them help to increase project participation but you are not required to join a team if you don't want to. Also there are no official teams for anything. Some people might claim that their team is the official team for an operating system or group, but you are not required to join it. You can simply run for yourself, or run for others if you wish. For those of you who participated in the Bovine RC5-56 project you should be aware that teams are being handled differently this time around. Previously a team was identified by the email address of the team coordinator. To join you had to submit blocks using that address. This time around we have set up a true team structure. Individual contributors should report all checked blocks under their OWN email addresses. They can then choose to affiliate themselves with a particular team. If they do so their individual stats will continue to report their total effort but their contribution will also be counted in their team's total. If you want to create a new team, simply visit http://stats.distributed.net/newteam1.php3 Be sure to carefully read the notice that appears. You only need to register if your team doesn't already exist. If you really mean to join a pre-existing team proceed as follows. First, get the ID number of the team you wish to join (this can be done using the Search for Team facility on the stats page). Then, from your individual stats summary page, you can affiliate yourself with your team by choosing the Edit Participant Information button. Note that this last step requires a password. If you don't already have one you can get one automatically mailed to you from the link at the bottom of your individual stats summary page.
One other note about joining teams. If you've never joined a team before
then ALL the blocks you have checked will go to bolster your team's stats
when you join. If you do already belong to a team and then switch to a
different one only new blocks that you check will be attributed to your
new team. Old blocks stay with your old team. In either case your individual
stats always show your total contribution since starting the effort regardless
of whether or not you have joined a team or switched teams.
| ||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Whenever a participant joins a team, any work they have submitted that wasn't previously assigned to a team will be assigned to the team that they just joined. So if team X has done 10,000 work units and a participant joins them that has 50,000 work units that aren't already assigned to a team, as soon as that team join takes effect, team X will have 60,000 work units total.
The confusing part is that team X's summary page won't show 50,000 blocks being done yesterday. They will move up a large amount in the overall ranking, even though they did very few (or even 0) work units yesterday. This is intentional. Those 50,000 work units might have been assigned to the team yesterday, but they weren't actually submitted yesterday... they were submitted over many days or even months. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
The age of a team, as reported in stats, is not related in any way to the day the team was actually created. The "start date" for a team is instead the oldest work unit that's been credited to that team.
If a participant joins your team and brings with them blocks which they've done in the past but have never assigned to a team, then your team will get credit for all those blocks on the days that those blocks were actually completed.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Subcategories:
Answers in this category: | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
The current stats servers, standard and deviation, are a pair of machines with the second acting a warm standby failover. The second machine also serves as a staging/development server. Both machines have the same identical configuration:
And prior to that, statsbox-i:
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Not really. Most of the work is adding up all the rows in a table. If
the connections between all the machines were very fast maybe it could
be done. It would be cheaper to just buy a faster server though.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
We use the very powerful VIM development environment to design the stats html. The powerful PHP package is used as the scripting language for all of the dynamic pages. PostgreSQL is the database backend that is used to store and access of all of the statistical data.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| distributed.net maintains a public database of the benchmark speeds of its clients on various CPU models and speeds at http://www.distributed.net/speed/
This database is useful primarily for comparing the relative performance between different processor models. It can also be very useful for determining if your system is running the client as fast as other users are, and can help identify the existence of potential hardware configuration problems.
Keep in mind that the Client Speeds Database pages are completely unrelated to the Participant and Teams Stats database that shows your cumulative amount of work completed. The Client Speeds Database is meant purely to show the representative speed that a single client on a single processor type/speed can expect for a single benchmarked block.
| ||||||||||||||||||||||||||||||||||||||||||||
| General speed benchmarking:
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
This can occur because of any of the following reasons (and possibly others):
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| The speed pages also provide the ability to enter the benchmarks of multiprocessor machines. However, keep in mind that the keyrate of any individual processor within a multi-processor machine will generally be comparable to that of identical MHz single-processor machine. As such, the overall speed for a multiprocessor machine is generally merely the speed of one processor multiplied by the number of processors within that machine.
The primary purpose of the separate multi-processor speed listing is to provide a single page that summarizes the types and speeds of the available multi-processor machines on the market against each other. Also many casual users simply aren't familiar with the availability/limits of specific processor counts for different architectures, and these multi-processor speed pages gives those users a convenient place to find that information.
Please keep in mind that the benchmark speed reported by the client is always for one processor! When submitting the speed for a multi-processor machine, you will need to manually multiply the single-processor before entering the speed within the submission form.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Sometimes people accidentally submit speeds into our database that is obviously incorrect, for reasons such as the following:
If you suspect that you've found such an entry, use the "submit a bug request" link that is on the front http://www.distributed.net/speed/ page and we will manually remove such entries.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Keep in mind for the following discussion that the blue column that is labelled as "Speed" is actually the mean (average) of all reported speeds for that CPU MHz combination.
StdDev represents the "standard deviation" of all reported speeds for that CPU MHz. The standard deviation is a statistical figure that can be used to determine the typical range in which all of the reported speeds lie within. Typically when there is a high amount of correlation between all of the reported values, then a high majority of the values will lie within reported the mean spead +/- the standard deviation amount. Values that lie outside of that range have a greater possibility of being anomalous.
StdErr% is simply a different representation of the standard deviation. It is simply the result of the following (stddev / mean * 100). StdErr% is useful for comparing the relative amount of deviation between each of the values within the summary listing pages. Typically, if the StdErr% exceeds 15% or 20%, then there is a high amount of deviation within that group of values, and one or more of the values is anaomalous to a large degree.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| This column is simply a unique number assigned to each new entry that each person enters into the database. It has no statisical value and only serves as a convenient way for us to point out individual anamalous entries and delete or correct them.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| The way that I recommend you generate stats is by running the client 3 times, and taking the best rate of the three. Also, when possible, it is best to run the clients in as similar an environment as possible. Not all UNIX or multi-user machines have that luxury, so there may be some fluctuation between measured and actual speed.
If your processor, operating system, or client version is not one of the available options, then go back to the main speed index page and use the bugzilla link at the bottom of http://www.distributed.net/speed/ to report the value that you need.
Please make an effort not to submit bogus or invalid values. If you know that your speed value is suspiciously higher or lower than any of the other values reported by others for similar hardware, then recheck your values. Similiarly, if you know your system is grinding to a halt and about to crash and the speed reported by the client is totally non-sense, then don't report that value! Additionally, don't report excessively high/low values for favorite/hated operating system. The purpose of this database is provide a useful comparison for other users, not to promote platform advocacy or advertise bizarre values. By not submitting these bad values, you will save us the effort of having to remove it later. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Please use the "submit a bug request" link that is available at the bottom of http://www.distributed.net/speed/ to submit a request and we will add it!
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| The email address that you enter is not used for any publicly displayed purpose. It only serves as a way to allow us to contact you if your entry seems to have been entered incorrectly and we need to ask you to re-enter it again or re-verify it.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| distributed.net maintains publicly viewable statistics and rankings
for every project. The server that hosts these statistics is
http://stats.distributed.net/. From
that server's main web page, you will we directed to the specific
stats subsections pertaining to each of our current projects and to user
or team specific statistics.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| A large collection of plots, charts, and graphs are available at http://www.distributed.net/statistics/.
Graphs for individual participants and teams can be found on the stats server pages at http://stats.distributed.net/
| ||||||||||||||||||||||||||||||||||||||||||||
| The regression lines on the RC5 rate graphs show best fits for assumptions of linear (in Mkeys/s / day) and exponential (in days to double) growth. By showing both regressions it helps cut short theoretical arguments, generally quoting Moore's Law, as to how we should be growing. An expanded vertical scale of the RC5 rate graph is available at http://www.distributed.net/statistics/rc5-64/ | ||||||||||||||||||||||||||||||||||||||||||||
| The 3D OGR graphs located at http://www.distributed.net/statistics/ogr/ represent data that has been processed by clients working on the OGR-24 project. The two horizontal axes reflect the respective locations of the first and second mark on the Golomb ruler. The vertical axis accounts for the number of nodes tested for the corresponding first and second mark locations.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
A comprehensive set of statistics for the distributed.net projects can be found on the stats server.
There you can find the overall team summary as well as stats on teams and individuals, for each supported projects.
The stats pages are updated once per day at 00:00 UTC. There are several bits of
information displayed on the project, team and individual stats summary pages.
Current Ranking -- team and individual summaries
Total blocks to search -- all summaries
Total blocks checked -- all summaries
Keyspace Exhausted -- all summaries
Total keys checked -- all summaries
Time Working -- all summaries
Overall Rate -- all summaries
Keyblocks and keyrate for yesterday -- all summaries
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Stats update once per day, assuming everything is healthy.
The update starts at 00:00 UTC and typically takes a few hours to complete.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Well, yeah, sorta. Unless you're into astronomy or extremely anal, UTC and GMT can
be considered the same thing.
If you need help figuring out what time UTC is in relation to your local time zone, this page may help. The trick is to remember that UTC doesn't change for daylight savings time.
If you're really curious about the difference, feel free to bore yourself to tears with
the details.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Doing more frequent stats updates isn't really all that useful, and encourages behavior that's damaging to the network.
It's really in everyone's best interest if your clients only flush blocks once a day or so. When stats updated more frequently than daily, some people changed their client configuration to run the smallest block sizes and to flush after every block. This creates needless network traffic and makes for larger log files on the keymaster.
Besides, in a project that's taken over a year, does it really matter how many
blocks you had done *at noon*? Daily updates are quite sufficient for tracking
the progress of the project.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Your stats password will not be automatically emailed to you once you join one of our projects. You will need to request your password by clicking on the link at the bottom of your personal stats page. You must first access your personal stats page by entering your complete email address in the "Participant Search" form located at the top of most stats server pages. Note that in order to be able to request your password from your participant stats page, you will need to have entered a valid email address in the client configuration menu, flushed some work units back to the proxies, and waited up to 24 hours for the stats server's daily update that will detect that you have joined distributed.net. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
No, the stats server has a feature for this situation. What you can do is "retire" your old address into
your new address. This will completely and permanently remove your old email address from the stats server
and attribute all of its activity to your new email address. This way you can gracefully migrate from one
email address to another without losing all your blocks.
To do this, you need a couple things:
Once all those things are in place, you simply visit the configuration page for the old email, and click the retire link. The script will walk you through the procedure of selecting your new email address and performing the retire. | ||||||||||||||||||||||||||||||||||||||||||||
| There is now a limit of 8 retired email addresses. Please read this other answer for information about this: | ||||||||||||||||||||||||||||||||||||||||||||
| In addition, any new work that is submitted to your old address after you retire it will be credited to your new address. No work will be "lost" by retiring your accounts.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Yes, and no. Like all blocks, randoms are subject to de-duping at the keymaster. This means that only the first person to submit any one random block will be credited for that block in stats. If two clients pick the same random block, only the first client to submit that block will be credited on stats.
You might assume, though, that the odds of duplicate random blocks is quite slim but in reality that's not always the case. There are two additional factors involved. Random blocks are not chosen from the entire 2**64 keyspace, but rather we've pre-defined some slices of keyspace as random slices, and when your client picks a random block it will come out of one of these areas. Which slice to use is determined by the keymaster and communicated to your client when it connects to the network. What this means is, the ratio of tested / untested keys in a random prefix can vary tremendously. As more and more random blocks are turned in, the current random keyslice gets more and more full and the odds of your client picking a duplicate block increase.
While allowing the clients to pick randoms from the entire keyspace might seem an attractive concept, there are two reasons why this is not wise. First, it wouldn't make any sense if we were 90% complete, since 90% of all randoms would end up as duplicates. Secondly, we are unable to track the entire keyspace on the keymaster. We can only accept blocks from "open" keyslices that are being actively tracked. If a block arrives at the keymaster for a keyslice that isn't open, it is discarded and will not be reflected in stats. Since we are limited in the number of keyslices we can simultaneously track, it's necessary
that we be able to control which areas from the keyspace a client pulls random blocks from. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
It would be great if we could show every statistic every participant could think of, but we (the distributed.net staff) run in to some limits which force us to pick and choose:
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Send email to help@distributed.net and write a message that is convincing enough to make them believe that the email address in question actually belonged to you. If they believe you, they can provide you with the password.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| It was necessary to impose a limit because some malicious users were using this feature to combine email addresses that belonged to other users (and had gained access to the victim's email address and password through their own means).
We recognize that some users may need to legitimately retire more than 10 email addresses, and we will personally address these issues on a case by case basis. If you fall in this category, please send email to our general help email address describing your problem.
Please note that we do *not* support retires as a way of creating 'sub-teams'. We know that a number of participants would like to see this feature implimented, and it is on the to-do list. Please be patient, as this type of change is a lot more complicated than it looks, and it will take some time for us to devise a system to handle it.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
There are many reasons why work units could be 'disappearing'. One reason is latency. Our network is designed for maximum uptime and redundancy. This also means that it does not operate real-time... it takes some time between when you submit a work unit to a fullproxy and when it actually gets to the master. The stats are based on when a block is received by the keymaster, not when it was completed by the client. So if you flush at 2300UTC, those blocks might not make it into that night's statsrun. This means that you can not look at any single day and determine that you are missing blocks... they might show up tommorow, or even later. In extreme cases, we've even seen work units get delayed by 2 weeks. If you are submitting work to a personal proxy (any proxy not officially run by distributed.net) then we can not guarantee that that work will make it to our network. This is because we can not control personal proxies. The person running a personal proxy can easily delete any work that has been submitted to the personal proxy without actually submitting the work to our network. Or their computer could crash. Or their dog could eat the blocks. You get the picture. }:8) There are also client versions that are specifically ignored by the network. Currently, any client older than v2.8015 is ignored. You can read more about this here and here. Many people have been confused about OGR stats. OGR is an ongoing projects, but it is divided into many small projects. The results for these seperate projects are reported seperately by stats, so please make sure and check any available OGR stats before reporting missing work. If you still feel the need to contact us about missing work units, please follow these guidlines:
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| If you have mistyped your email address in your client, and the client has already returned work units to distributed.net (i.e. the incorrect email address has shown up in the stats) you need to email help@distributed.net and explain the situation.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| What you are seeing is the results of a retired account. The participant has retired another email account into the account you see listed, combining the statistics of both email addresses. This obviously affects their overall ranking, as their current email address suddenly gains the benefit of the blocks checked under their old, retired email resulting in an impressive jump in the overall rankings.
However, since the blocks in question weren't done yesterday, but rather are the result of their previous work under another email address, they have no impact on "yesterday" stats or the reported block count from the previous day. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| A common comment towards distributed.net is that a new user can not find his or her stats after running the client for 24-hours (or more).
The key to this "24-hour" value is that the client has actually returned completed work to the distributed.net servers. If this is done, prior to 0:00 UTC, then you will receive credit for your work and should see your stats the "next day." To return completed work to the distributed.net use the "dnetc -update" command or right-click on the cow-icon and choose "update." This command will force the client to "flush" (or return) work to the distributed.net servers. Note that you must be connected to the internet in order to accomplish this task.
The client, by default, can be configured a variety of ways to return completed work as the user desires. This can be done with changing the "Buffer Threshold" and/or the "Client Connectivity". Refer to these other topics for additional help:
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Some times the log files are not correctly processed by the statsbox and our audits that occur at the end of our statistics runs catch these problems before the data is updated completely. When this occurs someone must manually fix the problem, and some times that takes a while as the person could be out of town, or busy with other things (remember, we are all volunteers here) :)
Also some times the log files are not correctly transfered between tally and the keymaster, which again requires manual intervention to get them running again.
Your best bet is to check the .plans which are located at http://n0cgi.distributed.net/cgi/dnet-finger.cgi for more information, or visit us in #distributed on irc.distributed.net (most of the time people there know what's going on!)
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| In January 2002, we had to instate a new policy that prohibited the use of arbitrary HTML in the customized team and participant "motto" sections of our website. http://cgi.distributed.net/cgi/planarc.cgi?user=bovine&plan=2002-01-22.20:52
Although it was not something we wanted to do, without restrictions on content, it was possible for malicious javascript to execute and leverage your logged-in team and participant password to alter your membership, including switching you onto different teams. Allowing arbitrary HTML or Javascript to execute from within the domain of *.distributed.net could also allow the compromization of secure cookies used by the stats site to remember your login. As you can imagine, this is a significant vulnerability and we need to treat security issues seriously. Attempting to filtering general HTML is what a number of web-mail providers (like Hotmail, YahooMail, and others) attempt to do today, but if you've kept up on monitoring security vulnerabilities mailing lists (such as BugTraq or Vuln-Dev), you're probably aware of incident after incident of new tags being discovered that needed to also be filtered. These new discoveries have continued to occur every few months for the last several years, ever since the popularity of web-based mail took off. E-Bay also attempts to allow auctioneers to utilize HTML for their product descriptions, but they also need to filter malicious techniques that can be used to automatically submit bids and such. There are many other instances of websites that need to employ similar tactics. There are many ways to include malicious javascript in arbitrary HTML: you can attach OnLoad/OnOver/OnFocus events to most HTML elements. Cascading style sheets can be used to add extended behaviors to other types. The "javascript:" protocol can be used anyplace an URL can be referenced. Inline <script ...> blocks can be used. Plugins/ActiveX can be invoked through a variety of techniques including the <embed ...> or <object ...> tag and potentially invoke holes that exist in those plugins. Frames can be created with <iframe ...>, <frame ...>, <layer ...>, or <span ...> that reference other websites and load unsafe code that can manipulate the main page's namespace through webbrowser bugs. It's possible to use <meta http...> to trigger refreshes to other locations or submit automatic responses to other pages on our website. Other URL protocols, such as "file:" or "money:" or "telnet:" can be used in some cases to reference local resources through some types of browser bugs. An additional part of the difficulty is that web browsers are designed to be extremely tolerant of HTML that they parse in the interests of being most compatible (but each browser is tolerant in different ways). Different browsers allow different encodings throughout their documents. For example, "<script%20language= javascript>", "<script >", "< script>", and hex-encoded, mixed-case, and unicode/foreign character sets provide equivalent ways of expressing the same thing.
Two well-written security advisories on this type of exploit are available from CERT:
Within the last month alone, there have been numerous cross-site scripting issues exposed throughout the web on extremely popular websites. Here are just a few of the articles on BugTraq within the last month that succinctly summarize the variety of the problems: In summary, it is an ongoing job to maintain filters that attempt to explicitly exclude "known unsafe" activities, and we do not have the resources or desire to maintain such filtering technologies. It's far easier to do the opposite and create a filter that only allows "known safe" activities. Although it would be possible to try to construct a filter that allows good-HTML to be entered (but be very aggressive and only allow "known safe" forms), it's a little easier to create your own variant that does not have any of the operational expectations that HTML has. Attempting to filter HTML also has the problem of inadvertantly breaking "safe" HTML that simply does not conform to the strict filtering rules that would need to be used (after all, there are innumerable ways of expressing the same effect).
By creating our own markup language that is extremely limited and extremely strict in its allowances, there is far less ambiguity over why something isn't working or what is allowed. In actuality, the markup language that was chosen to be implemented is intentionally similar to the markup language used by UBB/phpBB/vBulletin and a number of other bulletin-board packages available today, so as to reduce the "non-standardness" of our technique. The available tags are shown on the team and participant configuration pages. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| This is caused because we are utilizing the generic Cascading Style Sheet (CSS) font sizes. This _will_ cause different browsers to render the text slightly differently.
However, it also ensures that users can increase/decrease the font sizes as they see fit(there should be keyboard shortcuts to do this in all modern browsers) and have the browsers automatically adjust the font sizes accordingly.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Questions and information relating to the distributed.net client software that participants run on their machines.
| ||||||||||||||||||||||||||||||||||||||||||||
| Installation, Configuration and Mass deployment answers:
General client-keyserver communications answers:
Porting the client, and common port/feature requests.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Yes there is. You can find the "client download, configuration and operation" tutorial at: http://www.distributed.net/docs/tutor_clients.php | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Simply start the client from the directory you put it in. If you have never run a client from that directory before, the client will automatically start in "configuration mode". Change the configuration as desired, save and quit when done. Then restart the client.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
If you are uninstalling an unauthorized installation of dnetc, please e-mail help@distributed.net so we can fully enforce our policies on unauthorized installation, and so we can provide you with the most current information.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Instead of using the -hide, -quiet, or -install parameters, create a shortcut to DNETC.EXE in your startup folder. Once you have created the shortcut, edit its properties and set the Run: dropdown to "Minimized." | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Many clients support the -install switch to have the client set itself up
to start automatically when the machine is booted. Others do not support this feature, and must be manually inserted/deleted from the boot sequence scripts.
Those client that do support -install, also support -uninstall to stop the client from automatically starting.
Before configuring the system to launch the client on boot, please ensure that it can start normally. Note: many clients provide some form of feedback on successful -install and -uninstall. To suppress those messages, use the -quiet switch, but make sure to specify it *before* the -[un]install switch (for example: dnetc -quiet -install), because the options that follow -install are the ones that the client is then 'installed' with (this feature is not available everywhere).
Special notes: | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
MacOS client distributions include an AppleScript that you can place in your Startup Items folder to cause the client be launched and the "Hide dnetc" option in the Applications Menu to be automatically activated. The client is still visible and can be re-activated from the Applications Menu however.
Alternatively, if the MacOS FBA (faceless background application) version of the dnetc client was distributed with your MacOS download, then you may use that version. The FBA version completely lacks any user interface at all, and will not even be visible from within the Applications Menu.
Newer distributions (2.8012.466+) of the client for MacOS may include a client that runs as a system extension. This enables the client to be launched before the finder starts and run without a user interface.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| The client for OS/2, unlike most other clients, does not insert
itself into the boot up sequence. Instead, it creates a shortcut in the
startup folder. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
32bit Windows clients are capable of running as 'services', which start when the machine starts, and don't shut down until the machine does. (ie, they survive logouts). The -install option configures the system to launch the
client as a service the next time the machine is booted.
Although services on Win9x and WinNT are dramatically different in terms of implementation, dnetc attempts to make the behavior between the two environments approximately equal.
| ||||||||||||||||||||||||||||||||||||||||||||
|
Note that the (WinNT) client cannot run with "Allow service to interact
with desktop" enabled. This is because when the client starts, it does not
know whether it was started as a service or not (it does not depend on the
-svcrun switch). If it tried to initialize itself as a service, and wasn't
actually started as a service (from 'net start' or whatever), it would take
ages to start. So, since, under normal circumstances, the shell isn't
active/visible when the service starts, it uses this condition as an
indication of whether it should try to initialize itself as a service or not.
In order to reduce its footprint and other overhead, the client runs with an
implicit -quiet when started as service, so, even if it did not use the
check-for-shell described above, you wouldn't see anything.
| ||||||||||||||||||||||||||||||||||||||||||||
| The distributed.net client will fail to start as a service if the directory is marked for encryption. This limitation applies not specifically to the distributed.net client, but to any service or process that is running from a different logon context than the user the file is encrypted to. Encrypted directories and files can only be accessed by the user who created them, and services generally are started from within the "LocalSystem" user context.
Explicitly unencrypting each of the individual files within the directory is not sufficient, since new files created in that directory by the client will inherit the encryption from the parent directory. Configuring the service to login as me (instead of as LocalSystem) seemed to fix it, but the safer approach is to keep the distributed.net client in an unencrypted directory, where no parent directory is encrypted either.
This limitation will also be apparent if you ever try to encrypt your Windows directory itself, or the base "Documents and Settings" directory (that contains the profile directories for multiple users, not just yourself), or the root directory of a hard drive that contains things that multiple users or the system itself needs to access. Generally speaking, only sensitive documents should be encrypted, and not application directories, or entire hard drives.
| ||||||||||||||||||||||||||||||||||||||||||||
| Older clients (<=.463) running as a WinNT service had a problem detecting modem connections. This is no longer an issue (it continues to be one for perproxy though), and to ensure that newer clients update their dependancy tables, you will need to re-"-install" the client.
Although not specific to NT service, be sure that the interface name that you've told the client to monitor is the correct interface name of your modem connection. However, typing the interface name incorrectly will prevent the client from detecting your modem connection when running as an NT Service or as an interactive process.
| ||||||||||||||||||||||||||||||||||||||||||||
| For at least Vista 'gold', running 'dnetc.exe -install' (the install service command) as administrator appears to be necessary to successfully install dnetc as a system service. Probably the easiest way to do this would be to select 'Run this program as administrator' under 'Privilege Level' in the 'Compatibility' tab in 'dnetc Properties' (a right click on the file) first. Once 'dnetc.exe -install' is run, it should be OK to un-set this option, unless you want to do other stuff that requires administrator access, like 'dnetc.exe -svcstart' and some such.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
All Unix systems are capable of starting the distributed.net client from a
boot script or script in a boot script directory.
The quick and dirty way:
The long way:
| ||||||||||||||||||||||||||||||||||||||||||||
| This was submitted by Marc Barilley (barilley@noos.fr), and apparently works on Mandrake (but should work as well on RedHat).
#!/bin/sh #Source function library. if [ -f /etc/init.d/functions ] ; then . /etc/init.d/functionselif [ -f /etc/rc.d/init.d/functions ] ; then . /etc/rc.d/init.d/functionselse exit 0fi RETVAL=0 start() { echo -n "Starting Distributed.net client: "
if [ -f /var/lock/subsys/dnetc ]; then
failure
else
daemon --user=dnetc /home/dnetc/dnetc -quiet
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/dnetc || RETVAL=1
fi
echo
return $RETVAL
}
stop() {
echo -n "Shutting down Distributed.net client: "
killproc /home/dnetc/dnetc -TERM
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/dnetc
return $RETVAL
}if [ -x /home/dnetc/dnetc ]; then case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status /home/dnetc/dnetc
;;
*)
echo "Syntax: $0 [start|stop|restart|status]"
exit 1
;;
esac
fi
exit 0
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Starting the client with /? or -? or -h or --help
(or any unrecognized word actually) will give you a list of valid command
line switches.
eg: dnetc --help Although not recommended since it is then a 'static' reference, the output of -help can be redirected to a file on all OSs except those that don't support redirection (NetWare), or those that only have a GUI (MacOS, Win16).
On 32bit Windows, for instance, 'dnetc.com -help > dnetc.hlp.txt' will
work just fine.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Yes, multiple clients/machines may "share" the same distributed.net ID (email address).
It is also possible to specify individual addresses of course, and has its own
set of advantages and disadvantages: Specifying multiple addresses may become cumbersome and difficult to track, particularly if you are maintaining a large number of computers. On the other hand, specifying separate email addresses has the advantage of allowing the stats server to show you block count information that is specific for each machine you are running the client on.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Most clients can take advantage of multiple processors, and those that do,
will by default run with as many threads as there are processors.
The clients that cannot take advantage of multiple processors even when the
OS supports it, do so because of library or compatibility issues. Clients that fall in this category are HP/UX, SunOS 3, and Linux/S390. Under such circumstances, run one instance of the client per processor. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
Some systems that other people have successfully used include:
| ||||||||||||||||||||||||||||||||||||||||||||
|
I put the following in my NT login scripts to install dnetc as a service (located in the root of the windows directory) on both 95 and NT workstations. If your users do not have rights to install an NT service on their machines, then you'll need to use a utility like RemoteCows (available on the dnet site) to deploy dnetc on NT workstations.
The following works for NetWare startup scripts as well. REM dnetc install SET INSTALLDIR="%windir%\dnetc" IF EXIST %INSTALLDIR%\dnetc.exe GOTO ENDOFSCRIPT COPY \\server\sharename\dnetc.exe %INSTALLDIR% COPY \\server\sharename\dnetc.ini %INSTALLDIR% %INSTALLDIR%\dnetc.exe -quiet -install %INSTALLDIR%\dnetc.exe -svcstart [1] :ENDOFSCRIPT[1] newer clients support -svcstart (for both 9x and NT) to start a client previously installed as a service. Older clients require: IF "%OS%" = "Windows_NT" GOTO NTSTART rem win9x can't start services from the command line rem so start it hidden %INSTALLDIR%\dnetc.exe -hide GOTO ENDOFSCRIPT :NTSTART net start dnetc | ||||||||||||||||||||||||||||||||||||||||||||
|
As a warning for users of windows9x/ME who might be attempting to upgrade clients with "dnetc.exe -quiet -shutdown", copying a new client in place, and then restarting it...:
You will likely want to use "start /wait dnetc.exe -quiet -shutdown" since 9x/ME will typically not wait for GUI processes to run and finish before moving onto the next line in your batch file.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
By default the client looks for an .ini file (where client configuration information is stored) with the same name (and directory) as the client [1]. You can make the client use a different .ini file with the '-ini Thus, one solution then would be to create several copies of the client, each with a different name; one for each of the required configurations. Another solution would be to have all machines sharing one copy of the client, where they would all end up sharing the same .ini file.
[1]On OSs where the client's directory cannot
be determined when the client is in the search path, the client will use the current directory.
| ||||||||||||||||||||||||||||||||||||||||||||
| Alternatively, you could create local batch files/scripts/shortcuts/etc. (depending on OS) that execute a common client w/ different -ini options on the command line, either pointing to a local .ini file or to a bunch of different .ini files w/ different filenames on the network drive. Even more elegantly, if the path to the local .ini file is the same across all machines running from the shared volume, you could have one batch file/script/shortcut on the shared volume that points to a local .ini file w/ a custom configuration.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| For Win32 platforms, the client can be downloaded as either a ZIP file or a MSI (Windows Installer) database file. In order to install any MSI-based program, you must already have Windows Installer support installed on your computer.
Windows 2000, Windows XP, and Windows Me all come with Windows installer support out-of-the-box. Windows NT4, Windows 95, and Windows 98 systems can download and install the Windows Installer runtime from Microsoft (if it has not already been installed for some other program).
To determine if you already have Windows Installer support, Start/Run and type "msiexec". If you see a version number displayed, then you already have Windows Installer support installed.
| ||||||||||||||||||||||||||||||||||||||||||||
|
If you need to install/upgrade the Windows Installer support libraries for your computer, you may
download them directly from Microsoft
| ||||||||||||||||||||||||||||||||||||||||||||
| See also: | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| See also: | ||||||||||||||||||||||||||||||||||||||||||||
| The distributed.net dnetc MSI installer is designed to not only be friendly to new users, but it is also easy for network administrators to rapidly deploy to machines within their Windows domains.
When the MSI installer is run interactively it prompts for the participant's email address. It defaults to "rc5@distributed.net" if it cannot find another address from an existing dnetc.ini file. The default can be changed by editing the MSI Property called "DNETC_PARTICIPANT_ID".
Additionally, the default installation startup mode is normally to create a shortcut in the All Users' Startup folder. If you want to make the MSI installer default to installing the client as a service, you can change the MSI Property called "DNETC_STARTMODE" and changing it from "AllStartup" to "Service".
| ||||||||||||||||||||||||||||||||||||||||||||
| The MSI Property values mentioned above can be permanently persisted into the MSI file itself by editing it with an MSI editor.
One common (and free) editor is the Microsoft "Orca" editor that comes with the Windows Installer SDK. Unfortunately you must install the entire Windows Installer SDK from http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ in order to get it. After you have installed that SDK, inside of the \Program Files\Microsoft SDK\bin\ directory there will be an ORCA.MSI file, which you can in turn install. Doing so will add an "Edit with Orca" context menu item when you right-click on any MSI file. Navigate to the "Property" table in the left-pane, and then find the Property value that you want to modify in the right-hand pane. Other MSI installer development products (such as Wise for Windows Installer, or InstallShield for Windows Installer) include the ability to edit exiting MSI database files. For a list of some of the other utilities available (both commercial and non-commercial) visit http://www.installsite.org/
Windows Installer also includes an MSI automation interface that can be used to programatically modify MSI database files via COM programming. It is possible to write small scripts (such as in Visual Basic, VB Script, or even Perl) to use COM and modify Properties within a MSI database.
| ||||||||||||||||||||||||||||||||||||||||||||
| The dnetc MSI installer can also be scripted to silently install by using the "msiexec.exe" command-line utility. For example, this will silently install using all of the defaults that are stored within the MSI database (omit the trailing "/qn" if you don't want a silent install):
msiexec /i dnetc486-win32-x86.msi /qn You can also override Property values when you use the command-line technique if you do not want to bother with modifying or editing the MSI database:
msiexec /i dnetc486-win32-x86.msi /qn DNETC_PARTICIPANT_ID="user@domain.com" DNETC_STARTMODE="Service" You can also automatically uninstall the client (assuming it was installed with the same MSI database) with something like:
msiexec /x dnetc486-win32-x86.msi /qn | ||||||||||||||||||||||||||||||||||||||||||||
| If you are Domain Administrator of a Windows 2000 or Windows 2003 Active Directory network, you can use Windows Group Policy software installation to transparently install the dnetc MSI on machines throughout your network. Group Policy software installation can install software remotely onto Windows 2000, Windows XP, and Windows 2003 computers that are members of your domain. For more information, see http://www.microsoft.com/technet/treeview/default.asp?url=/technet/prodtechnol/windowsserver2003/proddocs/entserver/ade.asp
It is highly recommended that you test deployment of the dnetc MSI to a small set of computers before widely deploying it on large networks, in order to verify that it installs cleanly and does not introduce any other problems. You can use organizational unit containers to "assign" the dnetc MSI to just a limited set of computers. When using Group Policy software installation, the dnetc MSI should be "assigned to computers" (not "published to users" or "assigned to users"). This is because the client cannot be installed per-user. When software is assigned to a computer, it will be installed while the computer is sitting idle at the Windows login dialog screen.
You should be sure to edit the MSI Properties (mentioned above) so that the e-mail address of your choice will be used by the client. Otherwise the default address will be used by the client when it is installed.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Some of the client's command-line options take a project parameter as an argument. For client versions 2.90xx, the currently acceptable project parameters are "ogr-p2" and "rc5-72". For client versions 2.91xx, "ogr-ng" and "rc5-72" (it is no longer just "ogr" or "rc5").
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Yes there is. You can find the "client networking" tutorial at: http://www.distributed.net/docs/tutor_netopt.php | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| All clients support SOCKS4 and SOCKS5, as well as allow communications to go through HTTP proxies.
For a large number of machines behind a firewall it may be simplest to run a personal proxy within the firewall through which all client machines will transfer keyblocks.
If you suspect that your computer is being blocked by a firewall, it
can be helpful to see how your web browser is configured. If you can
figure out how it manages to talk freely with the world then
perhaps the same strategy can be used for the client. For
instance, from within Netscape you can select "Options" / "Network
Preferences" and see if it is configured to communicate through a
firewall. Often, you can just take this information and plug it
directly into the client and everything will work perfectly.
| ||||||||||||||||||||||||||||||||||||||||||||
| Consider also looking at the following document: http://www.distributed.net/docs/tutor_netopt.html#no_firewall | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Simply use the schedule facilities within your operating system to script executions of "dnetc -pause" or "dnetc -unpause" or "dnetc -flush" (or whatever).
Virtually all operating systems support crontab or "at" events. Win9x systems can use the "Scheduled Tasks" feature.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| The most common reason is because you are located behind a firewall and
the client can't get directly out to the internet. There are work arounds
as described in the next section. Intermittent network errors can also
occur due to poor conditions on your LAN, poor phone lines, or heavy
traffic on the internet itself. There have been some problems with earlier
versions of the client being overly sensitive to response times.
These problems have been mostly resolved.
| ||||||||||||||||||||||||||||||||||||||||||||
|
If you are getting "Unable to resolve..." messages from the Linux client, you may be having a compatibility problem with the "glibc" library. Prior to build v2.8008-459, distributed.net provided separate client binaries with "glibc20" and glibc21" in their file names. You had to choose the correct version in order for name resolution to work.
Starting with build v2.8008-459 of the client, there is now a single unified Linux binary (for each processor architecture type), instead of separate ones for each architecture and library combination. The name resolution incompatibilities have been worked around by using "clever" dynamic symbol loading techniques, but this didn't work very well (problems ranged from segfaults to hanging threads to simply not-working). So, from v2.8011-463 on, the client does not even bother trying to work around the insanity introduced by glibc, and instead pipes/parses the output of 'host'. If you find that your Linux client is still reporting an error during connection attempts, it's probably because you do not have the bind tools installed on your computer. Look for a "bind-tools" binary package in whichever packaging format is appropriate for your particular flavor of linux.
More recently, starting in v2.9008-490 the Linux client is now statically compiled with ucLibc (instead of glibc) and no longer has any dependencies on the "host" utility. The only requirement is that your /etc/resolv.conf be properly configured with valid nameservers.
| ||||||||||||||||||||||||||||||||||||||||||||
| I noticed that (at least on Unix) a running client does not take any notice if you change DNS servers. Look out for spurious UDP packets to the old nameserver (netstat -tn), and a failure to flush buffers once the old nameserver has packed up and gone home. Restarting the client will fix this.
This applies to any application that uses the ISC resolver, which only loads /etc/resolv.conf (into static storage) once.
| ||||||||||||||||||||||||||||||||||||||||||||
|
To simply set the address manually, also solves the problem. By using nslookup or ping, I found the IP address of the name it failed to resolve. Then it was just to start the client with:
If they change the ip address, or that server goes down, the client will fail. So I have the client running in a detached screen. And I check the output from time to time. [Ed: This solution is not recommended.]
| ||||||||||||||||||||||||||||||||||||||||||||
|
You can also setup dist.net to run offline, and setup a cron job to grab the IP of the keyserver and update the cache hourly. You may have to adjust the grep/sed expressions depending on your local flavor. /usr/local/dist.net/dist.net:
#!/bin/bash
# script to start, stop, restart, or update cache for the dist.net client
# is dist.net client on?
distnetON=$(ps --no-headers -o %c -C dnetc)
function start() {
# run dist.net client offline
/usr/local/dist.net/dnetc -quiet -runoffline
echo "Started distributed.net client"
}
function stop() {
/usr/local/dist.net/dnetc -quiet -shutdown
echo "Stopped distributed.net client"
sleep 2
}
function update() {
# ping the keyserver, grab the ip from the output, and update the caches
/usr/local/dist.net/dnetc -quiet -update -a $(ping -n -c 1 us.v29.distributed.net | grep \( | sed -e 's/^PI.\+\.net (//g' -e 's/) fro.\+$//g')
}
if [ -x /usr/local/dist.net/dnetc ]; then
case "$1" in
start|restart)
# make sure that there are no clients running
if [ "$distnetON" = "dnetc" ]; then stop; fi
# now start it up
start
;;
stop)
if [ "$distnetON" = "dnetc" ]; then stop; fi
;;
update)
if [ -e /var/smoothwall/red/active ]; then update; fi
;;
*)
echo "Syntax: $0 [start|restart|update|stop]"
exit 1
;;
esac
fi
exit 0
/etc/cron.hourly/updateksip:
#!/bin/bash
# cron.hourly script to update the dist.net clients key server IP address
# if dist.net client not running, then start it
if [ "$(ps --no-headers -o %c -C dnetc)" != "dnetc" ]; then
#/usr/local/dist.net/dist.net start;
echo "not running"
fi
# check if red interface is connected
if [ -e /var/smoothwall/red/active ]; then
# update in/out caches
/usr/local/dist.net/dist.net update
# write to smoothwall log
logger -t smoothwall "dist.net: cache updated"
fi
exit 0
Just put the dist.net file in the directory where your dist.net client is, and adjust the paths, and it should work. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
To simplify these directions, assume that "Laptop" refers to the
non-networked machine.
On the networked machine:
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Yes you can! If you are sneakernetting clients, or you are having problems with the client connectivity through a firewall you can always get (fetch) and send (flush) work units via email.
You actually would send or be sent a complete buffer file.
Up-to-date instructions can be found by sending a blank email to:
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Yes! The clients are designed for this and the file locking that
exists in network file systems will prevent multiple clients from
updating a buffer file at the same time. The client implements file-locking and automatic retrying so that it is pretty safe to allow multiple computers access the same buffers at the same time time.
Examples of supported file sharing mechanisms include Windows file-sharing (SMB/SAMBA), UNIX NFS, Netware server volumes, AppleShare, and others. This is in fact one of the recommended ways if you have a small number of machines that are not directly connected to the Internet, but have at least one machine that is connected and can share a buffer file to the others.
However, if you have more than 20 or so machines, then you may want to consider running a personal proxy on the "Internet-connected" machine, and allow all of the other computers to retrieve blocks from the proxy.
| ||||||||||||||||||||||||||||||||||||||||||||
| Be sure to understand that while it is possible to share input and output buffers between multiple clients over network filesharing, checkpoint files must not be shared! This is very important, because doing so will cause all of your clients to do the same duplicated (wasted) work.
To work around this, you can either disable checkpointing entirely, or set the checkpoint file to be saved to a path that is local (or at least different) for each machine.
| ||||||||||||||||||||||||||||||||||||||||||||
| SAMBA note: Samba supports "opportunistic locking", which implies that the Samba client's view of the remote volume is cached. This option is on by default. Consequently, if you are accessing data on a samba mount both via Samba and via the native-FS, you must put "veto oplock {paths}" in your Samba configuration.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| The block size is really only a "request" by the client. The proxy will attempt to provide the blocksize requested if it is available. If no blocks are available equal to or greater than the blocksize requested, the proxy will provide the largest available. If a block is available with a larger blocksize, the proxy will split the block to create the size requested. Client version 2.9103-509 or greater is required for blocksize configuration. Proxy version 347 or greater is required for support of larger blocksizes (greater than 1*2^32). The blocksize parameter is only suppported for RC5-72. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| If the client is auto-dialing itself (or triggering your Operating System to automatically dial) too frequently, then that is because it does not have enough work to process during the time that you are offline. So you need to configure the client to keep enough workunits ready so that it will not run out. See the link below for information about how to configure your work thresholds.
| ||||||||||||||||||||||||||||||||||||||||||||
| Additionally, since your dialup requires a password, it is silly to allow the client to ever trigger auto-dial by itself. Therefore, you should configure the client to use the "Lurk-Only" mode, that is described in the link below.
| ||||||||||||||||||||||||||||||||||||||||||||
| This question has already been answered with this post: | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| The client actually cannot be configured to download a specific number of workunits--you instead configure how much "work" it try to maintain. When the client makes network connections, it will fetch enough additional workunits to fill itself up to that specified level.
The amount of work can be configured by specifying either one of the following for each contest: a) number of workunits to buffer for that contest. Once you've determined how long it takes your computer to process a single workunit, you can approximate how many you will need to last the timeperiods when you are disconnected from the Internet. This value is set in the "Fetch work threshold" option in the client configuration.
b) number of hours to buffer for that contest. This will allow the client to do a quick-benchmark the that it can estimate how many workunits it will need, saving you the trouble of doing the above calculation yourself. This value is set in the "Fetch time threshold" option in the client configuration. (Note that you must be sure to set "Fetch work threshold" for that contest to "-1" for the "Fetch time threshold" to be obeyed). | ||||||||||||||||||||||||||||||||||||||||||||
| One last note for modem users. It is beneficial to enable the "Lurk-only" mode. This is available under: "Buffer and Buffer Update Options" / "Keyserver-client Connectivity Options" / "Modem Detection Options" / "Dial-up Detection ONLY mode".
"Dial-up Detection ONLY mode" will ensure that your client AUTOMATICALLY updates the total number of packets it has to process when you connect to the Internet. (That is, it will not ever trigger an autodial by itself--it will wait for you to establish an Internet connection.) At the same time, it also will automatically send back all completed data packets. This is all done without any intervention on your part
| ||||||||||||||||||||||||||||||||||||||||||||
| If you don't mind allowing the client to occasionally cause an auto-dial, then instead of "lurk only" mode, try the "lurk" mode ("dialup detection mode"). In that configuration, the client will opportunistically fetch/flush when it sees your modem is connected. However, it will also automatically dial (and automatically disconnect when done) if it ever runs out of blocks.
If you configure reasonable enough work thresholds that match your normal dialup usage behaviors, then the client will not usually need to make connections by itself because it will already have enough blocks.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| If the client is auto-dialing itself (or triggering your Operating System to automatically dial) too frequently, then that is because it does not have enough work to process during the time that you are offline. So you need to configure the client to keep enough workunits ready so that it will not run out. See the link below for information about how to configure your work thresholds.
| ||||||||||||||||||||||||||||||||||||||||||||
| If your client is causing your Operating System to auto-dialing your network connection for you, but the client doesn't ever disconnect your modem, then that is because you have not told the client that you have a dialup connection. See the link below for information about how to configure the "lurk" or "lurk only" mode.
| ||||||||||||||||||||||||||||||||||||||||||||
| This question has already been answered with this post: | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| My network is not connected to Internet permanetly, it's on dialup. Often it is not online for a couple of days, so when i check my clients, they have begun to work on random keys.
| ||||||||||||||||||||||||||||||||||||||||||||
| This question has already been answered with this post: | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
Terms used by the distributed.net client
Obsolete, historical terms: The first and second generation of clients ran only crypto-projects: RC5 and DES. These two projects were sponsored by RSA and had a winner (and the prospect of monetary award), and as such were called contests. Since a computer is capable of processing many hundreds of thousands of RC5 and DES keys per second, counting in single keys quickly becomes onerous, and the very first generation of clients introduced the unit of 228 keys, as a handier unit of measure. These first generation clients worked solely with this number, both as the number of keys it sent/received/processed as well as the number of keys used to represent "effort", or the "unit of of work" done, and what was displayed on the stats server. Consequently, this number of keys came to be known as a work-unit. The second generation of clients introduced the ability to send/receive/process many more than 228 keys at once. For the purpose of (backwards-compatibility and) statistics, the 228 key "unit of of work" retained its meaning, but the term used to represent the number of keys being sent/received/processed at once had to be changed. Since the number of keys being sent/received/processed continued to be a multiple of 228, the unit being sent/received/processed was called a "block of work-units", or in short, a block. With the introduction of non-crypto projects such as OGR, the terms contest, work-unit and block had to be reconsidered. OGR neither had a winner, nor did it use keys, nor did it have a fixed number of iterations ('keys' in crypto-parlance) per "unit-of-work", nor could multiple "units-of-work" be combined into "blocks of work-units" for sending/receiving/processing. Indeed, for OGR, there was a tendency to revert to the older meanings, since a stub is a work-unit in the oldest sense of the term, both as a literal "unit of work" and as the unit that is sent/received/processed. To overcome this confusion, more generic terms project, stats-unit and packet came to replace the older contest, work-unit and block respectively.
However, old habits die hard, and the old and new terms are often used interchangeably. While not technically correct in the generic sense, the old terms are still perfectly valid for the crypto-contests, errr... crypto-projects. :)
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| No, it's not.
Unless configured otherwise, the client only uses *idle* time (i.e. the cpu time that would go 'wasted' because no other task or application wanted it).
When you are watching CPU utilization (such as with Task Manager or "top"), your computer might not be running anything else that needs to consume a significant amount of CPU time, and consequently you see the dnetc client using 100%.
If however you were to have another task running in the background that was using CPU time, you'd see the client automatically use that much less.
| ||||||||||||||||||||||||||||||||||||||||||||
| The way this works is by relying on the "process priority" levels provided by your operating system (OS). Your OS is constantly switching between programs at a fixed interval, called a "time slice", which is usually less than 100ms.
Each time slice, the OS temporarily stops whatever program is running and checks to see if there is any other program that needs to use the CPU. If any other program needs to run, the OS allows it to do so for a time slice. It then repeats the cycle, checking with all other programs that are currently running. There is also a "priority" for every process in the system that is honored by the OS that allows it to give the opportunity to run more frequently to more important programs. Having a higher priority will mean that a program will have less delay between when it needs a time slice and when it actually gets to have a time slice. Consequently, having a lower priority will mean that a program must wait for higher priority programs to have had their chance to use time slices already.
The dnetc client runs at the "idle" priority, which is the lowest priority offered by the operating system, and will be lower than any other normal priority application. This ensures that all other running programs will have plenty of opportunities (tens to hundreds of chances per second) to have used your CPU. No other programs must need to have fully used it, before the OS will allow the dnetc client to run for a time slice.
| ||||||||||||||||||||||||||||||||||||||||||||
| Additionally, if you are concerned that the dnetc client may interfere with the performance of your other programs, there is a configuration option called "Pause when running" that can be enabled. It allows you to specify a list of program names that will cause dnetc to stop using CPU whenever any of those other programs are running. As soon as all of those other programs are exited, then dnetc will continue running (still at idle priority).
Normally, the "Pause when running" should not be needed since the OS priority levels handles scheduling perfectly well, but a few users have extra sensitive concerns and have found this option useful.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
This is intentional behavior.
The client's configuration includes a "load-work precedence" setting that allows you to select the load order (and optionally disable specific ones). However, this setting does not prevent the client from working on other available projects if it does not have any more "ready work" for any of your earlier priority projects. Notice that the normal behavior of the client is to not automatically attempt to fetch more blocks (for any project) until blocks for all enabled-open projects have been depleted. Because of this, if you do not like the fact that your client is not working "solely" on the first project that is enabled and open, you can do any of the following:
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
How can I tell the client to spend 50% of time doing OGR and 50% doing RC5?
time: you can't and neither can the client. It's not possible to predict how much time it takes to do an OGR packet.
packets: But, if you were to count in completed packets
rather than time, then all you'd need to do is ensure that the thresholds
are equal, and over the long run client will do 50% OGR and 50% RC5 packets.
If you want to work on only one project see: My client is switching between projects instead of working only on my first choice
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Normally the client is able to shut down cleanly, the block is saved and will be resumed at the point it left off when you restart it later.
However, in the event that your computer crashes or you lose power and the client is not able to properly save its place. Blocks that have not been returned to the keyservers will eventually be redistributed. In order to accommodate slower clients and to minimize duplication of work
there is a long period after which a keyblock is assigned, minimally 90
days. If we reach the end of the keyspace without finding the winning key,
we will start back at the beginning and assign the unreturned blocks.
| ||||||||||||||||||||||||||||||||||||||||||||
|
One other way to make sure your computer doesn't lose it's work even when your computer crashes and you have to reboot is to use a checkpoint file.
[In the client configuration under "Buffer and Buffer Update Options" >> "Checkpoint Filename"].
This checkpoint file will keep track of your work and update itself every few minutes. If your computer does crash (or you have to do a sudden reboot) the client can pick up almost right where it left off and not lose or discard a data packet.
| ||||||||||||||||||||||||||||||||||||||||||||
| In some short term projects, such as DES, blocks may be reissued in less than 90 days. In these situations it best to keep your buffers small to avoid duplicated effort. When such projects are underway please check back the .plans frequently to monitor the status.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
The time reported by the clients is based on your computer's
internal clock however it is converted to and reported in UTC: see | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| A 'R' in the middle of a percentage bar stands for 'resume'. This
is the point at which the client was working on last time it was
shutdown; it just resumed and jumped to that point in the block. Note
that as a result of not having to process the entire block, resumed
blocks will be processed faster than normal blocks; the time difference
this makes obviously depends on where in the block it resumed.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Partially completed blocks can be 'buried' in the buff-in.* files; if
you routinely shut the client down and then fetch new blocks, new, full
blocks will be added to the buff-in.*. The partially completed blocks
will not resurface for a while, perhaps a couple of days.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| This message means that the client just loaded in a partially
completed block that had been started with a different version of the
client. This normally occurs if you upgrade the client revision or are
sharing buffer files with a dissimilar computer. Note that this is not
a problem; all that is happening is that the client is reprocessing that
entire block. This is a precaution against possible incompatibilities
between cores. If this is an upgrade, you probably won't see that message until your next upgrade. If you're sharing buffer files, you can minimize the occurance by never shutting down the clients.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
From: Nathaniel Cameron Begeman <nbegeman@engin.umich.edu> Subject: Speed table Date sent: Tue, 27 Nov 2001 03:05:59 -0500 The following is a selection of RC5 core/processor speeds on the various machines at my disposal. Unless otherwise specified, the core used is the one that was automatically selected. The Clocks/key column is the number of processor cycles required to process one key. The keys/s/MHz column is the crunch rate per Mhz. Processor Clocks/key keys/s/MHz 68000 81 68010 85 68020 361 68030 384 386/386SX 2040 490 386/386SX(SMC) ~1350 740 (Latest self-modifying core. Estimate) 68040 907 486/486SX 1020 980 Itanium (GCC 3) 980 1020 486/486SX(SMC) 960 1040 (Latest self-modifying core) Pentium 700 1430 P4 700 1430 (4 clock latency on rotate left!!!) AMD K6/K6-2/K6-3 610 1640 UltraSparc II 507 1980 Pentium-MMX 485 2060 PowerPC 601 421 2375 (allitnil) Celeron/PII/PIII 340 2940 68060 3030 AMD K5 310 3220 PowerPC 603/604 296 3378 (lintilla) Athlon 290 3450 PowerPC G4 110.25 9070 (AltiVec) | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| If you're seeing slowdown during the night / lunch / whenever you're
away from the computer, it's probably due to one of two things. The
most likely cause is that another program is hogging processor time. Some
web browsers are known to eat processor time, especially while on pages
with animated images. However, the programs that eat the most processor
time are screensavers. OpenGL and 3-D screensavers in particular are known
to consume a LOT of processor time. For this reason, we recommend that you
either disable your screen saver, or switch to a less CPU intensive one
(a blank screen one, or one that shows a simple text message, perhaps.)
The other cause of a slowdown could be your computer entering a 'sleep
mode' where it powers most components down. To disable automatic power
down, consult your system's documentation.
| ||||||||||||||||||||||||||||||||||||||||||||
| Also, check for scheduled tasks which may be running during off hours. Scandisk, Defrag, Compression Agent, and most antivirus software will schedule themselves for nighttime hours if you let them. Unless you have a critical need to run any of these daily, schedule them to happen once a week or month instead.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
The speed of the distributed.net client running in Windows may be severely limited by the keyboard setting in Control Panel. New multimedia keyboards like those coming with Hewlett Packard computers have software which enables extra keyboard keys to launch web sites or control the speaker volume from the keyboard.
In my situation, I noticed the distributed.net client running very slow. I ran wintop.exe, a windows Powertoy, which is freely available from Microsoft and also downloadable as a standalone utility from add-ons page, to determine what programs were using the processor. Surprisingly, the client was only getting 2-3% of the processor time and the keyboard program was using 95-98% of the idle time of the computer. Once multimedia buttons were disabled in windows control panel, the client increased it's speed dramatically.
For HP computers, go to control panel, select Keyboard and then deselect "Enable multimedia buttons and onscreen display" so Windows will not use processor time to continually check multimedia keys for presses.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| It is definitely quite satisfying to see the completed percentage of an individual work unit packets go from 0% to 100% very rapidly, particularly when you buy a brand new computer and can compare that a packet previously took much longer to finish on your older machine.
However, it becomes increasingly less efficient for everybody as more and more people get faster machines too. The greater amount of network fetching and flushes translates directly to a greater amount of network bandwidth required by distributed.net's servers. Furthermore, as the number of total people participating in distributed.net grows, the total amount of required bandwidth increases as well. It might also be worthwhile to point out that your individual client actually has an overall reduction in work efficiency with smaller packets, since it must spend a greater amount of time switching between packets and restarting a new packet with different packet information. Ideally we could distribute packets that are dynamically sized to exactly correspond to the speed of each machine, so that each packet would require exactly 24 hours or so. However, in the non-ideal world this is not quite as doable and so a compromise must be made and a size selected for consistency purposes. Just for illustrative purposes, in RC5/DES/CSC the "work unit" size was 2^28 keys (and packets could be be a multiple number of contiguous "work units"). In OGR-24, the "work unit" was selected to be the 5-stub. For OGR-25, since the total ruler length increased by one mark, the work unit size was also increased by one mark, yielding the 6-stub. For future projects and contests, it is very likely that the work unit size will be selected such that a "typical" machine will process an "average" work unit will be completed in approximately 24 hours or so. Obviously, there is some amount of variability in the interpretation of "typical" and "average".
In the past, the primary argument for requiring a moderately small packet size was so that the amount of wasted work could be minimized if a computer crashed while processing a given work unit. However, since the original release of the distributed.net clients, the automatic "checkpointing" feature has been introduced, allowing no more than approximately 10 minutes of computational work to be lost. Although checkpointing is not enabled by default, if you feel that your machine might be unstable and wish to accept the minor performance penalty that checkpointing incurs, it can be easily enabled. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
A few tips for achieving optimum client performance:
On all operating systems:
| ||||||||||||||||||||||||||||||||||||||||||||
| Note: if you find out your client is auto-selecting the wrong core, don't write to help@distributed.net (as stated above) but go to the bug database and file a bug report.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
This is the way the client has always dealt with the whackyness of Windows.
It is not new. Its just that the "bench-all-cores" option takes longer that
the old style bench, and is thus more noticeable.
Benchmarks running at (what may appear to be) realtime priority is a typical manifestation of the worthlessness of Windows priority levels and scheduling. Its impossible to have an IDLE priority process and have responsive GUI and file/net I/O at the same time, so what the client does is boost the priority of the main thread (the one doing file/net I/O) and the GUI thread to the lowest thread priority that is greater than or equal to what other applications have (9 when in the foreground, 7 when in the background). At some point in the distant past, and on a day when everybody at Redmond wasn't thinking very well, the Win32 designers decided that all of the IDLE priority class priority levels with the exception of the very highest would be lower than the above mentioned "9 or 7" (normal) priority level. And the very highest is almost twice that of normal priority. The priority table for IDLE priority class looks like this: 1, 2, 3, 4, 5, 6, 15. As you see, there is nothing between 6 and 15.
The reason the client has to use IDLE priority class is because its the only way to ensure that the user's "priority" setting does not cause a cruncher to have a thread priority >= 7, which would otherwise cause the whole system permanently be fighting for cpu time.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Overclocking has been known to cause your machine to become more unstable, more prone to crashing, produce greater heat, and shorten the life of your processor. Furthermore, it is known to cause programs to unreliably execute code correctly, resulting in occasionally incorrect calculations. This includes the functioning of the distributed.net client.
(Remember that even one miscomputed key within a block, that happened to contain the key we are looking for, can ruin the entire project and invalidate the work of the hundreds of thousands of other participants if an entire re-check must be done.) Furthermore, because the distributed.net client fully utilizes your processor and keeps it continuously busy, your processor will generate more heat than it would if it were completely idle. For systems that are properly designed to incorporate sufficient cooling, this should not be a problem at all. However, for machines with inadequate or broken/failing fans this may cause a buildup of heat, causing the same malfunctioning that may occur in overclocking environments. Even running the built-in "test" functionality within the client may not be sufficient to detect such occasional failures, since the failures may only occur after a sufficient amount of heat has already built up. It might be beneficial to run your client with disabled networking for a few hours (so that it will not transmit back any potentially bad blocks), and then quickly stop the client and activate its "test" function to see if that reveals any problems. However, although we try to be thorough in the "test", it may still not detect all occasional CPU malfunctionings due to heat stress. In summary, we highly recommend not overclocking at all. However, if you feel you must, it is probably not best to overclock to the very verge of crash tolerence--one or two steps below your systems operational maximum might be a better choice. Either way, please be sure to have *more* than sufficient cooling.
Note that AMD processors generally, and the K6 series in particular have lower heat tolerance than, say, Intel processors, and have a tendancy to overheat even without overclocking. Numerous "bug" reports about the client causing the whole system to become unstable have been reported (See bug #200, #242, #1262, #1276, #1300,...), which is of course not the clients fault at all.
| ||||||||||||||||||||||||||||||||||||||||||||
| When a processor is overclocked, there are actually two issues that can cause malfunctioning: The first issue is insufficient electricity--if a processor is overclocked by 15%-50% (depends on the processor) it may not operate correctly, to avoid that you need to increase voltage, and this makes a processor HOT. The second issue is therefore the heat build-up caused by increased voltage (and also increased frequency), so you need an extra heatsink or fan or both.
RC5-64 is a serious project that demands RELIABILITY, and it would be a good idea to run the processor at the speed it was designed to run.
| ||||||||||||||||||||||||||||||||||||||||||||
| I also have found that on many motherboards the overheat will cause a processor slowdown of around 50-100-150MHZ until it cools off.
The interesting part is if you are running Windows NT, Linux, FreeBSD, etc you won't notice much until you install dnetc, since the OS runs "HLT" instructions which cool the processor during idle cycles. When dnetc is running it cannot do that, so it overheats, slows down, and your block rate gets really sucky. It is really a terrible idea to do it just for dnetc. If you do it for other reasons, keep an eye on the temperature. Please don't make all my and other's work in vain by screwing up the contest!
| ||||||||||||||||||||||||||||||||||||||||||||
| Front line report of errors caused by overclocking: http://blogs.msdn.com/oldnewthing/archive/2005/04/12/407562.aspx
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Using a different Operating System on the same hardware usually produces less than 10% change in dnetc speed at most. Operating systems are almost exactly comparable in terms of efficiently using the processor's speed for executing programs. If you're expecting to get a major boost in keyrate by rebooting your machine into plain MS-DOS for the night and running the DOS client instead, you'll probably find that nearly any gain you've won was lost during the time you spent shutting down your machine and rebooting.
If you do see any significant differences in client speed in a different OS, there is more likely just a misconfiguration in the slower OS that is causing it to be unable to utilize your processor correctly. For instance, it may be operating the processor in a reduced power APM mode, or you may have an incorrect/buggy hardware driver that is causing it to constantly poll that device, or there may be some stray process/screensaver that is just stealing processor cycles. You should investigate those causes first.
If you upgrade your hardware and find that your client is operating significant slower, when you were expecting it to go faster with your newer hardware, you should definitely check your hardware settings. This includes settings such as APM power management, clock rate, motherboard frequency, and cache enablement features. | ||||||||||||||||||||||||||||||||||||||||||||
| From my personal experience, OS does contribute significantly to the performance of the client. I am currently running both Windows 98 SE and Redhat Linux 6.2 on my K6-2/500 system. Under Win98, I get approx. 580K keys; under Linux, I get approx. 860K keys. In both cases, I'm not running anything else. I'm just guessing that Windows start up a lot more "junk". Another thing I can testify to is how much a GUI does NOT hog CPU. I get about the same performance in Linux regardless of whether I'm in the command-line or in X. | ||||||||||||||||||||||||||||||||||||||||||||
| Windows is actually a disaster in GUI performance. For a quick checkup, open up your Task Manager and violently move your mouse around the screen. On my Celeron-466 I can get dnetc down to 75% CPU load this way. This is because Windows more or less sends a windows message to an application if you so much as look at your screen. As a professional Windows GUI developer I have to defend this approach, since it makes for easy and fast creation of VERY powerful GUI's, and X is simply not up to par with that. That's why X is much more effective on the CPU load when you're actually actively using your computer. There should not much of a difference when the computer is idle though. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Modern Intel Pentium 4 processors have a "hyperthreading" feature that can be enabled (typically within the system BIOS) that will make the system appear to have two processors. However, hyperthreading does not physically give you the performance of two equivalent processors. It attempts to provide improved performance by allowing contention-bound applications to more efficiently context switch between different threads so that their responsiveness is better.
With two processors (from the Operating System's perspective), it provides greater opportunity for a second thread blocking on the result of the first thread to already be "running" on the second "processor", reducing the OS overhead with identifying which thread to pick next and context-switching it in. The dnetc client is computationally bound and the cruncher threads are not blocking on activities of the other, so it is probably not the intended type of application that would benefit from Hyperthreading. OGR crunching performance can improve with hyperthreading while RC5 performance typically suffers with it enabled.
Also keep in mind that when running in Hyperthread-enabled mode, the client is likely automatically detecting two processors and is able to run two cruncher threads. The combined speeds of the two threads are closer to the speed in non-Hyperthread mode. (The remaining difference can be attributed to the computational overhead of the Hyperthreading implementation.) Also note that when hyperthreading is enabled, interactions between other applications and the client can alter the performance of both.
| ||||||||||||||||||||||||||||||||||||||||||||
| For more background information about how hyperthreading works see: http://www.2cpu.com/articles/ht_explored/index.html http://arstechnica.com/paedia/h/hyperthreading/hyperthreading-1.html http://www.intel.com/technology/itj/2002/volume06issue01/art01_hyper/p01_abstract.htm | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
There are several factors at work here that affect the performance of the client.
In the case of RC5, which is a 32bit algorithm, a 64bit processor provides no real advantage, in fact it can be a slight disadvantage. For OGR however, 64bit processors can substantially improve performance as fewer registers are needed to store the basic OGR data structure and thus fewer instructions are required to manipulate it.
On some platforms, X86 and AMD64, for example, different cores are required or desired for the 32bit and 64bit clients. These cores are usually optimized differently and thus have differing performance. Cores are occasionally modified and improved, which can result in performance differences arising between client versions. Further to these factors, the compiler or options used when building a client port may affect the core performance.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
All of them :) Well, almost. Minimum requirements are a platform ...
The list of currently supported clients is on the the official client download page. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
The project organizers certainly encourage cross-platform
development and porting but this is being weighed against the
potential for sabotage in the decision to release the code. Please
contact one of the organizers to discuss the possibility of obtaining
the source or to get a port for your platform.
Clients (albeit cannot participate) can be built from the source available
on the source download page.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
The client, or the currently running projects rather, are not particularly
suitable for clustering. distributed.net's projects have so far
all had high orthogonality/fine granularity, which being highly suitable for
distributed computing, are not going to benefit from additional distribution.
The crunchers are designed for pure computation, they make no libc calls, and do not interact with any other part of the application. All that is left to a controlling thread which regularly polls the crunchers (which are also threads and so share address space with the controller) to check for "done, need more work" but thats about it. In the long run, making the client cluster-aware is a tradeoff: On one hand you'd have the usability issue - being able to manage a single client, on the other hand you'd have some loss of efficiency due to the IPC overhead. A general-purpose message-passing scheme may benefit distributed.net in the future but it isn't of any real value to the client for improving overall speed at the moment.
| ||||||||||||||||||||||||||||||||||||||||||||
| A MOSIX cluster (see http://www.mosix.org/) is a process migration style
cluster. Processes can be migrated to different nodes after being started, in
order to maximize the processing power of the cluster as individual nodes
become idle.
Client versions prior to v2.8014.468 were capable of being used on a MOSIX cluster. Subsequent client versions use shared memory which prevents migration on a MOSIX cluster. A separate client for Linux-x86/ELF using pthreads was made available as v2.9001.478 which inherently disabled the need for shared memory. Starting with client v2.9003-480, the generic client disables the use of shared memory when specifying the '-numcpu 0' setting on the command line.
A MOSIX cluster can then be used to run the distributed.net client by starting
a seperate client for each cpu in the cluster and specifying the '-numcpu 0'
command line option.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
There is some work ongoing to get Nvidia CUDA capable video cards working with the client. ATI CTM is a similar interface for ATI cards. If you believe you can help with either of these ports, feel free to contact us.
| ||||||||||||||||||||||||||||||||||||||||||||
| This bug is being used to track the progress of the nVidia CUDA support:
http://bugs.distributed.net/show_bug.cgi?id=4030
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
These ideas are under consideration. However, some users have also expressed concerns over the security and safety considerations of autoupdating clients, so those issues will also have to be considered.
If implemented, such functionality would be optional and not enabled by default.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Besides the core/project specific data, the client also records the
following in each packet in a buffer:
When a partially completed packet is loaded by the client, and the client
version or OS or processor family or core-number do not match those of the client
that previously worked on it, the packet is treated as if no previous work
had been done at all (all work is reset).
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
"When I try to choose "Benchmark" or "Configure" by right-clicking in the client window, they are both grayed-out. What is going on?"
What you are seeing is the client trying to make a connection to the internet to request more work, or return completed work. There are a few things that you can do.
You can also type "dnetc -help" to get a list of all the commands.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
It is important to preface all mention of hidden clients with a reminder about distributed.net policy on unauthorized installation of dnetc. For full details, see official distributed.net policies.
The hidden capabilities of the client are provided as a convenience to those who are authorized participants. Participants who run or install the distributed.net client on a computer without the permission of the administrator or owner are not permitted. When caught, such participants become ineligible to win any contests, and all past and future work submitted is hidden from stats. If the participant belongs to a team, that team may suffer the same consequences. These consequences apply just as much to the person who sneaks dnetc onto a co-workers computer as to those who write "trojan-horse" applications to propagate the client across the internet.
If you believe your computer is running an unauthorized install of the distributed.net client, please e-mail help@distributed.net so we can fully enforce our policy and assist you with removal.
| ||||||||||||||||||||||||||||||||||||||||||||
| Sometimes circumstances arise where you need to run the client on a system
yet keep it hidden from the user. For instance, sysadmins of large computer
labs are typically in this situation.
All clients (for platforms that support multiple tasks) support the -hide (synonymous with -quiet) option.
On UNIX-ish platforms this is approximately equivalent to launching the client with "nohup dnetc 2>&1 /dev/null &" (Though we highly recommend -hide instead of nohup, due to pipe and signal handling issues. Besides, the redirection prevents the client from warning you when it fails to start.)
| ||||||||||||||||||||||||||||||||||||||||||||
| Windows clients are also capable of running as 'services', which start when the machine starts, and don't shut down until the machine does. (ie, they survive logouts). Although services on Win9x and WinNT are dramatically different in terms of implementation, dnetc attempts to make the behavior between the two environments approximately equal.
To configure the client to run as a service, a) ensure that it can start normally, b) install it as a service with the -install command line switch. The client will then start automatically when you restart the machine.
| ||||||||||||||||||||||||||||||||||||||||||||
| On UNIX-ish platforms, the client will always be identified in ps/top listings as "dnetc". This cannot be overridden, by design.
| ||||||||||||||||||||||||||||||||||||||||||||
| Recent clients on most all platforms support a "pause when running" option that will cause the client to temporarily suspend its operations and consume no CPU if it detects a specifically named process is running. This is intended to prevent the client from interfering with time-sensitive processes,
or accessing the disk when disk access is undesirable. It is not much use as a way to hide the client from process monitoring utilities, such as "top" or the Task Manager, since the total cputime is a giveaway.
| ||||||||||||||||||||||||||||||||||||||||||||
| MacOS Classic client distributions include an AppleScript that you can place in your Startup Items folder to cause the client be launched and the "Hide dnetc" option in the Applications Menu to be automatically activated. The client is still visible and can be re-activated from the Applications Menu however. Alternatively, if the MacOS FBA (faceless background application) version of the dnetc client was distributed with your MacOS download, then you may use that version. The FBA version completely lacks any user interface at all, and will not even be visible from within the Applications Menu. Newer distributions (2.8012.466+) of the client for MacOS Classic may include a client that runs as a system extension. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| We have expiry dates on our beta clients to limit possible damage to ongoing projects. We have previously had to create countermeasures at the network level to deal with broken clients. We do try to create new builds of beta clients regularly, but there is no fixed schedule for this. We value your contributions and hope that you will have patience with us.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| With a Personal Proxy, you can serve distributed.net clients. It allows you to establish one of your own machines as a buffer between your clients and one of the keyservers that are officially run by the distributed.net organizers. This will allow your clients to waste less time trying to connect to one of the main proxies, since the personal proxy will already have more key blocks waiting for your clients when they're ready. | ||||||||||||||||||||||||||||||||||||||||||||
| Answers related to networking of the proxy:
| ||||||||||||||||||||||||||||||||||||||||||||
|
If you have any other questions or difficulties using this proxy, you may send us a message You might also try sending your message to proxyper@lists.distributed.net, which is a mailing list, and you must join it before sending a message to it. For information on subscribing to the proxyper mailing list, visit our discussion page. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Your connectperiod is so short that by the time the last server connection attempt times out, another connectperiod has already passed and the proxy decides that it needs to attempt to make another one. Increase your connectperiod to at least several minutes, or (preferably) set your connectivity mode to offline (or lurkonly on win32).
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| In offline mode, the proxy will never attempt to initiate an outgoing server connection by itself, so it will eventually run out of blocks if it is never given an opportunity to make a connection. You can explicitly force the proxy to make a server connection at any time by sending it a SIGALRM signal on UNIX, or pressing Ctrl-Break while its window is in focus on Win32 (there is currently no equivalent for doing this while the proxy is running as an NT service).
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Personal Proxy version 311 has a verified problem that causes it to fails to connect when you are located behind a firewall, and are using a HTTP gateway proxy, and have specified a non-numeric hostname for the keyserver address.
Some users may also problems with reliable name server resolutions with other builds as well. For both of these causes, you might want to try picking a keyserver and put its IP number into proxyper.ini instead of using a DNS name. For example:
[KeyServer] ipaddress=206.109.6.80 port=2064 | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| The proxy itself does not support any mechanisms to define what allowable time windows it can create upstream server connections. There are no plans to add such a feature due to the foreseeability of everyone wanting slighly varied flexibility in specifying time windows, or other arbitrary criteria.
Instead, the recommended method of handling with such situations is to configure the proxy to run in "offline" mode and use the scheduling functionality of your Operating System to script events that will trigger the proxy to explicitly flush. On UNIX, you can force a flush (even in offline mode) by sending an "ALRM" signal to the proxy's process. There is currently no method of sending a similar event to Win32 proxies though this feature is planned for an upcoming version.
Alternatively, you may also consider scripting an event that will modify your proxy's ini file and change the connectivity mode from "online" to "offline" (or vice versa) at the appropriate times. You can then signal the proxy to reload its INI file on UNIX by sending it a "HUP" signal. When running as a Windows NT Service, you can restart the service with the "net stop" and "net start" commands.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
If you have a proxy that is completely unable to make any sort of outward connections to the internet, there is still hope. Since the the proxy uses a different buffer format than the client, you cannot flush proxy buffers with another connected client. However, you can do the following:
Note that it is important that you MOVE your buffers between machines (or at least replace as you copy them). This is because there is no way to merge proxy buffers, so you want to be sure you do not accidentally end up with two non-empty in buffers, for example. Additionally, it may be necessary to explicitly enable the "expertmode" on the connected proxy's ini file, so that you can specify buffer thresholds that exceed 1000 (since the connected proxy will not have any observable incoming block rate for it to "automatically" size the thresholds for you). | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| There is currently no support for lurk/lurkonly modes under Linux in the personal proxy. However, you can do the following workaround to trigger connections as soon as your ppp connection is first established. Put these lines in your /etc/ppp/ip-up file:
/bin/sleep 5 | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| If your firewall prevents your proxy from doing DNS lookups on it own by any other means, then you may need to explicitly specify the IP address of one of our primary keyservers in your proxyper.ini file.
Note that locking your proxy to a specific IP address may leave it vulnerable to keyserver failures or network connectivity problems that prevent you from reaching that specific IP address. Additionally, be aware that occasionally distributed.net needs to change the addresses of keyservers. Normally, distributed.net actively maintains the DNS entries in the rotating round-robin records (*.v27.distributed.net) so that only reachable, active servers are listed.
| ||||||||||||||||||||||||||||||||||||||||||||
| Another work around is to specify an arbitrary name for the keyserver address in your proxyper.ini and then modify your Operating System's "hosts" file so that it internally resolves that pseudo-name as randomly one of multiple addresses that you specify. On UNIX systems, this is the file located in /etc/hosts; on Windows 95/98 it is C:\WINDOWS\HOSTS; and on Windows NT it is C:\WINNT\SYSTEM32\DRIVERS\ETC\HOSTS.
For example, if you included the following lines in your "hosts" file, then your machine will bypass trying to resolve "us.v27.distributed.net" via a DNS server and randomly pick one of the fake IP addresses listed (you should replace the IP addresses with real ones of current distributed.net keyservers):
10.0.0.1 us.v27.distributed.net | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| The personal proxy can have active and open connections to 32 clients at any one time. Since clients connect infrequently, a personal proxy can serve several hundred clients.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Generally, you should configure your proxy to hold at least a minimum number of blocks necessary to last your clients for 24 hours, and at most 7 days. This of course means that the actual number of blocks you should configure will depend upon how many and how fast your clients are.
After you set up your proxy and have allowed it to run for a couple of days, you should have a good idea of your overall average keyrate (and number of completed blocks) by simply observing the average keyrate reported by the proxy itself in its console output.
| ||||||||||||||||||||||||||||||||||||||||||||
| I have a fairly reliable net connection(dedicated) so I guess I don't really need a per proxy, but I want to feel cool so I use one anyway. I store 100 blocks on my proxy, which is used 6 times over a day by my machines. I've had no problems so far, but this defeats the purpose of a proxy. Point is, you can use as many or as few blocks as you need. You need to tailor your personal proxy to your needs. If you have a reliable net connection for all machines, consider not using a perproxy. If it internet only works on one machine, then 100 blocks should be sufficent, the proxy will connect every several minutes (you can set this) and retrive new blocks if it needs them. If you have an unreliable connection, then I would store abotu 250 blocks per client on the perproxy. I believe trial and error is the best method, test different solutions to see which one works best for you, on your network.
| ||||||||||||||||||||||||||||||||||||||||||||
| My proxy (stats at http://www.dsmarty.com) serves 110 people, they use about 33K per dag, I always have a minimum of 25K available, and a maximum of 50K.
These settings run fine with me!
perproxy.ini:
[rc5-64] | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| The proxy will allow you to arbitrarily specify any number of maxkeysready, up to 1000. Any values greater than 1000 may be interpreted as being equal to 1000 if it does not believe that your rate is substantial enough to
support a need of greater than 1000. This behavior is by design and is intended to eliminate circumstances where users unknowingly request too many blocks without realizing the size potential of the blocks that they have downloaded.
Note that the proxy does not physically modify your ini file to reflect a different value if you specify a number greater than 1000 (it only interprets such values as being something else). If the proxy is unable to allow you to surpass the 1000 stats unit limit normally, then it does not believe that your current rate would satisfy a higher block limit. If you see that your reported block rate displayed by the proxy fluctuates greatly (perhaps due to irregular spurts in which your clients flush large number of blocks), then consider either making your clients flush more frequently. You can also try adjusting the sliding average window to encompass a larger time period, over which your sustained rate might be more indicative of "typical" activity. The last resort is to disable the intelligence with the expert mode described below.
If you read the readme, you'll see the existence of an expert mode option
that will disable the intelligence regarding the 1000 stats unit threshold.
However, you should be cautious in using it since you will no longer be
protected from the safeguards that the limit attempts to protect you
against (unknowingly fetching more blocks than you actually require).
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Be sure that your proxy has at least some "ready" blocks available for clients. When a client connects to your proxy and sees that it does not have any "ready" blocks available, the client (by design) will disconnect from the proxy even if the client has "done" blocks that it could upload to the proxy.
You should check your proxy to see why it is unable to fetch more "ready" blocks. It is usually because of a network configuration error that is preventing it from connecting to the keyservers.
| ||||||||||||||||||||||||||||||||||||||||||||
| Also, be aware that in version 2.8005.453 of the client, the buffer thresholds that you configure for the client are now measured in actual number of work units (instead of packets, which could each contain a varying number of work units). Previously the client buffer thresholds were always specified in terms of packets.
Because of this, it may appear that the client is not ever fetching enough packets to satisfy the amount you have configured in the client configuration, but in actuality it has fetched the number of work units you've specified.
(Note that the personal proxy buffer thresholds have always been measured in terms of work units, not packets).
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| The proxy transmits to distributed.net the email, platform, OS, and client version information exactly supplied to it by the client. However, the IP address that is reported to distributed.net will be that of the personal proxy, not the client. See the README file that comes with the proxy for a list of CPU types and OS types.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
The timestampflags option was introduced in build 313 and allows you to customize the format in which the date and times are displayed within the on-screen console log, the on-disk console log, and in keyblock log files (simultaneously, not individually). The following text is what the proxyper readme lists for the definition of the values for this parameter.
Please note that that the timestampflags parameter is the combination of two flags (64 or 128) plus one of the exclusive mode options (1 or 2 or 3). The modes are not bitmasks, and as such only one may be picked at any time. That is why "3" is listed as a distinct option, and does not represent the combination of "1" with "2". As such, the following list is the actual enumeration of all valid combinations.
It is highly recommended that all future log parsing utilities written by 3rd party developers be capable of parsing any of the timestamp formats. Note however, that the "64" flag does not affect log files, only screen display. Additionally, typically it will not be necessary to take timezone into account (just treat all parsed timestamps as being within the localtime zone and then do not display timezone/UTC labels in your output). As such, only 3 different date formats really need to be parsed (2 digit, 4 digit, and no year). Alternatively, if it is the intention that a 3rd party log parser specifically not support the alternate log formats, then the author of the tool should be sure to clearly indicate what timestamp format is recommended for proper use of his parser tool. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Sorry, there isn't any way. On a personal proxy it extracts the statistics from log files, and fullservers don't log that way, otherwise they'd quickly run out of diskspace. The volume of data is also why they aren't made public by other means (eg for download), because that would eat up all the bandwidth.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| A problem can arise getting a freshly installed 311 proxyper to serve blocks to clients that were previously connecting directly to d.net keyservers. The proxy will not serve clients if its input buffer is empty, but it will not go out to a keyserver and get blocks until there are some completed blocks in the output buffer to send. Clients try to fetch blocks first, and when the connection is refused by the proxyper they do not attempt to flush. A lockout situation thus occurs.
One way to kick the proxyper off is to set maxblocksdone to a small number, then go to a client and manually flush some blocks. This induces the proxyper to connect to a keyserver, whereupon it will fill its input buffer. Now restore maxblocksdone to your preferred setting and restart your proxy. All will be well from now on.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| No. The ppbuf*.rc5 files are not compatible with the client keybuffer files, so clients cannot share the keyproxy's dump files. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Under Windows NT, you can install the proxy as a service if you want it to run in a hidden manner. Under Win95/98, you can use one of the various 3rd party traying/hiding utilities that are available on the net.
I use a utility called Hide-It to do this. It puts an icon in the system tray which you can right-click on to hide/unhide taskbar buttons and even your desktop icons. It can be set to auto-hide apps when they start. It's freeware and works on 95/98/NT. http://www.expocenter.com/hideit/
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
The platforms that we offer the personal proxy for is intentionally very limited, relative to the platforms that are supported for the client itself. As such, we provide platform support for the proxy on only the platforms that we feel have a significant enough popularity. Although this may seem harsh and arbitrary, there are many reasons for this:
If we become aware of new platforms that we do not currently support but offer the significant amount of popularity and widespread usage, we will be happy to provide official support for them at that time. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| This describes the init/shutdown sequence for Linux (SysV systems). Create a file called '/etc[/rc.d]/init.d/proxyper' that looks like this:
#!/bin/sh
if [ -x /path/to/proxyper ]; then
case "$1" in
*start)
if [ -f /path/to/rc5desproxy.pid ]; then
proxyper_pid=$(cat /path/to/rc5desproxy.pid )
kill -15 $proxyper_pid
fi
/path/to/proxyper -detach
echo "started distributed.net personal proxy"
;;
*stop)
if [ -f /path/to/rc5desproxy.pid ]; then
proxyper_pid=$(cat /path/to/rc5desproxy.pid )
kill -15 $proxyper_pid
sleep 2
echo "stopped distributed.net personal proxy"
fi
;;
*)
echo "Syntax: $0 [start|stop]"
exit 1
;;
esac
fi
exit 0
Then create a symlink in each of the /etc[/rc.d]/rc?.d/ subdirectories as follows:For the 0, 1 and 6 runlevels (halt, single-user and reboot respectively): ln -s /etc[/rc.d]/init.d/dnetc /etc[/rc.d]/rc0.d/K10proxyper
ln -s /etc[/rc.d]/init.d/dnetc /etc[/rc.d]/rc1.d/K10proxyper
ln -s /etc[/rc.d]/init.d/dnetc /etc[/rc.d]/rc6.d/K10proxyper
For the 2, 3, 4 and 5 runlevels: (runlevels 7, 8 and 9 are also valid, but not many unix variants have them) ln -s /etc[/rc.d]/init.d/dnetc /etc[/rc.d]/rc2.d/S90proxyper
ln -s /etc[/rc.d]/init.d/dnetc /etc[/rc.d]/rc3.d/S90proxyper
ln -s /etc[/rc.d]/init.d/dnetc /etc[/rc.d]/rc4.d/S90proxyper
ln -s /etc[/rc.d]/init.d/dnetc /etc[/rc.d]/rc5.d/S90proxyper
On entering a new runlevel, init(8) will run the scripts in the /etc[/rc.d]/rc[runlevel].d/ directory of the runlevel it is entering. 'K' scripts are 'kill' scripts, and will be run with the "stop" command. 'S' scripts are 'start' scripts, and will be run with "start".
More on how scripts are processed may be found in your init(8) man page.
According to the above described scheme then, the client will be started on entry into runlevel 2, 3, 4 or 5, and stopped on entry into any other runlevel.
| ||||||||||||||||||||||||||||||||||||||||||||
For recent versions of Redhat Linux, this is a more appropriate
startup script. Note that you can specify a user to "runas" with
the "runas" variable.
To install this:
1. Add the script to /etc/rc.d/init.d/proxyper (edit the stuff that
says "path/to" and "runas" - it should all be at the front of the file.
2. chkconfig --add proxyper
This should automatically create the symlinks based on the comments at the
beginning of the script. They will be addeed with the right names in the
right directories.
Check your installation with:
chkconfig --list proxyper.
Start the service with
service proxyper start
The messages will look like the others that are issued by the startup scripts as well.
#!/bin/bash
#
# proxyper This shell script takes care of starting and stopping
# rc5des personal proxy.
#
# chkconfig: 2345 86 25
# description: This starts and stops the rc5des personal proxy
# processname: proxyper
# config: /path/to/proxyper
# pidfile: /path/to/proxyper.pid
proxyper="/path/to/proxyper"
pidfile="/path/to/proxyper.pid"
runas="nobody"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Source proxyper configureation.
if [ -f /etc/sysconfig/proxyper ] ; then
. /etc/sysconfig/proxyper
fi
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x "$proxyper" ] || exit 0
RETVAL=0
prog="proxyper"
start() {
# Start daemons.
echo -n $"Starting $prog: "
if [ -f "$pidfile" ]; then
proxyper_pid=$(cat "$pidfile" )
kill -15 $proxyper_pid
fi
daemon --user "$runas" "$proxyper" -detach
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
return $RETVAL
}
stop() {
# Stop daemons.
echo -n $"Shutting down $prog: "
killproc $prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
return $RETVAL
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
RETVAL=$?
;;
condrestart)
if [ -f /var/lock/subsys/$prog ]; then
stop
start
RETVAL=$?
fi
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
exit 1
esac
exit $RETVAL | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Issues relating to network connectivity and the functioning of the KeyServers (formerly called "full proxies" or "full servers") and the central coordinating KeyMaster that are operated by distributed.net
| ||||||||||||||||||||||||||||||||||||||||||||
| Subcategories:
Answers in this category: | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Most clients should use the default keyserver us.v29.distributed.net.
This is a round-robin DNS which will grab a proxy address at random.
If DNS is a problem, it is possible to point your client at
a specific keyserver. The available keyservers can be found on the
Proxy Network
Status page.
Note that there are special round-robin proxy keyservers set up for our participants operating in Japan, Europe, Asia and Australia. They are located at:
| ||||||||||||||||||||||||||||||||||||||||||||
| There are additional DNS entries available for people who need to establish connections only on specific ports. Variants of all of the above entries exist for ports 21 (ftp), 23 (telnet), 25 (smtp), 80 (http), 110 (pop3).
For example: us80.v29.distributed.net, or aussie23.v29.distributed.net
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Currently, there is no need for additional keyservers, although
we certainly appreciate your enthusiasm. If you REALLY want to
run a keyserver, recruit enough people such that we need to implement
more servers to handle the load!
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
The distributed.net distributed computing project is built around a pyramid architecture of keyservers and clients. At the top is the master keyserver.
It keeps track of which data blocks (keys for RC5 projects and stubs for OGR) have been sent out to be checked, which have been checked and returned and
which ones remain to be checked. Below the master keyserver are the main proxy keyservers. They serve as intermediaries between the clients
and the master keyserver. The proxy keyservers request blocks of
data from the master keyserver. Clients then request data blocks from the
proxy keyservers. Clients return checked blocks to the proxy keyservers
which in turn send them on to the master keyserver. In this way many
keyservers are available to distribute blocks without the risk that the
same block might be handed out twice. The use of proxy keyservers together
with round-robin DNS also provides a certain amount of fault tolerance. If a given proxy keyserver fails the clients will automatically switch to another
one with no interruption of service.
There is another level of server that can optionally exist below the
proxy keyservers. These are the personal proxy keyservers (or
pproxies). The pproxies request standard blocks from the proxy
keyservers and then turn around and hand them out to clients. Pproxies
are typically used as a method of distributing blocks through firewalls. They
are also maintained by some teams. All team members operate through a single
pproxy so that the team can use the pproxy log files to generate team
statistics independent of the main statistics. This helps to
ease the load on the stats server and gives the team some
freedom to pick what information they want to track and how they want
it displayed.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
What seems to be the problem?Every now and then, people report a malicious attack originating from a distributed.net server onto their network/firewall/machines. They usually report that our machines are probing their network, backing this up with a snippet of their firewall log. What these people are really seeing is a response from our server to a connection initiated by your own machines. Most traffic monitoring and data capture utilities only show the direction of data transmission, but not the direction in which the connection was established. The connection being seen was established outward from the client to our servers. Our servers are servers for the distributed.net distributed computing network. The machines at your site have installed a client program that needs to connect to our servers every once in a while. | ||||||||||||||||||||||||||||||||||||||||||||
Technical detailsFor more info on our project, see http://www.distributed.net/. The mission statement for our project can be found at http://www.distributed.net/mission.php. People download a small client program to process data, which they retrieve from our servernetwork. The protocol consists of the client initiating a connection on port 2064, port 80 or port 23 (the client can choose), and our servers respond to that. That's why you'll see portnumber 2064 on our side and a high portnumber on your side. (The portnumber on your side will typically vary for each connection, due to the inherent nature of outward TCP/IP connections uses dynamically selected ports.) So, it's not our server that intrudes your network/firewall, but your machine that connects to our servers. | ||||||||||||||||||||||||||||||||||||||||||||
Why is this client running here in the first place?Some user on your network downloaded the distributed.net client program and runs it. If this was done without authorization of the admins/owners of that machine, please read the following information: The distributed.net client program lets your computer be a part of a big distributed computer system. It runs in idle time of that computer. Read more at http://www.distributed.net/. However, it's not our intention that users install the program on a computer that they don't own or administrate. Our policy can be read at http://www.distributed.net/legal/policy.php. Also, please check our trojans page where you can read about trojan horses that will install our client on your machine. This page is located at http://www.distributed.net/trojans.php. It is really a shame that some users do not comply with our policies while running the client. If these users find some interesting results for one of our projects, and they run the client on unauthorized computers, they will not get credit for them. That's all we can do. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Sorry, there isn't any way. On a personal proxy the statistics are extracted from log files, and fullservers don't log that way, otherwise they'd quickly run out of diskspace. The volume of data is also why they aren't made public by other means (eg for download), because that would eat up all the bandwidth.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
They keymaster is the central server for our network and ultimately tracks the work that is sent out or received.
The current keymaster hardware is:
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
The main website, this FAQ, blogs/plans, email, and DNS of distributed.net is served by a machine named nodeone:
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| The RC5-64 project was solved on July 14, 2002. For press articles relating to the completion of the project, please visit http://www.distributed.net/pressroom/press-rc5-64.html
| ||||||||||||||||||||||||||||||||||||||||||||
| Subcategories:
Answers in this category: | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
The RC5-64 Project is an collaborative effort by distributed.net to tackle the 64-bit RSA Data Security Secret Key Challenge. The Secret-Key Challenge actually consists of thirteen separate but similar
contests. Having successfully completed the RC5-32/12/7 contest (RC5-56) in
October of 1997, distributed.net is now concentrating its resources
on tackling the RC5-32/12/8 contest (RC5-64).
The task involves testing (at most) 2^64 (18,446,744,073,709,551,616)
keys to find the one that properly decrypts the contest message.
This is a monumental undertaking that will require an enormous amount
of computing power to succeed. Participants from all over the
internet provide that power in the form of spare CPU cycles on their
own personal computers. Together they have helped to make the Bovine
Project the largest and most powerful distributed computer on Earth!
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
During the RC5-56 contest there were two other groups (Cyberian and Infinite Monkeys) competing against distributed.net (it was called the Bovine project back then). However, the RC5-64 contest is a much tougher problem (256 times tougher to be exact). We are not aware of any other competing groups that took part in the challenge of breaking RC5-64. Cyberian did announce early in the contest they would also be mounting an effort but never did so. Finally, there were several similar efforts which took part in the first Secret-Key Challenge contest which had to do with DES encryption instead of RC5. The largest of these were SolNET and DESCHALL. (The DESCHALL group went on to win that contest in June of 1997). | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
The DES algorithm is available in many places on the web. Not least
because it is an ANSI standard: ANSI X9.52
One collection of DES related links is at http://www.tcs.hut.fi/~helger/crypto/link/block/des.html This collection includes pointers to the algorithms used by the d.net client (BrydDES and Kwan). One bitslicer not included in that list is from Andrew Meggs - the source to that in the d.net client source ( http://www.distributed.net/source/) DES implementations are also often available in the many operating systems that come in source. For example OpenBSD http://www.openbsd.org/ and FreeBSD http://www.freebsd.org/. Solaris has made its 'secure download' source available too at http://www.sun.com/software/solaris/encryption/download.html A bibliography on DES (and other block-cypher related) material is at http://www.ii.uib.no/~larsr/bc.html
For a general overview on crypto, I suggest you try and get
the book "Applied Cryptography" by Bruce Schneier. You may
also wish to review
http://www.tcs.hut.fi/~helger/crypto/
| ||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Please visit our CSC page for more information on this project. | ||||||||||||||||||||||||||||||||||||||||||||
| Subcategories:
Answers in this category: | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Our fourth victory was on 16 January 2000 when, shortly before 0630 UTC, we received the winning key (00438EF36FE3FC21 for you tech junkies) for the CSC contest from a Sparc in the United States after searching for 62 days. The secret message was: CS-Cipher a ete presente en mars 97 a 'Fast Software Encryption' (PARIS). Congratulations to the winner! The Winner is Paul Ilardi, Grad student at the University of Rochester. Congratulations to Paul. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Yes, the group that is headquartered at http://www.dcypher.net/ was operating a competing effort to search for the same key that distributed.net was. Their effort was launched approximately one week before distributed.net's effort was officially released to the public. Additionally, their clients were reportedly about twice as fast as distributed.net's initial client because dcypher's development had focused heavily on MMX assembly optimizations for Intel processors running Windows. However, distributed.net's focus has always been towards well designed clients that are easily ported to a variety of architectures and operating systems. After a brief period of further development, distributed.net later released MMX enabled clients that were more than comparable in speed to dcypher's.
| ||||||||||||||||||||||||||||||||||||||||||||
| dcypher's effort also had a smaller number of participants than distributed.net during the CSC effort, which made their overall combined speed slightly slower that distributed.net's overall speed.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| General project answers in this category:
| ||||||||||||||||||||||||||||||||||||||||||||
| Other popular answers from other categories:
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
A excellent explanation of what Optimal Golumb Rulers are is at Mark Garry's* 20/21 search website:
http://members.aol.com/golomb20/intro.htm
* The 'generic' OGR core in the distributed.net client is an adaptation of Mark Garry's work ("GARSP" stands for 'Garry's Adaptation of Rado's Searching Principles').
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| OGR's have many applications including sensor placements for X-ray crystallography and radio astronomy. Golomb rulers can also play a significant role in combinatorics, coding theory and communications. Dr. Golomb was one of the first to analyze them for use in these areas.
| ||||||||||||||||||||||||||||||||||||||||||||
| http://www.research.ibm.com/people/s/shearer/grbib.html#grapp lists some papers that show how Golomb rulers can be useful in the fields of information theory and communications.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
There are a number of references that list best-known rulers, such as James B. Shearer's list that contains rulers up to 150 marks. However, it should be noted that most of the rulers listed there (ie: those greater than 23) are just loose identifications and have not been proven to necessarily be the most optimal ruler with that number of marks. Additionally, it may well be possible to identify even more optimal rulers for those instances by executing an exhaustive search.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Not a cash prize. Unlike the RC5 and other crypto challenges in which distributed.net has participated, there is nobody offering a prize for a new, shorter Golomb ruler.
But you do get the chance to contribute however fractionally to the sum total of human knowledge, and may even get mentioned in the footnote of some obscure maths journal. And it is good karma. Update: Actually, yes. Jonah Schulte is offering the "winner" 20 U.S. dollars. :) If there is more than one "winner" of OGR, Jonah will select one winner at random to receive the big cash prize. As OGR is more of an "exhaustion of possibilities" as opposed to an attempt to find the correct key, Alex "froggie" Heighton is offering a genuine, english 1 shilling piece (note: not legal tender in the UK) to the last stub submitted. NukeEmUp@ThePentagon.com has offered to wire UK£50 to the 'winner', or the equivalent in other major currencies. neil@whatUseek.com will send you a $50.00 US check/cheque if you "win" OGR. He thinks this a small price to pay for reducing your chances of winning the RC5, and increasing his. ;-)
Hit1Hardhas offered to send a Fl 25,- guilders note to the "winner", "since we Dutch have the nicest money of the world. (its seen as "monopoly" money)"
| ||||||||||||||||||||||||||||||||||||||||||||
| I'll donate 2 token ring cards!
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| For OGR-24 phase 1, there are approximately 6,000,000 "5-stubs" per pass (it is planned to have two complete passes for verification purposes). Each of these stubs has a variable number of nodes, ranging from fewer than 900,000 nodes to more than 150,000,000,000 nodes per stub. The 3D surface plots at http://www.distributed.net/statistics/ogr/ show the range and predictability of the number of nodes within any given 5-stub. The horizontal axes within those surface plots represent the first two numbers in the stubs that are distributed, that is the "x" and "y" in "24/x-y-?-?-?"; while the height of the plot represent the number of nodes within the completed stub.
Keep in mind that the number of nodes within a given stub has absolutely no relation to the "shortness" or "optimality" of the ruler that the project is looking for. The node count merely represents the number of golomb ruler possibilities that were checked within that stub's prefix, of which any single one has a chance of being a golomb ruler that is more optimal than what is currently known.
You may want to also check out:
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| The client does not attempt to compute or determine the "optimality" of the rulers it is evaluating. It instead only evaluates rulers to see if they are better than the best ruler speculated by mathematicians. As soon as a ruler (node) is determined to definitely be no better than best-known one, full computation of that ruler's optimality is discontinued and the next node is attempted. As such, the client will only transmit a "success" when it believes it has found one that is better.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| The process of determining the current percentage complete is a much more computationally intensive process than our past cryptographic challenges have been, so it is very difficult to provide percentage data on a regular basis.
Computing the percentage complete depends on re-collating all of the completed stubs and accounting for the distribution of stubs that count against the secondary verification pass, and requires entirely reprocessing several hundreds of megabytes of compressed completion data. It also depends on whether you are attempting to compute the overall percentage complete, or just the percentage of phase 1 or phase 2 of the project.
While the projects were running, the percentage complete for OGR-24 and OGR-25 were available at: OGR-24 -- http://stats.distributed.net/projects.php?project_id=24
Phase 2 for OGR-24 started on 16-May-2004, and was completed on 1-Nov-2004.
OGRNG (ie: OGR-26 and beyond) are expected to on only require one phase, however there will still be "sub-phases".
| ||||||||||||||||||||||||||||||||||||||||||||
|
Although we try to present the OGR progress as just two percentages (one for phase 1 and one for phase 2), it is actually a little more complex. For OGR-24, there was a phase 1, and then two sub-phases in phase 2:
Similarly for OGR-25, there was a phase 1, and then there are nine sub-phases in phase 2.
The higher-diff stubs overlap with the smaller-diff stubs from later sub-phases, so there is less work (fewer average nodes per stub) left for the later sub-phases. This makes the overall project percentage for Phase 2 (which is measured in stubs not nodes) seem to progress more slowly in the early sub-phases, than the later sub-phases. Additionally, each stub is distributed at least two times in order to get the necessary validation by two different computers. | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
For OGR-NG (supporting OGR-26 and up)Proxy: Requires build 343 or higher. Proxy build 343 will only receive OGR-NG workunits from an upstream server that is also running build 343 or higher.
Client: Requires v2.9101.507 or later. These clients can connect to proxy versions lower than 343, but will not be able to send or receive OGR-NG packets.
Client: Requires v2.8009-460 or later. There are a number of client versions earlier than v2.8009-460 that provide the ability to process OGR, however due to known verification bugs in those earlier versions all work computed by them will be discarded by the servers. (Note: OGR may be automatically disabled for non-preemptive operating environments running on lower-end hardware. Details are here: For OGRp2 (project phase 2)Proxy: Requires build 341 or higher. Proxy build 341 will only connect to an upstream server that is also running build 341 or higher.
Client: Requires v2.9008-490 or later. These clients can connect to proxy versions lower than 341, but will not be able to send or receive OGRp2 packets.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| The following is example output for sequentially submited OGR stubs to a personal proxy:
[2000-02-14 23:56:33] ogr r=16/16, d=3/3, 63.3 Mnodes/sec, tot=19
For each of the (artificial) OGR stubs in question, there were 13.52 Gnodes (13.52*10^9). The upper 32-bit word of that is (13.52*10^9)/2^32=3.178, which is the origin of the factor that causes your "tot=" count to increment by 3.
The proxy actually keeps track of the full 64-bit word of the total number of nodes completed, but the "tot=" printed only reflects the upper 32-bit word of it.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
OGR may be automatically disabled for non-preemptive operating environments
running on low(er)-end hardware.
The current OS and CPU combinations where this automatic disabling is currently effective (subject to change) are as follows:
In non-preemptive environments, the client controls its run:yield quantum itself, that is, it runs for a limited, specific, number of keys/nodes (called the timeslice), then yields, then runs, then yields, and so on. The timeslice is computed dynamically while the computer runs, and generally follows this formula: crunch_rate_per_second/yield_frequency (*), where yield_frequency is a semi-static value representing the minimum number of times per second that the client has to yield control for the machine to remain responsive, and crunch_rate_per_second is continuously calculated. For OGR, which has significant overhead, the larger the timeslice (upto a limit), the more efficient the core is. To put it another way: at small timeslices, which is what would be in effect on slow machines, the core ends up spending more time in starting and stopping than it does in actually working. Moreover, the time slice cannot be honored precisely, and under some circumstances, the OGR core could end up doing several hundred thousand more nodes than it was told to do. In less critical environments such as Win16 and MacOS such occasional "jerkiness" may be tolerable, and it is left to the user's discretion to disable OGR if they feel such behaviour is unacceptable. In mission critical environments such as NetWare however, any jerkiness may have disastrous consequences, and for NetWare, OGR is completely disabled.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Please read this page for an explanation why.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
A brute force OGR search is essentially a set of nested for loops. For example, an OGR-10 search might look like this:
# Best known OGR-10 is of length 55, so don't search past that
For A1 = 1 to 55-OGR[9] # OGR[9] is the length of the optimum 9-mark ruler
For A2 = A1 to 55-OGR[8]
For A3 = A2 to 55-OGR[7]
...
For A10 = A9 to 55
Does A1 thru A10 form an OGR? If so, we have a new best OGR!
Next A10
...
Next A3
Next A2
Next A1
Of course, this is a highly simplistic view, and there are many tricks that can be used to narrow the search. One important thing to note is that as the outer loop variables get large, the amount of time spent in the inner loops decreases drastically. For distributed.net, these for loops are split between the client and the master. The master will generate a stub of a ruler, such as '25/6-5-8-21-15-3'. This tells the client that it should work on a 25 mark ruler, with A1=6, A2=5, A3=8, A4=21, A5=15, and A6=3. Part of what the master does when generating stubs is limit the size of the stub. If this was not done, the number of stubs (and thus the amount of data the master would have to track) would be far larger than it currently is. More important, if initial stub size wasn't limited, many stubs would be generated that would take minutes or even seconds for a client to search. This would create a unacceptably large load on the network. Greg Hewgill has a page that describes distributed.net's OGR implimentation in a bit more detail.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| By their nature, OGR stubs vary greatly in the number of nodes that must be checked by your client. Therefore, some stubs may complete much more rapidly than others. Additionally, it may sometimes appear that no progress has been made on a stub, even after many minutes or even hours, when in reality progress has been made, but it is simply not expressable as a change in percentage. The slow performance of a portion of a stub should not be considered to represent the performance of the rest of the stub.
In general, stubs that have a larger numbered marks in them are "easier" than those with purely smaller numbered marks. Additionally, the node count of a stub will generally vary quite predictably with the values of the first two marks of the stub. Graphs of the node count distributions based on the first two mark values can be found for OGR-24 at http://www.distributed.net/statistics/ogr/ There are also similar graphs for the old OGR-21 effort at http://www.hewgill.com/golomb/ Unfortunately, this is due to the large amount of uncertainty that the client has while evaluating stubs. During the evaluation process, the client will discover that certain portions of the stub do not need to be evaluated and will correspondingly skip over the rest of that portion. Due to this behavior, it is very difficult to provide a linearly progressing percentage bar. Note also that the percent bar will go much faster the further you get through the stub. Generally, the first 10% may appear to take the longest amount of time. Do not be alarmed if stubs take 40 or more hours on even a 500+ Mhz PIII. It is not a measure of hardness, but of allocation unit size. Keep in mind that other mathematical contests such as Mersenne Primes can take several weeks to process a single allocation unit. The extremely small block size of previous RC5 contests has "spoiled" the expectations of many of us into thinking that all work units should be completed in the same amount of time, and in only a few minutes/hours. | ||||||||||||||||||||||||||||||||||||||||||||
| Other popular answers from other categories: | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| During the initial transition from OGR-24 to OGR-25, there was a small number of varying sized stubs that were distributed to clients for testing purposes so that we could get some public feedback about their completion times. For OGR-25, we've settled on distributing so-called "6-stubs" (that is, a stub fragment
where the first 6 marks are specified by our servers). Such stubs will
be displayed by the client as "25/1-2-3-4-5-6". It can be observed that "25/" stubs that have more than 6 marks will take considerably shorter duration to complete, stubs with fewer marks will take considerably longer duration.
Although we generally tried to intersperse these experimental OGR-25 stubs into the outgoing OGR-24 distribution to minimize giving too many to any single person, we've learned this might not have necessarily been the case. In any case, since our intended benchmarking use of these experimental stubs is finished, if you see that your client is working on a "25/" stub that does not have exactly 6 values after the slash then you can feel free to discard your entire buff-in.ogr containing these experimental OGR-25 stubs, if you are too impatient and want to process normally sized stubs. (Proper-sized stubs that you accidentally discard along with those will be eventually recycled and reverifed more than once eventually, so it is not a serious concern in this case, though you should avoid intentionally discarding valid blocks whenever possible.) Even though statistics credit can only be given for OGR-25 stubs with 6 marks, the processing resulting from the larger and smaller sized test stubs still represent valid search ranges within the stub space, and have comparable contribution towards the project's overall search as the equivalent number of proper-sized stubs. The results from those larger/smaller stubs will also be beneficial in providing second-pass verification against clients completing the corresponding group of stubs.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| The project to crack a message encrypted with the 72-bit RC5 cipher. (RSA Laboratories Secret-Key Challenge, RC5-32/12/9)
For more information about the project itself, please visit our project page devoted to it at http://www.distributed.net/rc5/
| ||||||||||||||||||||||||||||||||||||||||||||
| Subcategories:
Generic answers in this category:
Specific RC5-72 answers in this category: | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
There are probably as many reasons as there are participants.
Here are a few popular ones.
To do something with all this computing power
To prove that small-bitsize encryption is insufficient
To explore the feasibility of cooperative networked multiprocessing
Because it's fun
Because you can win money!
To get to know more people
To attract the opposite sex
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| When a client finds a key that correctly deciphers the first few bytes
of the message (the first part of the message is known to be the text
"The unknown message is:"), and the block is submitted, the keyserver
network sends an alert to the distributed.net origanizers.
Using separate software we attempt to decrypt the entire message.
If successful RSA is notified. After RSA verifies that the correct key has indeed been found press releases are issued by us and RSA and the check for the prize amount ($10,000 U.S.) is mailed to distributed.net.
distributed.net then distributes the money as described earlier.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Initially you won't. We've set the clients up intentionally so as not
to alert the user if a candidate key is found. The clients only perform
a partial message decryption and it is quite possible for them to generate false positives. There is no need to get excited until the key has been verified.
If your computer does find the winning key you will be notified by
e-mail after the key has been verified by RSA. This is one reason
why it is so important that you submit keys using a valid e-mail
address!
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
ITAR is "International Traffic in Arms Regulations", a set of U.S. government regulations that, among other things, limit the strength of cryptographic algorithms implemented in software destined to be exported out of the United States. The ITAR regulations, as they apply to cryptography at least, are outrageous! Raising public awareness of this problem is one of the reasons the distributed.net network exists. The RC5-72 project clients are NOT ILLEGAL to export. In short our software cannot be used to encrypt or decrypt other people's data. It works on only the first few bytes of a pre-encrypted message comparing the results to a bit of known (and fixed) plaintext ("The unknown message is:"). Therefore it doesn't fall under ITAR restrictions unlike general purpose crypto software such as PGP (Pretty Good Privacy, a popular encryption program available on the internet). | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
RC5 involves a large number of integer additions, rotates and XORs. It
doesn't require floating point calculations and won't, in general,
benefit from them. There has been quite a lot of recent discussion on
whether or not it might be possible to boost keyrates (on x86
architectures at least) by taking advantage of the fact that there are
separate pipelines for integer and floating point instructions. (We
leave it to the reader to figure out how to do floating-point XORs and
rotates!)
Currently none of the clients attempt to make use of FPUs and we believe any use of the FPU will result in slower clients rather than faster ones. At least one bright person has suggested this is not necessarily the case and indeed he may be right. If anyone can develop an RC5-72 core that takes advantage of the x86 FPU for an overall client speed boost we would be very interested in hearing from them!
If you are interested in looking into it the x86 core code is
available and can be downloaded from http://www.distributed.net/source/.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Integral to the mathematics of the RC5 algorithm are 32-bit
rotate operations.
For whatever reason, the designers of the IA32 (32bit Intel x86) and the PowerPC architectures decided to implement the rotate function as a hardware instruction. Many other CPUs do not have built-in hardware rotate instructions and must emulate the operation by (at the very least) two shifts and a logical OR. This handicap is why many non-32bit-Intel [1] and non-PowerPC computers run RC5 slower than one might expect based on real-world benchmarks. It is also the main reason why the RC5 client is a poor benchmark to use in determining the speed or performance of a particular CPU.
[1] The IA32 architecture is that used by
the Intel 80386, 80486, Pentium, Pentium Pro, Pentium II, Pentium III and Pentium 4 processors. The Pentium 4 has a slow, multi-cycle hardware rotate
instruction up until the Prescott revision.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Prior to staring RC5-72, all of our clients connected to DNS server addresses in the form of *.v27.distributed.net, such as us.v27.distributed.net or jp80.v27.distributed.net. Network traffic for our clients to the general DNS round-robins utilized TCP port 2064 (the specialized round-robins, such as jp80.v27.distributed.net, or euro23.v27.distributed.net utilized ports 80 and 23, respectively).
Beginning with the new version 2.9 clients, the DNS server addresses *.v29.distributed.net will be used for all resolved connections. This configuration allows us to gracefully upgrade our servers and also deprecate communications with most older clients by eventually deleting name resolution of the older round-robin (but that is not expected to occur without several months notice).
Although the port number 2064 was originally selected by distributed.net at the start of RC5-64 (port 2056 was used for RC5-56), it was decided that a new network port number should not be selected for the new project. Because we have carefully enhanced our network protocol in a backwards-compatible way, it is not necessary to utilize a new port number to allow the newer clients to be supported simultaneously. Additionally it was felt that continuing to utilize the same port number would reduce the number of firewall configuration changes that network administrators would have to endure when upgrading their machines.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| The most significant difference that you may notice if you had previously participated in the RC5-64 project is that blocks are now significantly larger in size. The RC5-64 project utilized a fundamental blocksize of 2^28 keys each, but individual packets containing multiple blocks were permitted (for example 16*2^28 meant a packet containing 16 blocks). However as computers have become much faster each year, the time required to complete a single 2^28-sized block grew less and less, which unfortunately meant a greater amount of network traffic for our servers.
RC5-72 is being started with a blocksize of 2^32 instead of 2^28. Initially we will only support 1 block per packet, but this will change in subsequent versions. Since each block is larger, it may appear that RC5-72 is much slower if you pay attention to only the amount of time required for each packet. However, RC5-72 also requires new "cores" for all CPU architectures. In some cases, the old RC5-64 cores were easily retrofitted to accomodate the new bit-size, but this was not always possible. In other cases, completely new cores had to be written from scratch, particularly on x86 due to the limited number of registers. But by default, many of the initial RC5-72 client builds are compiled using a generic ANSI C core that is only optimized by the compiler until our porters are able to find updated assembly cores for their platform. Of course the overall project will be "slower" than RC5-64, since the keyspace that must be searched for RC5-72 is 256 times larger. Since computers of faster and faster speeds are being produced each year, and the great number of excited participants on the Internet, we hope to complete this project with the same amount of success that we've had with prior projects.
If you have assembly optimization experience for your platform, you should consider looking at the public source code at http://www.distributed.net/source/ and submitting an updated core if you are able to produce code that is faster. Over the following weeks and months, we will periodically be releasing new client builds that incorporate additional speed improvements. Even with RC5-64, initial client versions were far slower than the eventual clients we had near the end, due to ever better optimizations that were developed over time--the same process will need to occur with RC5-72.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
If you see your client print an error similar to the following:
[Dec 02 11:03:07 UTC] Open failed for 'D:\Program Files\distributed.net\buf ...
File is not in distributed.net client format.
then you need to delete one or more of your buffer files. Version 2.9 of the client mandates a new file format and will refuse to read buffers that were created by an old version of the client. If you have completed blocks in your old buffers, you should consider flushing them with an old client before deleting them (and before upgrading to the new client). | ||||||||||||||||||||||||||||||||||||||||||||
|
Note that the file format of the personal proxy buffers did not need to change for the RC5-72 (build 330+) release.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
|
Client: Version 2.9001.477 is the lowest version that RC5-72 results will be accepted from. (Results from beta builds of v2.9000 will be discarded). All v2.9xxx clients require a minimum upstream proxy/server version of at least build 330. Personal Proxy: Build 331 is the minimum recommended version for supporting v2.9xxx clients (though the beta proxyper of Build 330 will function). Proxy build 331 requires a minimum upsteam proxy/server version of at least build 331.
(See also | ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| Client binaries for platforms that have not yet been made available are dependent on finding volunteers with the correct equipment, experience and time, so have patience.
| ||||||||||||||||||||||||||||||||||||||||||||
| Personal Proxy binaries are not required to run the client and therefore they are only supported on a limited set of platforms.
| ||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||
| The client attempts to automatically select a core based on the CPUID. This may become inaccurate as new processors and cores are released. If an unknown CPU is found the client performs a "microbench" to estimate the fastest core on your processor. This benchmark is an imprecise quick test of each core currently available in the client on a small number of keys. Core selections done by microbenching are inherently very volatile to other
system activity and can fluxuate between different runs. There is no code bug
here other than timing differences occurring on your machine. You may find it preferable to go into the client's performance configuration screen and manually specify the core number that should be used, instead of relying on the automatic selection. Be forewarned that if you configure the client to use a specific core number, then it will continue to use that same core number until you reconfigure it to do otherwise--even if you upgrade to the next client version that has different cores (and the core numbers get reordered), or if the relative performance of some cores change (and the old core you picked is no longer the best one). |
| ||||||||||
© Copyright distributed.net 1997-2013 - All rights reserved