레이블이 라우터인 게시물을 표시합니다. 모든 게시물 표시
레이블이 라우터인 게시물을 표시합니다. 모든 게시물 표시

2013년 2월 8일 금요일

GPU를 이용한 고성능 처리 PacketShader 와 Packet I/O

내일이면 2013년 구정의 시작이네요. 생각해 보면 시간은 참으로 빨리도 흘러갑니다. 오늘은 가볍게 GPU 기반의 소프트웨어 라우터 PacketShader 를 소개해 봅니다. PC 기반의 소프트웨어 플랫폼에서 GPU 를 이용해 코어 패킷 프로세싱을 구현하겠다는 것입니다. GPU 는 패킷인사이드에서도 몇번 언급했듯이 연산처리에 있어서 상당히 뛰어납니다. 그래서 암호해독 같은 것에 GPU 를 이용하면 속도가 크게 좋아지죠.

초기 프로젝트의 시작은 초당 10Gbps 를 목표로 했는데 40Gbps 에 도달했다고 합니다. (현재상황에서 구조적으로 40Gbps 이상의 성능을 만들어내는 것은 어렵다고 하네요) 프로토타입 시스템은 2개의 4 코어 Nehalem CPU (2.66GHz) 를 이용하고 4개의 듀얼포트 10Gbe 인텔 NIC 카드 그리고 2개의 NVIDIA GTX 480 카드를 이용했습니다.

몇가지 성능 측정 결과가 있는데, CPU 만을 이용한 것보다 연산처리가 보다 많이 들어가는 OpenFlow 스위치나 IPsec 터널링에서 상당히 좋은 성능 결과를 보여주고 있습니다.


Figure : IPv4 forwarding


Figure :  OpenFlow switch


Figure : IPsec tunneling (AES-CTR and SHA1)

유저레벨 단에서 고성능을 구현하기 위한 Packet I/O 엔진이라는 것을 공개하고 있습니다. Intel 82598/82599 기반의 네트워크 카드의 디바이스 드라이버입니다. 기존 인텔 IXGBE 드라이버를 많이 뜯어고친 것입니다. libpcap 를 이용하는 것보다 고 성능을 원한다면 해당 드라이버를 한번 이용해 보는 것도 좋을것 같습니다.

고성능에 관심있으신 분은 참고해 보세요.

그리고, KAIST 분들에게 응원을 보냅니다. 마지막으로 구정 연휴 잘 보내고 오세요 :-)

[참고]
1. Packet Shader
http://shader.kaist.edu/packetshader/
2. Packet I/O
http://shader.kaist.edu/packetshader/io_engine/index.html

2010년 1월 8일 금요일

조작된 패킷 전송으로 주니퍼 라우터 크래쉬 또는 리부팅

주니퍼 라우터에 조작된 패킷을 전송할 경우, 라우터가 Crash 되거나 또는 리부팅 될 수 있는 취약점이 보고 되었다. 주니퍼는 자사의 취약점 권고문을 외부로 공개하지 않고, 등록된 사용자만이 볼 수 있으므로 자세한 내용은 알 수 없으나, 알려진 것은 아래와 같다.

- TCP 헤더중 TCP 헤더 옵션에 조작된 패킷을 전송할 경우, JunOS 커널 크래쉬를 일으킬 수 있다.
   (JunOS 는 주니퍼 라우터 제품에서 사용하는 운영체제이다)
- 라우터에서 오픈되어 있는 TCP 포트에 전송하면 된다.
- JunOS 방화벽에서도 이번 이슈와 관련한 패킷을 차단하지 못한다.
TCP_Header.jpg

이미지출처 : tomdixons.com , TCP 헤더

옵션 헤더 필드는 TCP 헤더에서 가장 마지막에 위치한 것이다. 영향을 받는 것은 2009년1월28일 전의 JunOS 3.x - 10.x 까지 해당된다. 현재 주니퍼 라우터를 운영하는 곳에서는 업그레이드 방법 이외에 임시적으로 이 문제를 해결하기 위한 방법은 없는 것으로 알려져 있다.
다음은 이번 취약점과 관련해 간단한 Concept 을 구현한 화면이다.
hod# ping 169.254.1.1
PING 169.254.1.1 (169.254.1.1): 56 data bytes
64 bytes from 169.254.1.1: icmp_seq=0 ttl=254 time=4.623 ms
64 bytes from 169.254.1.1: icmp_seq=1 ttl=254 time=4.531 ms
64 bytes from 169.254.1.1: icmp_seq=2 ttl=254 time=4.315 ms
^C<...>

hod# ./hod-junos-test 169.254.1.1 22
[*] Target IP: 169.254.1.1, Port: 22
[+] Sending TCP-packets with various crafted TCP options
[+] TCP options bruteforce progress:
[..........................................................
...........................................................
...........................................................
.......................................................]
[+] OK

hod# ping 169.254.1.1
PING 169.254.1.1 (169.254.1.1): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
^C


라우터는 인터넷 운영에 있어 핵심적인 장비로, ISP(Internet Service Provider) 등에서는 이런 취약점이 치명적이다. 네트워크 운영에서 장비들이 취약점을 갖는 경우 큰 문제를 야기할 수 있어, 네트워크를 관리하는 담당자라면 사용하는 벤더의 보안 권고문을 구독하는등 관리 뿐만 아니라 보안에도 관심을 가져야 할 것이다.