더 나은 사양 (RAM 및 CPU)을 가진 Linux 라우터보다 하드웨어 라우터가 더 나은 성능을 보이는 이유


44

나는 4 개의 NIC (1 Gbps)를 가진 게이트웨이 역할을하는 최소 CentOS 6.3, 64 비트를 가지고 있으며, 각각은 공용 트래픽과 NAT를 수행하는 개인을 위해 서로 결합되어 있습니다. 6GB RAM과 4 개의 논리 코어가 있습니다. 우리는 지난 2 년간 아무런 문제없이 이것을 사용해 왔습니다.

하드웨어 라우터에 대한 경험이 없지만 RAM과 CPU가 적고 플래시 디스크를 사용한다고 들었습니다. RAM과 CPU가 더 많은 머신보다 하드웨어 구성이 낮은 박스가 어떻게 더 많은 동시 연결을 처리 할 수 ​​있습니까?

이것을 처리하기 위해 다른 방법을 사용하는 IOS 이외의 제한 요소는 무엇입니까?


5
하드웨어의 구현은 동일한 솔루션의 소프트웨어보다 펌웨어보다 빠릅니다.
mdpc

3
언급 한 "더 나은 사양"은 현재 작업과 관련이 없습니다. 실제로 중요한 다른 속성이 있습니다.
ndim

자, 당신이 쓴 것에서 Centos가 가상 머신이라고 가정해야합니까? 하이퍼 바이저 및 게스트 측 모두에서 가상 머신에 대한 특수 네트워크 최적화 외에도 가상 머신은 일반적으로 이러한 역할에 적합하지 않은 것으로 알려져 있습니다. 라우터 / 방화벽으로 사용하기 위해서는 베어 메탈이 항상 권장됩니다!
돌로

실제로 구성에서 제안한대로 1Gbps의 트래픽을 라우팅하고 있습니까? 덤프 트럭을 사용하여 삽으로 모래를 가득 채울 수 있습니다. 6GB의 RAM과 4 개의 코어는 기본적으로 라우터에 손대지 않을 것입니다.이 작업을 수행하기 위해 작은 Intel Atom 시스템을 사용하여 전기와 랙 공간을 절약 할 수 있습니다.
Bert

답변:


64

ASIC .

범용 CPU 및 작업 별 소프트웨어를 사용하는 대신 소프트웨어를 건너 뛰고 실리콘이 작업을 직접 처리하도록 할 수 있습니다.

고성능 네트워킹 하드웨어는 IP 주소를 막대한 인터넷 라우팅 테이블과 비교하거나 CAM 테이블을 전환 결정으로 확인하거나 ACL을 기준으로 패킷을 확인하는 등 계산적으로 무거운 (하지만 비교적 논리적으로 간단한) 작업에 소프트웨어 대신 ASIC을 사용합니다. . 이로 인해 시간에 민감한 작업의 속도가 크게 달라져 범용 CPU에 비해 ​​상당한 이점이 있습니다.


1
내가 shane에 동의하는 동안, 나는 하루 종일 어플라이언스를 통해 일반 서버에서 실행되는 iptables를 선택할 것입니다. 우리 회사에서는 fedora에서 실행되는 iptables가 더 빠르고 유연하며 구성이 간단하고 CPU 및 메모리에 대한 세금이 적으며 부팅 속도가 빠르고 Cisco asa보다 저렴합니다.
rvh

@rvh : 방화벽이나 라우팅을 위해?
mveroone

2
전반적으로 '속도'는 여기서 아주 느슨한 용어입니다. PC가 여전히 HW처럼 '빠른'작업을 수행 할 수있는 상황이 많거나 HW보다 일정한 지속 시간이 더 길다는 것을 확신하십시오. 그러나 그것은 정말 안정성과 당신의 buck'-가 계속 어플라이언스와 함께 적은 RAM / CPU를 구매하는 대한 '강타 내려와 않지만, 더 그것에서의 도착, 오직 당신이 안정성을 얻을 수 있도록 할 필요가 무엇을합니까
Colin Godsey

이 답변은 생략으로 잘못되었습니다. "ASIC"를 외치는 것만으로도 NAT를 수행하는 대부분의 라우터가 범용 CPU를 사용하므로 성능이 떨어지지 않는 한 순진합니다. 또한 실제로 하드웨어 NAT 라우터는 동시 연결 수에 대한 제한이 더 큽니다. OP가 경험하는 것은 구성이 잘못되었거나 작업에 적합하지 않은 운영 체제를 사용하는 것입니다.
듀얼

@dualed most routers that do NAT use general purpose CPUs예, 그것은 사실입니다. 그러나 많은 장치가 특정 작업을 전용 칩으로 오프로드한다는 사실을 무시합니다 (위의 전체 답변을 읽으면 명확합니다). NAT와 연결 추적 (현대 장치의 ASIC에서는 발생하지 않음)을 생각하지 말고 라우팅 테이블과 스위치 오프 로딩을 생각하십시오.
Shane Madden

12

고급 전용 라우터는 하드웨어에서 더 많은 라우팅을 수행 할 수 있기 때문에 더 빠른 CPU와 더 많은 RAM으로 PC보다 성능이 뛰어납니다.

60 달러의 기가비트 이더넷 스위치가 이더넷 스위치 역할을하는 2 개의 포트 GigE 카드 4 개로 2,000 달러의 PC를 능가 할 수있는 것도 같은 이유입니다. 스위치는 처음부터 스위치로 만들어졌습니다.


3
그리고 전용 라우터가 플래시 디스크에서 실행되기 때문에 부적합한 시간에 고장이 발생하는 부분이 적습니다.
cpt_fink

3
나는 당신이 옳은지 확실하지 않습니다. 나는 netmap ( info.iet.unipi.it/~luigi/netmap )을 기반으로 일한 회사를 위해 매우 기본적인 anti-DDOS 보호를 만들었 으며 일반 하드웨어 (실제로 1Gb / s 또는 11M 전체)에서도 매우 잘 수행되었습니다. 패킷 / 초). 해당 사이트에는 "일반"하드웨어에서 3M 패킷 / 초를 전달할 수있는 넷 맵용 openswitch 버전도 있지만,이를 수행 할 수있는 저렴한 (500 $) 스위치는 모르지만 잘못되었을 수 있습니다.
XzKto

2
@XzKto 일반적으로 저렴한 (60 달러) 5 포트 GigE 스위치는 모든 포트 조합간에 전체 회선 속도로 패킷을 전달할 수 있습니다. 일반적으로 전체 비 차단 크로스바를 사용합니다.
David Schwartz

@XzKto David가 의미하는 바는 "자신의 인터페이스 처리량"속도를 처리하는 PC와 달리 포트 대 포트의 모든 조합에 대해 스위치가 작동합니다. host1이 host2와 3-4로 통신하고 각 연결이 전이중 및 최대 처리량으로 이루어질 수 있습니다 . 당신은 그것을 이길 수 없습니다. (더 많은 돈, 더 많은 포트, 더 빠른 이유를 쉽게 알 수 있습니다). 라우터의 경우 비슷한 종류입니다. 하드웨어는 충분한 정보를 얻 자마자 리 라우트 할 수 있기 때문에 소프트웨어보다 빠르게 리 라우트 할 수 있습니다 (리눅스 라우터는 각 계층에서 처리하지만 이미 느리게 진행됩니다)
Olivier Dulac

11

"IOS 이외"?

iOS는 거의 모든 차이를 만듭니다. CentOS는 범용 운영 체제입니다. 광범위한 하드웨어 구성을 사용하여 매우 다양한 시나리오에서 충분히 성능을 발휘하도록 설계되었습니다. 반면에 IOS는 Cisco 장비에서 볼 수있는 매우 특정한 유형의 하드웨어를 사용하여 네트워크 장비에서 예상되는 종류의 워크로드 만 처리하도록 조정되었습니다.

프로그래밍하려는 하드웨어를 정확히 아는 것은 성능과 호환성 측면에서 매우 먼 길을 갈 것입니다.


3
+1. 시스코에는 엔지니어링 리소스와 필요할 때 소프트웨어를 하드웨어교체 하는 노하우가 있다는 사실도 덧붙 입니다. 즉, 특정 작업이 소프트웨어보다 느리면 ASIC 엔지니어링에 노력을 기울이고 기존 처리 장치에 명령을 추가하거나 속도를 높이기 위해 하드웨어 모듈을 구축 할 수 있습니다. 소프트웨어 하드웨어를 모두 제어 할 수있는 고급 스러우면 성능 이 탁월합니다.
Justin ᚅᚔᚈᚄᚒᚔ

둘 다 작동합니다. 하드웨어는 드문 복잡한 사례도 처리 할 필요가 없습니다. 그것은 단지 그것들을 소프트웨어에 던져 넣습니다. 라우팅 루프? 하드웨어를 다루는 방법을 하드웨어에서 파악하려고 시도하지 마십시오.
MSalters

4

소프트웨어와 하드웨어 모두 할 말이 있습니다. 나는 일반 서버 하드웨어에서 인텔과 TP-Link NIC (심지어 Realtek 칩을 사용함)와 라우팅에서 특수 목적 및 범용 소프트웨어를 비교했습니다.

하드웨어 측면에서, ASIC 온보드가 IP 트래픽을 일부 처리 할 수 ​​있으면 프로세서로드가 더 낮아질 수 있습니다. 패킷 전달을 처리 할 때 주 CPU를 우회하여 2 개의 온보드 INtel NIC 칩이 DMA로 직접 통신하는 것을 보았습니다. 한편 Realtek 칩은 패킷이 도착할 때마다 중단됩니다.

소프트웨어 측면에서 소프트웨어가 라우팅에 사용되도록 설계된 경우보다 효율적으로 만들 수 있습니다. 라우팅 소프트웨어로 pfSense + PF (라우터로 사용하기 위해 수정 된 FreeBSD)와 범용 Ubuntu 12.04 + iptables를 모두 사용했으며, 트래픽을 훨씬 더 빠르게 전환했습니다. (리눅스 3.13 커널의 새로운 nftables 덕분에 우분투 14.04는 거의 빠릅니다.)

그러나 전용 라우터에는 한 가지 큰 단점이 있습니다. 트래픽 전환 이외의 많은 기능을 수행 할 수 없으며 가상화 할 수 없습니다. 현재 에지 라우터는 Ubuntu 14.04를 실행하는 ESXi 클러스터 내부의 가상 시스템이며 침입 탐지 시스템 및로드 밸런서 역할도합니다.


3

AFAIK, 범용 운영 체제의 오버 헤드입니다. 연결 속도에 관계없이 패킷은 커널 컨텍스트 내에서 패킷 단위로 처리되므로 시스템의 대기 시간과 스트레인이 증가합니다. 나는 그것이 이미 할 수있는 것보다 다른 답변에서 이미 설명되었다고 생각합니다.

이미 말한 것처럼, 인기와 타당성이 높아질 유망한 새로운 "ish"기술이 있으며, 이것과 다른 측면에서 Linux 시스템에서보다 강력한 경쟁자를 만들 수 있습니다. 즉 InfiniBand

StackOverflow에서 다음 Q & A를 살펴보십시오. TCP 커널 바이 패스 구현 방법

추가 자료 :


2

일반적으로 Linux의 기본 네트워크 스택 / 장치 구성이 없기 때문입니다. 거의 90 %의 경우 네트워크 트래픽은 CPU0에 의해 처리되고 다른 트래픽은 유휴 상태입니다. 이 문제를 해결하면 하드웨어 라우터와의 차이는 생각만큼 과감하지 않습니다. 최소한 RSS 또는 RPS (CPU 간 드라이버 / 스택 기반 패킷 처리 배포)를 설정해야합니다.

Linux 라우터 성능을 실제로 관리하고 충분한 시간이 있다면 packagecloud 블로그 에서이 기사 를 읽는 것이 좋습니다 (패킷 전송에 대한 기사도 있음).

배포판을 살펴보고 while sleep 1; do cat $some_file_in_procfs; doneCPU 마스크 평가 및 수동 smp_affinity작성을 보는 것이 지루하다고 생각한다면 내 pet-project netutils-linux가 매우 유용하다는 것을 알 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.