联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp

您当前位置:首页 >> OS作业OS作业

日期:2021-02-10 08:18


Project 2: Reliable Data Transfer over UDP (RDT-UDP)

Project 2

Reliable Data Transfer over UDP (RDT-UDP)

1. Objectives

Transport Layer Protocols are central piece of layered architectures. They provide the

logical communication between application processes. UDP (User Datagram Protocol) is a

connectionless, unreliable protocol. It uses a simple transmission model without implicit

handshaking techniques for providing reliability and ordering of packets. Thus, UDP provides

an unreliable service and datagrams may arrive out of order, appear duplicated, or go missing

without notice.

UDP is non-reliable protocol, so to use it you must add reliability features at the

application level. In this project, you will build a reliable transport protocol “RDT-UDP” over

unreliable UDP. Your protocol must provide in-order, reliable delivery of UDP datagrams, and

must do so in the presence of packet loss, delay, corruption, duplication, and re-ordering.

2. Requirements

? Clearly describe the network protocol specifications and service definations.

? The reliability is achieved using the Sliding Window protocol. You will first

implement the Go-Back-N version with no buffer at the receiver. Then, you will

implement the Selective Repeat version.

? Use TCP-style connection maintenance, including establishment, maintains and

release.

? Define the format of data carried as the payload of each UDP datagram. The header

length should be as short as possible. In general, the header includes the following

fields:

(1) Sequence Number (32 bits): The sequence number of the first data octet in this

packet (except when SYN is present). If SYN is present, the sequence number is

the initial sequence number (ISN) and the first data octet is ISN+1. The sequence

number is given in the unit of bytes.

(2) Acknowledgement Number (32 bits): If the ACK control bit is set this field

contains the value of the next sequence number the sender of the segment is

expecting to receive. Once a connection is established this is always sent. The

acknowledgement number is given in the unit of bytes.

(3) Connection ID (16 bits) (if exists): A number representing connection identifier.

(4) A (ACK, 1 bit): Indicates that there the value of Acknowledgment Number field

is valid.

(5) S (SYN, 1 bit): Synchronize sequence numbers (connection establishment).

(6) F (FIN, 1 bit): No more data from sender (connection termination)

? Avoid losing messages.

1 / 4

Project 2: Reliable Data Transfer over UDP (RDT-UDP)

? In case of lost message, detect and recover it (time that takes to recover a message is

related to both reliability and low latency requirements, so the protocol should pay a

special attention to this issue)

? Handle messages reordering.

? (Optional) Add Congestion Control. The control algorithm is AIMD (like TCP)

? The maximum UDP packet size is 524 bytes including a header (512 bytes for the

payload).

? The maximum sequence and acknowledgment number should be 102400 and be reset

to zero whenever it reaches the maximum value.

? The retransmission (and appropriate congestion control actions) should be triggered

when no data was acknowledged for more than time-out value (e.g. 5 or 10 seconds,

the fixed or dynamic retransmission timeout).

? Initial and minimum congestion window size (CWND) should be 512.

? The maximum congestion window size (CWND) is 51200.

? The initial slow-start threshold (SS-THRESH) should be 10000.

? If ACK field is not set, Acknowledgment Numberfield should be set to 0.

? FIN should take logically one byte of the data stream (same as in TCP).

? FIN and FIN | ACK packets must not carry any payload.

3. Test and Evaluation

(1) First, assume there is no packet loss. Just have the server send a packet, the receiver

responds with an ACK, and so on.

(2) Second, introduce a large file transmission. This means you must divide the file into

multiple packets and transmit the packets based on the current flow and congestion

window size.

(3) Third, introduce packet loss. Now you have to add a timer at the first sent and

unacked packet. There should be one timeout whenever data segments are sent out.

Also congestion control features should be implemented for the successful file

transmission.

4. Performance Analysis

The common performance metrics:

(1) Delay: the time difference between the transport layer accepting data from upper

layer at the sender and the transport layer passing the data to upper layer at the

receiver.

(2) Goodput (useful throughput): Throughput is defined as the number of bits arriving

at the receiver per unit of time. One problem of using throughput as a performance

measure is that it does not take re-transmissions into account. For example: in

Go-Back-N, we may retransmit many redundant packets, which are still counted

toward the traditional throughput definition. These redundant bits are not useful for

the application. A more meaningful measure is known as “Goodput”, which counts

2 / 4

Project 2: Reliable Data Transfer over UDP (RDT-UDP)

the number of bits passed to upper layer here. This basically means that we ignore all

corrupted packets, un-necessary retransmissions, and headers.

(3) Overhead: There are three aspects of overhead: communication, processing, and

storage. Communication overhead has direct relationship with Goodput measurement.

Processing and storage (memory) overhead comes with the additional complexity of

the Selective Repeat protocol, which is its main drawback.

Evaluation is done based on key parameters such as Loss rate, Window size,

Retransmission Timeout, Packet size, total data sent and Network Delay, Channel bandwidth,

Round trip time.

5. Programming

? Language: any (C, C++, Java, platform independent)

? No high-level network-layer abstractions are allowed in this project. You are allowed

to use some high-level abstractions for parts that are not directly related to

networking, such as string parsing, multi-threading. Use of C++ or Java is preferred.

6. Submission

(1) Project Report

Cover Page

? Project name

? Student Number

? Name

? Date

? School and University

Contents

? Objectives

? Description of Distance Vector Algorithm

? Requirement of experiment

? Programing language/Developing platform and tools

? Design ideas

? Data structures

? Implementation (development tools, model, definitions of objects/methods and

processes and threads, processing flows, etc.)

? Test, Verification, Result Analysis, Performance Analysis, Screenshot with

explanation

(2) Readme.txt

? Plain text format.

? Contain any bugs or issues that you know of in your code.

? It should also indicate how you run your code using command line.

(3) Source Codes

? The source of the program (Must have a program comments).

3 / 4

Project 2: Reliable Data Transfer over UDP (RDT-UDP)

(4) Running Codes

? The compiled program that can run on Windows or Linux system.


版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp