Professional Documents
Culture Documents
Transport Layer - All PDF
Transport Layer - All PDF
Transport Layer - All PDF
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
Transport Layer
Our goals: understand principles behind transport layer services such as:
process-to-process delivery reliable data transfer flow control congestion control
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
Outline
3.1 Transport-layer services 3.2 Process Addressing: Mux / Demux 3.3 Connectionless transport: UDP 3.4 Principles of reliable data transfer 3.5 Connection-oriented transport: TCP 3.6 Principles of congestion control 3.7 TCP congestion control
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
Transport layer
logical communication between processes relies on & adds to network layer services
Some services that are not available from the network layer may be provided by the transport layer!
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
Analogy
Two houses, each with a dozen of kids, are located in Eindhoven and Amsterdam. All kids in different houses are relatives (cousins) Each kid weekly writes a letter to every other kid in the other house
144 letters/week in total (huge cost)
In each house, there is one kid responsible for mail collection and mail distribution
Each week they give all the letters to a postal-service mail carrier who makes daily visits to the house. They also collect mails from the mailbox.
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
network data link physicalnetwork data link physical network data link physical application transport network data link physical
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
Outline
3.1 Transport-layer services 3.2 Process Addressing: Mux / Demux 3.3 Connectionless transport: UDP 3.4 Principles of reliable data transfer 3.5 Connection-oriented transport: TCP 3.6 Principles of congestion control 3.7 TCP congestion control
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
= process P1 P1 application transport network link physical P2 P4 application transport network link physical
host 1
01/03/2012
host 2
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
host 3
9
Socket/port addressing
Port number
needed to choose among multiple processes running on the host The Internet model: 16 bit integer 0 65 535 Client mostly chooses ephemeral (temporary) port numbers Server mostly uses well-known (permanent) port numbers
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
10
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
11
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
12
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
13
Client sends its data to UDP stack through the socket When host receives UDP segment:
checks destination port number in segment directs UDP segment to socket with that port number
IP datagrams with different source IP addresses and/or source port numbers directed to same socket
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
14
Receiver uses all four values to direct segment to appropriate socket Server supports many simultaneous TCP sockets at the same port #
each socket identified by its own 4-tuple
E.g. web servers have different sockets for each connecting client
Note: fixed server port number: 80 Note: non-persistent HTTP will have different socket for each request
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
15
P1
P4
P5
P2
P1 P3
SP: 9157
SP: 9157
client IP: A
Client
IP:B
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
16
client IP: A
Client
IP:B
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
17
Outline
3.1 Transport-layer services 3.2 Process Addressing: Mux / Demux 3.3 Connectionless transport: UDP 3.4 Principles of reliable data transfer 3.5 Connection-oriented transport: TCP 3.6 Principles of congestion control 3.7 TCP congestion control
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
18
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
19
Applications:
simple request-response communication in processes with internal flow & error control non-critical & periodical tasks (e.g. updating routing information) in conjunction with higher layer protocols for real-time data
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
01/03/2012
20
UDP header
source port number from 0 to 65535 destination port number from 0 to 65535 length the total length of the user datagram (header + data 8 bytes) checksum detect errors over the entire datagram
optional (if not calculated filled with 0s)
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
21
UDP checksum
Goal: detect errors (e.g., flipped bits) in transmitted segment
Sender: treat segment contents as sequence of 16-bit integers checksum: addition (1s complement sum) of segment contents put checksum value into UDP checksum field Receiver: compute checksum of received segment check if computed checksum equals checksum field value:
NO: error detected YES: no error detected. But maybe errors nonetheless? More later .
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
22
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
23
IP / UDP / TCP
QUESTION: Can an application using UDP be reliable? QUESTION: What would be the difference from TCP? Whats the catch? QUESTION: Are both UDP & IP unreliable to the same degree? Why? (we will discuss it when we come to network layer)
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
24
Outline
3.1 Transport-layer services 3.2 Process Addressing: Mux / Demux 3.3 Connectionless transport: UDP 3.4 Principles of reliable data transfer 3.5 Connection-oriented transport: TCP 3.6 Principles of congestion control 3.7 TCP congestion control
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
25
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
26
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
27
send side
receive side
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
state 1
event actions
state 2
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
29
sender
receiver
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
30
01/03/2012
31
receiver
32
receiver
rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(NAK) Wait for call from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ACK)
sender
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
33
receiver
rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(NAK) Wait for call from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ACK)
34
sender
Handling duplicates:
sender adds sequence number to each pkt sender retransmits current pkt if ACK/NAK garbled receiver discards (doesnt deliver up) duplicate pkt
stop and wait Sender sends one packet, then waits for receiver response
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
35
01/03/2012
36
rdt_rcv(rcvpkt) && corrupt(rcvpkt) sndpkt = make_pkt(NAK, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq1(rcvpkt) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt)
extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt) zelebi, t.ozcelebi@tue.nl Tanr 01/03/2012
TU/e Computer Science, System Architecture and Networking
37
rdt2.1: discussion
Sender: seq # added to pkt two seq. #s (0,1) will suffice. Why? must check if received ACK/NAK corrupted twice as many states
state must remember whether current pkt has 0 or 1 seq. #
note: receiver can not know if its last ACK/NAK is received OK by the sender
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
38
duplicate ACK at sender results in same action as NAK: retransmit current pkt
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
39
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK1, chksum) Tanr zelebi, t.ozcelebi@tue.nl udt_send(sndpkt) TU/e Computer Science, System Architecture and Networking
01/03/2012
40
Approach:
sender waits reasonable amount of time for ACK retransmits if no ACK received in this time if pkt (or ACK) just delayed (not lost): retransmission will be duplicate, but use of seq. #s already handles this receiver must specify seq # of pkt being ACKed requires countdown timer
underlying channel can also lose packets (data or ACKs) checksum, seq. #, ACKs, retransmissions will be of help, but not enough network connection between the sender and the receiver cannot reorder messages.
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
41
rdt3.0 sender
rdt_send(data) sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) start_timer Wait for call 0from above Wait for ACK0 rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isACK(rcvpkt,1) ) rdt_rcv(rcvpkt)
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,1) stop_timer timeout udt_send(sndpkt) start_timer rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isACK(rcvpkt,0) ) Wait for ACK1 rdt_send(data)
rdt_rcv(rcvpkt)
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
42
rdt3.0 in action
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
43
rdt3.0 in action
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
44
RTT
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
45
Performance of rdt3.0
rdt3.0 works, but its performance stinks. Example:
1 Gbps link, 15 ms propagation delay, 8000 bit packet
d trans
= 0.00027
microsec
1kByte pkt every 30 msec -> 33kByte/sec throughput over 1 Gbps link network protocol limits use of physical resources!
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
01/03/2012
46
Pipelined protocols
Pipelining: sender allows multiple, in-flight, to-be-acknowledged pkts
range of sequence numbers must be increased buffering at sender and/or receiver
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
47
RTT
U
01/03/2012
sender
3*L/R RTT + L / R
.024
30.008
= 0.0008
microsecon
48
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
Pipelining Protocols
Go-back-N Sender can have up to N unACKed packets in pipeline Rcvr only sends cumulative ACKs
Doesnt ACK packet if theres a gap
Selective Repeat Sender can have up to N unACKed packets in pipeline Rcvr ACKs individual packets Sender maintains timer for each unACKed packet
When timer expires, retransmit only unACKed packet
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
49
Go-Back-N
Sender:
k-bit seq # in pkt header window of up to N, consecutive unacked pkts allowed
ACK(n): ACKs all pkts up to and including seq # n - cumulative ACK Sender may receive duplicate ACKs (see receiver) timer for each in-flight pkt OR a single timer for all in-flight packets See an implementation with a single timer in the following slides timeout(n): retransmit pkt n and all higher seq # pkts in window
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
01/03/2012
50
base=1 nextseqnum=1
Wait
rdt_rcv(rcvpkt) && corrupt(rcvpkt)
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) base = getacknum(rcvpkt) If (base == nextseqnum) stop_timer else Tanr zelebi, t.ozcelebi@tue.nl start_timer Architecture and Networking TU/e Computer Science, System
01/03/2012
51
Wait
ACK-only: always send ACK for correctly-received pkt with highest inorder seq #
may generate duplicate ACKs need only to remember expectedseqnum
out-of-order pkt:
discard (dont buffer) -> no receiver buffering! Re-ACK pkt with highest in-order seq #
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
52
GBN in action
Window Size = 4 packets
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
53
Selective repeat
receiver individually acknowledges all correctly received pkts
buffers pkts, as needed, for eventual in-order delivery to upper layer
sender window
at most N sent but unACKed pkts are allowed
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
54
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
55
Selective repeat
sender
data from above :
if next available seq # in window, send pkt resend pkt n, restart timer
receiver
pkt n in [rcvbase, rcvbase+N-1]
send ACK(n) out-of-order: buffer in-order: deliver (also deliver buffered, in-order pkts), advance window to next not-yetreceived pkt ACK(n) ignore
timeout(n):
ACK(n) in [sendbase,sendbase+N]:
mark pkt n as received if n is smallest unACKed pkt seq. num, advance window base to next unACKed seq #
pkt n in [rcvbase-N,rcvbase-1]
otherwise:
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
56
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
57
01/03/2012
58
Outline
3.1 Transport-layer services 3.2 Process Addressing: Mux / Demux 3.3 Connectionless transport: UDP 3.4 Principles of reliable data transfer 3.5 Connection-oriented transport: TCP 3.6 Principles of congestion control 3.7 TCP congestion control
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
59
full duplex
bi-directional data flow in same connection
connection-oriented
initialize sender, receiver state before data exchange
seq. #s, buffers, flow control info (e.g. RcvWindow)
application reads data socket door
writes data
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
60
URG: urgent data (generally not used) ACK: ACK # valid Header length in 32-bit words PSH: push data now (generally not used) RST, SYN, FIN: connection estab (setup, teardown commands) Internet checksum (as in UDP)
01/03/2012
source port #
dest port #
checksum
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
61
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
62
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
63
Time Wait
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
64
TCP timers
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
65
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
66
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
67
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
68
First estimate of how much SampleRTT deviates from EstimatedRTT: DevRTT = (1-)*DevRTT + *|SampleRTT-EstimatedRTT| (typically, = 0.25) Then set timeout interval:
TimeoutInterval = EstimatedRTT + 4*DevRTT TimeoutInterval = 2*EstimatedRTT
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
01/03/2012
69
Persistence timer
To deal with the zero-size windows What if the receiver advertises that the window size is 0 (by sending ACK) and this ACK is lost? Start persistence timer
when this goes off send a probe (1 byte of data) it is set to the retransmission time & doubled every time a response is not received (until 60 sec, then sent every 60 sec)
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
70
Sender transmits a 1 byte (plus headers) probe in case of timeout usually set to 2h
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
71
Time-Wait Timer
used during connection termination
let the TCP client resend the FIN ACK in case it is lost allow duplicate FIN segments to be discarded enable other connections to use this TCP socket ID Source IP, Destn IP, Source Port, Destn Port
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
72
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
73
74
NextSeqNum = InitialSeqNum SendBase = InitialSeqNum loop (forever) { switch(event) event: data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(data) event: timer timeout retransmit not-yet-acknowledged segment with smallest sequence number start timer event: ACK received, with ACK field value of y if (y > SendBase) { SendBase = y if (there are currently not-yet-acknowledged segments) start timer else stop timer Tanr zelebi, t.ozcelebi@tue.nl } 01/03/2012 TU/e Computer Science, System Architecture and Networking } /* end of loop forever */
TCP sender
(simplified)
Comment: SendBase-1: last cumulatively acked byte
75
timeout
loss
Sendbase= 100 SendBase= 120
SendBase = 100
SendBase= 120
time
01/03/2012
Seq=92 timeout
premature timeout
76
timeout
loss
Sendbase= 120
77
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
78
Fast Retransmit
Time-out period often relatively long: If sender receives 3 ACKs for the same data, it assumes that segment after ACKed long delay before resending lost packet data was lost:
fast retransmit: resend segment before timer expires
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
79
Host A
Host B
timeout
80
fast retransmit
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
81
flow control
sender wont overflow receivers buffer by transmitting too much, too fast
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
82
01/03/2012
83
Outline
3.1 Transport-layer services 3.2 Process Addressing: Mux / Demux 3.3 Connectionless transport: UDP 3.4 Principles of reliable data transfer 3.5 Connection-oriented transport: TCP 3.6 Principles of congestion control 3.7 TCP congestion control
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
84
Congestion
Congestion:
Appears if the load on the network is greater than the capacity of the network
load: the number of packets sent to the network capacity: the number of packets a network can handle
Indicators
lost packets (buffer overflow at routers) long delays (queuing in router buffers)
Congestion control:
keep the load below capacity
different from flow control!
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
01/03/2012
85
in : original data
out
Host B
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
86
out
Host B
COST: more work (due to retransmissions) for a given goodput unneeded retransmissions due to delay: link carries multiple copies of pkt
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
87
out
Host B
Host D Host C
COST: when packet dropped, any upstream transmission capacity used for that packet was wasted!
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
88
Network performance
throughput versus network load
Throughput: number of bits passing through the network per second
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
89
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
90
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
91
Outline
3.1 Transport-layer services 3.2 Process Addressing: Mux / Demux 3.3 Connectionless transport: UDP 3.4 Principles of reliable data transfer 3.5 Connection-oriented transport: TCP 3.6 Principles of congestion control 3.7 TCP congestion control
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
92
01/03/2012
93
Congestion Avoidance)
start with the congestion window (cwnd) = MSS for each successfully received ACK increase the cwnd size by 1 until the cwnd = threshold value; (exponential increase) after that, for each successfully received ACK, increase the window size by 1/n segments up to a size of the receiver window. n=current congestion window (cwnd) size
Congestion Avoidance Multiplicative Decrease Fast Recovery
2.
Slow Start
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
94
Additive increase, resulting in increase of CongWin by 1 MSS every RTT Fast recovery, implementing multiplicative decrease. CongWin will not drop below 1 MSS. Enter slow start
SS or CA
SS or CA
Threshold = CongWin/2, CongWin = 1 MSS, Set state to Slow Start Increment duplicate ACK count for segment being acked
SS or CA
Duplicate ACK
01/03/2012
Copyright 2005 Pearson Addison-Wesley. All rights reserved. Tanr zelebi, t.ozcelebi@tue.nl 95 TU/e Computer Science, System Architecture and Networking
To Do
Read Chapter 4 of the textbook Exercises (due next Wednesday)
Ch3 R1, R3, R6, R8, R11, R12, R14 In R14.c, there is a typo. It should be ( 1 sec ) Ch3 - P7, P19, P20, P22, P23
01/03/2012
Tanr zelebi, t.ozcelebi@tue.nl TU/e Computer Science, System Architecture and Networking
96