Architecture & Implementation

Download Report

Transcript Architecture & Implementation

Requirements
•
•
•
•
Connectivity
Resource Sharing
Support for Common Services
Performance
Performance Metrics
• Bandwidth (throughput)
– data transmitted per time unit
– link versus end-to-end
– notation
• KB = 210 bytes
• Mbps = 106 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
– Examples of RTT: LAN, Cross-country link, Satellite
Delay x Bandwidth Product
• Amount of data “in flight” or “in the pipe”
• Example: 100ms x 45Mbps = 560KB
Delay
Bandw idth
• Why is it important to know Delay x Bandwidth
product?
Bandwidth versus Latency
• Relative importance
– 1-byte: 1ms vs 100ms dominates 1Mbps vs 100Mbps
– 25MB: 1Mbps vs 100Mbps dominates 1ms vs 100ms
• Infinite bandwidth
– RTT dominates
• Throughput = TransferSize / TransferTime
• TransferTime = RTT + TransferSize /Bandwidth
• 1-MB file to 1-Gbps link as 1-KB packet to 1-Mbps
link
Network Architecture
• Layering and Protocols
• ISO Architecture
• Internet architecture
Layering
• Use abstractions to hide complexity
• Abstraction naturally lead to layering
• Alternative abstractions at each layer
Advantages:
• Solve small problems vs.
monolithic software
• Modularity: easily add new
services
Drawback:
• May hide important
information
Application programs
Request/reply Message stream
channel
channel
Host-to-host connectivity
Hardware
Protocols
• Building blocks of a network architecture
• Each protocol object has two different interfaces
– service interface: operations on this protocol (SAP)
– peer-to-peer interface: messages exchanged with peer
• Term “protocol” is overloaded
– specification of peer-to-peer interface (rules)
– module that implements this interface
• Protocol stack: set of consecutive layers
• Interoperability problems
Interfaces
Host 1
High-level
object
Protocol
Host 2
Service
interface
Peer-to-peer
interface
High-level
object
Protocol
Protocol Machinery
• Protocol Graph
– most peer-to-peer communication is indirect
– peer-to-peer is direct only at hardware level
Host 2
Host 1
Digital
Video
File
library
application application application
RRP
MSP
HHP
Digital
Video
File
library
application application application
RRP
MSP
HHP
9
Machinery (cont)
• Multiplexing and Demultiplexing (demux
key)
• Encapsulation (header/body)
Host 1
Host 2
Application
program
Application
program
Data
Data
RRP
RRP
RRP Data
RRP Data
HHP
HHP
HHP RRP Data
10
OSI Architecture:
Reference Model
End host
End host
Application
Application
Presentation
Presentation
Session
Session
Transport
Transport
Network
Network
Network
Network
Data link
Data link
Data link
Data link
Physical
Physical
Physical
Physical
One or more nodes
within the network
Physical Layer
• Function: provides a “virtual bit pipe”
• How: maps bits into electrical/electromagnetic
signals appropriate for the channel
• The physical layer module is called a modem
(modulator/demodulator)
• Important issues:
– Timing: synchronous, intermittent synchronous,
asynchronous (characters)
– Interfacing the physical layer and DLC (e.g., RS-232,
X.21)
Data Link Control Layer (DLC)
• Receives packets from the network layer and
transforms then into bits transmitted by the
physical layer. Generally guarantees order and
correctness.
• Mechanisms of the DLC:
– Framing: header, trailer to separate packets, detect
errors…
– Multiple access schemes: when the link is shared by
several nodes there is a need for addressing and
controlling the access (this entity is called MAC
sublayer)
– Error detection and retransmission (LLC sublayer)
Network Layer
• Provides naming/addressing, routing, flow control,
and scheduling/queuing in a multi-hop network
• Makes decisions based on packet header (e.g.,
destination address) and module stored
information (e.g., routing tables)
• General comment: each layer looks only at its
corresponding header (here packet header)
• Routing is different on virtual circuit networks
than on datagram networks
Transport Layer
• Provides a reliable mechanism to transmit
messages between two end-nodes through:
–
–
–
–
–
Message fragmentation into packets
Packets reassembly in original order
Retransmission of lost packets
End-to-end flow control
Congestion control
Session Layer
• Was intended to handle the interaction between
two end points in setting up a session:
– multiple connections
– Service location (e.g., would achieve load sharing)
– Control of access rights
• For example, managing an audio and video stream
in a teleconferencing application
• In many networks these functionalities are
inexistent or spread over other layers
Presentation Layer
• Concerned with the format of the data
exchanged
• Provides data encryption, data compression,
and code conversion.
Application Layer
• What’s left over…
• Examples:WWW, Email, Telnet, …
Internet Architecture
• Defined by Internet Engineering Task Force (IETF)
• IETF requires working implementations for standard
adoption
• Application vs. Application Protocol (FTP, HTTP)
FTP
HTTP
NV
TFTP
UDP
TCP
IP
NET1
NET2
…
NETn
Internet Architecture
• Not quite layered
Application
TCP
UDP
IP
Network
Implementing Network Software
• Success of the Internet is partially due to:
– Minimal functionality within the network
– Most of the functionality running is software
over general-purpose computers
• Simple Application Programming Interface
• Efficient protocol implementation
Application Programming Interface
• Each OS can have a special interface
exported by the network to the applications
developer
• Most widely used network API is: socket
interface
– Initially developed by the Berkeley Distribution
of Unix and today ported to almost all OS
Creating a Socket
• int socket( int domain, /* PF_INET,
PF_UNIX */
int type, /* SOCK_STREAM,
SOCK_DGRAM */
int protocol)
Active Open
• Clients perform an active open operation
using the connect routine
• int connect (int socket, struct
sockaddr *address, int addr_len)
Passive Open
• Servers perform a passive open
– bind, listen, accept
• int bind (int socket, struct sockaddr
*address, int addr_len)
• int listen (int socket, int backlog)
• int accept (int socket, struct sockaddr
*address, int *addr_len)
Sending and Receiving Data
• Once the connection is established, use
send/recv functions to exchange data
• int send (int socket, char *message,
int msg_len, int flags)
• int recv (int socket, char *buffer, int
buf_len, int flags)
Closing a Socket
• void close (int socket)
Client/Server Sockets
• Client:
– socket, connect, (send, recv)*, close
• Server:
– socket, bind, listen, (accept, (recv, send)*,
close)*
Exercise
• Write the simplex-talk client and server
programs given in Section 1.3.2 of text
– Given in C
• Run a client and server on same machine
and test
• Run client and server on different machines
• Do Exercises 28, 29, and 30 of text
Protocol Implementation Issues
• The socket API is an interface between the
application and the network subsystem (TCP,
UDP, IP, etc.)
• Could potentially be used as a protocol-to-protocol
interface
• Turns out that the socket interface, while clean,
introduces a number of inefficiencies
• Different protocol-to-protocol interfaces designed
Process Models
Process-per-protocol
Process-per-message
Context Switches
• Inefficiency of process-per-protocol model:
– Too many context switches, as the message is
handed from one protocol to the next
• Context switches become procedure calls in
the process-per-message model
– Sending a message: high-level protocol calls
send on the low-level protocol
– Receiving a message: high-level protocol calls
receive on the low-level protocol
Protocol-to-Protocol Interface
• The receive operation replaced by
deliver
TCP
send(IP, message)
deliver(TCP, message)
IP
Message Buffer Handling
• Copying messages between buffers expensive
• Shared message abstraction
– Adding and stripping headers
– Fragmenting and reassembling messages
Application process
send()
deliver()
Topmost protocol
Other Common Library Routines
• Event library: commonly need to schedule
an event in the future
– Examples: timeout, garbage collection
– A common event & event manager abstraction
• Map library: For maintaining bindings between
identifiers
– Example: Mapping incoming messages to the
connection that will process the message