KR101684042B1 - 네트워크 장치에서 프로세싱 요소를 위한 공유 버퍼 - Google Patents

네트워크 장치에서 프로세싱 요소를 위한 공유 버퍼 Download PDF

Info

Publication number
KR101684042B1
KR101684042B1 KR1020147027239A KR20147027239A KR101684042B1 KR 101684042 B1 KR101684042 B1 KR 101684042B1 KR 1020147027239 A KR1020147027239 A KR 1020147027239A KR 20147027239 A KR20147027239 A KR 20147027239A KR 101684042 B1 KR101684042 B1 KR 101684042B1
Authority
KR
South Korea
Prior art keywords
buffer
processing element
virtual machine
memory
encrypted
Prior art date
Application number
KR1020147027239A
Other languages
English (en)
Other versions
KR20140138800A (ko
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 인텔 코포레이션
Publication of KR20140138800A publication Critical patent/KR20140138800A/ko
Application granted granted Critical
Publication of KR101684042B1 publication Critical patent/KR101684042B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0485Networking architectures for enhanced packet encryption processing, e.g. offloading of IPsec packet processing or efficient security association look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Abstract

네트워크 장치의 입력/출력 장치와 네트워크 장치에서 동작하는 제1 프로세싱 요소와의 사이에서 키를 교환하기 위한 예가 기술된다. 제1 프로세싱 요소와 연관된 목적지를 갖는 데이터는 입력/출력 장치에 의해 수신될 수 있다. 교환된 키는 수신된 데이터를 암호화하는데 사용될 수 있다. 암호화된 데이터는 이후 네트워크 장치의 메모리에서 적어도 부분적으로 유지되는 하나 이상의 버퍼로 송신될 수 있다. 메모리는 버퍼가 네트워크 장치에서 동작하는 최소한 제2 프로세싱 요소와 공유 가능하도록 구성될 수 있다. 또한 프로세싱 요소가 버퍼 내에 암호화된 데이터가 저장되어 있다는 표시를 수신하는 예가 기술된다. 그러면 프로세싱 요소는 암호화된 데이터를 버퍼로부터 수신하고 그 데이터를 교환된 키를 이용하여 복호화할 수 있다.

Description

네트워크 장치에서 프로세싱 요소를 위한 공유 버퍼{SHARED BUFFERS FOR PROCESSING ELEMENTS ON A NETWORK DEVICE}
네트워크 인터페이스 카드(NIC)와 같은 입력/출력(I/O) 장치는 서버와 같은 호스트 컴퓨팅 플랫폼 또는 네트워크 장치의 프로세싱 요소에 결합할 수 있다. I/O 장치는 (예를 들어, 캐시에서 프로세싱 요소용도로 유지되는) 수신 큐(receive queue)를 사용하여 프로세싱 요소에게 프로세싱 요소를 향한 데이터가 I/O 장치에 의해 수신되었음을 표시할 수 있다. 프로세싱 요소를 향한 데이터는 I/O 장치에 의해 호스트 네트워크 장치의 메모리에서 유지되는 수신 버퍼에 배치될 수 있다. 호스트 네트워크 장치의 메모리는 다이나믹 랜덤 액세스 메모리(DRAM)와 같은 형태의 메모리 또는 다른 형태의 휘발성 메모리일 수 있다.
전형적으로, 프로세싱 요소가 최대 속도 처리량(line rate throughput)을 지속하기 위해 다수의 수신 버퍼가 큐에 할당된다. 예를 들어, 10 기가비트/초(Gbs)의 최대 속도로, 그래서 버퍼를 리사이클하는 1.0초의 평균 시간으로, 메모리의 125 메가바이트(MB)가 수신 버퍼를 위해 큐에 할당되어 그 큐가 최대 속도 처리량을 지속하게 할 수 있다. 또한, 프로세싱 요소가 가상 머신(VM)으로서 구현될 수 있는 예에서, VM 장치 큐(VM device queue (VMDq)) 또는 싱글-루프 I/O 가상화(single-root I/O virtualization)와 같은 기술은 단일의 프로세싱 요소에 대해 몇 개의 상이한 큐를 할당하는 결과를 초래할 수 있다.
소정 I/O 장치에 결합된 프로세싱 요소의 개수는 이러한 멀티-코어 프로세서의 배치는 물론이고 이들 멀티-코어 프로세서들 중 하나 이상의 코어 상에서 VM의 구현에 따라서도 또한 늘어났다. 몇몇 I/O 장치는 수백개의 VM 및 수천개의 큐를 지원하도록 설계될 수 있다. 그 결과, 수천개의 큐를 지원하려면 각 큐마다 최대 속도 처리량을 지속하기 위하여 수신 버퍼는 수천 기가바이트(GBs)의 메모리를 필요로 할 것이다.
도 1은 예시적인 시스템을 도시한다.
도 2는 예시적인 네트워크 장치의 블록도를 도시한다.
도 3은 암호 매니저의 예시적인 아키텍처의 블록도를 도시한다.
도 4는 복호화 매니저의 예시적인 아키텍처의 블록도를 도시한다.
도 5는 데이터의 최소한 일부분이 공유 버퍼에 저장되도록 암호화하는 예시적인 블록도를 도시한다.
도 6은 데이터의 최소한 일부분이 공유 버퍼에 저장되도록 복호화하는 예시적인 블록도를 도시한다.
도 7은 네트워크 장치의 예시적인 시스템 다이어그램을 도시한다.
본 개시에서 예상되는 바와 같이, 몇몇 I/O 장치는 수백개의 VM 및 수천개의 큐를 지원하기 위해 설계될 수 있다. 수천개의 큐를 지원하려면 각 큐마다 최대 속도 처리량을 지속하기 위해서 수신 버퍼에 대해 수백 GB의 물리적인 메모리를 할당하는 결과를 초래할 수 있다. DRAM과 같은 메모리 형태의 수백 GB를 갖는 호스트 네트워크 장치를 구축하는 것은 상당한 비가능 추가된다. 또한, DRAM과 같은 메모리 형태의 수백 GB에 필요한 전력 사용으로 인하여 이러한 형태의 네트워크 장치는 매우 비싸게 운용될 수 있다. 특히, 수많은 네트워크 장치가 랙 서버 환경(rack server environment)에서 배치될 수 있는 경우, 수백 GB의 DRAM을 갖는 네트워크 장치를 구축 및/또는 운용하는 비용은 과도하게 소요될 수 있다. 그러므로, I/O 장치가 점점 더 많은 개수의 큐를 지원할 수 있으므로 수신 버퍼를 각각의 큐에 개별적으로 할당하는 현재의 기술은 더욱 더 문제가 되고 있다.
몇몇 예에서, 하나 이상의 공유 버퍼에 저장되는 데이터를 암호화 또는 복호화하는 기술이 구현된다. 이러한 예에서, 키(예를 들면, 블록 암호 키)는 네트워크 장치의 I/O 장치와 네트워크 장치 상에서 동작하는 제1 프로세싱 요소 사이에서 교환될 수 있다. 데이터(예를 들면, 데이터 패킷)는 제1 프로세싱 요소와 연관된 목적지를 갖는 I/O 장치에서 수신될 수 있다. 데이터의 최소한 제1 부분(예를 들어, 페이로드 데이터)은 교환된 키를 이용하여 암호화될 수 있다. 이후 암호화된 제1 부분은 네트워크 장치의 메모리(예를 들어 DRAM)에서 유지되는 버퍼로 송신될 수 있다. 몇몇 예에 따르면, 메모리는 버퍼를 네트워크 장치에서 동작하는 최소한 제2 프로세싱 요소와 공유할 수 있도록 구성될 수 있다. 그런 다음 암호화된 제1 부분이 버퍼에 송신되었다는 표시가 (예를 들면, I/O 장치의 로직에 의해) 프로세싱 요소에게 제공될 수 있다. 이러한 표시에 응답하여, 제1 프로세싱 요소는 암호화된 제1 부분을 버퍼로부터 획득할 수 있으며(예를 들면, 카피할 수 있으며) 그런 다음 암호화된 제1 부분을 교환된 키를 이용하여 복호화할 수 있다.
도 1은 예시적인 시스템(100)을 도시한다. 몇몇 예에서, 도 1에 도시된 바와 같이, 시스템(100)은 프로세서(110), 메모리(120), I/O 장치(140) 및 네트워크(160)를 포함할 수 있다. 또한, 도 1에 도시된 바와 같이, 프로세서(110) 및 I/O 장치(140)는 통신 링크(135)를 통하여 통신가능하게 결합될 수 있으며 I/O 장치(140) 역시 통신 채널(150)을 통하여 네트워크(들)(160)에 통신가능하게 결합될 수 있다. 또한, 프로세서(110)는 메모리 채널(145)을 통하여 메모리(120)에 결합될 수 있다. 도 1에 도시된 것처럼, 몇몇 예에 따르면, 프로세서(110), 메모리(120) 또는 I/O 장치(140)는 네트워크 장치(130)에 포함될 수 있거나 그 네트워크 장치에 상주할 수 있다.
몇몇 예에서, 도 1에 도시된 것처럼, 프로세서(110)는 프로세싱 요소(112-1 내지 112-n) (여기서 "n"은 1보다 큰 임의의 전체 정수(whole integer)를 나타냄)를 포함할 수 있다. 또한, 도 1에 도시된 바와 같이, 메모리(120)는 버퍼(122-1 내지 122-m)(여기서 "m"은 3보다 큰 임의의 전체 정수를 타나냄)를 포함할 수 있다. 이러한 예에서, 프로세싱 요소(112-1 내지 112-n)는 대응하는 캐시(114-1 내지 114-n)를 가질 수 있다. 몇몇 예에 따르면, 임의 개수의 큐가 프로세싱 요소의 캐시에 포함될 수 있다. 또한, 아래에서 더 상세히 설명되는 바와 같이, 버퍼 코디네이터(116)는 프로세싱 요소(112-1 내지 112-n), 메모리(120) 및 I/O 장치(140)와 연동 동작하여 프로세싱 요소(112-1 내지 112-n)가 버퍼(122-1 내지 122-m) 중 하나 이상의 버퍼를 공유 가능하도록 구성될 수 있다. 예를 들면, 각각의 프로세싱 요소는 버퍼(122-1 내지 122-m) 중 공유 버퍼에 저장된 데이터에 최소한 판독-전용으로 액세스할 수 있다.
몇몇 예에 따르면, 네트워크 장치(130)는 서버 환경에서 배치된 컴퓨팅 장치의 일부일 수 있다. 이러한 예에서, I/O 장치(140)는 네트워크 장치(130)의 데이터를 수신하고, 포워드하고 또는 송신하도록 구성된 네트워크 인터페이스 카드(NIC)일 수 있다. 예를 들어, I/O 장치(140)는 통신 채널(150)을 통하여 네트워크(들)(160)로부터 데이터를 수신 또는 송신할 수 있다. 수신 또는 송신될 데이터는, 예를 들어, 적어도 일시적으로 버퍼(122-1 내지 122-m)에 저장될 수 있다.
몇몇 예에서, 도 1에 도시된 바와 같이, I/O 장치(140)는 암호 매니저(142)를 포함할 수 있다. 이러한 예에서, 암호 매니저(142)는 개별 블록 암호 키와 같은 개별 키를 프로세싱 요소(112-1 내지 112-n)와 교환하도록 구성된 또는 구성된 로직 및/또는 특징을 포함할 수 있다. I/O 장치(140)는 이후 네트워크(160)로부터 데이터를 수신할 수 있다. 데이터는 예를 들어, 프로세싱 요소(112-1)와 연관된 목적지를 가지고 있을 수 있다. 암호 매니저(142)는 또한 수신된 데이터의 최소한 일부분을 프로세싱 요소(112-1)와 교환한 블록 암호 키를 이용하여 암호화하도록 구성될 수 있다. 그런 다음 I/O 장치(140) 및/또는 암호 매니저(142)는 수신된 데이터의 암호화된 부분을 앞에서 언급한 것처럼 버퍼 코디네이터(116)에 의해 공유되도록 구성될 수 있는 하나 이상의 버퍼(122-1 내지 122-m)에 포워드할 수 있다.
몇몇 예에 따르면, 도 1에 도시된 바와 같이, 프로세싱 요소(112-1 내지 112-n)는 각기 복호화 매니저(111)를 포함한다. 이러한 예에서, 프로세싱 요소의 소정 복호화 매니저(111)는 버퍼(122-1 내지 122-m) 중의 하나 이상의 버퍼에 송신된 암호화된 데이터를 획득 또는 카피하도록 구성된 로직 및/또는 특징을 포함할 수 있다. 복호화 매니저(111)는 이후 I/O 장치(140)의 암호 매니저(142)와 교환되었을 수 있는 블록 암호 키를 이용하여 암호화된 데이터를 복호화할 수 있다. 몇몇 예에서, 복호화 매니저(111)는 암호화된 데이터가 하나 이상의 버퍼에 송신되었다는 I/O 장치(140) 및/또는 암호 매니저(142)로부터의 표시에 응답하여 암호화된 데이터를 획득할 수 있다.
몇몇 예에서, 프로세서(110)는 멀티-코어 프로세서일 수 있으며 프로세싱 요소(112-1 내지 112-n)는 멀티-코어의 코어일 수 있다. 다른 예에서, 프로세싱 요소(112-2 내지 112-n)는 하나 이상의 가상 머신을 포함할 수 있다. 이러한 다른 예에서, 가상 머신은 프로세서(110)에 포함된 단일의 프로세서 상에서 구현될 수 있다. 대안으로, 가상 머신은 프로세서(110)에 포함된 멀티-코어 프로세서의 한 코어 또는 코어들 상에서 구현될 수 있다. 또한, 이러한 다른 예에서, 버퍼 코디네이터(116)는 이러한 가상 머신의 제어 및/또는 관리를 가능하게 해주는 가상 머신 매니저(virtual machine manager (VMM)) 또는 하이퍼바이저의 일부로서 구현될 수 있다.
몇몇 예에 따르면, 도 1에 도시된 바와 같이, 통신 링크(135)는 프로세서(110) 및 I/O 장치(140)에 통신가능하게 결합 또는 상호연결될 수 있다. 이러한 예에서, 통신 링크(135)는 데이터 버스일 수 있으며 각종 통신 프로토콜이나 표준에 따라서 동작될 수 있다. 이러한 통신 프로토콜 또는 표준은 이것으로 제한되지 않겠지만, 2010년 11월에 공표된, 주변 소자 상호연결 익스프레스(Peripheral Component Interconnect Express (PCI Express)) 베이스 3.0 사양서(이하 "PCI 익스프레스 사양서"라고 함)를 포함하는 (자손과 변형을 비롯한) 하나 이상의 산업 표준에서 기술되어 있을 수 있다.
몇몇 예에서, 도 1에 도시된 바와 같이, 메모리 채널(145)은 메모리(120)를 프로세서(110) 연결시킬 수 있다. 이러한 예에서, 메모리 채널(145)은 JEDEC 솔리드 스테이트 기술 협회(Solid State Technology Association)에 의한 하나 이상의 메모리 표준이나 사양서에 따라서 동작할 수 있다. JEDEC 솔리드 스테이트 기술 협회에 의한 (자손 및 변형을 비롯한) 사양서는 이것으로 제한되지 않지만, 2007년 6월 공표된, 더블 데이터 레이트 형식-3 (DDR3) 동기식 동적 랜덤 액세스 메모리 (SDRAM)) 사양서("DDR3 사양서")를 포함할 수 있다.
몇몇 예에서, 통신 채널(150)은 하나 이상의 통신 링크를 포함할 수 있고, 이 통신 링크를 통하여 I/O 장치(140)는 네트워크(160)에 결합될 수 있다. 이러한 통신 링크는 다양한 형태의 유선, 무선 또는 광 통신 매체를 포함할 수 있다. 이러한 예에서, 통신 링크는 어느 버전에서건 하나 이상의 적용가능한 통신 또는 네트워킹 표준에 따라서 동작될 수 있다.
도 2는 예시적인 네트워크 장치(200)의 블록도를 도시한다. 도 2에 도시된 바와 같이, 네트워크 장치(200)는 프로세서(210), 메모리(220) 및 I/O 장치(240)를 포함한다. 몇몇 예에서, 도 2에 도시된 바와 같이, 네트워크 장치(200)의 이러한 구성요소들은 인터페이스(235)를 통하여 통신가능하게 결합되거나 상호연결될 수 있다. 인터페이스(235)는, 예를 들어 PCI-익스프레스와 같은 하나 이상의 통신 프로토콜에 따라서 동작할 수 있다.
몇몇 예에 따르면, 도 2에 도시된 바와 같이, 프로세서(210)는 프로세싱 요소(212-1 및 212-2) 뿐만 아니라 버퍼 코디네이터(216)를 포함한다. 메모리(220)는 도 2에서 버퍼(222-1 내지 222-11)를 포함하는 것으로 도시된다. 도 1의 I/O 장치(140)와 유사하게, 도 2의 I/O 장치(240) 역시 암호 매니저(142)를 포함하는 것으로 도시된다. 또한, 도 1의 프로세싱 요소와 유사하게, 프로세싱 요소(212-1 및 212-2)는 도 2에서 각기 복호화 매니저(111)를 포함하는 것으로 도시된다.
몇몇 예에서, 도 2에 도시된 바와 같이, 프로세싱 요소(212-1 및 212-2)는 각기 완료 큐(completion queues) 및 버퍼 식별(ID) 큐를 포함한다. 예를 들어, 프로세싱 요소(212-1)는 완료 큐(214-1A) 및 버퍼 ID 큐(214-1B)를 포함하며 프로세싱 요소(212-2)는 완료 큐(212-2A) 및 버퍼 ID 큐(214-2B)를 포함한다. 몇몇 예에 따르면, 이들 완료 큐 및 버퍼 ID 큐는 제각기 프로세싱 요소(212-1 및 212-2)의 캐시 메모리 내에서 유지될 수 있다. 아래에서 더 상세히 설명되는 바와 같이, 소정 프로세싱 요소는 각기 완료 큐 및 버퍼 ID 큐를 활용하여 어느 버퍼가 소정 프로세싱 요소와 연관된 목적지를 가진 데이터를 포함할 수 있는지를 결정할 수 있다. 또한, 아래에서 더 상세히 기술되는 바와 같이, I/O 장치(240) 및/또는 암호 매니저(142)는 완료 큐(214-1A 또는 214-1B)를 활용하여 프로세싱 요소(212-1 및 212-2)에게 수신된 데이터가 메모리(220) 내에서 또는 메모리(220)에서 유지된 버퍼 내에 배치 또는 저장되었다고 표시할 수 있다.
몇몇 예에 따르면, 도 2에 도시된 바와 같이, 버퍼 코디네이터(216)는 공유 버퍼 인덱스(shared buffer index)(211) 및 할당된 버퍼 인덱스(allocated buffer index)(213)를 포함한다. 이러한 예에서, 버퍼 코디네이터(216)는 공유 버퍼 인덱스(211)에다 프로세싱 요소(212-1 및 212-2) 사이에서 공유될 수 있는 버퍼들과 연관된 정보를 덧붙이도록 구성될 수 있다. 예를 들면, 공유 버퍼 인덱스(211)는, 도 2에 도시된 바와 같이, 버퍼(222-1 내지 222-9)가 공유되도록 구성될 수 있다고 표시하는 정보를 포함한다. 버퍼 코디네이터(216)는 또한 할당된 버퍼 인덱스(213)에다 소정 프로세싱 요소에 영구적으로 할당될 수 있는 버퍼들과 연관된 정보를 덧붙이도록 구성될 수 있다. 예를 들면, 할당 버퍼 인덱스(213)는 도 2에 도시된 바와 같이, 버퍼(222-10 및 222-11)가 각기 개별적으로 영구히 프로세싱 요소(212-1 및 212-2)에 할당될 수 있다고 표시하는 정보를 포함한다. 버퍼 인덱스(211) 및 할당 버퍼 인덱스(213)는 프로세서(210)에 위치한 또는 프로세서(210)와 함께 위치한 메모리(예를 들면, 공유 캐시 메모리(도시되지 않음) 내에서 유지될 수 있다.
공유 버퍼 인덱스(211) 또는 할당된 버퍼 인덱스(213)는 프로세싱 요소(212-1 또는 212-2)에 의해 사용되어 수신된 데이터를 포함하고 있는 버퍼의 물리적 어드레스를 결정할 수 있다. 아래에서 더 상세히 언급되는 바와 같이, 암호화된 수신 데이터는 공유 버퍼 인덱스(211)에서 열거된 공유 버퍼 내에 배치될 수 있다. 암호화되지 않고 수신된 데이터는 할당된 버퍼 인덱스(213)에서 열거된 영구 할당된 버퍼 내에 배치될 수 있다.
몇몇 예에서, 도 2에 도시된 바와 같이, 버퍼 코디네이터(216)는 또한 공유된 수신 큐(shared receive queue (SRQ)) (212-1), 할당된 수신 큐(allocated receive queue (ARQ))(212-1), SRQ(212-2) 및 ARQ(212-2)를 포함한다. SRQ/ARQ(212-1) 및 SRQ/ARQ(212-2)는 버퍼 코디네이터(116)에 의해 사용되어 어느 버퍼가 수신된 데이터를 배치 또는 저장할지를 I/O 장치(240) 및/또는 암호 매니저(142)에게 표시하는 큐 일수 있다. 이러한 예에서, SRQ/ARQ(212-1)는 프로세싱 요소(212-1)를 향한 데이터를 배치하는 버퍼 ID 및/또는 물리적 메모리 어드레스를 표시하는데 사용될 수 있으며 SRQ/ARQ(212-2)는 프로세싱 요소(212-2)를 향한 데이터를 배치하는 버퍼 ID 및/또는 물리적 메모리 어드레스를 표시하는데 사용될 수 있다. SRQ/ARQ(212-1) 및 SRQ/ARQ(212-2)는 또한 프로세서(210)에 위치한 또는 프로세서(210)과 함께 위치한 메모리 (예를 들면, 공유된 캐시 메모리) 내에서 유지될 수 있다.
몇몇 예에 따르면, 버퍼 코디네이터(216)는 공유 버퍼 인덱스(211)에서 열거된 공유 버퍼 또는 할당된 버퍼 인덱스(213)에서 영구 할당된 버퍼 중 어느 버퍼가 프로세싱 요소(212-1 또는 212-2)의 어느 한쪽을 향한 데이터를 수신하는데 이용 가능한지를 결정할 수 있다. 이러한 예에서, 회색 표시 박스는 버퍼 코디네이터(216)에 의해, 데이터를 수신하는데 이용 가능한 것으로 간주된 버퍼를 표시한다. 예를 들어, 도 2에 도시된 바와 같이, 버퍼 A(222-1) 내지 버퍼 E(222-5)는 SRQ(212-1)에서 회색 표시되어 있으며 버퍼 F(222-6) 내지 버퍼 I(222-9)는 SRQ(212-2)에서 회색 표시되어 있다. 유사하게, ARQ(212-1) 또는 ARQ(212-2)에 포함된 버퍼에 대하여 회색 표시된 박스는 버퍼 J(222-10) 및 J(222-11)가 역시 제각기 데이터를 수신하는데 이용 가능하다고 표시할 수 있다.
몇몇 예에서, 프로세싱 요소(212-1) 및 프로세싱 요소(212-2)의 복호화 매니저(111)는 각기 개별적으로 I/O 장치(240)의 암호 매니저(142)와 제1 및 제2 블록 암호 키를 교환한다. 이러한 예에서, 교환된 제1 블록 암호 키는 암호 매니저(142)에 의해 사용되어 프로세싱 요소(212-1)를 향한 데이터의 최소한 일부분을 암호화할 수 있다. 암호화된 데이터의 일부분을 복호화하기 위하여, 프로세싱 요소(212-1)의 복호화 매니저(111)는 교환된 제1 블록 키를 사용할 수 있다. 유사하게, 교환된 제2 블록 암호 키는 암호 매니저(142)에 의해 사용되어 프로세싱 요소(212-2)를 향한 데이터의 최소한 일부분을 암호화할 수 있으며 프로세싱 요소(212-2)의 복호화 매니저(111)는 교환된 제2 블록 암호 키를 이용하여 이렇게 암호화된 데이터를 복호화할 수 있다.
몇몇 예에 따르면, 프로세싱 요소(212-1)를 향한 데이터는 I/O 장치(240)에 의해 수신될 수 있다. 이 데이터는 데이터 패킷의 형태로 헤더 및 페이로드를 가질 수 있다. 암호 매니저(142)는 제1 블록 암호 키를 이용하여 전체 데이터 패킷을 암호화하는 로직 및/또는 특징을 포함할 수 있다. 이러한 예에서, 암호 매니저(142)는 I/O 장치(240)가 암호화된 데이터 패킷을, 암호화된 데이터를 수신하는 것으로 이용 가능한 것으로서 SRQ(212-1)에서 열거된 하나 이상의 버퍼에 포워드하도록 할 수 있다. 암호화된 데이터 패킷은 예를 들어, 그 버퍼와 연관된 메모리(220)의 물리적 메모리 어드레스에 있는 최소한 임시 저장을 위한 버퍼(222-1)로 송신될 수 있다.
몇몇 예에서, 암호 매니저(142)는 프로세싱 요소(212-1)와 연관된 목적지를 향한 또는 그 목적지를 갖는 데이터가 버퍼(222-1)에 배치 또는 저장되었다고 프로세싱 요소(212-1)에게 표시하는 로직 및/또는 특징을 포함할 수 있다. 예를 들어, 암호 매니저(142)는 포인터(pointer)를 완료 큐(214-1A)에 놓음으로써 "A"라는 식별자를 가진 버퍼가 프로세싱 요소(212-1)와 연관된 목적지를 갖는 데이터를 포함하고 있다고 표시할 수 있다. 이러한 예에 따르면, 복호화 매니저(111)는 식별자 "A"를 가리키는 포인터를 가진 완료 큐(214-1A)를 버퍼 ID 큐(214-1B)에 포함된 엔트리들과 비교하는 로직 및/또는 특징을 포함할 수 있다. 예를 들어, 이러한 비교를 통해 복호화 매니저(111)는 식별자 "A"가 공유 버퍼 또는 영구 할당된 버퍼 중 어느 버퍼에 맵핑되는지를 결정할 수 있다. 공유 버퍼라면, 복호화 매니저(111)는 데이터가 암호화되었다고 가정할 수 있다. 할당된 버퍼라면, 복호화 매니저(111)는 데이터가 암호화되지 않았다고 가정할 수 있다. 도 2에 도시된 바와 같이, "A"는 ID-1에 맵핑될 수 있고 ID-1는 공유된 버퍼 인덱스(211)에 포함되어 있고 또한 버퍼(222-1)에 맵핑되어 있다. A(ID-1)은 공유된 버퍼 인덱스(211)에서 열거된 버퍼에 맵핑하기 때문에, 복호화 매니저(111)는 버퍼(222-1)에 저장된 데이터가 암호화되어 있다(예를 들면, 완료 상태로 표시되어 있다)고 명시적으로 알 수 있다.
몇몇 예에서, 수신된 데이터 패킷의 페이로드만이 제1 블록 암호 키를 이용하여 암호화될 수 있고 그런 다음 SRQ(212-1)에서 표시된 공유 버퍼들 중 하나 이상의 버퍼로 송신될 수 있다. 이러한 예에서, 헤더는 페이로드로부터 분리되고 ARQ(212-1)에서 표시된 버퍼로 전송될 수 있다. 도 2에 도시된 바와 같이, 그 버퍼는 버퍼(222-10)일 수 있다. 버퍼(222-10)가 프로세싱 요소(212-1)에 영구적으로 할당되어 있기 때문에, 다른 프로세싱 요소(212-2)는 이 버퍼에 액세스하지 못하며 그래서 이 버퍼에 저장된 데이터는 암호화될 필요가 없다. 일단 버퍼(222-10)로 전달되면, 암호 매니저(142)는 포인터를 완료 큐(214-1)에 놓음으로써 "J"라는 식별자를 가진 버퍼가 프로세싱 요소(212-1)를 향한 데이터임을 표시할 수 있다. 그러면 복호화 매니저(111)는 식별자 "J"를 가리키는 포인터를 가진 완료 큐(214-1A)를 버퍼 ID 큐(214-1B)에 포함된 엔트리들과 비교할 수 있다. 이러한 비교를 통해 복호화 매니저(111)는 예를 들어, 식별자 "J"가 할당된 버퍼 인덱스(213)에서 영구 할당된 버퍼(ID-10 (버퍼(222-10))에 맵핑된다고 결정할 수 있다. "J"가 할당된 버퍼에 맵핑하기 때문에, 복호화 매니저(111)는 데이터가 암호화되어 있지 않다고 가정할 수 있다.
몇몇 예에 따르면, 수신된 데이터 패킷의 헤더 및 페이로드는 제1 블록 암호 키를 이용하여 별개로 암호화될 수 있다. 이러한 예에서, 페이로드는 수신된 데이터 패킷 중 제1 부분일 수 있으며 헤더는 수신된 데이터 패킷 중 제2 부분일 수 있다. 암호 매니저(142)는 이후 암호화된 제1 부분을 버퍼(222-1)로 포워드하고 암호화된 제2 부분을 버퍼(222-2)로 포워드할 수 있다. 그런 다음 프로세싱 요소(212-1)에게 프로세싱 요소(212-1)와 연관된 목적지를 가진 데이터가 버퍼(222-1 및 222-2)에 저장되었다고 표시하는 표시가 제공될 수 있다. 그러면 프로세싱 요소(212-1)의 복호화 매니저(111)는 어느 버퍼가 암호화된 데이터를 포함하고 있는지를 결정할 수 있다.
몇몇 예에서, 프로세싱 요소(212-1)와 연관된 목적지를 가진 다중 데이터 패킷과 연관된 다중 헤더는 이들 각각의 페이로드로부터 분리될 수 있다. 이러한 예에서, 헤더들은 그룹화되고 제1 블록 암호 키를 이용하여 함께 암호화된 다음 한 그룹으로서 단일 버퍼로 송신될 수 있다. 복호화를 위해 헤더들을 그룹화하는 것은 개별 버퍼에 저장된 헤더들을 별개로 복호화하는 것과 비교하여 프로세싱 요소(212-1)의 작업부하의 일부분을 경감시켜줄 수 있다.
몇몇 예에 따르면, 복호화 매니저(111)는 버퍼(222-1)에 저장된 암호화된 데이터를 획득 또는 카피하도록 구성된 로직 및/또는 특징을 포함할 수 있다. 이러한 예에서, 복호화 매니저(111)는 또한 전술한 것처럼 암호 매니저(142)와 교환된 제1 블록 암호 키를 이용하여 암호화된 데이터를 복호화하는 로직 및/또는 특징을 포함할 수 있다.
몇몇 예에서, 프로세싱 요소(212-1)와 연동하여 작업하는 애플리케이션(도시되지 않음)은 I/O 장치(240)에 의해 수신된 데이터의 목적지일 수 있다. 이러한 예에서, 복호화 매니저(111)는 암호화된 데이터를 카피하고 암호화된 데이터를 복호화한 다음 복호화된 데이터를 그 애플리케이션에게 액세스 가능한 네트워크 장치(200)의 메모리의 일부분(예를 들면, 메모리(220)에 포함됨)에 포워드하는 것을 포함하는 카피 및 복호화 동작을 수행함으로써 버퍼(222-1)에 저장된 암호화된 데이터를 획득할 수 있다. 대안의 예에서, 복호화된 데이터는 네트워크 장치(200) 상의 안전 구역(secure enclave)으로 송신될 수 있다. 안전 구역은 다른 구성요소(예를 들어, 애플리케이션)이 복호화된 데이터에 판독 전용으로 액세스할 수 있도록 다른 요소로의 액세스를 제한하는 보안 요소를 포함할 수 있다.
몇몇 예에 따르면, 버퍼 코디네이터(216)는 암호화된 데이터를 저장하기 위해 이전에 사용된 공유 버퍼(예를 들어, 버퍼(222-1))가 프로세싱 요소(212-1) 또는 프로세싱 요소(212-2)와 연관된 목적지를 가진 나중에 수신된 데이터 또는 추가적으로 수신된 데이터를 저장하는데 이용 가능하다고 암호 매니저(142)에게 표시 또는 통지할 수 있다. 이러한 예에서, 이러한 표시는 버퍼에 저장된 암호화된 데이터를 획득 및/또는 복호화하는 프로세싱 요소(212-1)에 대한 응답일 수 있다. 버퍼 코디네이터(216)는 프로세싱 요소(212-1)의 SRQ(212-1)을 업데이트함으로써 및/또는 프로세싱 요소(212-2)의 SRQ(212-2)를 업데이트함으로써 버퍼의 이용 가능성(buffer's availability)을 표시할 수 있다.
몇몇 예에서, 프로세싱 요소(212-1) 및 프로세싱 요소(212-2)는 프로세서(210)에 의해 지원되는 가상 머신으로서 구현될 수 있다. 이러한 예에서, 버퍼 코디네이터(216)의 기능은 이러한 가상 머신의 제어 및/또는 관리를 가능하게 해주는 VMM 또는 하이퍼바이저에 포함될 수 있다.
도 3은 암호 매니저(142)의 예시적인 아키텍처의 블록도를 도시한다. 몇몇 예에서, 암호 매니저(142)는 네트워크 장치의 I/O 장치에서 수신된 데이터의 최소한 일부분을 암호화하고 암호화된 데이터를 공유 버퍼로 포워드하기 위해 구성된 또는 구성된 특징 및/또는 로직을 포함한다. 공유 버퍼는, 예를 들어, 네트워크 장치 상에서 동작하는 프로세싱 요소에 액세스할 수 있다. 몇몇 예에 따르면, 도 3에 도시된 바와 같이, 암호 매니저(142)는 암호 로직(310), 제어 로직(320), 메모리(330) 및 입력/출력(I/O) 인터페이스(340)를 포함한다. 도 3에 도시된 바와 같이, 암호 로직(310)은 제어 로직(320), 메모리(330) 및 I/O 인터페이스(340)에 결합될 수 있다. 암호 로직(310)은 교환 특징부(312), 암호 데이터 특징부(314), 버퍼 특징부(316) 또는 표시 특징부(318) 중 하나 이상, 또는 이들의 모든 합당한 조합을 포함할 수 있다
몇몇 예에서, 도 3에 도시된 구성요소들은 본 개시에 기술된 것처럼 암호 매니저(142)를 지원하거나 작동가능 하도록 구성된다. 주어진 암호 매니저(142)는 도 3에 묘사된 구성요소 중 일부, 모두 또는 그 구성요소보다 많은 구성요소를 포함할 수 있다. 예를 들어, 암호 로직(310) 및 제어 로직(320)는 암호 매니저(142)의 특징을 구현하는 각종 로직 장치(들)이나 실행 가능한 기능을 개별적으로 또는 집합적으로 표현할 수 있다. 예시적인 로직 장치는 마이크로프로세서, 마이크로컨트롤러, 프로세서 회로, 필드 프로그래머블 게이트 어레이(FPGA), 주문형 반도체(ASIC), 격리된 스레드 또는 멀티-코어/멀티-스레드 마이크로프로세서의 코어, 암호화 블록, 오프로드 프로세서 또는 이들의 조합 중 하나 이상을 포함할 수 있다.
몇몇 예에서, 도 3에 도시된 바와 같이, 암호 로직(310)은 교환 특징부(312), 암호 데이터 특징부(314), 버퍼 특징부(316) 또는 표시 특징부(318)를 포함한다. 암호 로직(310)은 이러한 특징부들 중 하나 이상을 이용하여 동작을 수행하도록 구성된다. 예를 들어, 교환 특징부(312)는 블록 암호 키와 같은 키를 네트워크 장치 상에서 동작하는 프로세싱 요소와 교환한다. 암호 데이터 특징부(314)는 데이터의 최소한 일부를 암호화할 수 있다. 이 데이터는 주어진 프로세싱 요소와 연관된 목적지를 가질 수 있으며 암호 데이터 특징부(314)는 주어진 프로세싱 요소와 교환된 키를 이용하여 데이터의 최소한 일부를 암호화할 수 있다. 버퍼 특징부(316)는 수신된 데이터가 공유 버퍼 또는 할당된 버퍼 중 어느 한곳으로 송신되도록 해줄 수 있다. 그러면 표시 특징부(318)는 어느 버퍼(들)가 수신한 데이터를 포함하고 있는지를 주어진 프로세싱 요소에게 표시할 수 있다.
몇몇 예에서, 제어 로직(320)은 암호 매니저(142)의 전체 동작을 제어하도록 구성될 수 있다. 앞에서 언급한 바와 같이, 제어 로직(320)은 각종 로직 장치(들) 또는 실행 가능한 내용 중 어느 것을 표현할 수 있다. 몇몇 예에서, 제어 로직(320)은 실행 가능한 내용 또는 명령과 공동으로 동작하여 암호 매니저(142)의 제어를 구현할 수 있다. 몇몇 대안의 예에서, 제어 로직(320)의 특징 및 기능은 암호 로직(310) 내부에서 구현될 수 있다.
몇몇 예에 따르면, 메모리(330)는 제어 로직(320) 및/또는 암호 로직(310)에 의해 사용하는 실행가능 기능 또는 명령을 저장하도록 구성될 수 있다. 실행 가능 내용 또는 명령은 암호 매니저(142)의 특징, 요소 또는 로직을 실시하거나 활성화하는데 사용될 수 있다. 아래에서 더 상세하게 설명되는 바와 같이, 메모리(330)는 또한 도 1 및 도 2에 관해 앞에서 언급한 것처럼 프로세싱 요소와의 키 교환과 연관된 정보를 적어도 일시적으로 유지하도록 구성될 수 있다. 메모리(330)는 또한 교환된 키를 가지고 암호화시킨 암호화된 데이터를 어느 버퍼(들)에 배치할지 그리고 또한 암호화되지 않은 데이터(예를 들면, 헤더)를 어느 버퍼(들)에 배치할지를 결정하기 위해 수집된 정보를 적어도 일시적으로 유지하도록 구성될 수 있다.
메모리(330)는 이것으로 제한되지 않지만, 플래시 메모리, 프로그래머블 변수 또는 상태, 판독-전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 또는 다른 정적 또는 동적 저장 매체 중 한 가지 이상의 형태를 포함하는 각종 비휘발성 메모리 매체를 포함할 수 있다.
몇몇 예에서, I/O 인터페이스(340)는 암호 매니저(142)와 I/O 장치(140)의 요소 또는 네트워크 장치의 요소와의 사이에서 로컬 통신 매체 또는 링크를 통하여 인터페이스를 제공할 수 있다. I/O 인터페이스(340)는 각종 통신 프로토콜이나 표준에 따라서 동작하여 로컬 통신 매체 또는 링크를 통해 통신하는 인터페이스를 포함할 수 있다. 이러한 통신 프로토콜이나 표준은 집적회로간(Inter-Integrated Circuit (I2C)) 사양, 시스템 관리 버스(System Management Bus (SMBus)) 사양, 주변 소자 상호접속 익스프레스(Peripheral Component Interconnect Express (PCI Express)) 사용, 범용 직렬 버스(Universal Serial Bus (USB)) 사양, 또는 직렬 고급 기술 연결(Serial Advanced Technology Attachment (SATA)) 사양과 연관된 표준과 같은 (자손 및 변형을 비롯한) 하나 이상의 산업 표준에 기술되어 있을 수 있다. 본 개시는 개시가 전술한 표준 및 연관된 프로토콜만으로 제한되지 않는다.
도 4는 복호화 매니저(111)의 예시적인 아키텍처의 블록도를 도시한다. 몇몇 예에서, 복호화 매니저(111)는 네트워크 장치의 메모리 내에서 유지된 공유 버퍼 또는 할당된 버퍼에 저장된 데이터를 획득하고 그 데이터의 암호화된 부분을 교환된 키를 이용하여 복호화하기 위해 구성된 또는 구성된 특징 및/또는 로직을 포함한다. 몇몇 예에 따르면, 도 4에 도시된 바와 같이, 복호화 매니저(111)는 암호 로직(410), 제어 로직(420), 메모리(430) 및 입력/출력(I/O) 인터페이스(440)를 포함한다. 도 4에 도시된 바와 같이, 암호 로직(410)는 제어 로직(420), 메모리(430) 및 I/O 인터페이스(440)에 결합될 수 있다. 암호 로직(410)은 교환 특징부(412), 수신 특징부(414), 획득 특징부(416) 또는 데이터 복호화 특징부(418) 중 하나 이상, 또는 이들의 모든 합당한 조합을 포함할 수 있다.
몇몇 예에서, 도 4에 도시된 구성요소들은 본 개시에 기술된 것처럼 복호화 매니저(111)를 지원하거나 작동 가능하도록 구성된다. 주어진 복호화 매니저(111)는 도 4에 묘사된 구성요소 중 일부, 모두 또는 그 구성요소보다 많은 구성요소를 포함할 수 있다. 예를 들어, 복호화 로직(410) 및 제어 로직(420)은 복호화 매니저(111)의 특징을 구현하는 각종 로직 장치(들)이나 실행 가능한 기능을 개별적으로 또는 집합적으로 표현할 수 있다. 예시적인 로직 장치는 마이크로프로세서, 마이크로컨트롤러, 프로세서 회로, 필드 프로그래머블 게이트 어레이(FPGA), 주문형 반도체(ASIC), 격리된 스레드 또는 멀티-코어/멀티-스레드 마이크로프로세서의 코어, 암호화 블록, 오프로드 프로세서 또는 이들의 조합 중 하나 이상을 포함할 수 있다.
몇몇 예에서, 도 4에 도시된 바와 같이, 복호화 로직(410)은 교환 특징부(412), 수신 특징부(414), 획득 특징부(416) 또는 데이터 복호화 특징부(418)를 포함한다. 암호 로직(410)은 이러한 특징부들 중 하나 이상을 이용하여 동작을 수행하도록 구성되며, 반면에 복호화 매니저(111)는 네트워크 장치의 프로세싱 요소에 배치되거나 또는 프로세싱 요소와 함께 배치된다. 예를 들어, 교환 특징부(412)는 네트워크 장치의 I/O 장치(예를 들면, 암호 매니저(142))에서 블록 암호 키와 같은 키를 교환한다. 수신 특징부(414)는 프로세싱 요소와 연관된 목적지를 가진 수신 데이터가 네트워크 장치의 메모리에서 유지되는 버퍼에 저장되었을 때의 표시를 암호 매니저 또는 I/O 장치로부터 수신할 수 있다. 획득 특징부(416)는 수신한 데이터를 획득할 수 있으며, 만일 그 데이터가 암호화되었다면, 데이터 복호화 특징부(418)는 그 데이터를 교환된 키를 이용하여 복호화할 수 있다.
몇몇 예에서, 제어 로직(420)은 복호화 매니저(111)의 전체 동작을 제어하도록 구성될 수 있다. 앞에서 언급한 바와 같이, 제어 로직(420)은 각종 로직 장치(들) 또는 실행 가능한 내용 중 어느 것을 표현할 수 있다. 몇몇 예에서, 제어 로직(420)은 실행 가능한 내용 또는 명령과 함께 동작하여 복호화 매니저(111)의 제어를 실시할 수 있다. 몇몇 대안의 예에서, 제어 로직(420)의 특징 및 기능은 암호 로직(410) 내부에서 구현될 수 있다.
몇몇 예에 따르면, 메모리(430)는 제어 로직(420) 및/또는 복호화 로직(410)에 의해 사용하는 실행가능 내용 또는 명령을 저장하도록 구성될 수 있다. 실행 가능 내용 또는 명령은 복호화 매니저(111)의 특징, 요소 또는 로직을 실시하거나 활성화하는데 사용될 수 있다. 아래에서 더 상세하게 설명되는 바와 같이, 메모리(430)는 또한 도 1 및 도 2에 관핸 앞에서 언급한 것처럼 I/O 장치 및/또는 암호 매니저와의 키 교환과 연관된 정보를 적어도 일시적으로 유지하도록 구성될 수 있다. 메모리(430)는 또한 교환된 키를 이용하여 암호화시킨 암호화된 데이터를 어느 버퍼(들)가 획득할지 그리고 또한 암호화되지 않은 데이터(예를 들면, 헤더)를 어느 버퍼(들)가 획득할지를 결정하기 위해 수집된 정보를 적어도 일시적으로 유지하도록 구성될 수 있다.
메모리(430)는 이것으로 제한되지 않지만, 플래시 메모리, 프로그래머블 변수 또는 상태, ROM, RAM, 또는 다른 정적 또는 동적 저장 매체 중 한 가지 이상의 형태를 포함하는 각종 비휘발성 메모리 매체를 포함할 수 있다.
몇몇 예에서, I/O 인터페이스(440)는 복호화 매니저(111)와 네트워크 장치의 프로세싱 요소, 프로세서 또는 기타 장치에서 배치된 또는 그와 함께 배치된 요소와의 사이에서 로컬 통신 매체 또는 링크를 통해 인터페이스를 제공할 수 있다. I/O 인터페이스(440)는 각종 통신 프로토콜이나 표준에 따라서 동작하여 로컬 통신 매체 또는 링크를 통해 통신하는 인터페이스를 포함할 수 있다. 이러한 통신 프로토콜이나 표준은 집적회로간(Inter-Integrated Circuit (I2C)) 사양, 시스템 관리 버스(System Management Bus (SMBus)) 사양, 주변 소자 상호접속 익스프레스(Peripheral Component Interconnect Express (PCI Express)) 사용, 하이퍼텍스트(HyperTransport (HT)) 사양, 인텔의 퀵패스 상호연결(Intel® QuickPath Interconnect (QPI)) 사양과 연관된 표준과 같은 (자손 및 변형을 비롯한) 하나 이상의 산업 표준에 기술되어 있을 수 있다. 본 개시는 개시가 전술한 표준 및 연관된 프로토콜만으로 제한되지 않는다.
도 5는 데이터의 최소한 일부가 공유 버퍼에 저장되도록 암호화하는 예시적인 흐름도를 도시한다. 몇몇 예에서, 도 1에 도시된 바와 같은 시스템(100)의 구성요소 또는 도 2에 도시된 바와 같은 네트워크 장치(200)의 구성요소는 도 5에 도시된 플로우차트와 관련된 예시적인 동작을 설명하는데 사용될 수 있다. 도 1 내지 도 3에 도시된 바와 같은 암호 매니저(142) 또한 예시적인 동작을 설명하는데 사용될 수 있다. 그러나, 기술되는 예시적인 동작은 도 1 내지 도 3에 관핸 앞에서 기술한 것처럼 시스템(100) 또는 네트워크 장치(200) 또는 암호 매니저(142)에서의 구현으로 제한되지 않는다.
시작에서 블록(404)(키 교환)으로 이동하면, 암호 매니저(142)는 네트워크 장치(200)와 같은 네트워크 장치에서 동작하는 프로세싱 요소와 키를 (예를 들면, 교환 특징부(312)를 이용하여) 별도로 교환하도록 구성된 로직 및/또는 특징을 포함할 수 있다. 몇몇 예에서, 별도로 교환된 키는 블록 암호 키를 포함할 수 있다. 비록 본 개시가 아래와 같은 표준 및/또는 공개에 기초한 블록 암호 키만으로 제한되지 않지만, 블록 암호 키는 2004년 공표된 3중 데이터 암호화 표준(Triple Data Encryption Standard (3DES 또는 Triple DES), 국립 표준 기술 연구소 특별 출판물800-67(National Institute of Standards and Technology Special Publication 800-67), 또는 2001년 공표된 고급 암호화 표준(Advanced Encryption Standard (AES)), 연방 정보 처리 표준 공개 197(Federal Information Processing Standards Publication 197)과 같은 (자손 및 변형을 포함하는) 암호화 표준에 기초한 것일 수 있다. 스트림 암호 키와 같은 다른 형태의 암호키 또한 본 개시에서 고려된다.
블록(505)에서 블록(510)(데이터 수신)으로 진행하면, 프로세싱 요소(212-1)와 같은 주어진 프로세싱 요소와 연관된 목적지를 가진 데이터가 I/O 장치(240)와 같은 네트워크 장치의 I/O 장치에 의해 수신될 수 있다. 몇몇 예에서, 수신된 데이터는 헤더와 페이로드를 가진 데이터 패킷의 형태로 구성되어 있을 수 있다.
블록(510)에서 판단 블록(515)(모든 데이터를 암호화?)으로 진행하면, 암호 매니저(142)는 (예를 들면 암호 데이터 특징부(314)를 통하여) 수신된 데이터 패킷의 전체 또는 데이터 패킷의 일부를 암호화할지를 결정하도록 구성된 로직 및/또는 특징을 포함할 수 있다. 페이로드 부분은 수신된 데이터 패킷의 제1 부분이고 헤더는 제2 부분일 수 있다. 몇몇 예에서, 제1 부분만이 암호화될 수 있다. 제1 부분만 암호화되는 이러한 예에서, 프로세스는 블록(520)으로 이동한다. 다른 예에서, 헤더와 페이로드 모두가 암호화될 수 있다. 두 부분이 암호화되는 이러한 다른 예에서, 프로세스는 블록(535)으로 이동한다.
판단 블록(515)에서 블록(520)(제1 부분을 암호화)으로 이동하면, 암호 매니저(142)는 (예를 들면, 암호 데이터 특징부(314)를 통하여) 수신 데이터 패킷의 제1 부분을 암호화하도록 구성된 로직 및/또는 특징을 포함할 수 있다. 몇몇 예에서, 암호 매니저(142)는 프로세싱 요소(212-1)와 교환한 블록 암호 키를 이용하여 제1 부분을 암호화할 수 있다.
블록(520)에서 블록(525)(제1 부분을 공유 버퍼(들)로 포워드)으로 진행하면, 암호 매니저(142)는 적어도 (예를 들면 버퍼 특징부(316)를 통하여) 암호화된 제1 부분이 메모리(220)에서 유지되는 하나 이상의 공유 버퍼로 송신되도록 구성된 로직 및/또는 특징을 포함할 수 있다. 몇몇 예에서, 암호 매니저(142)는 버퍼 코디네이터(216)에 의해 유지되는 SRQ(212-1)를 활용하여 어느 버퍼(들)가 암호화된 제1 부분을 송신할지를 식별하도록 할 수 있다. 예를 들면, 암호 매니저(142)는 일단 송신된 암호화된 제1 부분을 적어도 임시적으로 저장하는 공유 버퍼로서 버퍼(222-1)를 식별할 수 있다.
블록(525)에서 블록(530)(제1 부분을 영구 할당된 버퍼로 포워드)으로 진행하면, 암호 매니저(142)는 (예를 들면, 버퍼 특징부(316)를 통하여) 적어도 제2 부분이 프로세싱 요소(212-1)에 영구 할당된 버퍼로 포워드되도록 구성된 로직 및/또는 특징을 포함할 수 있다. 영구 할당된 버퍼는, 예를 들면, 메모리(220)에서 유지될 수 있다. 몇몇 예에서, 암호 매니저(142)는 버퍼 코디네이터(216)에 의해 유지되는 ARQ(212-1)를 활용하여 어느 버퍼(들)가 제2 부분을 송신할지를 식별하도록 할 수 있다. 예를 들어, 암호 매니저(142)는 일단 송신된 제2 부분을 최소한 임시 저장하는 영구 할당된 버퍼로서 버퍼(222-10)를 식별할 수 있다.
판단 블록(515)에서 블록(535)(모든 데이터를 암호화)으로 이동하면, 암호 매니저(142)는 (예를 들면, 암호 데이터 특징부(314)를 통하여) 수신 데이터 패킷의 전체를 암호화하도록 구성된 로직 및/또는 특징을 포함할 수 있다. 몇몇 예에서, 암호 매니저(142)는 프로세싱 요소(212-1)와 교환한 블록 암호 키를 이용하여 전체 데이터 패킷을 암호화할 수 있다.
블록(535)에서 블록(540)(암호화된 데이터를 공유 버퍼로 포워드)으로 진행하면, 암호 매니저(142)는 암호화된 데이터 패킷을 메모리에서 유지되는 하나 이상의 공유 버퍼로 송신되게 할 수 있다. 블록(525)에 관해 위에서 언급한 예와 유사하게, 암호 매니저(142)는 SRQ(212-1)를 활용하여 어느 버퍼(들)가 암호화된 데이터 패킷을 송신할지를 식별할 수 있다.
블록(530) 또는 블록(540)에서 블록(545)(프로세싱 요소에게 버퍼(들)를 표시)으로 진행하면, 암호 매니저(142)는 (예를 들면, 표시 특징부(318)를 통하여) 어느 버퍼(들)가 프로세싱 요소(212-1)의 데이터를 포함하고 있는지를 표시하도록 구성된 로직 및/또는 특징을 포함할 수 있다. 몇몇 예에서, 암호 매니저(142)는 프로세싱 요소(212-1)에 있는 완료 큐(214-1A)를 활용하여 어느 버퍼가 (예를 들어, 공유 버퍼(들)에 저장된) 암호화된 데이터 또는 (예를 들어, 영구 할당된 버퍼에 저장된) 암호화되지 않은 데이터를 갖고 있는지를 표시할 수 있다.
블록(545)에서 판단 블록(550)(데이터가 더 있는가?)으로 진행하면, 암호 매니저(142)는 (예를 들면, 데이터 암호화 특징부(214)를 통하여) 프로세싱 요소(212-1)와 연관된 목적지를 가진 더 많은 데이터(예를 들면, 추가적인 데이터 패킷)가 암호화되어야 하는지를 판단하는 로직 및/또는 특징을 포함할 수 있다. 만일 더 많은 데이터가 암호화되어야 하면, 프로세스는 판단 블록(515)으로 이동한다. 그렇지 않으면, 프로세스는 종료된다.
도 6은 공유 버퍼에 저장된 데이터의 최소한 일부를 복호화하는 예시적인 흐름도를 도시한다. 몇몇 예에서, 도 1에 도시된 바와 같은 시스템(100)의 구성요소 또는 도 2에 도시된 바와 같은 네트워크 장치(200)의 구성요소는 도 6에 도시된 플로우차트와 관련된 예시적인 동작을 설명하는데 사용될 수 있다. 도 1, 도 2 또는 도 4에 도시된 바와 같은 복호화 매니저(111) 또한 예시적인 동작을 설명하는데 사용될 수 있다. 그러나, 기술되는 예시적인 동작은 도 1, 도 2 또는 도 4에 관해 앞에서 기술한 것처럼 시스템(100) 또는 네트워크 장치(200) 또는 복호화 매니저(111)에서의 구현으로 제한되지 않는다.
시작에서 블록(610)(키 교환)으로 이동하면, 프로세싱 요소(예를 들면, 프로세싱 요소(212-1))의 복호화 매니저(111)는 I/O 장치(240)의 암호 매니저(142)의 요소 또는 특징과 키를 (예를 들면, 키 특징부(412)를 통하여) 교환하도록 구성된 로직 및/또는 특징을 포함할 수 있다. 몇몇 예에서, 키는 3DES 또는 AES 중 어느 것에 기초한 블록 암호 키일 수 있다.
블록(610)에서 블록(620)(버퍼(들)의 표시를 수신)으로 진행하면, 복호화 매니저(111)는 (예를 들면, 수신 특징부(414)를 통하여) 수신 데이터가 메모리(220) 내에서 또는 메모리(220)에서 유지되는 버퍼에 배치된 또는 저장되어 있다는 표시를 수신하도록 구성된 로직 및/또는 특징을 포함할 수 있다. 몇몇 예에서, 암호 매니저(142)는 포인터를 완료 큐(214-1A)에 놓음으로써 어느 버퍼(들)가 수신 데이터를 포함하고 있는지를 표시할 수 있다.
블록(620)에서 판단 블록(630)(공유 버퍼?)으로 진행하면, 복호화 매니저(111)는 (예를 들면, 획득 특징부(416)를 통하여) 수신 데이터가 공유 버퍼 또는 영구 할당된 버퍼에 저장되었는지를 판단하도록 구성된 로직 및/또는 특징을 포함할 수 있다. 몇몇 예에서, 복호화 매니저(111)는 완료 큐(212-1A)에 놓인 포인터를 버퍼 ID 큐(214-1B)와 비교하여 포인터가 공유 버퍼 또는 영구 할당된 버퍼에 맵핑된 버퍼 식별자를 가리키는지를 결정할 수 있다. 일 예에 따르면, 완료 큐(214-1A) 내 "A"를 가리키는 포인터는 버퍼 ID 큐(214-1B) 내 ID-1에 맵핑한다. 그러면 복호화 매니저(111)는 ID-1가 버퍼 코디네이터(216)에 의해 유지되는 공유 버퍼 인덱스(211) 내 버퍼(222-1)에 맵핑한다고 결정할 수 있다. 이 예에서, 프로세스는 블록(640)으로 이동한다. 다른 예에 따르면, 완료 큐(214-1A) 내 "J"를 가리키는 포인터는 버퍼 ID 큐(214-1B) 내 ID-10에 맵핑한다. 그러면 복호화 매니저(111)는 ID-10이 할당된 버퍼 인덱스(213) 내 버퍼(222-10)에 맵핑한다고 결정할 수 있다. 이러한 다른 예에서, 프로세스는 블록(670)으로 이동한다.
판단 블록(530)에서 블록(640)(암호화된 데이터를 획득)으로 진행하면, 복호화 매니저(111)는 (예를 들면 획득 특징부(416)를 통하여) 공유 버퍼(222-1)에 저장된 암호화된 데이터를 획득하도록 구성된 로직 및/또는 특징을 포함할 수 있다. 몇몇 예에서, 암호화된 데이터는 버퍼(222-1)에 저장된 암호화된 데이터를 카피함으로써 획득될 수 있다.
블록(640)에서 블록(650)(데이터를 복호화)으로 진행하면, 복호화 매니저(111)는 버퍼(222-1)에 저장된 암호화된 데이터를 복호화하도록 구성된 로직 및/또는 특징을 포함할 수 있다. 몇몇 예에서, 암호화된 데이터는 전술한 것처럼 암호 매니저(142)와 교환한 블록 암호 키를 이용하여 복호화될 수 있다.
블록(650)에서 블록(660)(복호화된 데이터를 포워드)으로 진행하면, 복호화 매니저(111)는 암호화된 데이터를 I/O 장치(240)에 의해 수신된 데이터의 최종 목적지로 포워드하도록 구성된 로직 및/또는 특징을 포함할 수 있다. 몇몇 예에서, 최종 목적지는 프로세싱 요소(212-1)와 연동하여 작업하는 애플리케이션일 수 있다. 이러한 예에서, 복호화 매니저(111)는 복호화된 데이터를 애플리케이션에게 액세스가능한 네트워크 장치(200)의 메모리 (예를 들면, 메모리(220))의 한 부분으로 포워드할 수 있다.
블록(630)에서 블록(670)(데이터를 획득)으로 이동하면, 복호화 매니저(111)는 (예를 들면 획득 특징부(416)를 통하여) 데이터를 획득한다. 몇몇 예에서, 데이터가 영구 할당된 버퍼(222-10)에 저장되었기 때문에, 이 데이터는 암호화되지 않았다. 이러한 예에서, 데이터는 복호화 매니저(111)에 의해 버퍼(222-10)에 저장된 데이터를 카피함으로써 획득될 수 있다.
블록(670)에서 블록(680)(데이터를 포워드)으로 이동하면, 복호화 매니저(111)는 데이터를 최종 목적지로 포워드할 수 있다. 몇몇 예에서, 최종 목적지는 프로세싱 요소(212-1)와 연동하여 작업하는 애플리케이션일 수 있다. 이러한 예에서, 복호화 매니저(111)는 데이터를 애플리케이션에게 액세스 가능한 네트워크 장치(200)의 메모리의 한 부분으로 포워드할 수 있다.
블록(660) 또는 블록(680)에서 판단 블록(690)(버퍼(들)의 추가적인 표시를 수신?)으로 진행하면, 복호화 매니저(111)는 (예를 들면, 수신 특징부(414))를 통하여) 데이터를 저장하고 있는 버퍼(들)의 추가적인 표시가 수신되었는지를 결정하는 로직 및/또는 특징을 포함할 수 있다. 만일 다른 표시가 수신되었으면, 프로세스는 판단 블록(630)으로 이동한다. 그렇지 않으면, 프로세스는 종료한다.
도 7은 예시적인 시스템(700)을 도시한다. 도 7에 도시된 바와 같이, 시스템(700)은 하이퍼바이저(705), 오퍼레이팅 시스템(들)(710), 애플리케이션(들)(720), 네트워크 입력/출력(I/O) 장치(들)(730), 사용자 I/O 장치(들)(740), 저장소(750), 메모리(760), 중앙 처리 유닛(CPU)(770), 칩셋(780), 및 통신 장치(790)를 포함한다. 몇몇 예에 따르면, 도 7에는 시스템(700)의 구성요소들을 상호연결 및/또는 통신가능하게 결합하기 위한 몇몇 인터페이스가 또한 도시된다. 예를 들면, 사용자 인터페이스(715) 및 인터페이스(735)는 사용자(도시되지 않음) 및/또는 애플리케이션(들)(720)이 오퍼레이팅 시스템(들)(710) 및/또는 하이퍼바이저(705)에 결합할 수 있게 해준다. 또한, 인터페이스(735)는 하이퍼바이저(705) 및/또는 오퍼레이팅 시스템(들)(710)(예를 들면, 장치 드라이버(들)(711))의 구성요소들이 네트워크 I/O 장치(들)(730), 사용자 I/O 장치(들)(740), 저장소(750), 메모리(760), CPU(770), 칩셋(780) 또는 통신 장치(790)와 같은 시스템(700)의 구성요소들에 통신가능하게 결합하게 해줄 수 있다. 인터페이스(754)는, 예를 들면 시스템(700)의 하드웨어 및/또는 펌웨어 요소들이, 예를 들어 시스템 버스 또는 다른 형태의 내부 통신 채널을 통하여 통신가능하게 결합하게 해줄 수 있다.
몇몇 예에서, 도 7에 도시된 바와 같이, 시스템(100)은 오퍼레이팅 시스템(들)(710)을 포함할 수 있다. 오퍼레이팅 시스템(들)(710)은, 예를 들어 하나 이상의 오퍼레이팅 시스템을 포함할 수 있다. 오퍼레이팅 시스템(들)(710)에 포함된 개개의 오퍼레이팅 시스템은 시스템(700)의 구성요소에 의해 지원된 개개 가상 머신의 부분으로서 구현될 수 있다. 이러한 예에서, 개개의 가상 머신은 CPU(770)에 포함된 하나 이상의 프로세서와 연관될 수 있다. 또한, 이러한 예에서, 하이퍼바이저(705)는 이러한 개개 가상 머신의 가상 머신 매니저로서 작용할 수 있다.
몇몇 예에 따르면, 도 7에 도시된 바와 같이, 오퍼레이팅 시스템(들)(710)은 개별적으로 장치 드라이버(들)(711)를 포함할 수 있다. 장치 드라이버(들)(711)는 (예를 들면, 인터페이스(735)를 통하여) 시스템(700)의 하드웨어/펌웨어 형태의 구성요소와 상호작용하도록 구성된 로직 및/또는 특징을 포함할 수 있다. 예를 들어, 장치 드라이버(들)(711)는 저장소(750) 또는 메모리(760)를 제어하거나 지시하여 애플리케이션(들)(720) 또는 오퍼레이팅 시스템(들)(710)에 의해 생성된 요청을 이행하도록 하는 장치 드라이버를 포함할 수 있다. 장치 드라이버(들)(711)는 또한 네트워크 I/O 장치(들)(730)가 CPU(770) 및 메모리(760)와 상호작용하도록 하여 (예를 들면, 네트워크 I/O 장치(들)(730) 또는 통신 장치(790)를 통해) 시스템(700)에 결합된 통신 채널을 통해 데이터를 수신/포워드하게 하는 장치 드라이버를 포함할 수 있다.
몇몇 예에서, 애플리케이션(들)(720)은 시스템(700) 상에서 구현될 수 있는 애플리케이션들을 포함할 수 있다. 이러한 예에서, 애플리케이션(들)(720)은 사용자 I/O 장치(들)(740), 저장소(750) 또는 메모리(760)와 같은 시스템의 구성요소의 (예를 들면, 오퍼레이팅 시스템(들)(710)을 통한) 액세스 또는 사용을 요청할 수 있다.
몇몇 예에 따르면, 네트워크 I/O 장치(들)(730)는 앞의 도 1에서 설명된 I/O 장치(140)와 유사할 수 있다. 이러한 예에서, 네트워크 I/O 장치(들)(730)는 네트워크 I/O 장치(들)(730)에 의해 수신된 데이터의 최소한 일부분을 암호화하고 암호화된 데이터를 (예를 들어, 메모리(760)에서 유지되는) 공유 버퍼로 포워드하기 위해 구성된 또는 구성된 로직 및/또는 특징을 갖는 암호 매니저(142) (도 7에 도시되지 않음)를 포함할 수 있다. 몇몇 예에서, 네트워크 I/O 장치(들)(730)는 네트워크 인터페이스 카드(NIC)로서 기능하도록 구성될 수 있다.
몇몇 예에서, 사용자 I/O 장치(들)(740)는 시스템(700)의 구성요소에 의해 실행되는 데이터 및 명령을 입력하기 위해 인터페이스(754)에 결합된 하나 이상의 사용자 입력 장치를 포함할 수 있다. 예를 들면, 사용자 입력 장치는 키보드, 마우스, 터치 스크린, 트랙 패드, 트랙 볼, 이소포인트(isopoint), 및/또는 음성 인식 시스템 등을 포함할 수 있다. 유사하게, 사용자 I/O 장치(들)(740)는 인터페이스(754)에 결합되어 운용자 또는 사용자에게 정보를 출력하기 위한 하나 이상의 사용자 출력 장치를 포함할 수 있다. 예를 들어, 사용자 출력 장치는 하나 이상의 디스플레이, 프린터, 스피커, 및/또는 필요하다면 다른 출력 장치를 포함할 수 있다. 예를 들어, 사용자 출력 장치 중 하나는 디스플레이일 수 있다. 디스플레이는 음극선관(CRTs), 액정 디스플레이(LCDs), 또는 모든 다른 형태의 디스플레이일 수 있다.
몇몇 예에서, 저장소(750)는 저장 동작 모드에서 실행 또는 작동되도록 구성된 각종 형태의 메모리를 포함할 수 있다. 저장소(750)는 비교적 대량의 데이터를 저장하는 여러 형태의 저장 장치들 중 최소한 하나 또는 그의 조합을 포함할 수 있다. 이러한 여러 형태의 저장 장치는 이것으로 제한되지 않지만, 자기 디스크 드라이브, 광 디스크 드라이브, 테이프 드라이브, 내부 저장 장치, 부착 저장 장치, 플래시 메모리, 배터리 백업 SDRAM(동기 DRAM), 네트워크 액세스가능 저장 장치, 및/또는 다른 형태의 비휘발성 메모리(예를 들면, 상변이 물질(phase change material (PCM)) 중 하나 이상을 포함할 수 있다. 비록 도 7에 도시되지 않지만, 몇몇 예에서, 저장소(750)는 I/O 장치(140)들 중에 포함된 사용자 I/O 장치일 수 있다.
몇몇 예에 따르면, 메모리(760)는 RAM, DRAM, 정적 RAM(SRAM), 상 전이 물질 RAM(PRAM), 및/또는 다른 형태의 휘발성 메모리를 포함하는 여러 형태의 메모리 중 최소한 하나 또는 이들의 조합을 포함할 수 있다. 몇몇 예에서, 메모리(760)는 네트워크 I/O 장치(들)(730), CPU(770)의 구성요소 및/또는 오퍼레이팅 시스템(들)(110)에 의해 사용되어 수신 데이터를 최소한 일시적으로 저장하는 (공유 또는 할당된) 버퍼를 유지하도록 구성될 수 있다. 이러한 예에서, 메모리(760)는 시스템(100) 또는 네트워크 장치(200)에 관해 앞에서 설명된 것처럼 메모리(120) 또는 메모리(220)와 유사하게 기능할 수 있다.
몇몇 예에 따르면, CPU(770)는 시스템(700)의 중앙 처리 유닛으로서 구현될 수 있다. CPU(770)는 개별적으로 하나 이상의 프로세서 코어를 갖는 하나 이상의 프로세서를 포함할 수 있다. 몇몇 예에서, CPU(770)는 시스템(100)에 관해 설명된 프로세서(110) 또는 네트워크 장치(200)에 관해 설명된 프로세서(210)와 유사한 하나 이상의 프로세서를 포함할 수 있다. 또한, CPU(770)에 포함된 프로세서는, 예를 들면 멀티-코어 프로세서, 축소 명령 집합 컴퓨터(RISC), 파이프라인을 갖는 프로세서, 복합 명령 집합 컴퓨터(CISC), 및 디지털 신호 프로세서(DSP) 등과 같은 임의 형태의 프로세서일 수 있다.
몇몇 예에서, 칩셋(780)은 오퍼레이팅 시스템(들)(710), 네트워크 I/O 장치(들)(730), 사용자 I/O 장치(들)(740), 저장소(750), 메모리(760), CPU(770) 또는 통신 장치(790) 사이에서 상호통신을 제공할 수 있다. 예를 들어, 칩셋(780)은 오퍼레이팅 시스템(들)(710), 사용자 I/O 장치(들)(740), 저장소(750) 및 CPU(770) 사이에서 상호통신을 제공하여 저장소(750)로부터 정보를 검색하고 사용자 I/O 장치(들)(740)에 포함된 디스플레이 상에 그래픽을 디스플레이하도록 할 수 있다. 그래픽은 오퍼레이팅 시스템(들)(710)에 포함된 오퍼레이팅 시스템의 요청 시 CPU(770)에 의해 렌더링될 수 있다.
몇몇 예에서, 통신 장치(790)는 시스템(700)이 시스템(700)에 멀리 떨어진 구성요소와 외부적으로 통신할 수 있게 하는 로직 및/또는 특징을 포함할 수 있다. 이러한 로직 및/또는 특징은 하나 이상의 유선, 무선 또는 광 네트워크를 이용한 유선, 무선 또는 광 통신 채널을 통해 통신하는 것을 포함할 수 있다. 그러한 네트워크를 통한 통신에서, 통신 장치(790)는 모든 버전의 하나 이상의 적용가능한 통신 또는 네트워킹 표준에 따라서 동작할 수 있다. 또한, 몇몇 예에서, 통신 장치(790)는 시스템(700)에서 멀리 떨어진 구성요소에게 통신과 연관된 데이터를 수신/포워드하기 위하여 네트워크 I/O 장치(들)(730)와 통합될 수 있다.
전술한 바와 같이, 인터페이스(754)는 시스템(700)의 하드웨어 및/또는 펌웨어 요소가 함께 통신가능하게 결합할 수 있게 해준다. 몇몇 예에 따르면, 인터페이스(754)는 하나 이상의 프로토콜 또는 표준에 따라서 동작할 수 있다. 이러한 프로토콜 또는 표준은 집적회로간(Inter-Integrated Circuit (I2C)) 사양, 시스템 관리 버스(System Management Bus (SMBus)) 사양, 가속 그래픽 포트(Accelerated Graphics Port (AGP)) 사양, 주변 소자 상호접속 익스프레스(Peripheral Component Interconnect Express (PCI Express)) 사용, 범용 직렬 버스(Universal Serial Bus (USB)) 사양, 고선명 멀티미디어 인터페이스(High-Definition Multimedia Interface (HDMI)) 사양, 디지털 비주얼 인터페이스(Digital Visual Interface (DVI)) 사양, 블루투스(BluetoothTM)사양, 또는 직렬 고급 기술 연결(Serial Advanced Technology Attachment (SATA)) 사양과 연관된 표준과 같은 (자손 및 변형을 비롯한) 하나 이상의 산업 표준에 기술되어 있을 수 있다. 본 개시는 전술한 표준 및 연관된 프로토콜로만 제한되지 않는다.
몇몇 예에서, 시스템(700)은 컴퓨팅 장치에 포함될 수 있다. 컴퓨팅 장치의 예는 이것으로 제한되지 않지만, 서버, 블래이드 서버, 컴퓨팅 보드, 데스크탑 컴퓨터, 퍼스널 컴퓨터(PC) 또는 랩톱 컴퓨터, 울트라-모바일 컴퓨터, 태블릿, 터치 패드, 휴대용 컴퓨터, 핸드헬드 컴퓨터, 팜탑 컴퓨터, 개인 휴대 정보 단말(PDA), 셀룰러 텔레폰, 겸용 셀룰러폰/PDA, 텔레비전, 스마트 기기(예를 들면, 스마트 폰, 스마트 태블릿 또는 스마트 텔레비전), 모바일 인터넷 기기(MID), 메시징 기기, 및 데이터 통신 기기 등을 포함할 수 있다.
적어도 하나의 예의 하나 이상의 양태는 프로세서 내부에서 각종 로직을 표현하는 최소한 하나의 머신-판독가능 매체에 저장된 대표적인 명령에 의해 구현될 수 있으며, 이 명령은 머신, 컴퓨팅 장치 또는 시스템에 의해 판독될 때 머신, 컴퓨팅 장치 또는 시스템으로 하여금 본 출원에 기술된 기술을 수행하는 로직을 조작하게 해준다. "IP 코어"라고 알려진 그러한 대표적인 명령은 유형의 머신-판독가능 매체에 저장될 수 있으며 또한 고객 또는 제조 설비에 공급되어 로직 또는 프로세서를 실제로 수행하는 조작 머신 내에 로딩될 수 있다.
여러 예는 하드웨어 요소, 소프트웨어 요소, 또는 이 둘의 조합을 이용하여 구현될 수 있다. 몇몇 예에서, 하드웨어 요소는 기기, 컴포넌트, 프로세서, 마이크로프로세서, 회로, 회로 소자(예를 들면, 트랜지스터, 저항, 캐패시터, 및 인덕터 등), 집적 회로, 주문형 반도체(ASIC), 프로그래머블 로직 장치(PLD), 디지털 신호 프로세서(DSP), 필드 프로그래머블 게이트 어레이(FPGA), 메모리 유닛, 로직 게이트, 레지스터, 반도체 소자, 칩, 마이크로칩, 및 칩셋 등을 포함할 수 있다. 몇몇 예에서, 소프트웨어 요소는 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 머신 프로그램, 오퍼레이팅 시스템 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 함수, 방법, 절차, 소프트웨어 인터페이스, 애플리케이션 프로그램 인터페이스(API), 명령 셋, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼 또는 이들의 임의의 조합을 포함할 수 있다. 예가 하드웨어 요소 및/또는 소프트웨어 요소를 이용하여 구현되는지를 결정하는 것은 주어진 구현을 위해 원하는 대로, 원하는 계산 속도, 전력 레벨, 열 허용 오차, 프로세싱 사이클 예산, 입력 데이터율, 출력 데이터율, 메모리 자원, 데이터 버스 속도 및 다른 설계 또는 성능 제약과 같은 임의 개수의 인수에 따라서 변할 수 있다.
몇몇 예는 제조 물품 또는 최소한 하나의 컴퓨터-판독가능 매체를 포함할 수 있다. 컴퓨터-판독가능 매체는 로직을 저장하는 비일시적 저장 매체를 포함할 수 있다. 몇몇 예에서, 비일시적 저장 매체는 휘발성 메모리 또는 비휘발성 메모리, 제거가능 또는 비제거가능 메모리, 소거가능 또는 비소거가능 메모리, 및 기록가능 또는 재기록가능 메모리 등을 포함하여, 전자 데이터를 저장할 수 있는 한 가지 이상 형태의 컴퓨터-판독가능 저장 매체를 포함할 수 있다. 몇몇 예에서, 로직은 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 머신 프로그램, 오퍼레이팅 시스템 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 함수, 방법, 절차, 소프트웨어 인터페이스, API, 명령 셋, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼 또는 이들의 임의의 조합과 같은 각종 소프트웨어 요소를 포함할 수 있다.
몇몇 예에 따르면, 컴퓨터-판독가능 매체는 머신, 컴퓨팅 장치 또는 시스템에 의해 실행될 때, 그 머신, 컴퓨팅 장치 또는 시스템으로 하여금 기술된 예에 따라서 방법 및/또는 동작을 수행하게 하는 명령을 저장 또는 유지하는 비일시적 저장 매체를 포함할 수 있다. 명령은 소스 코드, 컴파일된 코드, 해석된 코드, 실행가능 코드, 정적 코드, 및 동적 코드 등과 같은 모든 적합한 형태의 코드를 포함할 수 있다. 명령은 소정 기능을 수행하도록 머신, 컴퓨팅 장치 또는 시스템에 명령하기 위한 사전 규정된 컴퓨터 언어, 방식 또는 신택스에 따라서 구현될 수 있다. 명령은 임의의 적합한 고급, 저급, 객체 지향, 비주얼, 컴파일 및/또는 해석된 프로그래밍 언어를 이용하여 구현될 수 있다.
몇몇 예는 "일 예에서" 또는 "일 예"라는 표현을 그의 파생어와 함께 사용하여 기술될 수 있다. 이러한 용어는 이 예와 관련하여 기술된 특정한 특징, 구조 또는 특성이 최소한 하나의 예에 포함되어 있다는 것을 의미한다. "일 예에서"라는 문구가 명세서의 여러 곳에서 나온다고 모두 반드시 동일한 예를 참조하는 것은 아니다.
몇몇 예는 "결합된" 및 "연결된"이라는 표현을 그의 파생어와 함께 사용하여 기술될 수 있다. 이러한 용어는 반드시 서로 동의어로서 의도되지 않는다. 예를 들면, "연결된" 및/또는 "결합된"이라는 용어를 사용하는 설명은 둘 이상의 요소들이 서로 직접 물리적 또는 전기적으로 접촉하고 있다는 것을 나타낼 수 있다. 그러나, "결합된"이라는 용어는 또한 둘 이상의 요소들이 서로 직접 접촉하고 있지 않지만, 그래도 여전히 서로 협동 또는 상호작용하고 있다는 것을 의미할 수도 있다.
요약서는 독자들에게 빨리 기술적인 개시의 특성을 확인시켜줄 요약서를 요구하는 37 C.F.R. 섹션 1.72(b)를 준수하도록 제공됨을 강조하는 것이다. 이것은 청구범위의 범주나 의미를 해석 또는 제한하는데 사용되지 않을 것임을 알고 있으리라 본다. 또한, 전술한 상세한 설명에서, 다양한 특징들이 개시의 간소화를 목적으로 하나의 예에서 함께 그룹화된 것을 알 수 있다. 이러한 개시 방법은 청구한 예가 각 청구항에서 명확하게 언급된 것 보다 더 많은 특징을 필요로 한다는 의도를 반영하는 것으로 해석되지 않는다. 오히려, 다음의 청구범위들이 반영하는 것처럼, 발명의 주제는 개시된 단일의 예의 모든 특징들보다 적다. 그래서 다음의 청구범위는 상세한 설명에 포함되며, 각각의 청구항은 그 자체가 개별적인 바람직한 예를 주장한다. 첨부의 청구범위에서, "포함하는" 그리고 "~하는"이라는 용어는 각기 "포함하는" 그리고 "~함에 있어서"라는 영어의 평이한 등가 용어로서 사용된다. 더욱이, 용어 "제1", "제2", "제3" 등은 그저 표식으로서 사용될 뿐이며, 이들의 객체에 수치적인 요건을 부여하려는 의도는 아니다.
몇몇 예에서, 네트워크 장치의 입력/출력 장치와 네트워크 장치에서 동작하는 제1 프로세싱 요소와의 사이에서 제1 키를 교환하는 단계를 포함하는 제1 방법이 구현될 수 있다. 그러면 입력/출력 장치에서 제1 프로세싱 요소와 연관된 목적지를 갖는 데이터가 수신될 수 있다. 수신된 데이터의 최소한 제1 부분은 제1 키를 이용하여 암호화될 수 있으며 암호화된 제1 부분은 네트워크 장치의 메모리에서 적어도 부분적으로 유지되는 하나 이상의 버퍼로 송신될 수 있다. 메모리는 하나 이상의 버퍼가 네트워크 장치에서 동작하는 최소한 제2 프로세싱 요소와 공유 가능하도록 구성될 수 있다.
몇몇 예에 따르면, 이러한 제1 방법의 구현은 제1 키가 블록 암호 키 또는 스트림 암호 키 중 하나를 포함하는 것을 포함할 수 있다. 이러한 예에서, 블록 암호 키 또는 스트림 암호 키는 3중 데이터 암호화 표준(Triple Data Encryption Standard (3DES)) 또는 고급 암호화 표준(Encryption Standard (AES)) 중 하나에 기초할 수 있다.
몇몇 예에서, 이러한 제1 방법의 구현은 제1 프로세싱 요소에게 암호화된 제1 부분이 하나 이상의 버퍼로 송신되었다고 표시하는 단계를 포함할 수 있다. 제1 프로세싱 요소는 암호화된 제1 부분을 상기 표시에 응답하여 하나 이상의 버퍼로부터 획득하도록 구성될 수 있다. 또한, 제1 프로세싱 요소는 암호화된 제1 부분을 제1 키를 이용하여 복호화하도록 구성될 수 있다.
몇몇 예에 따르면, 이러한 제1 방법의 구현은 목적지를 포함하는 제1 프로세싱 요소와 연관된 목적지가 또한 제1 프로세싱 요소와 연동하여 동작하도록 구성된 애플리케이션과 연관되는 것을 포함할 수 있다. 이러한 예에서, 제1 프로세싱 요소는 데이터의 암호화된 제1 부분을 카피하며 그리고 암호화된 제1 부분을 복호화한 다음 복호화된 제1 부분을 애플리케이션에게 액세스 가능한 네트워크 장치의 메모리의 일부분으로 송신하는 단계를 포함하는 카피 및 복호화 동작을 수행함으로써 암호화된 제1 부분을 획득할 수 있다.
몇몇 예에 따르면, 이러한 제1 방법의 구현은 입력/출력 장치에서 데이터를 헤더 및 페이로드를 갖는 데이터 패킷으로서 수신하는 단계를 포함할 수 있다. 이러한 예에서, 수신된 데이터의 제1 부분은 페이로드 또는 헤더 중 하나를 포함할 수 있다. 만일 수신된 데이터의 제1 부분이 페이로드를 포함하면, 암호화된 제1 부분을 하나 이상의 버퍼로 송신하는 단계는 암호화된 페이로드를 하나 이상의 버퍼 중 제1 버퍼로 송신하는 단계를 포함할 수 있다. 또한, 수신된 데이터의 제2 부분은 헤더를 포함할 수 있다. 헤더는 제1 키를 이용하여 별개로 암호화될 수 있다. 이후 암호화된 헤더는 하나 이상의 버퍼 중 제2 버퍼로 송신될 수 있다. 제1 프로세싱 요소에게 암호화된 페이로드가 제1 버퍼로 송신되었고 암호화된 헤더가 제2 버퍼로 송신되었다고 표시될 수 있다. 이 표시에 응답하여, 제1 프로세싱 요소는 암호화된 페이로드를 제1 버퍼로부터 획득하고 암호화된 헤더를 제2 버퍼로부터 획득하도록 구성될 수 있다. 또한, 제1 프로세싱 요소는 암호화된 페이로드 및 암호화된 헤더를 제1 키를 이용하여 복호화하도록 구성될 수 있다.
몇몇 예에 따르면, 이러한 방법의 구현은 수신된 데이터의 제1 부분이 페이로드를 포함하는 것을 포함할 수 있다. 암호화된 제1 부분을 전송하는 단계는 암호화된 페이로드를 하나 이상의 버퍼 중 제1 버퍼로 송신하는 단계를 포함할 수 있다. 수신된 데이터의 제2 부분은 헤더를 포함할 수 있고 헤더는 하나 이상의 버퍼 중 제2 버퍼로 송신될 수 있다. 이러한 예에서, 암호화된 페이로드가 제1 버퍼로 송신되었고 헤더가 제2 버퍼로 송신되었다고 제1 프로세싱 요소에게 표시될 수 있으며, 이 표시에 응답하여, 제1 프로세싱 요소는 암호화된 페이로드를 제1 버퍼로부터 획득하고 헤더를 제2 버퍼로부터 획득하도록 구성될 수 있고, 제1 프로세싱 요소는 또한 암호화된 페이로드를 제1 키를 이용하여 복호화하도록 구성될 수 있다.
몇몇 예에서, 이러한 제1 방법의 구현은 수신된 데이터의 제1 부분이 페이로드를 포함하고, 수신된 데이터의 제2 부분은 헤더를 포함하고, 헤더를 네트워크 장치의 메모리에서 유지되는 버퍼로 송신하는 단계를 포함하고, 버퍼는 제1 프로세싱 요소에 영구적으로 할당된 것을 포함한다. 이러한 예에서, 암호화된 페이로드가 제1 버퍼로 송신되었고 헤더가 영구적으로 할당된 버퍼로 송신되었다고 제1 프로세싱 요소에게 표시될 수 있으며, 이 표시에 응답하여, 제1 프로세싱 요소는 암호화된 페이로드를 제1 버퍼로부터 획득하고 헤더를 영구적으로 할당된 버퍼로부터 획득하도록 구성될 수 있다. 제1 프로세싱 요소는 또한 암호화된 페이로드를 제1 키를 이용하여 복호화하도록 구성될 수 있다.
몇몇 예에 따르면, 이러한 제1 방법의 구현은 제1 프로세싱 요소 및 제2 프로세싱 요소를 멀티-코어 프로세서의 개개의 코어 또는 멀티-코어 프로세서의 하나 이상의 프로세서 상에서 구현된 개개의 가상 머신 중 하나로서 포함할 수 있다. 이러한 예에서, 제1 프로세싱 요소 및 제2 프로세싱 요소는 각기 제1 및 제2 가상 머신일 수 있다. 네트워크 장치는 하나 이상의 버퍼를 포함하는 버퍼들의 풀을 구축하는 가상 머신 매니저를 포함할 수 있다. 제1 및 제2 가상 머신은 버퍼 풀에 대해 판독 전용으로 액세스할 수 있다. 제1 가상 머신에게 데이터의 암호화된 제1 부분이 하나 이상의 버퍼로 송신되었다고 표시될 수 있다. 제1 가상 머신은 이 표시에 응답하여 암호화된 제1 부분을 하나 이상의 버퍼로부터 획득하도록 구성될 수 있다. 제1 가상 머신은 또한 암호화된 제1 부분을 제1 키를 이용하여 복호화하도록 구성될 수 있다. 가상 머신 매니저는, 데이터의 제1 부분을 복호화하는 제1 가상 머신에 응답하여, 입력/출력 장치에게 하나 이상의 버퍼가 제1 가상 머신 또는 제2 가상 머신과 연관된 목적지를 가진 추가로 수신된 데이터를 최소한 일시 저장하는데 이용 가능하다고 표시할 수 있다.
몇몇 예에 따르면, 적어도 하나의 머신 판독가능 매체는 컴퓨팅 장치에서 실행됨에 따라서 컴퓨팅 장치로 하여금 전술한 것처럼 예시적인 제1 방법을 실행하게 하는 복수개의 명령을 포함한다.
몇몇 예에서, 장치 또는 기기는 전술한 것처럼 예시적인 제1 방법을 수행하기 위한 수단을 포함할 수 있다.
몇몇 예에서, 네트워크 장치의 입력/출력 장치와 네트워크 장치에서 동작하는 제1 프로세싱 요소와의 사이에서 제1 키를 교환하는 단계를 포함하는 제2 방법이 구현될 수 있다. 입력/출력 장치에 의해 수신되고 제1 프로세싱 요소와 연관된 목적지를 갖는 데이터의 최소한 제1 부분이 제1 키를 이용하여 암호화되었다는 표시가 또한 수신될 수 있다. 이 표시는 또한 암호화된 제1 부분이 네트워크 장치의 메모리에서 적어도 부분적으로 유지되는 하나 이상의 버퍼에 저장되어 있다고 표시하는 정보를 포함할 수 있다. 메모리는 하나 이상의 버퍼가 네트워크 장치에서 동작하는 최소한 제2 프로세싱 요소와 공유할 수 있도록 구성될 수 있다. 그러면 표시의 수신에 응답하여 암호화된 제1 부분이 하나 이상의 버퍼로부터 획득되며 그리고 암호화된 제1 부분이 제1 키를 이용하여 복호화될 수 있다.
몇몇 예에 따르면, 이러한 제2 방법의 구현은 제1 키가 블록 암호 키 또는 스트림 암호 키 중 하나를 포함하는 것을 포함할 수 있다. 블록 암호 키 또는 스트림 암호 키는 3DES 또는 AES 중 하나에 기초할 수 있다.
몇몇 예에 따르면, 이러한 제2 방법의 구현은 목적지를 포함하는 제1 프로세싱 요소와 연관된 목적지가 또한 제1 프로세싱 요소와 연동하여 동작하도록 구성된 애플리케이션과 연관되는 것을 포함할 수 있다. 명령은 또한 시스템으로 하여금 데이터의 암호화된 제1 부분을 카피하도록 하며 그리고 암호화된 제1 부분을 복호화한 다음 복호화된 제1 부분을 애플리케이션에게 액세스 가능한 네트워크 장치의 메모리의 일부분으로 송신하는 단계를 포함하는 카피 및 복호화 동작을 수행함으로써 암호화된 제1 부분을 획득하도록 할 수 있다.
몇몇 예에 따르면, 이러한 제2 방법의 구현은 제1 프로세싱 요소 및 제2 프로세싱 요소를 각기 멀티-코어 프로세서의 하나 이상의 코어 상에서 구현된 제1 및 제2 가상 머신으로서 포함할 수 있다. 네트워크 장치는 하나 이상의 버퍼를 포함하는 버퍼들의 풀을 구축하는 가상 머신 매니저를 포함할 수 있다. 제1 및 제2 가상 머신은 버퍼 풀에 대해 판독 전용으로 액세스할 수 있다.
몇몇 예에 따르면, 이러한 제2 방법의 구현은 가상 머신 매니저가 입력/출력 장치에게 하나 이상의 버퍼가 제1 가상 머신 또는 제2 가상 머신과 연관된 목적지를 가진 추가로 수신된 데이터를 최소한 일시 저장하는데 이용 가능하다는 표시를 송신하는 단계를 포함할 수 있다. 이 표시는 데이터의 제1 부분을 복호화하는 제1 가상 머신에 응답하여 송신될 수 있다.
몇몇 예에 따르면, 적어도 하나의 머신 판독가능 매체는 컴퓨팅 장치에서 실행됨에 따라서 컴퓨팅 장치로 하여금 전술한 것처럼 예시적인 제2 방법을 실행하게 하는 복수개의 명령을 포함한다.
몇몇 예에서, 장치 또는 기기는 전술한 것처럼 예시적인 제2 방법을 수행하기 위한 수단을 포함할 수 있다.
몇몇 예에 따르면, 네트워크 장치의 입력/출력 장치에서 유지되는 예시적인 장치 또는 기기는 프로세서 회로와, 프로세서 회로에 통신가능하게 결합된 메모리 유닛을 포함할 수 있다. 메모리 유닛은 프로세서 회로에서 동작하는 로직에 필요한 명령을 저장하도록 구성될 수 있다. 로직은 제1 키를 네트워크 장치에서 동작하는 제1 프로세싱 요소와 교환하도록 구성될 수 있다. 로직은 또한 입력/출력 장치에 의해 수신된 데이터의 최소한 제1 부분을 암호화하도록 구성될 수 있다. 수신된 데이터는 제1 프로세싱 요소와 연관된 목적지를 갖고 있다. 데이터의 제1 부분은 제1 키를 이용하여 암호화될 수 있다. 로직은 또한 암호화된 제1 부분이 네트워크 장치의 메모리에서 적어도 부분적으로 유지되는 하나 이상의 버퍼로 송신되도록 구성될 수 있다. 메모리는 하나 이상의 버퍼가 네트워크 장치에서 동작하는 최소한 제2 프로세싱 요소와 공유할 수 있도록 구성될 수 있다.
예시적인 장치의 몇몇 예에서, 메모리 유닛은 휘발성 메모리를 포함할 수 있다.
예시적인 장치의 몇몇 예에 따르면, 제1 키는 블록 암호 키 또는 스트림 암호 키 중 하나를 포함할 수 있다. 블록 암호 키 또는 스트림 암호 키는 3중 데이터 암호화 표준(Triple Data Encryption Standard (3DES)) 또는 고급 암호화 표준(Encryption Standard (AES)) 중 하나에 기초할 수 있다.
예시적인 장치의 몇몇 예에서, 로직은 또한 제1 프로세싱 요소에게 암호화된 제1 부분이 하나 이상의 버퍼로 송신되었다고 표시하도록 구성될 수 있다. 제1 프로세싱 요소는 표시에 응답하여 암호화된 제1 부분을 하나 이상의 버퍼로부터 획득하도록 구성될 수 있다. 제1 프로세싱 요소는 또한 암호화된 제1 부분을 제1 키를 이용하여 암호화하도록 구성될 수 있다. 몇몇 예에서, 입력/출력 장치에 의해 수신된 데이터는 헤더 및 페이로드를 갖는 데이터 패킷일 수 있다. 수신된 데이터의 제1 부분은 페이로드 또는 헤더 중 하나를 포함할 수 있다. 또한, 만일 제1 부분이 페이로드를 포함하면, 로직은 암호화된 제1 부분이 하나 이상의 버퍼 중 제1 버퍼로 송신되도록 할 수 있다. 수신된 데이터의 제2 부분은 헤더를 포함할 수 있다. 로직은 또한 제1 키를 이용하여 헤더를 별개로 암호화하며 그리고 암호화된 헤더가 하나 이상의 버퍼 중 제2 버퍼로 송신되도록 구성될 수 있다.
예시적인 장치의 몇몇 예에 따르면, 제1 프로세싱 요소 및 제2 프로세싱 요소는 각기 멀티-코어 프로세서의 하나 이상의 코어에서 구현된 제1 및 제2 가상 머신일 수 있다. 네트워크 장치는 하나 이상의 버퍼를 포함하는 버퍼들의 풀을 구축하는 가상 머신 매니저를 포함할 수 있다. 제1 및 제2 가상 머신은 버퍼 풀에 대해 판독 전용으로 액세스할 수 있다. 이러한 예에서, 로직은 제1 가상 머신에게 데이터의 암호화된 제1 부분이 하나 이상의 버퍼로 송신되었다고 표시하도록 구성될 수 있다. 제1 가상 머신은 표시에 응답하여 암호화된 제1 부분을 하나 이상의 버퍼로부터 획득하도록 구성될 수 있다. 제1 가상 머신은 또한 암호화된 제1 부분을 제1 키를 이용하여 복호화하도록 구성될 수 있다. 로직은 또한 가상 머신 매니저로부터, 하나 이상의 버퍼가 제1 가상 머신 또는 제2 가상 머신과 연관된 목적지를 가진 추가로 수신된 데이터를 최소한 일시 저장하는데 이용 가능하다는 표시를 수신하도록 구성될 수 있다. 이 표시는 데이터의 제1 부분을 복호화하는 제1 가상 머신에 응답하여 수신될 수 있다.
비록 주제가 구조적인 특징 및/또는 방법론적인 행위에 특정한 표현으로 기술되었을지라도, 첨부의 청구범위에서 규정된 주제는 반드시 전술한 특정한 특징이나 행위로 제한될 필요는 없다고 이해해야 한다. 오히려, 전술한 특정한 특징 및 행위는 청구범위를 구현하는 예시적인 형태로서 기술된다.

Claims (33)

  1. 네트워크 장치의 입력/출력 장치와 상기 네트워크 장치에서 동작하는 제1 프로세싱 요소와의 사이에서 키를 교환하는 단계와,
    상기 입력/출력 장치에서, 헤더(header)와 페이로드(payload)를 갖는 데이터 패킷을 수신하는 단계 - 상기 데이터 패킷은 상기 제1 프로세싱 요소와 연관된 목적지를 가짐 - 와,
    상기 키를 이용하여 상기 페이로드를 암호화하는 단계와,
    상기 암호화된 페이로드를 상기 네트워크 장치의 메모리에서 적어도 부분적으로 유지되는 제1 버퍼로 송신하는 단계 - 상기 메모리는 상기 제1 버퍼를 상기 네트워크 장치에서 동작하는 적어도 제2 프로세싱 요소와 공유할 수 있도록 구성됨 - 와,
    상기 데이터 패킷의 헤더를 상기 메모리에서 적어도 부분적으로 유지되는 제2 버퍼로 송신하는 단계 - 상기 제2 버퍼는 상기 제1 프로세싱 요소에 할당되고, 상기 제2 프로세싱 요소와는 공유되지 않거나 또는 액세스 가능하지 않음 - 를 포함하는
    방법.
  2. 제 1 항에 있어서,
    상기 키는 블록 암호 키 또는 스트림 암호 키 중 하나를 포함하고, 상기 블록 암호 키 또는 상기 스트림 암호 키는 3중 데이터 암호화 표준(Triple Data Encryption Standard:3DES) 또는 고급 암호화 표준(Advanced Encryption Standard: AES) 중 하나에 기초하는
    방법.
  3. 제 1 항에 있어서,
    상기 암호화된 페이로드가 상기 제1 버퍼로 송신되었다는 것을 상기 제1 프로세싱 요소에게 표시하는 단계를 포함하고,
    상기 제1 프로세싱 요소는 상기 표시에 응답하여 상기 암호화된 페이로드를 상기 제1 버퍼로부터 획득하도록 구성되며, 상기 제1 프로세싱 요소는 상기 암호화된 페이로드를 상기 키를 이용하여 복호화하도록 또한 구성되는
    방법.
  4. 제 3 항에 있어서,
    상기 제1 프로세싱 요소와 연관된 상기 목적지는 상기 제1 프로세싱 요소와 연동하여 동작하도록 구성된 애플리케이션과 연관된 목적지를 포함하고,
    상기 제1 프로세싱 요소는 상기 암호화된 페이로드를 카피하고 상기 암호화된 페이로드를 복호화한 다음 그 복호화된 페이로드를 상기 애플리케이션에 액세스 가능한 상기 네트워크 장치의 메모리의 일부분으로 송신하는 카피 및 복호화 동작을 수행함으로써 상기 암호화된 페이로드를 획득하는
    방법.
  5. 제 1 항에 있어서,
    상기 제1 프로세싱 요소 및 상기 제2 프로세싱 요소를 멀티-코어 프로세서의 개개의 코어 또는 상기 멀티-코어 프로세서의 하나 이상의 코어 상에서 구현된 개개의 가상 머신 중 하나로서 포함하는
    방법.
  6. 제 5 항에 있어서,
    상기 제1 프로세싱 요소와 상기 제2 프로세싱 요소를 각기 제1 가상 머신과 제2 가상 머신으로서 포함하고, 상기 네트워크 장치는 상기 제1 버퍼 및 상기 제2 버퍼를 포함하는 버퍼들의 풀(a pool of buffers)을 구축하는 가상 머신 매니저를 포함하는
    방법.
  7. 제 6 항에 있어서,
    상기 암호화된 페이로드가 상기 제1 버퍼로 송신되었다는 것을 상기 제1 가상 머신에게 표시하는 단계를 포함하며,
    상기 제1 가상 머신은 상기 표시에 응답하여 상기 암호화된 페이로드를 상기 제1 버퍼로부터 획득하도록 구성되며, 상기 제1 가상 머신은 상기 암호화된 페이로드를 상기 키를 이용하여 복호화하도록 또한 구성되는
    방법.
  8. 제 7 항에 있어서,
    상기 가상 머신 매니저가, 상기 페이로드를 복호화하는 상기 제1 가상 머신에 응답하여, 상기 제1 버퍼가 상기 제1 가상 머신 또는 상기 제2 가상 머신과 연관된 목적지를 가진 추가로 수신된 데이터를 적어도 일시적으로 저장하는데 이용 가능하다는 것을 상기 입력/출력 장치에게 표시하는 단계를 포함하는
    방법.
  9. 제 1 항에 있어서,
    상기 암호화된 페이로드가 상기 제1 버퍼로 송신되었고 상기 헤더가 상기 제2 버퍼로 송신되었다는 것을 상기 제1 프로세싱 요소에게 표시하는 단계를 포함하고,
    상기 제1 프로세싱 요소는 상기 표시에 응답하여 상기 암호화된 페이로드를 상기 제1 버퍼로부터 획득하고 상기 헤더를 상기 제2 버퍼로부터 획득하도록 구성되며, 상기 제1 프로세싱 요소는 상기 암호화된 페이로드를 상기 키를 이용하여 복호화하도록 또한 구성되는
    방법.
  10. 삭제
  11. 네트워크 장치의 입력/출력 장치에서 유지되는 장치로서,
    프로세서 회로와,
    상기 프로세서 회로에 통신가능하게 결합된 메모리 유닛을 포함하되, 상기 메모리 유닛은 상기 프로세서 회로에서 동작하는 로직에 필요한 명령을 저장하도록 구성되고,
    상기 로직은 상기 네트워크 장치에서 동작하는 제1 프로세싱 요소와 키를 교환하도록 구성되고,
    상기 로직은 상기 입력/출력 장치에 의해 수신된, 헤더와 페이로드를 갖는 데이터 패킷의 상기 페이로드를 암호화하도록 또한 구성되고,
    상기 수신된 데이터 패킷은 상기 제1 프로세싱 요소와 연관된 목적지를 갖고 있고, 상기 페이로드는 상기 키를 이용하여 암호화되고,
    상기 로직은 상기 암호화된 페이로드가 상기 네트워크 장치의 메모리에서 적어도 부분적으로 유지되는 제1 버퍼로 송신되도록 또한 구성되고, 상기 메모리는 상기 제1 버퍼를 상기 네트워크 장치에서 동작하는 적어도 제2 프로세싱 요소와 공유할 수 있도록 구성되며,
    상기 로직은 상기 데이터 패킷의 헤더가 상기 메모리에서 적어도 부분적으로 유지되는 제2 버퍼로 송신되도록 구성되고, 상기 제2 버퍼는 상기 제1 프로세싱 요소에 할당되고, 상기 제2 프로세싱 요소와는 공유되지 않거나 또는 액세스 가능하지 않은
    장치.
  12. 제 11 항에 있어서,
    상기 키는 블록 암호 키 또는 스트림 암호 키 중 하나를 포함하고, 상기 블록 암호 키 또는 상기 스트림 암호 키는 3중 데이터 암호화 표준(3DES) 또는 고급 암호화 표준(AES) 중 하나에 기초하는
    장치.
  13. 제 11 항에 있어서,
    상기 로직은 상기 암호화된 페이로드가 상기 제1 버퍼로 송신되었다는 것을 상기 제1 프로세싱 요소로 표시하도록 또한 구성되며, 상기 제1 프로세싱 요소는 상기 표시에 응답하여 상기 암호화된 페이로드를 상기 제1 버퍼로부터 획득하도록 구성되며, 상기 제1 프로세싱 요소는 상기 암호화된 페이로드를 상기 키를 이용하여 복호화하도록 또한 구성되는
    장치.
  14. 제 11 항에 있어서,
    상기 메모리 유닛은 휘발성 메모리를 포함하는
    장치.
  15. 삭제
  16. 제 12 항에 있어서,
    상기 제1 프로세싱 요소와 상기 제2 프로세싱 요소를 각기 멀티-코어 프로세서의 하나 이상의 코어에서 구현된 제1 가상 머신과 제2 가상 머신으로서 포함하고, 상기 네트워크 장치는 상기 제1 버퍼 및 상기 제2 버퍼를 포함하는 버퍼들의 풀을 구축하는 가상 머신 매니저를 포함하는
    장치.
  17. 제 16 항에 있어서,
    상기 로직은 상기 암호화된 페이로드가 상기 제1 버퍼로 송신되었다는 것을 상기 제1 가상 머신에게 표시하도록 구성되며, 상기 제1 가상 머신은 상기 표시에 응답하여 상기 암호화된 페이로드를 상기 제1 버퍼로부터 획득하도록 구성되고, 상기 제1 가상 머신은 상기 암호화된 페이로드를 상기 키를 이용하여 복호화하도록 또한 구성되는
    장치.
  18. 제 17 항에 있어서,
    상기 로직은 상기 제1 버퍼가 상기 제1 가상 머신 또는 상기 제2 가상 머신과 연관된 목적지를 가진 추가로 수신된 데이터를 적어도 일시적으로 저장하는데 이용 가능하다는 표시를 상기 가상 머신 매니저로부터 수신하도록 또한 구성되며, 상기 표시는 상기 암호화된 페이로드를 복호화하는 상기 제1 가상 머신에 응답하여 수신되는
    장치.
  19. 네트워크 장치의 입력/출력 장치와 상기 네트워크 장치에서 동작하는 제1 프로세싱 요소와의 사이에서 키를 교환하는 단계와,
    상기 입력/출력 장치에 의해 수신되고 상기 제1 프로세싱 요소와 연관된 목적지를 갖는 데이터 패킷의 페이로드가 상기 키를 이용하여 암호화되었다는 표시를 수신하는 단계 - 상기 표시는 상기 암호화된 페이로드가 상기 네트워크 장치의 메모리에서 적어도 부분적으로 유지되는 제1 버퍼에 저장되어 있다고 표시하는 정보를 또한 포함하고, 상기 메모리는 상기 제1 버퍼를 상기 네트워크 장치에서 동작하는 적어도 제2 프로세싱 요소와 공유할 수 있도록 구성되며, 상기 정보는 상기 데이터 패킷의 헤더가 상기 메모리에서 적어도 부분적으로 유지되는 제2 버퍼에 저장되어 있다고 또한 표시하되, 상기 제2 버퍼는 상기 제1 프로세싱 요소에 할당되고, 상기 제2 프로세싱 요소와는 공유되지 않거나 또는 액세스 가능하지 않음 - 와,
    상기 표시의 수신에 응답하여 상기 암호화된 페이로드를 상기 제1 버퍼로부터 획득하고 상기 헤더를 상기 제2 버퍼로부터 획득하는 단계와,
    상기 암호화된 페이로드를 상기 키를 이용하여 복호화하는 단계를 포함하는
    방법.
  20. 제 19 항에 있어서,
    상기 키는 블록 암호 키 또는 스트림 암호 키 중 하나를 포함하고, 상기 블록 암호 키 또는 상기 스트림 암호 키는 3중 데이터 암호화 표준(3DES) 또는 고급 암호화 표준(AES) 중 하나에 기초하는
    방법.
  21. 제 19 항에 있어서,
    상기 제1 프로세싱 요소와 연관된 상기 목적지는 상기 제1 프로세싱 요소와 연동하여 동작하도록 구성된 애플리케이션과 연관된 목적지를 포함하고,
    상기 제1 프로세싱 요소는 상기 암호화된 페이로드를 카피하고 상기 암호화된 페이로드를 복호화한 다음 그 복호화된 페이로드를 상기 애플리케이션에 액세스 가능한 상기 네트워크 장치의 메모리의 일부분으로 송신하는 카피 및 복호화 동작을 수행함으로써 상기 암호화된 페이로드를 획득하는
    방법.
  22. 제 19 항에 있어서,
    상기 제1 프로세싱 요소와 상기 제2 프로세싱 요소는 각기 멀티-코어 프로세서의 하나 이상의 코어 상에서 구현된 제1 가상 머신과 제2 가상 머신으로서 포함하고, 상기 네트워크 장치는 상기 제1 버퍼 및 상기 제2 버퍼를 포함하는 버퍼들의 풀을 구축하는 가상 머신 매니저를 포함하는
    방법.
  23. 제 22 항에 있어서,
    상기 가상 머신 매니저는 상기 제1 버퍼가 상기 제1 가상 머신 또는 상기 제2 가상 머신과 연관된 목적지를 가진 추가로 수신된 데이터를 적어도 일시 저장하는데 이용 가능하다는 표시를 상기 입력/출력 장치에게 송신하며,
    상기 표시는 상기 암호화된 페이로드를 복호화하는 상기 제1 가상 머신에 응답하여 송신되는
    방법.
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
KR1020147027239A 2012-03-28 2012-03-28 네트워크 장치에서 프로세싱 요소를 위한 공유 버퍼 KR101684042B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/031023 WO2013147773A1 (en) 2012-03-28 2012-03-28 Shared buffers for processing elements on a network device

Publications (2)

Publication Number Publication Date
KR20140138800A KR20140138800A (ko) 2014-12-04
KR101684042B1 true KR101684042B1 (ko) 2016-12-07

Family

ID=49260838

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147027239A KR101684042B1 (ko) 2012-03-28 2012-03-28 네트워크 장치에서 프로세싱 요소를 위한 공유 버퍼

Country Status (4)

Country Link
KR (1) KR101684042B1 (ko)
CN (1) CN104221000B (ko)
DE (1) DE112012006148B4 (ko)
WO (1) WO2013147773A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023191222A1 (ko) * 2022-03-31 2023-10-05 엘지전자 주식회사 신호 처리 장치, 및 이를 구비하는 차량용 디스플레이 장치

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10963183B2 (en) * 2017-03-20 2021-03-30 Intel Corporation Technologies for fine-grained completion tracking of memory buffer accesses
US11500737B2 (en) * 2019-05-21 2022-11-15 Mellanox Technologies, Ltd. Coherent capturing of shared-buffer status
JP7280508B2 (ja) * 2019-09-19 2023-05-24 富士通株式会社 情報処理装置、情報処理方法および仮想マシン接続管理プログラム
US20230030241A1 (en) * 2021-07-29 2023-02-02 International Business Machines Corporation Intersystem processing employing buffer summary groups

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050254645A1 (en) * 2000-09-29 2005-11-17 Keith Shippy System and method for safeguarding data between a device driver and a device
US20060072564A1 (en) * 2004-03-31 2006-04-06 Linden Cornett Header replication in accelerated TCP (Transport Control Protocol) stack processing
US20060177061A1 (en) * 2004-10-25 2006-08-10 Orsini Rick L Secure data parser method and system
US20070245140A1 (en) * 2002-01-09 2007-10-18 Nec Corporation Communication system and network control apparatus with encryption processing function, and communication control method

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5303302A (en) * 1992-06-18 1994-04-12 Digital Equipment Corporation Network packet receiver with buffer logic for reassembling interleaved data packets
US7308000B2 (en) * 2002-11-07 2007-12-11 Sun Microsystems, Inc. Methods and systems for efficient multi-packet data processing in a layered network protocol
US20040168081A1 (en) * 2003-02-20 2004-08-26 Microsoft Corporation Apparatus and method simplifying an encrypted network
US20060195704A1 (en) * 2005-01-27 2006-08-31 Hewlett-Packard Development Company, L.P. Disk array encryption element
JP4667108B2 (ja) * 2005-04-11 2011-04-06 パナソニック株式会社 データ処理装置
US8650397B2 (en) * 2008-09-24 2014-02-11 Telefonaktiebolaget L M Ericsson (Publ) Key distribution to a set of routers
GB2466651A (en) * 2008-12-31 2010-07-07 St Microelectronics Security co-processor architecture for decrypting packet streams
US8499148B2 (en) 2009-11-02 2013-07-30 Chi Eng System and method for virtual team collaboration in a secure environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050254645A1 (en) * 2000-09-29 2005-11-17 Keith Shippy System and method for safeguarding data between a device driver and a device
US20070245140A1 (en) * 2002-01-09 2007-10-18 Nec Corporation Communication system and network control apparatus with encryption processing function, and communication control method
US20060072564A1 (en) * 2004-03-31 2006-04-06 Linden Cornett Header replication in accelerated TCP (Transport Control Protocol) stack processing
US20060177061A1 (en) * 2004-10-25 2006-08-10 Orsini Rick L Secure data parser method and system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023191222A1 (ko) * 2022-03-31 2023-10-05 엘지전자 주식회사 신호 처리 장치, 및 이를 구비하는 차량용 디스플레이 장치
WO2023191195A1 (ko) * 2022-03-31 2023-10-05 엘지전자 주식회사 신호 처리 장치, 및 이를 구비하는 차량용 디스플레이 장치

Also Published As

Publication number Publication date
DE112012006148T5 (de) 2015-01-15
KR20140138800A (ko) 2014-12-04
CN104221000B (zh) 2018-05-01
DE112012006148B4 (de) 2023-02-23
WO2013147773A1 (en) 2013-10-03
CN104221000A (zh) 2014-12-17

Similar Documents

Publication Publication Date Title
US9973335B2 (en) Shared buffers for processing elements on a network device
US20230110230A1 (en) Technologies for secure i/o with memory encryption engines
US11088846B2 (en) Key rotating trees with split counters for efficient hardware replay protection
US11656853B2 (en) Techniques for distributed operation of secure controllers
US10810138B2 (en) Enhanced storage encryption with total memory encryption (TME) and multi-key total memory encryption (MKTME)
CN107430670B (zh) 用于存储器保护的柔性计数器系统
US10560262B2 (en) Information-processing system, information-processing apparatus, management apparatus, and processing method
US9152825B2 (en) Using storage controller bus interfaces to secure data transfer between storage devices and hosts
US20220206958A1 (en) Cryptographic computing including enhanced cryptographic addresses
KR20150143708A (ko) 스토리지 디바이스 보조 인라인 암호화 및 암호해독
US10691627B2 (en) Avoiding redundant memory encryption in a cryptographic protection system
US11397820B2 (en) Method and apparatus for processing data, computer device and storage medium
KR101684042B1 (ko) 네트워크 장치에서 프로세싱 요소를 위한 공유 버퍼
US10372628B2 (en) Cross-domain security in cryptographically partitioned cloud
JP2018524722A (ja) 制御された暗号化鍵管理によってソフトウェアモジュールを隔離する方法のためのメモリキャッシュおよびキャッシュされたソフトウェアモジュール識別情報のセキュア処理
CN112149144A (zh) 聚合密码引擎
US11902422B2 (en) Systems, methods, and devices for key per input/output security
US20230297725A1 (en) Technologies for filtering memory access transactions received from one or more i/o devices
US20190228159A1 (en) Technologies for filtering memory access transactions received from one or more accelerators via coherent accelerator link
US10241922B2 (en) Processor and method
US20220416997A1 (en) Handling unaligned transactions for inline encryption
WO2017166206A1 (en) Techniques for accelerated secure storage capabilities
KR20090059602A (ko) 세션 메모리 버스를 구비한 암호화 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant