Transport Layer
EEE3080F Communication Network and System Fundamentals http://web.uct.ac.za/depts/commnetwork/eee3080
H Anthony Chan; Yang Li
[email protected];
[email protected] http://web.uct.ac.za/depts/commnetwork/achan.html Department of Electrical Engineering University of Cape Town What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 1 February 23, 2007
Principles of Congestion Control Congestion: ♦ informally: “too many sources sending too much data too fast for network to handle” ♦ different from flow control! ♦ manifestations:
¾lost packets (buffer overflow at routers) ¾long delays (queueing in router buffers)
♦ ♦ ♦ ♦ ♦
transport layer services multiplexing/demultiplexing connectionless transport: UDP principles of reliable data transfer connection-oriented transport: TCP ¾ segment structure ¾ reliable data transfer ¾ flow control ¾ connection management ♦ principles of congestion control ♦ TCP congestion control What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 2 February 23, 2007
Causes/costs of congestion: scenario 1 ♦ two senders, two receivers ♦ one router, infinite buffers ♦ no retransmission
Host B
λout
Host A λ : original data in unlimited shared output link buffers
♦ large delays when congested ♦ maximum achievable throughput
♦ a top-10 problem!
What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 3 February 23, 2007
What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 4 February 23, 2007
Causes/costs of congestion: scenario 2 ♦ one router, finite buffers ♦ sender retransmission of lost packet λout
R/2
R/2
finite shared output link buffers
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 5 February 23, 2007
Causes/costs of congestion: scenario 2 “costs” of congestion: ♦ more work (retrans) for given “goodput” ♦ unneeded retransmissions: link carries multiple copies of pkt
R/4
λout λ’in b.
λ’in R/2 a. What I have is only borrowed from God so that I may serve others. H Anthony Chan
R/2
R/3
λout
Host B
λin : original data λ'in : original data, plus retransmitted data
♦ always: λin = λout (goodput) ♦ “perfect” retransmission only when loss: λin’ > λout ♦ retransmission of delayed (not lost) packet makes λin larger (than perfect case) for same λout .
λout
Host A
Causes/costs of congestion: scenario 2
What I have is only borrowed from God so that I may serve others. H Anthony Chan
R/2
λ’in R/2 c.
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 6 February 23, 2007
Causes/costs of congestion: scenario 3 ♦ four senders ♦ multihop paths ♦ timeout/retransmit
♦ Q: what happens as λ’in and λout increase ? Host A λin : original data λ'in : original data, plus retransmitted data finite shared output link buffers
λout
Host B
What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 7 February 23, 2007
What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 8 February 23, 2007
Causes/costs of congestion: scenario 3 H o s t A
λ o u t
H o s t B
Approaches towards congestion control Two broad approaches: End-end congestion control: ♦ no explicit feedback from network ♦ congestion inferred from end-system observed loss, delay ♦ approach taken by TCP
Another “cost” of congestion: ♦ when packet dropped, any “upstream transmission capacity used for that packet was wasted! What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 9 February 23, 2007
Case study: ATM ABR congestion control ABR: available bit rate: ♦ “elastic service” ♦ if sender’s path “underloaded”: ¾ sender should use available bandwidth ♦ if sender’s path congested: ¾ sender throttled to minimum guaranteed rate
What I have is only borrowed from God so that I may serve others. H Anthony Chan
RM (resource management) cells: ♦ sent by sender, interspersed with data cells ♦ bits in RM cell set by switches (“networkassisted”) ¾ NI bit: no increase in rate (mild congestion) ¾ CI bit: congestion indication ♦ RM cells returned to sender by receiver, with bits intact … any man or woman can achieve …, if he or she would Communication Networks
make the same effort … . (Mohandas Karamchand Gandhi)
306 Page 11 February 23, 2007
What I have is only borrowed from God so that I may serve others. H Anthony Chan
Network-assisted congestion control: ♦ routers provide feedback to end systems ¾ single bit indicating congestion (SNA, DECbit, TCP/IP ECN, ATM) ¾ explicit rate sender should send at
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 10 February 23, 2007
Case study: ATM ABR congestion control
♦ two-byte ER (explicit rate) field in RM cell ¾ congested switch may lower ER value in cell ¾ sender’ send rate thus minimum supportable rate on path ♦ EFCI bit in data cells: set to 1 in congested switch ¾ if data cell preceding RM cell has EFCI set, sender sets CI bit in returned RM cell What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 12 February 23, 2007
Transport Layer
TCP Congestion Control ♦ end-end control (no network assistance) ♦ sender limits transmission: ♦ LastByteSent-LastByteAcked ≤ CongWin ♦ Rate = CongWin/RTT bytes/s
♦ ♦ ♦ ♦ ♦
transport layer services multiplexing/demultiplexing connectionless transport: UDP principles of reliable data transfer connection-oriented transport: TCP ¾ segment structure ¾ reliable data transfer ¾ flow control ¾ connection management ♦ principles of congestion control ♦ TCP congestion control What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
already ack’ed
Congwin windowsize N
♦ CongWin is dynamic, function of perceived network congestion Communication Networks 306 Page 13 February 23, 2007
What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 14 February 23, 2007
TCP Congestion Control
How does sender perceive congestion? ♦ loss event = timeout or 3 duplicate acks ♦ TCP sender reduces rate (CongWin) after loss event three mechanisms: ♦ AIMD ♦ slow start ♦ conservative after timeout events
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
nextseqnum
send_base
TCP Congestion Control
What I have is only borrowed from God so that I may serve others. H Anthony Chan
sent, not yet usable, not not ack’ed yet sent usable
Communication Networks 306 Page 15 February 23, 2007
♦ two “phases” ¾ slow start ¾ congestion avoidance ♦ important variables: ¾ Congwin ¾ threshold: defines threshold between two slow start phase, congestion control phase
What I have is only borrowed from God so that I may serve others. H Anthony Chan
♦ “probing” for usable bandwidth: ¾ ideally: transmit as fast as possible (Congwin as large as possible) without loss ¾ increase Congwin until loss (congestion) ¾ loss: decrease Congwin, then begin probing (increasing) again
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 16 February 23, 2007
AIMD TCP congestion avoidance: ♦ AIMD: additive increase, multiplicative decrease ¾ increase window by 1 per RTT ¾ decrease window by factor of 2 on loss event
TCP AIMD
TCP Fairness Fairness goal: if N TCP sessions share same bottleneck link, each should get 1/N of link capacity TCP connection 1
multiplicative decrease: cut CongWin in half after loss event
additive increase: increase CongWin by 1 MSS every RTT in the absence of loss events: probing
Congestion window 24 Kbytes 16 Kbytes 8 Kbytes
TCP connection 2 What I have is only borrowed from God so that I may serve others. H Anthony Chan
bottleneck router capacity R
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 17 February 23, 2007
What I have is only borrowed from God so that I may serve others. H Anthony Chan
TCP Slow Start
What I have is only borrowed from God so that I may serve others. H Anthony Chan
Communication Networks 306 Page 18 February 23, 2007
TCP Slowstart
♦ When connection begins, increase rate exponentially fast until first loss event
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Slowstart algorithm ♦ initialize: Congwin = 1 ♦ for (each segment ACKed) Congwin++ ♦ until (loss event OR ♦ CongWin > threshold)
Host A
Host B 1 segment
RTT
2 segments
♦ exponential increase (per RTT) in window size (not so slow!) ♦ loss event: timeout (Tahoe TCP) and/or or three duplicate ACKs (Reno TCP) Communication Networks 306 Page 19 February 23, 2007
What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
4 segments time
♦ When connection begins, CongWin = 1 MSS ¾ Example: MSS = 500 bytes & RTT = 200 msec ¾ initial rate = 20 kbps ♦ available bandwidth may be >> MSS/RTT ¾ desirable to quickly ramp up to respectable rate
time
Long-lived TCP connection
Communication Networks 306 Page 20 February 23, 2007
Refinement ♦ After 3 dup ACKs: ¾ CongWin is cut in half ¾ window then grows linearly ♦ But after timeout event: ¾ CongWin instead set to 1 MSS; ¾ window then grows exponentially ¾ to a threshold, then grows linearly
What I have is only borrowed from God so that I may serve others. H Anthony Chan
TCP Congestion Avoidance: Tahoe
♦ Philosophy: ♦ 3 dup ACKs indicates network capable of delivering some segments ♦ timeout before 3 dup ACKs is “more alarming”
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 21 February 23, 2007
TCP Congestion Avoidance: Reno ♦ three duplicate ACKs (Reno TCP): ♦ some segments are getting through correctly! ♦ don’t “overreact” by decreasing window to 1 as in Tahoe ¾ decrease window size by half
TCP Tahoe Congestion avoidance
/* slowstart is over */ /* Congwin > threshold */ Until (loss event) { every w segments ACKed: Congwin++ } threshold = Congwin/2 Congwin = 1 perform slowstart
What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 22 February 23, 2007
Congestion Avoidance: Reno ♦ increase window by one per RTT if no loss: Congwin++
TCP Reno Congestion avoidance
/* slowstart is over */ /* Congwin > threshold */ Until (loss event) { every w segments ACKed: Congwin++ } threshold = Congwin/2 If (loss detected by timeout) { Congwin = 1 perform slowstart } If (loss detected by triple duplicate ACK) Congwin = Congwin/2
receiver
W sender ♦ decrease window by half on detection of loss by triple duplicate ACK: CongWin = Congwin/2 W Threshold) set state to “Congestion Avoidance”
Resulting in a doubling of CongWin every RTT
ACK receipt for Congestion previously Avoidance unacked data (CA)
CongWin = CongWin+MSS * (MSS/CongWin)
Additive increase, resulting in increase of CongWin by 1 MSS every RTT
Loss event detected by triple duplicate ACK
SS or CA
Threshold = CongWin/2, CongWin = Threshold, Set state to “Congestion Avoidance”
Fast recovery, implementing multiplicative decrease. CongWin will not drop below 1 MSS.
Timeout
SS or CA
Threshold = CongWin/2, CongWin = 1 MSS, Set state to “Slow Start”
Enter slow start
Duplicate ACK
SS or CA
Increment duplicate ACK count for segment being acked
CongWin and Threshold not changed
What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 27 February 23, 2007
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 26 February 23, 2007
TCP throughput ♦ What’s the average throughout of TCP as a function of window size and RTT? ¾Ignore slow start ♦ Let W be the window size when loss occurs. ♦ When window is W, throughput is W/RTT ♦ Just after loss, window drops to W/2, throughput to W/2RTT. ♦ Average throughout: .75 W/RTT
What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 28 February 23, 2007
TCP Futures
TCP Fairness
♦ Example: 1500 byte segments, 100ms RTT, want 10 Gbps throughput ♦ Requires window size W = 83,333 in-flight segments ♦ Throughput in terms of loss rate:
TCP connection 1
1.22 ⋅ MSS RTT L
bottleneck TCP connection 2 router capacity R
♦ ➜ L = 2·10-10 Wow ♦ New versions of TCP for high-speed needed!
What I have is only borrowed from God so that I may serve others. H Anthony Chan
Fairness goal: if K TCP sessions share same bottleneck link of bandwidth R, each should have average rate of R/K
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 29 February 23, 2007
What I have is only borrowed from God so that I may serve others. H Anthony Chan
Why is TCP fair? ♦ Additive increase gives slope of 1, as throughout increases ♦ multiplicative decrease decreases throughput proportionally
Connection 2 throughput
Communication Networks 306 Page 30 February 23, 2007
Fairness (more)
Two competing sessions:
R
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
equal bandwidth share
loss: decrease window by factor of 2 congestion avoidance: additive increase loss: decrease window by factor of 2 congestion avoidance: additive increase
Fairness and UDP ♦ Multimedia apps often do not use TCP ¾ do not want rate throttled by congestion control ♦ Instead use UDP: ¾ pump audio/video at constant rate, tolerate packet loss ♦ Research area: TCP friendly
Fairness and parallel TCP connections ♦ nothing prevents app from opening parallel cnctions between 2 hosts. ♦ Web browsers do this ♦ Example: link of rate R supporting 9 cnctions; ¾ new app asks for 1 TCP, gets rate R/10 ¾ new app asks for 11 TCPs, gets R/2 !
Connection 1 throughput R What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 31 February 23, 2007
What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 32 February 23, 2007
Delay modeling
Delay modeling
Q: How long does it take to receive an object from a Web server after sending a request? Ignoring congestion, delay is influenced by: ♦ TCP connection establishment ♦ data transmission delay ♦ slow start
What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 33 February 23, 2007
Notation, assumptions: ♦ Assume one link between client and server of rate R ♦ S: MSS (bits) ♦ O: object size (bits) ♦ no retransmissions (no loss, no corruption) Window size: ♦ First assume: fixed congestion window, W segments ♦ Then dynamic window, modeling slow start What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 34 February 23, 2007
Fixed congestion window (1) First case:
TCP latency Modeling K:= O/WS
♦ WS/R > RTT + S/R: ACK for first segment in window returns before window’s worth of data sent ♦ delay = 2RTT + O/R Time at server
Time at client initiate TCP connection RTT request object S/R WS/R
1st ACK returns
Case 1: latency = 2RTT + O/R
O/R
Case 2: latency = 2RTT + O/R + (K-1)[S/R + RTT - WS/R]
time
What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 35 February 23, 2007
What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 36 February 23, 2007
Fixed congestion window (2) Second case:
TCP Latency Modeling: Slow Start
♦ WS/R < RTT + S/R: wait for ACK after sending window’s worth of data sent ♦ delay = 2RTT + O/R + (K-1)[S/R + RTT - WS/R]
♦ Now suppose window grows according to slow start. ♦ Will show that the latency of one object of size O is: Latency = 2 RTT +
O S⎤ S ⎡ + P ⎢ RTT + ⎥ − ( 2 P − 1) R R⎦ R ⎣
Time at server
Time at client initiate TCP connection
♦ where P is the number of times TCP stalls at server:
RTT request object WS/R
P = min{Q, K − 1}
S/R 1st ACK returns
WS/R
♦ where Q is the number of times the server would stall if the object were of infinite size. ♦ and K is the number of windows that cover the object.
time
What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 37 February 23, 2007
What I have is only borrowed from God so that I may serve others. H Anthony Chan
TCP Latency Modeling: Slow Start Delay components ♦ 2 RTT for connection establishment and request ♦ O/R to transmit object ♦ time server idles due to slow start ♦ Server idles: P = min{K-1,Q} times
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 38 February 23, 2007
TCP Latency Modeling: Slow Start Delay components ♦ Example:
initiate TCP connection request object
♦ ♦ ♦ ♦
O/S = 15 segments K = 4 windows Q=2 P = min{K-1,Q} = 2
RTT
first window = S/R second window = 2S/R third window = 4S/R
fourth window = 8S/R
♦ Server stalls P=2 times. object delivered time at client What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 39 February 23, 2007
What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
complete transmission time at server Communication Networks 306 Page 40 February 23, 2007
TCP Latency Modeling: Slow Start (cont.) S + RTT = time from when server starts to send segment R until server receives acknowledgement
♦ Recall K = number of windows that cover object ♦ How do we calculate K ?
initiate TCP connection
S 2 k −1 = time to transmit the kth window R
request object
+
RTT ⎡S k −1 S ⎤ ⎢⎣ R + RTT − 2 R ⎥⎦ = stall time after the kth window
TCP Delay Modeling (4)
K = min{k : 20 S + 21 S + L + 2 k −1 S ≥ O} = min{k : 20 + 21 + L + 2 k −1 ≥ O / S } O = min{k : 2 k − 1 ≥ } S O = min{k : k ≥ log 2 ( + 1)} S O ⎤ ⎡ = ⎢log 2 ( + 1)⎥ S ⎥ ⎢
first window = S/R 2nd window = 2S/R 3rd window = 4S/R
latency =
P O + 2 RTT + ∑ stallTime p R p =1
P O S S + 2 RTT + ∑ [ + RTT − 2k −1 ] R R object k =1 R delivered O S S = + 2 RTT + P[ RTT + ] − ( 2 P − 1) time at R R R client
4th window = 8S/R
=
What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
complete transmission time at server Communication Networks 306 Page 41 February 23, 2007
♦ Calculation of Q, number of idles for infinite-size object, is similar. What I have is only borrowed from God so that I may serve others. H Anthony Chan
♦ Assume Web page consists of: ¾ 1 base HTML page (of size O bits) ¾ M images (each of size O bits) ♦ Non-persistent HTTP: ¾ M+1 TCP connections in series ¾ Response time = (M+1)O/R + (M+1)2RTT + sum of idle times ♦ Persistent HTTP: ¾ 2 RTT to request and receive base HTML file ¾ 1 RTT to request and receive M images ¾ Response time = (M+1)O/R + 3RTT + sum of idle times ♦ Non-persistent HTTP with X parallel connections ¾ Suppose M/X integer. ¾ 1 TCP connection for base file ¾ M/X sets of parallel connections for images. ¾ Response time = (M+1)O/R + (M/X + 1)2RTT + sum of idle times
♦ For low bandwidth, connection & response time dominated by transmission time. ♦ Persistent connections only give minor improvement over parallel connections. 20 18 16 14 12 10 8 6 4 2 0
non-persistent persistent parallel nonpersistent 28 Kbps
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 42 February 23, 2007
HTTP Response time (in seconds) RTT = 100 msec, O = 5 Kbytes, M=10 and X=5
HTTP Modeling
What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 43 February 23, 2007
100 1 10 Kbps Mbps Mbps
What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 44 February 23, 2007
HTTP Response time (in seconds) RTT = 1 sec, O = 5 Kbytes, M=10 and X=5 ♦ For larger RTT, response time dominated by TCP establishment & slow start delays. Persistent connections now give important improvement: particularly in high delay•bandwidth networks. 70 60 50
non-persistent
40 persistent
30 20
EEE3080F Communication Network and System Fundamentals I have not the shadow of a doubt that any man or woman can achieve what I have, if he or she would make the same effort and cultivate the same hope and faith. (Mohandas Karamchand Gandhi)
parallel nonpersistent
10 0 28 Kbps What I have is only borrowed from God so that I may serve others. H Anthony Chan
© 2003-2007
100 1 10 Kbps Mbps Mbps
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 45 February 23, 2007
What I have is only borrowed from God so that I may serve others. H Anthony Chan
… any man or woman can achieve …, if he or she would make the same effort … . (Mohandas Karamchand Gandhi)
Communication Networks 306 Page 46 February 23, 2007