串行隧道(STUN)是SDLC帧在WAN上的隧道。在传统系统网络架构(SNA)世界中,远程控制器通过POTS(普通老式电话服务)或租用线路上连接的一组调制解调器连接到前端处理器(FEP)。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
STUN SDLC最常用于两种环境:FEP到远程控制器,AS/400到远程控制器。
使用Cisco IOS®软件命令以及AS/400对远程控制器特定问题进行STUN故障排除。
随着网络向集成方向发展,远程办公室需要不同类型的服务(如NetBIOS、IP、IPX),从维护和成本角度来说,将所有这些服务集成到单个设备是有意义的。例如,在下图中,我们看到3270个终端与Windows工作站的NetBIOS流量的主机集成。
STUN允许您将IP用作WAN或其他介质网络上同步数据链路控制(SDLC)帧的传输。这样就不再需要额外的租用线路或POTS。Cisco路由器的一个SDLC功能是媒体转换。在介质转换中,路由器将会话从SDLC转换为逻辑链路控制,类型2(LLC2)。 这在了解SDLC到LLC网络媒体转换并排除故障中进行了详细讨论。
STUN配置有两种类型:STUN基本和STUN SDLC。前者用于任何高级数据链路控制(HDLC)派生类型帧,后者仅用于SDLC帧。STUN Basic也可用于SDLC,但不能使用本地确认等功能。STUN Basic用于SDLC进行故障排除是常见的,因为SDLC特定参数不需要在路由器上配置。
任何STUN配置(基本或SDLC)的第一个命令是stun peer-name。如果没有stun peer-name,路由器将不允许您继续配置步骤。
任务 | 命令 |
---|---|
为特定IP地址启用STUN。 |
stun peer-name ip-address
|
您必须从路由器中选择有效的IP地址。此IP地址应是机箱中最可靠的接口。为获得最佳结果,请为路由器配置环回接口。(了解有关配置环回接口的信息。
下一步是确定要使用的STUN模式。一种模式是STUN Basic,在该模式下,它查找帧[7e]的起始和定界符,并将帧传输到另一端。在此操作模式下,STUN不关心会话的特定状态或详细的SDLC信息,如轮询地址。另一种模式是STUN SDLC。此模式需要在路由器中作出更详细的决策,尤其是当您运行本地确认或任何类型的多点时。下表介绍了用于指定STUN模式的命令:
任务 | 命令 |
---|---|
指定基本协议组并分配组编号。 |
stun protocol-group group-number basic
|
指定SDLC协议组并分配组编号。 |
stun protocol-group group-number sdlc
|
下一步是配置STUN的串行接口。在接口中选择的组必须与协议组中定义的组匹配。对于虚拟多点,您还应为每个虚拟多点创建一个具有不同编号的stun协议组。请务必确保每个stun-group只配置了一个辅助接口,除非您正在配置sdlc-tg。参见stun protocol-group。
任务 | 命令 |
---|---|
在串行接口上启用STUN功能。 | encapsulation stun |
将接口置于之前定义的STUN组中。 |
stun group group-number
|
注意:在生产网络时间,请勿在Cisco 7000、Cisco 7500或任何其他具有CxBUS、CyBUS的路由器上配置此配置。此配置使路由器将接口的MTU更改为2032字节,这会导致CBUS缓冲区分割,并使路由器的所有接口退回(重置)。 在令牌环环境中,这可能意味着令牌环最多将关闭16秒。此外,由于Cisco 7000通常是核心的中心,这类问题会影响许多用户。
配置STUN的下一步是添加stun route语句。您可以将其定义为stun route all或stun route [address]。配置选项说明如下。
任务 | 命令 |
---|---|
转发此IP地址的所有TCP流量。 |
stun route all tcp ip-address
|
指定TCP封装。 | stun route address address-number tcp ip-address [priority] [tcp-queue-max] |
以上命令用于TCP封装对等体。您也可以配置STUN进行直接封装,但很少使用此配置。所有配置中最常见的是STUN本地确认设置。
以下描述了这些命令参数:
stun route语句中的priority选项用于在两个STUN对等体之间创建多个TCP管道,以便可以使用自定义队列或优先级队列创建优先级结构。
tcp_queue_max选项可增加或减少两个STUN对等体之间的TCP队列。如果对等体之间的TCP会话不太可靠,并且您需要确定对等体之间的错误,则此功能非常有用。此选项在STUN环境中不常用,除非在涉及更多流量的STUN FEP到FEP环境中使用。
下面介绍了用于配置STUN的本地确认命令。
任务 | 命令 |
---|---|
为启用STUN的路由器分配SDLC主角色。 | stun sdlc-role primary |
为启用STUN的路由器分配SDLC辅助角色。 | stun sdlc-role secondary |
这些命令定义STUN设置的“角色”。在上图中的主机情况下,路由器设置为primary,这意味着主机是发起会话的主机。这使3174成为次要设备。使用STUN Basic时,您不必定义角色,因为您不需要知道谁将启动会话。但是,本地确认要求详细了解线路本身,并定义角色,以便路由器知道会话启动的流程,路由器在转到本地确认之前需要验证该流程。
注意:在执行本地确认的AS/400 STUN环境中,将角色(在线说明)从*neg设置为*pri非常重要。原因是在纯环境(直接调制解调器连接)中,AS/400可协商角色。通过对我们将在线路中的角色进行编码,您可以确保路由器的角色与AS/400相反。您通常希望AS/400启动会话(在线路上“视情况而定”)。 转到线路配置,为*pri设置此配置。AS/400显示行说明如下所示。这只能在创建/复制行说明期间完成。
使用本地确认配置STUN的命令说明如下。
任务 | 命令 |
---|---|
使用TCP封装建立SDLC本地确认。 | stun route address address-number tcp ip-address [local-ack] [priority] [tcp-queue-max] |
此处的重要参数是具有local-ack的stun route [address]。请记住,STUN本地确认可以使用TCP封装和帧中继封装(使用RFC 1490)来完成。
与在RSRB和DLSw中一样,STUN中的keepalive在TCP对等体之间流动,以确保对等体连接处于打开状态。如果对等体因keepalive丢失而关闭/打开,则可以调整keepalive。用于配置keepalive的STUN命令如下:
任务 | 命令 |
---|---|
启用远程丢失对等体检测。 |
stun remote-peer-keepalive seconds
|
在声明对等体“关闭”之前尝试对等连接的次数。 | stun keepalive-count数量 |
STUN Basic是STUN最简单的配置。在此模式下,路由器从一端接收的所有数据包都会传输到下一端。STUN基本配置如下图所示:
上图中的路由器配置如下:
4700 | 2522 |
---|---|
Current configuration: ! version 10.3 service udp-small-servers service tcp-small-servers ! hostname s5e ! stun peer-name 10.17.5.1 stun protocol-group 1 basic ! interface Loopback1 no ip address ! interface Serial0 ip address 10.17.5.1 255.255.255.0 clockrate 2000000 ! interface Serial1 no ip address encapsulation stun nrzi-encoding clockrate 56000 stun group 1 stun route all tcp 10.17.5.2 ! |
Current configuration: ! version 11.0 no service pad service udp-small-servers service tcp-small-servers ! hostname rick ! stun peer-name 10.17.5.2 stun protocol-group 1 basic ! interface Serial0 ip address 10.17.5.2 255.255.255.0 no fair-queue no cdp enable ! interface Serial1 ip address 10.17.92.4 255.255.255.0 no fair-queue no cdp enable ! interface Serial2 no ip address encapsulation stun nrzi-encoding clockrate 56000 stun group 1 stun route all tcp 10.17.5.1 |
4700 | 2522 |
---|---|
Current configuration: ! version 10.3 service udp-small-servers service tcp-small-servers ! hostname s5e ! stun peer-name 10.17.5.1 stun protocol-group 1 sdlc ! interface Loopback1 no ip address ! interface Serial0 ip address 10.17.5.1 255.255.255.0 clockrate 2000000 ! interface Serial1 no ip address encapsulation stun nrzi-encoding clockrate 56000 stun group 1 stun sdlc-role secondary sdlc address DD stun route address DD tcp 10.17.5.2 ! |
Current configuration: ! version 11.0 no service pad service udp-small-servers service tcp-small-servers ! hostname rick ! stun peer-name 10.17.5.2 stun protocol-group 1 sdlc ! interface Serial0 ip address 10.17.5.2 255.255.255.0 no fair-queue no cdp enable ! interface Serial1 ip address 10.17.92.4 255.255.255.0 no fair-queue no cdp enable ! interface Serial2 no ip address encapsulation stun nrzi-encoding clockrate 56000 stun group 1 stun sdlc-role primary sdlc address DD stun route address DD tcp 10.17.5.1 |
4700 | 2522 |
---|---|
hostname s5e ! ! ! stun peer-name 10.17.5.1 stun protocol-group 1 sdlc stun remote-peer-keepalive 5 ! interface Serial0 ip address 10.17.5.1 255.255.255.0 clockrate 2000000 ! interface Serial1 no ip address encapsulation stun idle-character marks nrzi-encoding clockrate 56000 stun group 1 stun sdlc-role secondary sdlc K 1 sdlc address 01 sdlc address DD stun route address 1 tcp 10.17.5.2 local-ack stun route address DD tcp 10.17.5.2 local-ack ! |
hostname rick ! ! ! stun peer-name 10.17.5.2 stun protocol-group 1 sdlc stun remote-peer-keepalive 5 ! interface Serial0 ip address 10.17.5.2 255.255.255.0 no fair-queue no cdp enable ! interface Serial2 no ip address encapsulation stun nrzi-encoding clockrate 56000 stun group 1 stun sdlc-role primary sdlc address DD stun route address DD tcp 10.17.5.1 local-ack ! interface Serial3 no ip address encapsulation stun clockrate 19200 stun group 1 stun sdlc-role primary sdlc address 01 stun route address 1 tcp 10.17.5.1 local-ack |
注意:在AS400路由器上,我们使用sdlc k1和空闲字符标记。有关详细信息,请参阅“字段警报”部分。
与STUN一起使用的第一个show命令是show stun。此命令的输出取决于您是使用STUN Basic还是STUN SDLC与local-ack。在下面显示的STUN基本部分中,您只看到发送和接收的数据包。
rick#sh stun This peer: 10.17.5.2 *Serial2 (group 1 [basic]) state rx_pkts tx_pkts drops all TCP 10.17.5.1 closed 5729 5718 0
在STUN SDLC中,本地确认部分如下所示,您会获得更多信息,因为现在已知会话的状态。
rick#sh stun This peer: 10.17.5.2 *Serial2 (group 1 [sdlc]) state rx_pkts tx_pkts drops poll DD TCP 10.17.5.1 open * 182 94 0 Serial3 (group 1 [sdlc]) state rx_pkts tx_pkts drops poll 1 TCP 10.17.5.1 open * 209 89 0 SDLC Local Acknowledgement: *Serial2 (group 1 [sdlc]) slack_state conn disc iframe_s iframe_r DD TCP 10.17.5.1 Active 1 0 0 0 Serial3 (group 1 [sdlc]) slack_state conn disc iframe_s iframe_r 1 TCP 10.17.5.1 Active 1 0 3 3
show interface命令还根据您是运行STUN Basic还是STUN SDLC提供不同的信息。STUN Basic的show interface与常规串行线路的show interface相同。
Serial2 is up, line protocol is up Hardware is CD2430 in sync mode MTU 1500 bytes, BW 115 Kbit, DLY 20000 usec, rely 255/255, load 1/255 Encapsulation STUN, loopback not set Last input 1:10:40, output 0:18:12, output hang never Last clearing of "show interface" counters 0:21:49 Output queue 0/40, 0 drops; input queue 0/75, 0 drops 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute output rate 0 bits/sec, 0 packets/sec 0 packets input, 0 bytes, 0 no buffer Received 0 broadcasts, 0 runts, 0 giants 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort 4 packets output, 312 bytes, 0 underruns 0 output errors, 0 collisions, 0 interface resets, 0 restarts 0 output buffer failures, 0 output buffers swapped out 0 carrier transitions DCD=up DSR=up DTR=up RTS=up CTS=up
STUN SDLC的show interface(带本地确认)提供了详细信息。带有local-ack的串行接口的输出示例如下所示。
Serial3 is up, line protocol is up Hardware is CD2430 in sync mode MTU 1500 bytes, BW 115 Kbit, DLY 20000 usec, rely 255/255, load 1/255 Encapsulation STUN, loopback not set Router link station role: PRIMARY (DCE) Router link station metrics: slow-poll 10 seconds T1 (reply time out) 3000 milliseconds N1 (max frame size) 12016 bits N2 (retry count) 20 poll-pause-timer 10 milliseconds poll-limit-value 1 k (windowsize) 7 modulo 8 sdlc addr 01 state is CONNECT VS 1, VR 0, Remote VR 1, Current retransmit count 0 Hold queue: 0/200 IFRAMEs 16/12 TESTs 0/0 XIDs 0/0, DMs 0/0 FRMRs 0/0 RNRs 316/0 SNRMs 2/0 DISC/RDs 1/0 REJs 0/0 Poll: clear, Poll count: 0, ready for poll, chain: 01/01 Last input 0:00:00, output 0:00:00, output hang never Last clearing of "show interface" counters 1d06 Output queue 0/40, 0 drops; input queue 0/75, 0 drops 5 minute input rate 0 bits/sec, 1 packets/sec 5 minute output rate 0 bits/sec, 1 packets/sec 332226 packets input, 664647 bytes, 0 no buffer Received 0 broadcasts, 0 runts, 0 giants 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort 332227 packets output, 665220 bytes, 0 underruns 0 output errors, 0 collisions, 3444 interface resets, 0 restarts 0 output buffer failures, 0 output buffers swapped out 5 carrier transitions DCD=up DSR=up DTR=up RTS=up CTS=up
此输出的部分说明如下:
MTU是接口使用的缓冲区的物理大小。
PRIMARY(DCE)表示这是线路上的轮询站,我们提供时钟。如果我们查看连接到实际主交换机的一侧,则此输出将是SECONDARY。
N1是SDLC帧的可用大小值,可由路由器的串行接口容纳。
T1是我们预期在线路超时之前对轮询进行应答的时间量。
poll-pause-timer是轮询之间的增量时间(以毫秒为单位)。
k是窗口大小或在轮询总决赛之间我们可以有的未处理帧数。
state是会话的当前状态,可以是以下状态之一:
断开连接
已连接
THEMBUSY(通常由此路由器接收RNR而设置。)
USBUSY(通常是因为没有在网络端得到响应。)
RNR是发送/接收的RNR数。
DTR/RTS是大多数半双工多丢包环境中使用的线路。在调试任何STUN环境并查看控制器位置时,请密切注意RTS。如果DTR和CTS较高时间歇性关闭,则很可能是DTE为半双工。
对于STUN,最后一个重要的show命令是show tcp命令,该命令提供有关对等体之间TCP会话的信息。输出示例如下所示:
Stand-alone TCP connection from host 10.17.5.1 Connection state is ESTAB, I/O status: 1, unread input bytes: 0 Local host: 10.17.5.2, Local port: 1994 Foreign host: 10.17.5.1, Foreign port: 11035 Enqueued packets for retransmit: 0, input: 0, saved: 0 Event Timers (current time is 0x1B2E50): Timer Starts Wakeups Next Retrans 229 0 0x0 TimeWait 0 0 0x0 AckHold 229 0 0x0 SendWnd 0 0 0x0 KeepAlive 0 0 0x0 GiveUp 0 0 0x0 PmtuAger 0 0 0x0 iss: 2847665974 snduna: 2847667954 sndnxt: 2847667954 sndwnd: 9728 irs: 3999497423 rcvnxt: 3999499452 rcvwnd: 9672 delrcvwnd: 568 SRTT: 300 ms, RTTO: 607 ms, RTV: 3 ms, KRTT: 0 ms minRTT: 0 ms, maxRTT: 300 ms, ACK hold: 300 ms Flags: passive open, higher precedence Datagrams (max data segment is 1460 bytes): Rcvd: 459 (out of order: 0), with data: 229, total data bytes: 2028 Sent: 457 (retransmit: 0), with data: 228, total data bytes: 1979
排除STUN配置故障与任何点对点约定相同。如果您在传输过程中遇到问题,在开始排除SDLC/STUN部分故障之前,需要先诊断此问题。通常,第一步是从对等设备ping以确保IP设置正确。此外,使用扩展数据包类型ping以确保传输可靠。
本节介绍STUN基本设置的故障排除。在本例中,假设WAN运行正常。
此方案具有将5494连接到AS/400的STUN基本设置。使用任何STUN设置要检验的第一件事是对等体是在路由器中设置的。要确定这一点,请使用show stun peer命令。它提供有关对等体状态和发送/接收的数据包的信息。输出示例如下所示:
rick#sh stun peer This peer: 10.17.5.2 *Serial2 (group 1 [basic]) state rx_pkts tx_pkts drops all TCP 10.17.5.1 open 5729 5718 0
如果对等体如上所示处于打开状态,请使用show 接口命令确定数据包的情况。此命令的输出示例如下所示:
Serial2 is up, line protocol is up Hardware is CD2430 in sync mode MTU 1500 bytes, BW 115 Kbit, DLY 20000 usec, rely 255/255, load 1/255 Encapsulation STUN, loopback not set Last input 1:10:40, output 0:18:12, output hang never Last clearing of "show interface" counters 0:21:49 Output queue 0/40, 0 drops; input queue 0/75, 0 drops 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute output rate 0 bits/sec, 0 packets/sec 0 packets input, 0 bytes, 0 no buffer Received 0 broadcasts, 0 runts, 0 giants 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort 4 packets output, 312 bytes, 0 underruns 0 output errors, 0 collisions, 0 interface resets, 0 restarts 0 output buffer failures, 0 output buffers swapped out 0 carrier transitions DCD=up DSR=up DTR=up RTS=up CTS=up
首先,检验路由器是否已启动所有串行信号。在上述输出的底部,我们可以看到2522上“Serial2”的所有信号都为“up”。DTR和RTS表示控制器已激活线路本身并等待AS/400发送初始会话。
接下来,检查show interface以查找路由器的AS/400端。在下面显示的输出中,我们看到连接到AS/400的串行接口处于关闭/关闭状态。这意味着AS/400可能“不同”。 如果线路“变化开”,并且您无法接通线路或运行半双工,则需要检查RS-232/V.35连接。
Serial1 is down, line protocol is down Hardware is HD64570 MTU 1500 bytes, BW 1544 Kbit, DLY 20000 usec, rely 255/255, load 1/255 Encapsulation STUN, loopback not set Last input never, output 1:51:24, output hang never Last clearing of "show interface" counters 0:00:01 Output queue 0/40, 0 drops; input queue 0/75, 0 drops 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute output rate 0 bits/sec, 0 packets/sec 0 packets input, 0 bytes, 0 no buffer Received 0 broadcasts, 0 runts, 0 giants 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort 0 packets output, 0 bytes, 0 underruns 0 output errors, 0 collisions, 0 interface resets, 0 restarts 0 output buffer failures, 0 output buffers swapped out 0 carrier transitions DCD=up DSR=up DTR=down RTS=down CTS=up s5e#
此时,请检查该特定控制器的“使用配置状态”,该控制器是AS/400屏幕,如下所示:
接下来,根据行定义进行更改。然后,您应该看到路由器已连线up/up。如果线路接通/接通但控制器仍未接通,请检查接口以验证是否有数据包从AS/400进入接口。如果计数为零,请检查AS/400上SDLC线路的编码机制。该机制位于显示行描述中,如下所示。
注意:在此屏幕上,我们可以看到为NRZI编码设置了行编码。需要在路由器上使用配置选项nrzi-encoding来启用此功能。
此设置不要求NRZ/NRZI编码端到端(如传统SDLC点对点约定),但可以是NRZI,而NRZ可以是NRZ。但请记住,共享SDLC线路的设备之间的编码必须相同。
NRZI需要认真考虑。在Cisco 2500和4500等新路由器中,NRZI通过软件设置。但是,对于较旧的平台(包括Cisco 4000的NP-2T),您需要更改主板本身的跳线。在这种情况下,将AS/400更改为NRZ/NRZI可能更容易。但是,如果需要更改跳线,请参阅思科硬件文档,了解您的特定平台。
如果问题仍然存在,请执行debug stun packet 1。此命令提供以下信息:
STUN basic: 0:00:35 Serial1 SDI: Data: c0bf324c056452530000 %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1, changed state to down %LINK-3-UPDOWN: Interface Serial1, changed state to down STUN basic: 0:00:38 Serial1 SDI: Data: c0bf324c056452530000 %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1, changed state to up %LINK-3-UPDOWN: Interface Serial1, changed state to up %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1, changed state to down STUN basic: 0:00:35 Serial1 SDI: Data: c0bf324c056452530000 %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1, changed state to up %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial1, changed state to down %LINK-3-UPDOWN: Interface Serial1, changed state to down
您可以看到从AS/400流出的多个XID,但没有响应(CO是轮询地址,bf是XID)。 我们知道数据包来自AS/400,因为数据包源自SDI。此命令输出中有两种传入数据包类型:
SDI:串行传入,即从SDLC接口接收的数据包。
NDI:网络传入,即从WAN解封的数据包。
接下来,查看帧本身的XID部分。在本例中,AS/400正在发送XID及其IDBLOCK和IDNUM,05645253。
这是超时问题,因为控制器没有响应。在AS/400中,查看“sysopr message queue”,查看是否存在任何指示问题的消息。出现故障的“SYSOPR”屏幕如下所示。
现在在2522上,打开debug stun packet 1,查看数据包是否正被发送到控制器。命令输出示例如下所示:
STUN basic: 0:00:34 Serial2 NDI: Data: c0bf324c056452530000 STUN basic: 0:00:42 Serial2 NDI: Data: c0bf324c056452530000
这表明,源自AS/400端的XID正在通过控制器,但控制器没有响应,这意味着它是控制器问题。show interface显示所有控制线索是否都处于打开状态:
Serial2 is up, line protocol is up Hardware is CD2430 in sync mode MTU 1500 bytes, BW 115 Kbit, DLY 20000 usec, rely 255/255, load 1/255 Encapsulation STUN, loopback not set Last input 0:50:56, output 0:00:23, output hang never Last clearing of "show interface" counters 0:02:06 Output queue 0/40, 0 drops; input queue 0/75, 0 drops 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute output rate 0 bits/sec, 0 packets/sec 0 packets input, 0 bytes, 0 no buffer Received 0 broadcasts, 0 runts, 0 giants 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort 1 packets output, 78 bytes, 0 underruns 0 output errors, 0 collisions, 0 interface resets, 0 restarts 0 output buffer failures, 0 output buffers swapped out 0 carrier transitions DCD=up DSR=up DTR=up RTS=up CTS=up
控制线路已打开,接口显示为up/up。我们还可以看到路由器正在输出数据包,但没有数据包传入。这指向AS/400上配置的轮询地址不正确,因此下一步是验证控制器的轮询地址。
每种类型的控制器都有配置轮询地址的独特方法,因此您需要使用控制器手册来验证这一点。
在本例中,我们发现控制器使用的轮询地址为“DD”。 在AS/400上更改此项后,调试stun数据包的输出将变为:
STUN basic: 0:24:03 Serial2 NDI: Data: ddbf324c056452530000 STUN basic: 0:00:00 Serial2 SDI: Data: ddbf3244073000dd0000 STUN basic: 0:00:00 Serial2 NDI: Data: dd93 STUN basic: 0:00:00 Serial2 SDI: Data: dd73 STUN basic: 0:00:00 Serial2 NDI: Data: dd11 STUN basic: 0:00:00 Serial2 SDI: Data: dd11 STUN basic: 0:00:00 Serial2 NDI: Data: dd11 STUN basic: 0:00:00 Serial2 SDI: Data: dd102f00000200016b80 STUN basic: 0:00:00 Serial2 NDI: Data: dd31 STUN basic: 0:00:00 Serial2 SDI: Data: dd11 STUN basic: 0:00:00 Serial2 NDI: Data: dd31 STUN basic: 0:00:00 Serial2 SDI: Data: dd11 . . . . STUN basic: 0:00:00 Serial2 NDI: Data: dd31 STUN basic: 0:00:00 Serial2 SDI: Data: dd71 STUN basic: 0:00:00 Serial2 NDI: Data: dd362f00020080004b80 STUN basic: 0:00:00 Serial2 NDI: Data: dd31 STUN basic: 0:00:00 Serial2 NDI: Data: dd53 STUN basic: 0:00:00 Serial2 SDI: Data: dd73
此调试输出有助于确定以下信息:
STUN basic: 0:24:03 Serial2 NDI: Data: ddbf324c056452530000
此行包含从AS/400到控制器的XID。这来自NDI(来自云)、dd(轮询地址)、bf (XID)以及IDBLOCK和IDNUM(05645253)。
STUN basic: 0:00:00 Serial2 SDI: Data: ddbf3244073000dd0000
这是来自控制器的响应。这由SDI(来自SDLC行)指示,与上面相同,但XID响应(073000dd)除外,因为这是5494。
STUN basic: 0:00:00 Serial2 NDI: Data: dd93
这是从AS/400到控制器的SNRM(93),是此配置中的主控制器。
STUN basic: 0:00:00 Serial2 SDI: Data: dd73
此处我们看到控制器响应(SDI),UA(73),这意味着会话已启动并运行。接下来,我们应该看到AS/400断开的连接,因为线路不同。
STUN basic: 0:00:00 Serial2 NDI: Data: dd53 STUN basic: 0:00:00 Serial2 SDI: Data: dd73
这些行显示DISK(53)和UA响应。线路现在关闭。下表包含调试这些问题所需的值。
控制字段 — 未编号(1字节) | ||
---|---|---|
000z 0011 0001 0111 0001 0111 0001 1111 0011 0011 0101 0011 0101 0011 0101 0011 0111 0011 1001 0011 1001 0111 101z 1111 110z 0111 111z 0011 |
03-13 UI 07-17 SIM 07-17 RIM 0F-1F DM 23-33 UP 43-53 DISC 43-53 RD 43-53 RD 63-73 UA 83-93 SNRM 87-97 FRMR AF-BF XID C7-D7 CFGR E3-F3 TEST |
Unnumbered Information Set Initialization mode Request Intialization Mode Secondary in Disconnect Mode Unumber Poll Disconnect Request Disconnect Secondary Requests Disconnect Unnumbered Acknowledgement Set Normal Response Mode Frame Reject Exchange Identification Configure I-Field contains test pattern |
控制字段 — 监督(2字节) | ||
---|---|---|
rrrz cc01 rrrz 0001 rrrz 0101 rrrz 1001 |
xx-xx x1-x1 x5-x5 x9-x9 |
Supervisory Format Receiver Ready Receiver Not Ready Reject |
控制字段 — 信息帧(2字节) | ||
---|---|---|
rrr1 sssz |
xx-xx |
Information format |
密钥:
z=轮询最终位可以是0或1
rrr =预期接收的块数
sss =发送的块数
本节介绍配置了本地确认的相同场景。
与STUN Basic不同,STUN SDLC要求您指定正确的轮询地址,否则路由器甚至看不到数据包进入。这就是为什么有时在您没有信息或无法到达主机或AS/400时使用STUN Basic来查找轮询地址的原因。上图显示了具有本地确认的多点方案。
在传统的点对点环境中,轮询会端到端。引入本地确认后,轮询将在云的每一端终止,因此每台路由器必须维护一个有限状态机。此计算机跟踪所有会话,需要了解每个轮询工作站的线路状态。因此,您必须确保站点遵循SDLC协议。
首先,验证您处于正确的STUN角色。AS/400在传统点对点环境中难以与控制器协商角色。行说明如下所示。
这显示路由器接口需要配置为辅助角色。请始终检查该行并验证它是*PRI ,因为创建时AS/400默认为*NEG。NRZI设置为*YES,因此您需要对nrzi编码编码。此外,代码空闲字符标记,并使用sdlc k 1将窗口设置为一(1)。(有关接口上需要空闲字符标记的原因的详细说明,请参阅FNA-IOS-0696-02现场警报。) 此编码如下所示:
interface Serial1 no ip address encapsulation stun idle-character marks nrzi-encoding clockrate 56000 (real clockrate on the line; see note about as400 line speed) stun group 1 stun sdlc-role secondary (this must be secondary because the line is primary) sdlc K 1 sdlc address 01 sdlc address DD stun route address 1 tcp 10.17.5.2 local-ack stun route address DD tcp 10.17.5.2 local-ack
注意:路由器提供的时钟频率与AS/400线路上配置的线路速度参数无关。(此参数用于性能计算;它可以保留为默认值9600。) 线路上配置的Exchange标识符是AS/400的标识符,例如AS/400将发送的XID。Maximum controllers是可以创建并附加到此行的PU(控制器)数。
连接到此线路的两个控制器中的第一个控制器IBM 5494显示在下面的屏幕中。
我们可以看到,第一个控制器将是PU 2.1,因为控制器的类别是“*APPC”。 这是Advance Program-to-Program Communications的缩写,只能通过T2.1连接完成。远程网络标识符再次与APPN/APPC相关,称为“NETID”。 "*NETATR"是一个参数,它指定使用在数据区中定义的NETID,称为“网络属性”。 您可以使用命令DSPNETA显示此数据区域,并相应地替换这些值。“远程控制点”或“CP_name”是您在PU2.1中配置的控制点名称。在本例中为CP5494。数据链路角色可保留为*NEG。“站地址”需要与在辅助接口和其中一个主接口上配置的“sdlc地址DD”匹配。
interface Serial2 no ip address encapsulation stun nrzi-encoding clockrate 56000 stun group 1 stun sdlc-role primary sdlc address DD stun route address DD tcp 10.17.5.1 local-ack
您可以看到,控制器描述中的大多数信息都与物理设备本身有关,在路由器中不可配置。
在此屏幕上,第二个控制器(PU)实际上是3174,它是PU类型2。在此3174中配置的XID是05600001。使用的“站地址”(即sdlc地址)是01。您需要在辅助接口上配置“sdlc地址01”,以及一个远程接口主接口。如下所示,PU2的配置比PU2.1的配置少。
interface Serial3 no ip address encapsulation stun clockrate 19200 stun group 1 stun sdlc-role primary sdlc address 01 stun route address 1 tcp 10.17.5.1 local-ack
AS/400中的显示网络属性(DSPNETA)如下所示:
此屏幕显示AS/400当前已配置为网络ID“NETA”,这意味着5494需要配置到同一网络。此配置以及APPN特定配置的其余部分可在5494的第二个配置屏幕中找到。AS/400的本地控制点名称是“RTP400A”。 AS/400的LU名称是“LU9404”;这需要与5494的Partner LU定义字段中配置的匹配。5494使用的模式描述需要与设备描述中的内容匹配。例如,如果设备显示“*NETATR”,则需要匹配默认值“BLANK”。
为5494创建的APPC设备说明如下所示。
此屏幕显示5494的设备说明具有远程CP名称“CP5494”;这需要与5494上配置的匹配。NETID和Local Location已默认为“*NETATR”,在上一个示例中已编码为LU9404和NETA。同样,这些字段需要与5494中的合作伙伴LU名称和NETID字段匹配。
与建立连接相关的设备配置的最后一部分如下所示。
此屏幕显示设备描述中使用的模式是“QRMTWSC”。 这不是*NETATR中的默认值,因此表示它已在设备描述中被覆盖。这是IBM作为AS/400上基本APPN支持的一部分提供的默认模式之一。如果您看到任何不同,请与IBM联系,因为IBM运行的模式描述是他们创建的。本示例建立基本连接;如果要显示有关可用模式的信息,可使用命令WRKMODD或工作模式说明。
模式说明如下所示。
此屏幕清楚地标识IBM提供的模式定义。
在使用AS/400的多点环境中执行本地确认时,请注意AS/400、SYS/38和SYS/36小型大型机上是如何实施“SDLC全双工多点接口”的。FNA-IOS-0696-02现场警报(包括在下面)说明了这种情况下可能发生的问题类型。
如果AS/400已应用IBM PTF# MF10030,将“载波检测”连接到接地的路由器电缆修改将不会阻止定期从AS/400重置SDLC线路。此警报仅适用于与AS/400的STUN全双工多丢包连接,其中路由器SDLC电缆已修改为禁用载波检测。
用户可能会经历STUN连接和所有SDLC辅助设备的定期重置,导致连接不可靠。
在多丢弃环境中,AS/400的行为与其他IBM设备不同。FEP接受0x7E字符(标志)或0xFF字符(标志)作为帧之间的“空闲”空间,而AS/400则以不同方式处理标志和标记。仅标记被解释为空闲字符。标志被解释为“线路仍处于活动状态 — 更多数据处于挂起状态”。 思科路由器可以配置为发送标志或标记,但不能同时发送两者。它不会在两者之间交替,以反映线路状态。默认为路由器发送标志。
这种差异在全双工多丢包环境中造成了问题。通常,AS/400会从设备到设备,轮询每个设备以获取数据。如果设备无法响应,而AS/400认为线路仍处于活动状态,则会重置整个线路。由于默认设置是路由器发送标志,因此AS/400将始终看到活动线路,并且将线路重置,而不是简单地轮询下一台设备。
为避免此问题,思科过去建议对电缆进行修改,以禁用载波检测(CD)信号。此修改利用AS/400逻辑,该逻辑将缺少载波解释为“空闲线路状态”。 因此,通过修改,AS/400始终会检测空闲线路状态,而不管路由器发送的帧间字符如何。因此,如果辅助设备无法响应,AS/400将检查CD,查看空闲线路并继续轮询下一站。
最近,IBM发布了AS/400问题修复PTF# MF10030,该问题更改了多丢包线路上的载波检测逻辑。安装此修复程序后,AS/400会完全忽略全双工多丢弃线路上的CD状态。因此,思科电缆修改在防止定期线路重置方面不再有效。
根据路由器型号和运行的Cisco IOS版本,有两种解决方法可用。这两个选项都要求对连接到AS/400的路由器进行配置更改。
将SDLC空闲字符从默认标志字符更改为标记字符。可使用路由器接口配置命令更改空闲字符:
idle-character marks
将此命令添加到连接到AS/400的SDLC串行接口。此命令将使路由器始终传输标记字符,以便在帧之间暂停。因此,如果辅助设备未通过轮询,AS/400将看到一条空闲线路并继续轮询下一台设备。遗憾的是,这也意味着即使有更多数据帧从设备传输出去,AS/400也会看到空闲。即使轮询/最终位为0,AS/400也只会确认第一个帧。然后,它将忽略所有后续帧,并轮询导致不必要帧重新传输的下一台设备。为避免重新传输,您还必须使用以下命令将SDLC窗口大小设置为1:
sdlc k 1
注: idle-character命令在Cisco IOS版本10.0(5.2)及更高版本中受支持,适用于2500s、4x00(带NP-4T)和70x0/75xx路由器。
使用interface命令启用非活动辅助设备检测:
stun quick-response
此命令将使路由器对由AS/400轮询的任何非活动辅助设备响应“断开模式”(DM)帧。然后,AS/400将继续轮询下一台设备,而不重置线路。
注意:Cisco IOS 11.1、11.0(3.1)及更高版本或10.3(7.2)及更高版本支持此命令。
提示:如果在配置快速响应时出现多点线路的问题,请使用选项1。路由器中的stun快速响应代码是本地确认的有限状态机的一部分,它可能会与某些PU失步。我们在实验中测试了代码,并验证了其与5494、5394和Perl494E的互操作性。如果您尝试连接的PU的计时器设置与quick_response预期的计时器设置不同,则可能会遇到问题。