문맥 (context)
본 발명은 일반적으로 컴퓨터 네트워킹 기술에 관한 것이다. 보다 구체적으로는, 본 발명은 일반적으로 네트워크 컴퓨팅 작업(tasks)의 오프로드(offload)를 최적화하기 위한 메커니즘에 관한 것이다.
운영 시스템(operating systems), 애플리케이션 소프트웨어, 네트워킹 기술 등의 복잡화 및 정교화가 엄청난 속도로 계속되고 있고, 이로써 컴퓨터 기능이 증가하게 되었다. 증가된 기능은 종종 CPU(Central Processor Unit)의 로드의 증가(이하, "CPU 오버헤드"(CPU overhead"라 함)를 초래하였는데, 이는 증가된 기능을 구현하기 위하여 CPU에 의하여 수행되어야 하는 의무(duites)가 증가하기 때문이다.
CPU 오버헤드의 증가가 이미 명백한 분야 중 하나는, 고대역폭 매체(high bandwidth media)의 증가로 인해 네트워크 속도가 증가하고 있는 네트워크된 애플리케이션(networked applications) 분야이다. 네트워크 속도는 CPU 프로세서 및 호스트 컴퓨터에서의 로컬 메모리에의 액세스 속도에도 필적할 수 있다. 이러한 네트워크된 애플리케이션은 7-계층 Open System Interconnect(OSI) 모델 또는 윈도우 운영 시스템에 의해 사용되는 계층화된 모델(layered model) 등의 대부분의 운영 시스템에 의해 사용되는 계층화된 아키텍쳐로 인해 호스트 프로세서에 부담을 더 가중시킨다.
널리 알려진 바와 같이, 이러한 모델은 네트워크로의 물리적 접속과 최종 사용자(end-user) 애플리케이션 사이의 데이터의 흐름을 나타내기 위하여 사용된다. 데이터 비트를 네트워크 케이블에 부가하는 것과 같은 가장 기본적인 기능은 하부 계층(bottom layers)에서 수행되는 반면, 애플리케이션의 디테일(details)을 취급하는 기능은 상부 계층(top layers)에서 수행된다. 근본적으로, 각 계층의 목적은, 상위 계층을 서비스가 실제로 어떻게 구현되는지에 관한 디테일로부터 실드(shield)하면서, 다음의 상위 계층에 서비스를 제공하는 것이다. 각 계층이 다른 컴퓨터의 동일한 계층와 통신하고 있다고 믿도록 하는 방식으로 계층은 추출(abstract)된다.
데이터 패킷으로 수행되는 다양한 기능은 계층들 사이에서 진행되면 소프트웨어 집약적(software intensive)이므로, 따라서 종종 상당한 양의 CPU 프로세서 및 메모리 자원을 요구한다. 예를 들어, 다양한 계층에서 패킷으로 수행되는 패킷 체크섬 계산 및 검증, 메시지 다이제스트(digest) 계산, 서비스 공격의 거부를 보호하기 위한 패킷 필터링, 및 UDP(User Datagram Protocol) 패킷 프레그먼트화(fragmentation)와 같은 기능은 지나치게 CPU 집약적이다. 이러한 기능들 각각이 수행되면 결과적인 CPU의 요구는 전체 컴퓨터 시스템의 처리량(throughput) 및 성능에 크게 영향을 미칠 수 있다.
온라인 판매(on-line sales) 및 재택근무 이용이 증가함에 따라, 데이터 전송의 보안이 더욱 중요해지고 있다. 이는 데이터 패킷으로 수행되기 위한 추가적인 보안 기능을 요구한다. 이러한 보안 기능은 다른 통신 네트워크를 거쳐 데이터를 전송하는 동안 데이터의 프라이버시를 보증하고, 데이터 패킷이 인증된 최종 호스트(end host), 애플리케이션, 또는 사용자로부터 오고 있는지 보증하고, 다른 통신 네트워크를 거치는 동안 데이터가 수정되지 않았음을 보증하는 것을 포함한다. 이 애플리케이션을 위해, 하나 이상의 프라이버시, 인증 또는 데이터 무결정(integrity)의 임의의 조합이 엔드-투-엔드(end-to-end)로 가정될 수 있는 안전한 데이터 전송이 정의된다. 데이터 네트워크를 통한 안전한 데이터 전송을 용이하게 하기 위하여 몇몇 표준이 개발되었다. 이러한 표준은, 원격 시스템(remote system)에 있어서 메시지 교환 및 계산을 통해 안전한 세션(session)을 설정하기 위한 방법을 제공하며, 이로써 다른 통신 네트워크를 통해 전송되는 민감한 데이터가 안전하고 간섭으로부터 자유롭도록(tamper free 또는 untampered) 유지되게 한다. 예를 들어, IPSec(Internet security protocol)은, 안전한 호스트-투-호스트 파이프(host-to-host pipes), 사용자 레벨 보안, 애플리케이션 레벨 보안, 접속 레벨 보안 및 인터넷을 통한 가상 프라이빗 네트워크를 설정하기 위하여 사용될 수 있다. IPSec은 암호의 부호화(encryption) 및 인증(authentication)을 위한 사양의 세트를 정의한다. IPSec은 또한 애플리케이션 간에 설정되는 안전한 세션을 위한 키를 설정하기 위한 Internet Key Exchange("IKE")를 포함하는 키 교환(key exchange)을 위한 여러 알고리즘을 지원한다. 데이터의 부호화 및 복호화(예를 들어, SSL 부호화 및 IP Security 암호화)는 CPU 집약적이다. 예를 들어, TCP 전송 프로세싱을 위해서는 전송되는 데이터의 바이트 당 대략 2 사이클이 소요되는 것으로 현재는 추정된다. IPSec 인증을 위하여, CPU 오버헤드는 가변적이지만, 상당한 수로서 바이트 당 대략 15 사이클이다. 암호화를 위해서는, CPU 오버헤드는 바이트 당 약 25 사이클에서 약 145 사이클 사이에 달한다.
상술한 수로부터 안전한 세션을 설정하기 위한 작업을 수행하는 것이 CPU 집약적임을 알 수 있다. 이러한 모든 작업을 수행하는 호스트 프로세서는 이러한 작업을 위하여 자원이 소비되기 때문에 시스템 성능에 있어서 문제를 초래할 수 있다. 시스템 성능의 저하는, 네트워크 엘리먼트(예를 들어, 라우팅, 스위칭, 서빙, 네트워크된 스토리지의 관리 등)의 기능에 따라 다양한 방식으로 네트워크 및 사용자에게 영향을 끼친다.
CPU 자원에 대한 요구가 커짐에 따라 네트워크 인터페이스 카드(NICs) 등의 컴퓨터 하드웨어 주변기기의 성능 및 처리량도 증가한다. 이러한 주변기기는 종종 CPU에 의하여 수행되는 많은 작업 및 기능을 수행할 수 있는 전용 프로세서 및 메모리를 구비한다.
코프로세서(coprocessors)는 호스트 컴퓨터로부터의 일부 작업을 오프로드(offload)하기 위하여 개발되었다. 어떤 코프로세서는 호스트 프로세서를 위한 특정 기본 작업을 수행하기 위하여 개발되었다. 그러나, 작업이 특정된 코프로세서의 추가는 안전한 세선 설정을 위한 작업의 많은 양을 호스트 프로세서로부터 오프로드하지는 않는다. 다른 대안은 시스템에 복수의 코프로세서를 추가하고, 각 프로세서가 서로 다른 작업을 수행하게 하는 것이다. 이러한 대안은 물리적 제약(예를 들어, 컴퓨터에서 카드가 접속되는 슬롯의 수)에 의하여 제한되고, 호스트 프로세서와 복수의 코프로세서 간의 다중 통신이라는 문제를 야기한다.
안전한 세션을 설정하기 위하여 요구되는 하나 이상의 작업을 수행하기 위한 다른 프로세서가 개발되었다. 이러한 예로서, 프로세서가 암호화 동작(즉, 부호화 및 복호화), 키 생성 동작, 해시(hash) 동작을 수행할 수 있다고 가정한다. 안전한 세션을 설정하기 위한 요청을 서버가 수신하면, 서버는 프로세서로 하여금 클라이언트로부터 수신한 프리-마스터(pre-master) 시크리트(secret)를 복호화하도록 명령한다. 마시터 시크리트 및 키 자료(material)를 생성하기 위하여, 호스트 프로세서는 프로세서로 대략 20회의 호출(calls)을 생성하여야 한다(각 해쉬 동작마다 한 번). 이 예에서 설명한 바와 같이, 복수의 작업을 수행할 수 있는 프로세서는 호스트 프로세서와 코프로세서 간의 다중 통신에 의한 자원 소비 문제를 해결하지 못한다.
지시문 (instruction)
주어진 원문을 읽고 필요한 정보를 파악하여, 원문에 근거해 질문에 답하라.
질문 (question)
네트워크된 애플리케이션에서 패킷 체크섬 계산, 메시지 다이제스트 계산, 패킷 필터링, UDP 패킷 프레그먼트화와 같은 기능들이 수행될 때 발생하는 문제점과 이것이 시스템에 미치는 영향은 무엇인가?
추론 과정 (compact_reasoning)
-
1과제 해석
task_interpretation특정 네트워크 기능 수행 시 발생하는 문제점과 시스템에 미치는 영향을 묻는 질문이다.
-
2정보 추출
information_extraction언급된 기능들이 소프트웨어 집약적(software intensive)이라는 점과 CPU/메모리 자원을 요구한다는 점을 추출한다.
- 데이터 패킷으로 수행되는 다양한 기능은 계층들 사이에서 진행되면 소프트웨어 집약적(software intensive)이므로, 따라서 종종 상당한 양의 CPU 프로세서 및 메모리 자원을 요구한다.
-
3근거 선택
evidence_selection해당 기능들이 지나치게 CPU 집약적이라는 구체적 근거를 확인한다.
- 패킷 체크섬 계산 및 검증, 메시지 다이제스트(digest) 계산, 서비스 공격의 거부를 보호하기 위한 패킷 필터링, 및 UDP(User Datagram Protocol) 패킷 프레그먼트화(fragmentation)와 같은 기능은 지나치게 CPU 집약적이다.
-
4논리 통합
logical_integrationCPU 집약적인 기능 수행이 CPU 요구량을 높여 시스템 성능에 영향을 미치는 인과관계를 연결한다.
- 이러한 기능들 각각이 수행되면 결과적인 CPU의 요구는 전체 컴퓨터 시스템의 처리량(throughput) 및 성능에 크게 영향을 미칠 수 있다.
-
5결론 도출
conclusion_formulation기능들이 지나치게 CPU 집약적이라서 CPU 요구량을 높이고, 이것이 시스템의 처리량과 성능에 큰 영향을 미친다는 결론을 도출한다.
- 결과적인 CPU의 요구는 전체 컴퓨터 시스템의 처리량(throughput) 및 성능에 크게 영향을 미칠 수 있다.
-
6답변 생성
answer_generation질문에 대해 문제점(CPU 집약성 및 자원 요구)과 영향(처리량 및 성능 저하)을 포함하여 답변을 작성한다.
- 지나치게 CPU 집약적이다.
- 전체 컴퓨터 시스템의 처리량(throughput) 및 성능에 크게 영향을 미칠 수 있다.
최종 답변 (final_answer)
패킷 체크섬 계산, 메시지 다이제스트 계산, 패킷 필터링, UDP 패킷 프레그먼트화와 같은 기능들은 소프트웨어 집약적이어서 지나치게 CPU 집약적이며, 이로 인해 발생하는 CPU 요구량은 전체 컴퓨터 시스템의 처리량(throughput) 및 성능에 큰 영향을 미칠 수 있다.
핵심 해석 (core_interpretation)
네트워크된 애플리케이션에서 패킷 체크섬 계산, 메시지 다이제스트 계산, 패킷 필터링, UDP 패킷 프레그먼트화와 같은 기능들은 지나치게 CPU 집약적이어서 전체 컴퓨터 시스템의 처리량 및 성능에 크게 영향을 미친다.