데이터 센터 호스트를 연결하기위한 고 처리량 메시 VPN


16

우리는 공공 데이터 센터에서 여러 호스트를 임대하고 있습니다. 데이터 센터는 개인 VLAN을 제공하지 않습니다. 모든 호스트는 하나 이상의 공개 IPv4 / IPv6 주소를받습니다. 호스트에는 최신 CPU (Haswell quad-core, 3.4GHz)가 제공되며 Gbit 업 링크가 있습니다. 데이터 센터의 다른 영역 (방? 층? 건물?)은 내가 말할 수있는 것부터 Gbit 또는 500Mbit 링크와 상호 연결되어 있습니다. 우리 호스트는 debian wheezy를 운영하고 있습니다. 현재 10 개 이상의 호스트를 운영하고 있으며 가까운 시일 내에 성장을 기대하고 있습니다.

모든 호스트가 안전하고 기밀로 서로 통신 할 수있는 방법을 찾고 있습니다. 레이어 3은 괜찮고 레이어 2는 괜찮습니다 (필요하지는 않습니다). VLAN에 액세스 할 수 없기 때문에 일종의 VPN이어야합니다.

나에게 중요한 것은 :

  1. 높은 처리량, 유선 속도에 이상적
  2. 분산 형 메시 아키텍처-중앙 요소 (예 : VPN 집중 장치)에 의해 처리량이 느려지지 않도록하기위한 것입니다.
  3. CPU 풋 프린트가 과도하지 않습니다 (AESNI 및 GCM 암호 제품군을 제공합니다.
  4. 사용 편의성; 설정하기에는 너무 복잡하지 않습니다. 기존 연결을 잃지 않고 네트워크가 커질 수 있음

우리는 현재 tinc를 사용 하고 있습니다. [2]와 [4]를 똑딱 거리지 만 960Mbit / s 회선 속도의 약 600Mbit / s (단순)에 도달하고 하나의 코어를 완전히 느슨하게합니다. 또한 현재 개발중인 tinc 1.1은 아직 멀티 스레드가 아니므로 싱글 코어 성능에 갇혀 있습니다.

기존의 IPSec은 문제가되지 않습니다. 중앙 요소 나 sh * tload의 터널을 구성해야하기 때문입니다 ([2]). 기회 암호화를 사용하는 IPsec이 해결책이 될 수 있지만 안정적인 프로덕션 코드로 만들지 확실하지 않습니다.

나는 오늘 tcpcrypt를 우연히 발견했습니다 . 누락 된 인증을 제외하고는 원하는 것 같습니다. 사용자 공간 구현은 느리게 냄새가 나지만 다른 모든 VPN도 마찬가지입니다. 그리고 그들은 커널 구현에 대해 이야기합니다. 아직 시도하지 않았으며 [1]과 [3]의 작동 방식에 관심이 있습니다.

다른 옵션이 있습니까? AWS를 사용 하지 않는 사람들은 무엇을하고 있습니까?

추가 정보

CPU 사용량이 줄어들기를 희망하는 GCM에 관심이 있습니다. 주제에 대한 인텔의 문서를 참조하십시오 . Tinc 개발자 중 한 명과 이야기 할 때, 그는 암호화에 AESNI를 사용하더라도 HMAC (예 : SHA-1)는 여전히 Gbit 속도로 매우 비싸다고 설명했습니다.

최종 업데이트

전송 모드의 IPsec은 완벽하게 작동하며 원하는 것을 정확하게 수행합니다. 많은 평가를 거친 후 나는 AES-GCM을 지원하기 때문에 ipsec-tools보다 Openswan을 선택했습니다. Haswell CPU에서 약 910-920Mbit / sec 심플 렉스 처리량을 약 8-9 %의 CPU로드로 측정 kworkerd합니다.


저급 장비? 기가비트 수준 암호화를 수행 한 후에는 어떤 성능을 유지해야합니까? 안 돼요-더 전문적인 호스트를 찾거나 암호화 부분을 죽이는 것이 좋습니다.
TomTom

2
인텔의 암호화 성능 백서 에 따르면 AES-128-CBC의 암호화 성능은 바이트 당 4.52 사이클이므로 100MB / s가 단일 코어의 ~ 450MHz를 차지합니다. 암호 해독은 상당히 저렴합니다. 따라서 구현 관련 문제로 인해 성능이 저하되지 않는 한 동시에 최대 CPU 성능과 최대 네트워크 성능이 필요하지 않은로드에 대해서는 문제가 해결되지 않습니다 .
the-wabbit

왜 GCM을 원하십니까? IPSEC는 TLS의 공격에 취약하지 않기 때문에 CBC 모드에서 TLS의 약점을 해결하기 위해 GCM을 사용하는 것을 고려하는 것이 문제입니다.
the-wabbit

답변:


15

당신 원하지 않는 것은 VPN입니다. 당신이 원하는 것은 아니지만 터널 모드에서, 참으로 IPsec을합니다. 오히려 IPsec을 전송 모드로 사용 하려고 합니다.

이 구성에서 각 호스트는 해당 피어와 직접 통신하며 패킷 페이로드 만 암호화되어 IP 헤더는 그대로 둡니다. 이런 식으로, 당신은 일을하기 위해 라우팅 체조를 할 필요가 없습니다.

예, 호스트가 서브넷으로 그룹화되지 않은 경우 (CIDR 블록을 통해이를 수행 할 수없는 경우) 각 호스트에 대해 IPsec 연결 스탠자가 필요하지만 구성 관리 시스템에서 프로그래밍 방식으로 쉽게 생성 할 수 있습니다.

구성 세부 사항에 대해서는 묻지 않았지만 포인터가 필요한 경우 (전송 모드에 대한 확실한 정보가 많지 않음) 최근에 작성한 이 블로그 게시물을 참조 할 수 있습니다 .


이를 위해 IPSEC 전송 모드를 사용하는 아이디어가 두 번째입니다. 그러나 OpenSWAN과 함께 PSK를 사용하는 것이 모든 설정에서 최상의 것은 아닙니다. 리눅스는 이미 기본 IPSEC 구현과 키잉 데몬 (racoon)을 가지고 있으며, KAME / racoon이 다루지 않는 특정 요구 사항이 없다면이를 고수 할 것입니다.
the-wabbit

1
정말 고마워! 귀하의 조언을 결합하여 기본 IPsec 구현을 너구리와 함께 사용했습니다. 작은 단일 코어 컴퓨터에서 먼저 테스트했으며 이미 처리량이 50 % 증가했으며 대기 시간은 약 60 %로 떨어졌습니다. 다음 주에 Haswell 노드에서 확인하고 답변을 수락하겠습니다. 커널에서 AES-GCM이 지원되는지 여부와 IPsec에 신호를 보내는 방법을 알아야합니다.
행크

@ syneticon-dj-그냥 궁금합니다 ... openswan은 어떻습니까? 여전히 IPsec에 커널의 ip xfrm 비트를 사용하지만 racoon 대신 pluto를 사용자 공간 IKE 데몬으로 사용합니다. 나는 openswan이 최고라고 주장하지는 않습니다. 이것은 내가 사용한 전부이며 더 나은 옵션이 있으면 그 방향으로 가고 싶습니다.
EEAA

1
아마도 개인적인 취향으로 보일지 모르지만 Free- / OpenSWAN 구성 파일의 우아함과 완전히 못생긴 라우팅 구현에 항상 어려움을 겪었습니다. 나는 racoonctl상업용 라우터가 IPSEC 제어에서 허용하는 것과 매우 유사한 동적 부분을 매우 좋아 합니다. KAME는 더 철저하게 엔지니어링 된 반면 OpenSWAN은 패치 된 느낌을받습니다.
the-wabbit

@ syneticon-dj, 이것에 대해 자세히 설명 하시겠습니까? 이제 Openswan과 같이 여러 SA 구성 없이도 IPSec 링크를 통해 여러 네트워크를 라우팅 할 수 있습니까?
rsuarez
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.