Computer Scientist

Friday, 16 July 2010

Agenda For the Meeting on 16th, July and Tasks to complete

I am a little behind the progress. At this time, what I should consider is what I have found from the graphs or the charts and how to defineto explain them, instead of what I know about a specific system.

There are mainly two parts of the tasks to complete:

1. (To be complete by next Wednesday or Thursday) The results and clear descriptions of the Experiment of Chord.

2. (To be complete by 11th of Aug, when Nick is coming back)

- Technical differences between Kademlia and Coral:
    Why Coral is used in small files sharing?
    Why Kademlia is used in big files sharing?

- Two methods to prove what I will find:
    Literatures of both these two methods
    Experiments on both these two methods?
      Experiments on a range of file sizes to compare the differences between these two methods.

- How to define and then to measure the closeness?

- How effectively the location of peers affect the performance of the system?


When we talking about the Experiments, there are something should be concerned:

- Closeness number of hops
- Latency - routing latency
                - file transfer latency (bandwidth, hidden conjunction problems two users who request resources are allocated into two different download networks with two different environments, one is conjuncted and one is not that busy)

- Distances (Real-distance/Political distance and topological distance) Is there relation between these distance and two previous notations? Find it out!!

- Load on each nodes (download loads, upload loads, forwarding loads and so on.)

- Routing table information stored in each node.

- Capability of each node and how to measure each node's system consumption for a system's running.

- Mobility, the distribution issue in a mesh network constructed with mobiles. Mobiles are movable and how to distribute the news to each of them is the central issue. For example, Madonna's new songs are released and how to forward these songs to each of her fans. 

Wednesday, 30 June 2010

After a long time confuse and break, I am back and ready for working enthusiastically

It is very important for now to make sure some special usages of C++ programming philosophy and its library staff.

First of all is the usage of size_t, why did not they use the int or long to represents the number instead of using size_t. I believe it is explained well in article of :


and 


very useful articles.

Thursday, 20 May 2010

Experiment with Chord

Today's works should be:

    1. How to hack the Chord code.
    2. Reading targets: 
         <1>. PC++, P87-P103 and P371-P390
         <2>. The Chinese version of Chord structure's explain.
         <3>. Two usage aspects of the Chord-like dht.
    3. Do some little initial experiments if possible.

Wednesday, 19 May 2010

How to check the open ports in Linux

Two articles on the Internet are found:

http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/security-guide/s1-server-ports.html

http://www.cyberciti.biz/faq/how-do-i-find-out-what-ports-are-listeningopen-on-my-linuxfreebsd-server/

Thursday, 13 May 2010

Hard working on Compilation

How to extract tar file in Linux with additional appendix.

tar -jxvf ***.tar.bz2

tar -zxvf ***.tar.gz

Today, I have to change my work to Fedora Linux due to the stuck on my Mac.

Firstly, I am using gmp 4.3.2 instead of 5.0.1.

Secondly, I am going to install sfslite. Let's try 0.8.17 firstly. and then 1.0.0.
    0.8.17 still does not work like the situation in my Mac.
  

Tuesday, 11 May 2010

<--Complete!!-->Concret Working Day

There are two works to do today:
    1. Complete the experimental plan at least the single machine experiments on Chord as mentioned in yesterday's meeting.
    2. Begin the experiment of Chord by construct the experimental environment. 

A little reversal according to the above descriptions is that I am beginning with the experimental environment construction. I will record the whole process for future usage:

I am constructing the environment on my Mac laptop, this means that there are some risks that some problems might emerge when I working on the Fedora Linux where is the practice environment. Just keep this in mind is fine.

                 Source files are settled in ~/src/
                 Each package has its own build directory in ~/build/

From the very beginning, I have nothing installed on my mac. I have to CMM(configure-make-make_install) everything. There is a dependency across the serials of packages which is considered to be required and necessary.

Chord ---> sfslite (SFS) ---> GMP

Chord ---> Berkeley DB

Chord visualisation ---> vis ---> GTK+ (for Mac, Maybe not necessary for Linux)

Here I list the corresponding websites of these toolkits:

Chord: http://pdos.csail.mit.edu/chord/howto.html

sfslite: http://www.okws.org/doku.php?id=sfslite

GMP: http://gmplib.org/

vis: (build-in on Mac, so not sure if GTK+is necessary The build-in vis is totally different. Need to install the vis provided by Chord separately.)


GTK+ (for Mac): http://gtk-osx.sourceforge.net/

CMM process:
1. Build GMP:
    no special, just CMM. make sure using "make check" to check the compile results after "make" it.
    In the later build, I added a "--enable-cxx" options when I configure it.

2. Build sfslite:
    need to append the "--with-sfsmisc" after "configure". "make check" is also available but nothing to check.
    The version is changed from 1.2.7 to 0.8.16 because some problems emerging when configure chord.
    There is a long story here. Choosing the right version is the most crucial step. 

3. Build Berkeley DB 4.8.26
    Not sure whether my settings are right or not. Just test it later on.
    Configure process:
            /dist/configure --enable-compat185 --enable-cxx
            when I was trying to add --enable-java there is something wrong. a file can not be founded. So I "make realclean" to wipe out every thing.
    Make process:
            When I neglected --enable-java, everything worked smoothly.
    Install process;
            It is much less than I supposed. So I successfully installed berkeley DB.

3. Build Berkeley DB 4.4.20
    It works much more smoothly than 4.8.26. One thing that I noticed is that 4.4.20 is released by sleepycat, while 4.8.26 is released by Oracle.
    I used the quite same options that I used in 4.8.26 including --enable-java. It works good this time.
Maybe 4.8.26 require a rather newer version of JDK, because the Java in Mac is not be updated for ages.
    After checking the configure.in file of Chord source, I found the accepted sfslite version is up to 4.6 from 3. <<CAUTION:>> So I changed the sfslite from version 4.4.20 to version 4.6.20 in experiments after 26/05/2013.
  
    Dramatically, the error moved to SFSlite side. the configure tool require a latest version of SFSlite!!!

大哥!!source 文件不能乱考好不好??!!再试试,全部重装。

4. Build Chord 1.0
    Quite normal process. Follow the instructions on the website where the detailed description is stated.


Something should be noticed:
    1. Choose the right version for each tool:
      GMP  5.0.1
      sfslite  0.8.17 (obtain from svn)
      Berkeley DB 4.4.20
      Chord  0.1 (lastest version)
      When retrieve the source, do use CVS, SVN or Mercurial (this kind of tools) because the tar ball of sfslite 0.8.17 in the snapshot is not complete without "svc" directory.
    2. Get ride of "cred" error when build sfslite.
      Change ./async/sysconf.h according to the latest version of the file in sfslite 1.2.7. This problem is because the latest version of Linux has no "creb" definition.

Monday, 10 May 2010

Agenda on 10/05/2010 meeting

What I next need to do is to plan an experiment to approve that
    1. the hotspots emergence and
    2. the consistent hashing's vulnerability
on load balancing.

This is for Chord. This step is used to find out the disadvantages of Chord. Because it is out of date, there must be a lot of problems.

Then evolved into Kademlia, how Kademlia solved these problems. How effectively Kademlia solved these problems? And then to prove them.

Also find some problems of Kademlia. Then to propose some methods to solve them.

Using this evolution method, to expend to BitTorrent and eDonkey.