Term Project of ELE543,
Computer Networks

  • You may pick up one project from the following possible topics:
    1. Design a cloud service application using TCP/IP
    2. Design a client and server applications using socket programming
    3. Design a system for remote control of home heating/lighting using some network protocol
    4. Design an application program to measure the distance between two network devices
    5. Design a home/office security system with remote control functionality using a network protocol
    6. Implement a multimedia network application program
    7. Design a patient monitoring system using network devices
    8. Design a consumer electronic device using wireless remote control
    9. Design a network router. The router should be able to interpret IP headers, select optimal routing, and control possible congestion
    10. Design a web application such as chat, email, or ftp, etc.
    11. Implement a networked storage application
    12. Implement a clustered network server

  • Time Line:
    1. Proposal due: March 23rd, 2018
    2. Proposal Presentation: March 23rd, 2018 (7 minutes each person and 3 minutes questions and answers)
    3. Final Project Presentation and Demo: April 20th and April 27th.
  • Details of one example project:
  • Title: Clustered Cloud Server

  • Objectives: Implement a simple cloud server that consists of several PCs interconnected by an Ethernet switch. Collectively, these PCs provide cloud service to clients in the same network.

  • Basic Requirements: The server cluster (Cloud server) should provide one type of network service of your choice with high performance, high availability, high reliability, and easy scalability.

  • Team Work: You may form a project team of 2 persons working on different parts of the project.

    Detailed Description:

    1. Communication: Your project should have two basic communication protocols: Client/Server protocol that allows clients to talk to servers, and P2P protocol between servers. It is up to you which particular protocol you choose to use for the two communications. You may use the existing protocols such as HTTP, SMTP, FTP, Telnet, DNS, P2P, or others. Or you may design your own protocol.
    2. Service provided by the server cluster: You may define the type of service that the server cluster provides to clients. The basic requirement is that clients will read data from and write data to the servers. Examples of such network service include but not limited to:

        -- A Distributed computing and storage services to the clients.
        -- A Distributed web server running on the cluster to serve web requests from the clients.
        -- A distributed database server that provides database service to clients.
        -- Distributed DNS servers that resolve IP addresses.
        -- File sharing, i.e. distributed file servers that provide file services to clients, P2P.
        -- Distributed email server, etc.

      Choose one that you are comfortable with.
    3. High performance: To achieve high performance, you should have a load balancing mechanism among the servers to provide service to clients in parallel. You could also have caching technology to speed up services. As an example, in case of storage server, you might want to partition the set of objects among the servers so that they can serve different requests from clients in parallel. How to maximize parallelism and to achieve load balance is one of the design goals. The objects might migrate among the servers as new objects/new server nodes are added, or as load-imbalance is observed during operations. If aching is used, how to ensure data consistency among caches is another issue the need to be addressed. How to minimize latency is also very important.
    4. High Availability: The cluster server should be available to provide full service to clients even one of the server nodes goes down. To achieve this goal, some kinds of redundancy should be built in among the servers.
    5. High Reliability: Your protocol should guarantee data correctness even with unreliable communication links. Your system should also guarantee no-single-point-of-failure. That is, any single failure in the system will not lead to any data loss.
    6. Easy Scalability: As new server nodes are added to the system, your system should scale easily by migrating data to new nodes to achieve load balancing and at the same time ensuring high availability and reliability.

    You may make any additional assumptions that you believe necessary and reasonable. There is no requirement on which programming language you use, neither OS platforms.