KR100670817B1 - IXDP2851에서의 IPSec 엔진 구현 방법 및 장치 - Google Patents

IXDP2851에서의 IPSec 엔진 구현 방법 및 장치 Download PDF

Info

Publication number
KR100670817B1
KR100670817B1 KR1020050120993A KR20050120993A KR100670817B1 KR 100670817 B1 KR100670817 B1 KR 100670817B1 KR 1020050120993 A KR1020050120993 A KR 1020050120993A KR 20050120993 A KR20050120993 A KR 20050120993A KR 100670817 B1 KR100670817 B1 KR 100670817B1
Authority
KR
South Korea
Prior art keywords
packet
microblock
ipsec
forwarding
inbound
Prior art date
Application number
KR1020050120993A
Other languages
English (en)
Inventor
한민호
김기영
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020050120993A priority Critical patent/KR100670817B1/ko
Priority to US11/449,334 priority patent/US7733862B2/en
Application granted granted Critical
Publication of KR100670817B1 publication Critical patent/KR100670817B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/22Arrangements for preventing the taking of data from a data transmission channel without authorisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/164Implementing security features at a particular protocol layer at the network layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5603Access techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 IXDP2851에서의 IPSec 엔진 구현 방법에 관한 것으로, IXP2850 네트워크 프로세서 개발 플랫폼인 IXDP2851에서의 IPSec 엔진 구현 장치에 있어서, 입력받은 패킷 정보를 이용하여 패킷의 IP 헤더의 목적지 주소가 자신인 인바운드 패킷과 자신이 아닌 아웃바운드 패킷으로 분류하고, 인바운드 패킷과 아웃바운드 패킷에 대한 IPSec 처리가 필요한지 여부를 판단하며, IPSec 처리가 필요하지 않은 패킷에 대한 패킷 포워딩을 수행하는 패킷 분류/포워딩 마이크로블록; 패킷 분류/포워딩 마이크로블록에서 아웃바운드 패킷이고 IPSec 처리가 필요하다고 판단된 경우에 패킷 분류/포워딩 마이크로블록으로부터 패킷 정보를 입력받아 해당하는 패킷에 대해 IPSec 처리하는 아웃바운드 IPSec 처리 마이크로블록; 패킷 분류/포워딩 마이크로블록에서 인바운드 패킷이고 IPSec 처리가 필요하다고 판단된 경우에 패킷 분류/포워딩 마이크로블록으로부터 패킷 정보를 입력받아 해당하는 패킷에 대해 IPSec 처리하는 인바운드 IPSec 처리 마이크로블록; 및 아웃바운드 IPSec 처리 마이크로블록 및/또는 인바운드 IPSec 처리 마이크로블록으로부터 IPSec 처리가 수행된 패킷의 패킷 정보를 입력받아 해당하는 패킷에 대해 포워딩을 수행하는 IPSec 포워딩 마이크로블록;으로 구성된다. 따라서, IPSec 처리가 필요한 패킷과 필요 없는 패킷을 분리하여 처리함으로써 IPSec 처리가 필요하지 않은 일반 패킷의 처리 속도에는 거의 영향을 주지 않고 IPSec 엔진을 구현할 수 있다.

Description

IXDP2851에서의 IPSec 엔진 구현 방법 및 장치{Method and apparatus for implementation IPSec engine in IXDP2851}
도 1은 종래의 IXP2850 네트워크 프로세서 개발 플랫폼인 IXDP2851의 구조를 간략히 나타낸 블록도이다.
도 2는 본 발명의 일실시예에 따른 IXP2850 네트워크 프로세서의 구조를 나타낸 도면이다.
도 3은 본 발명의 일실시예에 따른 IPSec 엔진을 구현하기 위한 마이크로블록 및 스프래치 링의 구조를 나타낸 도면이다.
도 4a와 도 4b는 도 3에서 패킷 분류/포워딩 마이크로블록의 패킷 처리 과정에 대하여 보다 구체적으로 나타낸 흐름도이다.
도 5는 도 2의 IPSec 코어를 보다 구체적으로 나타낸 도면이다.
본 발명은 IXDP2851에서의 IPSec 엔진 구현 방법에 관한 것으로, 더욱 상세하게는 IPSec 처리가 필요한 패킷과 필요 없는 패킷을 따로 분리하여 처리함으로써 IPSec 처리가 필요하지 않은 일반 패킷의 처리 속도에는 거의 영향을 주지 않고 IPSec 엔진을 구현할 수 있는 IXDP2851에서의 IPSec 프로토콜 처리 장치 및 방법에 관한 것이다.
IXP2850과 같은 네트워크 프로세서는 고속의 데이터 처리를 요구하는 네트워크 장비에서 사용되며, 프로그램에 의해 동작하여 기존의 알고리즘을 업그레이드하거나 추가할 수 있는 기능을 제공한다.
도 1은 종래의 IXP2850 네트워크 프로세서 개발 플랫폼인 IXDP2851의 구조를 간략히 나타낸 블록도이다.
도 1을 참조하면, IXP2850 네트워크 프로세서 개발 플랫폼인 IXDP2851(100)은 이더넷 MAC(Ethernet MAC)(120) 및 IXP2850 네트워크 프로세서(IXP2850 Network Processor)(140)를 포함하여 이루어진다. 여기에서, IXP2850 네트워크 프로세서(140)는 인텔(Intel)사에서 제작한 네트워크 프로세서이다.
이더넷 MAC(120)은 이더넷 인터페이스 카드(Ethernet interface card)로 네트워크로부터 데이터를 수신하고 네트워크로 데이터를 송신하는 기능을 제공한다.
이와 같은, IXP2850 네트워크 프로세서(140) 개발 플랫폼인 IXDP2851(100)에서는 IXP2850 네트워크 프로세서(140)를 이용하여 새로운 응용프로그램(application)을 구성할 수 있다.
구체적으로 예를 들면, IXDP2851(100)을 이용하여 QoS(Quality of Service), MPLS(Multiprotocol Label Switching) 등을 구성할 수 있다.
그러나, 상기와 같은 네트워크 프로세서 개발 플랫폼인 IXDP2851(100)을 통 하여 네트워크 통신의 패킷 처리 계층에서의 보안 프로토콜인 IPSec(Internet Protocol Security)의 구현 방법 및 장치가 개발되지 않고 있다.
상기의 문제점을 해결하기 위하여 본 발명은 IXDP2851에서의 IPSec 엔진을 구현함에 있어서, 패킷의 라우팅에 앞서 IP 헤더를 검사하여 IPSec 처리가 필요한 패킷에 대해서만 IPSec 엔진이 동작하는 마이크로엔진으로 전달하여 IPSec 처리가 필요하지 않은 일반 패킷의 처리 속도에는 거의 영향을 주지 않는 IPSec 엔진 구현 방법 및 장치를 제공한다.
상기의 목적을 달성하기 위한 본 발명의 IXDP2851에서의 IPSec 엔진 구현 장치는, IXP2850 네트워크 프로세서 개발 플랫폼인 IXDP2851에서의 IPSec 엔진 구현 장치에 있어서, 입력받은 패킷 정보를 이용하여 패킷의 IP 헤더의 목적지 주소가 자신인 인바운드 패킷과 자신이 아닌 아웃바운드 패킷으로 분류하고, 상기 인바운드 패킷과 아웃바운드 패킷에 대한 IPSec 처리가 필요한지 여부를 판단하며, 상기 IPSec 처리가 필요하지 않은 패킷에 대한 패킷 포워딩을 수행하는 패킷 분류/포워딩 마이크로블록; 상기 패킷 분류/포워딩 마이크로블록에서 아웃바운드 패킷이고 IPSec 처리가 필요하다고 판단된 경우에 상기 패킷 분류/포워딩 마이크로블록으로부터 패킷 정보를 입력받아 해당하는 패킷에 대해 IPSec 처리하는 아웃바운드 IPSec 처리 마이크로블록; 상기 패킷 분류/포워딩 마이크로블록에서 인바운드 패킷이고 IPSec 처리가 필요하다고 판단된 경우에 상기 패킷 분류/포워딩 마이크로블록 으로부터 패킷 정보를 입력받아 해당하는 패킷에 대해 IPSec 처리하는 인바운드 IPSec 처리 마이크로블록; 및 상기 아웃바운드 IPSec 처리 마이크로블록 및/또는 인바운드 IPSec 처리 마이크로블록으로부터 IPSec 처리가 수행된 패킷의 패킷 정보를 입력받아 해당하는 패킷에 대해 포워딩을 수행하는 IPSec 포워딩 마이크로블록;을 포함하는 것을 특징으로 가진다.
상기의 목적을 달성하기 위한 본 발명의 IXDP2851에서의 IPSec 엔진 구현 방법은, IXP2850 네트워크 프로세서 개발 플랫폼인 IXDP2851에서의 IPSec 엔진 구현 방법에 있어서, (a) 패킷 분류/포워딩 마이크로블록은 입력받은 패킷 정보에 해당하는 패킷이 IP 헤더가 유효한 경우에, 패킷의 IP 헤더의 목적지 주소가 자신인 인바운드 패킷인지 또는 패킷의 IP 헤더의 목적지 주소가 자신이 아닌 아웃바운드 패킷인지 여부를 판단하는 IP 헤더 목적지 판단단계; (b) 상기 (a)단계에서 상기 인바운드 패킷이라고 판단된 경우에는 상기 인바운드 패킷에 대한 IPSec 처리가 필요한지 여부를 판단하고, IPSec 처리가 필요한 경우 상기 인바운드 패킷에 대한 정보를 인바운드 IPSec 처리 마이크로블록으로 전송하는 단계; (c) 상기 (a)단계에서 상기 아웃바운드 패킷이라고 판단된 경우에는 상기 아웃바운드 패킷에 대한 IPSec 처리가 필요한지 여부를 판단하고, IPSec 처리가 필요한 경우 상기 아웃바운드 패킷에 대한 정보를 아웃바운드 IPSec 처리 마이크로블록으로 전송하는 단계; 및 (d) 상기 (c)단계에서 상기 아웃바운드 패킷에 대한 IPSec 처리가 필요하지 않다고 판단되면 상기 아웃바운드 패킷에 대하여 패킷 포워딩을 수행하고 이더넷 헤더를 추가하는 단계;를 포함하는 것을 특징으로 가진다.
이하에서, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대하여 상세히 설명한다.
도 2는 본 발명의 일실시예에 따른 IXP2850 네트워크 프로세서의 구조를 나타낸 도면이다.
도 2를 참조하면, IXP2850 네트워크 프로세서는 6개의 코어 컴퍼넌트(core component)와 8개의 마이크로블록(microblock)으로 구성된다.
6개의 코어 컴퍼넌트(core component)는 패킷 수신 코어(Packet Rx core)(205), IPSec 코어(IPSec core)(215), 패킷 분류/포워딩 코어(Packet classifier/forwarding core)(225), 패킷 Queue 관리 코어(Packet Queue Manager core)(255), 패킷 스케줄러 코어(Packet Scheduler core)(265) 및 패킷 송신 코어(Packet Tx core)(275)로 구성된다.
8개의 마이크로블록은 패킷 수신 마이크로블록(Packet Rx microblock)(200), 인바운드 IPSec 처리 마이크로블록(Inbound IPSec Processing microblock)(210), 패킷 분류/포워딩 마이크로블록(Packet Classifier/forwarding microblock)(220), 아웃바운드 IPSec 처리 마이크로블록(Outbound IPSec Processing miceoblock)(230), IPSec 패킷 포워딩 마이크로블록(240), 패킷 Queue 관리 마이크로블록(Packet Queue Manager microblock)(250), 패킷 스케줄러 마이크로블록(Packet Scheduler microblock)(260) 및 패킷 송신 마이크로블록(Packet Tx microblock)(270)으로 구성된다.
패킷 수신 마이크로블록(Packet Rx microblock)(200)은 이더넷 MAC(도 1의 120)을 통하여 입력되는 패킷들을 수신하고 재집합하여 IXDP2851내에 존재하는 DRAM(미도시)에 쓰기(writing)한 뒤 패킷 분류/포워딩 마이크로블록(220)으로 패킷에 대한 정보를 전달하는 기능을 제공한다.
패킷 분류/포워딩 마이크로블록(220)은 패킷 수신 마이크로블록(200)으로부터 입력되는 패킷 정보를 이용하여 DRAM에 존재하는 패킷의 이더넷 헤더를 제거하고 RFC 1812에 따른 IP 헤더의 유효성(validation) 검사 및 IP 헤더의 갱신(TTL 감소, 체크섬 재계산)을 수행하는 기능을 제공한다(Ethernet Decap).
또한, 패킷 분류/포워딩 마이크로블록(220)은 패킷에 대하여 IPSec 처리를 할 것인지 여부를 판단하고(Packet Classifier), IPSec 처리를 할 필요가 없는 패킷에 대하여는 라우팅 테이블을 이용하여 패킷 포워딩(forwarding) 기능을 제공한다.
패킷 분류/포워딩 마이크로블록(220)의 보다 구체적인 동작에 대하여는 도 3에서 살펴보기로 한다.
인바운드 IPSec 처리 마이크로블록(210)은 패킷 분류/포워딩 마이크로블록(220)으로부터 인바운드 패킷의 정보를 입력받아 DRAM에 존재하는 실질적인 패킷을 읽어 와서 IPSec 처리를 수행하고, IPSec 처리가 끝난 뒤 변경된 실질적인 패킷을 DRAM에 쓴다. 그리고, 인바운드 IPSec 처리 마이크로블록(210)은 IPSec 처리된 인바운드 패킷에 대한 정보를 IPSec 패킷 포워딩 마이크로블록(240)으로 보낸다.
여기에서, 인바운드 IPSec 처리 마이크로블록(210)은 패킷에 대한 IPSec 처리에 필요한 정보(예를 들면, 패킷에 적용될 IPSec 프로토콜, 사용할 알고리즘 및 키(key) 값 등)를 Policy 테이블 및 SA(Security Association) 테이블로부터 가져오며, 패킷의 암호 및 인증에 필요한 알고리즘은 IXP2850 네트워크 프로세서의 암호 엔진(cryptography engine)을 이용한다.
아웃바운드 IPSec 처리 마이크로블록(230)은 패킷 분류/포워딩 마이크로블록(220)으로부터 아웃바운드 패킷의 정보를 입력받아 DRAM에 존재하는 실질적인 패킷을 읽어 와서 IPSec 처리를 수행하고, IPSec 처리가 끝난 뒤 변경된 실질적인 패킷을 DRAM에 쓴다. 그리고, 아웃바운드 IPSec 처리 마이크로블록(230)은 IPSec 처리된 아웃바운드 패킷에 대한 정보를 IPSec 패킷 포워딩 마이크로블록(240)으로 보낸다.
여기에서, 아웃바운드 IPSec 처리 마이크로블록(230)은 패킷에 대한 IPSec 처리에 필요한 정보(예를 들면, 패킷에 적용될 IPSec 프로토콜, 사용할 알고리즘 및 키(key) 값 등)를 Policy 테이블 및 SA(Security Association) 테이블로부터 가져오며, 패킷의 암호 및 인증에 필요한 알고리즘은 IXP2850 네트워크 프로세서의 암호 엔진(cryptography engine)을 이용한다.
IPSec 패킷 포워딩 마이크로블록(240)은 인바운드 IPSec 처리 마이크로블록(210)과 아웃바운드 IPSec 처리 마이크로블록(230)으로부터 IPSec 처리가 완료된 패킷에 대한 정보를 수신하여 수신된 패킷에 대한 포워딩을 수행하고 이더넷 헤더를 붙인 뒤 패킷 Queue 관리 마이크로블록(250)으로 패킷에 대한 정보를 보낸다. 도 2에서 IPSec 패킷 포워딩 마이크로블록(240)은 인바운드 IPSec 처리 마이크로블록(210)과 연결되는 것과 아웃바운드 IPSec 처리 마이크로블록(230)과 연결되는 것 두 개로 그려져 있으나 실제적으로는 하나로 구성되어 있다.
패킷 스케줄러 마이크로블록(260)은 패킷 Queue 관리 마이크로블록(250)으로 받은 패킷 중에서 패킷 송신 마이크로블록(270)으로 보낼 패킷에 대해 스케줄링하는 역할을 수행한다.
패킷 Queue 관리 마이크로블록(250)은 패킷 분류/포워딩 마이크로블록(220) 또는 IPSec 패킷 포워딩 마이크로블록(240)으로부터 포워딩 되어 출력되는 패킷에 대한 정보를 입력받고 패킷 스케줄러 마이크로블록(260)의 스케줄링에 따라 스케줄링된 패킷의 정보를 패킷 송신 마이크로블록(270)으로 보낸다.
패킷 송신 마이크로블록(270)은 패킷 Queue 관리 마이크로블록(250)으로부터 패킷에 대한 정보를 입력받은 뒤 DRAM에 존재하는 실질적인 패킷을 이더넷 인터페이스를 통해 전송한다.
상기에서 각각의 마이크로블록은 독립적으로 점유하고 있는 마이크로엔진에서 그 기능을 수행한다. 또한, 마이크로블록들은 서로 통신(communication), 즉 DRAM에 존재하는 패킷에 대한 정보를 전달하기 위하여 스크래치패드 링(scratchpad ring)을 이용한다. 스트래치패드 링을 통하여 마이크로블록들 간에 통신을 하는 것과 관련되어서는 도 3에서 자세히 살펴보기로 한다. 나아가, 각각의 마이크로블록들은 서로 통신을 위한 스크래치패드 링을 이용한 방법 이외에 다양한 방법으로 통신을 수행할 수 있다.
IPv4 어플리케이션(280)은 패킷 라우팅 관련 응용프로그램이고, IPSec 어플리케이션(290)은 IPSec 관련 키 교환 응용프로그램이다.
패킷 수신 코어(205), IPSec 코어(215), 패킷 분류/포워딩 코어(225), 패킷 Queue 관리 코어(255), 패킷 스케줄러 코어(265) 및 패킷 송신 코어(275)는 마이크로엔진에 존재하는 마이크로블록들이 사용할 메모리 할당, 심볼 패치 등의 초기화 기능 및 마이크로 블록들이 패킷 처리시에 사용할 데이터를 관리하는 기능을 제공한다.
도 3은 본 발명의 일실시예에 따른 IPSec 엔진을 구현하기 위한 마이크로블록 및 스프래치패드 링의 구조를 나타낸 도면이다.
도 3을 참조하면, 각각의 마이크로블록은 서로 다른 마이크로엔진(microengine)에서 수행되며, 마이크로블록들 간의 데이터 전달을 위해 스프래치패드 링(scratchpad ring)을 사용한다.
인텔(Intel) IXP2850 네트워크 프로세서는 16개의 마이크로엔진으로 구성되어 있으며, IPSec 엔진을 구현하기 위한 마이크로블록과 마이크로엔진간의 관계는 다음 표 1과 같다.
마이크로블록 마이크로엔진
패킷 수신 마이크로블록 ME 0:0
패킷 분류/포워딩 마이크로블록 ME 0:2, ME 0:3, ME 0:4
인바운드 IPSec 처리 마이크로블록 ME 1:6, ME 1:7
아웃바운드 IPSec 처리 마이크로블록 ME 1:4, ME 1:5
IPSec 패킷 포워딩 마이크로블록 ME 0:5
패킷 스케줄러 마이크로블록 ME 1:1
패킷 Queue 관리 마이크로블록 ME 1:0
패킷 송신 마이크로블록 ME 1:2 ME 1:3
실질적인 패킷은 DRAM 메모리의 버퍼(buffer)에 저장되며, 이 패킷에 대한 정보는 SRAM 메모리 버퍼에 저장된다. 마이크로블록은 스프래치패드 링을 통해 패킷 버퍼 핸들(packet buffer handle) 및 패킷에 대한 일부 정보를 전달하며, 이를 이용하여 마이크로블록은 패킷 처리시 필요한 정보 획득 및 실질적인 패킷에 접근할 수 있다.
패킷 분류/포워딩 마이크로블록(220)과 패킷 수신 마이크로블록(200) 사이에는 패킷 정보를 패킷 수신 마이크로블록(200)으로부터 패킷 분류/포워딩 마이크로블록(220)으로 보내기 위하여 링(ETH_RX_TO_IPV4_SCR_RING)이 형성되어 있다. 즉, 패킷 수신 마이크로블록(200)은 패킷 정보를 링(ETH_RX_TO_IPV4_SCR_RING)에 저장하고, 패킷 분류/포워딩 마이크로블록(220)은 링(ETH_RX_TO_IPV4_SCR_RING)에 저장되어 있는 패킷 정보를 가져오게 된다.
패킷 분류/포워딩 마이크로블록(220)은 패킷 수신 마이크로블록(200)으로부터 패킷에 대한 정보를 가져와서 DRAM에 존재하는 실질적인 패킷의 이더넷 헤더를 제거한다.
그리고, 패킷 분류/포워딩 마이크로블록(220)은 이더넷 헤더를 제거한 패킷에 대하여 IP 헤더의 유효성 검사를 수행한다. IP 헤더의 유효성 검사와 관련되어서는 IP 헤더가 REC1812의 요구를 만족하는지 여부를 통하여 판단한다. IP 헤더의 유효성 검사가 실패하였을 경우에 패킷 수신 마이크로블록(200)으로부터 가져온 패킷정보와 관련된 패킷을 DRAM에서 폐기한다.
그리고, 패킷 분류/포워딩 마이크로블록(220)은 IP 헤더의 유효성 검사가 수행된 패킷에 대하여 IP 헤더 갱신을 수행한다. 여기에서, IP 헤더를 갱신하는 것은 TTL을 감소하고, 체크섬(check sum)을 재계산하는 것이다.
그리고, 패킷 분류/포워딩 마이크로블록(220)은 패킷에 대하여 IPSec 처리를 할 것인지 여부를 검사하게 된다.
보다 구체적으로 살펴보면, 패킷 분류/포워딩 마이크로블록(220)은 IP 헤더의 목적지 주소가 패킷 분류/포워딩 마이크로블록(220) 자신인지 여부를 판단하게 된다. 여기에서, IP 헤더의 목적지 주소가 패킷 분류/포워딩 마이크로블록(220) 자신이고 프로토콜 필드의 값이 ESP(Encapsulating Security Payload)(50) 또는 AH(Authentication Header)(51)이면 SA(Security Association) 테이블을 검색한 뒤 IPSec 처리가 필요할 경우(즉, 이 패킷에 대한 SA가 SA 테이블에 존재할 경우) 상기 패킷에 대한 정보를 인바운드 IPSec 처리 마이크로블록(210)으로 보낸다. 여기에서, SA 테이블은 도 5에서 보는 바와 같이 IXDP2851의 SRAM(540)에 기 저장되어 있다. 한편, SA 테이블을 검색하였는데 적용할 SA가 존재하지 않을 경우, 즉 IPSec 처리가 필요하지 않다고 판단되면 이 패킷을 DRAM에서 폐기한다.
한편, IP 헤더의 목적지 주소가 패킷 분류/포워딩 마이크로블록(220) 자신이 아니면 IP 헤더의 주소를 이용하여 Policy 테이블을 검색한 뒤 IPSec 처리가 필요할 경우 이 패킷에 대한 정보를 아웃바운드 IPSec 처리 마이크로블록(230)으로 보낸다. 여기에서, Policy 테이블은 도 5에서 보는 바와 같이 IXDP2851의 SRAM(540)에 기 저장되어 있다. 한편, Policy 테이블을 검색하였는데 적용할 Policy가 존재하지 않을 경우에(즉, 이 패킷에 대한 Policy가 Policy 테이블에 존재하지 않을 경우) 상기 패킷에 대하여는 IPSec 처리를 거치지 않고 바로 라우팅 테이블을 이용하여 패킷 포워딩을 수행하고, 패킷에 이더넷 헤더를 추가하며, 이더넷 헤더를 추가한 패킷에 대한 정보를 링(IPV4_TO_QM_SCR_RING)을 통하여 패킷 Queue 관리 마이크로블록(250)으로 보낸다.
패킷 분류/포워딩 마이크로블록(220)의 보다 구체적인 동작 흐름에 대하여는 도 4a와 도 4b에서 살펴보기로 한다.
패킷 분류/포워딩 마이크로블록(220)과 인바운드 IPSec 처리 마이크로블록(210) 사이에는 IPSec 처리가 필요한 패킷에 대한 정보를 패킷 분류/포워딩 마이크로블록(220)으로부터 인바운드 IPSec 처리 마이크로블록(210)으로 보내기 위하여 링(IPV4_TO_INBOUND_IPSEC_SRC_RING)이 형성되어 있다. 즉, 패킷 분류/포워딩 마이크로블록(220)은 IPSec 처리가 필요한 패킷 정보를 링(IPV4_TO_INBOUND_IPSEC_SRC_RING)에 저장하고, 인바운드 IPSec 처리 마이크로블록(210)은 링(IPV4_TO_INBOUND_IPSEC_SRC_RING)에 저장되어 있는 IPSec 처리가 필요한 패킷 정보를 가져오게 된다.
인바운드 IPSec 처리 마이크로블록(210)에서는 링(IPV4_TO_INBOUND_IPSEC_SRC_RING)에 저장되어 있는 패킷에 대한 정보를 가져가서 IPSec 처리를 하게 된다.
인바운드 IPSec 처리 마이크로블록(210)과 IPSec 패킷 포워딩 마이크로블록(240) 사이에는 IPSec 처리를 한 패킷에 대한 정보를 인바운드 IPSec 처리 마이크로블록(210)으로부터 IPSec 패킷 포워딩 마이크로블록(240)으로 보내기 위하여 링(IPSEC_TO_IPV4_SCR_RING)이 형성되어 있다. 즉, 인바운드 IPSec 처리 마이크로블록(210)은 인바운드 IPSec 처리가 된 패킷에 대한 정보를 링(IPSEC_TO_IPV4_SCR_RING)에 저장하고, IPSec 패킷 포워딩 마이크로블록(240)은 링(IPSEC_TO_IPV4_SCR_RING)에 저장되어 있는 IPSec 처리를 한 패킷에 대한 정보를 가져오게 된다.
패킷 분류/포워딩 마이크로블록(220)과 아웃바운드 IPSec 처리 마이크로블록(230) 사이에는 IPSec 처리가 필요한 패킷에 대한 정보를 패킷 분류/포워딩 마이크로블록(220)으로부터 아웃바운드 IPSec 처리 마이크로블록(230)으로 보내기 위하여 링(IPV4_TO_OUTBOUND_IPSEC_SRC_RING)이 형성되어 있다. 즉, 패킷 분류/포워딩 마이크로블록(220)은 IPSec 처리가 필요한 패킷에 대한 정보를 링(IPV4_TO_OUTBOUND_IPSEC_SRC_RING)에 저장하고, 아웃바운드 IPSec 처리 마이크로블록(230)은 링(IPV4_TO_OUTBOUND_IPSEC_SRC_RING)에 저장되어 있는 IPSec 처리가 필요한 패킷 정보를 가져오게 된다.
아웃바운드 IPSec 처리 마이크로블록(230)에서는 링(IPV4_TO_OUTBOUND_IPSEC_SRC_RING)에 저장되어 있는 패킷에 대한 정보를 가져와서 IPSec 처리를 하게 된다.
아웃바운드 IPSec 처리 마이크로블록(230)과 IPSec 패킷 포워딩 마이크로블록(240) 사이에는 IPSec 처리를 한 패킷에 대한 정보를 아웃바운드 IPSec 처리 마이크로블록(230)으로부터 IPSec 패킷 포워딩 마이크로블록(240)으로 보내기 위하여 링(IPSEC_TO_IPV4_SCR_RING)이 형성되어 있다. 즉, 아웃바운드 IPSec 처리 마이크로블록(230)은 IPSec 처리가 된 패킷에 대한 정보를 링(IPSEC_TO_IPV4_SCR_RING)에 저장하고, IPSec 패킷 포워딩 마이크로블록(240)은 링(IPSEC_TO_IPV4_SCR_RING)에 저장되어 있는 아웃바운드 IPSec 처리를 한 패킷에 대한 정보를 가져오게 된다.
패킷 분류/포워딩 마이크로블록(220)과 패킷 Queue 관리 마이크로블록(250) 사이에는 패킷 분류/포워딩 마이크로블록(220)에서 바로 포워딩을 수행하는 패킷 정보를 패킷 분류/포워딩 마이크로블록(220)으로부터 패킷 Queue 관리 마이크로블록(250)으로 보내기 위하여 링(IPV4_TO_QM_SCR_RING)이 형성되어 있다. 즉, 패킷 분류/포워딩 마이크로블록(220)은 바로 포워딩을 수행하는 패킷 정보를 링(IPV4_TO_QM_SCR_RING)에 저장하고, 패킷 Queue 관리 마이크로블록(250)은 링(IPV4_TO_QM_SCR_RING)에 저장되어 있는 포워딩을 한 패킷 정보를 가져오게 된다.
또한, IPSec 패킷 포워딩 마이크로블록(240)과 패킷 Queue 관리 마이크로블록(250) 사이에는 IPSec 처리를 한 패킷에 대한 패킷 정보를 IPSec 패킷 포워딩 마이크로블록(240)으로부터 패킷 Queue 관리 마이크로블록(250)으로 보내기 위하여 링(IPV4_TO_QM_SCR_RING)이 형성되어 있다. 즉, IPSec 패킷 포워딩 마이크로블록(240)은 IPSec 처리가 된 패킷에 대한 정보를 링(IPV4_TO_QM_SCR_RING)에 저장하고, 패킷 Queue 관리 마이크로블록(250)은 링(IPV4_TO_QM_SCR_RING)에 저장되어 있는 IPSec 처리를 한 패킷에 대한 패킷 정보를 가져오게 된다.
패킷 Queue 관리 마이크로블록(250)과 패킷 스케줄러 마이크로블록(260) 사이에는 패킷 Queue 관리 마이크로블록(250)에서 받은 패킷 정보를 패킷 Queue 관리 마이크로블록(250)으로부터 패킷 스케줄러 마이크로블록(260)으로 보내기 위한 링(QM_TO_SCH_SCR_RING)이 형성되어 있다. 즉, 패킷 Queue 관리 마이크로블록(250)은 받은 패킷 정보를 링(QM_TO_SCH_SCR_RING)에 저장하고, 패킷 스케줄러 마이크로블록(260)은 링(QM_TO_SCH_SCR_RING)에 저장되어 있는 패킷 Queue 관리 마이크로블록(250)으로 보내진 패킷 정보를 가져오게 된다.
그리고, 패킷 Queue 관리 마이크로블록(250)과 패킷 스케줄러 마이크로블록(260) 사이에는 패킷 스케줄러 마이크로블록(260)에서 패킷 스케줄링된 패킷 정보를 패킷 스케줄러 마이크로블록(260)으로부터 패킷 Queue 관리 마이크로블록(250)으로 보내기 위한 링(SCH_TO_QM_SCR_RING)이 형성되어 있다. 즉, 패킷 스케줄러 마이크로블록(260)은 패킷 스케줄링된 패킷 정보를 링(SCH_TO_QM_SCR_RING)에 저장하고, 패킷 Queue 관리 마이크로블록(250)은 링(SCH_TO_QM_SCR_RING)에 저장되어 있는 패킷 스케줄링된 패킷 정보를 가져오게 된다.
또한, 패킷 Queue 관리 마이크로블록(250)과 패킷 송신 마이크로블록(270) 사이에는 패킷 스케줄러 마이크로블록(260)의 스케줄링에 따라서 스케줄링된 패킷의 정보, 즉 보내고자 하는 패킷의 정보를 패킷 Queue 관리 마이크로블록(250)으로부터 패킷 송신 마이크로블록(270)으로 보내기 위하여 링(QM_TO_TX_SCR_RING)이 형성되어 있다. 즉, 패킷 Queue 관리 마이크로블록(250)은 보내고자 하는 패킷의 정보를 링(QM_TO_TX_SCR_RING)에 저장하고, 패킷 송신 마이크로블록(270)은 링(QM_TO_TX_SCR_RING)에 저장되어 있는 패킷의 정보를 가져오게 된다.
패킷 송신 마이크로블록(270)은 패킷 Queue 관리 마이크로블록(250)으로부터 패킷에 대한 정보를 받은 뒤 DRAM에 존재하는 실질적인 패킷을 이더넷 인터페이스를 통해 전송한다.
도 3에서 IPSec 패킷 포워딩 마이크로블록(240)은 인바운드 IPSec 처리 마이크로블록(210)과 연결되는 것과 아웃바운드 IPSec 처리 마이크로블록(230) 연결되는 것 두 개로 도시되어 있으나 실제적으로는 하나로 구성되어 있다.
그리고, 링(IPSEC_TO_IPV4_SCR_RING)은 인바운드 IPSec 처리 마이크로블록(210)과 연결되는 것과 아웃바운드 IPSec 처리 마이크로블록(230) 연결되는 것 두 개로 도시되어 있으나 실제적으로는 하나로 구성되어 있다.
또한, 링(IPV4_TO_QM_SCR_RING)은 패킷 분류/포워딩 마이크로블록(220)과 패킷 Queue 관리 마이크로블록(250) 사이에서 하나, IPSec 패킷 포워딩 마이크로블록(240)과 패킷 Queue 관리 마이크로블록(250) 사이에 두 개, 즉 전체 세 개로 그려져 있으나 실제적으로는 하나로 구성되어 있다.
도 4a와 도 4b는 도 3에서 패킷 분류/포워딩 마이크로블록(220)의 패킷 처리 과정에 대하여 보다 구체적으로 나타낸 흐름도이다.
도 4a와 도 4b를 참조하면, 먼저, 패킷 분류/포워딩 마이크로블록(220)은 패킷 수신 마이크로블록(200)과 패킷 분류/포워딩 마이크로블록(220) 사이의 링(ETH_RX_TO_IPV4_SCR_RING)에 패킷에 대한 정보가 존재하는지 여부를 판단한다(S400).
단계S400에서의 판단결과, 링(ETH_RX_TO_IPV4_SCR_RING)에 패킷에 대한 정보가 존재하지 않는다고 판단되면 단계S400을 반복한다. 한편, 단계S400에서의 판단결과, 링(ETH_RX_TO_IPV4_SCR_RING)에 패킷에 대한 정보가 존재한다고 판단되면 단계S405로 진행한다.
단계S405에서는 링(ETH_RX_TO_IPV4_SCR_RING)에서 패킷에 대한 정보를 가져온다.
다음으로, 단계S405에서 가져온 패킷에 대한 정보를 통하여 DRAM에 실제로 존재하는 패킷의 이더넷 헤더를 제거한다(S410).
다음으로, IP 헤더가 유효한지 여부를 판단한다(S420). 여기에서, IP 헤더가 유효한지 여부는 이더넷 헤더를 제거한 패킷의 IP 헤더가 RFC1812의 요구를 만족하는지 여부를 통하여 판단하게 된다.
단계S420에서의 판단결과, IP 헤더가 유효하지 않다고 판단되면 단계S492로 진행하여 DRAM에 실제로 존재하는 패킷을 폐기하게 된다. 한편, 단계S420에서의 판단결과, IP 헤더가 유효하다고 판단되면 단계S430으로 진행한다.
단계S430에서는 IP 헤더를 갱신하게 된다. 여기에서, IP 헤더를 갱신하는 것은 TTL을 감소하고, 체크섬을 재계산하여 이루어진다.
다음으로, IP 헤더의 목적지 주소가 패킷 분류/포워딩 마이크로블록(220) 자신인지 여부를 판단한다(S440).
단계S440에서의 판단결과, IP 헤더의 목적지 주소가 패킷 분류/포워딩 마이크로블록(220) 자신인 경우에 단계S450으로 진행한다. 한편, 단계S440에서의 판단결과, IP 헤더의 목적지 주소가 패킷 분류/포워딩 마이크로블록(220) 자신이 아닌 경우에 단계S465로 진행한다.
단계S465에서는 IP 헤더의 주소를 이용하여 IPSec 처리가 필요한지 여부를 판단하기 위하여 IP 헤더의 주소를 이용하여 Policy 테이블을 검색한다.
단계S465 다음에는 패킷에 아웃바운드 IPSec 처리가 필요한지 여부를 판단한다(S475).
단계S475에서의 판단결과, 패킷에 아웃바운드 IPSec 처리가 필요하지 않다고 판단되는 경우에는 단계S478로 진행한다. 한편, 단계S475에서의 판단결과, 패킷에 아웃바운드 IPSec 처리가 필요하다고 판단되는 경우에는 단계S485로 진행한다.
단계S485에서는 패킷 분류/포워딩 마이크로블록(220)과 아웃바운드 IPSec 처리 마이크로블록(230) 사이에 있는 링(IPV4_TO_OUTBOUND_IPSEC_SRC_RING)의 용량이 풀(full) 상태인지 여부를 판단한다.
단계S485에서의 판단결과, 링(IPV4_TO_OUTBOUND_IPSEC_SRC_RING)의 용량이 풀(full) 상태라고 판단되면 단계S485로 복귀하여 반복한다. 한편, 링(IPV4_TO_OUTBOUND_IPSEC_SRC_RING)의 용량이 풀(full) 상태가 아니라고 판단되면 단계S495로 진행한다.
단계S495에서는 패킷 분류/포워딩 마이크로블록(220)과 아웃바운드 IPSec 처리 마이크로블록(230) 사이의 링(IPV4_TO_OUTBOUND_IPSEC_SRC_RING)에 패킷에 대한 정보를 입력하게 된다. 그럼으로써, 아웃바운드 IPSec 처리 마이크로블록(230)에서는 링(IPV4_TO_OUTBOUND_IPSEC_SRC_RING)에 저장되어 있는 패킷에 대한 정보를 가져가서 IPSec 처리를 하게 된다.
한편, 단계S450에서는 IP 헤더의 프로토콜이 ESP(50)/AH(51)인지 여부를 판단한다.
단계S450에서의 판단결과, IP 헤더의 프로토콜이 ESP(50)/AH(51)인 경우에 단계S460으로 진행한다. 한편, 단계S450에서의 판단결과, IP 헤더의 프로토콜이 ESP(50)/AH(51)이 아닌 경우에 단계S478로 진행한다.
단계S450에서의 판단결과 IP 헤더의 프로토콜이 ESP(50)/AH(51)가 아닌 경우와 단계S475에서의 판단결과 패킷에 아웃바운드 IPSec 처리가 필요하지 않다고 판단되는 경우에는 단계S478로 진행하여 라우팅 테이블을 이용하여 패킷 포워딩을 수행하고, 단계S479로 진행하여 패킷에 이더넷 헤더를 추가한다.
단계S479 다음에는 패킷 분류/포워딩 마이크로블록(220)과 패킷 Queue 관리 마이크로블록(250) 사이에 있는 링(IPV4_TO_QM_SCR_RING)의 용량이 풀(full) 상태인지 여부를 판단한다(S488).
단계S488에서의 판단결과, 링(IPV4_TO_QM_SCR_RING)의 용량이 풀(full) 상태라고 판단되면 단계S488로 복귀하여 반복한다. 한편, 링(IPV4_TO_QM_SCR_RING)의 용량이 풀(full) 상태가 아니라고 판단되면 단계S498로 진행한다.
단계S498에서는 패킷 분류/포워딩 마이크로블록(220)과 패킷 Queue 관리 마이크로블록(250) 사이의 링(IPV4_TO_QM_SCR_RING)에 패킷에 대한 정보를 입력하게 된다. 그럼으로써, 패킷 Queue 관리 마이크로블록(250)에서는 링(IPV4_TO_QM_SCR_RING)에 저장되어 있는 패킷에 대한 정보를 가져가게 된다.
한편, IP 헤더의 목적지 주소가 패킷 분류/포워딩 마이클로블록(220) 자신이고 IP 헤더의 프로토콜이 ESP(50)/AH(51)인 경우에는 단계S460으로 진행하여 SA(Security Association) 테이블을 검색하게 된다.
단계S460 다음에는 패킷에 인바운드 IPSec 처리가 필요한지 여부를 판단한다(S470).
단계S470에서의 판단결과, 패킷에 인바운드 IPSec 처리가 필요하지 않다고 판단되는 경우에는 단계S492로 진행하여 패킷을 DRAM에서 폐기한다. 한편, 단계S470에서의 판단결과, 패킷에 인바운드 IPSec 처리가 필요하다고 판단되는 경우에는 단계S480으로 진행한다.
단계S480에서는 패킷 분류/포워딩 마이크로블록(220)과 인바운드 IPSec 처리 마이크로블록(210) 사이에 있는 링(IPV4_TO_INBOUND_IPSEC_SRC_RING)의 용량이 풀(full) 상태인지 여부를 판단한다.
단계S480에서의 판단결과, 링(IPV4_TO_INBOUND_IPSEC_SRC_RING)의 용량이 풀(full) 상태라고 판단되면 단계S480으로 복귀하여 반복한다. 한편, 링(IPV4_TO_INBOUND_IPSEC_SRC_RING)의 용량이 풀(full) 상태가 아니라고 판단되면 단계S490으로 진행한다.
단계S490에서는 패킷 분류/포워딩 마이크로블록(220)과 인바운드 IPSec 처리 마이크로블록(210) 사이의 링(IPV4_TO_INBOUND_IPSEC_SRC_RING)에 패킷에 대한 정보를 입력하게 된다. 그럼으로써, 인바운드 IPSec 처리 마이크로블록(210)에서는 링(IPV4_TO_INBOUND_IPSEC_SRC_RING)에 저장되어 있는 패킷에 대한 정보를 가져가서 IPSec 처리를 하게 된다.
도 5는 도 2의 IPSec 코어를 보다 구체적으로 나타낸 도면이다.
도 5를 참조하면, IPSec 코어(215)는 초기화 모듈(Initialization Module)(500)과 Policy/SA 관리 모듈(Policy/SA Management Module)(520)로 구성되어 있다.
초기화 모듈(500)은 인바운드 IPSec 처리 마이크로블록(210)과 아웃바운드 IPSec 처리 마이크로블록(230)이 사용할 메모리 할당 및 심볼 패치등의 초기화 기능을 수행한다.
Policy/SA 관리 모듈(520)은 IP 트래픽에 대한 정책 및 IPSec 프로토콜 관련 SA정보를 키 교환 알고리즘을 수행하는 IPSec 어플리케이션(290)으로부터 수신하여 IXDP2851에 존재하는 SRAM(540)에 입력 및 삭제하는 역할을 수행한다.
SRAM(540)의 Policy 테이블 및 SA 테이블에 저장되는 정보는 IPSec 처리시에 인바운드 IPSec 처리 마이크로블록(210)과 아웃바운드 IPSec 처리 마이크로블록(230)에서 이용되며, PF_KEY 소켓 인터페이스(PF_key socket interface)를 통해 IPSec 어플리케이션(290)으로부터 수신된다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD_ROM, 자기테이프, 플로피디스크 및 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드로 저장되고 실행될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명은 IXP2850 네트워크 프로세서 개발 플랫폼인 IXDP2851에서의 IPSec 엔진 구현 방법 및 장치에 관한 것이다.
본 발명에 따른 IXDP2851에서의 IPSec 엔진 구현 방법 및 장치는 IPSec 처리가 필요한 패킷과 필요없는 패킷을 따로 분리하여 처리함으로써 IPSec 처리가 필요 하지 않은 일반 패킷의 처리 속도에는 거의 영향을 주지 않고 IPSec 엔진을 구현할 수 있다.
또한, 본 발명은 인텔(Intel) IXP2850 네트워크 프로세서의 암호 엔진을 사용함으로써, IPSec 패킷 처리시에 성능 향상을 제공할 수 있다.

Claims (15)

  1. IXP2850 네트워크 프로세서 개발 플랫폼인 IXDP2851에서의 IPSec 엔진 구현 장치에 있어서,
    입력받은 패킷 정보를 이용하여 패킷의 IP 헤더의 목적지 주소가 자신인 인바운드 패킷과 자신이 아닌 아웃바운드 패킷으로 분류하고, 상기 인바운드 패킷과 아웃바운드 패킷에 대한 IPSec 처리가 필요한지 여부를 판단하며, 상기 IPSec 처리가 필요하지 않은 패킷에 대한 패킷 포워딩을 수행하는 패킷 분류/포워딩 마이크로블록;
    상기 패킷 분류/포워딩 마이크로블록에서 아웃바운드 패킷이고 IPSec 처리가 필요하다고 판단된 경우에 상기 패킷 분류/포워딩 마이크로블록으로부터 패킷 정보를 입력받아 해당하는 패킷에 대해 IPSec 처리하는 아웃바운드 IPSec 처리 마이크로블록;
    상기 패킷 분류/포워딩 마이크로블록에서 인바운드 패킷이고 IPSec 처리가 필요하다고 판단된 경우에 상기 패킷 분류/포워딩 마이크로블록으로부터 패킷 정보를 입력받아 해당하는 패킷에 대해 IPSec 처리하는 인바운드 IPSec 처리 마이크로블록; 및
    상기 아웃바운드 IPSec 처리 마이크로블록 및/또는 인바운드 IPSec 처리 마이크로블록으로부터 IPSec 처리가 수행된 패킷의 패킷 정보를 입력받아 해당하는 패킷에 대해 포워딩을 수행하는 IPSec 포워딩 마이크로블록;을 포함하는 것을 특징 으로 하는 IXDP2851에서의 IPSec 엔진 구현 장치.
  2. 제 1 항에 있어서,
    이더넷 MAC을 통하여 입력되는 패킷을 수신하고 재집합하여 상기 IXDP2851내에 존재하는 DRAM에 쓰고 상기 입력되는 패킷에 대한 패킷 정보를 상기 패킷 분류/포워딩 마이크로블록으로 보내는 패킷 수신 마이크로블록을 더 포함하는 것을 특징으로 하는 IXDP2851에서의 IPSec 엔진 구현 장치.
  3. 제 1 항에 있어서,
    상기 패킷 분류/포워딩 마이크로블록으로부터 패킷 포워딩 처리가 된 패킷 정보를 입력받고 상기 패킷 포워딩 처리가 된 패킷에 대하여 스케줄링 기능을 가지도록 하는 패킷 Queue 관리 마이크로블록; 을 더 포함하는 것을 특징으로 하는 IXDP2851에서의 IPSec 엔진 구현 장치.
  4. 제 3 항에 있어서,
    상기 패킷 Queue 관리 마이크로블록을 제어하여 상기 Queue 관리 마이크로블록에 입력되는 패킷에 대하여 스케줄링 기능을 가지도록 하는 스케줄러 마이크로블록;을 더 포함하는 것을 특징으로 하는 IXDP2851에서의 IPSec 엔진 구현 장치.
  5. 제 3 항에 있어서,
    상기 패킷 Queue 관리 마이크로블록으로부터 패킷에 대한 패킷 정보를 입력받고, 상기 패킷 정보에 따라 DRAM에 존재하는 패킷을 이더넷 인터페이스를 통해 전송하는 패킷 송신 마이크로블록;을 더 포함하는 것을 특징으로 하는 IXDP2851에서의 IPSec 엔진 구현 장치.
  6. 제 1 항에 있어서,
    상기 패킷 분류/포워딩 마이크로블록의 마이크로엔진은,
    상기 패킷 수신 마이크로블록으로부터 패킷 정보를 입력받아서, 상기 인바운드 패킷이고 IP 헤더의 프로토콜이 ESP(50) 또는 AH(51)중 어느 하나에 해당되고 IPSec 처리가 필요하다고 판단되는 경우에 상기 인바운드 패킷 정보를 상기 인바운드 IPSec 처리 마이크로블록으로 보내고,
    상기 아웃바운드 패킷이고 IPSec 처리가 필요하다고 판단되는 경우에 상기 아웃바운드 패킷 정보를 상기 아웃바운드 IPSec 처리 마이크로블록으로 보내며,
    상기 인바운드 패킷이고 상기 IP 헤더의 프로토콜이 ESP(50) 또는 AH(51)중 어느 하나에도 해당되지 않는 경우에 상기 인바운드 패킷에 대하여 패킷 포워딩을 수행하고 이더넷 헤더를 추가하며,
    상기 아웃바운드 패킷이고 IPSec 처리가 필요없다고 판단되는 경우에 대하여 상기 아웃바운드 패킷에 대하여 패킷 포워딩을 수행하고 이더넷 헤더를 추가하여 상기 패킷 Queue 관리 마이크로블록으로 패킷 정보를 보내는 것을 특징으로 하는 IXDP2851에서의 IPSec 엔진 구현 장치.
  7. 제 6 항에 있어서,
    상기 패킷 분류/포워딩 마이크로블록의 마이크로엔진은,
    상기 인바운드 패킷이고 IP 헤더의 프로토콜이 ESP(50) 또는 AH(51)중 어느 하나에 해당되며 SA 테이블 검색 결과 적용할 SA가 존재하지 않는다고 판단되는 경우에 상기 인바운드 패킷을 폐기하는 것을 특징으로 하는 IXDP2851에서의 IPSec 엔진 구현 장치.
  8. 제 1 항에 있어서,
    상기 아웃바운드 IPSec 처리 마이크로블록은 IPSec 처리에 필요한 정보를 상기 IXDP2851의 SRAM에 저장되어 있는 SA(Security Association) 테이블로부터 가져오고, 패킷에 대한 암호 알고리즘은 상기 IXP2850 네트워크 프로세서의 암호 엔진을 사용하는 것을 특징으로 하는 IXDP2851에서의 IPSec 엔진 구현 장치.
  9. 제 1 항에 있어서,
    상기 인바운드 IPSec 처리 마이크로블록은 IPSec 처리에 필요한 정보를 상기 IXDP2851의 SRAM에 저장되어 있는 SA 테이블로부터 가져오고, 패킷에 대한 암호 알고리즘은 상기 IXP2850 네트워크 프로세서의 암호 엔진을 사용하는 것을 특징으로 하는 IXDP2851에서의 IPSec 엔진 구현 장치.
  10. 제 1 항 내지 제 9 항 중 어느 한 항에 있어서,
    상기 각각의 마이크로블록은 마이크로블록들 사이에 형성되어 있는 스크래치패드 링(RING)을 통하여 상기 패킷에 대한 패킷 정보를 주고받는 것을 특징으로 하는 IXDP2851에서의 IPSec 엔진 구현 장치.
  11. IXP2850 네트워크 프로세서 개발 플랫폼인 IXDP2851에서의 IPSec 엔진 구현 방법에 있어서,
    (a) 패킷 분류/포워딩 마이크로블록은 입력받은 패킷 정보에 해당하는 패킷이 IP 헤더가 유효한 경우에, 패킷의 IP 헤더의 목적지 주소가 자신인 인바운드 패킷인지 또는 패킷의 IP 헤더의 목적지 주소가 자신이 아닌 아웃바운드 패킷인지 여부를 판단하는 IP 헤더 목적지 판단단계;
    (b) 상기 (a)단계에서 상기 인바운드 패킷이라고 판단된 경우에는 상기 인바운드 패킷에 대한 IPSec 처리가 필요한지 여부를 판단하고, IPSec 처리가 필요한 경우 상기 인바운드 패킷에 대한 정보를 인바운드 IPSec 처리 마이크로블록으로 전송하는 단계;
    (c) 상기 (a)단계에서 상기 아웃바운드 패킷이라고 판단된 경우에는 상기 아웃바운드 패킷에 대한 IPSec 처리가 필요한지 여부를 판단하고, IPSec 처리가 필요한 경우 상기 아웃바운드 패킷에 대한 정보를 아웃바운드 IPSec 처리 마이크로블록으로 전송하는 단계; 및
    (d) 상기 (c)단계에서 상기 아웃바운드 패킷에 대한 IPSec 처리가 필요하지 않다고 판단되면 상기 아웃바운드 패킷에 대하여 패킷 포워딩을 수행하고 이더넷 헤더를 추가하는 단계;를 포함하는 것을 특징으로 하는 IXDP2851에서의 IPSec 엔진 구현 방법.
  12. 제 11 항에 있어서,
    상기 (b)단계는,
    (b-1) 상기 인바운드 패킷의 IP 헤더 프로토콜이 ESP(50) 또는 AH(51)중 적어도 어느 하나인지 여부를 판단하는 단계;
    (b-2) 상기 (b-1)단계에서 상기 인바운드 패킷의 IP 헤더 프로토콜이 ESP(50) 또는 AH(51)중 적어도 어느 하나인 경우에, 상기 IXDP2851의 SRAM에 저장되어 있는 SA 테이블을 검색하는 단계;
    (b-3) 상기 (b-2)단계에서 상기 SA 테이블 검색을 통하여 상기 인바운드 패킷에 IPSec 처리가 필요한지 여부를 판단하는 단계; 및
    (b-4) 상기 (b-3)단계에서 IPSec 처리가 필요하다고 판단되는 경우에 상기 인바운드 패킷 정보를 인바운드 IPSec 처리 마이크로블록으로 보내는 단계; 및
    (b-5) 상기 (b-3)단계에서 IPSec 처리가 필요하지 않다고 판단되는 경우에 상기 인바운드 패킷을 폐기하는 단계;로 이루어지는 것을 특징으로 하는 IXDP2851에서의 IPSec 엔진 구현 방법.
  13. 제 11 항에 있어서,
    상기 패킷 분류/포워딩 마이크로블록은 상기 (b-2)단계에서 상기 인바운드 패킷의 IP 헤더 프로토콜이 ESP(50) 또는 AH(51)중 어느 하나에도 해당되지 않는 경우에, 상기 인바운드 패킷에 대하여 패킷 포워딩을 수행하고 이더넷 헤더를 추가하도록 하는 것을 특징으로 하는 IXDP2851에서의 IPSec 엔진 구현 방법.
  14. 제 11 항에 있어서,
    상기 (c)단계는,
    (c-1) 상기 아웃바운드 패킷의 IP 헤더를 통하여 상기 IXDP2851의 SRAM에 저장되어 있는 Policy 테이블을 검색하는 단계;
    (c-2) 상기 (d-1)단계에서 상기 Policy 테이블 검색을 통하여 상기 아웃바운드 패킷에 IPSec 처리가 필요한지 여부를 판단하는 단계; 및
    (c-3) 상기 (c-2)단계에서 IPSec 처리가 필요하다고 판단되는 경우에 상기 아웃바운드 패킷 정보를 아웃바운드 IPSec 처리 마이크로블록으로 전송하는 단계;로 이루어지는 것을 특징으로 하는 IXDP2851에서의 IPSec 엔진 구현 방법.
  15. 제 11 항에 있어서,
    상기 (a)단계에서 상기 IP 헤더가 유효한 경우에 대하여는 상기 패킷 분류/포워딩 마이크로블록은 패킷 수신 마이크로블록으로부터 전송받은 패킷의 이더넷 헤더를 제거한 패킷의 IP 헤더가 RFC1812의 요구를 만족하는지 여부를 통하여 판단하는 것을 특징으로 하는 IXDP2851에서의 IPSec 엔진 구현 방법.
KR1020050120993A 2005-12-09 2005-12-09 IXDP2851에서의 IPSec 엔진 구현 방법 및 장치 KR100670817B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020050120993A KR100670817B1 (ko) 2005-12-09 2005-12-09 IXDP2851에서의 IPSec 엔진 구현 방법 및 장치
US11/449,334 US7733862B2 (en) 2005-12-09 2006-06-08 Method and apparatus for implementing IPSec engine in IXDP2851

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050120993A KR100670817B1 (ko) 2005-12-09 2005-12-09 IXDP2851에서의 IPSec 엔진 구현 방법 및 장치

Publications (1)

Publication Number Publication Date
KR100670817B1 true KR100670817B1 (ko) 2007-01-19

Family

ID=38014092

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050120993A KR100670817B1 (ko) 2005-12-09 2005-12-09 IXDP2851에서의 IPSec 엔진 구현 방법 및 장치

Country Status (2)

Country Link
US (1) US7733862B2 (ko)
KR (1) KR100670817B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7606248B1 (en) * 2002-05-10 2009-10-20 Altera Corporation Method and apparatus for using multiple network processors to achieve higher performance networking applications

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050051220A (ko) * 2003-11-27 2005-06-01 한국전자통신연구원 네트워크 프로세서의 아이피 보안 프로토콜 처리 장치 및그 방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7398386B2 (en) * 2003-04-12 2008-07-08 Cavium Networks, Inc. Transparent IPSec processing inline between a framer and a network component

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050051220A (ko) * 2003-11-27 2005-06-01 한국전자통신연구원 네트워크 프로세서의 아이피 보안 프로토콜 처리 장치 및그 방법

Also Published As

Publication number Publication date
US7733862B2 (en) 2010-06-08
US20070133538A1 (en) 2007-06-14

Similar Documents

Publication Publication Date Title
US7630368B2 (en) Virtual network interface card loopback fastpath
US11221972B1 (en) Methods and systems for increasing fairness for small vs large NVMe IO commands
WO2019120233A1 (zh) 报文传输方法、运营商边缘设备及系统
US7885257B2 (en) Multiple virtual network stack instances using virtual network interface cards
US7016352B1 (en) Address modification within a switching device in a packet-switched network
US7788411B2 (en) Method and system for automatically reflecting hardware resource allocation modifications
US7738457B2 (en) Method and system for virtual routing using containers
RU2357281C2 (ru) Виртуальная сеть вещания для междоменной связи
US8913613B2 (en) Method and system for classification and management of inter-blade network traffic in a blade server
US7742474B2 (en) Virtual network interface cards with VLAN functionality
US8634415B2 (en) Method and system for routing network traffic for a blade server
US7733890B1 (en) Network interface card resource mapping to virtual network interface cards
US20140029617A1 (en) Packet processing approach to improve performance and energy efficiency for software routers
CN103401773B (zh) 一种实现板间通信的方法及网络设备
US20070171825A1 (en) System, method, and computer program product for IP flow routing
US20080002739A1 (en) Reflecting the bandwidth assigned to a virtual network interface card through its link speed
CN102792651B (zh) 在mac层应用服务路径路由选择的装置
CN107787570A (zh) 轻量传送协议
US20080077694A1 (en) Method and system for network security using multiple virtual network stack instances
US10205610B2 (en) Uplink packet routing in a system-on-a-chip base station architecture
WO2012083654A1 (zh) Ip报文分片的处理方法和分布式系统
US7607168B1 (en) Network interface decryption and classification technique
US10015719B2 (en) Downlink packet routing in a system-on-a-chip base station architecture
US8488489B2 (en) Scalable packet-switch
US8832332B2 (en) Packet processing apparatus

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee