As part of some work trying to get IPV6 to connect, I spent too much time understanding the various IP addresses in my configuration. By accident I found the magic incantation that allowed my z/OS on zD&T to talk to the outside internet.
Under the covers the BT Smart Hub 2 has a router called Arcadyan_ae. You will see this in a Wireshark trace. My IP addresses start with 2A00:23C5:… This belongs to BT. I’ve replace the address with BT:a:b:c .
This Blog post is referred to in Connecting a zPDT z/OS to the internet to using IPV6 and explains the various IPv6 addresses
My BT Smart Hub 2
You can display configuration information from the Smart Hub by using a web browser and address 192.168.1.254.
The Smart Hub IPv6 information.
This is password protected in the Advanced Settings.
There is a section IPv6 WAN details, this was not of interest.
The section IPv6 LAN details has
- Link local address: fe80::6a2:22ff:feae:2871/64
For my Linux Server
the information in the BT Hub was
- Device Name: Colins Server
- Device Icon: None
- Connection Status: Connected
- IP address: 192.168.1.25 I think this came from my z/OS system running on the server!
- MAC address: CC:64…:C5
- Connection Type: Wireless
- Address assignment: DHCP
- Always using this address: YES
- IPv6 Addressing:
- GUA(Temporary): BT:a:b:c:2f3d:acdb Assigned by device
- GUA (Permanent) :BT:a:b:c:7cd3:8993 Assigned by device
- Link local address:fe80::…:8c80:37a4 Assigned by device

The IPv4 address (192.168.1.25) varied from day to day. During the day, it tended to be the same value. I could not find what caused it to change.
On my Linux server
The command ip addr gave
wlxcc641aee92c5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...
link/ether cc:64:1a...:c5 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.25/24 brd 192.168.1.255 scope global dynamic noprefixroute wlxcc641aee92c5
...
inet6 BT:a:b:c:7cd3:8993/64 scope global temporary dynamic
...
inet6 BT:a:b:c:2f3d:acdb/64 scope global dynamic mngtmpaddr noprefixroute
...
inet6 fe80::...:8c80:37a4 /64 scope link noprefixroute
...
Where
- the GUA (Permanent) is the same as the address with scope global temporary dynamic
- the GUA (Temporary) is the same as the address with scope global dynamic mngtmpaddr noprefixroute
- the Link local address is the same as the address with scope link noprefixroute. The word link gives it away.
Configure z/OS TCPIP Interface
I configured the interface like
INTERFACE WIRE6
DEFINE IPAQENET6
CHPIDTYPE OSD
IPADDR 2001:DB7:8::1
PORTNAME PORTB
INTERFACE WIRE6
ADDADDR BT:a:b:c::1
START WIRE6
This interface has addresses 2001:DB7:8::1 and BT:a:b:c::1. The value BT:a:b:c is the same as the high part of the Smart Hub’s Global unicast address: BT:a:b:c:6a2:22ff:feae:2871. The value BT:a:b:cuniquely identifies my Smart Hub2 router. Any device in the subarea below this router, must have the same top part. I picked address 1(::1).
The TSO NETSTAT HOME command gave
IntfName: WIRE6
Address: 2001:db7:8::1
Type: Global
Flags:
Address: BT:a:b:c::1
Type: Global
Flags:
Address: fe80::cc64:1a02:ee:92c5
Type: Link_Local
Flags: Autoconfigured
With the two addresses I configured, and an internally generated link local address.
The TSO NETSTAT ND gave
Query Neighbor cache for fe80::6a2:22ff:feae:2871
IntfName: WIRE6 IntfType: IPAQENET6
LinkLayerAddr: 04A222AE2871 State: Reachable
Type: Router AdvDfltRtr: Yes
Where fe80::6a2:22ff:feae:2871 is the IPv6 address of the router – see the top of this blog post.
Routing
My routing table did not need an IPv6 default entry because TCPIP can deduce it.
BEGINRoutes
; Destination SubnetMask FirstHop LinkName Size
ROUTE 10.0.0.0 255.0.0.0 = TAP0 MTU 1492
ROUTE DEFAULT 192.168.1.254 WIRE MTU 1492
ENDRoutes
TSO NETSTAT ROUTE gave me
IPv6 Destinations
DestIP: Default
Gw: fe80::6a2:22ff:feae:2871
Intf: WIRE6 Refcnt: 0000000000
Flgs: UGD MTU: 1492
MTU: 65535
DestIP: 2001:db7:8::1/128
Gw: ::
Intf: WIRE6 Refcnt: 0000000000
Flgs: UH MTU: 1492
DestIP: BT:a:b:c::/64
Gw: ::
Intf: WIRE6 Refcnt: 0000000000
Flgs: UD MTU: 1492
DestIP: aBT:a:b:c::1/128
Gw: ::
Intf: WIRE6 Refcnt: 0000000000
Flgs: UH MTU: 1492
DestIP: fe80::cc64:1a02:ee:92c5/128
Gw: ::
Intf: WIRE6 Refcnt: 0000000000
Flgs: UH MTU: 1492
DestIP: ::1/128
Gw: ::
Intf: LOOPBACK6 Refcnt: 0000000000
Flgs: UH
Where the Default is the value in TSO NETSTAT ND, and is the IP address of the Smart Hub2 – see above.
PING
When I did a TCPIP PING to an IPv6 address,
- the source was BT:a:b:c::1
- the destination was 2a04:abcd::81
The first ping
The first ping had the following flows
- Ping the address
- The router does not know where the originating IP address came from, so it asks all devices connected to it – Does anyone have this IP address?
- Z/OS replies to the router saying “I’ve got that address”
- The router says “Here is some data for you
In more technically
- From BT:a:b:c::1 ping destination 2a04:abcd::81
- (From the router) Source Address: fe80::6a2:22ff:feae:2871 to all devices on the subnet (ff02::1:ff00:1) Neighbour Solicitation for BT:a:b:c::1
- (From z/OS) Source Address: fe80::cc64:1a03:ee:92c5 to the router (fe80::6a2:22ff:feae:2871) Neighbour Advertisement BT:a:b:c::1
- From 2a04:abcd::81 to BT:a:b:c :1 ping response
The second ping request went directly to z/OS because the BT Hub had learned where the IP address was.