소개
이 문서에서는 BGP(Border Gateway Protocol) 라우터에 대한 최소 메모리 요구 사항으로 최적화하는 방법에 대해 설명합니다.
사전 요구 사항
요구 사항
이 문서에 대한 특정 요건이 없습니다.
사용되는 구성 요소
이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
표기 규칙
문서 규칙에 대한 자세한 내용은 Cisco 기술 팁 표기 규칙을 참조하십시오.
배경 정보
이 문서에서는 여러 ISP(Internet Service Provider)에 연결된 엔터프라이즈 네트워크에서 최적의 라우팅을 구현하는 동시에 BGP(Border Gateway Protocol) 라우터의 메모리 요구 사항을 줄이는 방법을 설명합니다. ISP 및 직접 연결된 자동 시스템에서 시작된 경로만 수락하고 ISP에서 전체 BGP 라우팅 테이블을 수신하지 않는 AS_PATH 필터를 사용할 수 있습니다.
이 섹션에서는 네트워크 다이어그램을 예로 들어 설명합니다. 이 예에서는 라우터 1 및 라우터 2에서 수신 BGP 업데이트를 필터링하여 ISP의 경로 및 직접 연결된 자동 시스템의 경로를 수락합니다. 라우터 1은 ISP-A 및 직접 연결된 자동 시스템 C1에 대한 경로를 수락합니다. 마찬가지로 라우터 2는 ISP-B 및 C2에 대한 경로를 수락합니다. ISP 및 해당 클라이언트 자동 시스템에 속하지 않는 나머지 네트워크는 엔터프라이즈 라우팅 정책에 따라 ISP-A 또는 ISP-B를 가리키는 기본 경로를 사용합니다.
라우터 1이 ISP로부터 약 100,000개 경로의 전체 BGP 라우팅 테이블을 수락하는 경우와 라우터 1에서 인바운드 AS_PATH 필터를 적용하는 경우를 비교하여 메모리 사용률이 어떻게 달라지는지 관찰할 수 있습니다.
참고: 전체 피드를 구성하는 접두사의 실제 개수는 다를 수 있습니다. 이 문서의 값은 예시로만 사용됩니다. Route-servers는 전체 BGP 테이블을 구성하는 접두사의 수를 잘 알 수 있습니다.
참고: 모든 툴 및 내부 웹 사이트는 등록된 Cisco 클라이언트에만 해당됩니다.
BGP 라우터가 전체 BGP 라우팅 테이블 수신
다음은 라우터 1의 컨피그레이션입니다.
라우터 1 |
hostname R1
!
router bgp XX
no synchronization
neighbor 157.x.x.x remote-as 701
neighbor 157.x.x.x filter-list 80 out
!
ip as-path access-list 80 permit ^$
!
end |
show ip bgp summary 명령 출력에서는 ISP-A(BGP 인접 디바이스 157.x.x.x)에서 98,410개의 접두사를 받았음을 보여줍니다.
R1#show ip bgp summary
BGP router identifier 65.yy.yy.y, local AS number XX
BGP table version is 611571, main routing table version 611571
98769 network entries and 146299 paths using 14847357 bytes of memory
23658 BGP path attribute entries using 1419480 bytes of memory
20439 BGP AS-PATH entries using 516828 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
5843 BGP filter-list cache entries using 70116 bytes of memory
BGP activity 534001/1904280 prefixes, 2371419/2225120 paths, scan interval 15 secs
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
165.yy.yy.a 4 6xx9 32962 826287 611571 0 0 01:56:13 1
165.yy.yy.b 4 6xx9 32961 855737 611571 0 0 01:56:12 1
165.yy.yy.c 4 6xx9 569699 865164 611571 1 0 01:55:39 47885
157.x.x.x 4 701 3139774 262532 611571 0 0 00:07:24 98410
show ip route summary 명령 출력에서는 라우팅 테이블에 80,132개의 BGP 경로가 설치되어 있음을 보여 줍니다.
R1#show ip route summary
IP routing table name is Default-IP-Routing-Table(0)
Route Source Networks Subnets Overhead Memory (bytes)
connected 0 4 256 576
static 0 1 64 144
eigrp 6 0 5 768 720
bgp XX 80132 18622 6320256 14326656
External: 87616 Internal: 11138 Local: 0
internal 854 994056
Total 80986 18632 6321344 15322152
이 명령은 BGP 프로세스가 RAM에서 차지하는 메모리의 양을 보여줍니다.
R1#show processes memory | begin BGP
PID TTY Allocated Freed Holding Getbufs Retbufs Process
73 0 678981156 89816736 70811036 0 0 BGP Router
74 0 2968320 419750112 61388 1327064 832 BGP I/O
75 0 0 8270540 9824 0 0 BGP Scanner
70882248 Total BGP
77465892 Total all processes
BGP 프로세스에서는 약 71MB의 메모리를 사용합니다.
인바운드 AS_PATH 필터 목록으로 구성된 BGP 라우터
이 예에서는 인바운드 필터 목록을 적용하여 ISP-A 및 직접 연결된 자동 시스템에서 시작된 경로를 수락합니다. 이 예에서 ISP-A는 eBGP(external BGP)를 통해 기본 경로(0.0.0.0)를 광고하므로 필터 목록을 통과하지 않는 경로는 ISP-A로 향하는 기본 경로를 사용합니다. 필터 목록에 대한 컨피그레이션입니다.
라우터 1 |
hostname R1
!
router bgp XX
no synchronization
neighbor 157.x.x.x remote-as 701
neighbor 157.x.x.x filter-list 80 out
neighbor 157.x.x.x filter-list 85 in
!--- This line filters inbound BGP updates.
!
ip as-path access-list 80 permit ^$
ip as-path access-list 85 permit ^701_[0-9]*$
!--- The AS_PATH list filters ISP and the directly connected autonomous system routes.
!
end |
이 show ip bgp summarycommand 출력은 ISP-A(인접 디바이스 157.xx.xx.x)에서 수신된 31,667개의 접두사를 보여줍니다.
R1#show ip bgp summary
BGP router identifier 165.yy.yy.y, local AS number XX
BGP table version is 92465, main routing table version 92465
36575 network entries and 49095 paths using 5315195 bytes of memory
4015 BGP path attribute entries using 241860 bytes of memory
3259 BGP AS-PATH entries using 78360 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
4028 BGP filter-list cache entries using 48336 bytes of memory
BGP activity 1735069/3741144 prefixes, 4596920/4547825 paths, scan interval 15 secs
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
165.yy.yy.a 4 6319 226694 1787061 92465 0 0 17:31:04 1
165.yy.yy.b 4 6319 226814 1806986 92465 0 0 19:51:53 1
165.yy.yy.c 4 6319 1041069 1822703 92465 0 0 19:44:52 17424
157.xx.xx.x 4 701 14452518 456341 92465 0 0 19:51:37 31667
show ip route summary 명령 출력은 라우팅 테이블에서 27,129개의 BGP 경로를 보여줍니다.
R1#show ip route summary
IP routing table name is Default-IP-Routing-Table(0)
Route Source Networks Subnets Overhead Memory (bytes)
connected 0 4 256 576
static 0 1 64 144
eigrp 6319 0 6 896 864
bgp 6319 27129 9424 2339392 5299332
External: 19134 Internal: 17419 Local: 0
internal 518 602952
Total 27647 9435 2340608 5903868
BGP 프로세스에서 사용하는 메모리는 다음과 같이 약 28MB입니다.
R1#show processes memory | include BGP
PID TTY Allocated Freed Holding Getbufs Retbufs Process
73 0 900742224 186644540 28115880 0 0 BGP Router
74 0 5315232 556232160 6824 2478452 832 BGP I/O
75 0 0 39041008 9824 0 0 BGP Scanner
28132528 Total BGP
34665820 Total all memory
메모리 관련 문제 해결
BGP 프로세스에서 사용하는 메모리를 확인하려면 show processes memory를 사용합니다 | include bgp 명령 메모리 과다 사용과 관련된 가장 일반적인 문제는 다음과 같습니다.
-
메모리 할당 실패 "%SYS-2-MALLOCFAIL".
-
거부된 텔넷 세션입니다.
-
일부 show 명령의 출력이 없습니다.
-
"메모리 부족" 오류 메시지.
-
"EXEC를 만들 수 없습니다. 메모리가 없거나 프로세스가 너무 많습니다." 콘솔 메시지.
-
라우터 중단 또는 콘솔 응답 없음
-
BGP 관련 디버그를 실행할 경우 일반적으로 과도한 메모리 소비가 발생하며, 이로 인해 BGP로 인한 메모리 오류도 발생할 수 있습니다. BGP에 대한 디버깅은 주의하여 실행해야 하며 필요하지 않은 경우 사용하지 않아야 합니다.
하나의 BGP 피어에서 전체 인터넷 BGP 경로를 실행할 때 필요한 RAM의 양은 디바이스 특성과 확장성에 따라 달라집니다. 그러나 인터넷 경로의 지속적인 증가를 감안할 때 필요한 최소 메모리는 약 8GB 이상의 RAM이 될 수 있습니다.
BGP 경로의 메모리 소비는 다중 경로 지원, 소프트 재구성, 피어 수 및 AS_PATH와 같은 특성의 수에 따라 달라집니다. BGP 메모리 요구 사항에 대한 자세한 내용은 RFC 1774를 참조하십시오.
결론
이 차트는 필터 목록을 구현할 때의 메모리 절감액을 보여줍니다.
|
접두사 수 |
사용된 메모리 |
필터링 없음 |
98,410 |
70,882,248 |
자동 시스템 필터 |
31,667 |
28,132,528 |
BGP 라우터가 인접 디바이스의 전체 BGP 라우팅 테이블(98,410개 경로)을 수신할 때 라우터는 약 71MB를 소비합니다. AS_PATH 필터가 인바운드 업데이트에 적용되면서 BGP 라우팅 테이블의 크기는 31,667개의 경로로 줄어들고 메모리 소비는 약 28MB입니다. 이러한 메모리 사용률 감소는 최적의 라우팅을 통해 60% 이상입니다.
CAIDA(Cooperative Association for Internet Data Analysis)에서 컴파일한 AS Internet Graph를 검토하면 어떤 ISP가 상호 연결성이 가장 높은지(차트 중앙에 가장 가까운 ISP)를 확인할 수 있습니다. 상호 연결이 적을수록 AS_PATH 필터를 통과하는 경로가 적어지고 BGP 메모리 소비량이 적습니다. 그러나 AS_PATH 필터가 설정될 때마다 기본 경로(0/0)를 구성해야 합니다. AS_PATH 필터 목록을 통과하지 않는 경로는 기본 경로를 사용합니다.
관련 정보