Basic Networking Vivek Pai Nov 26, 2002

advertisement
Basic Networking
Vivek Pai
Nov 26, 2002
Communication

You’ve already seen some of it
– Web server project(s)

Machines have “names”
–
–
–
–
Human-readable names are convenience
“Actual” name is IP (Internet Protocol) address
For example, 127.0.0.1 means “this machine”
nslookup www.cs.princeton.edu gives
128.112.136.11
2
Names & Services

Multiple protocols
– ssh, ftp, telnet, http, etc.
– How do we know how to connect?

Machines also have port numbers
– 16 bit quantity (0-65535)
– Protocols have default port #
– Can still do “telnet 128.112.136.11 80”
3
But The Web Is Massive

Possible names >> possible IP addresses
–
–
–
–

World population > possible IP addresses
Many names map to same IP addr
Use extra information to disambiguate
In HTTP, request contains “Host: name” header
Many connections to same (machine, port #)
– Use (src addr, src port, dst addr, dst port) to identify
connection
4
Measuring Latency
Here to Berkeley, CA
 Mapquest: 2898 miles (47 hours driving)
 Speed of light: 186000 miles/sec

– 15.6 ms (slightly slower than a disk access)

Ping: www.cs.berkeley.edu
– 84ms round trip (less than 3x slower)

Why? Packet switching
5
Circuit Switching versus
Packet Switching

Circuit – reserve resources in advance
– Hold resources for entire communication
– Example: phone line

Packet – break data into small pieces
–
–
–
–
Pieces identify themselves, “share” links
Individual pieces routed to destination
Example: internet
Problem: no guarantee pieces reach
6
Mapping Packet Switching
% traceroute www.cs.berkeley.edu
traceroute to hyperion.cs.berkeley.edu (169.229.60.105), 64 hops max, 40 byte packets
1 ***
2 csgate.CS.Princeton.EDU (128.112.152.1) 5.847 ms 5.718 ms 5.652 ms
3 vgate1.Princeton.EDU (128.112.128.114) 5.400 ms 5.371 ms 5.306 ms
4 local.princeton.magpi.net (198.32.42.65) 6.873 ms 8.128 ms 6.597 ms
5 remote1.abilene.magpi.net (198.32.42.210) 9.515 ms 9.628 ms 10.071 ms
6 nycmng-washng.abilene.ucaid.edu (198.32.8.84) 14.259 ms 15.520 ms 14.007 ms
7 chinng-nycmng.abilene.ucaid.edu (198.32.8.82) 34.292 ms 34.326 ms 34.271 ms
8 iplsng-chinng.abilene.ucaid.edu (198.32.8.77) 50.394 ms 56.998 ms 46.205 ms
9 kscyng-iplsng.abilene.ucaid.edu (198.32.8.81) 47.535 ms 46.830 ms 61.605 ms
10 snvang-kscyng.abilene.ucaid.edu (198.32.8.102) 82.091 ms 82.941 ms 83.235 ms
11 snva-snvang.abilene.ucaid.edu (198.32.11.122) 82.910 ms 82.601 ms 81.987 ms
12 198.32.249.161 (198.32.249.161) 82.314 ms 82.394 ms 82.182 ms
13 BERK--SUNV.POS.calren2.net (198.32.249.13) 83.827 ms 84.060 ms 83.462 ms
14 pos1-0.inr-000-eva.Berkeley.EDU (128.32.0.89) 83.707 ms 83.579 ms 83.702 ms
15 vlan199.inr-202-doecev.Berkeley.EDU (128.32.0.203) 83.986 ms 148.940 ms 84.031 ms
16 doecev-soda-br-6-4.EECS.Berkeley.EDU (128.32.255.170) 84.365 ms 84.410 ms 84.167 ms
17 hyperion.CS.Berkeley.EDU (169.229.60.105) 84.506 ms 84.017 ms 84.393 ms
7
Abilene (Internet2) Nodes
8
Failure Behavior

What happens if
–
–
–
–

We send the packet
It reaches Sunnyvale
It meanders to Berkeley
Web server loses power
Can we avoid this situation?
9
The “End To End” Argument
Don’t rely on lower layers of the system to
ensure something happens
 If it needs to occur, build the logic into the
endpoints
 Implications:

– Intermediate components simplified
– Repetition possible at endpoints (use OS)

What is reliability?
10
Do Applications Care?
Some do
 Most don’t

– Use whatever OS provides
– Good enough for most purposes

What do applications want?
– Performance
– Simplicity
11
Reading & Writing

A file:
–
–
–
–
–

Is made into a “descriptor” via some call
Is an unstructured stream of bytes
Can be read/written
OS provides low-level interaction
Applications use read/write calls
Sounds workable?
12
Kernel Internals
int
read(struct proc *p, struct read_args *uap)
{
register struct file *fp;
int error;
if ((fp = holdfp(p->p_fd, uap->fd, FREAD)) == NULL)
return (EBADF);
error = dofileread(p, fp, uap->fd, uap->buf,
uap->nbyte, (off_t)-1, 0);
fdrop(fp, p);
return(error);
}
13
Kernel Internals
int
dofileread(struct proc *p, struct file *fp, int fd, flags,
void *buf, size_t nbyte, off_t offset)
{
[…] (elided some code here)
cnt = nbyte;
if ((error = fo_read(fp, &auio, fp->f_cred, flags, p))) {
if (auio.uio_resid != cnt && (error == ERESTART ||
error == EINTR || error == EWOULDBLOCK))
error = 0;
}
cnt -= auio.uio_resid;
p->p_retval[0] = cnt;
return (error);
}
14
Kernel Internals
static __inline int
fo_read(struct file *fp, struct uio *uio,
struct ucred *cred, struct proc *p,
int flags)
{
int error;
fhold(fp);
error = (*fp->f_ops->fo_read)(fp, uio, cred,
flags, p);
fdrop(fp, p);
return (error);
}
15
Who Are These People
16
Gary Kildall


Founded Intergalactic Digital
Research
Wrote CP/M
–
–
–
–

Fairly portable
Wide use before IBM PC
Sales of $5.1M in 1981
Almost became PC’s OS
Died in 1994 from head
injuries
17
Network Connections As FDs
Network connection usually called “socket”
 Interesting new system calls

–
–
–
–
–

socket( ) – creates an fd for networking use
connect( ) – connects to the specified machine
bind( ) – specifies port # for this socket
listen( ) – waits for incoming connections
accept( ) – gets connection from other machine
And, of course, read( ) and write( )
18
New Semantics

Doing a write( )
–
–
–
–

What’s the latency/bandwidth of a disk?
When does a write( ) “complete”?
Where did data actually go before?
Can we do something similar now?
What about read( )
– Is a disk read different from a network read?
– When should a read return?
– What should a read return?
19
Buffering

Provided by OS
– Memory on both sender and receiver sides
– Sender: enables reliability, quick writes
– Receiver: allows incoming data before read

Example – assume slow network
– write(fd, buf, size);
– memset(buf, 0, size)
– write(fd, buf, size);
20
Interprocess Communications

Shared memory
– Threads sharing address space
– Processes memory-mapping the same file
– Processes using shared memory system calls

Sockets and read/write
– Nothing prohibits connection to same machine
– Even faster mechanism – different “domain”
– Unix domain (local) versus Internet (either)
21
Sockets vs Shared Memory

Sockets
– Higher overhead
– No common parent/file needed
– “Active” operation – under program control

Shared memory
– Locking due to synchronous operation
– Fast reads/writes – no OS intervention
– Harder to use multiple machines
22
Download