Linux에서 IPsec 병목 현상은 무엇입니까?


19

기가비트 이더넷에 연결된 두 호스트 간의 여러 네트워크 보안 프로토콜의 성능을 비교하려고합니다.

여기서 목표는 대역폭을 포화시킬 수 있는지, 그렇지 않은 경우 제한 요소가 무엇인지 확인하는 것입니다.

  • SSL을 사용하면 981MBit / s에 도달 할 수 있으므로 이더넷 링크는 분명히 제한 요소입니다.
  • SSH를 사용하면 750MBit / s에 도달 할 수 있지만 코어 중 하나의 사용량은 100 %입니다. SSH는 단일 스레드이므로 CPU가 제한 요소입니다.
  • IPsec을 사용하면 약 500MBit / s를 읽지 만 코어가 100 %가 아닙니다 (50 % 미만).

내 질문은 : 왜 IPsec이 더 높은 대역폭에 도달 할 수 없습니까?

두 호스트는 IPsec을 위해 Debian Wheezy 및 Strongswan을 실행하고 있습니다.


3
CPU가 aes두 사이트 intel.co.jp/content/dam/www/public/us/en/documents/white-papers/… 에서 패킷을 더 잘 처리 할 수있는 지침을 가지고 있는지 확인해야합니다. IPSec을 병렬을 만들고 터널 모드 + ESP를 사용하여 - strongswan.org/docs/Steffen_Klassert_Parallelizing_IPsec.pdf을 . 이것이이 프로토콜로 성능을 달성하는 가장 좋은 방법입니다.

불행히도 AES-NI를 지원하지 않는 i3 프로세서가 있으며 두 호스트간에 터널 모드로 작업합니다. 하나의 CPU가 100 % 사용 된 경우 두 가지 조언이 어떻게 대역폭을 증가시키는 지 이해합니다. AES-NI를 사용하면 더 많은 패킷을 처리 할 수 ​​있으며 BW가 증가합니다. 그러나 여기서 CPU는 제한 요소가 아닌 것 같습니다.
user50228

3
흠, 흥미 롭습니다. 커널의 무언가가 속도를 늦추고 있다고 의심됩니다. ipsec 구성을 공유 하시겠습니까? VM을 계측하고 다른 설정으로 어떤 결과를 얻을 수 있는지 확인하고 싶습니다.
Lmwangi

답변:


1

여기에는 많은 요소가 있습니다. NIC는 상상할 수있는 것보다 보드의 더 많은 부분에 부딪칩니다. 지침이 전선을 가로 질러 드라이버 시스템의 일부에 부딪 치면 병목이 떨어질 수 있습니다. 싱글 보드 1200mhz 싱글 코어를 사용하고 하드웨어를 튜닝하여 도어를 끄고 쿼드 코어 3600mhz를 해제 할 수 있습니다. 이것은 실제로 하드웨어 관련 질문입니다.

그들은 이것을 어떻게합니까? 이 http://www.ixiacom.com/products/ixn2x 와 같은 것은 $ 165k "I will you break"장치입니다. 즉, 2 gigs의 잘못된 트래픽이 1gig 파이프로 유입됩니다. 시스템을 때리고 물건을 부수기 시작하면 병목이 '자기 드러납니다'. GDB 기술을 연마하십시오!

시스템마다 문제를 해결하는 방법이 다릅니다. 일부 보드에는 사용자를 제한 할 수있는 기술 제한이 있습니다.

해결책이 모호하기 때문에 대답은 모호합니다. OS 버전마다 다를 수있는 페이징을 포함하여 20 가지 가능성을 생각할 수 있습니다.



0

특정 시간에 두 코어 중 하나만 포화 상태 일 수 있지만 평균적으로 두 커널 모두 약 50 % 인 것처럼 보입니다 (커널이 단일 스레드 IPsec 프로세스를 두 코어에 임의로 할당하기 때문에) Linux와 달리 (Windows와 달리) 일반적으로 스레드를 동일한 코어에 유지하려고 시도합니다.

일부 짧은 기간에 IPSec은 느린 전송 속도와 함께 버퍼링이 불량한 신호가 될 네트워크를 기다릴 수도 있습니다.

또한 압축 (있는 경우) 및 프로토콜 오버 헤드가 테스트에 영향을 줄 수 있습니다.

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