Presentation is loading. Please wait.

Presentation is loading. Please wait.

End-to-End Protocols 5.1 Simple Demultiplexer (UDP)

Similar presentations


Presentation on theme: "End-to-End Protocols 5.1 Simple Demultiplexer (UDP)"— Presentation transcript:

1 End-to-End Protocols 5.1 Simple Demultiplexer (UDP)
5.2 Reliable Byte-Stream (TCP) 5.3 Remote Procedure Call (RPC) 5.4 Transport for Real-Time Applications (RTP)

2 Underlying best-effort network
drop messages reorder messages deliver duplicate copies of a given message limit messages to some finite size deliver messages after an arbitrarily long delay Transport layer protocol support communication between the end application programs also called “end-to-end protocol”

3 Physical Data Link Network Transport Application Signals
framing, error detection, reliability control, media-access control Src Dst host-to-host packet delivery global addressing routing

4 Common properties that a transport protocol should provide
guarantee message delivery deliver messages in the same order they are sent deliver at most one copy of each message support arbitrarily large messages support synchronization between the sender and the receiver allow the receiver to apply flow control to the sender support multiple application processes on each host

5 5.1 Simple Demultiplexer (UDP)
Unreliable and unordered datagram service Support multiplexing allows multiple application processes on each host to share the network No flow control

6 Endpoints identified by ports
servers have well-known ports, examples domain name server (DNS) receives messages at well-known port 53 on each host mail service listens for messages at port 25 the Unix talk program accepts messages at port 517 this mapping is published periodically in an RFC (Request for Comments) and is available on most Unix systems in file /etc/services Internet's User Datagram Protocol (UDP) is an example of such a transport protocol

7 For example, the UDP header
The header for an end-to-end protocol that implements this demultiplexing function typically contains an identifier (port) for both the sender (source) and the receiver (destination) of the message For example, the UDP header UDP header format

8 UDP header format UDP port field is 16 bits long i.e., up to 64K (=216) possible ports ports are not interpreted across the entire Internet, but only on a single host a process is identified by a port on some particular host - a (port, host) pair UDP header consists of only 4 fields two of them is optional (Source Port & Checksum)

9 Fields Source port identifies the sending port when meaningful and should be assumed to be the port to reply to if needed if not used, then it should be zero Destination port identifies the destination port and is required

10 Length (16-bit) Checksum (16-bit)
specifies the length in bytes of the entire datagram: header and data the minimum length is 8 bytes since that's the length of the header the field size sets a theoretical limit of 65,535 bytes for the data carried by a single UDP datagram the practical limit for the data length which is imposed by the underlying IPv4 protocol is 65,507 bytes Checksum (16-bit) used for error-checking of the header and data

11 A port is purely an abstraction
exactly how it is implemented differs from system to system, or more precisely, from OS to OS example, the socket API described is an example implementation of ports

12 A port is implemented by a message queue
when a message arrives, the protocol (e.g., UDP) appends the message to the end of the queue should the queue be full, the message is discarded there is no flow-control mechanism that tells the sender to slow down when an application process wants to receive a message, one is removed from the front of the queue if the queue is empty, the process blocks until a message becomes available

13 UDP message queue

14 UDP computes its checksum over
UDP header the contents of the message body pseudoheader Pseudoheader consists of protocol number source IP address destination IP address UDP length field

15 UDP uses the same checksum algorithm as IP (section 2.4.2)
Motivation behind the pseudoheader verify this message has been delivered between the correct two endpoints example, if the destination IP address was modified while the packet was in transit, causing the packet to be misdelivered, this fact would be detected by the UDP checksum

16 5.2 Reliable Byte Stream (TCP)
In contrast to a simple demultiplexing protocol like UDP, a more sophisticated transport protocol is one that offers a reliable, connection-oriented, byte-stream service it frees the application from having to worry about missing or reordered data Internet's Transmission Control Protocol (TCP) is probably the most widely used protocol of this type

17 guarantees reliable, in-order delivery of a stream of bytes
TCP guarantees reliable, in-order delivery of a stream of bytes a full-duplex protocol each TCP connection supports a pair of byte streams, one flowing in each direction a flow-control mechanism allows the receiver to limit how much data the sender can transmit at a given time keep sender from overrunning receiver Overrun:氾濫

18 a demultiplexing mechanism
allows multiple application programs on any given host to simultaneously carry on a conversation with their peers a highly-tuned congestion-control mechanism keep sender from overrunning network

19 5.2.2 Segment Format TCP a byte-oriented protocol, which means that the sender writes bytes into a TCP connection and the receiver reads bytes out of the TCP connection "byte stream" describes the service TCP offers to application processes app writes bytes TCP sends segments app reads bytes

20 TCP does not itself transmit individual bytes over the Internet
TCP on the source host buffers enough bytes from the sending process to fill a reasonably sized packet and then sends this packet to its peer on the destination host TCP on the destination host then empties the contents of the packet into a receive buffer, and the receiving process reads from this buffer at its leisure

21 How TCP manages a byte-stream
Application process Write bytes TCP Send buffer Segment Transmit segments Read Receive buffer ■ ■ ■ How TCP manages a byte-stream

22 The packets exchanged between TCP peers are called segments
Each TCP segment contains a header TCP header format

23 TCP Segment Format 32 bits Source port TCP HL Destination port
12:12: IP > : P 1:41(40) ack 1 win <nop,nop,timestamp > 0x0000: c f0f ca 0x0010: 3b c2e5 3c1c e61f ;B......<...qr9i 0x0020: e240 edb a 1dad 6796 0x0030: 476f d 312e d4f Go.uSSH-1.99-Ope 0x0040: 6e f33 2e nSSH_3.5p1.FreeB 0x0050: d a SD Destination port Sequence number Acknowledgement number TCP header length F I N S Y N R S T P S H A C K U R G Window size Checksum Urgent point Options (0 or more 32-bit words)

24 SrcPort & DstPort (16-bit)
identify the source and destination ports Sequence number count in bytes 32-bit unsigned Acknowledgment number confirm that all the previous bytes has been received request for the byte with next sequence number Window size TCP’s sliding window window size tells the sender that currently the receiver can accept how many bytes after the bytes ever confirmed

25 Each TCP connection identified with 4-tuple (TCP's demux key)
(SrcPort, SrcIPAddr, DsrPort, DstIPAddr) Sliding window + flow control Acknowledgment, SequenceNum, and AdvertisedWindow fields are involved SequenceNum each byte of data has a sequence number SequenceNum field contains the sequence number for the first byte of data carried in that segment Acknowledgment & AdvertisedWindow carry information about the flow of data going in the other direction

26 with data flow in one direction and ACKs in the other
Simplified illustration (showing only one direction) of the TCP process, with data flow in one direction and ACKs in the other

27 Flags (6-bit):SYN, FIN, RESET, PUSH, URG, ACK
used to relay control information between TCP peers SYN & FIN used when establishing and terminating a TCP connection, respectively SYN: synchronize the sequence number FIN (Finish): close the connection ACK set any time the Acknowledgment field is valid

28 signifies that this segment contains urgent data
when this flag is set, the UrgPtr field indicates where the nonurgent data contained in this segment begins the urgent data is contained at the front of the segment body, up to and including a value of UrgPtr bytes into the segment usage: interrupt remote computation PUSH signifies that the sender invoked the push operation, which indicates to the receiving side of TCP that it should notify the receiving process of this fact

29 signifies that the receiver has become confused
RESET reset connection signifies that the receiver has become confused example, because it received a segment it did not expect to receive, and so wants to abort the connection

30 Checksum used in exactly the same way as for UDP Checksum is computed over pseudo header + TCP header + TCP data

31 pseudo header TCP header
made up of the source address, destination address, and length fields from the IP header TCP header since the TCP header is of variable length, a HdrLen field is included that gives the length of the header in 32-bit words this field is also known as the Offset field, since it measures the offset from the start of the packet to the start of the data

32 Options no more than 40 bytes most frequently used option MSS (maximum segment size) often carried in segments with SYN = 1

33 5.2.3 Connection Establishment and Termination
A TCP connection begins with a client (caller) doing an active open to a server (callee) assuming that the server had earlier done a passive open, the two sides engage in an exchange of messages to establish the connection only after this connection establishment phase is over do the two sides begin sending data as soon as a participant is done sending data, it closes one direction of the connection, which causes TCP to initiate a round of connection termination messages

34 Three-Way Handshake idea Three-way handshake
the algorithm used by TCP to establish and terminate a connection it involves the exchange of three messages between the client and the server idea two parties want to agree on a set of parameters, which, in the case of opening a TCP connection, are the starting sequence numbers the two sides plan to use for their respective byte streams

35 parameters might be any facts that each side wants the other to know about
first, the client (the active participant) sends a segment to the server (the passive participant) stating the initial sequence number it plans to use (Flags = SYN, SequenceNum = x) the server then responds with a single segment that both acknowledges the client's sequence number (Flags = ACK, Ack = x + 1) and states its own beginning sequence number (Flags = SYN, SequenceNum = y) i.e., both the SYN and ACK bits are set in the Flags field of this second message

36 finally, the client responds with a third segment that acknowledges the server's sequence number (Flags = ACK, Ack = y + 1) each side acknowledges a sequence number that is one larger than the one sent is that the Acknowledgment field actually identifies the "next sequence number expected," thereby implicitly acknowledging all earlier sequence numbers

37 Timeline for three-way handshake algorithm
Active participant (client) Passive participant (server) SYN, SequenceNum = x ACK, Acknowledgment =y+1 Acknowledgment =x+1 SYN+ACK, SequenceNum=y, Timeline for three-way handshake algorithm

38 State-Transition Diagram
The following diagram shows a state transition diagram the states involved in opening a connection (everything above ESTABLISHED) and in closing a connection (everything below ESTABLISHED) the operation of the sliding window algorithm is hidden in the ESTABLISHED state

39 Notations each rectangle denotes a state that one end of a TCP connection can find itself in all connections start in the CLOSED state as the connection progresses, the connection moves from state to state according to the arcs each arc is labeled with a tag of the form event/action

40 TCP state-transition diagram

41 If a connection is in the LISTEN state and a SYN segment arrives (i. e
If a connection is in the LISTEN state and a SYN segment arrives (i.e., a segment with the SYN flag set) the connection makes a transition to the SYN_RCVD state and takes the action of replying with an ACK + SYN segment

42 Two kinds of events trigger a state transition
a segment arrives from the peer (e.g., the event on the arc from LISTEN to SYN_RCVD) (peer-to-peer interface) the local application process invokes an operation on TCP (e.g., the active open event on the arc from CLOSE to SYN_SENT) (service interface) i.e., TCP's state-transition diagram effectively defines the semantics of both its peer-to-peer interface and its service interface

43 1 2 3 5 4 Trace when opening a connection, the server first invokes a passive open operation on TCP, which causes TCP to move to the LISTEN state at some later time, the client does an active open, which causes its end of the connection to send a SYN segment to the server and to move to the SYN_SENT state when the SYN segment arrives at the server, it moves to the SYN_RCVD state and responds with a SYN + ACK segment the arrival of this segment causes the client to move to the ESTABLISHED state and to send an ACK back to the server when this ACK arrives, the server finally moves to the ESTABLISHED state

44 Three combinations of transitions that get a connection from ESTABLISHED state to CLOSED state
this side closes first ESTABLISHED → FIN_WAIT _1 → FIN_WAIT _2 → TIME_WAIT → CLOSED the other side closes first ESTABLISHED → CLOSE_WAIT → LAST _ACK → CLOSED both sides close at the same time ESTABLISHED → FIN_WAIT _1 → CLOSING → TIME_WAIT → CLOSED

45 5.2.4 Sliding Window Revisited
Roles of sliding window ensure reliable delivery of data unacknowledged data must be buffered by sender ensure in-order delivery of data out-of-order data must be buffered by receiver enforce end-to-end flow control too fast sender should be blocked

46 Receiver advertises a window size to the sender instead of being fixed (using the AdvertisedWindow field in the TCP header) selects a suitable value for AdvertisedWindow based on the amount of memory allocated to the connection for the purpose of buffering data Sender limited to having no more than a value of AdvertisedWindow bytes of unacknowledged data at any given time Idea keep the sender from overrunning the receiver's buffer

47 Reliable and Ordered Delivery
TCP on the sending side maintains a send buffer, used to store the data that has been sent but not yet acknowledged the data that has been written by the sending application, but not transmitted TCP on the receiving side maintains a receive buffer, used to hold the data that arrives out of order the data that is in the correct order (i.e., there are no missing bytes earlier in the stream) but the application process has not yet had the chance to read

48 Sending side three pointers are maintained into the send buffer
LastByteAcked [最先產生的byte] LastByteSent [次中產生的byte] LastByteWritten [最後產生的byte] Relationship LastByteAcked [先] ≦ LastByteSent [後] LastByteSent [先] ≦ LastByteWritten [後]

49 Receiving side three pointers are maintained into the receive buffer
LastByteRead [先] LastByteRcvd [in order  中, out of order  後] NextByteExpected [in order  後, out of order  中 (points to the start of the first gap in the data)]

50 Relationship LastByteRead < NextByteExpected
a byte cannot be read by the application until it is received and all preceding bytes have also been received NextByteExpected points to the byte immediately after the latest byte to meet this criterion NextByteExpected ≦ LastByteRcvd +1 if data has arrived in order, NextByteExpected points to the byte after LastByteRcvd (as the above formula shows) if data has arrived out of order, NextByteExpected points to the start of the first gap in the data (as in the figure)

51 Relationship between TCP (a) send buffer (b) and receive buffer

52 Flow Control Send buffer Receive buffer
buffer bytes between LastByteAcked and LastByteWritten send buffer size: MaxSendBuffer Receive buffer buffer bytes between NextByteRead and LastByteRcvd receive buffer size: MaxRcvBuffer

53 The receiver throttles the sender by advertising a window size that is no larger than the amount of data that it can buffer Receiving side LastByteRcvd - LastByteRead ≦ MaxRcvBuffer avoid overflowing its buffer AdvertisedWindow (receiving side) = MaxRcvBuffer – [(NextByteExpected -1) – LastByteRead] the amount of free space remaining in its buffer as data arrives, the receiver acknowledges it as long as all the proceeding bytes have also arrive Throttle:使節流,調節;使減速

54 Sending side LastByteSent - LastByteAcked ≦ AdvertisedWindow
sending side must adhere to the advertised window it gets from the receiver EffectiveWindow (sending side) = AdvertisedWindow (receiving side) - (LastByteSent - LastByteAcked) the sender computes an effective window that limits how much data it can send EffectiveWindow must be greater than 0 before the source can send more data

55 LastByteWritten - LastByteAcked ≦ MaxSendBuffer
make sure that the local application process does not overflow the send buffer block sender if (LastByteWritten - LastByteAcked) + y > MaxSenderBuffer if the sending process tries to write y bytes to TCP; then TCP blocks the sending process and does not allow it to generate more data Always send ACK in response to arriving data segment AdvertisedWindow = 0 means that the sending side cannot transmit any data

56 TCP TCP P1 P2 AdvWnd LastByteWritten LastByteRead EffectiveWnd
MaxRcvBuffer MaxSendBuf LastByteAcked NextByteExpected LastByteSent LastByteRcvd LastByteAcked  LastByteSent LastByteSent  LastByteWritten LastByteRead < NextByteExpected NextByteExpected  LastByteRcvd + 1 LastByteSent - LastAcked  AdvWnd LastByteRcvd - LastByteRead < MaxRcvBuffer EffectiveWnd = AdvWnd - (LastByteSent LastByteAcked) AdvWnd = MaxRcvBuffer – [(NextByteExpected ) – LastByteRead] LastByteWritten - LastByteAcked < MaxSendBuf

57 Silly Window Syndrome If the sender has MSS (Maximum Segment Size) bytes of data to send and the window is open at least that much, then the sender transmits a full segment Suppose the sender is accumulating bytes to send, but the window is currently closed suppose an ACK arrives that effectively opens the window enough for the sender to transmit, say, MSS/2 bytes should the sender transmit a half-full segment, or wait for the window to open to a full MSS? Syndrome:綜合症狀

58 Silly window syndrome aggressively taking advantage of any available window

59 MSS-sized segments: large containers
Think of a TCP stream as a conveyer belt with "full" containers (data segments) going in one direction and empty containers (ACKs) going in the reverse direction, then MSS-sized segments: large containers 1-byte segments: very small containers If the sender aggressively fills an empty container as soon as it arrives then any small container introduced into the system remains in the system indefinitely it is immediately filled and emptied at each end, and never coalesced with adjacent containers to create larger containers Indefinitely: 不確定地 Coalesce: 聯合

60 Receiver-side solutions
after advertising a zero window, the receiver must wait for space equal to an MSS before it advertises an open window delaying ACKs-sending one combined ACK rather than multiple smaller ones this is only a partial solution because the receiver has no way of knowing how long it is safe to delay waiting either for another segment to arrive or for the application to read more data (thus opening the window) ultimate solution falls to the sender when does the TCP sender decide to transmit a segment?

61 Nagle’s Algorithm If there is data to send but the window is open less than MSS, then we may want to wait some amount of time before sending the available data Question: How long does sender delay sending data? too long: hurt interactive applications like Telnet too short: risk sending a bunch of tiny packets (poor network utilization) fall into silly window syndrome Solution: use a timer and transmit when the timer expires

62 Self-clocking solution (Nagle)
as long as TCP has any data in flight, the sender will eventually receive an ACK this ACK can be treated like a timer firing, triggering the transmission of more data

63 Nagle's algorithm When the application produces data to send
if both the available data and the window ≧ MSS send a full segment else if there is unACKed data in flight buffer the new data until an ACK arrives send all the new data now

64 Adaptive Retransmission (Original Algorithm)
A simple algorithm for computing a timeout value between a pair of hosts Idea keep a running average of the RTT compute the timeout as a function of this RTT every time TCP sends a data segment, it records the time when an ACK for that segment arrives, TCP reads the time again, and then takes the difference between these two times as a SampleRTT TCP then computes an EstimatedRTT as a weighted average between the previous estimate and this new sample

65 Weighted average of RTT
EstimatedRTT = a x EstimatedRTT + a x SampleRTT a between 0.8 and 0.9 Set timeout based on EstimatedRTT TimeOut = 2 x EstimatedRTT

66 Karn/Partridge Algorithm
Problem an ACK does not really acknowledge a transmission; it actually acknowledges the receipt of data i.e., whenever a segment is retransmitted and then an ACK arrives at the sender, it is impossible to determine if this ACK should be associated with the first or the second transmission of the segment for the purpose of measuring the sample RTT

67 Associating the ACK with (a) original transmission versus (b) retransmission

68 Problems Figure (a): assume that the ACK is for the original transmission but it was really for the second, then the SampleRTT is too large Figure (b): if you assume that the ACK is for the second transmission but it was actually for the first, then the SampleRTT is too small

69 Solutions whenever TCP retransmits a segment, it stops taking samples of the RTT; it only measures SampieRTT for segments that have been sent only once each time TCP retransmits, it sets the next timeout to be twice the last timeout, rather than basing it on the last EstimatedRTT (meaning that the TCP source should not react too aggressively to a timeout)

70 Jacobson / Karels Algorithm
A more drastic change to TCP to battle congestion Decide when to time out and retransmit a segment if it times out too soon, it may unnecessarily retransmit a segment, which only adds to the load on the network a timeout is taken to imply congestion, which triggers a congestion-control mechanism Drastic:激烈的,極端的

71 Jacobson/ Karels Algorithm
Difference = SampleRTT - EstimatedRTT EstimatedRTT = EstimatedRTT+(dx Difference) Deviation = Deviation + d(|Difference|-Deviation) where d is a factor between 0 and 1 TimeOut = m x EstimatedRTT + f x Deviation where m = 1 and f = 4 (experience) timeout value is set considering variance when the variance (of the sample RTTs) is small TimeOut is close to EstimatedRTT a large variance causes the Deviation term to dominate the calculation

72 5.3 Remote Procedure Call (RPC)
Request/reply paradigm (message transaction) client: send a request message to a server server: respond with a reply message client: block (suspend execution) to wait for the reply

73 Client Server Blocked Request Blocked Computing Reply Blocked
Timeline for RPC

74 A transport protocol that supports the request/reply paradigm
needs to deal with correctly identifying processes on remote hosts and correlating requests with responses needs to overcome some or all of the limitations of the underlying network Remote Procedure Call (RPC) a transport protocol more closely matches the needs of an application involved in a request/reply message exchange

75 5.3.1 RPC Fundamentals RPC a popular mechanism for structuring distributed systems based on the semantics of a local procedure call-the application program makes a call into a procedure without regard for whether it is local or remote and blocks until the call returns when the procedures being called are actually methods of remote objects in an object-oriented language, RPC is known as remote method invocation (RMI)

76 Two main problems that make RPC more complicated than local procedure calls
the network between the calling process and the called process has much more complex properties than the backplane of a computer example, it is likely to limit message sizes and has a tendency to lose and reorder messages the computers on which the calling and called processes run may have significantly different architectures and data representation formats Backplane: a board to which the main circuit boards of a computer may be connected and that provides connections between them

77 A complete RPC mechanism actually involves two major components
protocol manages the messages sent between the client and the server processes deals with the potentially undesirable properties of the underlying network

78 programming language and compiler
package the arguments into a request message on the client machine translate this message back into the arguments on the server machine, and likewise with the return value this piece of the RPC mechanism is usually called a stub compiler Stub: the truncated remnant of a pencil, cigarette, or similar-shaped object after use

79 Complete RPC mechanism

80 1 2 5 4 3 The figure depicts what happens when a client invokes a remote procedure the client calls a local stub for the procedure, passing it the arguments required by the procedure this stub hides the fact that the procedure is remote by translating the arguments into a request message and then invoking an RPC protocol to send the request message to the server machine at the server, the RPC protocol delivers the request message to the server stub (sometimes called a skeleton), which translates it into the arguments to the procedure and then calls the local procedure

81 1 2 5 4 3 after the server procedure completes, it returns the answer to the server stub, which packages this return value in a reply message for transmission back to the client the RPC protocol on the client passes this message up to the client stub, which translates it into a return value that it returns to the client program

82 Identifiers in RPC Two functions that must be performed by RPC protocol a name space for uniquely identifying the procedure to be called match each reply message to the corresponding request message

83 Name space flat or hierarchical? flat name space
assign a unique, unstructured identifier (e.g., an integer) to each procedure this number would be carried in a single field in an RPC request message require some kind of central coordination to avoid assigning the same procedure number to two different procedures

84 hierarchical name space
analogous to that used for file pathnames requires only that a file's "basename" be unique within its directory simplifies the job of ensuring uniqueness of procedure names

85 Matching a reply message to the corresponding request
uniquely identify request-replies pairs using a message ID field a reply message had its message ID field set to the same value as the request message when the client RPC module receives the reply, it uses the message ID to search for the corresponding outstanding request Outstanding: 未解決的

86 when the reply is received
to make the RPC transaction appear like a local procedure call to the caller, the caller is blocked (e.g., using a semaphore) until the reply message is received when the reply is received the blocked caller is identified based on the request number in the reply the remote procedure's return value is obtained from the reply the caller is unblocked so that it can return with that return value

87 Dealing with unexpected responses
example client: sends a request message with a message ID of 0, then crashes and reboots, and then sends an unrelated request message, also with a message ID of 0 server: may not have been aware that the client crashed and rebooted, and upon seeing a request message with a message ID of 0, acknowledges it and discards it as a duplicate client: never gets a response to the request

88 solution (boot ID) a machine's boot ID is a number that is incremented each time the machine reboots; this number is read from disk, incremented, and written back to disk during the machine's startup procedure this number is then put in every message sent by that host if a message is received with an old message ID but a new boot ID, it is recognized as a new message the message ID and boot ID combine to form a unique ID for each transaction

89 Overcome Network Limitations
RPC protocols use two additional functions to deal with the fact that networks are not perfect channels provide reliable message delivery support large message sizes through fragmentation and reassembly

90 An RPC protocol can implement reliability using acknowledgments and timeouts, similarly to TCP
basic algorithm client sends a request message and the server acknowledges it after executing the procedure, the server sends a reply message and the client acknowledges the reply

91 Simple timeline for a reliable RPC protocol

92 either a message carrying data (a request message or a reply message) or the ACK sent to acknowledge that message may be lost in the network both client and server save a copy of each message they send until an ACK for it has arrived each side also sets a RETRANSMIT timer and resends the message should this timer expire both sides reset this timer and try again some agreed-upon number of times before giving up and freeing the message

93 if an RPC client receives a reply message, clearly the corresponding request message must have been received by the server the reply message itself is an implicit acknowledgment, and any additional acknowledgment from the server is not logically necessary similarly, a request message could implicitly acknowledge the preceding reply message-assuming the protocol makes request-reply transactions sequential, so that one transaction must complete before the next begins unfortunately, this sequentiality would severely limit RPC performance

94 solution: channel abstraction
within a given channel, request/reply transactions are sequential there can be only one transaction active on a given channel at any given time-but there can be multiple channels each message includes a channel ID field to indicate which channel the message belongs to

95 a request message in a given channel would implicitly acknowledge the previous reply in that channel, if it hadn't already been acknowledged an application program can open multiple channels to a server if it wants to have more than one request/reply transaction between them at the same time (multiple threads) the reply message serves to acknowledge the request message, and a subsequent request acknowledges the preceding reply

96 Timeline for a reliable RPC protocol using implicit acknowledgement

97 RPC reliability may include the property known as at-most-once semantics
for every request message that the client sends, at most one copy of that message is delivered to the server each time the client calls a remote procedure, that procedure is invoked at most one time on the server machine to implement at-most-once semantics, RPC on the server side must recognize duplicate requests (and ignore them), even if it has already successfully replied to the original request

98 Synchronous versus Asynchronous Protocols
Synchronous or asynchronous key attribute how much the sending process knows after the operation to send a message returns

99 Asynchronous the application knows absolutely nothing when send returns it not only doesn't know if the message was received by its peer, but it doesn't even know for sure that the message has successfully left the local machine asynchronous protocols are used if the sender wants to be able to transmit many messages without having to wait for a response

100 Synchronous the send operation typically returns a reply message the application not only knows that the message it sent was received by its peer, but it knows that the peer has returned an answer synchronous protocols implement the request/reply abstraction RPC protocols are synchronous protocols

101 5.4 Transport for Real-Time Applications (RTP)
Real-time traffic has strong requirements for the timely delivery of information e.g. Internet telephony, voice over IP (VoIP) Multimedia applications involve video, audio, and data two classes interactive applications streaming applications

102 Interactive applications
example, vat a multiparty audioconferencing tool that is often used over networks supporting IP multicast the control panel for a typical vat conference

103 example, Internet telephony
example, vic, the videoconferencing tool these are the sort of applications with the most stringent real-time requirements

104 Streaming applications
typically deliver audio or video streams from a server to a client, e.g., Real Audio lack of human-to-human interaction and has less stringent real-time requirements on the underlying protocols

105 A transport protocol for real-time and multimedia applications
a real challenge is in defining the requirements broadly enough to meet the needs of very different applications must pay attention to the interactions among different applications; for example, the synchronization of audio and video streams

106 running a transport protocol (RTP) over a transport protocol (UDP)
RTP can run over many lower-layer protocols, but commonly runs over UDP running a transport protocol (RTP) over a transport protocol (UDP) UDP provides a minimal level of functionality, the basic demultiplexing based on port numbers happens to be just what RTP needs as a starting point rather than recreate port numbers in RTP, RTP outsources the demultiplexing function to UDP Spurt: gush out in a sudden and forceful stream

107 Protocol stack for multimedia applications using RTP

108 5.4.1 Requirements (of RTP) Requirement1
allows similar applications to interoperate with each other example, allows two independently implemented audioconferencing (videoconferencing) applications to talk to each other this suggests that the applications had better use the same method of encoding and compressing voice (video); otherwise, the data sent by one party will be incomprehensible to the receiving party

109 protocol should provide a way that a sender can tell a receiver which coding scheme it wants to use, and possibly negotiate until a scheme that is available to both parties is identified

110 Requirement2 enable the recipient of a data stream to determine the timing relationship among the received data real-time applications need to place received data into a playback buffer to smooth out the jitter (variation of delay) that may have been introduced into the data stream during transmission across the network some sort of timestamping of the data will be necessary to enable the receiver to play it back at the appropriate time

111 Requirement3 synchronization of multiple media in a conference example, synchronize an audio and video stream that are originating from the same sender Requirement4 an indication of packet loss an application with tight latency bounds generally cannot use a reliable transport like TCP because retransmission of data to correct for loss would probably cause the packet to arrive too late to be useful

112 the application must be able to deal with missing packets, and the first step in dealing with them is noticing that they are in fact missing example, a video application using MPEG encoding will need to take different actions when a packet is lost, depending on whether the packet came from an I frame, a B frame, or a P frame since these different frame types carry different amounts of information

113 Requirement5 since multimedia applications generally do not run over TCP, they also miss out on the congestion avoidance features of TCP protocol should be able to respond to congestion, for example, by changing the parameters of the coding algorithm to reduce the bandwidth consumed

114 Requirement6 frame boundary indication a frame in this context is application-specific example, it may be helpful to notify a video application that a certain set of packets correspond to a single frame in an audio application, to mark the beginning of a "talkspurt," which is a collection of sounds or words followed by silence, the receiver can then identify the silences between talkspurts

115 Requirement7 some way of identifying senders that is more user-friendly than an IP address tools such as vat and vic can display strings such as Joe User on their control panels, and thus the application protocol should support the association of such a string with a data stream

116 Requirement8 it should make reasonably efficient use of bandwidth don't introduce a lot of extra bits that need to be sent with every packet in the form of a long header example, audio packets tend to be small, so as to reduce the time it takes to fill them with samples long audio packets would mean high latency due to packetization, which has a negative effect on the perceived quality of conversations

117 5.4.2 RTP Details RTP developed in the IETF
defines a pair of protocols used for the exchange of multimedia data RTCP (Real-time Transport Control Protocol) used to periodically send control information associated with a certain data flow

118 when running over UDP, the RTP data stream and the associated RTCP control stream use consecutive transport-layer ports RTP data uses an even port number RTCP control information uses the next higher (odd) port number

119 For each class of application (e. g
For each class of application (e.g., audio), RTP defines a profile and one or more formats profile provides a range of information that ensures a common understanding of the fields in the RTP header for that application class format specification explains how the data that follows the RTP header is to be interpreted

120 example, the RTP header might just be followed by a sequence of bytes, each of which represents a single audio sample taken from a defined interval

121 Header Format RTP header format

122 Overview the first 12 bytes are always present Ver, P, X, CC, M, PT, Sequence Number, Timestamp, SSRC the contributing source (CSRC) identifiers are only used in certain circumstances after this header there may be optional header extensions the header is followed by the RTP payload, the format of which is determined by the application

123 the header contains only the fields that are likely to be used by many different applications
anything that is very specific to a single application would be more efficiently carried in the RTP payload for that application only

124 Fields Ver (Version, 2 bits) P (Padding, 1 bit) RTP version number
always set to 2 P (Padding, 1 bit) if set, this packet contains one or more additional padding bytes at the end which are not part of the payload the last byte of the padding contains a count of how many padding bytes should be ignored padding may be needed by some encryption algorithms with fixed block sizes or for carrying several RTP packets in a lower-layer protocol data unit

125 Padding of an RTP packet

126 X (Extension, 1 bit) if set, the fixed header is followed by exactly one header extension, which would be defined for a specific application and follow the main header CC (CSRC count, 4 bits) the number of CSRC identifiers that follow the fixed header

127 M (Marker, 1 bit) the interpretation of the marker is defined by a profile it is intended to allow significant events such as frame boundaries to be marked in the packet stream a profile may define additional marker bits or specify that there is no marker bit by changing the number of bits in the payload type field

128 PT (Payload Type, 7 bits) identifies the format of the RTP payload and determines its interpretation by the application a profile specifies a default static mapping of payload type codes to payload formats additional payload type codes may be defined dynamically through non-RTP means an RTP sender emits a single RTP payload type at any given time; this field is not intended for multiplexing separate media streams

129 Sequence Number (16 bits)
the sequence number increments by one for each RTP data packet sent, and may be used by the receiver to detect packet loss and to restore packet sequence the initial value of the sequence number is random (unpredictable) to make known-plaintext attacks on encryption more difficult, even if the source itself does not encrypt, because the packets may flow through a translator that does

130 Timestamp (32 bits) the timestamp reflects the sampling instant of the first octet in the RTP data packet the sampling instant must be derived from a clock that increments monotonically and linearly in time to allow synchronization and jitter calculations the resolution of the clock must be sufficient for the desired synchronization accuracy and for measuring packet arrival jitter (one tick per video frame is typically not sufficient)

131 the clock frequency is dependent on the format of data carried as payload and is specified statically in the profile or payload format specification that defines the format, or may be specified dynamically for payload formats defined through non-RTP means

132 if RTP packets are generated periodically, the nominal sampling instant as determined from the sampling clock is to be used, not a reading of the system clock as an example, for fixed-rate audio the timestamp clock would likely increment by one for each sampling period if an audio application reads blocks covering 160 sampling periods from the input device, the timestamp would be increased by 160 for each such block, regardless of whether the block is transmitted in a packet or dropped as silent Nominal: 名義上的

133 SSRC (Synchronization source, 32 bits)
identifies the synchronization source the value is chosen randomly, with the intent that no two synchronization sources within the same RTP session will have the same SSRC although the probability of multiple sources choosing the same identifier is low, all RTP implementations must be prepared to detect and resolve collisions if a source changes its source transport address, it must also choose a new SSRC to avoid being interpreted as a looped source

134 CSRC (Contributing source, 32 bits)
an array of 0 to 15 CSRC elements identifying the contributing sources for the payload contained in this packet the number of identifiers is given by the CC field if there are more than 15 contributing sources, only 15 may be identified CSRC identifiers are inserted by mixers, using the SSRC identifiers of contributing sources example, for audio packets the SSRC identifiers of all sources that were mixed together to create a packet are listed, allowing correct talker indication at the receiver

135 5.4.3 Control Protocol RTCP provides a control stream that is associated with a data stream for a multimedia application This control stream provides three main functions feedback on the performance of the application and the network a way to correlate and synchronize different media streams that have come from the same sender a way to convey the identity of a sender for display on a user interface (e.g., the vat interface shown in the “user interface of a vat audioconference”)

136 The first function [feedback on the performance of the application and the network]
may be useful for rate-adaptive applications, which may use performance data to decide to use a more aggressive compression scheme to reduce congestion, or to send a higher-quality stream when there is little congestion it can also be useful in diagnosing network problems

137 The second function [a way to correlate and synchronize different media streams that have come from the same sender] multiple cameras from a single node might have different SSRC values there is no requirement that an audio and video stream from the same node use the same SSRC because collisions of SSRC values may occur, it may be necessary to change the SSRC value of a stream

138 RTCP uses the concept of a canonical name (CNAME) that is assigned to a sender, which is then associated with the various SSRC values that might be used by that sender using RTCP mechanisms because different streams may have completely different clocks (with different granularities and even different amounts of inaccuracy or drift), there needs to be a way to accurately synchronize streams with each other Canonical:標準的

139 RTCP defines a number of different packet types, including
sender reports, which enable active senders to a session to report transmission and reception statistics; receiver reports, which receivers who are not senders use to report reception statistics; source descriptions, which carry CNAMEs and other sender description information; application-specific control packets

140 these different RTCP packet types are sent over the lower-layer protocol (UDP)
several RTCP packets can be packed into a single PDU of the lower-level protocol it is required that at least two RTCP packets are sent in every lower-level PDU: report packet and source description packet other packets may be included up to the size limits imposed by the lower-layer protocols

141 the participants should know
RTCP has a set of mechanisms by which the participants scale back their reporting frequency as the number of participants increases basic goal: limit the total amount of RTCP traffic to a small percentage (typically 5%) of the RTP data traffic the participants should know how much data bandwidth is likely to be in use (e.g., the amount to send three audio streams) and they learn this from means outside RTP (known as session management) the number of participants they learn this from the RTCP reports of other participants Scale something back reduce something in size, number, or extent

142 because RTCP reports might be sent at a very low rate, it might only be possible to get an approximate count of the current number of recipients, but that is typically sufficient once a participant has determined how much bandwidth it can consume with RTCP traffic, it sets about sending periodic reports at the appropriate rate

143 sender reports and receiver reports differ only in that the former include some extra information about the sender a timestamp containing the actual time of day when this report was generated; the RTP timestamp corresponding to the time when the report was generated; cumulative counts of the packets and bytes sent by this sender since it began transmission

144 both sender and receiver reports contain one block of data per source that has been heard from since the last report. Each block contains the following statistics for the source in question its SSRC; the fraction of data packets from this source that were lost since the last report was sent (calculated by comparing the number of packets received with the number of packets expected; this last value can be determined from the RTP sequence numbers); total number of packets lost from this source since the first time it was heard from;

145 highest sequence number received from this source (extended to 32 bits to account for wrapping of the sequence number); estimated interarrival jitter for the source (calculated by comparing the interarrival spacing of received packets with the expected spacing at transmission time); last actual timestamp received via RTCP for this source; delay since last sender report received via RTCP for this source

146 The third function [a way to convey the identity of a sender for display on a user interface]
the source description packet such a packet contains, at a minimum, the SSRC of the sender and the sender's CNAME the canonical name is derived in such a way that all applications that generate media streams that might need to be synchronized (e.g., separately generated audio and video streams from the same user) will choose the same CNAME even though they might choose different SSRC values

147 this enables a receiver to identify the media stream that came from the same sender
the most common format of the CNAME is where host is the fully qualified domain name of the sending machine an application launched by the user whose user name is jdoe running on the machine cherry.cs.nccu.edu.tw would use the string as its CNAME

148 other items may be included in the source description packet
real name and address of the user these are used in user interface displays and to contact participants


Download ppt "End-to-End Protocols 5.1 Simple Demultiplexer (UDP)"

Similar presentations


Ads by Google