IBM z/OS Communications Server IPv6 Support Linda Harrison lharriso@us.ibm.com 1 Agenda ● ● ● ● ● ● ● ● ● ● IPv6 History, Address, Protocol IPv6 Support in z/OS and Dual-Mode Stack (BPXPRMxx) PROFILE.TCPIP Routing Resolver FTP Enterprise Extender inetd SMF More Information 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 2 2 IPv6 History, Address, and Protocol 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 3 3 Total IP Addresses ● ● IPv4 Address example 100.114.165.211 • Started to be used in 1970s and 80s ➔ United States has the bulk of the IPv4 Addresses • 32-bit address means around 4,200,000,000 nodes • Network Address Translation (NAT) increases total nodes • Huge routing tables on Internet Routers (backbone) IPv6 Address example 2001:0DB8:0000:000:0206:2AFF:FE71:4400 • Started to be used in 1990s • 128-bit address means around 340 (billion)4 addresses • Routing Tables Manageable through CIDR ➔ Classless InterDomain Routing (CIDR) manages the routing, reducing the size of the routing tables on the backbone. CIDR aggregates sets of routes into a single route by using the common, highest-level denominator for the sets of routes. CIDR is also referred to as "supernetting." 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 4 4 IPv4 vs. IPv6 IPv4 IPv6 Addressing 32 bits (4 bytes) 4,200,000,000 addresses 128 bits (16 bytes) 340 (billion4) addresses Communicating to all on subnet Broadcast Addresses Scoped Multicast Addresses Fragmentation Supported at originating and intermediate nodes Supported only at originating nodes Checksum Included in IP Header Not included in IP Header IPSec Optional Included as part of IPV6 Discovery of best default gateway Optional (with ICMP Route Discovery) Included – ICMPv6 Router Solicitation and Router Advertisement Resolving IP layer address to link layer address ARP (Address Resolution Protocol) Multicast Neighbor Solicitation Messages Local Subnet Group Membership Internet Group Management Protocol (IGMP) Multicast Listener Discovery (MLD) Address Configuration Manually or through DHCP Automatically assigned via stateless address configuration or DHCPv6 or manually DNS Configuration “A” records for host name/address mapping, “PTR” records in INADDR.ARPA domain address/name mapping “AAAA” or “A6” records for name/address mapping, “PTR” records in IP6.ARPA or IP6.INT domain for address/name mapping QoS Support Differentiated and Integrated Services Differentiated and Integrated Services, also Flow Label for more granularity Payload Identification for QoS Not included in IP Header Included in Flow Label 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 5 This chart represents a summary of the information present in Table 1 of the IPv6 Network and Application Design Guide (SC27-3663). DHCP and DHCPv6 are not supported on z/OS. Additional differences... IP Header Format IPv4 -- Variable: Min of 20 Bytes + Options IPv6 -- 40 Bytes IP Options IPv4 -- Part of IP Header IPv6 -- Inserted as Extensions between IP Header and Payload QoS, DHCPv6, and Mobility are not part of the Implementation of IPv6. The Internet Assigned Numbers Authority (IANA) website includes the pointers to the most up-to-date information on IPv6: www.iana.org Some IPv6 RFCs from the IANA website: RFC 3330 - Special-Use IPv4 Addresses RFC 3177 - IAB/IESG Recommendations on IPv6 Address Allocations to Sites RFC 2928 - Initial IPv6 Sub-TLA ID Assignments RFC 2450 - Proposed TLA and NLA Assignment Rules RFC 2373 - IP Version 6 Addressing Architecture RFC 2050 - Internet Registry IP Allocation Guidelines RFC 1918 - Address Allocation for Private Internets RFC 1518 - An Architecture for IP Address Allocation with CIDR IPv6 provides for both stateless and stateful autoconfiguration. Stateless autoconfiguration allows a node to be configured in the absence of any configuration server. Stateless autoconfiguration further makes it possible for a node to configure its own globally routable addresses in cooperation with a local IPv6 router by combining the 64-bit Interface ID (48-bit MAC address plus random number) of the adapter with network prefixes that are learned from the neighboring router. IPv6 allows the use of DHCPv6 for stateful autoconfiguration. DHCPv6 relies on a configuration server that maintains static tables to determine the addresses that are assigned to newly connected nodes. z/OS CS does not support DHCPv6. Manual configuration of addresses may be used in environments where complete local control is required (ie. VIPA or LOOPBACK). 5 IP Address Structure ● IPv4 Dotted Decimal • • ● Documented in RFC 1166 9.67.122.66 IPv4 Address/Subnet Mask: 9.67.122.66/8 IPv6 Colon-Hexadecimal • Documented in RFC 3513 ➔ • • 0000:0000:0000:0000:0000:0000:0000:0001=::1 Can skip one sequence of zero words leaving two colons: ➔ • Supersedes RFC 2373 IPv6 Address: 2001:0DB8:0000:0000:0206:2AFF:FE71:4400 Can eliminate leading zeroes: ➔ ● IPv4 Address: 9.67.122.66 2001:0DB8:0000:000:0206:2AFF:FE71:4400=2001:DB8::206:2AFF:FE71:4400 Can specify a prefix by "/length" 2001:0DB8::/64 04/13/14 IPv6 Address/Prefix-Length: 2001:0DB8:0000:0000:0206:2AFF:FE71:4400/64 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 6 IPv4 addresses are represented in dotted-decimal format. The 32-bit address is divided along 8-bit boundaries. Each set of 8 bits is converted to its decimal equivalent and separated by periods. Each IP address consist of an IP network id and an IP host id on that IP network. In contrast, IPv6 addresses are 128 bits divided along 16-bit boundaries. Therefore, IPv6 notation is eight 16 bit integers separated by colons. Each 16-bit block is converted to a 4-digit hexadecimal number -- still separated by colons. One group of multiple zeroes can be represented with a double colon. Leading zeroes within each individual field can be omitted. The resulting representation is called colon-hexadecimal. 6 Types of IPv6 Addresses ● FF00::/8 • ● • • ● • • • • • 2001:0DB8::0206:2AFF:FE71:4400/64 Represented by :: (0000:0000:0000:0000:0000:0000:0000:0000) Cannot be used as destination address :: Must never be assigned to any node Represented by ::1 (0000:0000:0000:0000:0000:0000:0000:0001) Used by a node to send an IPv6 packet to itself ::1 Must never be assigned to any physical interface IPv4-mapped IPv6 address: • • • • ● Global Scope unicast addresses are everything else Will be passed by any router; can be routed anywhere Loopback address • ● FE80::99:1AC6:77:9/16 Link-Local Scope unicast addresses all begin with "FE80" Will not be passed by any router (local to the LAN that it is attached to) Unspecified address (similar to IPv4 inaddr_any) • ● FF02::1 Anything else • ● Multicast addresses all begin with "FF" FE80::/16 Represented by ::FFFF:a.b.c.d (9.67.115.69 = ::FFFF:9.67.115.69) or ::FFFF:<hex>:<hex> (9.67.115.69 = ::FFFF:0943:7345) IPv6 address with IPv4 address embedded Not sent onto the network by z/OS IPv4-compatible IPv6 address: represented by ::a.b.c.d • • Not supported in z/OS Such addresses typically used for tunneling IPv4 across IPv6 network 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation ::FFFF:9.67.115.69 ::FFFF:0943:7345 ::9.67.115.69 Page 7 IPv4 addresses are represented in dotted-decimal format. The 32-bit address is divided along 8-bit boundaries. Each set of 8 bits is converted to its decimal equivalent and separated by periods. Each IP address consist of an IP network id and an IP host id. In contrast, IPv6 addresses are 128 bits divided along 16-bit boundaries. Therefore, IPv6 notation is eight 16 bit integers separated by colons. Each 16-bit block is converted to a 4-digit hexadecimal number. One group of multiple zeroes can be represented with a double colon. Leading zeroes within each individual field can be omitted. The resulting representation is called colon-hexadecimal. Unicast addresses identify a single interface. A packet sent to a unicast address is delivered to the interface identified by that address. This is the same concept with which you are already familiar in IPv4. Anycast addresses identify a set of interfaces (typically different nodes). A packet sent to an anycast address is delivered to one of the interfaces identified by that address (the "nearest" one). Concept not used in IPv4. Not part of z/OS IPv6 support either. Multicast addresses identify a set of interfaces (typically different nodes). A packet sent to a multicast address is delivered to all interfaces identified by that address. This is the same concept as in IPv4. Routing protocols like RIP and OSPF use multicast addresses, but so can other applications. All Multicast control information flows using ICMPv6 instead of IPv4 Internet Group Management Protocol (IGMP). There are no broadcast addresses in IPv6, their function is replaced by multicast addresses. CS allows the customer to assign other LOOPBACK addresses for IPv6. For IPv6, one interface can have multiple IP addresses. For IPv4 this is only supported for Loopback. IPv4-mapped IPv6 addresses - Only implementations that support Stateless IP/ICMP Translation Algorithm (SIIT), RFC 2765, should send outbound packets with IPv4mapped IPv6 addresses in the IP header. z/OS Communications Server does not support SIIT. - That is, z/OS does not support sending IPv4-Mapped IPv6 addresses out onto an attached network. - This address type is used to represent the addresses of IPv4 nodes as IPv6 addresses. - It is used when an IPv6 application needs to communicate with an IPv4 peer - Resolver can return IPv4-mapped IPv6 addresses. IPv4-mapped addresses can be written in two ways. IPv4 address 9.67.115.69 can be written as an IPv4-mapped IPv6 address: ::FFFF:0943:7345 (this is the hexadecimal notation) ::FFFF:9.67.115.69 (this is the dotted-decimal notation) IPv4-compatible IPv6 address (::<IPv4_address>) - Used when IPv6 traffic is tunneled across existing IPv4 networks. - Formed by placing 96 bits of zero in front of a valid 32-bit IPv4 address, such that address 1.2.3.4 becomes ::1.2.3.4 - IPv4-compatible IPv6 addresses are not included in the z/OS implementation. Link-local address: - Only used on the physical network that a host's interface is attached to. In IPv6 an interface can have multiple addresses. Aggregatable Global Unicast Address - Assigned to ISPs by International "Internet Registry Services" (IRS) ARIN Registry Services (American Registry for Internet Numbers) www.arin.net/library/guidelines/ipv6_initial.html (North America and Sub-Sahara Africa) RIPE-NCC Network Coordination Center in Europe (Reseau IP Europeans) www.ripe.net/ripencc/mem-services/reistration/ipv6.html (Europe, Middle East, Central Asia, and African north of the equator) APNIC Asia Pacific Network Information Center www.apnic.nbet/faq/IPv6-FAQ.html (LACNIC Regional Latin-American and Caribbean Address Registry) How to request Internet addresses in general? www.iana.org/ipaddress/ip-addresses.htm How to discover what has already been allocated? : www.iana.org/ipaddress/ip-addresses.htm How does a company or an end-user obtain an address? Consult with your ISP: AT&T, Verizon, etc. 7 Required Addresses for a Host ● • Its Link-Local Address for each interface ➔ • • • • • ● FE80::99:1AC6:77:9/16 Addresses identifying an IPv6 host: 2001:0DB8::99:1AC6:77:9/64 z/OS CS only allows a single link-local address per interface. ::1 Assigned Unicast Addresses (autoconfigured OR manually defined) FF02::1 Loopback Address (::1) The All-Nodes Multicast Address (FF02::1)(Routers FF02::2) Solicited Node Multicast Addresses for each of its assigned unicast and anycast addresses (FF02::1:FF00:0 - FF02::1:FFFF:FFFF) Multicast Addresses of all other groups to which the host belongs. Addresses identifying an IPv4 host: • • • • • 9.67.122.66 Assigned Unicast Addresses Loopback Address 127.0.0.1 Broadcast Address for each of its assigned unicast addresses 255.255.255.255 The All hosts Multicast Address Multicast Addresses of all other groups to which the host belongs 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 8 An IPv6 host is required to recognize a certain set of addresses as identifying itself. An IPv4 host is required to recognize a different list of addresses as identifying itself. There is no broadcast support in IPv6. It has been replaced with multicast for specific scopes. The Global Unicast Address must be requested from the ISP that services your company or your site; the ISP itself must request IPv6 addresses from an Internet Registry Services. Solicited Node Multicast Address - This address is formed by taking the low-order 24 bits of the address (unicast or anycast) and appending those bits to the prefix FF02:0:0:0:0:1:FF00::/104. - Range of addresses is FF02:0:0:0:0:1:FF00:0000 to FF02:0:0:0:0:1:FFFF:FFFF - A node is required to compute and join the associated Solicited Node multicast address for every unicast and anycast address it is assigned. The solicited-node multicast address facilitates the efficient querying of network nodes during address resolution. The following well-known multicast addresses are pre-defined. Use of these group IDs for any other scope values, with the T flag equal to 0, is not allowed: FF01::, FF02::, FF03::, FF04::, FF05::, FF06::, FF07::, FF08::, FF09::, FF0A::, FF0B::, FF0C::, FF0D::, FF0E::, and FF0F::. Unicast: - Assigned to one interface. Packets destined for a unicast address are sent to only one node. - Can be link-local scope, or global scope Multicast: - Provides a means for a source to communicate with a group Anycast - Special Type of Unicast - not used in CS for z/OS: - Allows the source to communicate with the closest member of a group Every IPv6 interface except VIPA and LOOPBACK will have an automatically generated link-local address. A packet with a link-local source or destination address will not leave a LAN. A router receiving the packet will not forward it. Link-local addresses are used for any kind of temporary network: Autoconfiguration, Neighbor discovery, Networks without routers. VIPAs and LOOPBACKs use global addresses. Global addresses can either be manually configured or autoconfigured dynamically. If a packet cannot be forwarded due to reaching a scope boundary, an ICMPv6 BEYOND SCOPE is returned. 8 ICMPv6 Neighbor Discovery (NeD) Router Advertisement Link-Local address Link-Layer (MAC) address Default Router Yes/No MTU Size Hop Limit Prefix Information for Routing and Autoconfiguration ● Router Discovery ● Prefix Discovery Parameter Discovery Address Autoconfiguration Address Resolution Next-Hop Determination Neighbor Reachability / Unreachability Detection Duplicate Address Detection (DAD) Redirect ● ● ● ● ● ● ● Neighbor Advertisement Link-Local address Link-Layer (MAC) address IPv6 Host IPv6 Host 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 9 Neighbor Discovery replaces several IPv4 protocols: ARP, ICMP Router Discovery and ICMP Redirect. Neighbor Discovery uses ICMPv6 rather than ARP. It enables a node to identify other hosts and routers on its links. It maintains routes, MTU, retransmit times, reachability time, and prefix information based on information received from the routers. NeD uses Duplicate Address Detection (DAD) to verify the host's home addresses are unique on the LAN. NeD uses Address Resolution to determine the link-layer addresses for neighbors on the LAN and Reachability Detection to determine neighbor reachability. Maintains information about neighbors in a local 'Neighbor Cache'. Router Discovery defines how hosts can automatically locate routers that reside on an attached link. ICMPv6 Router Solicitations / Advertisements are used to determine the best default gateway. Router Advertisements are sent by routers to announce their availability. z/OS receives Router Advertisements but does not originate them. Router Advertisements are the mechanism for plug and play. Prefix Discovery specifies how hosts discover the set of prefixes that are defined as being on-link (IPv6 address prefixes that reside on the shared link (ie.ethernet)), as well as those which are to be used when implementing Stateless Address Autoconfiguration. Parameter Discovery allows a host to learn link parameters, such as the link MTU, and IP parameters, such as the hop limit to place in outgoing packets. IPv6 provides for both stateless and stateful autoconfiguration. Stateless autoconfiguration allows a node to be configured in the absence of any configuration server. Stateless autoconfiguration further makes it possible for a node to configure its own globally routable addresses in cooperation with a local IPv6 router, by combining the 48- or 64-bit MAC address of the adapter with network prefixes that are learned from the neighboring router. IPv6 allows the use of DHCPv6 for stateful autoconfiguration. DHCPv6 relies on a configuration server that maintains static tables to determine the addresses that are assigned to newly connected nodes. z/OS does not support DHCPv6. Address resolution in IPv6 is similar to ARP processing in IPv4, except ICMP neighbor solicitations, neighbor advertisements, router redirects, and router advertisements are used to obtain the link-layer (MAC) address. Next-hop determination specifies the algorithm for mapping the IP destination address into the IP address of the neighbor to which traffic should be sent. Architected neighbor reachability/unreachability replaces old dead gateway logic. Neighbor unreachability detection is used to verify that two-way communication with a neighbor node exists. The host sends a neighbor solicitation to a node and waits for a solicited neighbor advertisement. Duplicate Address Detection (DAD) is used to verify that an IPv6 home address is unique on the LAN before assigning the address to a physical interface. z/OS responds to other nodes doing DAD for IP addresses assigned to the interface. DAD is not done for VIPAs or loopback addresses. A node may receive a Redirect message from an on-link router if the router determines that the destination is on-link or if there is a better first-hop router for the given destination. z/OS can be configured to ignore the IPv6 Redirects sent by routers by defining the IGNOREREDIRECT keyword on the IPCONFIG6 statement. If processing of Redirect messages is enabled, z/OS will begin using the new destination which is identified in the Redirect message. 9 IPv6 Support in z/OS and Dual-Mode Stack (BPXPRMxx) 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 10 10 z/OS IPv6 Enablement ● • • ● • • • • • • • • • ● IP Stack is IPv6-enabled Resolver DLC – QDIO Static Routing Static VIPA Support New IPv6 Socket APIs TCP/IP Utility Applications ➔ FTP (ftpd), inetd, ftp, telnetd, USS rshd, USS rexec, USS rexecd, ping, tracert, netstat Service Tools ➔ Netstat long format, Packet Trace, Dump Formatters, CTRACE, Data Trace • • • ● • • • • • • • • • • • 04/13/14 www.ibm.com/support/techdocs Document ● • • Configurable default address selection algorithm ➔ Prefer a temporary or public source addr Router advertisement enhancements IPv6 address support for DNS address z/OS V1R13 • ● Stateless Addr auto-configuration enhancements z/OS V1R12 • ● FRCA Resolver Enhancements z/OS V1R11 • ● Scoped Address support z/OS V1R10 • Network Management CICS Sockets Enterprise Extender (hostname) DLC - XCF, Samehost, Ficon (MPCPTP) OMPRoute RIPng Applications ➔ TN3270, syslogd, sntp, tftpd, rexecd/rshd, sendmail Policy Agent ➔ QoS (Differentiated Services) NetAccess SNMP MIBs SMF records Integrated filtering and IPSec RPCBIND server z/OS V1R9 • ● SNMP UDP MIBs Advanced Socket APIs (RFC3542) IPv6 Two Default Routers support DLC – HiperSockets z/OS V1R8 • ● Dynamic VIPA including Sysplex Distributor OMPROUTE OSPFv3 SNMP MIB enhancements z/OS V1R7 • z/OS V1R5 • z/OS V1R6 • BPXPRMxx Network AF_INET6 Socket calls support IPv4-mapped addrs z/OS V1R4 • ● ● OS/390 V2R10 Intrusion Detection Services (IDS) IPV6 Attacks support z/OS V2R1 • Enterprise Extender (IPv6 address) © 2014 IBM Corporation Page 11 With z/OS the only configuration statement required to enable IPv6 is the AF_INET6 NETWORK statement in BPXPRMxx. IPv6 applications communicating with IPv4 partners is functionally equivalent to IPv4 applications communicating with IPv4 partners. 11 z/OS IPv6 Enablement Applications AF_INET6 PFS IPv6 Raw Transport AF_INET PFS Common TCP and UDP Transport IPv4 Raw Transport ● IPv4 IPv6 ● IP Address translation IPv6 to IPv4 and vice versa occurs at the Transport Layer AF_INET6 Applications • NeD MLD Stateless autoconfig QoS TRM IDS ARP IGMP ICMP ● Raw Applications • ICMPv6 Firewall Functions ● Common DLC Functions ● IPv6 DLCs (QDIO) IPv4 DLCs Common TCP or UDP Transport Layer selects IPv6 or IPv4 Layer 3 (Network Layer) to match partner. Application itself selects Layer 3 Both IPv6 and IPv4 remote partners may connect to z/OS IPv6 application. Only IPv4 remote partner may connect to z/OS IPv4 only application. OSA QDIO IPv6 and IPv4 packets on the same LAN 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 12 z/OS Comm Server can be an IPv4-only stack or a dual-mode stack. There is no support for an IPv6 only stack. The dual-mode stack is also called the "dual stack." However, to avoid any ambiguity, it is probably best to call it a "dual-mode" stack, since, in the past we have often talked about "dual stacks" when discussing the coexistence of multiple stacks in a single MVS image. Physical File System (PFS) "AF_INET6." It can coexist with the AF_INET PFS that is available for IPv4. Both file systems are defined in BPXPRMxx. A dual-mode (or dual-stack) TCP/IP implementation supports both IPv4 and IPv6 interfaces; both old AF_INET and new AF_INET6 applications. If address translation is necessary because the network is IPv6 when the connection partners are IPv4, or because the network is IPv4 when the connection partners are IPv6, the transport layer provides the mapping services. For AF_INET6 applications, the common TCP or UDP transport layer determines per communication partner if the partner is an IPv4 or an IPv6 partner - and chooses IPv4 or IPv6 networking layer component based on that. Raw applications make the determination themselves when they choose IPv4 or IPv6 raw transport. IPv4 and IPv6 applications can coexist on a single dual stack. Unmodified applications continue to send data over the IPv4 network. A single application can communicate using IPv4 and IPv6; requires application modification. By default, IPv6 applications can communicate with both IPv4 and IPv6 peers. The socket option IPv6_V6ONLY makes an IPv6 application require all peers to be IPv6. 12 z/OS IPv6 Enablement IPv6 Enabled Applications AF_INET6 PFS IPv4 Only Applications AF_INET PFS Transport Layer IPv4 IPv6 Common DLC Functions IPv6 DLCs (QDIO) IPv4 DLCs OSA QDIO 9.67.115.5 2001:0DB8::9:67:115:5 2001:0DB8::9:67:115:17 04/13/14 9.67.115.69 Application IPv6 Source Address 2001:0DB8::9:67:115:17 Dest Address 2001:0DB8::9:67:115:5 Transport IPv6 Source Address 2001:0DB8::9:67:115:17 Dest Address 2001:0DB8::9:67:115:5 IPv6 Packet IPv6 Source Address 2001:0DB8::9:67:115:17 Dest Address 2001:0DB8::9:67:115:5 Application IPv4 Source Address ::FFFF:9.67.115.69 Dest Address ::FFFF:9.67.115.5 Transport IPv4 Source Address 9.67.115.69 --- ::FFFF:9.67.115.69 Dest Address 9.67.115.5 --- ::FFFF:9.67.115.5 IPV6 Packet IPv4 Source Address 9.67.115.69 Dest Address 9.67.115.5 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 13 An application that has bound to an IPv6 native address has to use some transition mechanism to be able to communicate with an IPv4 partner. IPv4-mapping is defined as the function of mapping an IPv4 address into the IPv6 address field of an AF_INET6 addressing structure. It is done at the transport protocol layer when the remote partner is an IPv4 partner. An IPv6 application on a dual-mode stack can communicate with IPv4 and IPv6 partners as long as it doesn't bind to a native IPv6 address. If it bound to a native IPv6 address, then it cannot communicate with an IPv4 partner, since the native IPv6 address cannot be converted to an IPv4 address. A 32-bit AF_INET address can always fit into an AF_INET6 address field. An IPV6 address cannot fit into an AF_INET address field. If the partner is IPv6, all communication will use IPv6 packets. If partner is IPv4 then both source/destination will be IPv4-mapped IPv6 addresses. On inbound the transport protocol layer will map the IPv4 address to its corresponding IPv4-mapped IPv6 address before returning to the application with AF_INET6 addresses. On outbound the transport protocol layer will convert the IPv4-mapped addresses to native IPv4 addresses and send IPv4 packets. 13 Application / Transport Layer Mapping AF_INET6 Socket AF_INET6 Socket AF_INET6 Socket AF_INET Socket AF_INET Socket IPv6 Specific Address in6addr_any IPv4 Mapped Address IPv4 Specific Address or inaddr_any ?????? IPv6 partner IPv4 IPv6 Mapped partner partner IPv4 Mapped partner IPv4 partner IPv6 partner IPv6 Packet IPv4 Packet IPv6 Packet IPv6 Routing IPv4 Routing IPv6 Routing An AF_INET (IPv4) Server program on a Dual-Mode stack cannot communicate with an IPv6-only partner because AF_INET cannot fit an IPv6 address into 32 bits. 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 14 AF_INET Sockets Only send using IPv4 packets AF_INET6 Sockets Bound to IPv4 mapped address Send IPv4 packets only Partner specified using an IPv4 mapped address Bound to IPv6 native address Send IPv6 packets only Partner specified using IPv6 address Bound to in6addr_any - (UDP - implicit Bind is done at send/connect time) Send IPv4 or IPv6 packet depending on how partner address is specified (IPv4 mapped or IPv6 native) Can receive IPv4 or IPv6 packets A listening TCP socket can receive both IPv4 and IPv6 SYNs. Note that when sending/receiving IPv4 packets, all existing V4 functions are supported - firewall, policy, sysplex etc. 14 BIND-Specific and PORT PROFILE.TCPIP PORT Statement PORT 2001 20 21 21 2020 2020 3001 3001 3001 3001 TCP TCP TCP TCP TCP TCP TCP TCP TCP TCP MYSERVER * NOAUTOLOG 1 NM1AFTP1 BIND 12AB::2 FTPD3 BIND 9.67.2.1 2 CICS1 SHAREPORT 3 CICS2 MYIP6AP1 SHAREPORT MYIP6AP2 4 MYIP4AP1 MYIP4AP2 1. Port reserved without regard to IPv4 and IPv6. 2. BIND forces server to listen only on a particular IPv4 or IPv6 address. ● One job for IPv4 clients ● One job for IPv6 clients 3. Shareport provides load balancing by the stack. 4. IPv4 clients are load-balanced to all IPv4 and IPv6 servers. NETSTAT PORTLIST MVS TCP/IP NETSTAT CS... Port# Prot User Flags Range ----- ---- ------- ----- ----00020 TCP NM1AFTP1 D 00021 TCP NM1AFTP1 DAB BindSpecific: 12AB::2 00021 TCP FTPD3 DAB BindSpecific: 9.67.2.1 02001 TCP MYSERVER DA 02020 TCP CICS1 DAU 02020 TCP CICS2 DAU 03001 TCP MYIP6AP1 DAU 03001 TCP MYIP6AP2 DAU 03001 TCP MYIP4AP1 DAU 03001 TCP MYIP4AP2 DAU 04/13/14 port 21 9.67.2.1 port 2020 IPv4 Clients port 3001 port 21 12AB::2 IPv6 Clients www.ibm.com/support/techdocs Document port 3001 © 2014 IBM Corporation FTPD3 CICS1 CICS2 MYIP4AP1 MYIP4AP2 NM1AFTP1 MYIP6AP1 MYIP6AP2 Page 15 The PORT statement reserves a port for the use of a particular server. It normally does not distinguish between IPv4 and IPv6; the port is reserved regardless of which flavor of address the application uses. The BIND keyword on the port statement allows you to force an INADDR_ANY listener to listen on a particular IP address. You may now specify an IPv6 address on this keyword. INADDR_ANY listeners will be converted to an IPv4 address, but will ignore an IPv6 address on the BIND keyword. IN6ADDR_ANY listeners will be converted to either an IPv4 address (the v4-mapped form of that address) or an IPv6 address, depending on what is specified with the BIND keyword. By using the BIND keyword, a server listens on a particular IP address; i.e., it will be either IPv4 or IPv6. To have the same service serve both IPv4 and IPv6 clients, you may need to start up two instances of it, one bound to an IPv4 address and one to an IPv6 address. The example here illustrates two different FTP servers: one for IPv4 and one for IPv6. FTP always opens AF_INET6 (if you are on a dual-mode stack). SHAREPORT allows multiple listeners to bind to the same port. It causes incoming connections to be load-balanced between the listeners. All IPv4 connection requests will be load-balanced between the set of IPv4 listeners (including AF_INET6 IN6ADDR_ANY listeners), while all IPv6 connection requests will be load-balanced between the set of IPv6 listeners. 15 INET BPXPRMxx Definitions Socket Applications LFS AF_INET PFS ● IPv4-only BPXPRMxx Example for INET FILESYSTYPE TYPE(INET) ENTRYPOINT(EZBPFINI) NETWORK DOMAIN(AF_INET) DOMAINNUMBER(2) MAXSOCKETS(2000) TYPE(INET) TCP and UDP Transport QoS TRM IDS ARP IPv4 Raw Transport IGMP ICMP IPV4 DLCs ● IPv4/IPv6 BPXPRMxx Example for INET (Dual-Mode) FILESYSTYPE TYPE(INET) ENTRYPOINT(EZBPFINI) NETWORK DOMAINNAME(AF_INET) Socket Applications DOMAINNUMBER(2) LFS MAXSOCKETS(2000) TYPE(INET) AF_INET PFS AF_INET6 PFS NETWORK DOMAINNAME(AF_INET6) DOMAINNUMBER(19) IPv6 Raw IPv4 Raw TCP and UDP Transport MAXSOCKETS(3000) Transport Transport TYPE(INET) NeD MLD Stateless autoconfig ICMPv6 IPv6 DLCs (QDIO) 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation QoS TRM IDS ARP IGMP ICMP IPv4 DLCs Page 16 Dual stack (IPv4/IPv6) is defined by using two NETWORK statements (AF_INET & AF_INET6) in BPXPRMxx. When the INET is defined, only a single TCP/IP stack can be started. The single stack is IPv4/IPv6 capable. With dual-mode stack IPv6 functions and protocols ICMPv6, NeD, MLD, and Autoconfig are automatically enabled. ICMPv6 - The IP protocol concerns itself with moving data from one node to another. However, in order for IP to perform this task successfully, there are many other functions that need to be carried out: error reporting, route discovery, and diagnostics, among others. In IPv6 , all these tasks are carried out by the Internet Control Message Protocol (ICMPv6). In addition, ICMPv6 provides a framework for Multicast Listener Discovery (MLD) and Neighbor Discovery (NeD), which carry out the tasks of conveying multicast group membership information ( the equivalent of the IGMP protocol in IPv4) and address resolution (performed by ARP in IPv4). Neighbor discovery is an ICMPv6 function that enables a node to identify other hosts and routers on its links. It corresponds to a combination of IPv4 protocols (ARP, ICMP Router Discovery, and ICMP Redirect). It maintains routes, MTU, retransmit times, reachability time, and prefix information based on information received from the routers. NeD uses Duplicate Address Detection (DAD) to verify the host's home addresses are unique on the LAN. NeD uses Address Resolution to determine the link-layer addresses for neighbors on the LAN and Reachability Detection to determine neighbor reachability. Multicast Listener Discovery (MLD) is the protocol used by an IPv6 router to discover the presence of multicast listeners (that is, nodes wishing to receive multicast packets) on its directly attached links, and to discover specifically which multicast addresses are of interest to those listeners. This information is then provided to whichever multicast routing protocol is being used by the router, in order to ensure that multicast packets are delivered to all links where there are interested receivers. MLD is derived from IGMPv2. One important difference to note is that MLD uses ICMPv6 message types, rather than IGMP message types. IPv6 provides for both stateless and stateful autoconfiguration. Stateless autoconfiguration allows a node to be configured in the absence of any configuration server. Stateless autoconfiguration makes it possible for a node to configure its own globally routable addresses in cooperation with a local IPv6 router, by combining the 48- or 64-bit MAC address of the adapter with network prefixes that are learned from the neighboring router. IPv6 allows the use of DHCPv6 for stateful autoconfiguration. DHCPv6 relies on a configuration server that maintains static tables to determine the addresses that are assigned to newly connected nodes. z/OS CS does not support DHCPv6. D OMVS,PFS OMVS 000E ACTIVE OMVS=(N3) PFS CONFIGURATION INFORMATION PFS TYPE DESCRIPTION ENTRY MAXSOCK OPNSOCK HIGHUSED UDS SOCKETS AF_UNIX BPXTUINT 64 2 2 INET SOCKETS AF_INET6 EZBPFINI 3000 1 1 SOCKETS AF_INET 2000 7 7 16 Multiple Stacks IPv4 CINET Socket Applications AF_INET PFS TCP and UDP Transport QoS TRM IDS IPv4 Raw Transport NM1ATCP ARP IGMP IPv4 DLCs ICMP TCP and UDP Transport QoS TRM IDS IPv4 Raw Transport NM1BTCP ARP IGMP ICMP TCP and UDP Transport QoS TRM IDS IPv4 Raw Transport NM1CTCP ARP IPv4 DLCs IGMP ICMP IPv4 DLCs IPv4-only BPXPRMxx Example for CINET FILESYSTYPE TYPE(CINET) ENTRYPOINT(BPXTCINT) NETWORK DOMAINNAME(AF_INET) DOMAINNUMBER(2) MAXSOCKETS(2000) TYPE(CINET) INADDRANYPORT(20000) INADDRANYCOUNT(100) SUBFILESYSTYPE NAME(NM1ATCP)TYPE(CINET) ENTRYPOINT(EZBPFINI) SUBFILESYSTYPE NAME(NM1BTCP)TYPE(CINET) ENTRYPOINT(EZBPFINI) SUBFILESYSTYPE NAME(NM1CTCP)TYPE(CINET) ENTRYPOINT(EZBPFINI) 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 17 A single MVS image can contain up to 8 TCP/IP stacks. Depicted here are three stacks running in MVS. This type of configuration is called Common INET and is defined in the BPXPRMxx member of hlq.PARMLIB. Multi-stack support is not new, but CINET support for IPv6 is. Up to 8 CS TCP/IP stacks can be active at one time whether they are running single-mode or dual-mode. Three IPv4 AF_INET stacks are depicted. These definitions are identical to what was used prior to IPv6 support. Multiple TCP/IP stacks in one MVS image or LPAR are only supported by using Common INET (CINET). Each TCP/IP stack is defined in the BPXPRMxx parmlib member using a SUBFILESYSTYPE statement. D OMVS,PFS BPXO046I 16.18.01 DISPLAY OMVS 023 OMVS 000D ACTIVE OMVS=(Z4) PFS CONFIGURATION INFORMATION PFS TYPE DESCRIPTION ENTRY MAXSOCK OPNSOCK HIGHUSED AUTOMNT LOCAL FILE SYSTEM BPXTAMD TFS LOCAL FILE SYSTEM BPXTFS CINET SOCKETS AF_INET BPXTCINT 10000 34 38 UDS SOCKETS AF_UNIX BPXTUINT 64 5 6 HFS LOCAL FILE SYSTEM GFUAINIT BPXFTCLN CLEANUP DAEMON BPXFTCLN BPXFTSYN SYNC DAEMON BPXFTSYN BPXFPINT PIPES BPXFPINT BPXFCSIN CHARACTER SPECIAL BPXFCSIN PFS NAME DESCRIPTION ENTRY STATUS FLAGS NM1ATCP SOCKETS EZBPFINI ACT SC NM1BTCP SOCKETS EZBPFINI ACT NM1CTCP SOCKETS EZBPFINI ACT PFS TYPE PARAMETER INFORMATION HFS CURRENT VALUES: FIXED(0) VIRTUAL(249) This command displays the Physical File Systems available to UNIX System Services. This is a CINET (multi-stack) configuration for IPv4 only (Sockets AF_INET) with Entry type of BPXTCINT. Each individual stack has an entrypoint of EZBPFINI. 17 Multipe Stacks IPv4/IPv6 CINET Socket Applications AF_INET6 PFS IPv6 Raw Transport TCP and UDP Transport NeD MLD Stateless autoconfig ICMPv6 IPv6 DLCs ● AF_INET PFS IPv4 Raw Transport ARP QoS TRM IDS IGMP ICMP IPv4 DLCs AF_INET6 PFS IPv6 Raw Transport AF_INET PFS TCP and UDP Transport NeD MLD Stateless autoconfig ICMPv6 IPv6 DLCs IPv4 Raw Transport ARP QoS TRM IDS IGMP ICMP IPv4 DLCs AF_INET6 PFS IPv6 Raw Transport AF_INET PFS TCP and UDP Transport NeD MLD Stateless autoconfig ICMPv6 IPv6 DLCs IPv4 Raw Transport ARP QoS TRM IDS IGMP ICMP IPv4 DLCs IPv4/IPv6 BPXPRMxx Example for CINET (Dual-Mode) FILESYSTYPE TYPE(CINET) ENTRYPOINT(BPXTCINT) NETWORK DOMAINNAME(AF_INET) DOMAINNUMBER(2) MAXSOCKETS(2000) TYPE(CINET) MAXSOCKETS is enforced independently for AF_INET and AF_INET6 sockets. INADDRANYPORT(20000) INADDRANYPORT, INADDRANYCOUNT values for NETWORK AF_INET6 from INADDRANYCOUNT(100) values specified on NETWORK AF_INET. NETWORK DOMAINNAME(AF_INET6) INADDRANYPORT, INADDRANYCOUNT values are ignored if specified on the NETWORK statement for AF_INET6. DOMAINNUMBER(19) MAXSOCKETS(3000) TYPE(CINET) SUBFILESYSTYPE NAME(NM1ATCP) TYPE(CINET) ENTRYPOINT(EZBPFINI) SUBFILESYSTYPE NAME(NM1BTCP) TYPE(CINET) ENTRYPOINT(EZBPFINI) SUBFILESYSTYPE NAME(NM1CTCP) TYPE(CINET) ENTRYPOINT(EZBPFINI) 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 18 Dual stack (IPv4/IPv6) is defined by using two NETWORK statements in BPXPRMxx: one for IPv4 and one for IPv6. Each TCP/IP stack is defined in the BPXPRMxx parmlib member with SUBFILESYSTYPE. All CS TCP/IP stacks defined under the two NETWORK statements will be IPv4/IPv6 stacks. Stacks that are not IPv6-aware (like AnyNet Sockets over SNA) will continue to operate as IPv4-only stacks. If MAXSOCKETS on AF_INET6 NETWORK is specified as 0, any TCP/IP stacks started will be v4-only stacks. MAXSOCKETS is enforced independently for AF_INET and AF_INET6 sockets. For TCP/IP Socket APIs (Macro, CALL, REXX, C and CICS) the maximum number of sockets allowed is 2000 regardless of socket type and subject to the MAXSOCKETS limit. See z/OS Communication Server: IP Application Programming Interface Guide, SC31-8788, for details or how to set the maximum socket limit for the TCP/IP Socket APIs. For Unix sockets apps Maxsockets determines number of each type of socket that may be open at one time. D OMVS,PFS OMVS 000E ACTIVE OMVS=(N3) PFS CONFIGURATION INFORMATION PFS TYPE DESCRIPTION ENTRY MAXSOCK OPNSOCK HIGHUSED UDS SOCKETS AF_UNIX BPXTUINT 64 2 2 INET SOCKETS AF_INET6 EZBPFINI 3000 1 1 SOCKETS AF_INET 2000 7 7 The information about whether the stack is IPv6 enabled or not is added to the Netstat UP/-u report. Example from an IPv4 only stack MVS TCP/IP NETSTAT CS V1R4 TCPIP Name: NM1ATCP 14:34:37 Tcpip started at 14:27:29 on 05/21/2003 with IPv6 disabled Example from an IPv6 enabled stack MVS TCP/IP NETSTAT CS V1R4 TCPIP Name: NM1ATCP 23:01:27 Tcpip started at 22:40:32 on 05/21/2003 with IPv6 enabled Netstat HOME in an IPv6-enabled stack displays the LOOPBACK6 Interface -- whether or not you have made any changes whatsoever to the current TCP/IP Profile. INTFNAME: LOOPBACK6 ADDRESS: ::1 TYPE: LOOPBACK FLAGS: The LOOPBACK6 interface appears at the bottom of the HOMELIST, beneath the IPv4 LOOPBACK device. 18 PROFILE.TCPIP 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 19 19 Format Long ● IPCONFIG FORMAT SHORT and NETSTAT FORMAT SHORT • • ● IPCONFIG default when stack not in Dual-Mode (not IPv6 enabled) IPv4 only output IPCONFIG FORMAT LONG and NETSTAT FORMAT LONG • • Only option when stack in Dual-Mode (IPv6 enabled) IPv6 and IPv4 output NETSTAT HOME MVS TCP/IP NETSTAT CS V1R4 TCPIP Name:... Home address list: NETSTAT HOME FORMAT LONG Address Link Flg MVS TCP/IP NETSTAT CS V1R4... -----------Home address list: 9.82.5.120 VLINK1 LinkName: VLINK1 9.82.5.121 VLINK2 Address: 9.82.5.120 10.1.1.1 LOOPBACK Flags: 9.82.4.168 OSATRB10 P ... 172.18.2.168 CTCC128 LinkName: LOOPBACK FORMAT 192.168.11.168 TRLSM92A Address: 10.1.1.1 192.168.31.168 TRLSM93A FORMAT SHORT Flags: 192.168.51.168 TRLSM94A LONG LinkName: OSATRB10 192.168.5.168 EZASAMEMVS Address: 9.82.4.168 192.168.5.168 EZAXCFM2 Flags: Primary 9.82.5.122 VIPL0952057A ... 127.0.0.1 LOOPBACK 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 20 FORMAT - The FORMAT keyword is optional. The FORMAT keyword is only meaningful for stacks that are not enabled for IPv6. It controls the format of the command output. If FORMAT SHORT is specified and the stack is enabled for IPv6, then an error message will be displayed. If the stack is not enabled for IPv6 and the user specified LONG format, the command output is displayed as if it could contain IPv6 addresses. If the stack is not enabled for IPv6 and the user specified SHORT format or did not specify the FORMAT keyword, then the command output is displayed as if it could contain only IPv4 addresses and not the longer IPv6 addresses. If the stack is enabled for IPv6, then specifying the FORMAT keyword does not make any difference to the command output format. The FORMAT LONG display above is done on a stack that does not have IPv6 enabled. Most Netstat Output Format output keyword LONG or SHORT FORMAT LONG to support longer IPv6 addresses LONG FORMAT always used when IPv6 is enabled No message identifiers in FORMAT LONG output FORMAT SHORT same as pre-V1R4 FORMAT defaults to SHORT when IPv6 is not enabled FORMAT SHORT is not supported when IPv6 is enabled FORMAT can be defined in IPCONFIG No Message Identifiers in the Output when FORMAT LONG is used. If you have developed REXX programs that issue Netstat commands under TSO and parse the output lines based on message identifiers, you may need to change those REXX programs to use some other token in the output lines to decide the format of the line you are trying to parse. Implement IPCONFIG FORMAT LONG now to prepare for an eventual IPV6 implementation. Since messages routinely change when the z/OS release changes it is recommended to implement IPCONFIG FORMAT LONG when z/OS is upgraded. Automation that relies on the message output will be checked after upgrade anyway and a separate check for FORMAT LONG will be avoided. 20 IPv6 Interface Statement ● Combines the definitions of DEVICE, LINK and HOME • • • • • ● LOOPBACK6 defines loopback addresses IPAQENET6 configures OSA-Express adapter (Ethernet QDIO) MPCPTP6 defines IUTSAMEH, XCF, or ESCON/FICON link VIRTUAL6 defines IPv6 VIPA IPAQIDIO6 defines HiperSockets LAN Some of the Keywords • DEFINE/DELETE (not for LOOPBACK6) • ADDADDR/DEPRADDR/DELADDR ➔ ➔ • ➔ ➔ statically defines IPv6 address without IPADDR indicates autoconfiguration SOURCEVIPAINTERFACE (IPAQENET6 and MPCPTP6) ➔ • optionally statically defines 64-bit interface ID (predictable link-local address) IPADDR (not for LOOPBACK6) ➔ • equals TRLE portname or cpname (XCF) or IUTSAMEH equals device name for physical device to support both IPv4 and IPv6 INTFID (IPAQENET6 and MPCPTP6) ➔ • adds, deletes, or deprecates IPv6 home address(es) PORTNAME (IPAQENET6)/TRLENAME (MPCPTP6) ➔ • defines or deletes the IPv6 device indicates the static VIPA to be used DUPADDRDET (IPAQENET6) ➔ indicates number of times to attempt duplicate address detection 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 21 INTERFACE and IPCONFIG6 are statements in z/OS CS to support IPv6. The stack must be enabled for IPv6 to use these statements. Multiple IPv6 addresses may be configured on an INTERFACE statement. Start or Stop an interface via: START or STOP statement in profile VARY TCPIP,,START or VARY TCPIP,,STOP command The Interface statement allows the definition or deletion of IPv6 interfaces as well as the addition, deletion or deprecation of IPv6 addresses for these interfaces. IPv6 provides the capability of autoconfiguring addresses for an interface by using information provided by IPv6 routers. Descriptions of this function can be found in RFC 2461 and RFC 2462. The term autoconfigured IP address is used to mean an IP address that is created as a result of information received from a router advertisement. z/OS TCP/IP allows autoconfiguration if no IP addresses are defined on the profile INTERFACE statement using the IPADDR keyword. If the INTERFACE statement contains IPADDR definitions, this indicates that the installation is defining its own IP addresses and autoconfiguration is not desired. Manually configured addresses describes the addresses that are defined using the IPADDR keyword. TCP creates an autoconfigured IP address for an interface if all three of the following conditions are met: The interface is active. A valid router advertisement containing prefix info with the autonomous flag on is received over the interface. No manually configured home addrs are defined for the interface at the time the router advert is received. The IP address that is created by autoconfiguration is formed by appending the interface ID to the prefix supplied by the router advertisement. Autoconfigured addresses can be identified in the netstat home report by the 'Autoconfigured' flag. PRI/SEC/NONROUTER function works the same way for IPv6 as for IPv4. There are separate primary router attributes for IPv4 and IPv6 packets, so one stack sharing the OSA may be primary router for IPv4 while a different stack may be primary router for IPv6. Configure IPv4 PRIROUTER/SECROUTER attribute on DEVICE statement Configure IPv6 PRIROUTER/SECROUTER attribute on INTERFACE statement NETSTAT DEVLINKS/-d displays the PRI/SEC/NONROUTER attributes. Virtual MAC is preferred over PRIROUTER parameter. Each stack registers each non-loopback IP address in its home list to OSA. To add/delete an IPv4 home addr you need to use Obeyfile with a new HOME which replaces the IPv4 home. For IPv6 you can use ADDADDR and DELADDR on the INTERFACE statement to add/delete individual IP addrs. To delete the last or only IPv6 address for a VIRTUAL6, use INTERFACE DELETE similar to IPv4 DELETE LINK and DELETE DEVICE. 21 Loopback Interface Statement ::1 ● INTERFACE LOOPBACK6 Statement for IPv6: INTERFACE LOOPBACK6 ADDADDR 2001:0DB8::14:0 • • There is only one LOOPBACK6 interface generated automatically. ➔ Default address ::1 ➔ Cannot be deleted Additional IP addresses may be defined/deleted/deprecated. 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 22 There is only one LOOPBACK6 interface. The default LOOPBACK6 address ::1 is generated automatically and cannot be deleted. Therefore, you cannot DEFINE or DELETE the LOOPBACK6 interface. You can add additional IP addresses for LOOPBACK6 in the initial profile or in an obeyfile. Additionally, you can delete and deprecate one or more of these additional IP addresses in a vary obeyfile. 22 OSA QDIO Interface Statement ● ● Single OSA adapter can support both IPv4 and IPv6 concurrently. TRLE Required: OSAQDIO TRLE LNCTL=MPC,READ=(0E28),WRITE=(0E29), DATAPATH=(0E2A,0E2B),MPCLEVEL=QDIO, PORTNAME=(OSAQDIO2,0) ● INTERFACE IPAQENET6 Statement for IPv6: INTERFACE OSAQDIO26 DEFINE IPAQENET6 PORTNAME OSAQDIO2 IPADDR 2001:0DB8:1:0:50C9:C2D4:0:1 ● INTERFACE IPAQENET Statement for IPv4: INTERFACE OSAD2INT DEFINE IPAQENET PORTNAME OSAQDIO2 IPADDR 10.15.43.38/24 ● DEVICE MPCIPA and LINK IPAQENET Statement for IPv4: DEVICE OSAQDIO2 MPCIPA LINK LINK2 IPAQENET OSAQDIO2 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 23 TCP/IP can be configured to use the OSA for IPv4-only, for IPv6-only, or both. To use an OSA for both specify the same PORTNAME on both IPV6 and IPV4 INTERFACEs or the IPV6 Interface and the devicename on the IPV4 DEVICE. IPv6 OSA QDIO - Configured using INTERFACE IPAQENET6. Requires TRLE definition, same as IPv4. Optional IPADDR to manually configure IP address(es) - Full IPv6 address or 64 bit prefix (TCP/IP appends interface ID). Separate start and stop statements and separate Netstat Devlinks interface counters for IPv4 and IPv6. For IPv4, ARP is offloaded to and performed by OSA. For IPv6, TCP/IP Neighbor Discovery performs Address resolution for OSA. Two device addresses defined in Datapath in the Example on this page: Required for two stacks in same LPAR sharing OSA. Optional Backup - If two device addrs are defined for only one stack and the first path fails the second is used. 23 Interface ID and MTU from OSA ● OSA returns MAC address and unique instance value during START interface. INTERFACE ID (64 BITS) 24 bits 16 bits MAC ADDR (BYTES 1-3) INSTANCE VALUE 24 bits MAC ADDR (BYTES 4-6) LINK_LOCAL ADDRESS (128 BITS) 64 bits 64 bits LINK_LOCAL PREFIX INTERFACE ID ● TCP/IP uses the lower of the configured MTU and the MTU value returned by the OSA • • 8992 for Gigabit Ethernet 1492 for Fast Ethernet INTERFACE OSAQDIO26 DEFINE IPAQENET6 PORTNAME OSAQDIO2 PRIROUTER MTU 4000 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 24 Multiple stacks which share an OSA get unique interface IDs TCP/IP constructs interface ID and link-local address Interface ID remains the same across restart of interface (with rare exceptions) Interface ID will change after recycle of TCP/IP RFC2373 describes an algorithm to build an EUI-64 interface ID from a MAC address by inserting xFFFE into the middle of MAC address. However this algorithm does not consider the case where an adapter is shared by multiple stacks as each would derive the same interface ID and therefore get the same link-local address. To allow an OSA to be shared by multiple stacks, OSA returns a unique instance value during activation. TCP/IP ensures that universal/local bit is off in the interface ID (seventh bit of interface ID). To help provide fault tolerance, TCP/IP requests that OSA return the same interface ID when an interface is restarted. One reason the interface ID could change on a restart of interface is if the customer changes the MAC address of the OSA. MTU Configure MTU on INTERFACE statement (<= size supported by router) The minimum MTU for IPv6 is 1280. The stack sends certain IPv6 packets to the link local address of a router using the interface MTU. For OSA Gigabit Ethernet jumbo frame is supported, this MTU is 8992. NETSTAT DEV/-d displays both the configured MTU (if configured) and the actual MTU (if interface is active). 24 MPC Interface Statement ● ● Single MPC adapter can support both IPv4 and IPv6 concurrently. TRLE Required: OSAQDIO TRLE LNCTL=MPC,READ=(0C28),WRITE=(0C29), DATAPATH=(0C2A,0C2B),MPCLEVEL=HPDT, PORTNAME=(ESCONP1,0) ● INTERFACE MPCPTP6 Statement for IPv6: INTERFACE ESCONI1 DEFINE MPCPTP6 PORTNAME ESCONP1 IPADDR 2001:44:5:4:1000:C200:0:1 ● DEVICE MPCPTP and LINK MPCPTP Statement for IPv4: DEVICE ESCONP1 MPCPTP LINK ESCONL1 MPCPTP ESCONP1 ● Static XCF • ● TRLENAME is VTAM CPname Same Host • TRLENAME is reserved name IUTSAMEH 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 25 TCP/IP can be configured to use the OSA for IPv4-only, for IPv6-only, or both. To use an OSA for both by specifing the same PORTNAME on the INTERFACE and the devicename on the DEVICE. IPv6 OSA QDIO - Configured using INTERFACE IPAQENET6. Requires TRLE definition, same as IPv4. Optional IPADDR to manually configure IP address(es) - Full IPv6 address or 64 bit prefix (TCP/IP appends interface ID). Separate start and stop statements and separate Netstat Devlinks interface counters for IPv4 and IPv6. For IPv4, ARP is offloaded to and performed by OSA. For IPv6, TCP/IP Neighbor Discovery performs Address resolution for OSA. Two device addresses defined in Datapath in the Example on this page: Required for two stacks in same LPAR sharing OSA. Optional Backup - If two device addrs are defined for only one stack and the first path fails the second is used. 25 VIPA Interface Statement ● IPv6 VIPA and SourceVIPA • IPv6 Source VIPA is enabled in IPCONFIG6 Statement: IPCONFIG6 SOURCEVIPA • INTERFACE VIRTUAL6 Statement for IPv6: INTERFACE VIPAV61 DEFINE VIRTUAL6 IPADDR 2001:0DB8:0:A:9:67:115:5 INTERFACE VIPAV62 DEFINE VIRTUAL6 IPADDR 2001:0DB8:0:A:9:67:115:6 • IPv6 Source VIPA is specified on OSA interface Statement: INTERFACE OSAQDIO16 DEFINE IPAQENET6 PORTNAME OSAQDIO1 SOURCEVIPAINTerface VIPAV61 INTERFACE OSAQDIO26 DEFINE IPAQENET6 PORTNAME OSAQDIO2 SOURCEVIPAINTerface VIPAV62 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 26 All static VIPA must be manually configured. IPv6 Static VIPA are configured using INTERFACE VIRTUAL6. Link-local VIPAs are disallowed since link-local are for use only on the associated LAN and there is no VIPA LAN. SourceVIPA for IPv6 is controlled via the IPCONFIG6 SOURCEVIPA and INTERFACE SOURCEVIPAINTERFACE. When multiple addresses are configured for a SOURCEVIPA interface, the default source address selection algorithm will select the correct source address for each outbound packet based upon its destination address. Use different prefixes for IPv6 static VIPAs and for the IPv6 addresses assigned to real interfaces. To allow other hosts that share a LAN with the z/OS TCP/IP stack to access the IPv6 VIPAs without the need for manual route configuration, a router on each LAN should include the VIPA prefix in its router advertisements. The router advertisements should define the prefix as being on-link and should indicate that the prefix not be used for autoconfiguration. No duplicate address check is done for VIPA addresses. When the application or upper-layer protocol has not selected a source address for an outbound IPv6 packet (using bind or ipv6_pktinfo), the default source address selection algorithm will select one: The goal of default source address selection is to select the address that is most likely to allow the packet to reach its destination and to support site renumbering. The group of candidate addresses consists of the addresses assigned to the outbound interface (both configured and/or dynamically generated) or the addresses configured for the outbound interface's SOURCEVIPA interface. The default source address selection algorithm is explained in detail in the IPv6 Network and Application Design Guide, SC31-8885. Transparent fault tolerance - redundant IPv6 connectivity onto a LAN Define and start multiple IPAQENET6 interfaces onto the same LAN If one interface becomes inactive for any reason then another interface performs Interface Takeover Gratuitous Neighbor Advertisements with new MAC address are sent IPv6 traffic targeting original IP address(es) will continue to flow over another interface Similar to existing IPv4 ARP takeover function for LCS and MPCIPA QDIO except: IPv6 support only sends gratuitous advertisements for VIPAs the stack previously received a Neighbor Solicitation for on that LAN. 26 Dynamic VIPA (DVIPA) ● IPv6 Dynamic VIPA Support (VIPADYNAMIC) VIPADYNAMIC VIPADEFINE dvipav61 2001:0DB8:0:A:9:67:115:7 ENDVIPADYNAMIC VIPADYNAMIC VIPABACKUP dvipav62 2001:0DB8:0:A:9:67:115:8 ENDVIPADYNAMIC VIPADYNAMIC VIPADELETE dvipav63 ENDVIPADYNAMIC VIPADYNAMIC VIPARANGE dvipav64 2001:0DB8:0:A/64 ENDVIPADYNAMIC VIPADYNAMIC VIPADISTRIBUTE DEFINE dvipav61 PORT 23 DESTIP ALL ENDVIPADYNAMIC 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 27 See the detailed VIPA presentation out on the TecDocs web site: http://www.ibm.com/support/techdocs/atsmastr.nsf/WebIndex/PRS789 27 IPCONFIG6 Statement ● IPCONFIG6 options similar to IPCONFIG • • • • • • DATAGRAMFWD/NODATAGRAMFWD enables/disables the transfer of data between networks interfaces. FWDMULTIPATH PERPACKET/NOFWDMULTIPATH enables/disables interface to interface packet routing on an approximate round-robin basis. IGNOREREDIRECT causes TCP/IP to ignore ICMP Redirect packets. SOURCEVIPA/NOSOURCEVIPA enables/disables use of a VIPA assigned to the SOURCEVIPAINT interface as the source address for outbound datagrams that do not have an explicit source address. MULTIPATH/NOMULTIPATH enables/disables multipath routing. DYNAMICXCF configures IPv6 Dynamic XCF (and IUTSAMEH). ➔ ➔ ➔ ● INTFID optionally statically defines 64-bit interface ID XCF interface name is EZ6XCFnn where nn is the sysclone value IUTSAMEH interface name is EZ6SAMEMVS IPCONFIG6 options with no IPCONFIG equivalent • • • HOPLIMIT limits number of hops a packet can travel enroute. IGNOREROUTERHOPLIMIT/NOIGNOREROUTERHOPLIMIT enables/disables the configured global hop limit value being overridden by a router advertisement value. ICMPERRORLIMIT controls the rate at which ICMP error messages can be sent to a particular IPv6 destination address. 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 28 If the stack is not configured for IPv6 and IPCONFIG6 is specified TCP/IP starts up with EZZ0695I IPCONFIG6 NOT VALID -IPv6 SUPPORT IS NOT ENABLED. NODATAGRAMFWD -Stops transfer of data between networks by disabling IP routing between different network interfaces. DATAGRAMFWD - Enables the routing of data between interfaces. NOFWDMULTIPATH - If multiple equal-cost paths to a destination the first active route is used. The default. FWDMULTIPATH PERPACKET - A route on a round-robin basis is selected. IGNOREREDIRECT - Causes TCP/IP to ignore ICMP Redirect packets. NOSOURCEVIPA - Specifies TCP/IP does not request to use VIPA address as source IP address for outbound datagrams. The default. SOURCEVIPA - TCP/IP uses VIPA assigned to SOURCEVIPAINT interface as the source addr for outbound datagrams that do not have an explicit source addr. If multiple addrs are assigned to SOURCEVIPAINT interface, the source addr will be selected from the addrs according to default source address selection algorithm. NOMULTIPATH - Disables multipath routing selection algorithm for outbound traffic. If there are multiple equal-cost routes to a destination and NOMULTIPATH is specified, TCP/IP uses the first active route. The default. MULTIPATH - Enables the multipath routing selection algorithm for outbound IP traffic. If MULTIPATH is specified without any subparameters, the default is PERCONNECTION. PERCONNECTION - A route on a round-robin basis is selected for each destination. Connection or connectionless oriented IP packets using the same association always use the same route. PERPACKET - A route on an approximate round-robin basis is selected for each packet. All IP packets for a given association with a destination host are spread across the multiple equal-cost routes. HOPLIMIT - Number of hops a packet can travel enroute to the destination. If the destination is more hops away, the packet will never reach the destination. The valid range is between 1 and 255. The default is 255. IGNOREROUTERHOPLIMIT - Your configuredHOPLIMIT value is always used. Any router advertisement from a router with a different hop limit value is ignored. NOIGNOREROUTERHOPLIMIT - Causes TCP/IP to Not ignore a Router Advertisement from a router with a different hop limit value. This results in the configured global hop limit value being overridden by the router advertisement value for all routes using the interface the router advertisement was received on. This is the default. ICMPERRORLIMIT - This parameter controls rate at which ICMP error messages can be sent to an IPv6 destination address. The number specified is messages per second. The default is 3 messages per second, and the valid range is 1-20 messages per second. DYNAMICXCF - creates XCF and IUTSAMEH link. Dynamic XCF must be either static or dynamic; either static IPv4 XCF and static IPv6 XCF, or dynamic IPv4 XCF and dynamic IPv6 XCF. Once the IPv6 dynamic XCF address has been established/enabled, it cannot be changed without recycling the TCP stack. 28 IPv6 Source IP Address ● IPCONFIG and IPCONFIG6 SOURCEVIPA • • • ● IPCONFIG and IPCONFIG6 TCPSTACKSOURCEVIPA • • • ● Allows outbound connections and datagrams to use a static VIPA as source IP address Independence from physical adapter failure SOURCEVIPA is different for each stack Provides Sysplex source VIPA when used with Sysplex Distributor Supports DVIPAs Ephemeral Port assignment coordinated among stacks when SYSPLEXPORTS is specified SRCIP/ENDSRCIP • • • • • TCPSTACKSOURCEVIPA applies to all outbound TCP connections SRCIP allows each job to have its own IP address TCPSTACKSOURCEVIPA only works if no bind() is issued before connect() SRCIP works for applications that issue an explicit bind() to inaddr_any (unspecified address) Example SRCIP is the preferred method for SRCIP JOBNAME USER15 9.43.242.5 Source IP Address Specification. JOBNAME JOBNAME JOBNAME JOBNAME ENDSRCIP 04/13/14 USER* USER15 JOB* * 9.43.242.4 2EC0::092B:F203 ETHER1 9.43.242.3 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 29 Problem Statement: Sysplex as a Single System 1) TCPSTACKSOURCEVIPA applies to all outbound TCP connections Same address for all connections if enabled 2) TCPSTACKSOURCEVIPA only works if no bind() is issued before the connect() Even if the bind() is to inaddr_any 3) SHARE Requirement Single Sysplex IP address, inbound and outbound TCPSTACKSOURCEVIPA Single IP address for an application Job-Specific Source IP Address 29 Routing 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 30 30 Static Routing ● IPv6 BEGINROUTES ; BEGINRoutes Defines static routes to the IP route table BEGINRoutes ; Direct Routes ; Destination Subnet Mask First Hop Link/Int Packet Size ROUTE 130.50.75.0 255.255.255.0 = TR1 MTU 2000 ROUTE 193.5.2.0/24 = ETH1 MTU 1500 ROUTE 9.67.43.0 255.255.255.0 = FDDI1 MTU 4000 ROUTE 193.7.2.2 HOST = SNA1 MTU 2000 ROUTE 2001:0CD8:1/128 = OSAQDIO26 MTU 2000 ROUTE 2001:0CD8:1/128 = OSAQDIO28 MTU 2000 ; Indirect Routes ; Destination Subnet Mask First Hop Link/Int Packet Size ROUTE 193.12.2.0 255.255.255.0 130.50.75.10 TR1 MTU 2000 ROUTE 10.5.6.4 HOST 193.5.2.10 ETH1 MTU 1500 ; Default Route ; Destination First Hop Link/Int Packet Size ROUTE DEFAULT 9.67.43.99 FDDI1 MTU DEFAULTSIZE ROUTE DEFAULT6 2001:0CD8:1::5160 OSAQDIO26 MTU DEFAULTSIZE ROUTE DEFAULT6 2001:0CD8:1::5180 OSAQDIO28 MTU DEFAULTSIZE ENDRoutes 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 31 Use the BEGINROUTES statement to add static routes to the IP route table. The GATEWAY statement is not enhanced to support IPv6 routes. The IP address can be an IPv4 or IPv6 address and does not need to be a fully qualified address. The first hop gateway IP address can also support either IPv4 or IPv6 addresses, but must be a fully qualified address. dest_ipaddr/dest_ipv6addr - The destination IPv4 or IPv6 address. An IPv4 address must be fully qualified. prefixLength: Valid range 1-128. First hop portion of the ROUTE statement may contain either an IPv4 first hop address. It must be either a fully qualified address or an equal sign (=). link_name or interface name is the link or interface through which packets are sent to the specified destination. MTU mtu_size - The maximum transmission unit (MTU) in bytes for the destination. This value can be up to 65535. The keyword DEFAULTSIZE in this field requests that TCP/IP supply a default value of 576 for IPv4 routes and 1280 for IPv6 routes. You cannot specify an MTU smaller than the default MTU size. For IPv4 the default MTU is 576 and for IPv6 it is 1280. Opts - Options are unchanged: NOREPLaceable | REPLaceable, MAXImumretransmittime 120.00 | MAXImumretransmittime seconds, MINImumretransmittime 0.50 | MINImumretransmittime seconds, ROUNDTRIPGain 0.125 | ROUNDTRIPGain value, VARIANCEGain 0.25 | VARIANCEGain value, VARIANCEMultiplier 2.00 |VARIANCEMultiplier value, DELAYAcks | NODELAYAcks IPv6 Standards require a minimum of 2 default routers so when the last default route is deleted a default route is added back into the routing table. 31 Dynamic Routing ● IPv6 Learns some Routing • Some routes can be dynamically learned without OMPROUTE ➔ ➔ ➔ ● Default routes Direct prefix routes ICMP redirects OMPROUTE • IPv6 RIPng (RIP next generation) ➔ ➔ ➔ ➔ ➔ ➔ ➔ • Like IPv4 RIP Based upon the Distance Vector Algorithm Max metric is 15 Advertise full routing table every 30 seconds Routes time out if not refreshed in 3 minutes Extensive filters Changes primarily to accommodate IPv6 addressing - bigger addresses, address prefixes, and link local addresses. IPv6 OSPF (OSPFv3) ➔ ➔ ➔ ➔ ➔ Like IPv4 OSPF (OSPFv2) Default hello interval is 10, dead router is 40, database exchange is 40 Default interface cost is 1, designated router priority is 1 etc. Router ID defaults to IPv4 OSPF Router ID if running or it must be specified 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 32 Unlike IPv4, IPv6 dynamically learns some routing information without dynamic routing protocols OSPF or RIP. 32 Resolver 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 33 33 VTAM OMVS BPXPRMxx TCP/IP ● Global IPNODES IPv4 only Whether the common local host file search order is to be used for: ➔ ➔ • MVS and UNIX environments IPv4 and IPv6 queries COMMONSEARCH is the recommended setting ETC.IPNODES is a local host file with IPv4 and/or IPv6 addresses • • • ● Default IPNODES PROCLIB COMMONSEARCH/NOCOMMONSEARCH • ● Resolver Default TCPIPDATA Resolver Setup File COMMONSEARCH HOSTS.SITEINFO, HOSTS.ADDRINFO files and /etc/hosts file • ● Global TCPIPDATA Resolver z/OS Setup statements to identify the first and final search location for the ETC.IPNODES local host file. GLOBALIPNODES DEFAULTIPNODES Resolver retrieves IPv4 and/or IPv6 addresses from DNS • Resolver communication with DNS supports IPv6 DNS address starting z/OS V2R1 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 34 HOSTS.SITEINFO and .ADDRINFO files continue to be generated from HOSTS.LOCAL file via MAKESITE utility. ETC.IPNODES may contain both IPv4 and IPv6 addresses. IPv6 addresses can only be defined in ETC.IPNODES. For GLOBALIPNODES and DEFAULTIPNODES, the syntax and format of the specified file names is the following: Fully qualified MVS dataset name. The beginning and end quotes are required. The dataset name is not case sensitive. The dataset characteristics must be Fixed (F) or Fixed Block (FB), with LRECL between 56 and 256, inclusive. Sequential file or PDS member are both allowed. HFS file absolute pathname. Beginning slash is required. The HFS pathname is case sensitive. The maximum line length is 256 characters. IPv6 ETC.IPNODES search order: GLOBALIPNODES RESOLVER_IPNODES environment variable (Unix only) userid/jobname.ETC.IPNODES hlq.ETC.IPNODES DEFAULTIPNODES /etc/ipnodes IPv4 HOSTS.LOCAL search order: MVS Environment userid/jobname.HOSTS.xxxxINFO hlq.HOSTS.xxxxINFO Unix Environment X_SITE and X_ADDR environment variables /etc/hosts userid.HOSTS.xxxxINFO hlq.HOSTS.xxxxINFO Specifying the new Resolver COMMONSEARCH setup statement is recommended as the way to simplify the search order choices: IPv6 search order will be used for IPv4 searches as well MVS and UNIX environments would utilize the same search order for IPv4 searches as well as IPv6 searches All local resources can be defined in a single local host file (ETC.IPNODES) rather than spread across multiple files (ETC.IPNODES and HOSTS.LOCAL) Applicable to both new and old Resolver APIs 34 FTP 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 35 35 IPv4 FTP ● • • • ● FTP.DATA FWFRIENDLY FALSE (default) ftp ipv4_addr1 put file_name ipv4_addr2 port_num2 • • FTP.DATA FWFRIENDLY TRUE ftp ipv4_addr1 put file_name IPv4 FTP Client Proxy Mode • • • • Data Connection PORT ipv4_addr2 at port_num2 200 Port Request OK connect ipv4_addr2 at port_num2 STOR file_name ipv4_addr1 Control port_num1 Data port used to send connect Control Connection connect ipv4_addr1 port_num1 z/OS FTP Client FTP.DATA FWFRIENDLY TRUE ftp ipv4_addr1 proxy open ipv4_addr2 Control Connection proxy put file_name connect ipv4_addr1 port_num1 Connection z/OS connectControl ipv4_addr2 port_num2 FTP Data Connection PASV Client 227 Entering Passive Mode ipv4_addr1 port_num3 PORT ipv4_addr1 port_num3 200 PORT request OK Data Connection PASV 227 Entering Passive Mode ipv4_addr1 port_num2 connect ipv4_addr1 port_num2 STOR file_name z/OS FTP Server ipv4_addr1 Control port_num1 Data port_num3 These packets do not actually pass through the left FTP Server connect ipv4_addr1 port_num3 STOR file_name 04/13/14 z/OS FTP Server Control Connection connect ipv4_addr1 port_num1 IPv4 FTP Client Passive Mode • ● z/OS FTP Client IPv4 FTP Client Active Mode www.ibm.com/support/techdocs Document © 2014 IBM Corporation z/OS FTP Server ipv4_addr1 Control port_num1 Data port_num2 z/OS FTP Server ipv4_addr2 Control port_num2 Page 36 For the client you may specify an IPv4 address, a hostname, an IPv4-mapped IPv6 address, or an IPv6 address. userid.NETRC support: The NETRC data set provides you with an alternative to specifying the user_id and password as REXEC values or FTP batch client values. An IPv6 address may be specified in the NETRC data set. DNS names that resolve to IPv6 addresses can be specified. FTP.DATA statements supported for IPv4 Addresses / Connections Only: SECURE_MECHANISM GSSAPI (KERBEROS) SOCKSCONFIGFILE For IPv4 SOCKS Servers only. If SOCKS server defined as a DNS name, the FTP client resolves name to IPv4 addresses only. FWFRIENDLY Irrelevant / Ignored with IPv6 partner RFC 2428 specification: EPSV is used for data transfer to/from IPv6 FTP partner EPRT reserved for proxy transfer. There are no FTP.DATA statements for IPv6 enablement. GSSAPI authentication (KERBEROS) is supported only for IPv4 connections. The client will fail the negotiation when the connection is IPv6. Kerberos channel-bindings have not yet been defined for IPv6 connections SSL/TLS security is fully supported for IPv6 connections. GSSAPI authentication (KERBEROS) is supported only for IPv4 connections. The client will fail the negotiation when the connection is IPv6. The SOCKSCONFIGFILE is referenced only for IPv4 connections. in the SOCKSCONFIGFILE itself, only IPv4 addresses are supported. If you define a SOCKS server as a DNS name, the FTP client will resolve that name to IPv4 addresses only. The FWFRIENDLY FTP.DATA statement applies to IPv4 connections only. As specified by RFC 2428, when connected to an IPv6 FTP server, EPSV is used to start a data transfer. EPRT is reserved for proxy transfer. FWFRIENDLY statement applies to IPv4 connections only. 36 IPv6 FTP ● ● ● IPv6 FTP Server enabled automatically when stack is Dual-Mode All IPv6 FTP Client connections are in Passive Mode (no Active Mode Support) z/OS IPv6 FTP Client Control Connection FTP • • • connect ipv6_addr1 port_num1 IPFWFRIENDLY Ignored ftp ipv6_addr1 put file_name z/OS FTP Client Data Connection EPSV 229 Entering Extended Passive Mode port_num2 connect ipv6_addr1 port_num2 STOR file_name ● IPv6 FTP Client Proxy Mode • • • ftp ipv6_address1 proxy open ipv6_address2 proxy put file_name z/OS FTP Client Control Connection connect ipv6_addr1 port_num1 Control Connection connect ipv6_addr2 port_num2 Data Connection EPSV 229 Entering Passive Mode port_num3 EPRT ipv6_addr1 port_num3 200 EPRT request OK z/OS FTP Server ipv6_addr1 Control port_num1 Data port_num3 These packets do not actually pass through the left FTP Server connect ipv6_addr1 port_num3 STOR file_name 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Server ipv6_addr1 Control port_num1 Data port_num2 z/OS FTP Server ipv6_addr2 Control port_num2 Page 37 FTP client and daemon test the LPAR as soon as they are started to determine whether it is IPv4 only or dual-mode. It does this by opening an AF_INET6 socket. If the socket() call fails with errno EINVAL and errnoJr = EAFNOTSUPPORTED, FTP knows it must be executing on an IPv4-only LPAR (one or more IPv4-only stacks). FTP records the result to avoid issuing extended socket API calls (IPv6 socket calls) on the IPv4-only LPAR A sockaddr is an API programming structure that includes port number and IP address of the endpoint. FTP daemon (server) On the IPv4 only stack, the sockaddrs are always AF_INET. On the dual stack, the sockaddrs are always AF_INET6. FTP client On the IPv4 only stack, the sockaddrs are always AF_INET. On the dual-mode LPAR, the FTP Client opens an AF_INET socket to connect to servers with IPv4 addresses; it opens an AF_INET6 socket to connect to servers with IPv6 addresses. The server needs to know whether its session is IPv4 or IPv6 when it is establishing a data connection. The z/OS server has always used the same local interface (IP address) for the data connection that is used for the control connection. It ensures the stack will use the same interface by binding the data socket to the server's control connection local IP address. If the client logs in with an IPv4 address, that server local control connection IP address will be IPv4. On the dual stack, the control connection local sockaddr will be AF_INET6, but the IP address may be in the mapped format (::ffff:a.b.c.d). If the client logs in with an IPv6 address, the server's local control connection IP address will be IPv6. Once a socket is bound to an IP address, it can only be connected to IP addresses of the same protocol. The z/OS FTP server forces the data connection to be the same protocol as the control connection. This is more restrictive than the RFCs 959 and 2428 state. In theory, an OEM server could have one protocol for the control connection and the other for the data connection. But the z/OS server cannot allow mixing. z/OS FTP implements RFC 2428, which amounts to simply using other FTP commands in place of PORT and PASV commands when exchanging IP addresses. The z/OS FTP implements IPv6 via the commands EPRT (extended PORT) and EPSV (extended PASV) defined in this RFC. EPRT and EPSV can be used with either IPv4 addresses or IPv6 addresses. In theory, RFC 2428 allows any address family whose address family number is defined in RFC 1700, but the RFC is explicit (and therefore implementable) only for IPv4 and IPv6 addressing. There is an oddity surrounding EPRT in RFC 2428: EPRT is used only for proxy data transfers -- not for standard data transfers between client and server. For all data transfers, RFC 2428 specifies that EPSV will be used. 37 Enterprise Extender 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 38 38 Enterprise Extender (EE) x.com public DNS EBN hostx=1.1.1.2 EBNx=1.1.1.1 Hosty=2.2.2.2 EBNy=2.2.2.1 y.com public DNS EBN EBNx.x.com EBNy.y.com NNx NNy IPNodes IPNodes hostx=10.2.1.1 EBNx=10.1.1.1 ENx Hosty=192.168.2.1 EBNy=192.168.1.1 dest=2.2.2.2,src=10.2.1.1 dest=2.2.2.2,src=1.1.1.2 dest=192.168.2.1,src=1.1.1.2 dest=10.2.1.1,src=2.2.2.2 dest=1.1.1.2,src=2.2.2.2 dest=1.1.1.2,src=192.168.2.1 hostx.x.com Company x.com intranet ● ENy hosty.y.com FW intranet Public Public intranet 10.1.1.1 1.1.1.1 2.2.2.1 192.168.1.1 10.2.1.1 1.1.1.2 2.2.2.2 192.168.2.1 FW Company y.com intranet HOSTNAME and IPv6 address Support for IPv6 and Connection Network/NAT • • IPv4 non-Connection Network EE already worked with NAT HOSTNAME keyword (1R5) (start option, GROUP, path definition) or IPv6 addr (V2R1) (start option, path def in sw major node) to represent local and remote IPV6 VIPA ➔ ➔ • Recommended for IPv4 also since it provides solution for Connection Network/NAT HOSTNAME overrides IPADDR PORT IPRESOLV on PATH statement ➔ Specifies the number of seconds VTAM waits for IP address resolution 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 39 EE architecture has been updated to allow the EE connection network control vectors to carry the ip address and hostname corresponding to the EE VIPA. Administrative requirement of coordinating NAT tables and public DNS entries is a known administrative procedure to installations that use NAT. 39 inetd 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 40 40 inetd ● inetd (internet daemon server) • • • remote execution (orexec) client and remote execution (orexecd) server remote shell (orshd) server telnet server (otelnetd) /etc/inetd.conf file: #=============================================================================== # service | socket | proto-| wait/ | user | server | server program # name | type | col | nowait| | program | arguments ... shell stream tcp nowait OMVSKERN /usr/sbin/orshd orshd -k KRB5 exec stream tcp nowait OMVSKERN /usr/sbin/orexecd orexecd -dLV otelnet stream tcp6 nowait bpxroot /usr/sbin/otelnetd otelnetd Protocol Field: tcp, udp, tcp6, udp6 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 41 The inetd server applications have been updated with IPv6 support. 41 SMF 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 42 42 SMF ● SMF Record Types • • ● SMF118 - IPv4 addresses only. SMF119 - Records have room for IPv6 addresses. Three Different Places to Request SMF Records • PROFILE.TCPIP SMFCONFIG parameters ➔ ➔ ➔ ➔ ➔ ➔ ➔ ➔ • PROFILE.TCPIP TELNETPARMS parameters ➔ • TCP/IP Statistics records TCP Connection Initiation and Termination records FTP Client Transfer Complete records TN3270 Client Initiation and Termination records Interface Link Utilization Statistics records Reserved Port Utilization Statistics records TCP/IP Stack Start and Stop records UDP Socket Termination records TN3270 Server SNA Session Initiation and Termination records FTP.DATA statements for FTP Server records ➔ ➔ ➔ ➔ ➔ FTP Transfer Complete records APPEND DELETE JES Login Failure 04/13/14 ➔ ➔ ➔ ➔ ➔ RENAME RETRIEVE SQ STORE UNIQUE STORE www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 43 Type 118 FTP client and server transfer completion records are generated for IPv6 connections, but leave the IP address field empty. All other type 118 SMF records are not generated for IPv6 connections. SMF Recording must be enabled: SYS1.PARMLIB(SMFPRMxx) SYS(TYPE(119)) INTVAL(x) SYNCVAL(x) NETSTAT CONFIG/-f output shows SMF specifications in SMFCONFIG statement. IPCS Command TCPIPCS displays all PROFILE.TCPIP configuration settings. Display TCPIP,,Telnet,PROFile displays telnet initialization and termination settings. SNMP applications can communicate over an IPv6 connection: osnmp command SNMP agent (OSNMPD) Trap Forwarder daemon MVS TCPIP subagents DPI 2.0 enabled for AF_INET6 pwtokey and pwchange commands Accept IPv6 addresses 43 More Information 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 44 44 Web Sites and Documents ● ● ● IBM Technical Documents http://www.ibm.com/support/techdocs IBM Redbooks http://www.redbooks.ibm.com z/OS Home Page http://www.ibm.com/systems/z/os/zos/ ● IPv6 Information Pages http://www.ipv6forum.com http://arin.net http://www.internet2.edu http://www.ipv6.org ● z/OS Manuals • • • IP Configuration Guide, SC27­3650 IP Configuration Reference, SC27­3651 IPv6 Network and Application Design Guide, SC27­3663 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 45 45 The End 04/13/14 www.ibm.com/support/techdocs Document © 2014 IBM Corporation Page 46 46