450 likes | 574 Views
IP Version 6 (IPv6). CS 547/490 Network Programming. Department of Computer Science Southern Illinois University Edwardsville Spring, 2010 Dr. Hiroshi Fujinoki E-mail: hfujino@siue.edu. IPv6.PPT/001. History. CS 547/490 Network Programming.
E N D
IP Version 6 (IPv6) CS 547/490 Network Programming Department of Computer Science Southern Illinois University Edwardsville Spring, 2010 Dr. Hiroshi Fujinoki E-mail: hfujino@siue.edu IPv6.PPT/001
History CS 547/490 Network Programming • A project for IPnG (IP Next Generation) was started to improve • the existing IP (IPv4) • IPnG officially became IPv6 in RFC 1752 • Many modifications were made to the first IPv6 draft - RFC 2460: Internet Protocol Version 6 (1998) - RFC 2374: IPv6 Aggregatable Global Unicast Address Format - RFC 2463: Internet Protocol Version 6 (Revision) - RFC 2464: Transmission of IPv6 packets over Ethernet • Latest OSes support IPv6 (Windows XP, Solaris 8 and Linux (krnl: 2.1.2) IPv6.PPT/002
IPv6 Goals 1. Extended address space 2. QoS (Quality of Service) support 3. Built-in security mechanisms 4. Better protocol service extendibility 5. State-less DHCP services 6. More efficient routing 7. Backward compatibility to IPv4 8. Network infrastructure for both IPv4 and IPv6 9. More flexible network set up CS 547/490 Network Programming IPv6.PPT/003
Extended Address Space CIDR (Class-less Internet Domain Routing) proposed CS 547/490 Network Programming • The address space for IPv4 = 232 = about 4.3 billion unique addresses • The address space of IPv4 was considered to be large enough • In the late 90s, the address space of IPv4 was getting starved - Advent of WWW (Commercial domains became popular) - Household electric appliances started connected to the Internet - There usually are some addresses not used in every network domain (a group of IP addresses are reserved for every domain) IPv6.PPT/004
Protocol Unique Addresses IPv4 IPv6 Extended Address Space CS 547/490 Network Programming Comparisons of IPv4 and IPv6 address spaces 4, 294, 967, 296 addresses 340, 282, 366, 920, 938, 463, 374, 607, 431, 768, 211, 456 addresses Using IPv6, we can assign 1028 addresses to every one on the earth! IPv6.PPT/005
This is a good thing, since we do not have to worry about address space starvation any more. However, there are something we (engineers) have to take care of ... Extended Address Space CS 547/490 Network Programming Due to the introduction of 128-bit address space, the available address space is now much larger …. IPv6.PPT/006
There are something we (engineers) have to take care of (1) Routing table size (2) Routing algorithm overhead Extended Address Space CS 547/490 Network Programming Large address space Routing overhead at routers (especially core routers): - 296 times larger address space than IPv4 - Each entry is now four times larger - Complexity of routing algorithm usually is in the order of O(nlogkn) and c nlogkn (n is the number of network routers) - The throughput will go down quickly as n increases ... IPv6.PPT/007
128 bits 13 24 16 3 8 64 Reserved FP TLA ID NLA ID SLA ID Interface ID Interface Address (Interface ID) Public Address Site Address FP = Format Prefix (Address Format Prefix) TLA ID = Top Layer Aggregation ID NLA ID = Next Layer Aggregation ID Extended Address Space SLA ID = Top Layer Aggregation ID CS 547/490 Network Programming IPv6.PPT/008
IP V4 Address Space 32 bits Interface Address (Interface ID) Public Address This is essentially a two-layer addressing CS 547/490 Network Programming 24 3 5 Host ID Class ID Domain Address IPv6.PPT/009
TLA NLA SLA Reduce “n” in O(nlogn) 4-layer routing Interface ID Extended Address Space CS 547/490 Network Programming IPv6.PPT/010
Security CS 547/490 Network Programming IPv4 security • User name and Password • Initially for recognizing every user, not for authentication • Not enough system support for security - Security is performed by “application” IPv6 security • Security even at the beginning of protocol design - Encryption is a part of protocol design (in IPv4, it’s a part of application-level protocol) IPv6.PPT/013
Data Packets Authentication Packets Security CS 547/490 Network Programming = Packets for data transmission IPv6 Packets = Packets for authentication Each authentication packets should: 1. Have AH (Authentication Header) 2. Have ESP (Encapsulating Security Payload) header IPv6.PPT/014
Protocol Service Extendibility CS 547/490 Network Programming In IPv4, header information is all within header It is difficult to change options without changing packet header format In IPv6, the header contains pointers to options Parameters are out of the “fixed” portion of the packet header IPv6.PPT/015
IPv6 Header IPv6 Header Protocol Service Extendibility Traffic Class Flow Label Version # Data (Payload Data) Length Next Header Pointer Max Hop Count Sender IPv6 IP Address (128 bits) Receiver IPv6 IP Address (128 bits) Extended Header CS 547/490 Network Programming Next header Pointer IPv6.PPT/017
Protocol Service Extendibility 1. Throughput 2. End-to-end delay 3. Delay jitter (variances in end-to-end delay) will be improved. CS 547/490 Network Programming Concepts: • Keep the “IPv6 header core” as small and as simple as possible • Extension should be made outside of the “header core” IPv6.PPT/018
Version # Service Type Packet Length IHL Flags Transport Protocol TTL Header Check Sum Code Sender IP Address Packet Sequence Number Fragment Offset Receiver IP Address Options and Padding IPv4 Header Protocol Service Extendibility Traffic Class Flow Label Version # Data (Payload Data) Length Next Header Pointer Max Hop Count Sender IPv6 IP Address (128 bits) Receiver IPv6 IP Address (128 bits) IPv6 Header CS 547/490 Network Programming IPv6.PPT/016
Quality of Service Support CS 547/490 Network Programming • IPv4 does not have any quality of service support Factors for “quality of service”: (1) Transmission Rate (Link Bandwidth) Reservation (2) Guaranteeing Short Delay (end-to-end delay and delay jitter) (3) Error rate - end users usually do not see “errors” during data transmissions (4) Security - encryption methods applied during data transmissions IPv6.PPT/011
Quality of Service Support CS 547/490 Network Programming QoS Support in IPv6: QoS Support by “flow” • In IPv6, QoS is provided to each “flow” (sometimes called “pipe”) • “IPv6 flow” is a “path” in virtual circuit • QoS is managed for “flow”, but not for each packet • The difference from “path” in the virtual circuit is that it can be • a collection of paths. IPv6.PPT/012
CS 547/490 Network Programming For each IPv6 flow (pipe), the following QoS parameters can be specified: • Queuing Priority • Network Resources - Memory Buffer - Link Bandwidth - Processor Time Slice (at routers) • Requirements for Packet Drop • Accounting • Security - Better Encryption IPv6.PPT/017
Traffic Class Flow Label Version # Data (Payload Data) Length Next Header Pointer Max Hop Count Sender IPv6 IP Address (128 bits) Quality of Service Support Receiver IPv6 IP Address (128 bits) IPv6 Header CS 547/490 Network Programming QoS Support in IPv6: QoS Support by “flow” • A “flow” is a virtual pipe uniquely identified by a combination of: • Flow label (20 bits) • Sender IPv6 Address • Receiver IPv6 Address IPv6.PPT/012
IPv6 Pipe Router Router Router Router Router Router CS 547/490 Network Programming IPv6 Receiver IPv6 Sender IPv6.PPT/017
Rn RECEIVER R2 R3 R4 SENDER R1 Path Set-up Signal Path Set-up delay ACK Signal Data Transmission CS 547/490 Network Programming Time IPv6.PPT/017
IPv6 IPv4 CS 547/490 Network Programming External Operation Virtual Circuit Datagram D A Virtual Circuit Internal Operation Datagram B C IPv6.PPT/017
State-Less DHCP Services DHCP Server Client A Address Request “146.163.147.52” A 146.163.147.52 DHCP Address Pool CS 547/490 Network Programming Existing HDCP (State-Full) DHCP Server: • Server keeps state (table) IPv6.PPT/019
State-Less DHCP Services DHCP Server Client A Address Request “146.163.147.52” A 146.163.147.52 CS 547/490 Network Programming • Server keeps state (table) • Client does not make a request at the beginning • A client generates its own IPv6 address • A client makes sure the address is available with • a help of routers • If the chosen address does not work, • then a host talks to IPv6 DHCP server IPv6.PPT/020
State-Less DHCP Services Client A Client B Client C Client D CS 547/490 Network Programming Generate an IPv6 address from the network address and interface ID Broadcast the generated IPv6 address within the network If someone already uses it, the host sends NACK If no one sends NACK, the host uses it as temporary address Talk to the gateway router to broadcast the temporary address to all the other routers in the network domain (ACK must be returned) If no ACK comes back, the joining host talks to IPv6 DHCP server IPv6.PPT/021
State-Less DHCP Services CS 547/490 Network Programming -A When a router receives a polling message, it broadcasts the address in the network -B If anyone is not using the address, the router sends ACK to the router -C If someone already uses it, the router sends NACK -D If the gateway router receives at least one NACK, it sends NACK to the joining node -E NACK is not received at all, the gateway router sends ACK to joining node IPv6.PPT/022
Backward Compatibility to IPv4 CS 547/490 Network Programming - Unfortunately, there is no backward compatibility to IPv4 in the protocol implementation - Source code compatible with minor differences There are some techniques to realize IPv4/IPv6 hybrid: • IPv4-mapped IPv6 addresses • IPv4/IPv6 Dual-Protocol Server • IPv4 Tunneling IPv6.PPT/023
IPv4/IPv6 Dual-Protocol Servers CS 547/490 Network Programming • During IPv4/IPv6 transition period, servers should be able to work with • both IPv4 and IPv6 routers - IPv4-mapped addresses allow a host that supports both IPv4 and IPv6 to communicate with a host (or router) that supports only IPv4 - The IPv4-mapped IPv6 address is based on a unique format IPv6.PPT/024
128 bits IPv4-Mapped IPv6 Addresses 24 16 3 80 5 32 Host ID IPv4 Address “FFFF” “000 … 000” Class ID Domain Address 32 bits IPv4 Address CS 547/490 Network Programming IPv6.PPT/025
Server IPv4-mapped IPv6 address IPv4/IPv6 Dual-Protocol Servers TCP Client1 Client2 IPv6 TCP TCP LLC IPv6 IPv4 IPv4 LLC LLC Dual-stack node: define in RFC 1933 CS 547/490 Network Programming Network IPv6.PPT/026
IPv6 Addresses IPv4-Mapped IPv6 Addresses IPv4-mapped IPv6 Addresses IPv4 Addresses CS 547/490 Network Programming IPv6.PPT/027
= IPv6 Router IPv6 Tunneling = IPv4 Router CS 547/490 Network Programming Host A Host C Internet Host B IPv6.PPT/028
= IPv6 Router IPv6 Packet IPv6 Packet IPv6 Packet IPv6 Tunneling IPv6 Packet = IPv4 Router CS 547/490 Network Programming Host A Host C Internet Host B IPv6.PPT/029
= IPv6 Router IPv6 Packet 6 6 4 IPv6 Packet 6 IPv4 Tunnel IPv6 Packet 4 6 IPv4 Packet IPv6 Tunneling IPv4 Packet IPv4 Packet = IPv4 Router CS 547/490 Network Programming Host A Host C Internet Host B IPv6.PPT/030
CS 547/490 Network Programming IPv6.PPT/027
Private LAN Internet CS 547/490 Network Programming • If your domain is connected to an • ISP that does not support IPv6 • From the public Internet, your IPv6 • domain looks like an IPv4 domain! External Server F/W • IPv4-mapped IPv6 address must be • used for this IPv6 host Dual-Stack • The dual-stack internal server can • establish an IPv4 tunnel Internal Server IPv6 host IPv6.PPT/027
Private LAN Internet CS 547/490 Network Programming • If your domain is connected to an • ISP that does not support IPv6 • Most of your domain is IPv4 (only a few LAN segments in your domain is operated by IPv6) External Server F/W • A technique to make a transition • from an IPv4 to an IPv6 domain Internal Server (when IPv6 hosts dominate, this domain uses dual-stack server) • IPv6 extended features are • available only in the same segment V4-V6 translator IPv6 host IPv6.PPT/027
Private LAN Internet CS 547/490 Network Programming IPv6 over IPv4 tunneling Dual-Stack External Server F/W Dual-Stack Dual-Stack Internal Server IPv6 host IPv6.PPT/027
6-Bone CS 547/490 Network Programming 6-bone is a virtual IPv6 network IPv6.PPT/031
6-Bone CS 547/490 Network Programming • Many operating systems and routers start adopting IPv6. • IPv4 is still the majority • A virtual IPv6 Internet constructed by IPv4 tunnel (Something similar to Mbone) • Your host (local machine) must support IPv6 (Such as Windows XP - you do NOT need IPv6 router) • You get connected through an 6-Bone access point • 6-Bonje is an experimental network established by IETF IPv6.PPT/032
IPv6 Programming CS 547/490 Network Programming IPv6.PPT/036
How can we develop network applications using IPv6? ……. structsockaddr_in server_addr; ……. server_addr.sin_family = AF_INET; server_addr.sin_len = sizeof (server_addr); ……. ……. IPv4 Address structure CS 547/490 Network Programming • IPv6 does not have compatibility to IPv4 in implementation • IPv6 does have compatibility to IPv4 in source code IPv6.PPT/037
How can we develop network applications using IPv6? ……. structsockaddr_in6 server_addr; ……. server_addr.sin6_family = AF_INET6; server_addr.sin6_len = sizeof (server_addr); server_addr.sin6_port = PORT# ……. IPv6 Address structure CS 547/490 Network Programming IPv6.PPT/038
How can we develop network applications using IPv6? socket (AF_INET, SOCK_STREAM, 0); Creating a socket (IPv4) socket (AF_INET6, SOCK_STREAM, 0); Creating a socket (IPv6) CS 547/490 Network Programming IPv6.PPT/039