I struggled (and failed) to get OSPF routing to work with IPV6, so I tried with IP V4. This only took a couple of hours to get working. But I could not find any documentation which had baby steps to show you how it works, and what any output means.
This blog post is getting two Linux machines and z/OS to work with IPV4 and OSPF routing.
Some other blog articles give examples of the commands you can use to explore the configuration, and find what is running where.
- One minute: Understanding TCPIP routing: Static, RIP, OSPF
- OSPF on Linux with frr: the basic commands
- OSPF on z/OS, basic commands
- Understanding what OSPF does from the data flows.
What is OSPF
OSPF is a routing protocol where a router knows the topology of the network – rather than just the next hop. As the network changes, the changes are sent to the routers and their picture of the network is updated. OSPF scales to large number of routers.
My configuration

I used the frr (Free Range Routing) package which has routing capabilities for OSPF, OSPF6, RIP etc.
The laptop had
- ip v4 address 10.1.0.2/24
- routes
- 10.1.0.0/24 dev enp0s31f6 proto kernel scope link src 10.1.0.2 metric 100
- 10.1.0.0/24 via 10.1.0.2 dev enp0s31f6 proto static metric 100
- 10.1.1.0/24 via 10.1.0.3 dev enp0s31f6
- ospf router id 1.2.3.4
The server had
- ip v4 address 10.1.0.3/24
- routes
- 10.1.0.0/24 dev eno1 proto kernel scope link src 10.1.0.3 metric 100
- 10.1.0.0/24 via 10.1.0.3 dev eno1 proto static metric 100
- ospf router-id 9.2.3.4
The z/OS system has
- ip v4 address 10.1.1.2
- routes
- 10.1.0.0/24 via 10.1.1.1 on ETH1
- 10.1.1.0/24 dev tap0 proto kernel scope link src 10.1.1.1
- ospf router-id 10.1.1.2
Laptop frr.conf configuration file
The configuration file is described here.
frr version 7.2.1 frr defaults traditional hostname laptop log file /var/log/frr/frr.log log timestamp precision 6 hostname laptop service integrated-vtysh-config ... ! interface enp0s31f6 description colins ospf ip address 10.1.0.2 peer 10.1.0.3/24 ip ospf area 0.0.0.0 ! router ospf ospf router-id 1.2.3.4 line vty
Server frr.conf configuration file
frr version 7.2.1 frr defaults traditional hostname colin-ThinkCentre-M920s log file /var/log/frr/frr.log log timestamp precision 6 hostname Server service integrated-vtysh-config interface eno1 description colins ospf ip address 10.1.0.3 peer 10.1.0.2/24 ip ospf area 0.0.0.0 ! router ospf ospf router-id 9.2.3.4 ! line vty
z/OS configuration
TCPIP configuration file – defining ETH1
DEVICE PORTA MPCIPA LINK ETH1 IPAQENET PORTA HOME 10.1.1.2 ETH1 PORT 520 UDP OMP2 ; RouteD Server BEGINRoutes ; Destination SubnetMask FirstHop LinkName Size ROUTE 10.0.0.0 255.0.0.0 = ETH1 MTU 1492 ROUTE DEFAULT 10.1.1.1 ETH1 MTU 1492 ROUTE 10.1.0.0 255.255.255.0 10.1.1.1 ETH1 MTU 1492 ROUTE 10.1.1.0 255.255.255.0 = ETH1 MTU 1492 ENDRoutes ITRACE OFF IPCONFIG NODATAGRAMFWD UDPCONFIG RESTRICTLOWPORTS TCPCONFIG RESTRICTLOWPORTS TCPCONFIG TTLS START PORTA
JFPORTCP4 Interface configuration
This is in member USER.Z24C.TCPPARMS(jFACE41)
INTERFACE JFPORTCP4 DEFINE IPAQENET CHPIDTYPE OSD IPADDR 10.1.3.2 PORTNAME PORT2
activate and start this using
v tcpip,tcpip,obeyfile,USER.Z24C.TCPPARMS(jFACE41) v tcpip,tcpip,sta,jfportcp4
OMPROUTE procedure
//OMPROUTE PROC // SET PO='POSIX(ON)' //OMPROUTE EXEC PGM=OMPROUTE,REGION=0M,TIME=NOLIMIT, // PARM=('&PO.,ENVAR("_CEE_ENVFILE_S=DD:STDENV")/ -6t2 -6d2') //OMPCFG DD DISP=SHR,DSN=USER.Z24C.TCPPARMS(&SYSJOBNM) //STDENV DD DISP=SHR,DSN=USER.Z24C.TCPPARMS(ENV&SYSJOBNM) //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSTCPD DD DISP=SHR,DSN=ADCD.Z24C.TCPPARMS(TCPDATA) //CEEDUMP DD SYSOUT=*,DCB=(RECFM=FB,LRECL=132,BLKSIZE=132) // PEND
and started with
S OMPROUTE,jobname=omp1
USER.Z24C.TCPPARMS(ENV&SYSJOBNM)
RESOLVER_CONFIG=//'ADCD.Z24C.TCPPARMS(TCPDATA)' OMPROUTE_DEBUG_FILE=/tmp/logs/omproute.debug OMPROUTE_IPV6_DEBUG_FILE=/tmp/logs/omprout6.debug OMPROUTE_DEBUG_FILE_CONTROL=1000,5
OMPROUTE configuration USER.Z24C.TCPPARMS(OMP1)
ospf RouterID=10.1.1.2; ospf_interface IP_address=10.1.1.2 name=ETH1 subnet_mask=255.255.255.0 ; ospf_interface IP_address=10.1.3.2 name=JFPORTCP4 subnet_mask=255.255.255.0 ;
Startup joblog messages
EZZ7800I OMP1 STARTING
EZZ8171I OMP1 IPV4 OSPF IS USING CONFIGURED ROUTER ID 10.1.1.2 FROM OSPF STATEMENT
EZZ7898I OMP1 INITIALIZATION COMPLETE
EZZ8100I OMP1 SUBAGENT STARTING