<x:xmpmeta tsc:version="2.0.1" xmlns:x="adobe:ns:meta/" xmlns:tsc="http://www.techsmith.com/xmp/tsc/">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpDM="http://ns.adobe.com/xmp/1.0/DynamicMedia/" xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:tscDM="http://www.techsmith.com/xmp/tscDM/" xmlns:tscIQ="http://www.techsmith.com/xmp/tscIQ/" xmlns:tscHS="http://www.techsmith.com/xmp/tscHS/" xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#" xmlns:stFnt="http://ns.adobe.com/xap/1.0/sType/Font#" xmlns:exif="http://ns.adobe.com/exif/1.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
      <rdf:Description dc:date="2020-02-10 10:27:52 PM" dc:source="Camtasia,9.1.4,enu" dc:title="i_3tcp3" tscDM:firstFrame="i_3tcp3_First_Frame.png" tscDM:originId="2DF50D87-BA53-475F-A514-C98B82A26F05" tscDM:project="i_3tcp3.tscproj">
         <xmpDM:duration xmpDM:scale="1/1000" xmpDM:value="1073900"/>
         <xmpDM:videoFrameSize stDim:unit="pixel" stDim:h="1080" stDim:w="1440"/>
         <tsc:langName>
            <rdf:Bag>
               <rdf:li xml:lang="en-US">English</rdf:li></rdf:Bag>
         </tsc:langName>
         <xmpDM:Tracks>
            <rdf:Bag>
               <rdf:li>
                  <rdf:Description xmpDM:trackType="ScreenText" xmpDM:frameRate="f1000" xmpDM:trackName="Screen Text">
                     <xmpDM:markers>
                        <rdf:Seq>
                           <rdf:li><rdf:Description xmpDM:name="Explicit Congestion Notification (ECN) Explicit congestion notification (ECN) is based on our DECbit research." xmpDM:startTime="214167" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Two bits in IP Header: 00: Transport is not capable of ECN (e.g.," xmpDM:startTime="214167" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="UDP) 01: Transport is capable of ECN 10: Transport is capable of ECN 11: Congestion experienced (CE) When a router" xmpDM:startTime="214167" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="encounters congestion, instead of dropping the datagram, it marks the two bits as “11” congestion experienced Transport Network Datalink Transport" xmpDM:startTime="214167" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Network Datalink router ECN11 ECE1 CWR1 Application Application" xmpDM:startTime="214167" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="ECN (Cont) On receiving “CE” code point, the receiver sends “ECN Echo (ECE)” flag in the TCP header On seeing" xmpDM:startTime="503000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="the ECE flag, the source reduces its congestion window, and sets “Congestion Window Reduced (CWR) flag in outgoing segment On" xmpDM:startTime="503000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="receiving “CWR” flag, the receiver, stops setting ECE bit Transport Network Datalink Transport Network Datalink router ECN11 ECE1 CWR1 Application" xmpDM:startTime="503000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Application Ref: https://en.wikipedia.org/wiki/Explicit_Congestion_Notification" xmpDM:startTime="503000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="" xmpDM:startTime="503000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Explicit Congestion Notification (ECN) Explicit congestion notification (ECN) is based on our DECbit research." xmpDM:startTime="544167" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Two bits in IP Header: 00: Transport is not capable of ECN (e.g.," xmpDM:startTime="544167" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="UDP) 01: Transport is capable of ECN 10: Transport is capable of ECN 11: Congestion experienced (CE) When a router" xmpDM:startTime="544167" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="encounters congestion, instead of dropping the datagram, it marks the two bits as “11” congestion experienced Transport Network Datalink Transport" xmpDM:startTime="544167" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Network Datalink router ECN11 ECE1 CWR1 Application Application" xmpDM:startTime="544167" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="ECN (Cont) On receiving “CE” code point, the receiver sends “ECN Echo (ECE)” flag in the TCP header On seeing" xmpDM:startTime="548567" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="the ECE flag, the source reduces its congestion window, and sets “Congestion Window Reduced (CWR) flag in outgoing segment On" xmpDM:startTime="548567" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="receiving “CWR” flag, the receiver, stops setting ECE bit Transport Network Datalink Transport Network Datalink router ECN11 ECE1 CWR1 Application" xmpDM:startTime="548567" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Application Ref: https://en.wikipedia.org/wiki/Explicit_Congestion_Notification" xmpDM:startTime="548567" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="" xmpDM:startTime="548567" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Explicit Congestion Notification (ECN) Explicit congestion notification (ECN) is based on our DECbit research." xmpDM:startTime="582033" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Two bits in IP Header: 00: Transport is not capable of ECN (e.g.," xmpDM:startTime="582033" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="UDP) 01: Transport is capable of ECN 10: Transport is capable of ECN 11: Congestion experienced (CE) When a router" xmpDM:startTime="582033" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="encounters congestion, instead of dropping the datagram, it marks the two bits as “11” congestion experienced Transport Network Datalink Transport" xmpDM:startTime="582033" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Network Datalink router ECN11 ECE1 CWR1 Application Application" xmpDM:startTime="582033" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="ECN (Cont) On receiving “CE” code point, the receiver sends “ECN Echo (ECE)” flag in the TCP header On seeing" xmpDM:startTime="585300" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="the ECE flag, the source reduces its congestion window, and sets “Congestion Window Reduced (CWR) flag in outgoing segment On" xmpDM:startTime="585300" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="receiving “CWR” flag, the receiver, stops setting ECE bit Transport Network Datalink Transport Network Datalink router ECN11 ECE1 CWR1 Application" xmpDM:startTime="585300" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Application Ref: https://en.wikipedia.org/wiki/Explicit_Congestion_Notification" xmpDM:startTime="585300" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="" xmpDM:startTime="585300" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Explicit Congestion Notification (ECN) Explicit congestion notification (ECN) is based on our DECbit research." xmpDM:startTime="587200" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Two bits in IP Header: 00: Transport is not capable of ECN (e.g.," xmpDM:startTime="587200" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="UDP) 01: Transport is capable of ECN 10: Transport is capable of ECN 11: Congestion experienced (CE) When a router" xmpDM:startTime="587200" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="encounters congestion, instead of dropping the datagram, it marks the two bits as “11” congestion experienced Transport Network Datalink Transport" xmpDM:startTime="587200" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Network Datalink router ECN11 ECE1 CWR1 Application Application" xmpDM:startTime="587200" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="ECN (Cont) On receiving “CE” code point, the receiver sends “ECN Echo (ECE)” flag in the TCP header On seeing" xmpDM:startTime="593300" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="the ECE flag, the source reduces its congestion window, and sets “Congestion Window Reduced (CWR) flag in outgoing segment On" xmpDM:startTime="593300" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="receiving “CWR” flag, the receiver, stops setting ECE bit Transport Network Datalink Transport Network Datalink router ECN11 ECE1 CWR1 Application" xmpDM:startTime="593300" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Application Ref: https://en.wikipedia.org/wiki/Explicit_Congestion_Notification" xmpDM:startTime="593300" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="" xmpDM:startTime="593300" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Explicit Congestion Notification (ECN) Explicit congestion notification (ECN) is based on our DECbit research." xmpDM:startTime="644433" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Two bits in IP Header: 00: Transport is not capable of ECN (e.g.," xmpDM:startTime="644433" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="UDP) 01: Transport is capable of ECN 10: Transport is capable of ECN 11: Congestion experienced (CE) When a router" xmpDM:startTime="644433" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="encounters congestion, instead of dropping the datagram, it marks the two bits as “11” congestion experienced Transport Network Datalink Transport" xmpDM:startTime="644433" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Network Datalink router ECN11 ECE1 CWR1 Application Application" xmpDM:startTime="644433" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="TCP Average Throughput Average Throughput = Here, P = Probability of Packet loss Note 1: The formula is an approximation" xmpDM:startTime="645100" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="which does not apply at P=0 or P=1." xmpDM:startTime="645100" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="At P=1, the throughput is zero." xmpDM:startTime="645100" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="At P=0, the throughput is min{1, (Receiver Window/RTT)} Note 1: The textbook uses L for probability of packet loss but" xmpDM:startTime="645100" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="it was used earlier for length of packets." xmpDM:startTime="645100" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="1.22" xmpDM:startTime="645100" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="MSS RTT P" xmpDM:startTime="645100" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Explicit Congestion Notification (ECN) Explicit congestion notification (ECN) is based on our DECbit research." xmpDM:startTime="646400" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Two bits in IP Header: 00: Transport is not capable of ECN (e.g.," xmpDM:startTime="646400" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="UDP) 01: Transport is capable of ECN 10: Transport is capable of ECN 11: Congestion experienced (CE) When a router" xmpDM:startTime="646400" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="encounters congestion, instead of dropping the datagram, it marks the two bits as “11” congestion experienced Transport Network Datalink Transport" xmpDM:startTime="646400" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Network Datalink router ECN11 ECE1 CWR1 Application Application" xmpDM:startTime="646400" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="ECN (Cont) On receiving “CE” code point, the receiver sends “ECN Echo (ECE)” flag in the TCP header On seeing" xmpDM:startTime="730467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="the ECE flag, the source reduces its congestion window, and sets “Congestion Window Reduced (CWR) flag in outgoing segment On" xmpDM:startTime="730467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="receiving “CWR” flag, the receiver, stops setting ECE bit Transport Network Datalink Transport Network Datalink router ECN11 ECE1 CWR1 Application" xmpDM:startTime="730467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Application Ref: https://en.wikipedia.org/wiki/Explicit_Congestion_Notification" xmpDM:startTime="730467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="" xmpDM:startTime="730467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="TCP: Summary TCP uses port numbers for multiplexing TCP provides reliable full-duplex connections." xmpDM:startTime="731033" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="TCP is stream based and has window flow control Slow-start congestion control works on timeout Explicit congestion notification works using" xmpDM:startTime="731033" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="ECN bits" xmpDM:startTime="731033" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="ECN (Cont) On receiving “CE” code point, the receiver sends “ECN Echo (ECE)” flag in the TCP header On seeing" xmpDM:startTime="732300" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="the ECE flag, the source reduces its congestion window, and sets “Congestion Window Reduced (CWR) flag in outgoing segment On" xmpDM:startTime="732300" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="receiving “CWR” flag, the receiver, stops setting ECE bit Transport Network Datalink Transport Network Datalink router ECN11 ECE1 CWR1 Application" xmpDM:startTime="732300" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Application Ref: https://en.wikipedia.org/wiki/Explicit_Congestion_Notification" xmpDM:startTime="732300" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="" xmpDM:startTime="732300" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="TCP: Summary TCP uses port numbers for multiplexing TCP provides reliable full-duplex connections." xmpDM:startTime="752333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="TCP is stream based and has window flow control Slow-start congestion control works on timeout Explicit congestion notification works using" xmpDM:startTime="752333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="ECN bits" xmpDM:startTime="752333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Homework 3C: Slow Start [22 points] Consider Figure below." xmpDM:startTime="784833" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Assuming TCP Reno is the protocol experiencing the behavior shown above, answer the following questions." xmpDM:startTime="784833" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="In all cases, you should provide a short discussion justifying your answer." xmpDM:startTime="784833" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="" xmpDM:startTime="784833" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Homework 3C (Cont) A." xmpDM:startTime="786733" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Identify the interval of time when TCP slow start is operating." xmpDM:startTime="786733" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="B." xmpDM:startTime="786733" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Identify the intervals of time when TCP congestion avoidance is operating." xmpDM:startTime="786733" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="C." xmpDM:startTime="786733" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="After the 16th transmission round, is segment loss detected by a triple duplicate ACK or by a timeout? D." xmpDM:startTime="786733" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="After the 22nd transmission round, is segment loss detected by a triple duplicate ACK or by a timeout? E." xmpDM:startTime="786733" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="What is the initial value of ssthresh at the first transmission round? F .What" xmpDM:startTime="786733" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="is the value of ssthresh at the 18th transmission round? G." xmpDM:startTime="786733" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="What is the value of ssthresh at the 24th transmission round?" xmpDM:startTime="786733" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Homework 3C (Cont) H." xmpDM:startTime="787333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="During what transmission round is the 70th segment sent? I." xmpDM:startTime="787333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Assuming a packet loss is detected after the 26th round by the receipt of a triple duplicate ACK, what will" xmpDM:startTime="787333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="be the values of the congestion window size and of ssthresh? J." xmpDM:startTime="787333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Suppose TCP Tahoe is used (instead of TCP Reno), and assume that triple duplicate ACKs are received at the 16th" xmpDM:startTime="787333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="round." xmpDM:startTime="787333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="What are the ssthresh and the congestion window size at the 19th round? K." xmpDM:startTime="787333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Again suppose TCP Tahoe is used, and there is a timeout event at the end of 22nd round." xmpDM:startTime="787333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="How many packets have been sent out from 17th round till 22nd round, inclusive? (Hint: You need to calculate CWND" xmpDM:startTime="787333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="in 17-22nd rounds first." xmpDM:startTime="787333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="It will be different that that shown for Reno.)" xmpDM:startTime="787333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="" xmpDM:startTime="787333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Summary Multiplexing/demultiplexing by a combination of source and destination IP addresses and port numbers." xmpDM:startTime="787833" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Longer distance or higher speed Þ Larger a Þ Larger window is better Window flow control is better for long-distance" xmpDM:startTime="787833" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="or high-speed networks UDP is connectionless and simple." xmpDM:startTime="787833" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="No flow/error control." xmpDM:startTime="787833" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Has error detection." xmpDM:startTime="787833" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="TCP provides full-duplex connections with flow/error/congestion control." xmpDM:startTime="787833" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="" xmpDM:startTime="787833" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Lab 3: Reliable Transport Protocol [60 points] Overview In this laboratory programming assignment, you will be writing the sending and" xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="receiving transport-level code for implementing a simple reliable data transfer protocol." xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="There are two versions of this lab, the Alternating-Bit-Protocol version and the Go-Back-N version." xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="This lab should be fun since your implementation will differ very little from what would be required in a real-world" xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="situation." xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Since you probably don't have standalone machines (with an OS that you can modify), your code will have to execute" xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="in a simulated hardware/software environment." xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="However, the programming interface provided to your routines, i.e.," xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="the code that would call your entities from above and from below is very close to what is done in" xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="an actual UNIX environment." xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="(Indeed, the software interfaces described in this programming assignment are much more realistic that the infinite loop senders and receivers" xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="that many texts describe)." xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Stopping/starting of timers are also simulated, and timer interrupts will cause your timer handling routine to be activated." xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="The routines you will write The procedures you will write are for the sending entity (A) and the receiving entity" xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="(B)." xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Only unidirectional transfer of data (from A to B) is required." xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Of course, the B side will have to send packets to A to acknowledge (positively or negatively) receipt of data." xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Your routines are to be implemented in the form of the procedures described below." xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="These procedures will be called by (and will call) procedures that I have written which emulate a network environment." xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="The overall structure of the environment is shown in Figure Lab.3-1" xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="(structure of the emulated environment): The unit of data passed between the upper layers and your protocols is a message," xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="which is declared as: struct msg { char data[20]; }; This declaration, and all other data structure and emulator routines," xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="as well as stub routines (i.e.," xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="those you are to complete) are in the file, prog2.c" xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="(http://gaia.cs.umass.edu/kurose/transport/prog2.c" xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name=")." xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Your sending entity will thus receive data in 20-byte chunks from layer5; your receiving entity should deliver 20-byte chunks of" xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="correctly received data to layer5 at the receiving side." xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="" xmpDM:startTime="957233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Lab 3 (Cont) figpa21 Figure Lab.3-1" xmpDM:startTime="966833" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="" xmpDM:startTime="966833" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Lab 3 (Cont) The unit of data passed between your routines and the network layer is the packet, which is" xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="declared as: struct pkt { int seqnum; int acknum; int checksum; char payload[20]; }; Your routines will fill in the" xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="payload field from the message data passed down from layer5." xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="The other packet fields will be used by your protocols to insure reliable delivery, as we've seen in class." xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="The routines you will write are detailed below." xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="As noted above, such procedures in real-life would be part of the operating system, and would be called by other" xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="procedures in the operating system." xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="A_output(message), where message is a structure of type msg, containing data to be sent to the B-side." xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="This routine will be called whenever the upper layer at the sending side (A) has a message to send." xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="It is the job of your protocol to insure that the data in such a message is delivered in-order, and" xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="correctly, to the receiving side upper layer." xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="A_input(packet), where packet is a structure of type pkt." xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="This routine will be called whenever a packet sent from the B-side (i.e.," xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="as a result of a tolayer3() being done by a B-side procedure) arrives at the A-side." xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="packet is the (possibly corrupted) packet sent from the B-side." xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="A_timerinterrupt() This routine will be called when A's timer expires (thus generating a timer interrupt)." xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="You'll probably want to use this routine to control the retransmission of packets." xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="See starttimer() and stoptimer() below for how the timer is started and stopped." xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="A_init() This routine will be called once, before any of your other A-side routines are called." xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="It can be used to do any required initialization." xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="B_input(packet),where packet is a structure of type pkt." xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="This routine will be called whenever a packet sent from the A-side (i.e.," xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="as a result of a tolayer3() being done by a A-side procedure) arrives at the B-side." xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="packet is the (possibly corrupted) packet sent from the A-side." xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="B_init() This routine will be called once, before any of your other B-side routines are called." xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="It can be used to do any required initialization." xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="" xmpDM:startTime="968467" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Lab 3 (Cont) Software Interfaces The procedures described above are the ones that you will write." xmpDM:startTime="969233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="I have written the following routines which can be called by your routines: starttimer(calling_entity,increment), where calling_entity is either 0 (for" xmpDM:startTime="969233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="starting the A-side timer) or 1 (for starting the B side timer), and increment is a float value indicating the" xmpDM:startTime="969233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="amount of time that will pass before the timer interrupts." xmpDM:startTime="969233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="A's timer should only be started (or stopped) by A-side routines, and similarly for the B-side timer." xmpDM:startTime="969233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="To give you an idea of the appropriate increment value to use: a packet sent into the network takes an" xmpDM:startTime="969233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="average of 5 time units to arrive at the other side when there are no other messages in the medium." xmpDM:startTime="969233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="stoptimer(calling_entity), where calling_entity is either 0 (for stopping the A-side timer) or 1 (for stopping the B side timer)." xmpDM:startTime="969233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="tolayer3(calling_entity,packet), where calling_entity is either 0 (for the A-side send) or 1 (for the B side send), and packet is" xmpDM:startTime="969233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="a structure of type pkt." xmpDM:startTime="969233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Calling this routine will cause the packet to be sent into the network, destined for the other entity." xmpDM:startTime="969233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="tolayer5(calling_entity,message), where calling_entity is either 0 (for A-side delivery to layer 5) or 1 (for B-side delivery to layer 5)," xmpDM:startTime="969233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="and message is a structure of type msg." xmpDM:startTime="969233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="With unidirectional data transfer, you would only be calling this with calling_entity equal to 1 (delivery to the B-side)." xmpDM:startTime="969233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Calling this routine will cause data to be passed up to layer 5." xmpDM:startTime="969233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="" xmpDM:startTime="969233" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Lab 3 (Cont) The simulated network environment A call to procedure tolayer3() sends packets into the medium (i.e.," xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="into the network layer)." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Your procedures A_input() and B_input() are called when a packet is to be delivered from the medium to your protocol" xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="layer." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="The medium is capable of corrupting and losing packets." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="It will not reorder packets." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="When you compile your procedures and my procedures together and run the resulting program, you will be asked to specify" xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="values regarding the simulated network environment: Number of messages to simulate." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="My emulator (and your routines) will stop as soon as this number of messages have been passed down from layer" xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="5, regardless of whether or not all of the messages have been correctly delivered." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Thus, you need not worry about undelivered or unACK'ed messages still in your sender when the emulator stops." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Note that if you set this value to 1, your program will terminate immediately, before the message is delivered to" xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="the other side." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Thus, this value should always be greater than 1." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Loss." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="You are asked to specify a packet loss probability." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="A value of 0.1" xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="would mean that one in ten packets (on average) are lost." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Corruption." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="You are asked to specify a packet loss probability." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="A value of 0.2" xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="would mean that one in five packets (on average) are corrupted." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Note that the contents of payload, sequence, ack, or checksum fields can be corrupted." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Your checksum should thus include the data, sequence, and ack fields." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Tracing." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Setting a tracing value of 1 or 2 will print out useful information about what is going on inside the" xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="emulation (e.g.," xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="what's happening to packets and timers)." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="A tracing value of 0 will turn this off." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="A tracing value greater than 2 will display all sorts of odd messages that are for my own emulator-debugging purposes." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="A tracing value of 2 may be helpful to you in debugging your code." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="You should keep in mind that real implementors do not have underlying networks that provide such nice information about what" xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="is going to happen to their packets! Average time between messages from sender's layer5." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="You can set this value to any non-zero, positive value." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Note that the smaller the value you choose, the faster packets will be be arriving to your sender." xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="" xmpDM:startTime="970333" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Lab 3 (Cont) The Alternating-Bit-Protocol Version of this lab." xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="You are to write the procedures, A_output(),A_input(),A_timerinterrupt(),A_init(),B_input(), and B_init() which together will implement a stop-and-wait (i.e.," xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="the alternating bit protocol, which we referred to as rdt3.0" xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="in the text) unidirectional transfer of data from the A-side to the B-side." xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Your protocol should use both ACK and NACK messages." xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="You should choose a very large value for the average time between messages from sender's layer5, so that your sender" xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="is never called while it still has an outstanding, unacknowledged message it is trying to send to the receiver." xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="I'd suggest you choose a value of 1000." xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="You should also perform a check in your sender to make sure that when A_output() is called, there is no" xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="message currently in transit." xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="If there is, you can simply ignore (drop) the data being passed to the A_output() routine." xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="You should put your procedures in a file called prog2.c." xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="You will need the initial version of this file, containing the emulation routines we have writen for you, and the" xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="stubs for your procedures." xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="You can obtain this program from http://gaia.cs.umass.edu/kurose/transport/prog2.c." xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="This lab can be completed on any machine supporting C." xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="It makes no use of UNIX features." xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="(You can simply copy the prog2.c" xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="file to whatever machine and OS you choose)." xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="We recommend that you should hand in a code listing, a design document, and sample output." xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="For your sample output, your procedures might print out a message whenever an event occurs at your sender or receiver" xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="(a message/packet arrival, or a timer interrupt) as well as any action taken in response." xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="You might want to hand in output for a run up to the point (approximately) when 10 messages have been" xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="ACK'ed correctly at the receiver, a loss probability of 0.1," xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="and a corruption probability of 0.3," xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="and a trace level of 2." xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="You might want to annotate your printout with a colored pen showing how your protocol correctly recovered from packet loss" xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="and corruption." xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Make sure you read the &quot;helpful hints&quot; for this lab following the description of the Go_Back-N version of this lab." xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="" xmpDM:startTime="971000" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Lab 3 (Cont) The Go-Back-N version of this lab." xmpDM:startTime="971700" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="You are to write the procedures, A_output(),A_input(),A_timerinterrupt(),A_init(),B_input(), and B_init() which together will implement a Go-Back-N unidirectional transfer of data from" xmpDM:startTime="971700" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="the A-side to the B-side, with a window size of 8." xmpDM:startTime="971700" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Your protocol should use both ACK and NACK messages." xmpDM:startTime="971700" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Consult the alternating-bit-protocol version of this lab above for information about how to obtain the network emulator." xmpDM:startTime="971700" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="We would STRONGLY recommend that you first implement the easier lab (Alternating Bit) and then extend your code to implement" xmpDM:startTime="971700" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="the harder lab (Go-Back-N)." xmpDM:startTime="971700" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Believe me - it will not be time wasted! However, some new considerations for your Go-Back-N code (which do not" xmpDM:startTime="971700" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="apply to the Alternating Bit protocol) are: A_output(message), where message is a structure of type msg, containing data to be" xmpDM:startTime="971700" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="sent to the B-side." xmpDM:startTime="971700" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Your A_output() routine will now sometimes be called when there are outstanding, unacknowledged messages in the medium - implying that" xmpDM:startTime="971700" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="you will have to buffer multiple messages in your sender." xmpDM:startTime="971700" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Also, you'll also need buffering in your sender because of the nature of Go-Back-N: sometimes your sender will be called" xmpDM:startTime="971700" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="but it won't be able to send the new message because the new message falls outside of the window." xmpDM:startTime="971700" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Rather than have you worry about buffering an arbitrary number of messages, it will be OK for you to have" xmpDM:startTime="971700" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="some finite, maximum number of buffers available at your sender (say for 50 messages) and have your sender simply abort" xmpDM:startTime="971700" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="(give up and exit) should all 50 buffers be in use at one point (Note: using the values given below," xmpDM:startTime="971700" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="this should never happen!) In the ``real-world,'' of course, one would have to come up with a more elegant solution" xmpDM:startTime="971700" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="to the finite buffer problem! A_timerinterrupt() This routine will be called when A's timer expires (thus generating a timer interrupt)." xmpDM:startTime="971700" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Remember that you've only got one timer, and may have many outstanding, unacknowledged packets in the medium, so you'll have" xmpDM:startTime="971700" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="to think a bit about how to use this single timer." xmpDM:startTime="971700" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="" xmpDM:startTime="971700" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Lab 3 (Cont) Consult the Alternating-bit-protocol version of this lab above for a general description of what you might want" xmpDM:startTime="972367" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="to hand in." xmpDM:startTime="972367" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="You might want to hand in output for a run that was long enough so that at least 20 messages" xmpDM:startTime="972367" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="were successfully transfered from sender to receiver (i.e.," xmpDM:startTime="972367" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="the sender receives ACK for these messages) transfers, a loss probability of 0.2," xmpDM:startTime="972367" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="and a corruption probability of 0.2," xmpDM:startTime="972367" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="and a trace level of 2, and a mean time between arrivals of 10." xmpDM:startTime="972367" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="You might want to annotate parts of your printout with a colored pen showing how your protocol correctly recovered from" xmpDM:startTime="972367" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="packet loss and corruption." xmpDM:startTime="972367" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Note: Only alternating bit protocol is required." xmpDM:startTime="972367" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Go-back-N is not required for this course." xmpDM:startTime="972367" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="" xmpDM:startTime="972367" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Lab 3 (Cont) Helpful Hints and the like Checksumming." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="You can use whatever approach for checksumming you want." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Remember that the sequence number and ack field can also be corrupted." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="We would suggest a TCP-like checksum, which consists of the sum of the (integer) sequence and ack field values, added" xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="to a character-by-character sum of the payload field of the packet (i.e.," xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="treat each character as if it were an 8 bit integer and just add them together)." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Note that any shared &quot;state&quot; among your routines needs to be in the form of global variables." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Note also that any information that your procedures need to save from one invocation to the next must also be" xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="a global (or static) variable." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="For example, your routines will need to keep a copy of a packet for possible retransmission." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="It would probably be a good idea for such a data structure to be a global variable in your code." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Note, however, that if one of your global variables is used by your sender side, that variable should NOT be" xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="accessed by the receiving side entity, since in real life, communicating entities connected only by a communication channel can not" xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="share global variables." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="There is a float global variable called time that you can access from within your code to help you out" xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="with your diagnostics msgs." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="START SIMPLE." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Set the probabilities of loss and corruption to zero and test out your routines." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Better yet, design and implement your procedures for the case of no loss and no corruption, and get them working" xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="first." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Then handle the case of one of these probabilities being non-zero, and then finally both being non-zero." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Debugging." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="We'd recommend that you set the tracing level to 2 and put LOTS of printf's in your code while your" xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="debugging your procedures." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Random Numbers." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="The emulator generates packet loss and errors using a random number generator." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Our past experience is that random number generators can vary widely from one machine to another." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="You may need to modify the random number generation code in the emulator we have suplied you." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Our emulation routines have a test to see if the random number generator on your machine will work with our" xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="code." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="If you get an error message: It is likely that random number generation on your machine is different from what" xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="this emulator expects." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Please take a look at the routine jimsrand() in the emulator code." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Sorry." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="then you'll know you'll need to look at how random numbers are generated in the routine jimsrand(); see the comments" xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="in that routine." xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="" xmpDM:startTime="973133" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Optional Homework 3D Try but do not submit." xmpDM:startTime="977300" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="A TCP entity opens a connection and uses slow start." xmpDM:startTime="977300" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Approximately how many round-trip times are required before TCP can send N segments." xmpDM:startTime="977300" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="CWND=1 CWND=2 CWND=4 Hint:" xmpDM:startTime="977300" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Acronyms ACK ACKnowledgement AIMD Additive increase and multiplicative decrease ARQ Automatic Repeat Request CE Congestion Experienced CRC Cyclic Redundancy Check" xmpDM:startTime="1064500" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="CWND Congestion Window CWR Congestion Window Reduced DA Destination Address DEC Digital Equipment Corporation DECbit DEC's bit based congestion scheme" xmpDM:startTime="1064500" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="DevRTT Deviation of RTT DNS Domain Name System DP Destination Port ECE Explicit Congestion Experienced ECN Explicit Congestion Notification FIN" xmpDM:startTime="1064500" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Final" xmpDM:startTime="1064500" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Acronyms (Cont) FTP File Transfer Protocol GBN Go-Back N HTTP Hyper-Text Transfer Protocol IETF Internet Engineering Task Force IP Internet" xmpDM:startTime="1065167" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Protocol ISN Initial Sequence Number kB Kilo-Byte MSS Maximum segment size PBX Private Branch Exchange PSH Push RFC Request for" xmpDM:startTime="1065167" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Comments RM Resource Management RST Reset RTT Round-Trip Time SA Source Address SACK Selective Acknolowledgement" xmpDM:startTime="1065167" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Acronyms (Cont) SMTP Simple Mail Transfer Protocol SP Source Port SSThresh Slow Start Threshold SYN Synchronization SYNACK SYN Acknowledgement TCP" xmpDM:startTime="1065633" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Transmission Control Protocol UDP User Datagram Protocol URG Urgent VCI Virtual Circuit Identifiers" xmpDM:startTime="1065633" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Scan This to Download These Slides thankyou Raj Jain http://rajjain.com" xmpDM:startTime="1066033" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="http://www.cse.wustl.edu/~jain/cse473-20/i_3tcp.htm" xmpDM:startTime="1066033" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="" xmpDM:startTime="1066033" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Related Modules Video Podcasts of Prof." xmpDM:startTime="1069100" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Raj Jain's Lectures, https://www.youtube.com/channel/UCN4-5wzNP9-ruOzQMs-8NUw" xmpDM:startTime="1069100" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="youtube_channel_qrcode CSE473S: Introduction to Computer Networks (Fall 2011), https://www.youtube.com/playlist?list=PLjGG94etKypJWOSPMh8Azcgy5e_10TiDw" xmpDM:startTime="1069100" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="CSE 570: Recent Advances in Networking (Spring 2013) https://www.youtube.com/playlist?list=PLjGG94etKypLHyBN8mOgwJLHD2FFIMGq5" xmpDM:startTime="1069100" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="CSE 567: The Art of Computer Systems Performance Analysis https://www.youtube.com/playlist?list=PLjGG94etKypJEKjNAa1n_1X0bWWNyZcof" xmpDM:startTime="1069100" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="cse567_13_qrcode CSE571S: Network Security (Spring 2011), https://www.youtube.com/playlist?list=PLjGG94etKypKvzfVtutHcPFJXumyyg93u" xmpDM:startTime="1069100" xmpDM:duration="1000"/></rdf:li><rdf:li><rdf:Description xmpDM:name="cse571_11_qrcode cse473_11_qrcode cse570-13_qrcode" xmpDM:startTime="1069100" xmpDM:duration="1000"/></rdf:li></rdf:Seq>
                     </xmpDM:markers>
                  </rdf:Description>
               </rdf:li>
               <rdf:li>
                  <rdf:Description xmpDM:trackType="TableOfContents" xmpDM:frameRate="f1000" xmpDM:trackName="Table of Contents">
                     <xmpDM:markers>
                        <rdf:Seq>
                           <rdf:li><rdf:Description xmpDM:name="Explicit Congestion Notification (ECN)" xmpDM:startTime="214167" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="0" tscDM:imageoffset="0" tscDM:imagerect="0, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="ECN (Cont)" xmpDM:startTime="503000" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="1" tscDM:imageoffset="0" tscDM:imagerect="75, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Explicit Congestion Notification (ECN)" xmpDM:startTime="544167" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="2" tscDM:imageoffset="0" tscDM:imagerect="150, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="ECN (Cont)" xmpDM:startTime="548567" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="3" tscDM:imageoffset="0" tscDM:imagerect="225, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Explicit Congestion Notification (ECN)" xmpDM:startTime="582033" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="4" tscDM:imageoffset="0" tscDM:imagerect="300, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="ECN (Cont)" xmpDM:startTime="585300" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="5" tscDM:imageoffset="0" tscDM:imagerect="375, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Explicit Congestion Notification (ECN)" xmpDM:startTime="587200" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="6" tscDM:imageoffset="0" tscDM:imagerect="450, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="ECN (Cont)" xmpDM:startTime="593300" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="7" tscDM:imageoffset="0" tscDM:imagerect="525, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Explicit Congestion Notification (ECN)" xmpDM:startTime="644433" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="8" tscDM:imageoffset="0" tscDM:imagerect="600, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="TCP Average Throughput" xmpDM:startTime="645100" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="9" tscDM:imageoffset="0" tscDM:imagerect="675, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Explicit Congestion Notification (ECN)" xmpDM:startTime="646400" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="10" tscDM:imageoffset="0" tscDM:imagerect="750, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="ECN (Cont)" xmpDM:startTime="730467" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="11" tscDM:imageoffset="0" tscDM:imagerect="825, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="TCP: Summary" xmpDM:startTime="731033" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="12" tscDM:imageoffset="0" tscDM:imagerect="900, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="ECN (Cont)" xmpDM:startTime="732300" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="13" tscDM:imageoffset="0" tscDM:imagerect="975, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="TCP: Summary" xmpDM:startTime="752333" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="14" tscDM:imageoffset="0" tscDM:imagerect="1050, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Homework 3C: Slow Start" xmpDM:startTime="784833" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="15" tscDM:imageoffset="0" tscDM:imagerect="1125, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Homework 3C (Cont)" xmpDM:startTime="786733" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="16" tscDM:imageoffset="0" tscDM:imagerect="1200, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Homework 3C (Cont)" xmpDM:startTime="787333" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="17" tscDM:imageoffset="0" tscDM:imagerect="1275, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Summary" xmpDM:startTime="787833" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="18" tscDM:imageoffset="0" tscDM:imagerect="1350, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Lab 3: Reliable Transport Protocol" xmpDM:startTime="957233" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="19" tscDM:imageoffset="0" tscDM:imagerect="1425, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Lab 3 (Cont)" xmpDM:startTime="966833" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="20" tscDM:imageoffset="0" tscDM:imagerect="1500, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Lab 3 (Cont)" xmpDM:startTime="968467" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="21" tscDM:imageoffset="0" tscDM:imagerect="1575, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Lab 3 (Cont)" xmpDM:startTime="969233" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="22" tscDM:imageoffset="0" tscDM:imagerect="1650, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Lab 3 (Cont)" xmpDM:startTime="970333" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="23" tscDM:imageoffset="0" tscDM:imagerect="1725, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Lab 3 (Cont)" xmpDM:startTime="971000" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="24" tscDM:imageoffset="0" tscDM:imagerect="1800, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Lab 3 (Cont)" xmpDM:startTime="971700" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="25" tscDM:imageoffset="0" tscDM:imagerect="1875, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Lab 3 (Cont)" xmpDM:startTime="972367" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="26" tscDM:imageoffset="0" tscDM:imagerect="1950, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Lab 3 (Cont)" xmpDM:startTime="973133" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="27" tscDM:imageoffset="0" tscDM:imagerect="2025, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Optional Homework 3D" xmpDM:startTime="977300" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="28" tscDM:imageoffset="0" tscDM:imagerect="2100, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Acronyms" xmpDM:startTime="1064500" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="29" tscDM:imageoffset="0" tscDM:imagerect="2175, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name=" Acronyms (Cont)" xmpDM:startTime="1065167" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="30" tscDM:imageoffset="0" tscDM:imagerect="2250, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name=" Acronyms (Cont)" xmpDM:startTime="1065633" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="31" tscDM:imageoffset="0" tscDM:imagerect="2325, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Scan This to Download These Slides" xmpDM:startTime="1066033" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="32" tscDM:imageoffset="0" tscDM:imagerect="2400, 0, 75, 56"/></rdf:li><rdf:li><rdf:Description xmpDM:name="Related Modules" xmpDM:startTime="1069100" tscDM:image="i_3tcp3_Thumbnails.png" tscDM:imageindex="33" tscDM:imageoffset="0" tscDM:imagerect="2475, 0, 75, 56"/></rdf:li></rdf:Seq>
                     </xmpDM:markers>
                  </rdf:Description>
               </rdf:li>
            </rdf:Bag>
         </xmpDM:Tracks>
         <tscDM:controller>
            <rdf:Description xmpDM:name="tscplayer">
               <tscDM:parameters>
                  <rdf:Bag>
                     <rdf:li xmpDM:name="autohide" xmpDM:value="false"/><rdf:li xmpDM:name="autoplay" xmpDM:value="true"/><rdf:li xmpDM:name="loop" xmpDM:value="false"/><rdf:li xmpDM:name="searchable" xmpDM:value="true"/><rdf:li xmpDM:name="captionsenabled" xmpDM:value="false"/><rdf:li xmpDM:name="sidebarenabled" xmpDM:value="false"/><rdf:li xmpDM:name="unicodeenabled" xmpDM:value="false"/><rdf:li xmpDM:name="backgroundcolor" xmpDM:value="000000"/><rdf:li xmpDM:name="sidebarlocation" xmpDM:value="left"/><rdf:li xmpDM:name="endaction" xmpDM:value="stop"/><rdf:li xmpDM:name="endactionparam" xmpDM:value="true"/><rdf:li xmpDM:name="locale" xmpDM:value="en-US"/></rdf:Bag>
               </tscDM:parameters>
               <tscDM:controllerText>
                  <rdf:Bag>
                  </rdf:Bag>
               </tscDM:controllerText>
            </rdf:Description>
         </tscDM:controller>
         <tscDM:contentList>
            <rdf:Description>
               <tscDM:files>
                  <rdf:Seq>
                     <rdf:li xmpDM:name="0" xmpDM:value="i_3tcp3.mp4"/><rdf:li xmpDM:name="1" xmpDM:value="i_3tcp3_First_Frame.png"/><rdf:li xmpDM:name="2" xmpDM:value="i_3tcp3_Thumbnails.png"/></rdf:Seq>
               </tscDM:files>
            </rdf:Description>
         </tscDM:contentList>
      </rdf:Description>
   </rdf:RDF>
</x:xmpmeta>