KR20180129631A - 네트워크 보안 모니터링의 가속화 - Google Patents
네트워크 보안 모니터링의 가속화 Download PDFInfo
- Publication number
- KR20180129631A KR20180129631A KR1020180048614A KR20180048614A KR20180129631A KR 20180129631 A KR20180129631 A KR 20180129631A KR 1020180048614 A KR1020180048614 A KR 1020180048614A KR 20180048614 A KR20180048614 A KR 20180048614A KR 20180129631 A KR20180129631 A KR 20180129631A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- worker thread
- copied
- circuitry
- executed
- Prior art date
Links
- 238000012544 monitoring process Methods 0.000 title claims abstract description 36
- 238000000034 method Methods 0.000 claims abstract description 32
- 230000010076 replication Effects 0.000 claims abstract description 12
- 238000012545 processing Methods 0.000 claims description 74
- 230000015654 memory Effects 0.000 claims description 44
- 230000006870 function Effects 0.000 claims description 27
- 238000001514 detection method Methods 0.000 claims description 9
- 238000003012 network analysis Methods 0.000 claims description 8
- 238000007689 inspection Methods 0.000 claims description 7
- 238000003780 insertion Methods 0.000 claims description 6
- 230000037431 insertion Effects 0.000 claims description 6
- 238000013519 translation Methods 0.000 claims description 6
- 238000004891 communication Methods 0.000 description 24
- 241001272996 Polyphylla fullo Species 0.000 description 17
- 238000010586 diagram Methods 0.000 description 15
- 230000001133 acceleration Effects 0.000 description 13
- 238000004458 analytical method Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000010367 cloning Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000005291 magnetic effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000035945 sensitivity Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000704 physical effect Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1425—Traffic logging, e.g. anomaly detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/12—Network monitoring probes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
- H04L49/9068—Intermediate storage in different physical parts of a node or terminal in the network interface card
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1433—Vulnerability analysis
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/20—Network architectures or network communication protocols for network security for managing network security; network security policies in general
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
네트워크 보안 모니터링(NSM)을 위한 시스템들, 디바이스들, 및 방법들이 본원에서 전반적으로 논의된다. 하드웨어 큐 관리자(HQM)는 적어도 제1 워커 스레드로부터 제1 데이터를 수신하는 입력 인터페이스, 제1 복사된 데이터를 생성하기 위해 제1 데이터의 적어도 일부분의 사본을 생성하는 큐 복제 회로부, 및 (a) 제1 복사된 데이터를 제2 워커 스레드에 제공하고, 그리고/또는 (b) 제1 데이터의 적어도 일부분을 제3 워커 스레드에 제공하는 출력 인터페이스를 포함할 수 있다.
Description
실시예들은 일반적으로, 보안 등을 위해, 네트워크를 모니터링하는 것에 관한 것이다. 하나 이상의 실시예는 원격 통신(예컨대, 3GPP(Third Generation Partnership Project), LTE(Long Term Evolution), 또는 이와 유사한 것), 또는 다른 네트워크에서의 네트워크 보안 모니터링에 관한 것이다.
트래픽 모니터링/텔레메트리를 위한 몇몇 현재 널리 사용되는 메커니즘들은 텔레메트리를 수집하고 수집된 텔레메트리를 분석 시스템에 전달하기 위해 sFlow.org 컨소시엄으로부터의 sFlow(sampled flow), 미국 캘리포니아주 산호세 소재의 Cisco Systems®, Inc.로부터의 Netflow, 또는 이와 유사한 것과 같은 확립된 프로토콜들을 사용하는 것을 포함한다. 분석 시스템은 텔레메트리에 대해 네트워크 보안 애널리틱스(network security analytics)를 수행할 수 있다. 트래픽 데이터는 전형적으로 포트 미러링을 사용하는 물리적 스위치들, 물리적 스위치들/라우터들 내의 전용 하드웨어 엔진들을 사용하는 기본적인 필터링/통계 집계에 의해, 또는 특수 목적 트래픽 복제 하드웨어를 통해 수집된다.
현재, 발명자들은 범용 통신 플랫폼 상에서, 높은 패킷 처리 속도들로, 그리고 문제의 작업부하들에 대한 가시적 영향들 없이 회선 속도(line-rate)의 안전한 네트워크 보안 모니터링 능력을 제공하기 위한 공지된 해결책을 알지 못한다.
꼭 일정한 축척으로 그려져 있지는 않은 도면들에서, 유사한 도면번호들은 상이한 도면들에서의 유사한 컴포넌트들을 나타낼 수 있다. 상이한 문자 접미사들을 갖는 유사한 도면번호들은 유사한 컴포넌트들의 상이한 인스턴스들을 나타낼 수 있다. 도면들은 일반적으로, 제한으로서가 아니라 예로서, 본 문서에서 논의되는 다양한 실시예들을 예시하고 있다.
도 1은 소프트웨어 메커니즘들만을 사용하는 보안 모니터링을 위한 시스템의 일 실시예의 다이어그램을 연결 라인들과 함께, 예로서, 나타낸 도면.
도 2는 하드웨어 가속을 포함하는 시스템의 일 실시예의 다이어그램을, 예로서, 나타낸 도면.
도 3은 하드웨어 가속을 위한 시스템의 일 실시예의 개략도를, 예로서, 나타낸 도면.
도 4는 도 3에 도시된 더 큰 시스템의 일부분을 형성하는 더 작은 시스템의 분해도를, 예로서, 나타낸 도면.
도 5은 시스템의 일 실시예의 개략 다이어그램을, 예로서, 나타낸 도면.
도 6은 시스템의 일 실시예의 개략 다이어그램을, 예로서, 나타낸 도면.
도 7은 네트워크 보안 모니터링(NSM)을 하드웨어 가속시키는 방법의 일 실시예의 다이어그램을, 예로서, 나타낸 도면.
도 8은 시스템의 일 실시예의 블록 다이어그램을, 예로서, 나타낸 도면.
도 1은 소프트웨어 메커니즘들만을 사용하는 보안 모니터링을 위한 시스템의 일 실시예의 다이어그램을 연결 라인들과 함께, 예로서, 나타낸 도면.
도 2는 하드웨어 가속을 포함하는 시스템의 일 실시예의 다이어그램을, 예로서, 나타낸 도면.
도 3은 하드웨어 가속을 위한 시스템의 일 실시예의 개략도를, 예로서, 나타낸 도면.
도 4는 도 3에 도시된 더 큰 시스템의 일부분을 형성하는 더 작은 시스템의 분해도를, 예로서, 나타낸 도면.
도 5은 시스템의 일 실시예의 개략 다이어그램을, 예로서, 나타낸 도면.
도 6은 시스템의 일 실시예의 개략 다이어그램을, 예로서, 나타낸 도면.
도 7은 네트워크 보안 모니터링(NSM)을 하드웨어 가속시키는 방법의 일 실시예의 다이어그램을, 예로서, 나타낸 도면.
도 8은 시스템의 일 실시예의 블록 다이어그램을, 예로서, 나타낸 도면.
NSM을 가속화시키는 것에 관한 시스템들 및 방법들이 본원에서 논의된다. 하나 이상의 실시예는, 하드웨어 큐 관리자(hardware queue manager)(HQM)와 같은, 이러한 가속화를 개선시키는 하드웨어 솔루션들을 포함한다. 실시예들은 확장가능 운영자 네트워크들 내에서 플랫폼 능력들(통신 플랫폼 코어, 컴포넌트 블록들, CSME/ME/IE), NSM을 안전하게 디플로이(deploy)하기 위한 개량들, 및 진보된 비침습적 디버그 능력들(advanced non-intrusive debug capabilities)을 달성하는 데 도움을 줄 수 있다.
통신 플랫폼들이 네트워크 인터페이스 제어기(NIC)들/스위치들로부터의 단일 스트림 처리를 위해 최적화될 수 있다. 그렇지만, 네트워크 보안 모니터링(NSM), 플랫폼으로부터의 텔레메트리의 안전한 전달, 네트워크 모니터링을 수행하면서 SLA 민감도를 유지하는 것, 및 이와 유사한 것과 같은 운영 보안 메커니즘들은 모두가 네트워크 기능 가상화(Network Functional Virtualization)(NFV), LTE, 3GPP, vEPC(Virtual Evolved Packet Core), 및/또는 vCPE(Virtual Customer Premises Equipment) 네트워크 가시성에 도움을 줄 수 있는 태스크들이다. 따라서, 이러한 문제들을 해결하는 것은 플랫폼에 대한 작업부하들을 줄이는 데 도움을 줄 수 있다.
본원에서 논의되는 실시예들은 이 작업부하 및 가시성 갭을, 이 갭들 중 하나 이상을 해결할 수 있는 일반적 메커니즘을 제공하는 것에 의해, 해결하는 데 도움을 줄 수 있다. 하나 이상의 실시예는 CSME(Converged Security and Manageability Engine), ME(Management Engine), IE, 및 SGX(Software Guard Extensions), 그리고 전기 또는 전자 컴포넌트들(예컨대, HQM, 캐시 제어기, 암호 프로세서, 또는 이와 유사한 것)/FPGA(Field Programmable Gate Array) 기반 보안 및 압축 처리와 같은 플랫폼 신뢰 요소(platform trusted element)들을 안전하게 바인딩(bind)할 수 있다.
스위칭 기능들이, 미국 매릴랜드주 포레스트힐 소재의 Apache® Software Foundation으로부터의 OvS®(Open vSwitch), 또는 라우터 소프트웨어 등을 사용하여, VM(Virtual Machine)들 사이의 서버들 내로 확장됨에 따라, 동일한 액션들을 소프트웨어로 수행하는 것은 매우 비효율적이며 플랫폼 패킷 처리 열화를 초래한다. 이 열화가, 예를 들어, 테넌트(tenant)들(예컨대, IaaS(infrastructure as a service) 테넌트들) 또는 서비스 소비자들에게는 현저할 수 있다. 포트 미러링을 수행하는 것, SPAN(switched port analyzer) 및/또는 TAP(Terminal Access Point)를 사용하는 것, 그리고 이어서 현재의 통신 플랫폼 소프트웨어 전용 메커니즘들을 사용하는 NSM 트래픽 보호(예컨대, 암호화, 소스 인증 등)를 사용하는 것은 많은 코어들에 걸쳐 많은 컴퓨트 사이클(compute cycle)들을 소비하고 코어간 통신을 증가시킨다. 100 Gbps(Gigabits per second)를 초과하고 2020년경에 400 Gbps에 도달할 것으로 예상되는, 최신 서버들에서의 패킷 처리의 증가하는 속도를 고려하면 이것은 지속가능하지 않다.
하드웨어 가속이 없는 경우, 평문 트래픽 인그레스 대 트래픽 이그레스의 현재의 성능 레벨이 저하되고 성능이 열화되며, 이는 플랫폼 성능 전체에 영향을 미치고, 확장성을 제한하며, 테넌트 부하 능력들(예컨대, 대역폭)을 한정하거나 열악한 SLA(Service Level Agreement) 전달을 가져올 수 있다.
주의 깊게 설계된 소프트웨어 프레임워크에서 이 능력들을 오프로딩하는 것에 의해 그리고 기존의 HQM에 대한 수정들을 통해, 안전한 네트워크 모니터링 및 디버그 능력들이, 개선된 시스템 성능을 통해, 최소의 통신 플랫폼 소프트웨어 사이클들을 소비하고 HQM 오프로드를 이용하며 개선된 고객 가치를 제공하게 구축될 수 있다. 그에 부가하여, SGX 및 CSME와 같은, 통신 플랫폼 보안 기술들은 복제된 트래픽을 포킹(forking)(예컨대, "티잉(teeing)")하기 위한 HQM 트래픽 정책들 및 메모리 구역들을 안전하게 프로비저닝하는 데 사용될 수 있다. SGX 및 VM 기반 메모리 암호화 기술들은 어느 정도의 기밀성을 제공할 수 있지만, 다른 VM들/가상 네트워크 기능(VNF)들, 시스템 관리자, NFV 인프라스트럭처 관리자들, 또는 이와 유사한 것으로부터 정책 경로 및 정책 처리를 보호하지 않는다. NFV는 일반적으로 네트워크 기능들의 소프트웨어 구현들을 소프트웨어의 동작들을 수행하는 데 사용되는 하드웨어 네트워크 기능들로부터 분리시킨다.
NSM은 기존의 3GPP/LTE 네트워크들에서 유용한 보안 제공자일 수 있다. NSM은, 그 중에서도 특히, 멀웨어 침범들, 이상(anomaly)들, 및 제로 데이 공격들과 같은, 보안 위협들에 대한 네트워크 텔레메트리를 안전하게 모니터링하는 능력을 포함할 수 있다. 기존의 LTE/3GPP 시스템들이 NFV 및 SDS(Software Defined Systems)로 이동함에 따라, 기존의 시스템들에서와 동일한 회선 속도 및 동일한 기능성을 유지하면서 NSM이 제공될 수 있다.
플랫폼 상의 코어들의 개수가 증가함에 따라, vEPC 또는 vCPE와 같은 모든 원격 통신 인프라스트럭처가 동일한 플랫폼 상에서 실행 중일 것으로 예상될 수 있다. 따라서, 플랫폼 상의 vEPC 및 vCPE 네트워크들을 모니터링하는 것이 유용할 수 있다. 현재, 적어도 일부 플랫폼들 상에서의 이 처리 전체가 플랫폼의 외부에 있는 물리 네트워크들 상에서는 보이지 않는다. 따라서, 플랫폼들 상에 NSM과 같은 컴포넌트들을 추가하는 것은 보안을 강화하는 데 도움을 줄 수 있다. 달리 말하면, VNF들(특정 네트워크 기능들을 수행하는 VM들)이 서비스 기능 체인(Service Function Chain)(SFC)들에 체이닝(chain)되는 환경들에서, 각각의 스테이지 사이의 트래픽을 검사 및 디버그할 수 있는 것은 풀 스케일 디플로이먼트(full-scale deployment)들에 대한 보안을 개선시키는 데 도움을 줄 수 있다. 이 문제들 중 하나 이상이 하나 이상의 실시예에 의해 해결될 수 있다.
컴퓨트(예컨대, 중앙 처리 유닛(CPU)) 사이클들을 절감하기 위해, 예컨대, 상위 레벨 컴퓨트 잡(compute job)들 또는 패킷 처리 작업부하로부터 사이클들을 빼앗아 오지 않는 것을 위해, 범용 방식으로 동작들을 가속화시키는 것이 도움이 될 수 있다. 이하의 섹션들에 기술되는 기법들을 사용하여, 실시예들은 이 목표들을 달성하는 데 도움을 줄 수 있다.
기존의 물리 네트워크 기능들/시스템들 외에, NFV/SDN 시스템들에 대해 해결되어야만 하는 몇몇 요건들 및 문제점들은 다음과 같이 요약될 수 있다. 이 보안 및 성능 요건들은 통신 플랫폼들 상에의 NFV/SDN 디플로이먼트들을 위해 운영자들과 함께 개발 중인 ETSI(European Telecommunications Standards Institute) NFV 규격들(예컨대, ETSI NFV SEC013, SEC012, SEC001)에서 가져온 것이다.
1. NFV 작업부하들이 플랫폼들에 걸쳐 마이그레이션될 수 있다. 이것은 NSM 능력들이 작업부하들과 함께 복제/마이그레이션될 수 있다는 것을 의미한다. 따라서, 작업부하가 마이그레이션될 수 있는 모든 플랫폼 상에 NSM이 항상 존재할 수 있다.
2. NFV/SDN 플랫폼들은 이종 작업부하들(예컨대, vEPC, vCPE, 비디오, 웹, 테넌트 애플리케이션들 등을 포함함)을 지원한다. 게다가, NFV 제어 및 데이터 플레인들이 완전히 상이한 플랫폼들 상에 있다. 이 조건들 모두는 NSM 성능을 열화시키고, SLA 및 트래픽에 영향을 미치며, NSM이 모든 플랫폼들 상에서 결정론적 방식으로 수행되어, 낮은 지터로 SLA들을 지원하는 것을 유용하게 만들 수 있다.
3. (ETSI NFV SEC013 표준 규격(normative specification)으로부터의) NSM에 대한 보안 요건들은, NSM 정책을 안전하게 전달하고 구현할 수 있는 것 등을 위해, 플랫폼 신뢰 능력들의 활용을 요구한다.
실시예들은, 예컨대, 물리 네트워크들 상에 오버레이되는 동적, 가상 네트워크들로부터, 텔레메트리를 수집하는 것에 의해 기능할 수 있다. 하나 이상의 실시예는 오픈 가상 스위치들/라우터들로부터의 정책 엔진들을 통신 플랫폼 내에 통합시킨다. 하나 이상의 실시예는, 부가적으로 또는 대안적으로, 이 기능들을 제공하기 위해 HQM 디바이스에서 패킷 포킹(때때로, 본 기술분야에서 "티잉"이라고 알려져 있음) 능력들을 사용할 수 있다. 이러한 실시예들은 CPU 사이클들을 절감하고 부가의 NSM 능력들을 가능하게 하여, 전체적인 시스템 처리 속도를 개선시키는 데 도움을 줄 수 있다. 다수의 스트림들로의 트래픽 포킹은, 예를 들어, 복호화, 역캡슐화, 및 처리 이후, 재암호화 또는 압축 이전에 트래픽의 분할(division)을 포함할 수 있다.
현재, 발명자들은 범용 통신 플랫폼들 상에서, 예컨대, 문제의 작업부하들에 대한 가시적 영향들 없이, 높은 패킷 처리 속도들로 회선 속도의 안전한 NSM 능력을 제공하기 위한 공지된 해결책을 알지 못한다. 현재의 통신 플랫폼들은 NIC들/스위치들로부터의 단일 스트림 처리를 위해 최적화되어 있다. NSM, 플랫폼으로부터의 텔레메트리의 안전한 전달, NSM을 수행하면서 SLA 민감도를 유지하는 것과 같은 운영 보안 메커니즘들은 NFV/LTE vEPC, vCPE, 네트워크 가시성을 보증하는 데 도움을 줄 태스크들이다.
도 1은 보안 모니터링을 위한 시스템(100)의 일 실시예의 다이어그램을 시스템 연결들과 함께, 예로서, 예시하고 있다. 일부 실시예들에서, 소프트웨어 메커니즘들만이 사용된다. 시스템(100)은 보안 모니터링을 수행하기 위해 하드웨어 가속을 꼭 사용하지는 않는다. 예시된 바와 같은 시스템(100)은 NFV 인프라스트럭처(102), 오케스트레이터(orchestrator)(104), OSS(operations support system)/BSS(business support system)(106), VNF 모니터(VNFM)(108), VIM(virtualized infrastructure manager)(110), 및 네트워크 분석 도구들(112)을 포함한다.
NFV 인프라스트럭처(102)는, 예를 들어, 통신 서비스들을 생성하기 위해 서로 체이닝될 수 있는 네트워크 노드 기능들을 가상화한다. 예시된 바와 같은 NFV 인프라스트럭처(102)는 가상 네트워크 기능(VNF)들(116A, 116B, 116C, 및 116D), 스위치/라우터(118), 및 운영자 인프라스트럭처(120)를 포함한다.
VNF들(116A 내지 116D)은 이전에는 전용 하드웨어에 의해 수행된 가상화된 태스크들이다. VNF들(116A 내지 116D)은 이전에는 전용 하드웨어에 의해 수행된 이 동작들을 소프트웨어 인스턴스화들로 이동시킨다. VNF들(116A 내지 116D)은 호스트(122)의 하드웨어 및/또는 소프트웨어 프로그래밍에 의해 동작한다.
스위치/라우터(118)는 플랫폼들(126A 및 126B) 및/또는 VNF들(116A 내지 116D) 사이의 통신 능력을 제공한다. 스위치는 컴퓨터들 또는 다른 네트워크 디바이스들을 연결시킨다. 라우터는, 네트워크를 인터넷에 연결시키는 것 등에 의해, 제1 네트워크를 제2 네트워크에 연결시킨다. 라우터는 일반적으로 다른 네트워크에 제공되는 데이터(예컨대, 그 중에서도 특히, 요청, 메시지, 또는 응답)의 경로를 관리한다.
운영자 인프라스트럭처(120)는 다른 운영자의 VNF들을 호스팅하고, 호스트(122)(예컨대, 운영 체제(OS), 클라우드 OS, 및/또는 하이퍼바이저), 펌웨어 인터페이스(124)(예컨대, UEFI(unified extensible firmware interface) 또는 BIOS(basic input/output system)), 복수의 플랫폼들(126A 및 126B)(예를 들어), 및 인터커넥트 회로부(128)(예컨대, 입력/출력(I/O) 포트들, 네트워크 인터페이스 제어기(network interface controller)(NIC), 스위치, 호스트 패브릭 인터페이스(host fabric interface)(HFI), 또는 이와 유사한 것)를 포함한다.
호스트(122)는 VNF들(116A 내지 116D)에 의해 그들의 동작들을 수행하기 위해 사용되는 리소스들을 제공하기 위한 하드웨어 또는 소프트웨어를 포함할 수 있다. 호스트는 VNF들이 동작할 수 있는 OS, 클라우드 OS, 하이퍼바이저, 또는 이와 유사한 것을 포함할 수 있다.
펌웨어 인터페이스(124)는 UEFI, BIOS, 또는 이와 유사한 것을 포함할 수 있다. 펌웨어 인터페이스(124)는 호스트(122)와 펌웨어(예컨대, VNF(116A 내지 116D)) 사이의 소프트웨어 인터페이스를 정의한다.
플랫폼(126A 및 126B)은 통신 네트워크에 연결된 디바이스들에 대한 통신 기능성을 제공한다. 플랫폼(126A 및 126B)에 의해 제공되는 기능성의 예들은, 그 중에서도 특히, 음성 회선들 및 인터넷 액세스, 그리고 음성 및 인터넷 액세스를 지원하기 위한 동작들을 포함한다. 플랫폼(126A)은 메모리(130)를 포함한다(플랫폼(126B)도 메모리(130)를 포함하지만, 시스템(100)의 뷰를 모호하게 하지 않기 위해 스토리지는 도시되지 않았다). 플랫폼들(126A 및 126B)은 인터커넥트 회로부(128)에 의해 통신가능하게 결합될 수 있다.
오케스트레이터(104)는 리소스 및/또는 네트워크 서비스 오케스트레이션을 수행한다. 오케스트레이터(104)는, 다른 방식으로 분산된 NFV 환경에서 서비스를 생성하는 것 등을 위해, VNF들(116A 내지 116D)에 의해 제공되는 기능들을 바인딩한다. 오케스트레이터(104)는 적절한 컴퓨트, 스토리지, 및/또는 다른 네트워크 리소스들이 네트워크 서비스를 제공하는 데 이용가능하도록 보장하는 데 도움을 줄 수 있다. 오케스트레이터(104)는 인프라스트럭처(102)의 리소스들을 공유하는 VNF들(116A 내지 116D)을 권한부여(authorize), 조정(coordinate), 해제(release), 및 통제(govern)할 수 있다.
OSS/BSS(106)는 텔레콤 서비스 제공자들에 의해 그들의 네트워크들을 관리하기 위해 사용되는 컴퓨터 시스템들이다. OSS/BSS(106)는 네트워크 인벤토리, 구성, 장애 관리(fault management), 및/또는 서비스 프로비저닝을 지원할 수 있다.
가상 네트워크 기능 관리자(virtual network function manager)(VNFM)(108)는 VNF 능력을 제공하기 위해 오케스트레이터(104) 및 VIM(110)과 협력한다. VNFM(108)은 VNF들(116A 내지 116D)을 인스턴스화하고, VNF들(116A 내지 116D)을 스케일링하며, VNF들(116A 내지 116D)을 업데이트 및/또는 업그레이드하고, 그리고/또는 VNF들(116A 내지 116D)을 종료(terminate)시킬 수 있다. VNFM(108)은 단일의 VNF 또는 다수의 VNF들을 관리할 수 있다. VNFM(108)은 VNF(116A 내지 116D)를 지원하는 가상화된 리소스들을 유지한다.
예시된 바와 같은 VIM(110)은 SDN 제어기(114)를 포함한다. VIM(110)은 인프라스트럭처(102)의 컴퓨트, 스토리지, 및 다른 네트워크 리소스들을 제어 및 관리한다. VIM(110)은, 예컨대, 인프라스트럭처(102)를 포함할 수 있는, 하나 또는 복수의 인프라스트럭처에서의 인프라스트럭처를 핸들링할 수 있다. VIM(110)은, 시스템 리소스들의 사용을 개선 및 최적화하는 데 도움을 주는 것 등을 위해, 어느 가상 리소스들이 어느 물리 리소스들을 할당받는지의 리스트를 유지하고, (액세스 제어를 위한) 보안 그룹 정책들을 관리하며, NFV 하드웨어 리소스들 및 소프트웨어 리소스들의 리포지토리를 관리할 수 있다.
SDN 제어기(114)는, 예컨대, 네트워크들 내에서, 흐름 제어를 관리하는 애플리케이션이다. SDN 제어기(114)는 서버 또는 다른 네트워크 리소스가 스위칭된 패킷 목적지를 선택할 수 있게 하여, 패킷을 어디로 송신할지를 스위치에 알려줄 수 있게 한다. SDN 제어기(114)는 네트워크 하드웨어의 제어 플레인을 취하여 이를 소프트웨어로서 실행한다. SDN 제어기(114)는 모니터링 정책들을 분배(distribute)할 수 있다.
네트워크 분석 도구들(112)은, NSM 기능성과 같은, 텔레메트리 데이터를 분석하기 위한 기능성을 제공할 수 있다. 네트워크 분석 도구들(112)은 vEPC, vCPE NFV 애널리틱스, 데이터 저장, 네트워크 이상 탐지, 및/또는 멀웨어 탐지, 또는 이와 유사한 것을 포함할 수 있다.
네트워크 보안 모니터링(NSM) 트래픽은 화살표들(132, 134, 136, 및 138)로 표시된다. 이 NSM 트래픽의 흐름이 본원에서 논의되는 실시예들에 의해 "가속화"될 수 있다. VIM(110)의 SDN 제어기(114)는, 화살표들(138 및 132)의 조합으로 표시된 바와 같이, VNF(116D)(예컨대, 보안 모니터링(SecMon) VNF)에 정책을 제공할 수 있다. VNF(116D)에 제공된 트래픽은 안전하게 종료될 수 있다. VNF(116D)는 (화살표(132)로 표시된 바와 같이) 스위치/라우터(118) 상의 트래픽(예컨대, 모든 트래픽)을 모니터링할 수 있다. VNF(116D)는 제공된 모니터링 정책을 트래픽에 적용할 수 있다. VNF(116D)는, 모니터링 정책에 기초하여, 모니터링된 트래픽을 (화살표(134) 또는 화살표들(140 및 138)로 의해 표시된 바와 같이) 인터커넥트 회로부(128)에 제공한다. 인터커넥트 회로부(128)는, 화살표(136)로 표시된 바와 같이, 모니터링된 트래픽을 네트워크 분석 도구들(112)에 제공한다. 네트워크 분석 도구들(112)은 보안 및 네트워킹 애널리틱스 시스템들, 메타 데이터 수집기들, 네트워크 프로파일링, 테넌트별 및/또는 흐름별 모니터링 시스템들, 및/또는 테넌트상 모니터링 시스템(onto tenant monitoring system)들을 포함할 수 있다.
도 1의 NSM 방식은 상당한 전체적인 플랫폼 열화를 초래하는데, 그 이유는 스위치/라우터(118)로부터의 패킷들을 모니터링하는 것, 텔레메트리 프로토콜들에 적합하도록 패킷들을 재포맷팅하는 것, 및 패킷들을 안전하게 번들링하여 외부 시스템들에 전달하는 것을 책임지고 있는 VNF(116D)에 의해 귀중한 CPU 사이클들이 소비되기 때문이다. 이러한 NSM 동작들은 플랫폼(들)(126A 및 126B)의 이용가능한 컴퓨트 리소스들의 25 퍼센트(또는 그 이상)을 소비할 수 있다.
다른 화살표들(도 1에서 참조 번호로 라벨링되지 않음)은 데이터, 시그널링 제어 트래픽, 물리 네트워크로부터 플랫폼 상의 가상 네트워크로의 또는 플랫폼 상의 VNF들/VMS들 사이의 트래픽을 나타낼 수 있다.
도 1은 플랫폼 상에서 실행 중인 VM간 통신(VM-to-VM communication)을 지원하는 가상 스위치의 일 예를 제공한다. 도 1의 예에서, VM들은, 예를 들어, 패킷의 소프트웨어 기반 복사를 통해 인트로스펙션 능력(introspection capability)을 잠재적으로 제공할 수 있는 소프트웨어 엔티티들이다. VNF(116A) 및 VNF(116B)가 통신하고 있고, 이 둘 사이의 통신이 디버그되어야만 하는 것을 생각해보자. 예를 들어, VNF(116A)는 패킷 게이트웨이일 수 있고 VNF(116B)는 서비스 게이트웨이일 수 있다. VNF들(116A 및 116B) 사이의 패킷들의 소프트웨어 복사(software copy)이지만, 소프트웨어 복사(software copying)는, 스위치/라우터(118) 자체가 이러한 복사를 수행하는 데 종종 느리다는 점에서, 몇 가지 문제점을 갖는다. 따라서, 이러한 복사는 시스템(100)의 처리율(throughput)을 감소시킬 수 있다. 다른 문제점은 이 디버그 능력을 추가하는 것이 시스템(100)에 부가의 부담을 추가할 수 있다는 것이다. 이와 달리, 이 능력을 갖는 HQM은 시스템(100)으로부터의 복사를 HQM의 큐에 의해 관리되도록 오프로드할 수 있어, 컴퓨트 사이클들 및 전력을 절감할 수 있다. 게다가, 모든 복사 및 관리를 소프트웨어로 실행하는 것에 의지할 필요 없이 전통적인 가상 스위치의 인트로스펙션 능력이 유지될 수 있다. HQM을 사용하는 것은 그 기능성 - 구체적으로는 트래픽 큐잉 및/또는 복사 - 을 하드웨어 내로 가져오는 방식이다. 따라서, 큐에서의 트래픽을 사용하여 디버그 가시성(debug visibility)을 여전히 유지하면서, 큐 관리가 하드웨어로 오프로드될 수 있다.
단일 머신 상에 디플로이된 VM들 전부를 포함하지는 않고, 오히려, 이를테면, 데이터 센터 내의 상이한 랙들 및 상이한 노드들에 걸쳐 디플로이된, 모두가 서로 통신하는, 10개의 VM들의 체인을 포함하는, 도 1의 것과 같은, 복잡한 환경을 생각해보자. 이어서, 이를테면, VM7과 VM8 사이의 트래픽을 검사할 수 있기 위해, 그들의 위치가 알려져 있어야만 한다. VM7로부터의 트래픽을 포킹하고 이를 모니터링 VM에 피드하며 이를 VM8에 전달하는 것이 바람직하다. 이러한 동작은 이러한 트래픽을 복사 및 포킹할 VM들의 위치들에 대한 스케줄러 타이-인(scheduler tie-in) 역시 포함할 수 있다.
도 2는 하드웨어 가속을 포함하는 시스템(200)의 일 실시예의 다이어그램을, 예로서, 예시하고 있다. 시스템(200)이 하드웨어 가속을 사용하는 NSM에 대한 시스템 흐름 라인들과 함께 예시되어 있다. 도 1의 데이터 흐름 라인들 중 일부는 도 2에서의 데이터 흐름 라인들의 뷰를 모호하게 하지 않기 위해 도 2에서 제공되지 않는다. 시스템(200)은 도 1에 예시된 것과 동일한 컴포넌트들 전부를, 일부 부가의 컴포넌트들과 함께, 포함한다(도 2에서의 다른 컴포넌트들의 뷰를 모호하게 하지 않기 위해, 펌웨어 인터페이스(124)가 도 2에 도시되지 않았다는 것에 유의함). 부가의 컴포넌트들은 플랫폼(126A)의 일부이고, 보안 회로부(210), 메모리 큐들(214), 큐 정책 레지스터들(216), 코어들(218), 및 캐시들(220)을 포함한다.
시스템(200)을 사용하는 NSM은, 화살표들(138 및 132) 및 화살표들(202 또는 204)로, 각각, 표시된 바와 같이, 모니터링 정책을 VNF(116D) 및 보안 회로부(210)에 제공하는 것을 포함할 수 있다. 하나 이상의 실시예에서, 보안 회로부(210)는 스위치/라우터(118) 상의 모든 트래픽을 모니터링할 수 있고, 따라서 호스트(122)로부터 CPU 작업(CPU work)을 오프로딩할 수 있다.
플랫폼 보안 회로부(210)(예컨대, SGX, ME, IE 등)는 보안 회로부로부터 프로세서 또는 칩셋 상에서 동작 중인 다양한 VNF들에 정책을 전달하는 데 사용될 수 있는 안전한 대역외 온-다이 또는 온-패키지 또는 인트라-패브릭 채널(들)을 가질 수 있다. 보안 회로부(210)는 SDN 제어기(114)로부터 정책들을 수신하고 특정 구성 커맨드들을 온-프로세서 블록들(예컨대, 캐시들, 3차원 크로스포인트(xpoint)(3DXP) 또는 다른 메모리, NIC들, 스위치(들), 스토리지 등)로 변환(translate)하며 상이한 커맨드들을 상이한 컴포넌트 블록들에게 송신할 수 있다.
각각의 컴포넌트(앞서 언급된 것들을 포함함)는 하나 이상의 큐(208)를 포함할 수 있다. 큐들은 각각의 컴포넌트에 의해 제공되는 리소스들을 포함하는 논리적 구성가능 세트들이다. 따라서, 캐시는 다수의 큐들을 서빙하고 하나 이상의 VNF/VM에 할당될 수 있다. 메모리, NIC, 포트들 등에 대해 동일한 배열이 실시될 수 있다. SDN 제어기(114) 및/또는 보안 회로부(210)는 플랫폼의 시작에서 그리고 선택적으로 플랫폼(126A 및 126B)이 하나 이상의 VNF(116A 내지 116D)를 실행하는 동안 이 큐들(208)을 구성할 수 있다.
큐들(208)을 사용하여, 플랫폼 컴포넌트 리소스들은 따라서 각각의 VNF에 할당될 수 있는 플랫폼 리소스 버킷들의 세트들로 "세그먼트화"될 수 있다. 하나의 할당 기준은 계획된 또는 계약된 SLA 전달이다. 플랫폼 세그먼트화된 리소스들은 테넌트별로, 흐름별로, 그리고/또는 유료 구독 모델별로 할당될 수 있다.
큐들(208)은 데이터(네트워크 트래픽을 포함함)를 처리할 수 있다. 큐들(214)은 정책별로 하나 이상의 다른 큐로 복제될 수 있다. 환언하면, 보안 회로부(210)로부터 컴포넌트 블록들로 전달된 정책에 따라, 컴포넌트 블록들은 큐들 전체를 NSM을 지원하거나 NSM을 위해 소유된 및/또는 전용된 다른 큐들 상에 복제할 수 있다.
VNF(116D)는 (예컨대, 애널리틱스 등을 위해, VNF(116D)를 프런트 엔드 소프트웨어 프로세서로서 사용하여) 구성가능한(예컨대, 소프트웨어 구성가능한) 추가 처리 및 분석을 위해 큐들(214)을 판독할 수 있다. 다른 실시예들에서, (예컨대, 정책별로) 큐(들)(214)는 분석 도구들(112)에 의한 외부 분석 및 모니터링을 위해 외부 네트워크로 직접 플러시(flush)될 수 있다. 또 다른 실시예들에서, 애널리틱스 및 분석은 프런트 엔드 소프트웨어 처리를 수행할 수 있는 VNF(116D) 그리고 이어서 분석 도구들(112)의 일부로서 실행될 수 있다.
하나 이상의 실시예에서, 인터커넥트 회로부(128)는 시스템(100)에서 사용되는 단일의 테이블 대신에 2개의 복제된(duplicate)/미러링된(mirrored) 디스크립터 테이블에 기입하도록 설계될 수 있다. 테이블들 중 하나는 일반적인 I/O 태스크들에 대해 사용될 수 있고 다른 하나는 관련 정책에 기초하여 검토하기 위해 VNF(116D)에 의해 사용될 수 있다. 하드웨어 및/또는 소프트웨어 둘 다의 설계를 수정하는 것에 의해, 네트워크 디바이스 또는 소프트웨어 스택 처리 중 어느 하나에서 오버 헤드가 거의 없이 전체 회선 속도(full line-rate) 보안 모니터링이 달성될 수 있다. 유사한 접근법이 스토리지 또는 다른 적용분야들에 대해 이용가능하게 될 수 있다.
큐 정책 레지스터들(216)은 (메모리 큐들(208) 중) 어느 큐들이 어느 코어들(218)에 데이터를 제공하는지를 표시하는 데이터를 포함한다. 복제된 트래픽 및 다른 트래픽이 제공되어야 하는 코어를 결정하기 위해 큐 정책 레지스터들(216)이 판독될 수 있다.
코어들(218)은, 예컨대, 처리 코어들 및/또는 디버그 코어들을 포함할 수 있는, 처리 코어들이다. 코어들(218)은 VNF들(116A 내지 116D)을 구현할 수 있다. 메모리 큐들(208). 캐시들(220)은 코어들(218)에 의해 그들의 동작들을 수행하는 데 사용될 명령어들 및/또는 데이터를 저장할 수 있다.
시스템(200)은 데이터 센터 레벨 관리자(data center-level administrator)(또는 다른 엔티티)가 복잡한 서비스 체인에서의 데이터를 디버그, 모니터링, 또는 다른 방식으로 볼 수 있는 인터페이스를 빌드(build)하는 방식을 제공한다. 이것은 오케스트레이터(104), SDN 제어기(114)로부터 도달하고, 예를 들어, VM7과 VM8 사이의 트래픽을 모니터링하며 그들의 트래픽 패턴이 정상인지 여부 또는 시스템(100)에 구성 오류(misconfiguration)가 있는지 여부를 결정할 수 있는 편리한 방식이다.
보안 회로부(210)는, 예를 들어, 한 쌍의 VM 사이의 트래픽 흐름들을 복제할 수 있다. 이러한 구성은 시스템 상에서 동작할 필요가 있는 소프트웨어들 각각에 대한 커스텀 인터페이스를 꼭 빌드할 필요 없이 이 종류의 디버그를 수행할 수 있는 능력을 제공할 수 있다.
시스템(200)은 문제가 될 수 있는 소프트웨어 버저닝 문제들에 대한 회피책(work around)을 제공할 수 있다. 인터페이스의 다음 버전에서 변경되어 모니터링 소프트웨어 시스템들에 혼란을 야기하는, 하나의 인터페이스를 지원하는 어떤 버전의 OSS를 생각해보자. 암호화 기능, 예를 들어, SGX는 VM들의 암호화를 유지하고 가시성을 그래도 여전히 제공하는 데 도움을 줄 수 있다. 따라서, 그 시점에서 보안 회로부(210)는 복제를 수행하도록 신뢰될 수 있다.
하나 이상의 실시예에서, 인터커넥트 회로부(128)는 복제된 디스크립터 테이블들을 생성할 수 있다. 이러한 디스크립터 테이블 복제는, 아마도 HQM가 존재하지 않는 경우, 디버그, 모니터링, 또는 이와 유사한 것을 수행하는 데 도움을 주는 하나의 방식일 수 있다. 이것은 NIC가, 예를 들어, 트래픽 흐름들을 복제하는 데 사용될 수 있는 하나의 방식이다.
도 3은 NSM을 하드웨어 가속시키기 위한 시스템(300)의 일 실시예의 개략도를, 예로서, 예시하고 있다. 예시된 바와 같은 시스템(300)은 NIC(302), 생성자(producer)(304), 제1 HQM(306), 워커(worker)들(308A, 308B, 308C, 및 308D), 제2 HQM(310)(HQM(306)과 동일하거나 상이함), 워커들(308E, 308F, 308G, 308H, 및 308I), 제3 HQM(312)(HQM(306 및/또는 310)과 동일하거나 상이함), 소비자(314), 다른 NIC(316)(NIC(302)와 동일하거나 상이함), 및 캐시(318)(예컨대, L3 캐시)를 포함한다.
NIC(302)는, 플랫폼(126A 및 126B)과 같은, 컴퓨트 디바이스를 네트워크에 연결시킨다. NIC는, 하나 이상의 실시예에서, HFI를 포함할 수 있다. NIC(302)는, 데이터(301)로 표시된 바와 같은, 처리될 데이터를 수신한다. 데이터(301)는 NIC(302)에 의해 캐시(318) 및 생성자(304)에 제공될 수 있다. 생성자(304)는 데이터(301)를 워커들(308A 내지 308I)과 호환되는 포맷으로 변환한다. 생성자(304)는 데이터에 대해 어떤 동작들이 수행되어야 하는지를 표시하기 위해 데이터에 디스크립터들을 추가할 수 있다. 변환된 데이터는, 예컨대, 라인(307)을 따라, HQM(306)에 제공될 수 있다.
HQM(306, 310, 및 312)은 큐(320, 322, 및 324)를 포함한다. HQM들(306, 310, 및 312)은 통신 요청들을 관리하고, 소프트웨어 루틴들에 의존하지 않으면서 코어들 간의 데이터를 집계(aggregate)할 수 있다. HQM들(306, 310, 및 312)은 NSM 데이터의 복제 및 워커들(308A 내지 308I)로의 분배를 관리할 수 있다. HQM(306, 310, 및 312)은, 예컨대, 디버그 및/또는 탐지(또는 다른 NSM) 목적으로, 데이터를 복제 및 티잉할 수 있다. 나중에 보게 될 것인 바와 같이, 도 4는 HQM(310)의 분해도를 예시하고 있다. HQM(306)은 제1 레벨 HQM인 것으로 간주된다. HQM(310)은 제2 레벨 HQM인 것으로 간주된다. HQM(312)은 제3 레벨 HQM이다.
HQM(306, 310, 및 312)은, CPU 코어가 16-비트 디스크립터를 생성하고 명령어를 사용하여 데이터를 송신하는 것에 의해 패킷을 송신할 수 있도록, 오프로드 가속화 엔진을 형성한다. HQM(306, 310, 및 312)은 이어서 최대 2개의 동작: (1) 하나의 소스로부터의 흐름을 2개의 출력 큐로 포킹하는 것, 및 (2) 성능 메트릭들을 수집하고 로깅하는 것을 수행할 수 있다. 하나의 또는 양쪽 동작은 코어 동작들을 방해함이 없이 수행될 수 있다. 포킹된 출력 큐는 이어서 다른 코어에 의해 (송출되도록, 사실상 HQM(306, 310, 및 312)이 인트로스펙션을 하드웨어 가속시키기 위해 관여된 포트 미러링의 한 버전), 또는 관리 인터페이스(예컨대, SDN 제어기 또는 다른 인터페이스)를 통해 송출되도록 IE에게로 판독된다. HQM(306, 310, 및 312)은 큐 관리를 오프로드할 수 있고, 디버그, (NFV 표준 ETSI NFV SEC013에 대한) 보안 모니터링, 네트워크 성능 모니터링(ETSI NFV 규격 PER001), 트래픽 엔지니어링, 또는 이와 유사한 것을 위해 트래픽을 포킹(예컨대, "티잉")하는 데 도움을 줄 수 있다. 포킹은 제1 연결을 통해 데이터를 수신하고, 제1 연결에 결합된 컴포넌트에 의해, 수신된 데이터의 적어도 일부분을 적어도 2개의 다른 컴포넌트에 제공하는 것이다. 이와 유사하게, 통계치들은, 예를 들어, 전체 트래픽 스트림이 복제될 것을 요구함이 없이, 드롭된 패킷들을 탐지하는 데 도움을 줄 수 있다. 많은 통계치들이 HQM(306, 310, 및 312)에 이미 유지될 수 있고; 큐 엔트리들의 개수에 대한 새로운 성능 카운터들이 큐들에 걸쳐 분할될 수 있다. 하나 이상의 실시예에서, 통계치들 및/또는 다른 카운터들이, 보안 이유들 등으로, 게스트들이 아닌 OS/VMM에 의해서만 액세스가능할 수 있다. 적용가능한 기존의 프로토콜들은 SNMP(simple network management protocol), RLOG(reliable event logging), Netflow, IPFIX(internet protocol flow information export), sFlow, IETF(Internet engineering task force) 표준들, 또는 이와 유사한 것을 포함할 수 있다.
워커들(308A 내지 308D)은 코어들(218)이다. 워커들(308A 내지 308D)은 제1 레벨 워커들이다. 워커들(308A 내지 308D)은, 라인(309)으로 표시된 바와 같이, 큐(320)로부터 데이터를 수신한다. 워커들(308A 내지 308D)에 의해 수행되는 동작들은, 그 중에서도 특히, 예컨대, 복호화, 캡슐화, 역캡슐화, 방화벽, 암호화, 복호화, 압축, 및/또는 압축해제 등을 포함할 수 있는, 예를 들어, 패킷별 작업(per-packet work)을 포함할 수 있다. 워커들(308A 내지 308D)에 의해 수행된 동작들의 결과는, 라인(311)으로 표시된 바와 같이, 제2 레벨 HQM(310)에 제공된다. 큐는 결과들을 일시적으로 저장하고, HQM(310)은 결과들을 제2 레벨 워커들(308E 내지 308I)에 제공한다. 제2 레벨 워커들(308E 내지 308H)은 패킷 검사(예컨대, 심층 패킷 검사(deep packet inspection)), 네트워크 주소 변환(network address translation), 침입 탐지, 광고 삽입, 라우팅, 또는 이와 유사한 것을 수행할 수 있다. 제2 레벨 워커들(308E 내지 308H)로부터의 결과들은, 라인(317)으로 표시된 바와 같이, 제3 레벨 HQM(312)에 제공될 수 있다. 워커가 스레드의 실행을 책임지도록, 스레드가 개별 워커와 연관될 수 있다.
하나 이상의 실시예에서, 워커들(308A 내지 308D)로부터의 결과들이, 라인(315)으로 표시된 바와 같이, 예컨대, 디버그 목적으로, 워커(308I)에 제공될 수 있다. 코어들의 제1 스테이지가 기능상의 버그(functional bug)를 갖는 경우들에서, 예컨대, 전통적인 소프트웨어 기반 가상 스위치(vswitch) 솔루션들(예컨대, 시스템(100))을 사용해 고속으로, 이 코어들을 디버그하는 것이 어렵다. 복잡한 멀티코어 VM들의 다수의 세트들이 함께 체이닝되어 있는 네트워크 서비스 기능 체인(SFC)들을 디버그하기 위해, 하드웨어 지원 디버그 능력들은, 수행 중인 동작들이 예상된 것이라고 검증하는 것 등에, 중요할 수 있다. HQM(310)은 디버그를 가능하게 하기 위해 하드웨어 확장들을 사용해 수정될 수 있다 - 추가 상세들은 도 4에서 제공된다 -.
HQM(312)은, 라인(319)으로 표시된 바와 같이, 데이터를 소비자(314)에 제공한다. 소비자(314)는 워커들(308E 내지 308H)로부터의 데이터를 수신기와 호환되는 형태로 변환한다. 소비자(314)는 변환된 데이터를, 라인(333)으로 표시된 바와 같이, NIC(316)에 제공한다.
워커들(308A 내지 308D)은, 라인(321)으로 표시된 바와 같이, 데이터를 캐시(318)에 제공할 수 있다. 워커들(308A 내지 308D)은, 라인(323)으로 표시된 바와 같이, 캐시(318)로부터 데이터를 수신할 수 있다. 워커들(308E 내지 308H)은, 라인(327)으로 표시된 바와 같이, 데이터를 캐시(318)에 제공할 수 있다. 워커들(308E 내지 308H)은, 라인(325)으로 표시된 바와 같이, 캐시(318)로부터 데이터를 수신할 수 있다. NIC(316)는 라인(331)을 따라, 시스템(300)이 지원하는 네트워크 상의 디바이스에게 전송되도록 하는 것 등을 위해, 캐시(318)로부터 데이터를 수신할 수 있다.
도 4는 도 3에 도시된 더 큰 시스템(300)의 일부분을 형성하는 더 작은 시스템(400)의 분해도를, 예로서, 예시하고 있다. 예시된 바와 같은 시스템(400)은 HQM(310)의 분해도를 포함한다. 예시된 바와 같은 HQM(310)은 하나 이상의 큐(322), 큐 엔트리 복제 회로부(402), 및 데이터 복사 회로부(404)를 포함한다. 복제된 트래픽(406)은 HQM(310)에 의해 워커(308I)에 제공될 수 있다. 큐(322)는 라인(311)을 통해 제공된 데이터를, 예컨대, 디버깅 또는 다른 NSM 동작들을 위해, 다수의 워커들에 티잉할 수 있다. 큐(310)는 데이터를 워커들(308E 내지 308H) 중 하나 이상 및/또는 워커(308I)에게 제공할 수 있다. HQM(310)은 본질적으로 하나의 입력 큐로부터의 입력 큐 엔트리들을 2개의 출력 큐에 매핑한다(예컨대, 2:1 매핑 동작). HQM(310)은, 패킷들이 디버그 또는 다른 NSM 동작들 동안 변경되는 것을 방지하는 것 등을 위해, 선택적인 패킷 복제 회로부(402)를 포함할 수 있는데, 그 이유는 HQM(310) 내의 큐 엔트리들이 포인터들일 수 있기 때문이다. 이것은 (예컨대, 도 3에서의 워커(308I)와 연관된) 하나 이상의 워커 스레드가, 버그들의 발견에, 그리고/또는 멀웨어 탐지, 이상 탐지, 또는 이와 유사한 것과 같은, 다른 NSM 동작들에 도움을 주는 것 등을 위해, 하나 이상의 패킷을 분석할 수 있게 한다.
큐 엔트리 복제 회로부(402)는 포인터가 가리키는 엔트리 내의 데이터가, 이 데이터가 워커(308I)에 제공될 때까지, 변경되지 않도록 보장하는 데 도움을 줄 수 있다. 큐 엔트리 복제 회로부(402) 및 데이터 복사 회로부(404)는 포인터가 가리키는 엔트리를 검색하고, 복제된 트래픽(406)을 워커(308I)에 제공할 수 있다. 복사 회로부(404)는 HQM(306, 310, 또는 312)의 일부이거나 HQM(306, 310, 또는 312)의 외부에 있을 수 있다.
도 5은 시스템(500)의 일 실시예의 개략 다이어그램을, 예로서, 예시하고 있다. 시스템(500)은, 예컨대, NSM에 대한 시간량 및/또는 컴퓨트 사이클들을 감소시키는 데 도움을 주는 것을 위해, HQM(504)을 포함할 수 있다. HQM(504)은, 예컨대, 코어(218A 내지 218E)에 의해 수행될 수 있는, VNF 동작들에 대한 보안 및/또는 디버그 능력들을 제공하는 데 도움을 줄 수 있다. 예시된 바와 같은 시스템(500)은 코어들(218A 내지 218E), 보안 회로부(210), 메모리(130), 입력 큐들(506), HQM(504), 출력 큐들(512), 및 구성 인터페이스(514)를 포함한다.
코어들(218A 내지 218E)은 명령어들을 수신하고 명령어들에 기초하여 동작들을 수행한다. 명령어들의 세트는, 프로세서 코어들(218A 내지 218E) 중 하나에 의해 실행될 때, 소프트웨어 프로그램이 코어들(218A 내지 218E)의 물리적 액션들을 통해 특정 기능을 수행할 수 있게 한다. 워커들(308A 내지 308D)은 각자의 코어들(218A 내지 218C)을 포함할 수 있다. 입력 큐들(506)은 큐들(506A, 506B, 506C, 및 506D)을 포함한다. 입력 큐들(506)은 큐(320)의 일부일 수 있다.
예시된 바와 같은 HQM(504)은 시퀀서 회로부(508), 제어 회로부, 복제 회로부(402), 및 복사 회로부(404)를 포함한다. HQM(504)의 항목들은 HQM(310)의 일부일 수 있다. 시퀀서 회로부(508)는 프로그램을 단계별로 진행(step through)할 주소들을 생성한다. 시퀀서 회로부(508)에 의해 생성된 주소들은 카운터, 명령어로부터의 필드, 또는 입력 큐들(506)로부터의 다른 데이터에 기초하여 생성될 수 있다. 제어 회로부(510)는 프로그램의 동작들을 관리한다. 제어 회로부(510)는, 예컨대, 사용자 및/또는 시퀀서 회로부(508)로부터의, 제어 커맨드들 및 데이터에 응답할 수 있다.
출력 큐들(512)은 512A, 512B, 512C, 및 512D를 포함할 수 있다. 출력 큐들(512)은 큐(322)의 일부일 수 있다. 출력 큐들(512)은 (코어들 중에서도 특히) 처리 코어들(218D) 및 디버그 코어들(218E)로의 데이터의 흐름을 관리한다. 디버그 코어들(218E)은 워커(308I)를 포함할 수 있다. 처리 코어들(218D)은 워커들(308E 내지 308H)을 포함할 수 있다.
예시된 바와 같은 구성 인터페이스(514)는 구성 레지스터들 및 큐 라우팅 제어 회로부(518)를 포함한다. 구성 레지스터들(516)은 NSM 동작들을 위해 입력 큐들(506)로부터의 어느 데이터가, 예컨대, 디버그 코어들(218E)에, 제공되어야 하는지를 표시하는 데이터를 포함한다. 큐 라우팅 제어 회로부(518)는 시퀀서를 제어하고 시퀀서 회로부(508)로 하여금 디버깅될 데이터를 출력 큐(512D)에 제공하게 하도록 구성될 수 있다. 디버깅될 데이터는, 데이터를 처리 코어들(218D) 및 디버그 코어들(218E)에 제공하는 것 등을 위해, 출력 큐들(512A 내지 512C) 중 하나 및 출력 큐(512D)에 제공될 수 있다. 디버깅되지 않아야 하는 데이터는, 디버그 코어들(218E)에 제공되지 않고, 처리 코어들(218D)에 제공될 수 있다. 구성 레지스터들(516) 및 큐 라우팅 제어 회로부(518)는, 예를 들어, 대역외(out-of-band)를 소프트웨어가 재구성할 수 있게 하거나 하드웨어가 재구성할 수 있게 하고, 트래픽을 제1 코어로부터 제2 코어로(예컨대, 제1 VM으로부터 제2 VM으로) 라우팅하도록 셋업(set up)된 특정의 큐가, 예를 들어, 디버그 또는 다른 모니터링을 가능하게 하기 위하여, 이제 트래픽을 제1 코어로부터 제2 코어로는 물론 제1 코어로부터 제3 코어로 라우팅하도록 셋업되는 것을 허용한다.
HQM(504)은 입력 큐들(506)로부터의 큐 엔트리들을, 시퀀서 회로부(508)에 의한 시퀀싱, 중재, 선택적인 재정렬(reordering), 및/또는 (예컨대, 제어 회로부(510) 및/또는 복제 회로부(402)에 의한) 선택적인 원자 흐름 관리(atomic flow management)를 통해, 이어서 출력 큐들(512)로 라우팅하는, 메모리 매핑된 IO 디바이스(memory-mapped IO device)로서 기능할 수 있다. 출력 큐들(512) 내의 큐 엔트리들은, 예컨대, 처리 코어들(218D) 및 디버그 코어들(218E)에 의해 실행될 수 있는, 플랫폼 스레드들에 전달될 수 있다. 이러한 시스템(500)은 큐 관리를 오프로드하고 스레드간 데이터 교환을 위한 공유 메모리 기반 큐 구조들을 제거하여, 오버헤드들을 감소시키고 성능을 개선시킬 수 있다. 예컨대, 시퀀서 회로부(508)의 (예컨대, 티잉 모드를 통한) 복제를 가능하게 하는 데 사용될 수 있는, 구성 레지스터들(516)을 비롯한, 흐름 복제를 지원하기 위한 특정 변경들, 큐 시퀀서 회로부(508)에 대한 변경들 및 패킷들을 복제하기 위해 큐 엔트리들을 복사하는 새로운 로직(예컨대, 입력 큐들(506) 중 하나 이상의 입력 큐의 포인터를 복사할 수 있는 복제 회로부(402)). 선택적으로, (HQM(504)의 내부에 또는 외부에 있는) 복사 회로부(404)는 복제 회로부(402)에 의해 행해질 수 있는 바와 같이 포인터만이 아니라 패킷들 자체를 복사하는 데 사용될 수 있고, 따라서 디버그 코어들(218E)은, 잘못된 디버그 결과들을 가져올 수 있는 내용 변경의 위험 없이, 나중에 패킷들을 소비할 수 있다.
도 6은 시스템(600)의 일 실시예의 개략 다이어그램을, 예로서, 예시하고 있다. 예시된 바와 같은 시스템(600)은 소프트웨어 구성 흐름 라인들을 포함한다. 관리자는, 예컨대, 패킷들(또는 포인터들)이, 예컨대, 복제 회로부(402) 또는 복사 회로부(404)에 의해, 복제되게 하도록 HQM 구성 레지스터들(516)을 구성하기 위해, 특권 소프트웨어(privileged software)(604)(예컨대, OS, VMM, 관리 SGX 엔클레이브, 또는 Admin의 VM 메모리 암호화된 VM/VNF)를 사용할 수 있다. 대안적으로, 관리자는 SGX(또는 VM 메모리 암호화된) VM-TME 지원 테넌트에 대한 보안 모니터링 정책을 설정할 특권을 테넌트에게 부여할 수 있다. 게스트들은 그러면 수정들 없이 평소와 같이 HQM을 사용한다 - 이것이 중요한데, 그 이유는 VM들을 변경하는 것이 복잡할 수 있고 노출된 버그들의 성질(nature), 상세하게는 타이밍 경쟁 조건들 또는 멀티스레드 동기화 문제들을 변경할 수 있기 때문이다 -. 이러한 방식으로, 서비스 기능 체인에서의 상이한 지점들이 또한 파이프라인의 다수의 스테이지들에 대한 어려운 재구성 없이 검사될 수 있다.
도 6은 레지스터들(516)에 대한 가능한 수정 흐름들을 예시하고 있다. 레지스터들(516)을 셋업하기 위해, 특권 소프트웨어(604)는 선택된 트래픽 흐름을 복제하도록 HQM 구성 레지스터들(516)을 수정할 수 있다. 이어서, 복제된 데이터에 대해 어떤 종류의 모니터링이 수행되어야 하는지에 따라, 데이터 자체가 복제될 수 있거나, 포인터들만이 복제될 수 있다. 레지스터들(516)의 구성에 따라, 데이터를 분석하고, 데이터가, 예를 들어, 예상대로 구성되어 있는지 또는 예상대로 흐르고 있는지를 결정할 수 있다. 데이터 스트림의 사본들은, 얼마 후에, 후처리를 위해 제공될 수 있다. 예를 들어, 데이터가 고 대역폭 흐름이거나 데이터가 데이터를 생성하는 VM들이 꼭 제어될 수 있는 것은 아닌 흐름인 경우, 흐름들의 전체 복제(full duplication)가 보다 중요할 수 있다.
몇몇 인터페이스 옵션들이 도 6에 도시되어 있다. 디버그 코어들(218E)(도 5를 참조)은, 예를 들어, 디버그 API(예컨대, OS의 일부)를 통해, 또는, 라인(601)으로 표시된 바와 같이, 사용자 공간으로부터 직접 디큐잉(dequeue)하도록 동작할 수 있다. 이러한 실시예들에서, HQM들(306, 310, 및 312)의 적어도 일부분은 사용자 공간 내로 직접 매핑될 수 있다.
현재의 ARM 및 MIPS(million instructions per second) 시스템들은 물리 네트워크 기능(physical network function)들을 수행하고 트래픽 분리를 위해 전용 고정 기능 컴포넌트 엔진들을 사용하는 데 도움을 줄 수 있다. 플랫폼 아키텍트(platform architect)들이, 소프트웨어 기반 클라우드 포터블 NFV 시스템(software-driven cloud-portable NFV system)들과 같은, 동적, 마이그레이션 기반, 및 이종 NFV/SDN 작업부하들 및 시스템들을 다루기 시작함에 따라, 본원에서 논의되는 실시예들은 범용 ARM 시스템들 또는 다른 것들을 사용하여 구현될 수 있다.
본원에서 논의되는 하나 이상의 실시예는, 예컨대, 무선 기지국 고객을 위해, 5G/모바일 에지 클라우드(Mobile Edge Cloud)(MEC) 환경에서 사용될 수 있다. 본원에서 논의되는 바와 같은 HQM을 포함하는 SoC는 SGX 또는 다른 보안 지원 환경(security enabled environment)에서 유용할 수 있다.
본 발명의 요소들은 인터페이스 아키텍처 또는 다른 통신 플랫폼이 NFV 및 SDN 디플로이먼트들을 위해 동작가능하게 준비될 수 있게 한다. 인터페이스 아키텍처(IA) 플랫폼들 상의 코어들의 개수가 증가함에 따라, 다수의 이종 VNF들/VM들이 동일한 플랫폼 상에 디플로이될 수 있다. NSM은 운영자 네트워크 디플로이먼트에 운영 가시성 컴포넌트를 제공한다. 본원에서의 실시예들은 IA가 오프-플랫폼(off-platform) 또는 온-플랫폼(on-platform) 모니터링을 위한 회선 속도의 안전한 네트워크 트래픽 메트릭들 및 트래픽 요소들을 제공하도록 보장하는 데 도움을 줄 수 있다.
일부 실시예들의 장점들을 설명하는 데 도움을 주기 위해, 몇 가지 사용 사례들이 본원에서 제공된다. 표준 이더넷 스위치를 통해 연결된 다수의 컴퓨트 디바이스들(예컨대, 박스 A, 박스 B, 및 박스 C)를 생각해보자. 박스 A는 박스 B와 통신하고, 박스 B는 박스 C와 그리고 이어서 나머지 네트워크와 통신한다. 그렇지만, 박스 A 내지 박스 C의 기능성이 VM들 또는 VNF들로서 서버 상에 통합되는 경우, 기능성을 어떻게 연결시킬지에 대한 단지 몇 가지 상이한 옵션들이 있다. 하나의 옵션은 원시 공유 메모리(raw shared memory)를 통하는 것이며, 이는 보안 및 강력한 운영상의 문제들을 갖는다. 다른 옵션은 가상 스위치이며, 이는 느리다. 제3 옵션은, 본원에서 논의되는 HQM과 같은, 하드웨어 가속을 사용하는 것이다. 그러나, HQM을 사용할 때, 일반적으로 박스 A 내지 박스 C의 기능성에 대한 버그 가시성(bug visibility)이 있다. 박스 B가 서비스 기능 체인(즉, 서로 연결된 박스 A 내지 박스 C의 기능성)의 중간에 있고, 박스 B가 잘못 구성되며, 그 결과, 패킷들을 드롭시키고 있다고 가정한다.
전형적인 구성에서의 가시성은 박스 A에의 입력에 그리고 박스 C로부터의 출력에 있을 것이다. 이러한 구성은 박스 A 내지 박스 C 중 어느 것이 잘못 구성(misconfigure)되었거나 오작동(malfunction)하고 있는지를 결정하는 것을 어렵게 만들고, 이는 보다 상세하게 어느 박스를 디버그할지를 알아내는 것을 어렵게 만든다. 하나 이상의 실시예에서, 데이터(예컨대, 패킷 스트림)가 디버그 스트림으로 포킹될 수 있다. 예를 들어, 박스 A와 박스 B 사이의 패킷 스트림이, 예컨대, 그 패킷들이 적절히 라우팅되고 있는 것 또는 박스 A가 적절히 동작하고 있는 것을 확인하기 위해, 검사될 수 있다. 부가적으로 또는 대안적으로, 박스 B와 박스 C 사이에 테스트 포인트(test point)가 삽입될 수 있다. 하나 이상의 실시예를 사용하여, 박스 B의 동작들이 디버깅될 수 있다. 도 3 및 도 4의 실시예들에서의 워커 8은 수행되는 동작들이 요청된 동작들인지, 하나 이상의 데이터 흐름이 처리되고 추가 처리를 위해 전달되는지, 패킷들이 드롭되는지, 또는 이와 유사한 것을 결정하도록 동작할 수 있다.
도 7은, 예컨대, 하드웨어 가속을 포함할 수 있는, NSM을 위한 방법(700)의 일 실시예의 다이어그램을, 예로서, 예시하고 있다. 예시된 바와 같은 방법(700)은 동작(702)에서, 적어도 제1 워커 스레드로부터 제1 데이터를 (HQM에서) 수신하는 단계; 동작(704)에서, 제1 복사된 데이터를 생성하기 위해 제1 데이터의 적어도 일부분의 사본을 (HQM의 복사 회로부 또는 복제 회로부에서) 생성하는 단계; 및 동작(706)에서, (a) 네트워크 보안 모니터링을 수행하기 위해 제1 복사된 데이터를 제2 워커 스레드에 제공하는 단계, 및/또는 (b) 제1 데이터를 제3 워커 스레드에 제공하는 단계를 포함한다. 방법(700)은, 제2 워커 스레드가 디버그 스레드이고, 제3 워커 스레드가 패킷 검사, 네트워크 주소 변환, 침입 탐지, 광고 삽입, 및/또는 라우팅을 포함할 수 있다는 것을 추가로 포함할 수 있다.
방법(700)은, 제1 워커 스레드가 제1 처리 코어 상에서 실행되고, 제2 워커 스레드가 제2 처리 코어 상에서 실행되며, 제3 워커 스레드가 제3 처리 코어 상에서 실행되고, 제1, 제2, 및 제3 처리 코어들이 개별적인 처리 코어들을 포함한다는 것을 추가로 포함할 수 있다. 방법(700)은, 제1 워커 스레드가 제1 가상 머신 상에서 실행되고, 제2 워커 스레드가 제2 가상 머신 상에서 실행되며, 제3 워커 스레드가 제3 가상 머신 상에서 실행되고, 제1, 제2, 및 제3 가상 머신들이 개별적인 가상 머신들을 포함한다는 것을 추가로 포함할 수 있다.
방법(700)은, 동작(704)이 제1 데이터에 대한 포인터를 복사하는 것을 포함한다는 것을 추가로 포함할 수 있다. 방법(700)은 제1 데이터 및 제1 복사된 데이터를 제2 및 제3 처리 코어들과 하드웨어 큐 관리자 사이에 결합된 각자의 출력 큐들로 라우팅하는 단계를 추가로 포함할 수 있다. 방법(700)은 복수의 입력 큐들로부터 복사될 데이터를 표시하는 표시 정보를 수신하고 복사될 데이터를 데이터 복제 회로부에 제공하는 단계를 추가로 포함할 수 있다.
본원에서 사용되는 "회로부(circuitry)"는, 예컨대, 하나 이상의 트랜지스터, 저항기, 커패시터, 인덕터, 다이오드, 논리 게이트, 멀티플렉서, 발진기, 버퍼, 변조기, 레귤레이터, 증폭기, 복조기, 무선부(radio)(예컨대, 송신 또는 수신 무선부 또는 송수신기), 센서(예컨대, 한 형태의 에너지(예컨대, 광, 열, 전기, 기계, 또는 다른 에너지)를 다른 형태의 에너지로 변환하는 트랜스듀서), 또는 이와 유사한 것을 포함할 수 있는, 전기 및/또는 전자 컴포넌트들을 의미한다.
도 8은 시스템(800)의 일 실시예의 블록 다이어그램을, 예로서, 예시하고 있다. 하나 이상의 실시예에서, 시스템(800)은 NFV 인프라스트럭처(102), 오케스트레이터(104), OSS/BSS(106), VNFM(108), VIM(110), SDN 제어기(114), 네트워크 분석 도구들(112), 메모리(130), 스위치/라우터(118), 운영자 인프라스트럭처(120), 호스트(122), 펌웨어 인터페이스(124), 플랫폼(126A 및 126B), 보안 회로부(210), 메모리 큐들(208), 큐 정책 레지스터들(216), 코어들(218), 캐시들(220), NIC(302), 인터커넥트 회로부(128), 생성자(304), HQM(306, 310, 및/또는 312), 워커(308A 내지 308I), 소비자(314), NIC(316), 캐시(318), 복제 회로부(402), 복사 회로부(404), 구성 인터페이스(514), 시퀀서 회로부(508), 제어 회로부(510), 코어들(218A 내지 218E), 입력 큐들(506), 출력 큐들(512), HQM 인큐잉/디큐잉(enqueue/dequeue) 레지스터들(608), 또는 도면들의 다른 컴포넌트에 포함될 수 있는 하나 이상의 컴포넌트를 포함한다. 하나 이상의 실시예에서, NFV 인프라스트럭처(102), 오케스트레이터(104), OSS/BSS(106), VNFM(108), VIM(110), SDN 제어기(114), 네트워크 분석 도구들(112), 메모리(130), 스위치/라우터(118), 운영자 인프라스트럭처(120), 호스트(122), 펌웨어 인터페이스(124), 플랫폼(126A 및 126B), 보안 회로부(210), 메모리 큐들(208), 큐 정책 레지스터들(216), 코어들(218), 캐시들(220), NIC(302), 인터커넥트 회로부(128), 생성자(304), HQM(306, 310, 및/또는 312), 워커(308A 내지 308I), 소비자(314), NIC(316), 캐시(318), 복제 회로부(402), 복사 회로부(404), 구성 인터페이스(514), 시퀀서 회로부(508), 제어 회로부(510), 코어들(218A 내지 218E), 입력 큐들(506), 출력 큐들(512), HQM 인큐잉/디큐잉 레지스터들(608), 또는 도 1 내지 도 7의 다른 컴포넌트 중 하나 이상은, 적어도 부분적으로, 시스템(800)의 하나 이상의 컴포넌트를 사용하여 구현될 수 있다.
일 실시예에서, 프로세서(810)는 하나 이상의 처리 코어(812 및 812N)를 가지며, 여기서 812N은 프로세서(810) 내의 제N 처리 코어를 나타내며 여기서 N은 양의 정수이다. 일 실시예에서, 시스템(800)은 프로세서(810 및 805)를 포함하는 다수의 프로세서들을 포함하며, 여기서 프로세서(805)는 프로세서(810)의 로직과 유사하거나 동일한 로직을 갖는다. 일부 실시예들에서, 처리 코어(812)는 명령어들을 페치하는 프리페치(pre-fetch) 로직, 명령어들을 디코딩하는 디코드 로직, 명령어들을 실행하는 실행 로직 및 이와 유사한 것을 포함하지만, 이들로 제한되지 않는다. 일부 실시예들에서, 프로세서(810)는 시스템(800)에 대한 명령어들 및/또는 데이터를 캐싱하는 캐시 메모리(816)를 갖는다. 캐시 메모리(816)는 하나 이상의 레벨의 캐시 메모리를 포함하는 계층적 구조로 조직화될 수 있다.
일부 실시예들에서, 프로세서(810)는 프로세서(810)가 휘발성 메모리(832) 및/또는 비휘발성 메모리(834)를 포함하는 메모리(830)에 액세스하여 메모리(830)와 통신할 수 있게 하는 기능들을 수행하도록 동작가능한 메모리 제어기(814)를 포함한다. 일부 실시예들에서, 프로세서(810)는 메모리(830) 및 칩셋(820)과 결합된다. 프로세서(810)는 또한 무선 신호들을 전송 및/또는 수신하도록 구성된 임의의 디바이스와 통신하기 위해 무선 안테나(878)에 결합될 수 있다. 일 실시예에서, 무선 안테나 인터페이스(878)는 IEEE 802.11 표준 및 그의 관련 패밀리, HPAV(Home Plug AV), UWB(Ultra Wide Band), 블루투스, WiMax, 또는 임의의 형태의 무선 통신 프로토콜 - 이들로 제한되지 않음 - 에 따라 동작한다.
일부 실시예들에서, 휘발성 메모리(832)는 SDRAM(Synchronous Dynamic Random Access Memory), DRAM(Dynamic Random Access Memory), RDRAM(RAMBUS Dynamic Random Access Memory), 및/또는 임의의 다른 유형의 랜덤 액세스 메모리 디바이스를 포함하지만, 이들로 제한되지 않는다. 비휘발성 메모리(834)는 플래시 메모리, PCM(phase change memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), 또는 임의의 다른 유형의 비휘발성 메모리 디바이스를 포함하지만, 이들로 제한되지 않는다.
메모리(830)는 프로세서(810)에 의해 실행될 명령어들 및 정보를 저장한다. 일 실시예에서, 메모리(830)는 또한 프로세서(810)가 명령어들을 실행하는 동안 임시 변수들 또는 다른 중간 정보를 저장할 수 있다. 메모리(830)는 머신 판독가능 매체의 일 예이다. 머신 판독가능 매체가 단일의 매체를 포함할 수 있지만, "머신 판독가능 매체"라는 용어는 단일의 매체 또는 다수의 매체들(예컨대, 중앙집중식 또는 분산 데이터베이스, 및/또는 연관된 캐시들 및 서버들)을 포함할 수 있다.
"머신 판독가능 매체"라는 용어는 머신(예컨대, 회로부, 또는 이와 유사한 것)에 의해 실행하기 위한 명령어들을 저장하거나, 인코딩하거나, 담고 있을 수 있고 머신으로 하여금 본 개시내용의 기법들 중 임의의 하나 이상을 수행하게 하거나; 이러한 명령어들에 의해 사용되거나 그들과 연관된 데이터 구조들을 저장하거나, 인코딩하거나, 담고 있을 수 있는 임의의 매체를 포함할 수 있다. 환언하면, 본원에서 논의되는 회로부는 명령어들을 포함할 수 있고, 따라서 다양한 실시예들과 관련하여 머신 판독가능 매체라고 지칭될 수 있다. 다른 비제한적인 머신 판독가능 매체 예들은 솔리드 스테이트 메모리(solid-state memory)들, 그리고 광학 및 자기 매체들을 포함할 수 있다. 머신 판독가능 매체들의 특정 예들은 반도체 메모리 디바이스들(예컨대, EPROM(Electrically Programmable Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory)) 및 플래시 메모리 디바이스들과 같은 비휘발성 메모리; 내장형 하드 디스크들 및 이동식 디스크들과 같은, 자기 디스크들; 자기 광학 디스크들; 그리고 CD-ROM 및 DVD-ROM 디스크들을 포함할 수 있다.
예시된 실시예에서, 칩셋(820)은 포인트-투-포인트(PtP 또는 P-P) 인터페이스들(817 및 822)을 통해 프로세서(810)와 연결한다. 칩셋(820)은 프로세서(810)가 시스템(800) 내의 다른 요소들에 연결할 수 있게 한다. 본 발명의 일부 실시예들에서, 인터페이스들(817 및 822)은 Intel® QPI(QuickPath Interconnect) 또는 이와 유사한 것과 같은 PtP 통신 프로토콜에 따라 동작한다. 다른 실시예들에서, 상이한 인터커넥트가 사용될 수 있다.
일부 실시예들에서, 칩셋(820)은 프로세서(810, 805), 디스플레이 디바이스(840), 및 다른 디바이스들과 통신하도록 동작가능하다. 칩셋(820)은 또한 무선 신호들을 전송 및/또는 수신하도록 구성된 임의의 디바이스와 통신하기 위해 무선 안테나(878)에 결합될 수 있다.
칩셋(820)은 인터페이스(826)를 통해 디스플레이 디바이스(840)에 연결한다. 디스플레이 디바이스(840)는, 예를 들어, LCD(liquid crystal display), 플라스마 디스플레이, CRT(cathode ray tube) 디스플레이, 또는 임의의 다른 형태의 시각 디스플레이 디바이스일 수 있다. 본 발명의 일부 실시예들에서, 프로세서(810)와 칩셋(820)은 단일의 SOC로 병합된다. 그에 부가하여, 칩셋(820)은 다양한 요소들(874, 860, 862, 864, 및 866)를 인터커넥트시키는 하나 이상의 버스(850 및 855)에 연결한다. 버스들(850 및 855)은 버스 브리지(872)를 통해 서로 인터커넥트될 수 있다. 일 실시예에서, 칩셋(820)은 인터페이스(824 및/또는 804) 등을 통해 비휘발성 메모리(860), 대용량 저장 디바이스(들)(862), 키보드/마우스(864), 및 네트워크 인터페이스(866)와 결합한다.
일 실시예에서, 대용량 저장 디바이스(862)는 솔리드 스테이트 드라이브, 하드 디스크 드라이브, 범용 직렬 버스 플래시 메모리 드라이브, 또는 임의의 다른 형태의 컴퓨터 데이터 저장 매체를 포함하지만, 이들로 제한되지 않는다. 일 실시예에서, 네트워크 인터페이스(866)는 이더넷 인터페이스, USB(universal serial bus) 인터페이스, PCI(Peripheral Component Interconnect) Express 인터페이스, 무선 인터페이스 및/또는 임의의 다른 적당한 유형의 인터페이스를 포함하지만 이들로 제한되지 않는 임의의 유형의 널리 공지된 네트워크 인터페이스 표준에 의해 구현된다. 일 실시예에서, 무선 인터페이스는 IEEE 802.11 표준 및 그의 관련 패밀리, HPAV(Home Plug AV), UWB(Ultra Wide Band), 블루투스, WiMax, 또는 임의의 형태의 무선 통신 프로토콜 - 이들로 제한되지 않음 - 에 따라 동작한다.
도 8에 도시된 컴포넌트들이 시스템(800) 내에 개별적인 블록들로서 도시되어 있지만, 이 블록들 중 일부에 의해 수행되는 기능들은 단일의 반도체 회로 내에 통합될 수 있거나 2개 이상의 개별적인 집적 회로를 사용하여 구현될 수 있다. 예를 들어, 캐시 메모리(816)가 프로세서(810) 내에 개별적인 블록으로서 도시되어 있지만, 캐시 메모리(816)(또는 816의 선택된 양태들)가 프로세서 코어(812)에 통합될 수 있다.
예들 및 요지들
본 발명 요지가 몇 개의 예들에 의해 기술될 수 있다.
예 1은 하드웨어 큐 관리자를 포함할 수 있고, 하드웨어 큐 관리자는 복수의 입력 큐들에 결합된 입력 인터페이스 - 입력 인터페이스는 복수의 입력 큐들 중 입력 큐를 통해 적어도 제1 워커 스레드로부터 제1 데이터를 수신함 -, 제1 복사된 데이터를 생성하기 위해 제1 데이터의 적어도 일부분의 사본을 생성하는 큐 복제 회로부, 및 복수의 출력 큐들에 결합된 출력 인터페이스 - 출력 인터페이스는 (a) 제1 복사된 데이터를 복수의 출력 큐들 중 제1 출력 큐에 결합된 제2 워커 스레드에 제공하고, (b) 제1 데이터의 적어도 일부분을 복수의 출력 큐들 중 제2 출력 큐에 결합된 제3 워커 스레드에 제공함 - 를 포함한다.
예 2에서, 예 1은, 제1 워커 스레드가 제1 처리 코어 상에서 실행되고, 제2 워커 스레드가 제2 처리 코어 상에서 실행되며, 제3 워커 스레드가 제3 처리 코어 상에서 실행되고, 제1, 제2, 및 제3 처리 코어들이 개별적인 처리 코어들을 포함한다는 것을 추가로 포함할 수 있다.
예 3에서, 예 2는, 제1 워커 스레드가 제1 가상 머신 상에서 실행되고, 제2 워커 스레드가 제2 가상 머신 상에서 실행되며, 제3 워커 스레드가 제3 가상 머신 상에서 실행되고, 제1, 제2, 및 제3 가상 머신들이 개별적인 가상 머신들을 포함한다는 것을 추가로 포함할 수 있다.
예 4에서, 예 1 내지 예 3 중 적어도 한 예는, 큐 복제 회로부가 제1 데이터에 대한 포인터를 복사하는 것을 추가로 포함할 수 있다.
예 5에서, 예 1 내지 예 4 중 적어도 한 예는 제1 데이터를 복사하는 데이터 복사 회로부를 추가로 포함할 수 있다.
예 6에서, 예 1 내지 예 5 중 적어도 한 예는 제1 데이터 및 제1 복사된 데이터를 제2 및 제3 처리 코어들과 하드웨어 큐 관리자 사이에 결합된 복수의 출력 큐들 중 각자의 출력 큐들로 라우팅하는 큐 라우팅 제어 회로부를 추가로 포함할 수 있다.
예 7에서, 예 6은 복수의 입력 큐들로부터 복사될 데이터를 표시하는 표시 정보를 수신하고, 복사될 데이터를 제3 처리 코어에 그리고 복사될 데이터의 사본을 복제 회로부에 제공하는 시퀀서 회로부를 추가로 포함할 수 있다.
예 8은, 머신 상에서 실행될 때, 머신으로 하여금 동작들을 수행하게 하는 명령어들을 포함하는 비일시적 머신 판독가능 매체를 포함하고, 동작들은 하드웨어 큐 관리자에 결합된 복수의 입력 큐들 중 입력 큐로부터, 적어도 제1 워커 스레드로부터의 제1 데이터를 수신하는 동작, 제1 복사된 데이터를 생성하기 위해 제1 데이터의 적어도 일부분의 사본을 생성하는 동작, 및 (a) 제1 복사된 데이터를 복수의 출력 큐들 중 제1 출력 큐에 결합된 제2 워커 스레드에 제공하고, (b) 제1 데이터의 적어도 일부분을 복수의 출력 큐들 중 제2 출력 큐에 결합된 제3 워커 스레드에 제공하는 동작을 포함한다.
예 9에서, 예 8은, 제2 워커 스레드가 디버그 스레드이고, 제3 워커 스레드가 패킷 검사, 네트워크 주소 변환, 침입 탐지, 광고 삽입, 또는 라우팅을 포함한다는 것을 추가로 포함할 수 있다.
예 10에서, 예 8 및 예 9 중 적어도 한 예는, 제1 워커 스레드가 제1 처리 코어 상에서 실행되고, 제2 워커 스레드가 제2 처리 코어 상에서 실행되며, 제3 워커 스레드가 제3 처리 코어 상에서 실행되고, 제1, 제2, 및 제3 처리 코어들이 개별적인 처리 코어들을 포함한다는 것을 추가로 포함할 수 있다.
예 11에서, 예 8 및 예 9 중 적어도 한 예는, 제1 워커 스레드가 제1 가상 머신 상에서 실행되고, 제2 워커 스레드가 제2 가상 머신 상에서 실행되며, 제3 워커 스레드가 제3 가상 머신 상에서 실행되고, 제1, 제2, 및 제3 가상 머신들이 개별적인 가상 머신들을 포함한다는 것을 추가로 포함할 수 있다.
예 12에서, 예 8 내지 예 11 중 적어도 한 예는, 제1 데이터의 적어도 일부분의 사본을 생성하는 동작이 제1 데이터에 대한 포인터를 복사하는 동작을 포함한다는 것을 추가로 포함할 수 있다.
예 13에서, 예 8 내지 예 12 중 적어도 한 예는, 동작들이 제1 데이터 및 제1 복사된 데이터를 제2 및 제3 처리 코어들과 하드웨어 큐 관리자 사이에 결합된 복수의 출력 큐들 중 각자의 출력 큐들로 라우팅하는 동작을 추가로 포함한다는 것을 추가로 포함할 수 있다.
예 14에서, 예 13은 동작들이 복수의 입력 큐들로부터 복사될 데이터를 표시하는 표시 정보를 수신하고 복사될 데이터를 데이터 복제 회로부에 제공하는 동작을 추가로 포함한다는 것을 추가로 포함할 수 있다.
예 15는 네트워크 보안 모니터링 방법을 포함하며, 이 방법은, 하드웨어 큐 관리자의 입력 인터페이스에서 그리고 하드웨어 큐 관리자에 결합된 복수의 입력 큐들 중 입력 큐를 통해, 제1 워커 스레드로부터 제1 데이터를 수신하는 단계, 하드웨어 큐 관리자에서, 제1 복사된 데이터를 생성하기 위해 제1 데이터의 적어도 일부분의 사본을 생성하는 단계, 및 (a) 네트워크 보안 모니터링을 수행하기 위해 제1 복사된 데이터를 제2 워커 스레드에 제공하고 - 제2 워커 스레드는 하드웨어 큐 관리자에 결합된 복수의 출력 큐들 중 제1 출력 큐에 결합됨 -, (b) 제1 데이터의 적어도 일부분을 하드웨어 큐 관리자에 결합된 복수의 출력 큐들 중 제2 출력 큐를 통해 제3 워커 스레드에 제공하는 단계를 포함한다.
예 16에서, 예 15는, 제2 워커 스레드가 디버그 스레드이고, 제3 워커 스레드가 패킷 검사, 네트워크 주소 변환, 침입 탐지, 광고 삽입, 또는 라우팅을 포함한다는 것을 추가로 포함할 수 있다.
예 17에서, 예 15 및 예 16 중 적어도 한 예는, 제1 워커 스레드가 제1 처리 코어 상에서 실행되고, 제2 워커 스레드가 제2 처리 코어 상에서 실행되며, 제3 워커 스레드가 제3 처리 코어 상에서 실행되고, 제1, 제2, 및 제3 처리 코어들이 개별적인 처리 코어들을 포함한다는 것을 추가로 포함할 수 있다.
예 18에서, 예 15 및 예 16 중 적어도 한 예는, 제1 워커 스레드가 제1 가상 머신 상에서 실행되고, 제2 워커 스레드가 제2 가상 머신 상에서 실행되며, 제3 워커 스레드가 제3 가상 머신 상에서 실행되고, 제1, 제2, 및 제3 가상 머신들이 개별적인 가상 머신들을 포함한다는 것을 추가로 포함할 수 있다.
예 19에서, 예 15 내지 예 18 중 적어도 한 예는, 제1 데이터의 적어도 일부분의 사본을 생성하는 동작이 제1 데이터에 대한 포인터를 복사하는 동작을 포함한다는 것을 추가로 포함할 수 있다.
예 20에서, 예 15 내지 예 19 중 적어도 한 예는, 동작들이 제1 데이터 및 제1 복사된 데이터를 제2 및 제3 처리 코어들과 하드웨어 큐 관리자 사이에 결합된 복수의 출력 큐들 중 각자의 출력 큐들로 라우팅하는 동작을 추가로 포함한다는 것을 추가로 포함할 수 있다.
예 21에서, 예 20은 복수의 입력 큐들로부터 복사될 데이터를 표시하는 표시 정보를 수신하고 복사될 데이터를 데이터 복제 회로부에 제공하는 단계를 추가로 포함할 수 있다.
예 22는 시스템을 포함하고, 이 시스템은 가상 네트워크 기능들의 동작들을 수행하는 복수의 처리 코어들 및 처리 코어들의 트래픽을 모니터링 및 복사하는 보안 회로부를 포함하는 네트워크 기능 가상화 인프라스트럭처, 모니터링될 트래픽을 정의하고 보안 회로부가 트래픽의 데이터 또는 데이터에 대한 포인터를 복사할지 여부를 표시하는 보안 정책을 제공하는, 보안 회로부에 결합된 제어기, 및 복사된 트래픽이 버그, 드롭된 패킷, 또는 보안 위협을 포함할 때를 결정하는 네트워크 분석 도구를 포함한다.
예 23에서, 예 22는, 제어기가 추가로 복수의 처리 코어들 중 어느 코어가 복수의 가상 네트워크 기능들 중 특정 가상 네트워크 기능을 수행하는지를 결정하고, 보안 정책이, 실행될 때, 결정된 코어를 표시하고, 보안 회로부가 결정된 코어로부터 트래픽을 복사하는 것을 추가로 포함할 수 있다.
예 24에서, 예 23은 스위치 또는 라우터를 추가로 포함할 수 있고, 제어기는 추가로 보안 정책을 스위치 또는 라우터를 통해 보안 회로부에 제공한다.
예 25에서, 예 24는 보안 회로부로부터 복사된 트래픽을 수신하고 복사된 트래픽을 네트워크 분석 도구에 제공하는, 메모리 내의 복수의 메모리 큐들을 추가로 포함할 수 있다.
이 비제한적인 예들 각각은 독자적으로 존재할 수 있거나, 다른 예들 중 하나 이상과 다양한 치환(permutation)들 또는 조합(combination)들로 결합될 수 있다. "비일시적"이란 매체가 유형적 매체들의 한 형태를 포함한다는 것을 의미할 뿐이다.
이상의 상세한 설명은 상세한 설명의 일부를 형성하는 첨부 도면들에 대한 참조들을 포함한다. 도면들은 본원에서 논의되는 방법들, 장치들, 및 시스템들이 실시될 수 있는 특정 실시예들을, 예시로서, 도시하고 있다. 이 실시예들은 본원에서 "예들"이라고도 지칭된다. 이러한 예들은 도시되거나 기술된 것들 이외의 요소들을 포함할 수 있다. 그렇지만, 본 문서는 도시되거나 기술된 그 요소들만이 제공되는 예들을 포함하는 것으로 의도되어 있다. 더욱이, 본원에 도시되거나 기술된 그 요소들의 임의의 조합 또는 치환을 사용하는 예들(또는 그의 하나 이상의 양태들(또는 그의 하나 이상의 양태들)은, 특정의 예(또는 그의 하나 이상의 양태들)와 관련하여서든 또는 본원에 도시되거나 기술된 다른 예들(또는 그의 하나 이상의 양태들)과 관련하여서든, 또한 예시적인 실시예들로서 포함되어 있다.
본 문서에서, "a" 또는 "an"이라는 용어들은, 특허 문서들에서 통상적인 것처럼, "적어도 하나의" 또는 "하나 이상의"의 임의의 다른 사례들 또는 용법들과 관계없이, 하나 또는 하나 초과를 포함하기 위해 사용된다. 본 문서에서, "또는"이라는 용어는 비배타적 또는(nonexclusive or)을 지칭하는 데 사용되고, 따라서, 달리 언급되지 않는 한, "A 또는 B"는 "B가 아니라 A", "A가 아니라 B" 그리고 "A 그리고 B"를 포함한다. 본 문서에서, "포함하는(including)" 및 "여기서(in which)"라는 용어들은 각자의 용어들 "포함하는(comprising)" 및 "여기서(wherein)"의 평이한 영어 동등어들로서 사용된다. 또한, 이하의 청구항들에서, "포함하는(including)" 및 "포함하는(comprising)"이라는 용어들은 개방형(open-ended)이며, 즉, 청구항에서 이러한 용어 이후에 열거되는 것들 이외의 요소들을 포함하는 시스템, 디바이스, 물품, 조성물, 제제, 또는 프로세스가 여전히 그 청구항의 범주 내에 속하는 것으로 생각된다. 더욱이, 이하의 청구항들에서, "제1", "제2", 및 "제3" 등이라는 용어들은 단지 라벨들로서 사용되고, 그들의 대상들에 대한 수치적 요건들을 부과하려고 의도되어 있지 않다.
이상의 설명은 제한적인 것이 아니라 예시적인 것으로 의도되어 있다. 예를 들어, 앞서 기술된 예들(또는 그의 하나 이상의 양태들)은 서로 조합하여 사용될 수 있다. 예컨대, 이상의 설명을 검토할 때 본 기술분야의 통상의 기술자에 의해, 다른 실시예들이 사용될 수 있다. 읽는 사람이 기술적 개시내용의 본질을 신속하게 확인할 수 있도록 하기 위해 요약서가 제공된다. 요약서는 청구항들의 범주 또는 의미를 해석하거나 제한하는 데 사용되지 않는다는 이해 하에 제공된다. 또한, 실시예들의 이 설명에서, 본 개시내용을 간소화하기 위해 다양한 피처들이 함께 그룹화될 수 있다. 이것은 청구되지 않은 개시된 피처가 임의의 청구항에 본질적이라고 의도하는 것으로서 해석되어서는 안된다. 오히려, 진보성 있는 발명 요지는 특정의 개시된 실시예의 피처들 전부보다 적은 것들에 있을 수 있다. 따라서, 이하의 청구항들은 이로써 예들 또는 실시예들로서 실시예들의 설명에 포함되며, 각각의 청구항은 개별적인 실시예로서 독자적으로 존재하며, 이러한 실시예가 다양한 조합들 또는 치환들에서 서로 조합될 수 있는 것이 생각된다. 본 발명의 범주는, 이러한 청구항들의 자격을 가지는 등가물들의 전체 범주와 함께, 첨부된 청구항들을 고려하여 결정되어야만 한다.
Claims (25)
- 하드웨어 큐 관리자로서,
복수의 입력 큐들에 결합된 입력 인터페이스 - 상기 입력 인터페이스는 상기 복수의 입력 큐들 중 입력 큐를 통해 적어도 제1 워커 스레드(worker thread)로부터 제1 데이터를 수신함 -;
제1 복사된 데이터를 생성하기 위해 상기 제1 데이터의 적어도 일부분의 사본을 생성하는 큐 복제 회로부; 및
복수의 출력 큐들에 결합된 출력 인터페이스 - 상기 출력 인터페이스는 (a) 상기 제1 복사된 데이터를 상기 복수의 출력 큐들 중 제1 출력 큐를 통해 제2 워커 스레드에 제공하고, (b) 상기 제1 데이터의 적어도 일부분을 상기 복수의 출력 큐들 중 제2 출력 큐를 통해 제3 워커 스레드에 제공함 -
를 포함하는, 하드웨어 큐 관리자. - 제1항에 있어서, 상기 제1 워커 스레드는 제1 처리 코어 상에서 실행되고, 상기 제2 워커 스레드는 제2 처리 코어 상에서 실행되며, 상기 제3 워커 스레드는 제3 처리 코어 상에서 실행되고, 상기 제1, 제2, 및 제3 처리 코어들은 개별적인 처리 코어들을 포함하는, 하드웨어 큐 관리자.
- 제1항에 있어서, 상기 제1 워커 스레드는 제1 가상 머신 상에서 실행되고, 상기 제2 워커 스레드는 제2 가상 머신 상에서 실행되며, 상기 제3 워커 스레드는 제3 가상 머신 상에서 실행되고, 상기 제1, 제2, 및 제3 가상 머신들은 개별적인 가상 머신들을 포함하는, 하드웨어 큐 관리자.
- 제1항에 있어서, 상기 큐 복제 회로부는 상기 제1 데이터에 대한 포인터를 복사하는, 하드웨어 큐 관리자.
- 제4항에 있어서, 상기 제1 데이터를 복사하는 데이터 복사 회로부를 추가로 포함하는, 하드웨어 큐 관리자.
- 제1항에 있어서, 상기 제1 데이터 및 상기 제1 복사된 데이터를 상기 제2 및 제3 처리 코어들과 상기 하드웨어 큐 관리자 사이에 결합된 상기 복수의 출력 큐들 중 각자의 출력 큐들로 라우팅하는 큐 라우팅 제어 회로부를 추가로 포함하는, 하드웨어 큐 관리자.
- 제6항에 있어서, 상기 복수의 입력 큐들로부터 복사될 데이터를 표시하는 표시 정보를 수신하고, 상기 복사될 데이터를 상기 제3 처리 코어에 그리고 상기 복사될 데이터의 사본을 상기 복제 회로부에 제공하는 시퀀서 회로부를 추가로 포함하는, 하드웨어 큐 관리자.
- 머신 상에서 실행될 때, 상기 머신으로 하여금 동작들을 수행하게 하는 명령어들을 포함하는 비일시적 머신 판독가능 매체로서, 상기 동작들은:
하드웨어 큐 관리자에 결합된 복수의 입력 큐들 중 입력 큐를 통해, 제1 워커 스레드로부터의 제1 데이터를 수신하는 동작;
제1 복사된 데이터를 생성하기 위해 상기 제1 데이터의 적어도 일부분의 사본을 생성하는 동작; 및
(a) 상기 제1 복사된 데이터를 복수의 출력 큐들 중 제1 출력 큐에 결합된 제2 워커 스레드에 제공하고, (b) 상기 제1 데이터의 적어도 일부분을 상기 복수의 출력 큐들 중 제2 출력 큐에 결합된 제3 워커 스레드에 제공하는 동작
을 포함하는, 비일시적 머신 판독가능 매체. - 제8항에 있어서, 상기 제2 워커 스레드는 디버그 스레드이고, 상기 제3 워커 스레드는 패킷 검사, 네트워크 주소 변환, 침입 탐지, 광고 삽입, 또는 라우팅을 포함하는, 비일시적 머신 판독가능 매체.
- 제8항에 있어서, 상기 제1 워커 스레드는 제1 처리 코어 상에서 실행되고, 상기 제2 워커 스레드는 제2 처리 코어 상에서 실행되며, 상기 제3 워커 스레드는 제3 처리 코어 상에서 실행되고, 상기 제1, 제2, 및 제3 처리 코어들은 개별적인 처리 코어들을 포함하는, 비일시적 머신 판독가능 매체.
- 제8항에 있어서, 상기 제1 워커 스레드는 제1 가상 머신 상에서 실행되고, 상기 제2 워커 스레드는 제2 가상 머신 상에서 실행되며, 상기 제3 워커 스레드는 제3 가상 머신 상에서 실행되고, 상기 제1, 제2, 및 제3 가상 머신들은 개별적인 가상 머신들을 포함하는, 비일시적 머신 판독가능 매체.
- 제8항에 있어서, 상기 제1 데이터의 적어도 상기 일부분의 상기 사본을 생성하는 동작은 상기 제1 데이터에 대한 포인터를 복사하는 동작을 포함하는, 비일시적 머신 판독가능 매체.
- 제8항에 있어서, 상기 동작들은 상기 제1 데이터 및 상기 제1 복사된 데이터를 제2 및 제3 처리 코어들과 하드웨어 큐 관리자 사이에 결합된 상기 복수의 출력 큐들 중 각자의 출력 큐들로 라우팅하는 동작을 추가로 포함하는, 비일시적 머신 판독가능 매체.
- 제13항에 있어서, 상기 동작들은 상기 복수의 입력 큐들로부터 복사될 데이터를 표시하는 표시 정보를 수신하고 상기 복사될 데이터를 데이터 복제 회로부에 제공하는 동작을 추가로 포함하는, 비일시적 머신 판독가능 매체.
- 네트워크 보안 모니터링 방법으로서,
하드웨어 큐 관리자의 입력 인터페이스에서 그리고 상기 하드웨어 큐 관리자에 결합된 복수의 입력 큐들 중 입력 큐를 통해, 제1 워커 스레드로부터 제1 데이터를 수신하는 단계;
상기 하드웨어 큐 관리자에서, 제1 복사된 데이터를 생성하기 위해 상기 제1 데이터의 적어도 일부분의 사본을 생성하는 단계; 및
(a) 네트워크 보안 모니터링을 수행하기 위해 상기 제1 복사된 데이터를 제2 워커 스레드에 제공하고 - 상기 제2 워커 스레드는 상기 하드웨어 큐 관리자에 결합된 복수의 출력 큐들 중 제1 출력 큐에 결합됨 -, (b) 상기 제1 데이터의 적어도 일부분을 상기 복수의 출력 큐들 중 제2 출력 큐를 통해 제3 워커 스레드에 제공하는 단계
를 포함하는, 방법. - 제15항에 있어서, 상기 제2 워커 스레드는 디버그 스레드이고, 상기 제3 워커 스레드는 패킷 검사, 네트워크 주소 변환, 침입 탐지, 광고 삽입, 또는 라우팅을 포함하는, 방법.
- 제15항에 있어서, 상기 제1 워커 스레드는 제1 처리 코어 상에서 실행되고, 상기 제2 워커 스레드는 제2 처리 코어 상에서 실행되며, 상기 제3 워커 스레드는 제3 처리 코어 상에서 실행되고, 상기 제1, 제2, 및 제3 처리 코어들은 개별적인 처리 코어들을 포함하는, 방법.
- 제15항에 있어서, 상기 제1 워커 스레드는 제1 가상 머신 상에서 실행되고, 상기 제2 워커 스레드는 제2 가상 머신 상에서 실행되며, 상기 제3 워커 스레드는 제3 가상 머신 상에서 실행되고, 상기 제1, 제2, 및 제3 가상 머신들은 개별적인 가상 머신들을 포함하는, 방법.
- 제15항에 있어서, 상기 제1 데이터의 적어도 상기 일부분의 상기 사본을 생성하는 단계는 상기 제1 데이터에 대한 포인터를 복사하는 단계를 포함하는, 방법.
- 제15항에 있어서, 상기 제1 데이터 및 상기 제1 복사된 데이터를 제2 및 제3 처리 코어들과 하드웨어 큐 관리자 사이에 결합된 상기 복수의 출력 큐들 중 각자의 출력 큐들로 라우팅하는 단계를 추가로 포함하는, 방법.
- 제20항에 있어서, 상기 복수의 입력 큐들로부터 복사될 데이터를 표시하는 표시 정보를 수신하고 상기 복사될 데이터를 데이터 복제 회로부에 제공하는 단계를 추가로 포함하는, 방법.
- 시스템으로서,
가상 네트워크 기능들의 동작들을 수행하는 복수의 처리 코어들 및 상기 처리 코어들의 트래픽을 모니터링 및 복사하는 보안 회로부를 포함하는 네트워크 기능 가상화 인프라스트럭처;
모니터링될 트래픽을 정의하고 상기 보안 회로부가 상기 트래픽의 데이터 또는 상기 데이터에 대한 포인터를 복사할지 여부를 표시하는 보안 정책을 제공하는, 상기 보안 회로부에 결합된 제어기; 및
복사된 상기 트래픽이 버그, 드롭된 패킷, 또는 보안 위협을 포함할 때를 결정하는 네트워크 분석 회로부
를 포함하는, 시스템. - 제22항에 있어서, 상기 제어기는 추가로 상기 복수의 처리 코어들 중 어느 코어가 상기 복수의 가상 네트워크 기능들 중 특정 가상 네트워크 기능을 수행하는지를 결정하고, 상기 보안 정책은, 실행될 때, 상기 결정된 코어를 표시하고, 상기 보안 회로부는 상기 결정된 코어로부터 상기 트래픽을 복사하는, 시스템.
- 제23항에 있어서, 스위치 또는 라우터를 추가로 포함하고, 상기 제어기는 추가로 상기 보안 정책을 상기 스위치 또는 라우터를 통해 상기 보안 회로부에 제공하는, 시스템.
- 제24항에 있어서, 상기 보안 회로부로부터 상기 복사된 트래픽을 수신하고 상기 복사된 트래픽을 상기 네트워크 분석 회로부에 제공하는, 메모리 내의 복수의 메모리 큐들을 추가로 포함하는, 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/607,121 | 2017-05-26 | ||
US15/607,121 US20180341494A1 (en) | 2017-05-26 | 2017-05-26 | Accelerating network security monitoring |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180129631A true KR20180129631A (ko) | 2018-12-05 |
KR102623787B1 KR102623787B1 (ko) | 2024-01-12 |
Family
ID=62165338
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180048614A KR102623787B1 (ko) | 2017-05-26 | 2018-04-26 | 네트워크 보안 모니터링의 가속화 |
Country Status (4)
Country | Link |
---|---|
US (2) | US20180341494A1 (ko) |
EP (1) | EP3407563B1 (ko) |
KR (1) | KR102623787B1 (ko) |
CN (1) | CN108965239A (ko) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9705849B2 (en) * | 2014-09-30 | 2017-07-11 | Intel Corporation | Technologies for distributed detection of security anomalies |
US10686729B2 (en) | 2017-03-29 | 2020-06-16 | Fungible, Inc. | Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths |
WO2019014237A1 (en) | 2017-07-10 | 2019-01-17 | Fungible, Inc. | ACCESS NODE FOR DATA CENTERS |
CN117348976A (zh) * | 2017-07-10 | 2024-01-05 | 微软技术许可有限责任公司 | 用于流处理的数据处理单元 |
US10735441B2 (en) * | 2017-12-20 | 2020-08-04 | Cisco Technology, Inc. | Correlating endpoint and network views to identify evasive applications |
WO2019152063A1 (en) | 2018-02-02 | 2019-08-08 | Fungible, Inc. | Efficient work unit processing in a multicore system |
WO2020236282A1 (en) * | 2019-05-23 | 2020-11-26 | Cray Inc | System and method for facilitating data-driven intelligent network |
US20210194894A1 (en) * | 2019-12-23 | 2021-06-24 | Cisco Technology, Inc. | Packet metadata capture in a software-defined network |
CN114845162B (zh) * | 2021-02-01 | 2024-04-02 | 北京字节跳动网络技术有限公司 | 视频播放方法、装置、电子设备及存储介质 |
US20240086522A1 (en) * | 2022-09-09 | 2024-03-14 | Micro Focus Llc | Using thread patterns to identify anomalous behavior |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5634015A (en) * | 1991-02-06 | 1997-05-27 | Ibm Corporation | Generic high bandwidth adapter providing data communications between diverse communication networks and computer system |
KR101280754B1 (ko) * | 2010-01-04 | 2013-07-05 | 아바야 인코포레이티드 | 상태 보존 및 데이터 손실 감소 방법 및 시스템 |
US20140198803A1 (en) * | 2013-01-17 | 2014-07-17 | Xockets IP, LLC | Scheduling and Traffic Management with Offload Processors |
KR20170030295A (ko) * | 2015-09-09 | 2017-03-17 | 한국전자통신연구원 | 범용 vnfm 및 vnf 관리 방법 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8204082B2 (en) * | 2000-06-23 | 2012-06-19 | Cloudshield Technologies, Inc. | Transparent provisioning of services over a network |
US20050157719A1 (en) * | 2004-01-20 | 2005-07-21 | Robotham Robert E. | Method and apparatus for multicasting of cell or frame data |
US8196147B1 (en) * | 2008-10-31 | 2012-06-05 | Netapp, Inc. | Multiple-processor core optimization for producer-consumer communication |
KR20110065067A (ko) * | 2009-12-09 | 2011-06-15 | 삼성전자주식회사 | 멀티 쓰레드 테스팅시 발생되는 에러 정보에 대한 비주얼 인터페이스를 제공하는 장치 및 방법 |
US9438527B2 (en) * | 2012-05-24 | 2016-09-06 | Marvell World Trade Ltd. | Flexible queues in a network switch |
US9787567B1 (en) * | 2013-01-30 | 2017-10-10 | Big Switch Networks, Inc. | Systems and methods for network traffic monitoring |
US9331941B2 (en) * | 2013-08-12 | 2016-05-03 | Cisco Technology, Inc. | Traffic flow redirection between border routers using routing encapsulation |
US9311508B2 (en) * | 2013-12-27 | 2016-04-12 | Intel Corporation | Processors, methods, systems, and instructions to change addresses of pages of secure enclaves |
US9413819B1 (en) * | 2014-03-21 | 2016-08-09 | Amazon Technologies, Inc. | Operating system interface implementation using network-accessible services |
US9531641B2 (en) * | 2014-07-29 | 2016-12-27 | Oracle International Corporation | Virtual output queue linked list management scheme for switch fabric |
US10091215B1 (en) * | 2014-09-09 | 2018-10-02 | Amazon Technologies, Inc. | Client isolation in a distributed queue |
US9813327B2 (en) * | 2014-09-23 | 2017-11-07 | Cavium, Inc. | Hierarchical hardware linked list approach for multicast replication engine in a network ASIC |
US9762457B2 (en) * | 2014-11-25 | 2017-09-12 | At&T Intellectual Property I, L.P. | Deep packet inspection virtual function |
US10574546B2 (en) * | 2016-09-27 | 2020-02-25 | Mellanox Technologies Tlv Ltd. | Network monitoring using selective mirroring |
US10469359B2 (en) * | 2016-11-03 | 2019-11-05 | Futurewei Technologies, Inc. | Global resource orchestration system for network function virtualization |
US10275378B2 (en) * | 2017-03-07 | 2019-04-30 | Western Digital Technologies, Inc. | Data buffer pointer fetching for direct memory access |
-
2017
- 2017-05-26 US US15/607,121 patent/US20180341494A1/en not_active Abandoned
-
2018
- 2018-04-26 EP EP18169678.2A patent/EP3407563B1/en active Active
- 2018-04-26 KR KR1020180048614A patent/KR102623787B1/ko active IP Right Grant
- 2018-05-25 CN CN201810518765.2A patent/CN108965239A/zh active Pending
-
2021
- 2021-03-25 US US17/213,132 patent/US20210318885A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5634015A (en) * | 1991-02-06 | 1997-05-27 | Ibm Corporation | Generic high bandwidth adapter providing data communications between diverse communication networks and computer system |
KR101280754B1 (ko) * | 2010-01-04 | 2013-07-05 | 아바야 인코포레이티드 | 상태 보존 및 데이터 손실 감소 방법 및 시스템 |
US20140198803A1 (en) * | 2013-01-17 | 2014-07-17 | Xockets IP, LLC | Scheduling and Traffic Management with Offload Processors |
KR20170030295A (ko) * | 2015-09-09 | 2017-03-17 | 한국전자통신연구원 | 범용 vnfm 및 vnf 관리 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR102623787B1 (ko) | 2024-01-12 |
EP3407563A1 (en) | 2018-11-28 |
US20210318885A1 (en) | 2021-10-14 |
US20180341494A1 (en) | 2018-11-29 |
EP3407563B1 (en) | 2020-09-23 |
CN108965239A (zh) | 2018-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102623787B1 (ko) | 네트워크 보안 모니터링의 가속화 | |
Dalton et al. | Andromeda: Performance, isolation, and velocity at scale in cloud network virtualization | |
US10484266B2 (en) | Leveraging multi-stream transport protocol capabilities for routing | |
US8719804B2 (en) | Managing runtime execution of applications on cloud computing systems | |
US8942236B1 (en) | Stateless packet segmentation and processing | |
WO2019014268A1 (en) | DATA PROCESSING UNIT FOR FLOW PROCESSING | |
Zhang et al. | NFV platforms: Taxonomy, design choices and future challenges | |
US11582149B2 (en) | Cloud based router with policy enforcement | |
Hu et al. | Towards" full containerization" in containerized network function virtualization | |
Rad et al. | Low-latency software defined network for high performance clouds | |
Hong et al. | Design and implementation of eBPF-based virtual TAP for inter-VM traffic monitoring | |
Cho et al. | Typhoon: An SDN enhanced real-time big data streaming framework | |
US11683291B2 (en) | Automatically generating firewall configuration profiles using learning mode | |
Chen et al. | Research and practice of dynamic network security architecture for IaaS platforms | |
Sharma et al. | Dynamic hardware-acceleration of vnfs in nfv environments | |
US20230388398A1 (en) | Encoding of an implicit packet sequence number in a packet | |
Wang et al. | Tualatin: Towards network security service provision in cloud datacenters | |
Cheng et al. | TRUSTSKETCH: Trustworthy Sketch-based Telemetry on Cloud Hosts | |
Song et al. | Canal Mesh: A Cloud-Scale Sidecar-Free Multi-Tenant Service Mesh Architecture | |
Chirivella-Perez et al. | Towards a SDN-based architecture for analyzing network traffic in cloud computing infrastructures | |
US20230393956A1 (en) | Network interface device failover | |
Simha | NFV reference architecture for deployment of mobile networks | |
US20230319133A1 (en) | Network interface device to select a target service and boot an application | |
US20230375994A1 (en) | Selection of primary and secondary management controllers in a multiple management controller system | |
Zha et al. | EZPath: Expediting Container Network Traffic via Programmable Switches |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |