Guest

IP Tunneling

X25 Over TCP/IP With XOT Keepalives

Document ID: 21120

Updated: Mar 10, 2006

   Print

Introduction

X.25 Over TCP (XOT) enables you to send X.25 packets over a TCP/IP network instead of a Link Access Procedure, Balanced (LAPB) link. XOT also allows you to tunnel X.25 traffic through an IP network.

The Cisco IOS® software switches X.25 packets between an X.25 link and a TCP connection. Each virtual circuit destination address can be mapped to a separate IP address. XOT keepalives can be used to detect the underlayer TCP. TCP does have the ability to detect the connection by checking the acknowledge sequence number. If it does not receive any acknowledge packets, it holds the unack packets and keeps trying to retransmit until it eventually gives up and tears down the TCP connection. However, this process takes too much time.

This document describes how to use the XOT keepalives feature in the event that a TCP connection is broken, to detect it, and take action faster.

Prerequisites

Requirements

There are no specific requirements for this document.

Components Used

The information in this document is based on these software and hardware versions:

  • Cisco IOS Software Release 9.21 or later, with any feature set

  • Any Cisco routers with Cisco IOS Software Release 9.21 or later support this feature

  • Cisco IOS Software Releases 12.2(13)T13 and 12.2(27)

The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.

Conventions

Refer to Cisco Technical Tips Conventions for more information on document conventions.

Configure

In this section, you are presented with the information to configure the features described in this document.

Note: Use the Command Lookup Tool (registered customers only) to find more information on the commands used in this document.

Network Diagram

This document uses this network setup:

xot_keepalives.gif

Configurations

This document uses these configurations:

R1 (Cisco 2500 Router)
Current configuration:
!
version 12.2
service timestamps debug datetime msec
service timestamps log uptime
!
hostname R1
!
x25 routing 

!--- The X.25 local switching.

!
interface Serial0
no ip address
no ip directed-broadcast
encapsulation x25
no ip mroute-cache
x25 address 45678
x25 win 5 

!--- For testing purposes, the X.25 flow control 
!--- is set to something other than 
!--- the default value. In this configuration, 
!--- win 5 and wout 5, and ips and ops 256 are used.

x25 wout 5
x25 ips 256
x25 ops 256
x25 idle 1
!
line con 0
transport input none
line aux 0
line vty 0 4
password cisco
login
!
end

R2 (Cisco 2500 Router)
Current configuration 
!
version 12.2
service pad to-xot 

!--- Enable this command in order to make a packet assembler/disassembler (PAD) 
!--- over XOT through the router locally. It is useful for troubleshooting XOT problems.

service timestamps debug datetime msec
service timestamps log uptime
!
hostname R2
!
x25 routing 

!--- Enables X.25 switching.

!
!
!
interface Loopback0
ip address 10.1.2.2 255.255.255.0
!
interface Ethernet0
ip address 10.64.9.101 255.255.255.0
no ip route-cache
no ip mroute-cache
!
interface Serial0
no ip address
encapsulation x25 dce
no ip mroute-cache
x25 win 5
x25 wout 5
x25 ips 256
x25 ops 256 

!--- Set these flow control parameters since the interface you have connected to 
!--- also has these parameters set. If not matched, you can reset the link 
!--- while there are larger packets that go over.

x25 idle 1
clockrate 64000
!
router rip
network 10.0.0.0
!
x25 route ^12 xot 10.64.9.100 xot-keepalive-period 
 10 xot-keepalive-tries 3 xot-source Loopback0
x25 route ^4 interface Serial0 xot-keepalive-period 
 10 xot-keepalive-tries 3
         

!--- By default, xot-keepalives is always enabled, uses the default keepalive 
!--- period of 60 seconds, and retries four times. Use the 
!--- loopback as the XOT source to enhance the TCP connection reliability.
!--- If you have two interfaces configured for X.25 and one of the 
!--- interfaces goes down, one interface remains up so that the TCP 
!--- connection is not interrupted. In order to achieve this redundancy
!--- connection, the XOT uses the loopback interface since the 
!--- source and the TCP connection do not fail.
!--- If you want to have redundant interfaces in your router, the 
!--- X.25 route command is configured as  -  X.25 route ^12 xot 10.64.9.100 10.64.9.200
!--- where 10.64.9.100 and 10.64.9.200 are the remote destination IP addresses.

!
line con 0
line aux 0
line vty 0 4
login
!
end

R3 (Cisco 2600 Router)
Current configuration : 1427 bytes
!
version 12.2
service timestamps debug datetime msec
service timestamps log uptime
!
hostname R3
!
!
x25 routing
!
!
interface Loopback0
ip address 10.1.3.1 255.255.255.0
!
interface Serial1
bandwidth 384
no ip address
encapsulation x25
no ip route-cache
no ip mroute-cache
x25 win 7
x25 wout 7
x25 ips 1024
x25 ops 1024
x25 idle 1
service-module t1 clock source internal
service-module t1 timeslots 1-6
!
interface Ethernet1/0
ip address 10.64.9.100 255.255.255.0
no ip route-cache
no ip mroute-cache
half-duplex
!
router rip
network 10.0.0.0
!
!
x25 route ^12 interface Serial1 xot-keepalive-period
 10 xot-keepalive-tries 3
x25 route ^4 xot 10.64.9.101 xot-keepalive-period
 10 xot-keepalive-tries 3 xot-source Loopback0

!
line con 0
exec-timeout 0 0
line aux 0
line vty 0 4
login
!
end

R4 (Cisco 2600 Router)
Current configuration
!
!
!
version 12.2
service timestamps debug datetime msec
service timestamps log uptime
no service password-encryption
!
hostname R4
!
!
interface Ethernet0/0
 ip address 10.64.9.88 255.255.255.0
 half-duplex
!
interface Serial1
 bandwidth 384
 no ip address
 encapsulation x25 dce
 x25 address 123456
 x25 win 7
 x25 wout 7
 x25 ips 1024
 x25 ops 1024 

!--- These parameters are set for testing purposes.

 x25 idle 1
 service-module t1 timeslots 1-6
!
line con 0
line aux 0
line vty 0 4
 password cisco
 login
!
end

Verify

Use this section to confirm that your configuration works properly.

The Output Interpreter Tool (registered customers only) (OIT) supports certain show commands. Use the OIT to view an analysis of show command output.

  • show x25 pad—Shows information about current open connections, including packet transmissions, X.3 parameter settings, and the current status of virtual circuits.

  • show x25 xot—Shows information for all XOT virtual circuits that match a given criterion.

  • show tcp—Shows the status of TCP connections.

  • pad—Use this command to log onto a PAD.

This output shows the debug output displayed when a PAD call is placed from R1 to R4:

R1#pad 123456

User Access Verification

Password:
1w1d: Serial0: X.25 O R1 Call (15) 8 lci 1024
1w1d: From (5): 45678 To (6): 123456
1w1d: Facilities: (0)
1w1d: Call User Data (4): 0x01000000 (pad)
1w1d: Serial0: X.25 I R1 Call Confirm (5) 8 lci 1024
1w1d: From (0): To (0):
1w1d: Facilities: (0)
R4>

This call passes through R2. This output was captured using the debug x25 event and debug ip tcp driver commands.

R2#
*Mar 9 07:02:39.982: Serial0: X.25 I R1 Call (15) 8 lci 1024
*Mar 9 07:02:39.986: From (5): 45678 To (6): 123456
*Mar 9 07:02:39.990: Facilities: (0)
*Mar 9 07:02:39.990: Call User Data (4): 0x01000000 (pad)
*Mar 9 07:02:40.006: TCPDRV404EF4: Active async open 10.1.2.2:0 
 --> 10.64.9.100 :1998 OK, lport 11020
*Mar 9 07:02:40.034: TCPDRV404EF4: disable tcp timeouts
*Mar 9 07:02:40.034: TCPDRV404EF4: enable tcp timeouts
*Mar 9 07:02:40.038: TCPDRV404EF4: keepalive interval set to 10000 ms


!--- The keepalives parameters.

*Mar 9 07:02:40.038: TCPDRV404EF4: keepalive attempts set to 3
*Mar 9 07:02:40.042: TCPDRV404EF4: keepalives turned on
*Mar 9 07:02:40.046: [10.64.9.100,1998/10.1.2.2,11020]: XOT O P2 Call (21) 8 lc i 1
*Mar 9 07:02:40.050: From (5): 45678 To (6): 123456
*Mar 9 07:02:40.054: Facilities: (6)
*Mar 9 07:02:40.054: Packet sizes: 256 256
*Mar 9 07:02:40.058: Window sizes: 5 5
*Mar 9 07:02:40.058: Call User Data (4): 0x01000000 (pad)
*Mar 9 07:02:40.182: [10.64.9.100,1998/10.1.2.2,11020]: XOT I P2 Call Confirm (11) 8 lci 1
*Mar 9 07:02:40.182: From (0): To (0):
*Mar 9 07:02:40.186: Facilities: (6)
*Mar 9 07:02:40.186: Packet sizes: 256 256
*Mar 9 07:02:40.190: Window sizes: 5 5
*Mar 9 07:02:40.194: Serial0: X.25 O R1 Call Confirm (5) 8 lci 1024
*Mar 9 07:02:40.194: From (0): To (0):
*Mar 9 07:02:40.198: Facilities: (0)

R3 receives the call from R2 through XOT and then passes it to R4. This output was captured using the debug x25 event and debug ip tcp driver commands.

R3#
*Mar 9 07:00:41.338: TCPDRV27693C: Passive open 10.64.9.100:1998 <-- 10.1.2.2:1 1020
*Mar 9 07:00:41.342: TCPDRV27693C: disable tcp timeouts
*Mar 9 07:00:41.342: TCPDRV27693C: enable tcp timeouts
*Mar 9 07:00:41.370: [10.1.2.2,11020/10.64.9.100,1998]: XOT I P/Inactive Call (21) 8 lci 1
*Mar 9 07:00:41.370: From (5): 45678 To (6): 123456
*Mar 9 07:00:41.374: Facilities: (6)
*Mar 9 07:00:41.378: Packet sizes: 256 256
*Mar 9 07:00:41.378: Window sizes: 5 5
*Mar 9 07:00:41.382: Call User Data (4): 0x01000000 (pad)
*Mar 9 07:00:41.394: TCPDRV27693C: keepalive interval set to 10000 ms
*Mar 9 07:00:41.394: TCPDRV27693C: keepalive attempts set to 3
*Mar 9 07:00:41.398: TCPDRV27693C: keepalives turned on
*Mar 9 07:00:41.402: Serial1: X.25 O R1 Call (21) 8 lci 1024
*Mar 9 07:00:41.402: From (5): 45678 To (6): 123456
*Mar 9 07:00:41.406: Facilities: (6)
*Mar 9 07:00:41.410: Packet sizes: 256 256
*Mar 9 07:00:41.410: Window sizes: 5 5
*Mar 9 07:00:41.414: Call User Data (4): 0x01000000 (pad)
*Mar 9 07:00:41.454: Serial1: X.25 I R1 Call Confirm (5) 8 lci 1024
*Mar 9 07:00:41.454: From (0): To (0):
*Mar 9 07:00:41.458: Facilities: (0)
*Mar 9 07:00:41.462: [10.1.2.2,11020/10.64.9.100,1998]: XOT O P3 Call Confirm (11) 8 lci 1
*Mar 9 07:00:41.462: From (0): To (0):

R4 receives the call and connects it to the vty port:

R4#
*Mar 9 06:57:16.598: Serial1: X.25 I R1 Call (21) 8 lci 1024
*Mar 9 06:57:16.602: From (5): 45678 To (6): 123456
*Mar 9 06:57:16.606: Facilities: (6)
*Mar 9 06:57:16.606: Packet sizes: 256 256
*Mar 9 06:57:16.610: Window sizes: 5 5
*Mar 9 06:57:16.610: Call User Data (4): 0x01000000 (pad)
*Mar 9 06:57:16.622: Serial1: X.25 O R1 Call Confirm (5) 8 lci 1024
*Mar 9 06:57:16.626: From (0): To (0):
*Mar 9 06:57:16.626: Facilities: (0)

R4#show x25 vc
SVC 1024, State: D1, Interface: Serial1
Started 00:02:15, last input 00:02:12, output 00:02:12

Line: 2 vty 0 Location: Host: 45678
45678 connected to 123456 PAD <--> X25

Window size input: 5, output: 5
Packet size input: 256, output: 256
PS: 4 PR: 0 ACK: 0 Remote PR: 4 RCNT: 0 RNR: no
P/D state timeouts: 0 timer (secs): 0
data bytes 47/60 packets 4/8 Resets 0/0 RNRs 0/0 REJs 0/0 INTs 0/0

R2#show tcp

Stand-alone TCP connection to host 10.64.9.100
Connection state is ESTAB, I/O status: 1, unread input bytes: 0
Local host: 10.1.2.2, Local port: 11020
Foreign host: 10.64.9.100, Foreign port: 1998

Enqueued packets for retransmit: 0, input: 0 mis-ordered: 0 (0 bytes)

TCP driver queue size 0, flow controlled FALSE

Event Timers (current time is 0x2AB893F0):
Timer Starts Wakeups Next
Retrans 11 0 0x0
TimeWait 0 0 0x0
AckHold 10 0 0x0
SendWnd 0 0 0x0
KeepAlive 50 0 0x2AB8A290


!--- Sends keepalive packets and increments.

GiveUp 0 0 0x0
PmtuAger 0 0 0x0
DeadWait 0 0 0x0

iss: 1072933807 snduna: 1072933977 sndnxt: 1072933977 sndwnd: 8023
irs: 1206945087 rcvnxt: 1206945244 rcvwnd: 8036 delrcvwnd: 156

SRTT: 231 ms, RTTO: 769 ms, RTV: 538 ms, KRTT: 0 ms
minRTT: 8 ms, maxRTT: 300 ms, ACK hold: 200 ms
Flags: higher precedence, retransmission timeout, keepalive running


!--- The keepalive status.


Datagrams (max data segment is 536 bytes):
Rcvd: 40 (out of order: 0), with data: 10, total data bytes: 156
Sent: 41 (retransmit: 0, fastretransmit: 0), with data: 10, total data bytes: 16 9

Refer to X.25 Route Command XOT Keepalive Options for more information.

Troubleshoot

Use this section to troubleshoot your configuration.

Troubleshooting Commands

The Output Interpreter Tool (registered customers only) (OIT) supports certain show commands. Use the OIT to view an analysis of show command output.

Note: Refer to Important Information on Debug Commands before you use debug commands.

  • debug x25 events—Displays information about all X.25 traffic except data and resource record packets.

  • debug ip tcp driver—Displays information on TCP driver events.

If the connection between R2 and R3 is broken, the TCP connection tears down after the keepalive periods. Then the output of the show tcp command is empty in both R2 and R3 routers.

You can observe this debug output while the XOT interface of R2 and R3 is down:

R2#debug x25 events
   *Mar 10 05:36:24.685: [10.64.9.100,1998/10.1.2.2,11037]: XOT cx closed
   *Mar 10 05:36:24.689: Serial0: X.25 O R1 Clear (5) 8 lci 1024
   *Mar 10 05:36:24.693: Cause 9, Diag 0 (Out of order/No additional information)
   *Mar 10 05:36:24.709: Serial0: X.25 I R1 Clear Confirm (3) 8 lci 1024

   R2#debug ip tcp driver
   *Mar 10 05:41:08.800: TCPDRV205B44: 10.1.2.2:11038 --> 10.64.9.100:1998 DoClose
   (Cookie 402718) tcp close 

   R3#debug x25 events
   *Mar 10 05:34:27.241: [10.1.2.2,11037/10.64.9.100,1998]: XOT cx closed
   *Mar 10 05:34:27.245: Serial1: X.25 O R1 Clear (5) 8 lci 1024
   *Mar 10 05:34:27.245: Cause 0, Diag 0 (DTE originated/No additional information)
   *Mar 10 05:34:27.261: Serial1: X.25 I R1 Clear Confirm (3) 8 lci 1024
   
    R3#debug ip tcp driver
   *Mar 10 05:39:11.321: TCPDRV354BB8: 10.64.9.100:1998 --> 10.1.2.2:11038 DoClose
   (Cookie 354B5C) tcp close

Related Information

Updated: Mar 10, 2006
Document ID: 21120