安全 : Cisco PIX 500 系列安全设备

PIX/ASA:监控并且排除性能问题故障

2015 年 8 月 28 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 4 月 22 日) | 反馈


目录


简介

本文档说明了可用来监控 Cisco PIX 500 系列/ASA 5500 安全设备的性能并对其性能问题进行故障排除的 PIX/ASA 命令。

注意: 请参阅 ASA 8.3及以上版本:监控并且排除故障相似的故障排除的性能问题在Cisco可适应安全工具(ASA)有版本8.3和以上的。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

本文档中的信息基于 Cisco PIX 防火墙软件版本 6.2(1) 以及更高版本。

注意: 本文档中的信息也可用于运行 7.x 及更高版本软件的 Cisco ASA 5500 系列安全设备。

本文档中的信息都是基于特定实验室环境中的设备创建的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您在使用任何命令前已经了解其潜在影响。

规则

有关文档规则的详细信息,请参阅 Cisco 技术提示规则

故障排除

为了排除性能故障问题,请检查本部分所述的基本区域。

注意: 如果您在 Cisco 设备上使用 show 命令输出了相关信息,您可以使用命令输出解释程序工具仅限注册用户)来显示潜在的问题和解决方法。命令输出解释程序工具支持某些 show 命令。如果要使用命令输出解释程序工具,您必须是注册用户并登录您的 Cisco 帐户,而且您的浏览器必须启用 Javascript。

速度和双工设置

安全设备被预先配置为自动检测接口上的速度及双工设置。然而,存在几种情况,这些情况可能会造成自动协商过程失败,从而导致速度或双工不匹配(以及性能问题)。对于任务关键型网络基础架构,Cisco 对于每个接口的速度和双工采用手动硬编码,这样就避免了发生错误的机会。这些设备通常不会四处移动,因此,如果您适当地配置了它们,您就不需要进行更改了。

在所有网络设备上,可以检测链路速度,但是必须协商双工。如果两个网络设备被配置为自动协商速度和双工,则它们会交换帧(称为快速链路脉冲 (FLP)),这些帧会通告它们的速度和双工能力。对于未知的链路伙伴,这些脉冲类似于普通的 10 Mbps 帧。对于能对脉冲进行解码的链路伙伴,FLP 包含链路伙伴能提供的所有速度和双工设置。接收 FLP 的站点对帧进行确认,设备双方就彼此都能达到的最高速度和双工设置达成一致。如果一个设备不支持自动协商,则另一个设备接收 FLP 并转换到并行检测模式。为了检测伙伴的速度,设备对脉冲长度进行监听,然后相应地设定速度。问题通常发生在双工设置上。因为双工必须进行协商,所以设置为自动协商的设备不能确定另一设备上的设置,因此,它默认为半双工,如 IEEE 802.3u 标准所述。

例如,如果您将 PIX 接口设置为自动协商,并且将它连接到一个 100 Mbps、全双工硬编码的交换机上,则 PIX 会发出 FLP。然而,交换机不会响应,因为它的速度和双工是硬编码的,它不会参与自动协商。由于收不到交换机的响应,PIX 会转换为平行检测模式,检测交换机发出的帧中的脉冲长度。也就是说,PIX 检测到交换机设置为 100 Mbps,因此它会相应地设定接口速度。然而,因为交换机不交换 FLP,所以 PIX 无法检测交换机是否可以运行全双工,因此 PIX 会将接口双工设置为半双工,如 IEEE 803.2u 标准所述。因为交换机硬编码为 100 Mbps 和全双工,而 PIX 已自动协商为 100 Mbps 和半双工(这是它应该采取的操作),结果是双工不匹配,这会造成严重的性能问题。

速度或双工不匹配主要表现在相关端口上的错误计数器的计数增加。最常见的错误是帧、循环冗余校验 (CRCs) 和残帧。如果接口上的这些值增加,则表明发生了速度/双工不匹配或电缆连接问题。在您继续前,您必须解决此问题。

示例

interface ethernet0 "outside" is up, line protocol is up
  Hardware is i82559 ethernet, address is 00d0.b78f.d579
  IP address 192.168.1.1, subnet mask 255.255.255.0
  MTU 1500 bytes, BW 100000 Kbit half duplex
        7594 packets input, 2683406 bytes, 0 no buffer
        Received 83 broadcasts, 153 runts, 0 giants
        378 input errors, 106 CRC, 272 frame, 0 overrun, 0 ignored, 0 abort
        2997 packets output, 817123 bytes, 0 underruns
        0 output errors, 251 collisions, 0 interface resets
        0 babbles, 150 late collisions, 110 deferred

CPU 利用率

如果您注意到 CPU 利用率偏高,为了排除故障,请按照下列步骤操作:

  1. 确认 show xlate count 中的连接计数较低。

  2. 确认内存块正常。

  3. 确认 ACL 数量较高。

  4. 发出 show memory detail 命令,确认 PIX 所用的内存正常使用。

  5. 确认 show processes cpu-hog show processes memory 中的计数正常。

  6. 所有存在于安全设备内部或外部的主机都可能会生成恶意或大量的流量,这些流量可能是广播/组播流量,它们会导致高 CPU 利用率。为了解决此问题,请配置一个访问列表以拒绝主机(端对端)之间的流量并检查使用情况

  7. 检查 PIX 接口中的双工和速度设置。与远程接口的设置不匹配会增加 CPU 利用率。

    本示例显示了因为速度不匹配而造成 input error overruns 的值较大。请使用 show interface 命令验证错误:

    pix#show int e1 
    interface ethernet1 "inside" is up, line protocol is up
      Hardware is i82559 ethernet, address is 0050.54ff.d053
      IP address 172.16.1.5, subnet mask 255.255.255.0
      MTU 1500 bytes, BW 100000 Kbit full duplex
            154755357 packets input, 3132291269 bytes, 0 no buffer
            Received 5352738 broadcasts, 0 runts, 0 giants
            7182 input errors, 0 CRC, 0 frame, 7182 overrun, 0 ignored, 0 abort
            2595913856 packets output, 3842928626 bytes, 0 underruns
            0 output errors, 0 collisions, 0 interface resets
            0 babbles, 0 late collisions, 0 deferred
    

    为了解决此问题,请将相应接口的速度设置为 auto

    注意: Cisco 建议您在所有接口上启用 ip verify reverse-path interface 命令,因为此设置会将没有有效源地址的数据包丢弃,从而减少 CPU 使用率。这适用于面临高 CPU 问题的 FWSM。

  8. 高 CPU 使用率的另一个原因可以归结于太多的组播路由。发出 show mroute 命令,以检查 PIX/ASA 是否接收了太多的组播路由。

  9. 使用 show local-host 命令查看网络是否受到了拒绝服务攻击,该攻击表明网络可能受到病毒攻击。

    注意: 高CPU活动也许发生由于在高CPU描述的问题,当nameif/安全等级为新接口(仅限注册用户)更改。有关更多信息,请参阅思科漏洞 ID CSCsq48636仅限注册用户)。

注意: 如果上述提供的解决方案不能解决此问题,请根据要求升级 ASA 平台。有关自适应安全设备平台功能和能力的更多信息,请参阅 Cisco ASA 5500 系列自适应安全设备产品手册。有关更多信息,请联系 TAC仅限注册用户)。

高内存利用率

以下是造成高内存利用率的可能原因以及相应解决方法:

  • 事件日志记录:事件日志记录会占用大量内存。为了解决此问题,请将所有事件安装并记录到一个外部服务器上,例如 Syslog 服务器。

  • 内存泄漏:安全设备软件中的已知问题可能会导致高内存消耗。为了解决此问题,请升级安全设备软件。

  • 启用调试:调试会占用大量内存。为了解决此问题,请使用 undebug all 命令禁用调试。

  • 阻塞端口:安全设备外部接口上的阻塞端口会导致安全设备占用大量内存来通过指定的端口阻止相关数据包。为了解决此问题,请在 ISP 端阻止恶意流量。

  • 威胁检测:威胁检测功能包括针对各种威胁进行的不同级别的统计信息收集,也包括用以确定主机何时执行扫描的扫描威胁检测功能。关闭这一功能以减少内存消耗。

PortFast、信道和中继

默认情况下,许多交换机(例如运行 Catalyst 操作系统 (OS) 的 Cisco 交换机)都被设计为即插即用设备。因此,在将 PIX 插入交换机时,许多默认端口参数并不是您所需要的。例如,在运行 Catalyst OS 的交换机上,默认情况下,信道和中继设置为自动,而 PortFast 设置为禁用。如果您将 PIX 连接到运行 Catalyst OS 的交换机上,请禁用信道和中继而启用 PortFast。

信道也称为 Fast EtherChannel 或 Giga EtherChannel,用于将两个或更多物理端口捆绑到一个逻辑组中,以增加链路上的总吞吐量。如果端口配置为自动建立信道,它会在链路接通时发出端口聚合协议 (PAgP) 帧,以确定它是否是信道的一部分。如果另一设备设法自动协商链路速度和双工,这些帧可能会造成问题。如果端口上的信道设置为自动,则在链路接通、端口开始转发数据流之前,它将导致大约 3 秒的额外延迟。

注意: 在 Catalyst XL 系列交换机上,默认情况下信道没有设置为自动。为此,您应该在任何与 PIX 连接的交换机端口上禁用信道。

中继也称为交换机间链路 (ISL) 或 Dot1q(通用的中继协议),它将多个虚拟 LAN (VLAN) 结合到单个端口(或链路)上。当两台交换机上定义的 VLAN 都超过一个时,这二台交换机之间通常使用中继。如果端口配置为自动中继,它会在链路接通时发出动态中继协议 (DTP) 帧,以确定它所连接的端口是否想要中继。这些 DTP 帧可能会导致链路自动协商产生问题。如果交换机端口上的中继设置为自动,则在链路接通、端口开始转发数据流之前,它将导致大约 15 秒的额外延迟。

PortFast(也称为快速启动)选项可以告诉交换机,有一个第 3 层设备通过交换机端口与外部连接。端口并不会等待默认的 30 秒(15 秒监听,15 秒学习);相反,这一操作会使交换机在链路接通后立即将端口置于转发状态。重要的是要了解,当您启用 PortFast 时,生成树并没有被禁用。生成树在该端口上仍然处于活动状态。当您启用 PortFast 时,交换机仅仅被通知没有另一台交换机或集线器(只在第 2 层工作的设备)连接到链路的另一端。交换机会绕过正常的 30 秒延迟,同时设法确定是否会让那个端口产生第二层环路。在链路启动后,它仍然参与生成树。该端口会发出网桥数据包数据单元 (BPDU),并且交换机仍然会在该端口监听 BPDU。为此,建议您在连接到 PIX 的所有交换机端口上启用 PortFast。

注意: Catalyst OS 版本 5.4 及更高版本包含 set port host <mod>/<port> 命令,该命令使您可以使用单个命令来禁用信道和中继以及启用 PortFast。

网络地址转换 (NAT)

所有通过安全设备连接的会话都必须经过某种形式的网络地址转换 (NAT)。每个 NAT 或 NAT 过载 (PAT) 会话会被分配一个称为 xlate 的转换插槽。即使您对影响这些 xlate 的 NAT 规则进行了更改,这些 xlate 仍然会存在。在此情况下,进行转换所使用的流量会导致转换插槽耗尽或意外行为的发生,或者两者皆有。本部分说明如何查看和清除安全设备上的 xlate。

注意: 当您在您的配置中添加、更改或者删除 aaa-server、access-list、alias、global、nat、route 或 static 命令后,请务必清除 xlate。

警告 警告: 当您在安全设备上对 xlate 进行全局清除时,所有通过该设备的数据流可能会发生短暂的中断。

使用外部接口 IP 地址的 PAT 的示例 PIX 配置:

global (outside) 1 interface
nat (inside) 1 0.0.0.0 0.0.0.0

流经安全设备的数据流很可能经过 NAT。要查看安全设备上所使用的转换,请发出 show xlate 命令:

pix#show xlate
1 in use, 1 most used
PAT Global 192.168.1.2(1) Local 10.2.2.2 ICMP id 21
pix#show xlate detail
1 in use, 1 most used
Flags: D - DNS, d - dump, I - identity, i - dynamic, n - no random,
       r - portmap, s - static
ICMP PAT from inside:10.2.2.2/22 to outside:192.168.1.2/2 flags ri

即使进行了关键的更改,转换插槽仍然可存在。要清除安全设备上的当前转换插槽,请发出 clear xlate 命令:

pix#clear xlate
pix#show xlate
0 in use, 1 most used

clear xlate 命令会从 xlate 表中清除所有当前的动态转换。要清除某个特定的 IP 转换,您可以以 global [ip address] 为关键字使用 clear xlate 命令。

以下是 NAT 的示例 PIX 配置:

global (outside) 1 10.10.10.10-10.10.10.100
nat (inside) 1 0.0.0.0 0.0.0.0

观察 show xlate 的输出,注意从内部 10.2.2.2 到外部全局 10.10.10.10 的转换:

pixfirewall#show xlate detail
2 in use, 2 most used
Flags: D - DNS, d - dump, I - identity, i - dynamic, n - no random,
       r - portmap, s - static
NAT from inside:10.2.2.2 to outside:10.10.10.10 flags i
NAT from inside:10.5.5.5 to outside:10.10.10.11 flags i

清除 10.10.10.10 全局 IP 地址的转换:

pixfirewall# clear xlate global 10.10.10.10

在本示例中,从内部 10.2.2.2 到外部全局 10.10.10.10 的转换已经被清除:

pixfirewall#show xlate detail
1 in use, 2 most used
Flags: D - DNS, d - dump, I - identity, i - dynamic, n - no random,
       r - portmap, s - static
NAT from inside:10.5.5.5 to outside:10.10.10.11 flags i

当您清除转换插槽时,请务必注意不同类型的转换:

  • 静态 xlate 是用 static 命令创建的持久不变的 xlate。要删除静态 xlate,您必须从配置中删除 static 命令。clear xlate 命令不会删除静态转换规则。如果您从配置中删除 static 命令,使用该静态规则的事先存在的连接仍然可以转发数据流。请使用 clear local-host 命令停用这些连接。

  • 动态 xlate 是根据流量处理要求而创建的 xlate(通过 nat global 命令创建)。clear xlate 命令可删除动态 xlate 和与其相关联的连接。如果您从配置中删除 nat global 命令,动态 xlate 和与其相关联的连接可能仍然有效

系统日志

Syslog 使您可以排除 PIX 中的问题。Cisco 为 Windows NT 提供免费的 Syslog 服务器,称为 PIX 防火墙 Syslog 服务器 (PFSS)。您可以从软件下载仅限注册用户)页面下载 PFSS。

其他一些供应商(例如 Kiwi Enterprises )提供了适用于各种 Windows 平台(例如 Windows 2000 和 Windows XP)的 Syslog 服务器。leavingcisco.com 默认情况下,多数 UNIX 和 Linux 计算机都安装了 Syslog 服务器。

设置 Syslog 服务器时,请对 PIX 进行相应配置,以使其将日志记录发送给 Syslog 服务器。

例如:

logging on
logging host <ip_address_of_syslog_server>
logging trap debugging

注意: 本示例对 PIX 进行了相应配置,使其将调试日志记录(第 7 级)和更关键的 Syslog 发送到 Syslog 服务器。因为这些 PIX 日志记录非常冗长,请您仅在进行故障排除时使用它们。为确保正常运行,请将日志记录级别配置为警告(第 4 级)或错误(第 3 级)。

如果您遇到性能下降的问题,请在文本文件中打开 Syslog,搜索与性能问题有关的源 IP 地址。(如果您使用的是 UNIX,您也可以在 Syslog 中以查找字符串的形式查找源 IP 地址。)查找包含以下内容的消息:这些消息表明外部服务器试图通过 TCP 端口 113(用于验证协议 (Ident))访问内部 IP 地址,但 PIX 拒绝了该数据包。此类消息应与此示例类似:

%PIX-2-106001: Inbound TCP connection denied from 
10.64.10.2/35969 to 172.17.110.179/113 flags SYN

如果您收到该消息,请向 PIX 发出 service reset inbound 命令。PIX 不会静静地丢弃数据包;相反,此命令会使 PIX 立即重置任何被安全策略拒绝的入站连接。服务器无需等到 Ident 数据包的 TCP 连接超时;相反,它会立即收到一个重置数据包。有关 PIX 和 Ident 的详细信息,请参阅由 IDENT 协议导致的 PIX 性能问题

逆向 DNS 查找

如果遇到 PIX 运行缓慢的情况,请确认在授权的 DNS 服务器中,保存了 PIX 使用的外部地址的域名系统指针 (DNS PTR) 记录(也称为逆向 DNS 查找记录)。这包括全局网络地址转换 (NAT) 池(或 PIX 外部接口,如果您在接口上超载的话)中的任何地址、任何静态地址和内部地址(如果您没有对它们使用 NAT 的话)。某些应用程序(例如文件传输协议 (FTP) 和 Telnet 服务器)可能会使用逆向 DNS 查找,以确定用户来自何处以及它是否是有效的主机。如果逆向 DNS 查找没有得到解析,那么性能就会在请求超时时下降。

要确保这些主机的 PTR 记录存在,请从您的 PC 或 UNIX 计算机上发出 nslookup 命令;加上您连接到互联网时使用的全局 IP 地址。

示例

% nslookup 198.133.219.25
25.219.133.198.in-addr.arpa     name = www.cisco.com.

您应该收到响应,该响应包含分配到该 IP 地址的设备的 DNS 名称。如果没有收到响应,请联系控制 DNS 的人员,请求为每个全局 IP 地址添加 PTR 记录。有关因为丢失 PTR 记录所造成的 PIX 性能问题的详细信息,请参阅通过 PIX 的 FTP/HTTP 的性能低下或不稳定

在接口上溢出

如果流量突发,在突发流量超出 NIC 上的 FIFO 缓冲区和接收环形缓冲区的缓冲量时,可能会出现丢弃数据包的情况。启用暂停帧进行流量控制,可缓解此问题。暂停(XOFF)和XON帧由根据FIFO缓冲区使用情况的NIC硬件自动地生成。当缓冲用量超出高水位线标记时,会发送暂停帧。要启用流量控制的暂停(XOFF)帧,请使用以下命令:

hostname(config)#interface tengigabitethernet 1/0
hostname(config-if)# flowcontrol send on

有关更多信息,请参阅启用物理接口和配置以太网参数

显示命令

show cpu usage

show cpu usage 命令最早在 PIX 6.0(1) 中引入,该命令用来确定 PIX CPU 所承受的流量负载。在流量峰值期间、网络高峰期间或者遭受攻击期间,CPU 的使用率会达到峰值。

PIX 配备了单个 CPU,该 CPU 可处理各种任务;例如,它可以处理数据包,并可以将调试消息打印到控制台。每个进程都有各自的目的,其中一些进程比其他进程需要占用更多的 CPU 时间。加密进程可能是最占用 CPU 资源的进程,因此,如果您的 PIX 有很多流量要通过加密隧道进行传输,则您应该考虑使用速度更快的 PIX、适用于 PIX 的 VPN 加速器卡 (VAC) [Part # PIX-VPN-ACCEL] 或者专用的 VPN 集中器(例如 VPN 3000)。VAC 可将加密和解密工作从 PIX 的 CPU 中卸载,将这些工作放在卡上的硬件中执行。这使得 PIX 可以使用 3DES(168 位加密)加密和解密 100 Mbps 的数据流。

日志记录是另一个会消耗大量系统资源的进程。因此,建议您在 PIX 上禁用控制台、监控程序和缓冲区日志记录。在进行故障排除时,您可以启用这些进程,但是在日常操作中,特别是当您的 CPU 资源耗尽时,您应禁用它们。建议将 Syslog 日志记录或简单网络管理协议 (SNMP) 日志记录(日志历史记录)设置为第 5 级(通知)或更低。此外,您可以通过 no logging message <syslog_id> 命令禁用特定 Syslog 消息 ID。

PIX 设备管理器 (PDM) 还在 Monitoring 选项卡上提供一个图形,该图形便于您查看随时间变化的 PIX CPU 使用情况。您可以使用此图形来确定您的 PIX 的负载。

您可使用 show cpu usage 命令来显示 CPU 利用率统计信息。

示例

pixfirewall#show cpu usage

CPU utilization for 5 seconds = 1%; 1 minute: 2%; 5 minutes: 1%

输出说明

下表说明了 show cpu usage 输出中的字段。

字段 说明
CPU 5 秒内的利用率 过去五秒钟内的 CPU 利用率
1 分钟 过去一分钟内,以 5 秒钟为样本的平均 CPU 利用率
5 分钟 过去五分钟内,以 5 秒钟为样本的平均 CPU 利用率

show traffic

show traffic 命令显示在特定的一段时间内,有多少数据流通过 PIX。结果根据自上次发出命令至现在的时间间隔而得出。要想得到准确的结果,请先发出 clear traffic 命令,然后等待 1-10 分钟,再发出 show traffic 命令。您也可以发出 show traffic 命令,等待 1-10 分钟,然后再次发出该命令,但是仅第二次命令的输出有效。

您可以使用 show traffic 命令来确定有多少数据流通过您的 PIX。如果有多个接口,该命令可帮助您确定哪些接口发送及接收的数据最多。对于带有两个接口的 PIX 设备,外部接口的入站和出站数据流的总和应该等于内部接口的入站和出站数据流的总和。

示例

pixfirewall#show traffic
outside:
        received (in 124.650 secs):
                295468 packets  167218253 bytes
                2370 pkts/sec   1341502 bytes/sec
        transmitted (in 124.650 secs):
                260901 packets  120467981 bytes
                2093 pkts/sec   966449 bytes/sec
inside:
        received (in 124.650 secs):
                261478 packets  120145678 bytes
                2097 pkts/sec   963864 bytes/sec
        transmitted (in 124.650 secs):
                294649 packets  167380042 bytes
                2363 pkts/sec   1342800 bytes/sec

如果您的一个接口上的吞吐量接近或达到了额定吞吐量,则您需要将其升级为一个更快的接口,或者限制进出该接口的流量。不这样做的话,会导致数据包被丢弃。如 show interface 部分所说明的,您可以检查接口计数器以查找有关吞吐量的信息。

show perfmon

show perfmon 命令用于监控 PIX 所检测的数据流的数量和类型。此命令是确定每秒的转换 (xlate) 和连接 (conn) 数量的唯一方式。连接可进一步划分为 TCP 连接和用户数据报协议 (UDP) 连接。有关此命令生成的输出的说明,请参阅输出说明

示例

PERFMON STATS     Current      Average
Xlates              18/s         19/s
Connections         75/s         79/s
TCP Conns           44/s         49/s
UDP Conns           31/s         30/s
URL Access          27/s         30/s
URL Server Req       0/s          0/s
TCP Fixup         1323/s       1413/s
TCPIntercept         0/s          0/s
HTTP Fixup         923/s        935/s
FTP Fixup            4/s          2/s
AAA Authen           0/s          0/s
AAA Author           0/s          0/s
AAA Account          0/s          0/s

输出说明

下表说明了 show perfmon 输出中的字段。

字段 说明
转换 每秒建立的转换数
连接 每秒建立的连接数
TCP Conns 每秒的 TCP 连接数
UDP Conns 每秒的 UDP 连接数
URL Access 每秒访问的 URL(网站)数
URL Server Req 每秒发送到 Websense 和 N2H2 的请求数(需要 filter 命令)
TCP Fixup PIX 每秒转发的 TCP 数据包数
TCP 拦截 每秒超出静态转换的初期限额的 SYN 数据包数
HTTP Fixup 每秒发往端口 80 的数据包数(需要 fixup protocol http 命令)
FTP Fixup 每秒检查的 FTP 命令数
AAA Authen 每秒的认证请求数
AAA Author 每秒的授权请求数
AAA Account 每秒的记帐请求数

show blocks

在使用 show cpu usage 命令的同时,您还可以使用 show blocks 命令来确定 PIX 是否超载。

数据包处理块(1550 和 16384 字节)

当数据包进入 PIX 接口时,它被放置在输入接口队列中,传递到操作系统,然后放置到块中。对于以太网数据包,将使用 1550 字节块;如果数据包传入 66 MHz 千兆以太网卡,则使用 16384 字节块。PIX 根据自适应安全算法 (ASA) 确定允许还是拒绝数据包通过,并且处理数据包,直到数据包到达出站接口上的输出队列。如果 PIX 无法支持数据流负载,可用的 1550 字节块(若是 66 MHz 的千兆以太网,则为 16384 字节块)的数量将接近于 0(显示在命令输出的 CNT 列中)。当 CNT 列达到零时,PIX 将尝试分配更多的块,最高数量可达 8192。如果没有更多的可用块,则 PIX 会丢弃数据包。

故障切换和 Syslog 块(256 字节)

256 字节块主要用于有状态故障切换消息。活动 PIX 生成数据包,并将其发送到备用 PIX,以更新转换和连接表。在突发数据流期间(这一期间有大量的连接建立或断开),可用的 256 字节块的数量可能会下降到 0。这一下降表明有一个或多个连接没有更新到备用 PIX 中。这通常是可接受的,因为有状态故障切换协议会在下次捕获丢失的 xlate 或连接。然而,如果 256 字节块的 CNT 列中的值长时间为 0 或者接近于 0,由于 PIX 每秒处理的连接的数量过多,PIX 将无法保持转换和连接表同步。如果这种情况持续发生,请将 PIX 升级到一个更快的型号。

从 PIX 发送的 Syslog 消息也使用 256 字节块,但通常不会发送过多 Syslog 消息,以免导致 256 字节块池用尽。如果 CNT 列显示 256 字节块的数量接近于 0,请确保在配置要发送到 Syslog 服务器的 Syslog 时,未将 Syslog 级别设置为调试(第 7 级)。这一设置是由 PIX 配置中的 logging trap 命令行来指示的。建议您将日志记录级别设置为通知(第 5 级)或更低,除非您需要更多信息来进行调试。

示例

pixfirewall#show blocks
  SIZE    MAX    LOW    CNT
     4   1600   1597   1600
    80    400    399    400
   256    500    495    499
  1550   1444   1170   1188
 16384   2048   1532   1538

输出说明

下表说明了 show blocks 输出中的列。

说明
大小 块池的大小(单位为字节)。
最大 指定字节的块池中可用块的最大数量。注意,最大可用块数在启动时从内存中划分出来。一般来说,最大可用块数不会改变。但 256 字节块和 1550 字节块却是例外,对于这两种字节块,PIX 可以根据需要动态地创建更多字节块,最多可以达到 8192 字节。
下限。此数值是自 PIX 通电以来,或者自上次使用 clear blocks 命令清除块以来,相应大小的块的最低可用数量。
CNT 特定字节的块池中当前可用的块数。

下表说明了 show blocks 输出中 SIZE 行的值。

SIZE 值 说明
4 用于复制存在于 DNS、Internet 安全连接和密钥管理协议 (ISAKMP)、URL 过滤、uauth、h323、tftp 以及 TCP 模块中的块。
80 在 TCP 拦截中使用,用于生成确认 (ACK) 数据包并用于故障切换 Hello 消息。
256 用于有状态故障切换更新、Syslog 日志记录和其他 TCP 功能。
1550 用于存储通过 PIX 处理的以太网数据包。
16384 仅用于 PIX 535 中的 64 位、66 MHz 千兆以太网卡 (i82543)。

show memory

show memory 命令可显示 PIX 的总物理内存 (RAM) 以及当前可用的字节数。为了使用此信息,您必须首先了解 PIX 是如何使用内存的。PIX 启动时,它会将操作系统从闪存中复制到 RAM 中,然后从 RAM 中运行操作系统(就像路由器一样)。接着,PIX 会将启动配置从闪存中复制到 RAM 中。最后,PIX 会分配 RAM,以创建 show blocks 部分所介绍的块池。一旦此分配完成,只有当配置规模增加的时候,PIX 才需要额外的 RAM。此外,PIX 还在 RAM 中存储转换和连接条目。

在正常操作情况下,PIX 上的可用内存的变化应该很小或没有变化。通常,只有当您遭受攻击,有数十万个连接通过 PIX 时,您才会碰到内存耗尽的问题。要检查连接的数量,请发出 show conn count 命令,该命令会显示通过 PIX 建立的当前连接数以及可通过 PIX 建立的最大连接数。如果 PIX 耗尽内存,则它最终会崩溃。在它崩溃之前,您也许会注意到在 Syslog (PIX-3-211001) 中会出现内存分配失败消息。如果您由于受到攻击而导致内存耗尽,请与 Cisco 技术支持中心 (TAC) 联系。

注意: 当Cisco ASA用尽内存时,不再接受新的VPN连接,切所有现有连接,并且返回此错误消息Error:%ASA-3-336003 :没有缓冲区可用为<bytes>字节信息包

注意: 请使用显示mem命令为了验证内存资源资源分配和如果必须升级内存。如果问题持续,请与为做进一步的故障排除Cisco TAC联系

示例

pixfirewall#show memory
1073741824 bytes total, 1022992384 bytes free

show xlate

show xlate count 命令显示通过 PIX 的当前转换数和最大转换数。转换就是将内部地址映射到外部地址,它可以是一对一的映射,例如网络地址转换 (NAT),或者是多对一的映射,例如端口地址转换 (PAT)。此命令是 show xlate 命令的子集,它输出通过 PIX 的每个转换。命令输出显示了“in use”转换,这是指发出该命令时 PIX 中的活动转换数;“most used”是指自 PIX 通电后,在其上看到的最大转换数。

注意: 单个主机可以与不同的目标之间有多个连接,但是只能有一个转换。如果 xlate 计数远大于内部网络上的主机数量,则可能您的某台内部主机被侵入。如果您的内部主机被侵入,它会伪装其源地址,将数据包发送到 PIX 外。

注意: 当启用 vpnclient 配置,且内部主机发出 DNS 请求时,show xlate 命令可能会列出一个静态转换的多个 xlate。

示例

pixfirewall#show xlate count
84 in use, 218 most used

以下示例显示了 show xlate detail 命令的输出,其中包含了三个活动的端口地址转换 (PAT):

pixfirewall(config)#show xlate detail

3 in use, 3 most used

Flags: D - DNS, d - dump, I - identity, i - inside, n - no random,

       o - outside, r - portmap, s - static

TCP PAT from inside:10.1.1.15/1026 to outside:192.150.49.1/1024 flags ri

UDP PAT from inside:10.1.1.15/1028 to outside:192.150.49.1/1024 flags ri

ICMP PAT from inside:10.1.1.15/21505 to outside:192.150.49.1/0 flags ri

第一个条目是从内部网络上的主机端口(10.1.1.15,1026)到外部网络上的主机端口(192.150.49.1,1024)的 TDP 端口地址转换。标志“r”表示该转换是一个端口地址转换。标志“i”表示该转换适用于内部地址端口。

第二个条目是从内部网络上的主机端口(10.1.1.15,1028)到外部网络上的主机端口(192.150.49.1,1024)的 UDP 端口地址转换。标志“r”表示该转换是一个端口地址转换。标志“i”表示该转换适用于内部地址端口。

第三个条目是从内部网络上的主机 ICMP id(10.1.1.15,21505)到外部网络上的主机 ICMP id(192.150.49.1,0)的 ICMP 端口地址转换。标志“r”表示该转换是一个端口地址转换。标志“i”表示该转换适用于内部地址 ICMP id。

在从较安全的接口传输至不太安全的接口的数据包中,内部地址字段显示为源地址。反之,在从不太安全的接口传输至较安全的接口的数据包中,内部地址字段显示为目标地址。

show conn count

show conn count 命令可显示通过 PIX 建立的当前连接数以及可通过 PIX 建立的最大连接数。连接就是将第 4 层信息从内部地址映射到外部地址。当 PIX 接收到 TCP 会话的 SYN 数据包时,或当 UDP 会话中的第一个数据包到达时,连接建立。当 PIX 接收到最终 ACK 数据包时(最终 ACK 数据包在 TCP 会话握手关闭时发送),或者当 UDP 会话中的超时期到期时,连接关闭。

极高的连接计数(正常连接数的 50-100 倍)可能表明您受到了攻击。发出 show memory 命令以确保高连接计数不会导致 PIX 耗尽内存。如果受到攻击,您可以限制每个静态条目的最大连接数,也可以限制初期连接的最大数量。这一操作可保护您的内部服务器,使它们不会发生过载。有关详细信息,请参阅 Cisco Secure PIX 防火墙命令参考

示例

pixfirewall#show conn count
2289 in use, 44729 most used

show interface

show interface 命令可帮助您确定双工不匹配问题以及电缆问题;它也可以进一步提供有关接口是否超负荷运行的信息。如果PIX用尽CPU产能, 1550字节块数量盘旋近0。(看看在66兆赫Gig卡的16384字节块。)另一个指示是接口上的“no buffers”计数的增加。“no buffers”消息表明,接口无法将数据包发送至 PIX OS,因为没有数据包可用的块(数据包将被丢弃)。如果 no buffer 的计数经常增加,请发出 show proc cpu 命令以检查 PIX 的 CPU 使用情况。如果因为流量负载过大而造成 CPU 使用率过高,请升级到能处理这种负载的更强大的 PIX。

数据包进入接口时,它将被放置在输入硬件队列中。如果输入硬件队列已满,则数据包将被放置在输入软件队列中。数据包从输入队列传递到 PIX OS,放置在 1550 字节块中(对于 66 MHz 千兆以太网接口,则为 16384 字节块)。PIX 然后确定数据包的输出接口,并将数据包放置在适当的硬件队列中。如果硬件队列已满,则数据包将被放置在输出软件队列中。如果两个软件队列中任何一个队列中的最大块数过大,则接口将处于超负荷运行状态。例如,如果 200 Mbps 的流量进入 PIX,并且全部从一个 100 Mbps 接口流出,则输出软件队列会显示出站接口上的数字过高,这表明接口不能处理如此大的数据流量。如果遇到这种情况,请将您的接口升级到一个更快的接口。

示例

pixfirewall#show interface
interface ethernet0 "inside" is up, line protocol is up
  Hardware is i82559 ethernet, address is 0002.b31b.99ff
  IP address 9.9.9.1, subnet mask 255.255.255.0
  MTU 1500 bytes, BW 100000 Kbit full duplex
        4630 packets input, 803174 bytes, 0 no buffer
        Received 2 broadcasts, 0 runts, 0 giants
        0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
        4535 packets output, 445424 bytes, 0 underruns
        0 output errors, 0 collisions, 0 interface resets
        0 babbles, 0 late collisions, 0 deferred
        0 lost carrier, 0 no carrier
        input queue (curr/max blocks): hardware (128/128) software (0/1)
        output queue (curr/max blocks): hardware (0/2) software (0/1)

您也应该检查接口是否有错误。如果接收到残帧、输入错误、CRC 或者帧错误,则很可能是因为双工不匹配(电缆也可能有故障)。有关双工问题的详细信息,请参阅速度和双工设置。请记住,每个错误计数器代表因为该特定错误所丢弃的数据包的数量。如果您发现某个计数器的计数有规律地增加,则您的 PIX 的性能很有可能受到影响,您必须找到引起该问题的根本原因。

在检查接口计数器时,请注意,如果该接口设置为全双工,则您不应该遇到任何冲突、延迟冲突或数据包延迟。相比之下,如果接口设置为半双工,则您应该会遇到冲突和一些延迟冲突,而且还可能会遇到一些数据包延迟的情况。冲突、延迟冲突和延迟数据包的总数不应该超过输入和输出数据包数量总和的 10%。如果冲突数量超过了总流量的 10%,则表明链路使用过度,您必须升级到全双工或更快的速度(10 Mbps 到 100 Mbps)。请记住,10% 的冲突数意味着 PIX 丢弃了通过该接口的 10% 的数据包;这些被丢弃的数据包必须重新传输。

有关接口计数器的详细信息,请参阅 Cisco Secure PIX 防火墙命令参考中的 interface 命令。

show processes

PIX 上的 show processes 命令用于显示在执行该命令时,PIX 上所运行的所有活动进程。此信息在确定哪些进程占用了过多的 CPU 时间以及哪些进程没有占用任何 CPU 时间时非常有用。为了获得此信息,请发出 show processes 命令两次;两次发出命令之间等待大约 1 分钟。对于相关进程,请将第一次输出的 Runtime 值减去第二次输出的 Runtime 值。该结果将告诉您,在这段时间内,该进程占用了多少 CPU 时间(以毫秒为单位)。请注意,一些进程被安排为以特定间隔运行,而有些进程则在有信息处理时才会运行。577poll 进程很可能是所有进程中拥有最大 Runtime 值的进程。这是正常的,因为 577poll 进程会对以太网接口进行轮询,以查明它们是否有任何需要处理的数据。

注意: 对每个 PIX 进程的检查已超出本文档的范围,本文档仅为了内容的完整性而对相关进程进行简要论述。有关 PIX 进程的详细信息,请参阅 PIX show processes 命令

命令汇总

总之,您可以使用 show cpu usage 命令来确定 PIX 所承受的负载。请记住,输出的值是运行平均值;PIX 可能会出现更高的 CPU 使用峰值,而这些峰值可能会被运行平均值所掩盖。一旦 PIX 达到 80% 的 CPU 使用率,则通过 PIX 的延迟将缓慢增加,CPU 使用率增至大约 90%。当 CPU 使用率超过 90% 时,PIX 将开始丢弃数据包。

如果 CPU 使用率较高,请使用 show processes 命令确定占用最多 CPU 时间的进程。请使用此信息来减少占用资源较多的进程(例如日志记录)所耗费的某些 CPU 时间。

如果 CPU 使用率并不是很高,但是您发现数据包仍然被丢弃,请使用 show interface 命令来检查 PIX 接口上是否没有缓冲区以及 PIX 接口上是否存在冲突(这两个问题很可能由双工不匹配而造成)。如果 no buffer 计数增加,但是 CPU 使用率并不低,则表明接口无法支持流经它的流量。

如果缓冲区情况良好,则请检查块。对于 1550 字节块(如果是 66 MHz 千兆以太网卡,则为 16384 字节块),如果 show blocks 输出中的当前 CNT 列的值接近于 0,则 PIX 很有可能由于过于繁忙而丢弃以太网数据包。在这种情况下,CPU 使用率会达到较高的峰值。

若在通过 PIX 建立新连接时遇到困难,请使用 show conn count 命令来检查当前已通过 PIX 建立的连接数。

如果当前的连接计数较高,请检查 show memory 输出以确保 PIX 未耗尽内存。如果内存较低,请使用 show conn show local-host 命令来检查连接源以验证您的网络是否遭到拒绝服务攻击。

您可以使用其他命令来测量流经 PIX 的流量。show traffic 命令可显示每个接口上的总数据包和字节数,而 show perfmon 可将 PIX 所检测的数据流划分为不同的类型。

相关的思科支持社区讨论

思科支持社区是您提问、解答问题、分享建议以及与工作伙伴协作的论坛。


相关信息


Document ID: 22040