![Page 1: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/1.jpg)
myrpc 3/10/14 1
Remote Procedure Call
Outline Protocol Stack Presentation Formatting Readings 5.3 Why? - Research Approach
![Page 2: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/2.jpg)
myrpc 3/10/14 2
RPC Timeline Paradigm of Distributed Computing
Client Server
Request
ReplyComputing
Blocked
Blocked
Blocked
int func()
World of Distributed Systems enabled by Internet
![Page 3: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/3.jpg)
myrpc 3/10/14 3
RPC Issues
RPC travels over a network, not a computer backplane lost, reorder, message size, etc.
need reliable transport, but low overhead
Caller and Callee computers may have significantly different Architectures
why care?
![Page 4: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/4.jpg)
myrpc 3/10/14 4
RPC: Transport Issues • UDP Message in 1 direction followed by UDP Message in
other direction – Lose
• Guaranteed messages • Order • Single Copy • Need TCP, but appears expensive and overkill ?
![Page 5: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/5.jpg)
myrpc 3/10/14 5
![Page 6: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/6.jpg)
myrpc 3/10/14 6
RPC: Issues • Client unable to locate server
– exposes RPC vs normal procedure call – server dies, out of date, etc. – client needs to handle via exceptions
• Lost Request messages – kernel timer
• Lost Reply messages – kernel timer, but unsure why message lost – sequence #
• idempotent –request that has no side effects and can be executed as often as necessary without any hard state, e.g., read 1st 1k bytes of a file
• UDP Message in 1 direction followed by UDP Message in other direction – Lose
• Guaranteed messages • Order • Single Copy • Need TCP, but expensive and overkill
![Page 7: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/7.jpg)
myrpc 3/10/14 7
RPC: Issues • Server crashes
– at least once semantics – at most once semantics, try once and forget it – guarantee nothing
• Client crashes – orphan process on server – extermination – reboot and kill client process because you have
logged process RPC calls – reincarnation – reboot, broadcast to server, who kills process as
orphan – gentle reincarnation – find parent – expiration – RPC given time to complete, if not, it dies....
![Page 8: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/8.jpg)
myrpc 3/10/14 8
RPC 14 Steps, time percentage
![Page 9: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/9.jpg)
myrpc 3/10/14 9
RPC: Transport Issues TCP provides expected features I.e., expected transport support
But Stream not exactly best for single message exchange – Time to setup and tear down TCP for each message – Could use ‘push’ or ‘urgent’
![Page 10: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/10.jpg)
myrpc 3/10/14 10
RPC - What is needed Protocol that Manages RPC messages Handles network problems, e.g., sequence numbers Pgm Lang, compiler and stub compiler that supports RPC
Approach:
Micro-Protocols for transport of RPC messages Micro-Protocols: protocols with a single function, RFC 3439 & RFC 3724.
(Micro-protocols are a research approach to networking research)
![Page 11: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/11.jpg)
myrpc 3/10/14 11
An Approach: RPC Components • Protocol Stack
– BLAST: fragments and reassembles large messages – CHAN: synchronizes request and reply messages – SELECT: dispatches request to the correct process
• Stubs Caller(client)
Clientstub
RPCprotocol
ReturnvalueArguments
ReplyRequest
Callee(server)
Serverstub
RPCprotocol
ReturnvalueArguments
ReplyRequest
Msg Msg
![Page 12: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/12.jpg)
myrpc 3/10/14 12
Simple RPC Stack
BLAST
ETH
IP
SELECT
CHAN
![Page 13: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/13.jpg)
myrpc 3/10/14 13
Bulk Transfer (BLAST) • Unlike IP, tries to recover from lost
fragments (UDP +)
• Strategy – selective retransmission – supports partial
acknowledgements – Break large msg into small
fragments – Use selective retransmission – Do not wait for Acks
Sender Receiver
Fragment 1Fragment 2Fragment 3
Fragment 5
Fragment 4
Fragment 6
Fragment 3Fragment 5
SRR
SRR What triggers SRR
![Page 14: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/14.jpg)
myrpc 3/10/14 14
BLAST Details • Sender:
– after sending all fragments, set timer DONE – if receive SRR, send missing fragments and reset DONE – if timer DONE expires, free fragments – I.E, will try, but unlike TCP no guarantee…
![Page 15: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/15.jpg)
myrpc 3/10/14 15
BLAST Details (cont) • Receiver:
– when first fragments arrives, set timer LAST_FRAG • Not “last fragment” but last one received
– when all fragments present, reassemble and pass up – four exceptional conditions:
• if last fragment arrives but message not complete – send SRR and set timer RETRY
• if timer LAST_FRAG expires – send SRR and set timer RETRY
• if timer RETRY expires for first or second time – send SRR and set timer RETRY
• if timer RETRY expires a third time – give up and free partial message
– Persistent, but not infinite
![Page 16: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/16.jpg)
myrpc 3/10/14 16
Blast Notes
• 2 events trigger SRR transmission – Arrival of last fragment – Last_Frag timer
• Timers – Done - give up, large value, why? – Retry - Performance not an issue – Last_Frag sent and lost
• Persistent, but no guarantee – Let higher level protocol provide guarantee message
delivery
![Page 17: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/17.jpg)
myrpc 3/10/14 17
BLAST Header Format
• MSG ID must protect against wrap around
• TYPE = DATA or SRR • NumFrags indicates number of
fragments • FragMask distinguishes among
fragments – if Type=DATA, identifies this
fragment – if Type=SRR, identifies missing
fragments
Data
ProtNum
MID
Length
NumFrags Type
FragMask
0 16 31Protocol ID MSG ID Fragment LN Data or SRR Bit Mask
![Page 18: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/18.jpg)
myrpc 3/10/14 18
Request/Reply (CHAN) • Guarantees message delivery • Synchronizes client with server • Supports at-most-once semantics vs 0 or more
– At most 1 msg delivered at most 1 call made
Simple case Implicit Acks Client Server
Request
ACK
Reply
ACK
Client ServerRequest 1
Request 2
Reply 2
Reply 1
![Page 19: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/19.jpg)
myrpc 3/10/14 19
CHAN Details • Lost message (request, reply, or ACK)
– set RETRANSMIT timer – use message id (MID) field to distinguish, I.e., buffer single
copy • Slow (long running) server
– client periodically sends “are you alive” probe, or Ack – server periodically sends “I’m alive” notice
• Want to support multiple outstanding calls – use channel id (CID) field to distinguish
• Machines crash and reboot – use boot id (BID) field to distinguish, therefore 64 bits to
distinguish Msg: BID/MID
![Page 20: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/20.jpg)
myrpc 3/10/14 20
CHAN Timers
• Retransmit on client and server • Probe on client • Retransmit affects performance
– LAN vs WAN – Msg size - 1kB to 32kB
![Page 21: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/21.jpg)
myrpc 3/10/14 21
CHAN Header Format typedef struct { u_short Type; /* REQ, REP, ACK, PROBE */ u_short CID; /* unique channel id */ int MID; /* unique message id */ int BID; /* unique boot id */ int Length; /* length of message */ int ProtNum; /* high-level protocol */ } ChanHdr;
typedef struct { u_char type; /* CLIENT or SERVER */ u_char status; /* BUSY or IDLE */ int retries; /* number of retries */ int timeout; /* timeout value */ XkReturn ret_val; /* return value */ Msg *request; /* request message */ Msg *reply; /* reply message */ Semaphore reply_sem; /* client semaphore */ int mid; /* message id */ int bid; /* boot id */ } ChanState;
![Page 22: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/22.jpg)
myrpc 3/10/14 22
Synchronous vs Asynchronous Protocols
• Asynchronous interface send(Protocol llp, Msg *message) deliver(Protocol llp, Msg *message)
• Synchronous interface call(Protocol llp, Msg *request, Msg *reply) upcall(Protocol hlp, Msg *request, Msg *reply)
• CHAN is a hybrid protocol – synchronous from above: call – asynchronous from below: deliver
![Page 23: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/23.jpg)
myrpc 3/10/14 23
Dispatcher (SELECT) • Dispatch to appropriate
procedure • Synchronous
counterpart to UDP • Implement concurrency
(open multiple CHANs)
• Address Space for Procedures – flat: unique id for each possible procedure – hierarchical: program + procedure number
Caller (client)
SELECT
CHAN
call
call
Callee (server)
SELECT
CHAN
upcall
upcall
deliver send deliver send
![Page 24: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/24.jpg)
myrpc 3/10/14 24
Why Select Different Procedure address spaces can be chosen by inserting different Selects into protocol graph Can be used to support concurrency, I.e., make multiple outstanding calls to same remote procedure (Chan does not allow this)
![Page 25: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/25.jpg)
myrpc 3/10/14 25
Simple RPC Stack
BLAST
ETH
IP
SELECT
CHAN
![Page 26: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/26.jpg)
myrpc 3/10/14 26
SunRPC
• IP implements BLAST-equivalent – except no selective retransmit
• SunRPC implements CHAN-equivalent – except not at-most-once
• UDP + SunRPC implement SELECT-equivalent – UDP dispatches to program (ports bound to programs) – SunRPC dispatches to procedure within program
IP
ETH
SunRPC
UDP
![Page 27: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/27.jpg)
myrpc 3/10/14 27
SunRPC Header Format
• XID (transaction id) is similar to CHAN’s MID
• Server does not remember last XID it serviced
• Problem if client retransmits request while reply is in transit
Data
Data
MsgType = CALL
XID
RPCVersion = 2(a)
Program
Version
Procedure
Credentials (variable)
Verifier (variable)
MsgType = REPLY
XID
Status = ACCEPTED(b)
0 31 0 31
![Page 28: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/28.jpg)
myrpc 3/10/14 28
SunRPC • 2 tier procedure address
– 32 bit program # – 32 bit procedure #
• NFS – 00100003 program number – getattr – procedure 1 – setattr – procedure 2
• Messages are sent to UDP well known port
IP
ETH
SunRPC
UDP
![Page 29: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/29.jpg)
myrpc 3/10/14 29
Presentation Formatting • Marshalling (encoding)
application data into messages
• Unmarshalling (decoding) messages into application data
• Data types we consider – integers – floats – strings – arrays – structs
• Types of data we do not consider – images – video – multimedia documents
Application data
Presentation encoding
Application data
Presentation decoding
Message Message Message ■ ■ ■
![Page 30: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/30.jpg)
myrpc 3/10/14 30
Difficulties • Representation of base types
– floating point: IEEE 754 versus non-standard – integer: big-endian versus little-endian (e.g., 34,677,374)
• Compiler layout of structures
(126)(34)(17)(2)
00000010Big-endian
Little-endian
(2)(17)(34)(126)
Lowaddress
Highaddress
0 0111111 00 001 0 01
00 001 001 00 001 0 01
00 001 001 000 000 01
0 0111111
![Page 31: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/31.jpg)
myrpc 3/10/14 31
Taxonomy • Data types
– base types (e.g., ints, floats); must convert – flat types (e.g., structures, arrays); must pack – complex types (e.g., pointers); must linearize
• Conversion Strategy – canonical intermediate form – receiver-makes-right (an N x N solution)
Argument marshaller
Application data structure
![Page 32: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/32.jpg)
myrpc 3/10/14 32
Taxonomy (cont) • Tagged versus untagged data
• Stubs – compiled – interpreted
type =INT len = 4 value = 417892
Call P
Clientstub
RPC
Arguments
Marshalledarguments
Interfacedescriptor forprocedure P
Stubcompiler
Message
Specification
P
Serverstub
RPC
Arguments
Marshalledarguments
Code Code
![Page 33: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/33.jpg)
myrpc 3/10/14 33
eXternal Data Representation (XDR)
• Defined by Sun for use with SunRPC • C type system (without function pointers) • Canonical intermediate form • Untagged (except array length) • Compiled stubs
![Page 34: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/34.jpg)
myrpc 3/10/14 34
#define MAXNAME 256; #define MAXLIST 100; struct item { int count; char name[MAXNAME]; int list[MAXLIST]; }; bool_t xdr_item(XDR *xdrs, struct item *ptr) { return(xdr_int(xdrs, &ptr->count) && xdr_string(xdrs, &ptr->name, MAXNAME) && xdr_array(xdrs, &ptr->list, &ptr->count, MAXLIST, sizeof(int), xdr_int)); }
Count Name
J O3 7 H N S O N
List
3 497 2658321
![Page 35: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/35.jpg)
myrpc 3/10/14 35
Abstract Syntax Notation One (ASN-1)
• An ISO standard • Essentially the C type system • Canonical intermediate form • Tagged • Compiled or interpretted stubs • BER: Basic Encoding Rules
(tag, length, value)
valuetype typelength valuelength type valuelength
INT 4 4-byte integer
![Page 36: Remote Procedure Callmike/public_html/courses/... · RPC: Issues • Client unable to locate server – exposes RPC vs normal procedure call – server dies, out of date, etc. –](https://reader034.vdocuments.mx/reader034/viewer/2022052500/6018f43b04a4f403537b1177/html5/thumbnails/36.jpg)
myrpc
The End
3/10/14 36