协议通常定义为两台设备之间的通信规则。信令协议定义了两个ATM接口之间的通信规则,这两个ATM接口使用信令消息创建按需虚电路(SVC)来传送用户数据。ATM接口实际上支持一个信令协议栈,其中包括来自Q.2931用户网络接口(UNI)协议的“用户”信令消息和特殊信令ATM适配层(SAAL)。 SAAL由服务特定连接面向协议(SSCOP)和服务特定协调功能(SSCF)组成。
显然,ATM信令引入了许多首字母缩略词,这些首字母缩略词在SSCOP真正执行简单任务时会使SSCOP显得复杂,即在UNI中传输信令消息。
了解SSCOP是调查意外LAN仿真(LANE)客户端状态更改的原因时的关键故障排除工具。当发生此类更改时,路由器会将以下消息打印到日志中。
注意:由于空间限制,以下输出行显示在多行上。
Aug 25 18:32:59.973 MEST: %LANE-5-UPDOWN: ATM0.1 elan default: LE Client changed state to down Aug 25 18:32:59.981 MEST: %LANE-5-UPDOWN: ATM0.39 elan admin: LE Client changed state to down
本文档提供有关SSCOP的简单理论。它使用简单表来描述SSCOP协议数据单元(PDU)、序列号和状态变量,然后显示debug sscop events命令的输出,以说明PDU、编号和变量在Cisco路由器上的显示方式。
注意:本文档重点介绍充当UNI用户端的Cisco路由器。本文档不讨论网络到网络接口(NNI)信令。
本文档没有任何特定的要求。
本文档不限于特定的软件和硬件版本。
有关文件规则的更多信息请参见“ Cisco技术提示规则”。
ATM既是协议,也是协议栈。请务必考虑下图,并注意三个协议栈如何在支持信令和网络管理的ATM接口上并行运行。每个协议栈为接口的成功操作提供不同的功能。
控制层面 | 用户平面 | 管理平面 | |
---|---|---|---|
Q.2931 UNI信令 | 语音、视频或数据 | 集成本地管理接口(ILMI) | |
SAAL | SSCF | ATM适配层(AAL) | AAL |
SSCOP | |||
公共部件融合子层(CPCS) | |||
ATM 层 | |||
物理层 — SONET/同步数字层级(SDH)、DS3、E3、T1等 |
在用户平面上,最常见的AAL是AAL5,它提供8字节的报尾。SAAL代表AAL5的变体。它的不同之处在于,它是由SSCOP和SSCF组成的服务特定融合子层(SSCS)。下图说明了以下层:
--------------------------------------------- | "User Data" Q.2931 | ------------------------------------------------------- | Service Specific Convergence Sublayer | | | Consists of SSCOP and SSCF | SAAL | --------------------------------------------- Layer | | CPCS | | ------------------------------------------------------- | ATM | --------------------------------------------- | PHY | ---------------------------------------------
ATM接口传输“带外”或常规数据连接带宽外的信令消息。它们使用配置了特殊Q.2931 SAAL(QSAAL)封装类型的专用永久虚拟连接(PVC)。
在ATM路由器接口上发出pvc vpi/vci命令以配置QSAAL PVC。
7500-3.4(config)# interface atm 3/0 7500-3.4(config-if)# pvc 0/5 ? ilmi Configure the management PVC for this interface qsaal Configure the signaling PVC for this interface <cr> 7500-3.4(config-if)# pvc 0/5 qsaal
Cisco ATM交换机在每个接口上都预配置了QSAAL PVC。请发出show atm vc interface atm命令以确认此默认配置。
ls1010-2# show atm vc interface atm 0/0/2 Interface VPI VCI Type X-Interface X-VPI X-VCI Encap Status ATM0/0/2 0 5 PVC ATM2/0/0 0 45 QSAAL UP ATM0/0/2 0 16 PVC ATM2/0/0 0 37 ILMI UP
SSCOP在多项国际电信联盟电信标准化部门(ITU-T)建议中定义。Q.2110建议提供与ATM路由器接口上与SSCOP相关的问题故障排除最相关的信息。
Q.2100 — 定义SAAL的结构。
Q.2110 — 将SSCOP定义为协议实体。
Q.2130 — 定义UNI接口的SSCF。
Q.2140 — 定义NNI接口的SSCF。
I.363 — 定义CPCS。
注意:UNI和NNI接口使用不同版本的SSCF。本文档不讨论NNI。
SSCOP是一种传输协议,它为位于信令协议栈中的信令协议提供有保证的、按顺序的消息传送。SSCOP还执行流量控制、向管理平面报告错误以及保持连接功能。
下表介绍SSCOP为ATM接口提供的许多重要功能:
功能 | 描述 |
---|---|
信令消息的顺序和可靠传输 | 由UNI Q.2931协议生成的信令消息在信令堆栈中构成“用户数据”。SSCOP通过序列号和选择性重传来保留这些消息的顺序。请注意,SSCOP不检查信令消息本身的内容。 |
流控制 | 设置对等ATM接口发送SSCOP消息的速率的限制。 |
报告错误 | 检测并报告SSCOP自身操作中的错误。 |
保持连接 | 定期交换POLL消息,以确保两端和连接本身都保持运行和活动状态,尤其是在不传输信令消息的期间。 |
本地数据检索 | 对尚未“释放”或被对等ATM接口确认的信令消息维护统计信息(可使用show sscop命令查看)。 |
状态报告 | 提供用于传达状态信息的消息,包括与管理平面通信的信息。 |
ATM UNI接口使用Q.2931作为信令协议。SSCOP将Q.2931消息加到4字节的倍数,并附加SSCOP特定信息的尾部,该尾部始终是4字节的倍数。
+------------------------------------------------+ | Q.2931 Signalling Messages | SSCOP Trailer | +---------------------------------------------------------------+ | AAL5 CPCS Service Data Unit (SDU) | AAL5 Trailer | +---------------------------------------------------------------+
SSCOP报尾的内容因PDU的类型而异,下一节“SSCOP消息或PDU”中对此进行了说明。此图显示POLL PDU的SSCOP报尾的格式:
--------------------------------------------------- | Reserved | N(PS) | --------------------------------------------------- | Reserved | PDU Type | N(S) | ---------------------------------------------------
SSCOP使用15种消息类型或PDU来执行其许多功能。show sscop命令提供有关发送和接收的每个PDU数量的统计信息。在此输出示例中,ATM接口3/0发送和接收了11个PDU,包括8个轮询PDU和1个开始PDU:
7500# show sscop atm 3/0 SSCOP details for interface ATM3/0 Current State = Active, Uni version = 4.0 [output omitted] Statistics - Pdu's Sent = 11, Pdu's Received = 11, Pdu's Ignored = 0 Begin = 1/1, Begin Ack = 1/1, Begin Reject = 0/0 End = 1/0, End Ack = 0/1 Resync = 0/0, Resync Ack = 0/0 Sequenced Data = 0/0, Sequenced Poll Data = 0/0 Poll = 8/8, Stat = 8/8, Unsolicited Stat = 0/0 Unassured Data = 0/0, Mgmt Data = 0/0, Unknown Pdu's = 0 Error Recovery/Ack = 0/0, lack of credit 0
下表根据功能对SSCOP消息进行分组:
功能 | 消息缩写 | 消息名称 | 描述 |
---|---|---|---|
连接建立 | BGN | 开始 | 启动两个ATM接口之间的SSCOP连接过程。初始化对等缓冲区以及传输和接收计数器。 |
BGAK | 开始确认 | 确认对等连接请求。 | |
BGREJ | 开始拒绝 | 拒绝对等连接请求。对等体重新传输BGN PDU,并继续启动连接。 | |
连接拆卸 | 结束 | 结束 | 释放两个对等ATM设备之间的连接。 |
恩达克 | 结束确认 | 确认释放请求。 | |
重新同步 | RS | 重新同步 | 重新同步消息缓冲区以及发射器和接收器状态变量或计数器。 |
RSAK | 重新同步确认 | 确认重新同步请求。 | |
错误恢复 | ER | 错误恢复 | 从活动连接期间发生的错误中恢复。 |
埃拉克 | 错误恢复确认 | 确认错误恢复请求。 | |
有保证的数据传输 | 标清 | 顺序数据 | 将“用户”消息从UNI Q.2931信令协议传输到对等体。 |
投票 | 状态请求 | 请求有关对等体的状态信息。 | |
STAT | 请求状态响应 | 表示对POLL PDU的响应。提供有关成功接收SD PDU的信息,以及最后一个POLL PDU的序列号。它还包含一个信用值,指示对等体在确认之前可以发送或无法发送的消息数量。 | |
USTAT | 未经请求的状态响应 | 通过分析其他PDU中的序列号来传达已检测到的丢失或丢失的PDU。 | |
无法保证的数据传输 | UD | 未编号数据 | 在对等体之间传输“用户”消息。不包括序列号,如果没有通知,可能会丢失。 |
管理数据传输 | MD | 管理数据 | 将管理信息传输到管理平面。不包括序列号,如果没有通知,可能会丢失。 |
注意:ITU-T Q.2110建议将无效PDU定义为PDU,该PDU的PDU类型代码未知、不对齐32位,或者该PDU的长度不适合指定类型的PDU。
SSCOP遵循状态机,在状态机中,协议本身在激活之前会经过多个状态。当SSCOP转换到另一状态时,一组五个计时器控制(部分控制)。在接口配置模式下发出sscop 命令以查看这些计时器。
7200(config-if)# sscop ? cc-timer timer (in secs) to send BGN/END/RS/ER pdu at the connection control phase idle-timer timer (in secs) to send poll pdu at the idle phase keepalive-timer timer (in secs) to send poll pdu at the transient phase noResponse-timer timer (in secs) at lease one STAT PDU needs to be received poll-timer timer (in msecs) to send poll pdu at the active phase
下表介绍了五种SSCOP计时器:
计时器 | 描述 | 默认值 |
---|---|---|
cc-timer | 连接控制(cc)是用于在两个ATM接口之间建立、释放或重新同步SSCOP连接的一组进程。cc 计时器设置在等待确认时BGN、END或RS PDU重新传输之间的时间。max-cc值设置重试次数。 | 1秒(秒) |
空闲计时器 | 如果连接足够稳定,并且没有要传输的数据消息和未处理的确认,则SSCOP会从计时器保持连接切换到计时器空闲状态。 | 10 秒 |
keepalive-timer | 控制当没有SD PDU排队等待传输或未处理等待确认时,POLL PDU在传输之间的最长时间。 | 5 秒 |
noResponse-timer | 与另外两个计时器(轮询和保持连接)并行运行。设置在响应POLL时必须接收至少一个STAT消息的最长时间间隔。如果此计时器过期,连接将断开。 | 45秒 |
轮询计时器 | 设置当SD PDU排队等待传输或未完成等待确认时,从发送POLL PDU到发送POLL PDU的最长时间。 | 1000毫秒(毫秒) |
发出show sscop atm命令以查看SSCOP计时器的默认值。
7500# show sscop atm 3/0 SSCOP details for interface ATM3/0 Current State = Idle, Uni version = 4.0 Send Sequence Number: Current = 0, Maximum = 30 Send Sequence Number Acked = 0 Rcv Sequence Number: Lower Edge = 0, Upper Edge = 0, Max = 30 Poll Sequence Number = 0, Poll Ack Sequence Number = 1 Vt(Pd) = 0 Vt(Sq) = 0 Timer_IDLE = 10 - Inactive Timer_CC = 1 - Inactive Timer_POLL = 1000 - Inactive Timer_KEEPALIVE = 5 - Inactive Timer_NO-RESPONSE = 45 - Inactive Current Retry Count = 0, Maximum Retry Count = 10 !--- Output suppressed.
ATM接口上的SSCOP进程跟踪两组序列号或状态变量,然后将这些值映射到实际PDU中的字段。具体来说,SD PDU和POLL PDU是按顺序独立编号的。发送器和接收器将序列号保持为状态变量。这些变量随后映射到SSCOP PDU中的实际参数或字段pdu。 show sscop命令显示序列号的当前值。
ATM# show sscop SSCOP details for interface ATM0 Current State = Active, Uni version = 3.1 Send Sequence Number: Current = 79, Maximum = 109 Send Sequence Number Acked = 79 Rcv Sequence Number: Lower Edge = 93, Upper Edge = 93, Max = 123 Poll Sequence Number = 32597, Poll Ack Sequence Number = 32597 Vt(Pd) = 0 Vt(Sq) = 1 Timer_IDLE = 10 - Active !--- Output suppressed.
以下各节介绍状态变量和实际PDU编号。
ATM接口保留一组以VT开头的传输端状态变量。
状态变量 | 名称 | 描述 |
---|---|---|
VT(S) | 发送 | 随每个SD PDU递增的序列号。在重新传输相同的SD PDU时不递增。 |
VT(PS) | 投票发送 | 随每个POLL PDU递增的序列号。 |
VT(A) | 确认 | 预期接下来将被确认的SD PDU的序列号。每次确认SD PDU时递增。 |
VT(PA) | 轮询确认 | 作为对POLL PDU的确认,接收的STAT PDU的序列号预期。 |
VT(MS) | 最大发送 | 发送接口可以发送(接收方将接受)的PDU的最高序列号,但不接收以下PDU之一:USTAT、STAT、BGN、BGAK、RS、RSAK、ER或ERAK PDU。换句话说,VT(MS)定义传输窗口大小。VT(S)不应高于VT(MS)。 |
VT(PD) | 轮询数据 | 在两个轮询PDU之间传输的SD PDU数。SD PDU传输时增量,POLL PDU传输时重置为零。 |
VT(CC) | 连接控制 | 未确认BGN、END、ER或RS PDU的数量。如果ATM接口响应协议错误发送END PDU,SSCOP会直接进入空闲状态,而不会增加VT(CC)值。 |
VT(SQ) | 发射器连接顺序 | 标识重传的BGN、ER和RS PDU。当SSCOP进程启动后,初始化为零,然后映射到N(SQ)。 |
ATM接口保留一组以VR开头的接收端状态变量。
状态变量 | 名称 | 描述 |
---|---|---|
VR(R) | 接收 | 接收方期望的下一个按序SD PDU的序列号。当看到该消息时,该序列号会递增。 |
VR(H) | 预期最高 | SD PDU中预期的最高序列号。从下一条SD或POLL消息更新,应大致等于对等VT(S)。 |
VR(MR) | 最大接收 | 接收方将接受的SD PDU中的最高序列号。换句话说,接收方将允许最多VR(MR)- 1,然后丢弃序列号更高的SD PDU。更新VR(MR)取决于实施。 |
VR(SQ) | 接收器连接顺序 | 用于标识重传的BGN、ER和RS PDU。当ATM接口收到其中一个PDU时,它会将N(SQ)值与其自己的VR(SQ)值进行比较。如果两个值不同,则PDU将作为新消息处理。如果两个值相等,则PDU被标识为重新传输。 |
接收和传输状态变量转换或映射到名称稍有不同的实际PDU参数。下表显示PDU参数及其派生自的状态变量:
参数 | 映射自 | 描述 |
---|---|---|
N(SQ) | VR(SQ) | 在BGN、RS或ER PDU中传输的连接序列号。与接收方的VR(SQ)计数器一起使用,以识别这些PDU的任何重新传输。 |
N(S) | VT(S) | 发送每个SD或POLL PDU中携带的序列号,并随每个新的非重新传输的PDU递增。 |
N(PS) | VT(PS) | 以轮询PDU和匹配的STAT PDU携带,将两条消息关联在一起。 |
N(R) | VR(R) | 在STAT或USTAT PDU中传输的接收序列号。在确认收到一个或多个信令消息时,对等设备发送此序列号。 |
N(MR) | VR(MR) | 在以下PDU中传输:STAT、USTAT、RS、RSAK、ER、ERAK、BGN、BGAK。指示剩余接收信用数以及对等体是否可以发送其他消息。例如,N(MR)值5表示对等体可以发送最多5个PDU,而无需等待响应。 |
以下输出是通过在带PA-A3的7500系列路由器上发出debug sscop event atm 3/0命令来生成的。蓝色注释用于解释debug输出。
*Mar 21 03:18:43.440: SSCOP(ATM3/0): i Begin pdu, Idle state, length = 8 *Mar 21 03:18:43.440: SSCOP(ATM3/0): Rcv Begin in Idle State *Mar 21 03:18:43.440: SSCOP(ATM3/0): receive window in Begin Pdu = 30 *Mar 21 03:18:43.440: SSCOP(ATM3/0): o Begin Ack pdu, Idle state, rcv window v(mr) = 30 !--- A BEGIN PDU is received by the router, which responds with a BEGIN ACK PDU. !--- The window size V(MR) is initialized to 30. *Mar 21 03:18:43.440: SSCOP(ATM3/0): state changed from Idle to Active *Mar 21 03:18:47.968: SSCOP(ATM3/0): o Poll pdu, state = Active, n(s) = 0, n(ps) = 1 *Mar 21 03:18:47.968: SSCOP(ATM3/0): i Stat pdu, Active state, length = 12 *Mar 21 03:18:47.968: SSCOP(ATM3/0): Rcv Stat in Active State *Mar 21 03:18:47.968: SSCOP(ATM3/0): processStatPdu: ps 1, nmr 30, nr 0 *Mar 21 03:18:47.968: SSCOP(ATM3/0): processStatPdu: vtPa 1, vps 1 *Mar 21 03:18:47.968: SSCOP(ATM3/0): processStatPdu: vta 0, vts 0 *Mar 21 03:18:47.968: SSCOP(ATM3/0): processStatPdu: listCount = 0 - normal !--- This is the first outbound POLL PDU and inbound STAT PDU. *Mar 21 03:18:48.040: SSCOP(ATM3/0): * Poll pdu, ns = 0, nps = 1 *Mar 21 03:18:48.040: SSCOP(ATM3/0): o Stat pdu, n(r) = 0, n(mr) = 30, n(ps) = 1 !--- The "*" indicates an inbound POLL PDU from the attached ATM switch. !--- The router responds with an outbound STAT PDU. *Mar 21 03:18:57.292: SSCOP(ATM3/0): o Poll pdu, state = Active, n(s) = 0, n(ps) = 2 *Mar 21 03:18:57.292: SSCOP(ATM3/0): i Stat pdu, Active state, length = 12 *Mar 21 03:18:57.292: SSCOP(ATM3/0): Rcv Stat in Active State *Mar 21 03:18:57.292: SSCOP(ATM3/0): processStatPdu: ps 2, nmr 30, nr 0 *Mar 21 03:18:57.292: SSCOP(ATM3/0): processStatPdu: vtPa 1, vps 2 *Mar 21 03:18:57.292: SSCOP(ATM3/0): processStatPdu: vta 0, vts 0 *Mar 21 03:18:57.292: SSCOP(ATM3/0): processStatPdu: listCount = 0 - normal !--- This is the second outbound POLL PDU and inbound STAT PDU. N(PS) and V(PS) !--- increment to 2. *Mar 21 03:18:58.004: SSCOP(ATM3/0): * Poll pdu, ns = 0, nps = 2 *Mar 21 03:18:58.004: SSCOP(ATM3/0): o Stat pdu, n(r) = 0, n(mr) = 30, n(ps) = 2 *Mar 21 03:19:06.812: SSCOP(ATM3/0): o Poll pdu, state = Active, n(s) = 0, n(ps) = 3 *Mar 21 03:19:06.812: SSCOP(ATM3/0): i Stat pdu, Active state, length = 12 *Mar 21 03:19:06.812: SSCOP(ATM3/0): Rcv Stat in Active State *Mar 21 03:19:06.812: SSCOP(ATM3/0): processStatPdu: ps 3, nmr 30, nr 0 *Mar 21 03:19:06.812: SSCOP(ATM3/0): processStatPdu: vtPa 2, vps 3 *Mar 21 03:19:06.812: SSCOP(ATM3/0): processStatPdu: vta 0, vts 0 *Mar 21 03:19:06.812: SSCOP(ATM3/0): processStatPdu: listCount = 0 - normal *Mar 21 03:19:07.228: SSCOP(ATM3/0): * Poll pdu, ns = 0, nps = 3 *Mar 21 03:19:07.228: SSCOP(ATM3/0): o Stat pdu, n(r) = 0, n(mr) = 30, n(ps) = 3 !--- This is the third outbound POLL PDU and inbound STAT PDU. N(PS) and V(PS) !--- increment to 3. N(MR) remains at 30. N(S), VT(S), and VT(A) remain at 0 since !--- no sequenced Q.2931 "user" data is being transmitted.
debug输出捕获连接建立期间发送的SSCOP消息,并作为keepalive机制的一部分。运行debug命令时,show sscop atm命令的同时捕获显示Pdu的已发送和Pdu的已接收以及轮询和Stat的值递增。
7500# show sscop atm 3/0 SSCOP details for interface ATM3/0 Current State = Active, Uni version = 4.0 Send Sequence Number: Current = 0, Maximum = 30 Send Sequence Number Acked = 0 Rcv Sequence Number: Lower Edge = 0, Upper Edge = 0, Max = 30 Poll Sequence Number = 6, Poll Ack Sequence Number = 6 Vt(Pd) = 0 Vt(Sq) = 1 Timer_IDLE = 10 - Active Timer_CC = 1 - Inactive Timer_POLL = 1000 - Inactive Timer_KEEPALIVE = 5 - Inactive Timer_NO-RESPONSE = 45 - Inactive Current Retry Count = 0, Maximum Retry Count = 10 AckQ count = 0, RcvQ count = 0, TxQ count = 0 AckQ HWM = 0, RcvQ HWM = 0, TxQ HWM = 0 Local connections currently pending = 0 Max local connections allowed pending = 0 Statistics - Pdu's Sent = 9, Pdu's Received = 9, Pdu's Ignored = 0 Begin = 1/1, Begin Ack = 1/1, Begin Reject = 0/0 End = 1/0, End Ack = 0/1 Resync = 0/0, Resync Ack = 0/0 Sequenced Data = 0/0, Sequenced Poll Data = 0/0 Poll = 6/6, Stat = 6/6, Unsolicited Stat = 0/0 Unassured Data = 0/0, Mgmt Data = 0/0, Unknown Pdu's = 0 Error Recovery/Ack = 0/0, lack of credit 0 7500# show sscop atm 3/0 SSCOP details for interface ATM3/0 Current State = Active, Uni version = 4.0 Send Sequence Number: Current = 0, Maximum = 30 Send Sequence Number Acked = 0 Rcv Sequence Number: Lower Edge = 0, Upper Edge = 0, Max = 30 Poll Sequence Number = 7, Poll Ack Sequence Number = 7 Vt(Pd) = 0 Vt(Sq) = 1 Timer_IDLE = 10 - Active Timer_CC = 1 - Inactive Timer_POLL = 1000 - Inactive Timer_KEEPALIVE = 5 - Inactive Timer_NO-RESPONSE = 45 - Inactive Current Retry Count = 0, Maximum Retry Count = 10 AckQ count = 0, RcvQ count = 0, TxQ count = 0 AckQ HWM = 0, RcvQ HWM = 0, TxQ HWM = 0 Local connections currently pending = 0 Max local connections allowed pending = 0 Statistics - Pdu's Sent = 10, Pdu's Received = 10, Pdu's Ignored = 0 Begin = 1/1, Begin Ack = 1/1, Begin Reject = 0/0 End = 1/0, End Ack = 0/1 Resync = 0/0, Resync Ack = 0/0 Sequenced Data = 0/0, Sequenced Poll Data = 0/0 Poll = 7/7, Stat = 7/7, Unsolicited Stat = 0/0 Unassured Data = 0/0, Mgmt Data = 0/0, Unknown Pdu's = 0 Error Recovery/Ack = 0/0, lack of credit 0