Overview: IP
- IPv6
- mobile IP
- ICMP
- DHCP
- SLIP
- PPP
- IP routing
IPv6
- design initiated in response to exhaustion of class B addresses
- 128-bit addresses
- better autoconfiguration
- better security (encryption, authentication)
- better type of service
- simpler to process a packet
- no header checksum
- "extension headers" instead of options, protocol field
Does not interoperate with IPv4, but can be tunneled
ICMP
- Internet Control Message Protocol
- ping
- try to inform sender when discarding a packet
- (never send in response to an ICMP packet)
- unreliable, but useful
Mobile IP
- post office forwarding address
- I get a guest IP address from the network I'm on
- forwarding agent on my network sends all my packets to the guest address
- I can either
- send packets with my home IP address (probably dropped for security
reasons)
- send packets with my guest IP address (source address authentication
won't work)
DHCP
- Dynamic Host Configuration Protocol
- "plug and play"
- broadcast request for IP address
- assigned IP address
- e.g. ISPs
PPP
- "lower layer" for IP (and other protocols)
- has IP address negotiation
- can use multiple serial lines
- 2-byte CRC
- complex, useful
SLIP
- "lower layer" for IP only
- marker character END, replaced in packet by ESC END
- escape character ESC, replaced in packet by ESC ESC
- END starts and ends packet
- IP+TCP headers are predictable: compression increases
rate of useful data
Routing
- find a "good" path from one router to all other routers
- "good" is abstracted as "minimum metric"
- metric can be cost, distance, or simply 1 for a
functioning link, infinite for a non-functional link
- in practice, low cost links can be short, or high bandwidth,
or underutilized
Dijkstra's shortest path algorithm
- given:
- a set of nodes n in N
- a starting node a in N (N' = N - {a}
- a set of links l in N * N
- link metrics m(l) > 0
- calculates distance d(n) from a to each node in N'
Dijkstra's shortest path algorithm
- forall n in (N - {A}) set d(n) = oo
- the set of nodes with known distances is K: initially, K = {}.
- loop:
compute the distance for each node in n in N:
d(n) = min(d(n), min[n' in (N - n), l in (n' * n)](d(n')+m(l))
- find the node n in (N' - K) with minimum distance d(n),
add the node to K
- if N' = K, we are done, otherwise return to step "loop"
why algorithm works
- node distances (d(n)) can only decrease, never increase
- if a path to n goes through n', then at the end
d(n) > d(n'), since forall l, m(l) > 0
- if a node is chosen for K, its distance is less than
or equal to distance of all nodes still in N - K
- therefore, the distance of all nodes in K is less than
or equal to the distance of each node in N - K
- therefore, the distance of all nodes in K can never decrease
beyond the current value of d(n)
- therefore, the distance of all nodes in K is the shortest path distance