IPv6 Application Programming Interface

2y ago
6 Views
2 Downloads
950.73 KB
68 Pages
Last View : 13d ago
Last Download : 3m ago
Upload by : Amalia Wilborn
Transcription

IPv6 Standard ApplicationProgramming- APT-NAv6 Center Joint Workshop on IPv6 -USAGI/WIDE Project / Keio UniversityYOSHIFUJI Hideaki yoshfuji@linux-ipv6.org hideaki@yoshifuji.org Copyright (C)2002, 2004, 2006 YOSHIFUJI Hideaki / USAGI/WIDE Project,All Rights Reserved.

Goal of This Session Learn Standard, Basic Socket API (RFC3493) Overview of specificationQuestion / Answers / DiscussionLearn Advanced Socket API (RFC3542) If time allowsOverview of specificationSlides and sample codes will be available Av6-IPV6-WORKSHOP/

Table of Contents IPv6-aware Network ApplicationProgramming Basic Socket API(RFC3493)Advanced Socket API(RFC3542)

Socket API Extensions for IPv6 Sockets Interface The de-facto standard Application Programming Interface(API) for TCP/IP applicationsdeveloped for Unix in the early 1980s, also beenimplemented on a wide variety of non-Unix systemsTCP/IP applications written using the sockets API have inthe past enjoyed a high degree of portabilityFor similar portability with IPv6 applications RFC3493 (Basic Socket Interface Extensions for IPv6)RFC3542 (Advanced Socket API for IPv6)

RFC3493Basic Socket Interface Extensions for IPv6 Source and binary compatibility Changes do not break existing programs Minimum changes to the API Simplify the task of conversion Interoperability with IPv6 and IPv4 hosts Applications do not need to know which type ofhost they are communicating with 64-bit allignment MT-Safe

Compoments of Basic APIExtentions Core socket functionsAddress data structuresName-to-address translation functionsAddress conversion functions

Core Socket Functions (1)int socket(int domain, int type, int protocol);int bind(int sockfd, struct sockaddr *myaddr,socklen t addrlen);int connect(int sockfd, const struct sockaddr *serv addr,socklen t addrlen);int accept(int sockfd, struct sockaddr *addr,socklen t *addrlen);int listen(int sockfd, int backlog);int getsockopt(int sockfd, int level, int optname,void *optval, socklen t *optlen);int setsockopt(int sockfd, int level, int optname,const void *optval, socklen t optlen);

Core Socket Functions (2) Protocol independent framework Protocol and/or address family numberPointer to the socket address structure (via opaquesockaddr{}) and its length protocol/address family number and protocolspecific socket address structure defined for eachprotocol No need to change this framework New address family: AF INET6 Usually, PF INET6 equals to AF INET6New socket options to support new functions

Address Structure(1) IPv6 address structurestruct in6 addr {uint8 t s6 addr[16];}; Trivial, no scope informationQuestion 1 Definition on your system What you should note

Address Structure(2)IPv6 socket address structure struct sockaddr in6 {sa family tsin6 family;in port tsin6 port;uint32 tsin6 flowinfo;struct in6 addr sin6 addr;uint32 tsin6 scope id;};/*/*/*/*/*AF INET6 */port number */flow information */IPv6 address */Scope Identifier */ Used in (most of) socket API AF INET6 IPv6 address family number In most systems, PF INET6 is defined as AF INET6IPv6 address alligned on 64-bit boundaryFlow information and spope information

Address Structure(3) Storage for all socket address structures#define SS MAXSIZE#define SS ALIGNSIZE128(sizeof (int64 t))/* maxumum size *//* desired alignment */#define SS PAD1SIZE( SS ALIGNSIZE - sizeof(sa family t))#define SS PAD2SIZE( SS MAXSIZE - (sizeof(sa family t) \SS PAD1SIZE SS ALIGNSIZE))struct sockaddr storage {sa family t ss family;charss pad1[ SS PAD1SIZE];int64 tss align;charss pad2[ SS PAD2SIZE];}; /* address family *//* force allignment */Storage for all socket address structures on the systemaligned on 64-bit boundary (w/ systems supporting IPv6)

Question 2: Address Structuresa)Look into the actual definitions of in6 addr{},sockaddr in6{} netinet/in.hb)Discuss what we should note

Question 3: Core Socket Functions Refer the following and make it support IPv6int s;struct sockaddr in sn;s socket(AF INET, SOCK STREAM, 0);/* setup sn */if (connect(s, (struct sockaddr*)sn, sizeof(sn)) 0)perror(“connect”);/* . */

Trivial Usage of Core Socket API IPv4:int s;struct sockaddr in sn;s socket(AF NET, SOCK STREAM, 0);/* setup sn */connect(s, (struct sockaddr*)sn, sizeof(sn));/* . */ IPv6:int s;struct sockaddr in6 sn;s socket(AF INET6, SOCK STREAM, 0);/* setup sn */connect(s, (struct sockaddr*)sn, sizeof(sn));/* . */

Compatibility with IPv4 Nodes ::ffff: IPv4-address Providing ability for IPv6 applications to interoperatewith IPv4 applications IPv4-mapped addressAll IPv4 addresses are mapped on IPv6 address spacee.g. 192.168.0.1 ::ffff:192.168.0.1Specify the destination, to connect() or sendto()Getting peer information via accept(), recvfrom(),getpeername()Do not need to open socket for each protocolNote: IPv4-mapped address is not always available.

IPv4-mapped Address Pros/Cons Pros Easy to convert IPv4 applications to IPv6Cons Complexity of kernelComplexity of access control People usually build access control using IPv4 addressNote: “Some” systems do not support this. OpenBSD, NetBSD (by default), FreeBSD 6.x (bydefault), Windows

Special Address Definitions IPv6 Wildcard Address(::) const struct in6 addr in6addr any; // assignmentIN6ADDR ANY INIT sin6.sin6 addr in6addr any;struct in6 addr in6 IN6ADDR ANY INIT;//initializationIPv6 Loopback Address(::1) const struct in6 addr in6addr loopback; sin6.sin6 addr in6addr loopback;//assignmentIN6ADDR LOOPBACK INIT struct in6 addr in6 IN6ADDR LOOPBACK INIT; //initialization

New Socket Options IPV6 UNICAST HOPS Controls the hop limit used in outgoing unicast IPv6 packetsIPV6 MULTICAST IF Set the interface to use for outgoing multicast packetsIPV6 MULTICAST HOP Set the hop limit to use for outgoing multicast packets Default: 1IPV6 MULTICAST LOOP Loopback a copy of the datagram if the host itself joins the destination group ofthe outgoing multicast packet. Default: 1IPV6 JOIN GROUP / IPV6 LEAVE GROUP Joint / Leave a multicast group on a specified local interface Note: New IGMPv3/MLDv2 Interface is also availableIPV6 V6ONLY Restricts AF INET6 sockets to IPv6 communication onlyDefault: 0 Note: on some systems, default is 1.

Requirements of Name-ConversionFunctions Protocol IndependentFlexibilityMT-Safety

Historical Name-vs-AddressTranslation Functions Name to addressstruct hostent *gethostbyname(const char *name); Address to namestruct hostent *gethostbyaddr(const char *addr,int len, int type); Host entry structurestruct hostent {char *h name;char **h aliases;charh addrtype;inth length;char **h addr list;}; /*/*/*/*/*official name */alias list */type of address: AF xxx */length of the address: 4 for IPv4 */list of addresses from name server */Issues The structure itself is af-independent, but gethostbyname(). Unflexible – no searching optionsNot MT-safe

Historical Name-vs-AddressTranslation Functions (2) Name to addressstruct hostent *getipnodebyname(const char *name, int af, int flags,int *error num); Address to namestruct hostent *getipnodebyaddr(const void *src, size t len, int af,int *error num);Pros Support both IPv6/IPv4 in similar semantics of gethostby{name,addr}() Searching optionsAI DEFAULT to the flags for standard queryNumeric address, IPv4-mapped addressMT-Safe Free memory be freehostent()Cons No scopes Uneasy to create socket Not widely deployed, deprecated now

Question 4 Convert obs-client.c and obs-server.c tosupport IPv6 Hint: Use AI DEFAULT for flags

Name-vs-Address Translation Functions(Protocol Independent) Name to addressint getaddrinfo(const char *nodename,const char *servname,const struct addrinfo *hints,struct addrinfo **res); Address to nameint getnameinfo(const struct sockaddr *sa,socklen t salen,char *host, size t hostlen,char *serv, size t servlen,int flags);

getaddrinfo()int getaddrinfo(const char *nodename, const char *servname,const struct addrinfo *hints,struct addrinfo **res);struct addrinfo {intai flags;/* flags */intai family;/* protocol family PF xxx */intai socktype; /* socket type SOCK xxx */intai protocol; /* protocol type; IPPROTO xxx in IP */socklen tai addrlen;/* length of socket address structure */char*ai canonname; /* canonical name of the node */struct sockaddr *ai addr;/* socket address structure */struct addrinfo *ai next;/* next address information in the list */}; Protocol independent Name-to-address translation functionSearch by node name, service name and searching optionsSocket address structure instead of raw address structureScope informationMT-Safe

Options of getaddrinfo() (1) ai flags AI PASSIVE: socket address returned from the functionwill be used for bind(). AI CANONNAME: Request canonical name of the node switch for nodename NULLResult stored in the first element in the listAI NUMERICHOST / AI NUMERICSERV: Assumenodename / servname as numeric address and do notlook up nodename / servnameAI ADDRCONFG: Search for addresses if local addressfor the corresponding protocol is available

Options of getaddrinfo() (2) Searching options NULL in nodename denotes loopback or wildcard do not search service if servname is NULL wildcard if AI PASSIVE, otherwise loopbacknumeric address allowed(e.g. “::1”)numeric service allowed(e.g. “80”)AF UNSPEC in ai family, 0 in ai socktype, ai protocolmeans caller does not care.

Result of getaddrinfo() (1) Return value 0 if succeeded Dynamically allocated result returned via res freeaddrinfo(): free resultOtherwise getaddrinfo-specific error code EAI FAMILY, EAI NONAME, EAI SERVICE etc.gai strerror(): human readable string for error codeResult comes with information required to createsocket and to connect (or to bind) Address family, socket type, protocol, and length of thesocket address structureYield differences among address families / protocols

Result of getaddrinfo() (2)

Usage of addrinfo{}

Example of getaddrinfo() for Clientsstruct addrinfo hints, *res, *ai;int s;memset(&hints, 0, sizeof(hints));hints.ai family PF UNSPEC;hints.ai socktype SOCK STREAM;hints.ai protocol IPPROTO TCP;if (gai getaddrinfo(name, service, &hints, &res)) {printf("getaddrinfo failed: %s\n", gai strerror(gai)); return -1;}for (ai res; ai ! NULL; ai ai- ai next) {s socket(res- ai family, res- ai socktype, res- ai protocol);if (s 0) continue;if (connect(s, ai- ai addr, ai- ai addrlen) 0) {close(s);s -1;continue;}break;}freeaddrinfo(res);return s;

Example of getaddrinfo() for Serversstruct addrinfo hints, *res, *ai;int s;memset(&hints, 0, sizeof(hints));hints.ai family PF UNSPEC;hints.ai socktype SOCK STREAM;hints.ai protocol IPPROTO TCP;hints.ai flags AI PASSIVE;gai getaddrinfo(name, service, &hints, &res);if (gai) {printf("getaddrinfo failed: %s\n", gai strerror(gai));return NULL;}

Example of getaddrinfo() for Servers(cont'ed)for (ai res; ai ! NULL; ai ai- ai next) {s socket(ai- ai family, ai- ai socktype,ai- ai protocol);if (s 0) continue;if (bind(s, ai- ai addr, ai- ai addrlen) 0) {close(s);s -1;continue;}break;}freeaddrinfo(res);

Note on Servers Semantics (or policy) of bind(2) is verydifferent aming systems AF INET6 and AF INET share portsAF INET6 and AF INET share ports unlessAF INET6 socket does not set IPV6 V6ONLYAF INET6 and AF INET share ports, butautomatically separatedThus, how to listen is different among systems

getnameinfo()int getnameinfo(const struct sockaddr *sa, socklen t salen,char *host, socklen t hostlen,char *serv, socklen t servlen,int flags);#define NI MAXHOST 1025#define NI MAXSERV32 Address-to-name translation functionExtract node name, service name from socket address structureand put in human readable formatNot an address structure but a socket address structure support scope architecture e.g. “ff02::1%link0”, “fec0::1%site0”MT-SafeNI MAXHOST, NI MAXSERV: size enough for host, serv

Options for getnameinfo() Search options flags NI NOFQDN: only the node name portion of the FQDN forlocal hosts NI NAMEREQD: return an error if the host's name cannot belocated Default: FQDNDefault: return in numeric formNI NUMERICHOST: Always return in numeric formNI NUMERICSERV: Always return in numeric formNI DGRAM: Look up service for datagram protocol(especially UDP)

Example of getnameinfo()int s; /* socket */ssize t cc;char buf[256];struct sockaddr storage ss;socklen t sslen sizeof(ss);char hbuf[NI MAXHOST], serv[NI MAXSERV];sslen sizeof(ss);cc recvfrom(s, buf, sizeof(buf),(struct sockaddr *)&ss, &sslen);if (cc 0 &&getnameinfo((struct sockaddr *)&ss, sslen,hbuf, sizeof(hbuf), pbuf, sizeof(pbuf),NI NUMERICHOST NI NUMERICSERV) 0) {printf(“%d bytes from %s port %s\n”,(int)cc, hbuf, pbuf);}

Question 5: getaddrinfo() Check if the given address (or port) is validnumeric addressPort number is defined as macro Port number is given via variable #define PORT HTTP “80”in port t port http 80;The “loopback” address for given familyThe “unspecified” address for give family

Question 6: getnameinfo() Given socket address structure, extract portnumberGiven socket address structure, make anothersocket address structure with different portnumber

Question 7: Double Reverse Lookup Given socket address structure Reverse look it upcheck if the address is associated with the nameDiscussion

Interfaces Name-to-indexunsigned int if nametoindex(const char *name); Index-to-namechar ifname[IF NAMESIZE];char *if indextoname(unsigned int ifindex, char *ifname); All interfaces names and indexesstruct if nameindex *if nameindex(void);wherestruct if nameindex {unsigned int if index; /* 1, 2, . */char*if name; /* null terminated name: "lo", . */}; Free memoryvoid struct if freenameindex(struct if nameindex *ptr)Free the dynamic memory allocated by if nameindex()

Address conversion functions Binary-to-textint inet pton(int af, const char *src, void *dst); Text-to-binaryconst char *inet ntop(int af, const void *src,char *dst, size t size);Note: Only standard Ipv6 dotted-decimal format isaccepted; it DOES NOT accept octal numbers,hexadecimal numbers, and fewer than 4 numbers Maximum size for address string (incl. NUL)#define INET ADDRSTRLEN#define INET6 ADDRSTRLEN1646

Address Testing Macros/* Test special addresses */int IN6 IS ADDR UNSPECIFIEDint IN6 IS ADDR LOOPBACKint IN6 IS ADDR MULTICASTint IN6 IS ADDR LINKLOCALint IN6 IS ADDR SITELOCALint IN6 IS ADDR V4MAPPEDint IN6 IS ADDR tstructin6 addrin6 addrin6 addrin6 addrin6 addrin6 addrin6 addr*);*);*);*);*);*);*);IN6 IS ADDR MC NODELOCAL(constIN6 IS ADDR MC LINKLOCAL(constIN6 IS ADDR MC SITELOCAL(constIN6 IS ADDR MC ORGLOCAL (constIN6 IS ADDR MC GLOBAL(conststructstructstructstructstructin6 addrin6 addrin6 addrin6 addrin6 addr*);*);*);*);*);

Summary of Basic Socket API RFC3493: Basic Socket Interface Extensions forIPv6Core socket functions and address structures PF INET/AF INET - PF INET6/AF INET6in addr{} - in6 addr{}sockaddr in{} - sockaddr in6{}Protocol independent programming getaddrinfo(), getnameinfo() Protocol independentScopesockaddr storage{} Storage for all socket address structures

Note on Portability Old systems do not have modern functions,such as getaddrinfo()/getnameinfo() Use tiny alternative implementation e.g. OpenSSHGNU autoconf, and preprocessor are your friends

Target of Advanced Socket API Basic Socket API For TCP and UDP-based applicationsAdvanced Socket API Raw sockets For ICMPv6 ping, traceroute IPv6 header, extension headers routing daemons

Advanced Socket API Basic constants and structuresBasic semantic definitionsPacket information interface, local address, hop limitAccess to the optional hop-by-hop options,destination options, routing headerAdditional features for improved applicationportability

IPv6 Structures IPv6 Header Hop-by-hop / destination options headers struct ip6 hbh{}struct ip6 dest{}Routing header struct ip6 hdr{}struct ip6 rthdr{}, struct ip6 rthdr0{}Fragment header struct ip6 frag{}

Next Header Values and Protocol Names Constants / names for getprotobyname(3) IPPROTO HOPOPTSIPPROTO IPV6IPPROTO ROUTINGIPPROTO FRAGMENTIPPROTO ESPIPPROTO AHIPPROTO ICMPV6IPPROTO NONEIPPROTO DSTOPTS/ hopopt/ ipv6/ ipv6-route/ ipv6-frag/ esp/ ah/ ipv6-icmp/ ipv6-nonxt/ ipv6-opts

ICMPv6 StructuresICMPv6 Headerstruct icmp6 hdr{} Router Solicitation/Router Advertisement Messagestruct nd router solicit{}, struct nd router advert{}; Neighbor Solicitation/Neighbor Advertisement Messagestruct nd neighbor solicit{}, struct nd neighbor advert{}; Redirect Messagestruct nd redirect{}; Neighbor Discovery Optionsstruct nd opt hdr{};struct nd opt prefix info{}, struct nd opt rd hdr{}, struct nd opt mtu{};

ICMPv6 Type/Code Errors ICMP6 DST UNREACH ICMP6 PACKET TOO BIGICMP6 TIME EXCEEDED ICMP6 PARAMPROB {HEADER,NEXTHEADER,OPTION}Echo ICMP6 TIME EXCEED {TRANSIT,REASSEMBLY}ICMP6 PARAM PROB ICMP6 DST UNREACH {NOROUTE,ADMIN,ADDR,NOPORT}ICMP6 ECHO REQUESTICMP6 ECHO REPLYMulticast Listeners Discovery ICMP6 MEMBERSHIP QUERYICMP6 MEMBERSHIP REPORTICMP6 MEMBERSHIP REDUCTION

ICMPv6 Neighbor Discovery Types ND ROUTER SOLICITND ROUTER ADVERTND NEIGHBOR SOLICITND NEIGHBOR ADVERTND REDIRECTCode is always 0Options ND OPT SOURCE LINKADDR ND OPT TARGET LINKADDR ND OPT PREFIX INFORMATION ND OPT REDIRECTED HEADER ND OPT MTU

Checksum Checksum incorporates the IPv6 pseudo-headerintoffset 2;setsockopt(fd, IPPROTO IPV6, IPV6 CHECKSUM,&offset, sizeof(offset));offset is where the checksum is located -1 to disable checksummingNotes Only for raw sockets other thant ICMPv6 sockets Odd is invalid

ICMPv6 Type FilteringFiltering ICMPv6 messages by the type fieldstruct icmp6 filter;/* initialization */void ICMP6 FILTER SETPASSALL (struct icmp6 filter *);void ICMP6 FILTER SETBLOCKALL(struct icmp6 filter *);/* pass/filter one-by-one */void ICMP6 FILTER SETPASS ( int, struct icmp6 filter *);void ICMP6 FILTER SETBLOCK( int, struct icmp6 filter *);/* test if specified message */int ICMP6 FILTER WILLPASS (int, const struct icmp6 filter *);int ICMP6 FILTER WILLBLOCK(int, const struct icmp6 filter *);Examplestruct icmp6 filter myfilt;fd socket(AF INET6, SOCK RAW, IPPROTO ICMPV6);ICMP6 FILTER SETBLOCKALL(&myfilt);ICMP6 FILTER SETPASS(ND ROUTER ADVERT, &myfilt);setsockopt(fd, IPPROTO ICMPV6, ICMP6 FILTER, &myfilt, sizeof(myfilt));

Optional Information in IPv6 andExtension Headers Send/Receive interface and source/destinationaddressHop limitNext hop addressTraffic classExtension headers Hop-by-hop options headerDestination options header(s)Routing header

Access to Optional Information Receiver side Ancillary dataSender side Sticky optionsAncillary data

Receiving Optional Information viaAncillary Data (1) Socket options to receive optional information IPV6 RECVPKTINFO interface, local addressIPV6 RECVHOPLIMITIPV6 RECVRTHDRIPV6 RECVHOPOPTSIPV6 RECVDSTOPTSIPV6 RECVTCLASSUsagesetsockopt(sock, IPPROTO IPV6, IPV6 xxx, on, sizeof(on));

Receiving Optional Information viaAncillary Data (2)cmsg level-----------IPPROTO IPV6IPPROTO IPV6IPPROTO IPV6IPPROTO IPV6IPPROTO IPV6IPPROTO IPV6cmsg type-----------IPV6 PKTINFOIPV6 HOPLIMITIPV6 NEXTHOPIPV6 HOPOPTSIPV6 DSTOPTSIPV6 RTHDRcmsg data[]-----------------in6 pktinfo{}intsockaddr in6{}ip6 hbh{}ip6 dst{}ip6 rthdr{}

Sending Optional Information viaAncillary Datacmsg level-----------IPPROTO IPV6IPPROTO IPV6IPPROTO IPV6IPPROTO IPV6IPPROTO IPV6IPPROTO IPV6IPPROTO IPV6cmsg type-----------IPV6 PKTINFOIPV6 HOPLIMITIPV6 NEXTHOPIPV6 HOPOPTSIPV6 RTHDRDSTOPTSIPV6 RTHDRIPV6 DSTOPTScmsg data[]-----------------in6 pktinfo{}intsockaddr in6{}ip6 hbh{}ip6 dst{}ip6 rthdr{}ip6 dst{}

Sending Optional Information viaSocket Options Sticky options to send optional information IPV6 PKTINFOIPV6 HOPLIMITIPV6 RTHDRIPV6 HOPOPTSIPV6 DSTOPTSIPV6 RTHDRDSTOPTSIPV6 TCLASSData are the same ones for ancillary data

Helpers for IPv6 Options (1) int inet6 opt init(void *extbuf, socklen t extlen); Initialize buffer data for options headerint inet6 opt append(void *extbuf, socklen t extlen,int offset, uint8 t type, socklen t len,uint t align, void **databufp); Add one TLV option to the option headeruint8 t *inet6 opt finish(void *extbuf, socklen t extlen,int offset); Finish adding TLV options to the options headerint inet6 opt set val(void *databuf, int offset, void *val,socklen t vallen); Add one component of the option content to the option

Helpers for IPv6 Options (2) int inet6 opt next(void *extbuf, socklen t extlen, int offset,uint8 t *typep, socklen t *lenp,void **databufp); Extract the next option from the options headerint inet6 opt find(void *extbuf, socklen t extlen, int offset,uint8 t type, socklen t *lenp,void **databufp); Extract an option of a specified type from the headerint inet6 opt get val(void *databuf, int offset, void *val,socklen t vallen); Retrieve one component of the option component

Helper for Routing Header (1) size t inet6 rth space(int type, int segments); Return size required for routing headerstruct cmsghdr *inet6 rth init(void *bp,socklen t bp len,int type,int segments); Initialize buffer data for routing headerint inet6 rth add(void *bp, const struct in6 addr *addr);Add one Ipv6 address to the routing header

Helper for Routing Header (2) int inet6 rth reverse(const void *in, void *out); int inet6 rth segments(const void *bp); Reverse a routing headerReturn number of segments in a routing headerstruct in6 addr *inet6 rth getaddr(const void *bp,int index); Fetch one address from a routing header

Path MTU Discovery IPV6 USE MIN MTU-1: Disable PMTUD for multicast but unicast0 : Enable PMTUD1 : Disable PMTUDNote: when disabled, IPv6 Minimum Link MTU (1280)is used

Fragmentation IPV6 DONTFRAGIPV6 RECVMTU / IPV6 MTU To receive Path MTU informationstruct ip6 mtuinfo{struct sockaddr in6 ip6m addr;uint32 t ip6m mtu;};

Summary of Advanced Socket API Supplement to the Basic API Raw sockets Protocol numbers and namesIPv6 header / extension headersChecksummingPath MTU discovery / fragmentationOutgoing/Incoming InterfaceAdditional extensions IN6 ARE ADDR EQUAL()rresvport af(), rcmd af(), rexec af()

Question 8 Discuss ip6 mtuinfo{}Discuss positive odd value forIPV6 CHECKSUM

Summary Overview of IPv6 Application ProgrammingPeople do not need to know the addressstructures in detail any longerPortability is importantHowever, semantics might be different amongsystems.GNU autoconf is your friend

Socket API Extensions for IPv6 Sockets Interface The de-facto standard Application Programming Interface (API) for TCP/IP applications developed for Unix in the early 1980s, also been implemented on a wide variety of non-Unix systems TCP/IP applications written using the sockets

Related Documents:

ipv6 hello-interval eigrp 10 1. ipv6 hold-time eigrp 10 3. ipv6 authentication mode eigrp 10 md5. ipv6 authentication keychain - eigrp 10 eigrp. interface Vlan4. description Data VLAN for Access: ipv6 address 2001:DB8:CAFE:4::2/64. ipv6 nd prefix 2001:DB8:CAFE:4::/64 no-advertise. ipv6 nd managed-config-flag. ipv6 dhcp relay destination 2001 .

LAB 20: IPv6 EIGRP Summarization Task 1: Configure IPv6 EIGRP Summarization Step 1 In the configuration mode of router configure 4 loopbacks with IPv6 network address in sequence R1: interface loopback 1 ipv6 address 11:0:0::1/64 exit interface loopback 2 ipv6 address 11:0:1::1/64 exit interface loopback 3 ipv6 address 11:0:2::1/64

Task 1: Configure IPv6 OSPF Summarization Step 1 In the configuration mode of router configure 4 loopbacks with network address in sequence R1: interface loopback 0 ipv6 address 11:0:0::1/64 exit interface loopback 1 ipv6 address 11:0:1::1/64 exit interface loopback 2 ipv6 address 11:0:2::1/64 exit interface loopback 3 ipv6 address 11:0:3::1/64 .

Note that by configuring an IPv6 address you will have a global or unique-local IPv6 address and a link-local IPv6 address which is FE80::interface-id The local-link IPv6 address is constructed automatically by concatenating FE80 with Interface ID as soon as IPv6 is enabled on the interface either by assigni

LAB 18: IPv6 OSPF Summarization on ASBR Task 1: Configure IPv6 OSPF Summarization Step 1 In the configuration mode of router configure 4 loopbacks with network address in sequence R1: interface loopback 100 ipv6 address 100:0:0::1/64 exit interface loopback 101 ipv6 address 100:0:1::1/64 exit interface loopback 102 ipv6 address 100:0:2::1/64

Legacy Applications ported to run over IPv6 – Usable also where there is IPv6 infrastructure New Applications developed for use over IPv4, IPv6 or coupled IPv4/IPv6 infrastructure – Requires transition tools of course New Applications developed for use over IPv4, IPv6 or coupled; uses potential of IPv6, runs over IPv4

Structure of IPv6 Protocol IPv4 and IPv6 Header Comparison IPv6 Extension Headers IPv6 Addressing Addressing Format Types of IPv6 addresses. 3 ICMPv6 and Neighbor Discovery Router Solicitation & Advertisement Neighbor Solicitation & Advertisement Duplicate Address Detection Multicast in IPv6 DHCP & DNS for IPv

7 IPv6 Technology IPv6 Benefits A summary of the Benefits of IPv6 are as follows: Scalability IPv6 has 128-bit address space, which is 4 times wider in bits in compared to IPv4's 32-bit address space. Security IPv6 includes security in the basic specification. IPv6 includes a Flow