본문 바로가기

Ryu's Tech

시스코 장비의 버퍼 문제로 드랍되는 것에 대한 내용

2013년 정리해 놨던 내용이네요 블로그에 없는 것 같네요

한 때 시스코 장비의 버퍼 이슈로 고생한 적이 있었는데 당시에 작성했던 내용이네요.

   

   

출처: <http://www.juniper.net/techpubs/en_US/junos/topics/concept/policer-mx-m120-m320-burstsize-determining.html>

   

Router 의 가능한 메모리로부터 Buffer를 할당하고 이는 Burst Traffic 발생시에 Packet Drop을 막아준다.

   

Show buffer 커맨드를 통해 버퍼의 상태를 확인할 수 있으며 이에 대한 설명은 아래와 같다.

   

Using the show buffers command, look at the buffer size corresponding to the maximum transmission unit (MTU) of the interface:

Middle buffers, 600 bytes (total 150, permanent 25):
147 in free list (10 min, 150 max allowed)
61351931 hits, 137912 misses, 51605 trims, 51730 created
91652 failures (0 no memory)

The table below explains the output:

Keyword

Description

total

The total number of buffers in the pool, including both used and unused buffers.

사용중/비사용중인 전체 버퍼 수

permanent

The permanent number of allocated buffers in the pool. These buffers are always in the pool, and cannot be trimmed away.

고정 버퍼/이 버퍼는 항상 가지고 있는 필수(최소)버퍼 수이다.

in free list

The number of buffers currently available in the pool that are free for use.

사용할 수 있는 버퍼 수.

min

The minimum number of buffers that the router should attempt to keep "in free list." If the number of buffers "in free list" falls below the "min" value, the router should attempt to create more buffers for that pool.

최소 버퍼 수. 만약 in free list 수가 min 값 밑으로 떨어지면 라우터는 더 많은 버퍼를 생성하려고 시도한다.

max allowed

The maximum number of buffers allowed "in free list." If the number of buffers "in free list" is greater than the "max allowed" value, the router should attempt to trim buffers from the pool.

최대 버퍼 수. In free list 수가 max 값보다 크거나 같아지면 버퍼를 제거(trim)하려 할 것이다.

hits

The number of buffers successfully allocated from the free list.

정상적으로 free list 로부터 할당된 버퍼의 수.

misses

The number of times a buffer has been requested, but no buffers are available in the free list, or when there are fewer than "min" buffers in the free list.

가능한 버퍼가 없거나(in free list의 수가 모자라) in free list의 수가 min 값 보다 내려갔을 때 버퍼가 요청된 수.

trims

The number of buffers that have been trimmed from the pool when the number of buffers "in free list" exceeds the number of "max allowed" buffers.

앞에서 설명한대라 max 값보다 in free list가 크거나 같아져서 제거된 버퍼의 수

created

The number of buffers that have been created in the pool when the number of buffers "in free list" was less than "min."

In free list의 버퍼수가 min 값 이하로 내려가서 생성되게 된 버퍼의 수

no memory

The number of times the router tried to create new buffers, but could not due to insufficient free memory in the router.

버퍼를 생성하려 했으나 메모리가 부족해서 실패한 수

failures

The number of failures to grant a buffer to a requester under interrupt time (remember that the router can create new buffers at process switching level, so "failure" does not occur unless there is "no memory"). The number of "failures" represents the number of packets that have been dropped due to buffer shortage.

Failures는 버퍼가 부족해서 패킷이 드랍된 경우를 말한다. ( 라우터는 switching 레벨에서 새로운 버퍼를 생성한다. 그래서 failure 값은 "No memory" 상태가 아니면 일어나지 않는다.)

  

   

출처: <http://www.cisco.com/en/US/products/hw/routers/ps133/products_tech_note09186a00800a7b80.shtml?referring_site=bodynav>

   

   

Buffer가 사용되는 경우는 1. Process switching 2. Packet terminating 이 버퍼가 사용되는 주요한 두 경우이다.

   

사용 가능한 버퍼가 없고, Fast Switching이 활성화 되어있다면. "Buffer Failure"와 "Packet Drop"이 발생한다.

Pool Manager에 의해 Buffer Failure을 감지하면 다음 실패를 예방하기 위해서 버퍼를 생성한다.

   

In free list 와 max allowed 값이 같다면 포화 상태이기 때문에 더 이상 버퍼를 생성할 수 없다.

새로운 버퍼를 생성하기 위한 메모리가 부족하다면 이는 "No memory"로 기록된다.

In free list보다 Max allowed 값이 크거나 같다면 라우터는 초과된 버퍼를 제거(trim)한다.

   

Failures나 No Memory 는 문제가 되는데 이러한 현상이 일어난 뒤에는 잠시 뒤에는 안정되어야 한다. 라우터는 이를 위해 버퍼 생성/제거를 통해서 이를 해결하려 할 것이다. 하지만 지속적으로 버퍼 문제가 발생한다면 버퍼 튜닝이 필요하다.

   

만약 버퍼 생성을 위한 메모리가 충분하지 않다면 "buffer Leak"상태를 의심하거나 메모리 문제를 의심해봐도 좋다.

   

http://www.cisco.com/en/US/products/hw/routers/ps133/products_tech_note09186a00800a7b80.shtml?referring_site=bodynav

http://www.cisco.com/en/US/products/hw/iad/ps397/products_tech_note09186a00800a7b85.shtml

http://www.cisco.com/en/US/products/sw/iosswrel/ps1831/products_tech_note09186a00800a6f3a.shtml

http://www.cisco.com/en/US/products/hw/modules/ps2643/products_tech_note09186a0080093fc5.shtml#topic1

   

   

   

아래는 장비에서 카운터 에러를 통해 Discard 되는 패킷을 확인하는 것.

   

Deferred Frames (Out-Lost or Out-Discard)

If you have a large number of deferred frames, or Out-Discard (also referred to as Out-Lost on some platforms), it means that the switch's output buffers have filled up and the switch had to drop these packets. This can be a sign that this segment is run at an inferior speed and/or duplex, or there is too much traffic that goes through this port.

   

For Cisco IOS, use the show interfaces counters error command.

Router#sho interfaces counters error
Port Align-Err FCS-Err Xmit-Err Rcv-Err UnderSize OutDiscards
Fa7/47 0 0 0 0 0 0
Fa7/48 0 0 0 0 0 2871800
Fa8/1 0 0 0 0 0 2874203
Fa8/2 103 0 0 103 0 2878032
Fa8/3 147 0 0 185 0 0
Fa8/4 100 0 0 141 0 2876405
Fa8/5 0 0 0 0 0 2873671
Fa8/6 0 0 0 0 0 2
Fa8/7 0 0 0 0 0 0
!--- The show interfaces counters errors command shows certain interfaces
!--- incrementing large amounts of OutDiscards while others run clean.

   

출처: <http://www.cisco.com/en/US/products/hw/switches/ps708/products_tech_note09186a008015bfd6.shtml>