Spring 2002CS 3321 Introduction Outline Statistical Multiplexing Network Architecture Performance Metrics (just a little)
Spring 2002CS 3322 Our Journey Through the Text Chapter 1 Chapters 4,5,6 (with Chapters 2,3 sprinkled in as needed) Why?
Spring 2002CS 3323 Building Blocks Nodes: PC, special-purpose hardware… –hosts –Switches (host connected to at least two links that runs software that forwards data received on one link out on another). Links: coax cable, optical fiber… –point-to-point –multiple access …
Spring 2002CS 3324 Switched Networks –two or more nodes connected by a link, or –two or more networks connected by two or more nodes A network can be defined recursively as... Nodes on inside of cloud called switches, nodes on outside called hosts Cloud can Denote any Type of network: P2P, multi-access, switched internetwork Node between networks called router or gateway
Spring 2002CS 3325 Routing Just because we have physical connectivity between all hosts, doesn’t mean we have provided host-to-host connectivity –Need to be able to specify hosts with which we wish to communicate –I.e. each host needs an address (note that the address is really only a name – it need not relate in any way to the physical location of the host) –Routers and switches between hosts need to use address to decide how to forward messages Routing: process of determining systematically how to forward messages toward the destination node based on the destination node’s address
Spring 2002CS 3326 Not Just One Destination… Unicast – single source, single destination Broadcast – single source, all destinations (well, sort of) Multicast – single source, whole group of destinations Anycast?! –Why would you want this?
Spring 2002CS 3327 A Key Idea We can define a network recursively as a network of networks. –At bottom layer, it is implemented by some physical medium –At higher layers it is a “logical” network Key issue: how do we assign addresses at each layer in a manner which allows us to efficiently route messages?
Spring 2002CS 3328 Strategies Circuit switching: carry bit streams –original telephone network –Connection is established before any data sent Packet switching: store-and-forward messages –Internet (Why?) –Send discrete blocks of data from node to node (called a packet or message)
Spring 2002CS 3329 Virtual Circuit Switching Explicit connection setup (and tear-down) phase Subsequence packets follow same circuit Sometimes called connection-oriented model Switch 3 Host B Switch 2 Host A Switch 1 Analogy: phone call Each switch maintains a VC table Advantages? Disadvantages?
Spring 2002CS Datagram Switching No connection setup phase Each packet forwarded independently Sometimes called connectionless model Switch 3 Host B Switch 2 Host A Switch 1 Host C Host D Host E Host F Host G Host H Analogy: postal system Each switch maintains a forwarding (routing) table
Spring 2002CS Multiplexing Time-Division Multiplexing (TDM) Frequency-Division Multiplexing (FDM) L1 L2 L3 R1 R2 R3 Switch 1Switch 2 Note that in either technique, bandwidth can be wasted!
Spring 2002CS Statistical Multiplexing On-demand time-division (rather than in specific time slot) Schedule link on a per-packet basis Packets from different sources interleaved on link Buffer packets that are contending for the link Buffer (queue) overflow is called congestion … Fairly allocating link capacity and dealing with congestion are key issues here!
Spring 2002CS IPC Abstractions Request/Reply –distributed file systems –digital libraries (web) Stream-Based –video: sequence of frames –video applications on-demand video video conferencing
Spring 2002CS Layering Use abstractions to hide complexity Abstraction naturally lead to layering Alternative abstractions at each layer Request/reply channel Message stream channel Application programs Hardware Host-to-host connectivity
Spring 2002CS Protocols Building blocks of a network architecture Each protocol object has two different interfaces –service interface: operations on this protocol –peer-to-peer interface: messages exchanged with peer Term “protocol” is overloaded –specification of peer-to-peer interface –module that implements this interface
Spring 2002CS Host 1 Protocol Host 2 Protocol High-level object High-level object Service interface Peer-to-peer interface Interfaces
Spring 2002CS Protocol Machinery Protocol Graph –most peer-to-peer communication is indirect –peer-to-peer is direct only at hardware level File application Digital library application Video application RRPMSP HHP Host 1 File application Digital library application Video application RRPMSP HHP Host 2
Spring 2002CS Machinery (cont) Multiplexing and Demultiplexing (demux key) Encapsulation (header/body) RRPDataHHP Application program Application program Host 1Host 2 Data RRP Data HHP Data RRP Data HHP
Spring 2002CS Internet Architecture Defined by Internet Engineering Task Force (IETF) Hourglass Design Application vs Application Protocol (FTP, HTTP) … FTPHTTPNV TFTP TCP UDP IP NET 1 2 n
Spring 2002CS ISO Architecture Application Presentation Session Transport End host One or more nodes within the network Network Data link Physical Network Data link Physical Network Data link Physical Application Presentation Session Transport End host Network Data link Physical Note transport layer is “end-to-end”
Spring 2002CS Performance Metrics Bandwidth (throughput) –data transmitted per time unit –link versus end-to-end –notation KB = 2 10 bytes Mbps = 10 6 bits per second Latency (delay) –time to send message from point A to point B –one-way versus round-trip time (RTT) –components Latency = Propagation + Transmit + Queue Propagation = Distance / c Transmit = Size / Bandwidth
Spring 2002CS Bandwidth versus Latency Relative importance Infinite bandwidth
Spring 2002CS Protocol Implementation Issues Which process model? –Process-per-protocol model Each protocol implemented by separate process (thread) Sometimes logically “cleaner” – one protocol, one process Context switch required at each level of protocol graph –Process-per-message model Each message handled by a single process with each protocol a separate procedure that invokes the subsequent protocol Order of magnitude more efficient (procedure call much more efficient than context switch)
Spring 2002CS Protocol Implementation Issues Service Interface relationship with process model –If high-level protocol invokes send() on lower level protocol, it has message in hand so no big deal –If high-level protocol invokes receive() on lower level protocol, it must wait for receipt of message, which basically forces a context switch. –No big deal if app directly calls network subsystem, but big deal if it occurs at each layer of protocol stack –Cure: low level protocol does an upcall (a procedure call up the stack) to deliver message to higher level
Spring 2002CS Protocol Implementation Issues Message Buffers –In socket API, application process provides buffers for both outbound and incoming messages. This forces top most protocol to copy messages from/to network buffers. –Copying data from one buffer to another is one of the most expensive operations a protocol implementation can perform. Memory is not getting fast as quickly as processors are –Solution: Rather than copying from buffer to buffer at each layer of protocol stack, network subsystem defines a message abstraction shared by all protocols in the protocol graph. Can be viewed as string manipulations with pointers Note: you can’t move data any faster than the slowest copy operation!
Spring 2002CS Implementation Are you using streams or request/reply, and what are the ramifications? What operating system are you coding on/for and where is the sockets library? What languages can you use, in theory? –Why would you wish to use specific languages? What will you have to do in your first assignment?
Spring 2002CS Implementation Port Numbers –Solaris: reserved ( ), ephemeral( ) –BSD:reserved(1-1023), ephemeral( ), nonprivileged servers( ) –IANA: well known (1-1023), registered( ), dynamic ( ) Endian issues Compiler flags –Solaris –lsocket –lnsl –Linux no flags required Specifying command line arguments Null characters in strings?