IEEE标准802.2将逻辑链路控制(LLC)定义为802.3、802.5和其他网络上使用的数据链路控制层。IBM最初将LLC设计为IBM令牌环体系结构中的子层。
Cisco 建议您了解以下主题:
对LLC的基本了解
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
LLC层提供无连接和面向连接的数据传输。
无连接数据传输通常称为LLC类型1或LLC1。无连接服务不要求您建立数据链路或链路站。启用服务接入点(SAP)后,SAP可以向也使用无连接服务的远程SAP发送信息和从中接收信息。无连接服务没有任何模式设置命令(如SABME),并且不需要维护状态信息。
面向连接的数据传输称为LLC第2类或LLC2。面向连接的服务需要建立链路站。当链路站建立时,需要使用模式设置命令。之后,每个链路站负责维护链路状态信息。
每当系统网络架构(SNA)在LAN或虚拟LAN上运行时,都会实施LLC2。LLC2也直接封装到帧中继中。有时路由器只是传递LLC2帧,有时路由器实施LLC2链路站。NetBIOS也使用LLC。NetBIOS使用LLC1查找资源。然后建立面向连接的LLC2会话。
当启用以下任何功能时,路由器会实施LLC2堆栈:
数据链路交换(DLSw)(连接到LAN)
具有本地ACK的远程源路由桥接(RSRB)
信道接口处理器 (CIP)
高级点对点网络(SNASwitching(SNASw))
同步数据链路控制(SDLC)到LCC转换(SDLLC)
LLC的基本知识足以隔离和解决大多数问题。由于没有要维护的链路状态或会话,因此LLC1中很少出现问题。
在LLC2中,可能出现两类问题:
未建立的会话
已建立间歇性失败的会话
要解决这些问题,您需要了解以下主题:
LLC 帧格式
LLC2 模式与会话的建立
LLC2 异步平衡模式操作
LLC2 错误情况
本节提供有关LLC帧格式的信息。
DSAP/SSAP | 控制 | |||
---|---|---|---|---|
目标服务接入点(1字节) | 控制字段 — 未编号(1字节) | |||
dddd ddxx xxxx xx1x xxxx xxx1 |
Dest. Addr. IEEE Defined Group Address |
CCCC CC11 000F 1111 010P 0011 011F 0011 011P 1111 100F 0111 101z 1111 111z 0011 |
xx-xx 0F-1F 43-53 63-73 6F-7F 87-97 AF-BF E3-F3 |
Unnumbered format Disconnect Mode Disconnect Unnumbered Ack. SABME Frame Reject XID Test |
源服务接入点(1字节) | 控制字段 — 监督(2字节) | |||
ssss ssxx xxxx xx1x xxxx xxx1 |
Source Address IEEE defined Response LPDU |
CCCC CC01 0000 0001 0000 0101 0000 1001 |
xx-xx 01-xx 05-xx 09-xx |
Supervisory Format Receiver Ready Receiver Not Ready Reject |
控制字段 — 信息帧(2字节) | ||||
ssss sss0 |
xxxx |
Information format |
||
P =轮询位设置为“1” F =最终位设置为“1” Z =轮询/最终位设置为“0”或“1” |
LLC帧称为LLC协议数据单元(LPDU),格式如下所示:
DSAP (1 byte)-SSAP (1 byte)-Control Field (1 or 2 bytes)-Information Field (0 or more bytes)
目的服务接入点(DSAP)标识LPDU的目标SAP。DSAP由六个地址位、一个用户位(U)和一个个人/组(I/G)位组成,如下所示:
D-D-D-D-D-D-D-I/G
U位表示地址是由IEEE(1)定义还是由用户定义(0)。 I/G位指示SAP是组地址(1)还是单个地址(0)。 在我们的目的中,这些位都不太重要。您真正需要了解的是,DSAP是LPDU的目的地。一些常见的一遍又一遍。
源服务接入点(SSAP)标识发起LPDU的SAP。SSAP由六个地址位、一个用户位(U)和一个命令/响应(C/R)位组成,如下所示:
S-S-S-S-S-S-U-C/R
U位表示地址是由IEEE(1)定义还是由用户定义(0)。 C/R位指示LPDU是命令还是响应。收到LPDU帧时,C/R位不被视为SSAP的一部分。因此,SSAP通常仅被视为最左侧的七位。
LPDU控制字段包含命令、响应和序列号信息。您需要了解如何解码控制字段以确定特定LLC2会话上发生的情况。但是,解码信息很容易获得。
帧有三种类型:
I帧
监督帧
无编号帧
虽然每种类型对控制字段的格式不同,但通过检查控制字段中的两位,您可以轻松区分它们。
X-X-X-X-X-X-X-0 = I Frame X-X-X-X-X-X-0-1 = Supervisory Frame X-X-X-X-X-X-1-1 = Unnumbered frame
接下来的几节介绍每种控制字段类型。
I帧使您能够在链路站之间传输按顺序编号的LPDU,这些LPDU包含信息(面向连接)。I帧的格式包含NS和NR计数。NS计数是当前传输中LPDU的序列号(模块128)。NR计数是发送方期望接收的下一个LPDU I帧的序列号。为了稍后帮助您,请记住NR表示“下一次接收”。
NS-NS-NS-NS-NS-NS-NS-0-NR-NR-NR-NR-NR-NR-P/F
P/F位称为命令LPDU中的P位和响应LPDU中的F位。命令LPDU中设置P/F位,以请求远程链路站发送具有此位集的响应。对于随P位集发送的每个命令,只能收到一个带F位集的响应。关于P/F位在错误恢复方面的使用,还有一些其他详细信息,但这是一般规则。
监控帧执行监控功能,例如,确认I帧(RR)、请求重新传输I帧(REJ)和请求I帧的临时暂停(RNR)。监控帧不包含信息字段。因此,监控帧不会影响发送站中的NS,因此不包含NS字段。以下是监督帧的格式:
0-0-0-0-S-S-0-1-NR-NR-NR-NR-NR-NR-NR-P/F
“S”位表示监控帧的类型。
B'00' =接收器就绪
站点使用RR指示站点已准备好接收,并包含即将到达的下一个I帧的NR计数。当站点发送RR帧时,站点确认从最多NR - 1的远程站点收到编号为I的帧。
B'01'=接收器未就绪
站点使用RNR指示该站点暂时未准备好接收。RNR还包含遵循相同规则RR的NR计数。RNR的暂时周期并不总是表示网络问题。如果RNR是持续的,请在终端站中查找拥塞。
B'10'=拒绝
站点使用REJ请求重新传输I帧LPDU,以NR计数中指示的编号开头。REJ不表示存在严重问题(这意味着可恢复)。 如果看到许多REJ命令,请查找相反方向的缺失(丢弃)I帧。请勿将REJ与帧拒绝(FRMR)混淆。FRMR是未编号的帧,始终表示严重问题。
无编号帧提供链路控制功能,例如模式设置命令和响应。在某些情况下,还可以发送未编号的信息帧。未编号帧的长度仅为一个字节。它们不包含NR或NRS计数的字段。以下是未编号帧的格式:
M-M-M-P/F-M-M-1-1
“M”位表示未编号帧的类型。
B'00011'=DM响应(0x1F)
链路站发送DM响应以报告其处于异步断开模式。这表示链路未处于活动状态。如果链路站处于活动状态,并突然开始发送DM,则链路站可能已重置。
B'01000'=DISK命令(0x53)
链路站发送DISK以终止异步平衡模式。DISK命令通知远程链路站暂停操作。对DISK命令的正确响应是UA(如果站处于ABM中)或DM(如果站处于ADM中)。
B'01100'=UA响应(0x73)
链路站响应SABME和DISK命令发送UA。
B'01111'=SABME命令(0x7F)
链路站发送SABME以在异步平衡模式下启动数据传输。对SABME的正确响应是UA。当站点收到SABME命令时,该站点将NR和NS计数重置为零。发送站在收到UA响应时也会执行同样的操作。
B'10001'=FRMR响应(0x87)
链路站发送帧拒绝响应,以报告来自另一链路站的传入LPDU中的错误。当您看到FRMR时,发送FRMR的站点检测到不可恢复的错误。这不是错误的原因。在发生FRMR错误后到达的所有帧将被忽略,直到收到DISK或SABME。
FRMR响应包含有关FRMR条件原因的信息。
字节0和1包含导致帧拒绝的LPDU控制字段的内容。字节2和字节3分别包含NS和NR计数。第4字节包含若干位,用于识别错误类型,如下所示:
0-0-0-V-Z-Y-W-X
V位表示控制字段(字节0和1)携带的NS号无效。如果NS大于或等于最后一个NS加上最大接收窗口大小,则NS无效。当出现此情况时,链路站会发送REJ LPDU,而不是FRMR响应。
Z位表示控制字段带有的NR(字节0和1)不指下一个I帧或已传输但未确认的I帧。
注意:多次接收相同的NR计数可以。
仅当计数引用已确认的I帧或计数跳到尚未传输的I帧时,NR计数才无效。前者是此类错误最常见的情况。当您看到此类错误时,通常意味着收到的帧顺序混乱,您应该查找传送帧顺序混乱的网络。发送链路站可能发送它们时顺序混乱,但不太可能。
Y位表示收到的LPDU中I字段的长度超过了可用缓冲区容量。如果出现这种情况,请在终端站而不是网络中查找问题。
X位表示当LPDU不能包含时,该LPDU包含I字段,或者收到不包含5个字节的FRMR响应。这似乎是终端站问题,而不是网络问题。
W位表示收到不受支持的LPDU。这是终端站问题。
B'10111' XID命令或响应
链路站使用XID命令来传达发送节点的特征,并使远程链路站以XID响应来响应。链路站可以以各种格式发送和接收XID,包括SNA格式。
B'11100' TEST命令或响应
链路站发送TEST命令,使远程链路站尽快响应TEST响应。TEST命令通常用于源路由桥接环境中的路径发现。
价值 | 无编号帧 |
---|---|
0x0F或0x1F | 断开模式(DM)响应 |
0x43或0x53 | 断开连接(DISK)命令 |
0x63或0x73 | 未编号确认(UA)响应 |
0x6F或0x7F | 设置异步平衡模式(SABME)命令 |
0x87或0x97 | 帧拒绝(FRMR)响应 |
0xAF或0xBF | Exchange Id(XID)命令或响应 |
0xE3或0xF3 | 测试(TEST)命令或响应 |
价值 | 监督帧 |
---|---|
0x01 | 接收器就绪(RR) |
0x05 | 接收方未就绪(RNR) |
0x09 | 拒绝(REJ) |
价值 | 信息框架 |
---|---|
0bnnnnnn0 | 信息帧(INFO) |
LLC2有两种操作模式:
扩展的异步平衡模式
异步断开模式
ABME是两个链路站之间的平衡操作模式。平衡模式是指任一站点可以随时发送命令,而与其他链路站点无关。请比较SDLC,它以不平衡模式运行。在不平衡模式下,辅助站必须等待主站轮询才能发送数据。由于平衡模式操作,在传统意义上,LLC2电路上不会发生轮询。站点确实会发送keepalive来维护会话,但不必频繁发送这些数据来实现SDLC中的最佳性能。因此,keepalive计时器通常为10秒或更长。必须注意的是,终端站可以增加此保持连接计时器以减少开销。增加keepalive计时器不会对吞吐量或响应时间产生负面影响。
站点在向SABME发送或接收UA命令后进入ABME。在ABME中,站点可以发送和接收编号信息帧。
在站点终止ABME之前和之后,站点处于异步断开模式。在ADM中,链路在逻辑上断开;因此,不能发送I帧或监控帧。站点可以在以下条件下输入ADM:
收到DISK命令
链路站已激活
收到DM响应
重试限制已用尽
以下是链路站激活序列的示例:
To1 4000.0840.0001 8800.5a94.7d94 SABME F0F07F To1 4000.0840.0001 8800.5a94.7d94 UA F0F173 To 1 4000.0840.00018800.5a94.7d94 RR nr=0 F0F001 To1 4000.0840.0001 8800.5a94.7d94 INFO nr=0 ns=0 F0F00000 ... To1 4000.0840.0001 8800.5a94.7d94 RR nr=1 F0F101 To1 4000.0840.0001 8800.5a94.7d94 INFO nr=1 ns=1 F0F00202 ... To1 4000.0840.0001 8800.5a94.7d94 RR nr=2 F0F101 To1 4000.0840.0001 8800.5a94.7d94 INFO nr=2 ns=2 F0F00000 ...
在ASBM中运行的站点对主站或辅助站没有严格的感知。站点传输数据时无需轮询或接受轮询。站点可以异步向任何站点传输数据。站点之间有点对点关系。
即使没有严格的主和辅助感知,发送站也需要链路级响应,即接收站对发送的每个编号信息帧的确认。站点可以继续向另一站点传输I帧,直到未确认的帧数达到限制。此数字称为“窗口大小”,通常默认为7。您可以增加电路上存在大量延迟的窗口大小,以避免发送站停止并等待响应。这通常不是必需的,尤其是在本地确认LLC的情况下。当发送站到达发送窗口时,该站设置轮询位以强制接收站发送响应。在路由器中,窗口大小称为llc2 local-window。
接收站可以选择在一定数量的I帧到达或计时器到期之前暂停确认。这些参数分别称为N3和T2。这样,就可以使用一个RR帧确认多个帧,或在一个I帧上发送确认。思科呼叫N3计数器llc2 ack-max。默认值为3表示路由器在收到三个I帧之前,或直到T2计时器或llc2 ack-delay-time过期,才会保留确认。
在不考虑合作伙伴站的情况下修改这些参数可能会影响响应时间和吞吐量。例如,考虑如果发送站本地窗口设置为5,而接收站的ack-max值为7,ack-delay-time值为500毫秒,会发生什么情况。
在这种情况下,发送站发送五个帧,然后等待确认再继续。由于接收方在收到七帧之前会保留确认,因此在500毫秒的延迟时间到期之前不会发送确认。如果降低接收站上的ack-max值,可以显着提高性能。
另一个常用LLC2参数称为Ti计时器。路由器将其称为llc2 idle-time。Ti计时器的目的是在没有I帧传输的时段内使LLC2会话保持活动状态。如果降低此值,则无法提高吞吐量和性能。当Ti计时器到期时,会发送RR帧,并打开轮询位以引起接收方的响应。如果站未响应,则在llc2 tpf-time之后重试该站,直到lc2 n2定义的重试次数过期。当时,会话被中断。
增加空闲时间以减少LLC2电路的开销量,您可以调整此时间作为本地确认的替代方法。以200个DSPU连接到NCP的示例为例。每个PU维护一个独立的LLC2会话。如果每10秒发送一次keepalive,则每秒有20帧开销。如果将空闲时间增加到30秒,则开销帧的数量将减少到每秒6.67帧。此方法的缺点是,站点需要更长时间才能发现其合作伙伴无法到达。但根据你的情况,这可能是件好事。
命令 | 默认 | 描述 |
---|---|---|
llc2 ack-delay-time>/b> msec | 100 | 当ack-max值未达到时,在发送确认之前等待响应的时间。 |
llc2 ack-max count | 3帧 | 发送确认之前要接收的帧数。 |
llc2 idle-time msec | 10000 | 在空闲时间段内两次轮询之间的时间量。 |
llc2 local-window count | 7帧 | 等待响应之前要发送的帧数。 |
llc2 n2计数 | 8次重试 | 在终止会话之前,在未收到回复的情况下发送未确认的I帧或轮询的次数。 |
llc2 t1-time msec | 1000 | 在重新发送I帧之前等待响应的时间。这次需要足够大,以适应往返延迟。 |
llc2 tbuzy-time msec | 9600 | 轮询已发送RNR的站之前等待的时间。更改该值只是为了增加站点的值,这些站点在清除其状态之前有异常长的繁忙时段。 |
llc2 tpf-time msec | 1000 | 在重新发送轮询帧之前等待最终响应的时间。 |
llc2 trej-time msec | 3200 | 发送REJ后等待正确帧的时间。 |
可以使用show llc命令查看以下参数的值:
ibu-7206#sh llc LLC2 Connections: total of 1 connections TokenRing3/0 DTE: 4001.68ff.0000 4000.0000.0001 04 04 state NORMAL V(S)=5, V(R)=5, Last N(R)=5, Local window=8, Remote Window=127 akmax=3, n2=8, Next timer in 8076 xid-retry timer 0/60000 ack timer 0/1000 p timer 0/1000 idle timer 8076/10000 rej timer 0/3200 busy timer 0/9600 akdelay timer 0/100 txQ count 0/2000
在两端均带令牌环LAN的典型DLSw+网络中,LLC2参数的配置是在传出令牌环接口上进行的。
有两个独立的LLC2会话。因此,请配置LLC2参数,如下所示:
hostname dlsw1 ! source-bridge ring-group 100 ! dlsw local-peer ... dlsw remote-peer ... ! interface token-ring 0 source-bridge 10 1 100 llc2 tpf-timer 2000 llc2 n2 20 hostname dlsw2 ! source-bridge ring-group 100 ! dlsw local-peer ... dlsw remote-peer ... ! interface token-ring 0 source-bridge 20 1 100 llc2 tpf-timer 2000 llc2 n2 20
注意:这些粗略配置仅显示相关的LLC2参数配置。
LLC2参数配置必须将LLC2参数与FEP(到DLSw1路由器)和PC(到DLSw2路由器)匹配。 当中心站点DLSw+对等体在CIP路由器上时,配置稍有不同。
远程DLSw+路由器配置保持不变。但是,中心站点的LLC2会话位于IOS中的CIP和LLC2堆栈之间。CIP代表大型机,从大型机向外到IOS的LLC2参数配置在LAN令牌环(在CIP上)的适配器下。 从IOS到大型机的LLC2参数在传出接口上配置。即接口通道x/2(用于CIP)和接口通道x/0(用于xCPA)。例如:
hostname dlsw1 ! source-bridge ring-group 100 ! dlsw local-peer ... dlsw remote-peer ... ! interface channel 0/2 llc2 tpf-timer 2000 llc2 n2 20 lan tokenring 0 source-bridge 10 1 100 adapter 0 4000.7513.0000 llc2 tpf-timer 2000 llc2 n2 20
注意:这些粗略配置仅显示相关的LLC2参数配置。
如果CIP路由器通过LAN连接到本地站,则只需CIP适配器下的LLC2参数。然后,LLC2参数将与PC的参数匹配。接口通道0/2下的任何LLC2参数都无效。
hostname rtr1 ! source-bridge ring-group 100 ! interface channel 0/2 lan tokenring 0 source-bridge 10 1 100 adapter 0 4000.7513.0000 llc2 tpf-timer 2000 llc2 n2 20
注意:这些粗略配置仅显示相关的LLC2参数配置。
如果设备通过网桥组连接到DLSw+,则LLC2参数在DLSW+网桥组语句上配置,如下所示:
hostname dlsw2 ! dlsw local-peer ... dlsw remote-peer dlsw bridge-group 1 llc2 tpf-timer 2500 n2 20 ! interface ethernet 0 bridge-group 1 bridge 1 protocol ieee
注意:这些粗略配置仅显示相关的LLC2参数配置。
注意:虽然您可以在ethernet 0接口下配置LLC2,但这些参数无效。DLSw网桥组LLC2是Cisco IOS软件版本11.3中的新增功能。
当路由器配置为终端站(例如SNASw和DSPU)时,必须在传出接口上配置LLC2参数。请注意,并非所有虚拟接口都支持配置LLC2参数。例如:
注意:这些粗略配置仅显示相关的LLC2参数配置。
hostname snasw1 ! Interface fastethernet 0/0 llc2 tpf-timer 2000 llc2 n2 20 ! snasw cpname neta.snasw1 snasw port FASTETH0 FastEthernet0/0 conntype nohpr
LLC2会话中的一些错误是正常的,可恢复的,例如偶尔丢失的帧或帧顺序混乱。这通常会导致REJ和重传帧。过多的重新传输不正常,您必须确定原因并解决问题。由于丢弃、多条路径、拥塞和过长延迟,可能会发生过多的重传。
LLC2中的某些错误是不可恢复的,并且始终会导致会话中断。这些错误完全是协议违规。当站点发送未定义的控制字段或其他错误信息时,可能会发生这些错误。这些协议违例可能导致站点发送FRMR响应。发送FRMR响应的站很可能不是违规者,而只是信使。FRMR包含确定发送FRMR的原因的信息,这通常是当站请求另一站重新发送它已经确认的I帧时。由于站点无法重新传输帧(因为它已丢弃该帧),因此它别无选择,只能终止LLC会话。当出现此类错误时,最可能的原因是帧顺序不正确。