KR20160108500A - 소프트웨어 정의 프로토콜 네트워크 노드를 위한 시스템 및 방법 - Google Patents

소프트웨어 정의 프로토콜 네트워크 노드를 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20160108500A
KR20160108500A KR1020167022165A KR20167022165A KR20160108500A KR 20160108500 A KR20160108500 A KR 20160108500A KR 1020167022165 A KR1020167022165 A KR 1020167022165A KR 20167022165 A KR20167022165 A KR 20167022165A KR 20160108500 A KR20160108500 A KR 20160108500A
Authority
KR
South Korea
Prior art keywords
packet
protocol
sdp
network node
software
Prior art date
Application number
KR1020167022165A
Other languages
English (en)
Other versions
KR101893963B1 (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 KR20160108500A publication Critical patent/KR20160108500A/ko
Application granted granted Critical
Publication of KR101893963B1 publication Critical patent/KR101893963B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/082Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0823Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0895Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)

Abstract

소프트웨어 설계 프로토콜(software designed protocol, SDP) 네트워크 노드는 수신기(NIC 405)와 수신기(NIC 405)에 동작 가능하게 연결된 프로세서(CPU 421)를 포함한다. 수신기는 명령을 수신하고 패킷을 수신한다. 프로세서는 수신된 명령에 따라 SDP 네트워크 노드의 구성을 업데이트하고 수신된 패킷을 처리한다.

Description

소프트웨어 정의 프로토콜 네트워크 노드를 위한 시스템 및 방법{SYSTEM AND METHOD FOR A SOFTWARE DEFINED PROTOCOL NETWORK NODE}
본 특허출원은, 2014년 1월 21일에 출원되고 발명의 명칭이 "System and Method for a Software Defined Protocol Network Node"인 미국 출원 번호 No. 14/160,146 에 대한 우선권을 주장하는 바이며, 상기 문헌의 내용은 그 전체로서 원용에 의해 본 명세서에 포함된다.
본 개시(disclosure)는 일반적으로 디지털 통신에 관한 것으로, 더욱 상세하게는, 소프트웨어 설계 네트워킹(software designed networking, SDN) 네트워크 노드를 위한 시스템 및 방법에 관한 것이다.
현재 네트워크 데이터 평면(plane) 프로토콜은 단대단(end-to-end) 7 계층(7layer) 프로토콜 스택(stack)을 토대로 한다. 각 계층 내에 독립적인 프로세스가 있으며, 독립된 계층들 사이의 상호작용(interaction)은 계층들 사이의 프리미티브(primitives)들을 통한다. 단대단 데이터 평면 프로세스의 많은 기능(function)들은 네트워크의 링크 데이터 프로세스 기능마다 낮은 계층(lower layer)과 공존한다. 현재 프로토콜 스택이 세션(들)에 대하여 고정되고 미리 구성되어, 네트워크 상태 변화(status change)에 적응할 수 없다. 현재 프로토콜 스택 설계(design)는 애플리케이션 체감 품질(quality of experience, QoE)마다 긴밀하게(tightly) 매칭되는 프로비저닝(provisioning)을 금지하는 제한된 수의 옵션(option)들을 제공한다. 현재 프로토콜 스택 셀계는 소프트웨어 설계 네트워킹(SDN) 개념(concept)을 고려하고 있지 않으며, 이는 SDN의 장점(benefits)을 완전히 이용하는 것을 막는다. 현재 프로토콜 스택은 모든 단대단 호스트들을 동일하게 처리하고 있지만, 많은 새로운 및/또는 미래 서비스들 및/또는 애플리케이션, 예를 들어, M2M(machine-to-machine) 통신이 사용자 정의 프로토콜 스택(custom protocol stack)을 요구할 수 있다.
본 개시의 실시 예들(example embodiments)은 소프트웨어 설계 네트워킹(SDN) 네트워크 노드를 위한 시스템 및 방법을 제공한다.
본 개시의 실시 예에 따르면, 소프트웨어 설계 프로토콜(software designed protocol, SDP) 네트워크 노드가 제공된다. SDP 네트워크 노드는 수신기와 상기 수신기에 동작 가능하게(operatively) 연결된 프로세서를 포함한다. 상기 수신기는 명령(instruction)을 수신하고 패킷을 수신한다. 상기 프로세서는 상기 수신된 명령에 따라, 상기 SDP 네트워크 노드의 구성을 업데이트하고 상기 수신된 패킷을 처리한다.
본 개시의 다른 실시 예에 따르면, 소프트웨어 설계 프로토콜(SDP) 네트워크 노드를 동작시키는(operating) 방법이 제공된다. 상기 방법은, 상기 SDP 네트워크 노드가 처리 명령(processing instructions)을 수신하는 단계와, 상기 SDP 네트워크 노드가 제1 패킷을 수신하는 단계를 포함한다. 상기 방법은 또한 상기 SDP 네트워크 노드가 상기 제1 패킷의 정보를 식별하는 것에 따라 상기 제1 패킷을 분류하는 단계와, 상기 SDP 네트워크 노드가 상기 처리 명령에 따라 상기 제1 패킷을 처리하는 단계를 포함한다.
본 개시의 다른 실시 예에 따르면, 소프트웨어 설계 프로토콜(SDP) 네트워크 노드가 제공된다. SDP 네트워크 노드는 수신기와 상기 수신기에 동작 가능하게 연결된 프로세서를 포함한다. 수신기는 처리 명령을 수신하고 패킷을 수신한다. 상기 프로세서는 상기 패킷의 정보를 식별하는 것에 따라 상기 패킷을 분류하고, 상기 처리 명령에 따라 상기 패킷을 처리한다.
실시 예의 한 효과는 데이터 평면에서의 유연성(flexibility)이 향상되는 것이며, 예를 들어, 장비 설치 후에 프로토콜이 추가되거나 및/또는 변경될 수 있으며, 우수한 프로토콜 특징(finer protocol features)들이 가능하다는 것 등이 있다.
실시 예의 추가적인 효과는 데이터 평면에서의 효율성(efficiency)이 향상되는 것이며, 예를 들어, 불필요한 기능성(functionality)이 제거될 수 있다는 것 등이 있다.
본 개시와 그 효과의 보다 완벽한 이해를 위하여, 첨부한 도면에 대해 다음의 설명을 참조로 한다.
도 1은 여기에 기술되는 실시 예들에 따른 데이터 평면 처리 기능 고장(function breakdown)과 상호 작용하는 예시적인 SDP 및 SDN을 나타낸다.
도 2는 여기에 기술되는 실시 예들에 따른 예시적인 통신 시스템을 나타낸다.
도 3a 및 도 3b는 여기에 기술되는 실시 예들에 따른 제1 예시적인 캐리어 메타(carrier meta)-프로토콜 패킷 포맷과 제2 예시적인 캐리어 메타-프로토콜 패킷 포맷을 나타낸다.
도 4는 여기에 기술되는 실시 예들에 따른 예시적인 SDP 네트워크 노드의 구조(architecture)를 나타낸다.
도 5는 여기에 기술되는 실시 예들에 따른 제1 예시적인 소프트웨어 프로토콜 엔진의 구조를 나타낸다.
도 6은 여기에 기술되는 실시 예들에 따른 제2 예시적인 소프트웨어 프로토콜 엔진의 구조를 나타낸다.
도 7은 여기에 기술되는 실시 예들에 따른, 소프트웨어 프로토콜 엔진이 패킷들을 처리하면서 소프트웨어 프로토콜 엔진에서 발생하는 예시적인 동작들(operations)의 흐름도를 나타낸다.
도 8a는 여기에 기술되는 실시 예들에 따른, 모놀리식 처리(monolithic processing)를 활용하는 패킷 플로 우선순위 결정(prioritization)을 제공하는 소프트웨어 프로토콜 엔진에서 발생하는 예시적인 동작들의 흐름도를 나타낸다.
도 8b는 여기에 기술되는 실시 예들에 따른, 계층 처리(layered processing)를 활용하는 패킷 플로 우선순위 결정을 제공하는 소프트웨어 프로토콜 엔진에서 발생하는 예시적인 동작들의 흐름도를 나타낸다.
도 9는 여기에 기술되는 실시 예들에 따른 예시적인 VNN의 구조를 나타낸다.
도 10은 여기에 기술되는 실시 예들에 따른 예시적인 VNN 매니저에서 발생하는 예시적인 동작들의 흐름도를 나타낸다.
도 11은 여기에 기술되는 실시 예들에 따른, SDP 네트워크 노드가 소프트웨어를 업데이트 및/또는 설치하면서 SDP 네트워크 노드에서 발생하는 예시적인 동작들의 흐름도를 나타낸다.
현재의 실시 예들의 동작(operation)과 그의 구조(structure)가 하기에 상세하게 논의된다. 그러나 본 개시(disclosure)는 넓고 다양한 특정 컨텍스트(contex)에서 실시될 수 있는 많은 적용가능한 발명의 개념(concept)들을 제공하는 것으로 인식되어야 한다. 기술되는 특정 실시 예들은 단지 본 개시의 특정 구조와 본 개시를 동작시키는 방식(way)의 예시이며, 본 개시의 범위(scope)를 한정하지 않는다.
본 개시의 하나의 실시 예는 SDN 네트워크 노드에 관한 것이다. 예를 들어, 소프트웨어 설계 프로토콜(software designed protocol, SDP) 네트워크 노드는 명령을 수신하고 패킷을 수신한다. SDP 네트워크 노드는 또한 수신된 명령에 따라 SDP 네트워크 노드의 구성을 업데이트하고, 수신된 패킷을 처리한다.
본 개시는 특정 컨텍스트 즉, 소프트웨어 정의 네트워크(software defined networks)에서의 실시 예들에 대하여 기술될 것이다. 본 개시는 표준을 준수하는 (standards compliant) SND들과 표준을 준수하지 않는(non-standards compliant) SDN들에 적용될 수 있다.
미래 네트워크들은 일반적으로 트래픽을 다수 타입의 서비스들 또는 심지어 자연(nature)(예를 들어, 비디오 트래픽과 M2M 트래픽)을 트래픽들과 결합할 수 있다. 네트워크 성능을 최적화하고, 다양한 공존하는 서비스 품질(quality of service, QoS) 클래스들에 대하여 서비스를 제공하기 위하여, 미래 네트워크는 모든 QoS 목표들을 달성하기 위하여, 소프트웨어 정의 네트워킹(software defined networking, SDN)으로 중앙 집중식 관리(centralized management)를 요구할 수 있다. 그러나 심지어 SDN으로도, 네트워크의 성능은 여전히 근본적인 프로토콜(underlying protocols)에 의해 제한된다.
도 1은 데이터 평면 처리 기능 고장(data plane process function breakdown)을 가지는 예시적인 소프트웨어 정의 프로토콜(software defined protocols, SDP)과 SDN 상호작용(interaction)(100)을 나타낸다. 상이한 능력의 데이터 처리 기능들을 가지는 다수 타입의 노드들이 있다. 중앙 집중식 SDP 매니저는 네트워크 에지(edges) 사이에서 데이터 소스(source)로부터 데이터 싱크(sink)까지 등 단대단(end to end) 데이터 평면 프로세스를 제어한다. SDN과 SDP 사이에 타이트한(tight) 상호작용이 있다.
도 2는 예시적인 통신 시스템(200)을 나타낸다. 통신 시스템(200)은 SDN 통신 시스템일 수 있다. 통신 시스템(200)은 SDN 매니저(205), SDP 매니저(207), 및 예를 들어, SPD 네트워크 노드들(209~215)과 같은 다수의 SDP 네트워크 노드들을 포함한다. SDN 매니저(205)는 경로(즉, 출발지(source)로부터 목적지(destination)까지의 트래픽 플로(flow)에 대한 SDP 네트워크 노드들의 시퀀스)를 결정하고, 트래픽 플로의 경로의 SDP 네트워크 노드 내에서 패킷들을 가상 네트워크 노드들에 포워딩하는데 사용되는 포워딩 정보 베이스(forwarding information base, FIB)를 구성하기 위하여 정보를 제공할 수 있다. FIB는 FIB(217)에서와 같이, SDP 네트워크 노드들에 저장될 수 있다.
SDP 매니저(207)는 트래픽 플로에 대하여 프로토콜(들)을 결정할 수 있으며, 프로토콜을 구현하기 위하여 경로에 따라 SDP 네트워크 노드들을 셋업(set up)할 수 있다. SDP 네트워크 노드들 중의 하나가 트래픽 플로에 대한 프로토콜(들)을 이미 지원하지 않으면, SDP 매니저(207)는 프로토콜(들)을 구현하기 위한 소프트웨어 디스크립션(들), 워크플로 시퀀스 디스크립션(들), 패킷 플로 식별자(들)과 프로토콜(들) 등을 포함하는 처리 명령(processing instructions)을 SDP 네트워크 노드들에 제공할 수 있다. SDP 매니저(207)는 경로의 SDP 네트워크들 각각에 처리 명령을 제공할 수 있다.
SDP 네트워크 노드(209)와 같은 SDP 네트워크 노드는 VNN(219)과 같은 하나 이상의 가상 네트워크 노드(virtual network nodes, VNN)를 구현할 수 있다. VNN은 SDP 네트워크 노드의 가시화(virtualization)일 수 있으며, 프로토콜 정보 베이스(protocol information base, PIB)(221)와 프로토콜(223)과 같은 하나 이상의 프로토콜을 포함할 수 있다. 각각의 VNN은 하나의 가상 사설 네트워크(virtual private network, VPN)에 의해 요구되는 프로토콜들을 구현할 수 있다. 하나의 예로서, VNN이 2개의 프로토콜을 지원하면, SDP 네트워크 노드는 적어도 2개의 VNN을 포함할 수 있다. 도 2에 도시된 바와 같이, SDP 네트워크 노드(209)는 3개의 프로토콜들을 지원하며, VNN(219)을 포함하는 3개의 VNN들을 포함한다. SDP 네트워크 노드는 또한 SDP 매니저에 의해 제공되는 바와 같이, 프로토콜(들)의 소프트웨어 디스크립션을 구현할 수 있다. SDP 네트워크 노드는 패킷을 수신하기 위하여 프로토콜(들)의 소프트웨어 디스크립션을 적용할 수 있다. SDP 네트워크 노드는 또한 패킷 플로 식별자들 및/또는 프로토콜들을 수신할 수 있으며, 패킷 플로 식별자들은 프로토콜들과 연관될 수 있다.
소스(225)는 패킷(229)을 통신 시스템(200)에 삽입(inject)할 수 있다. 패킷(229)은 다른 것들 중에서, 데이터를 포함할 수 있다. 패킷(229)은 SDP 네트워크 노드(209)에서 수신되고 VNN(219)에 의해 처리되며, 이는 PIB(221)에 따라 프로토콜 스택 구현(implementation)(223)에 의해 처리된다. 프로토콜 스택 구현(223)에 의한 처리가 예를 들어, 헤더 P1과 P2(총괄하여 도시된 헤더(231))를 패킷(229)에 추가한다. SDP 네트워크 노드(209)에 의해 변경된 패킷(229)은 SDP 네트워크 노드(211)에서 수신된다. SDP 네트워크 노드(211)에서 VNN에 의한 처리는 예를 들어, 헤더 P3(233)를 패킷(229)에 추가한다. SDP 네트워크 노드(211)에 의해 변경된 패킷(229)은 SDP 네트워크 노드(213)에서 수신된다. SDP 네트워크 노드(213)에서 VNN에 의한 처리는 예를 들어, 패킷(229)으로부터 헤더 P1과 P2(총괄적으로 도시된 헤더(231))를 남겨두고 헤더 P3를 제거한다. SDP 네트워크 노드(213)에 의해 변경된 패킷(229)은 SDP 네트워크 노드(215)에서 수신된다. SDP 네트워크 노드(215)에서 VNN에 의한 처리는 패킷(229)에서 다른 것들 중에서 데이터를 남겨두고 헤더 P1과 P2를 제거한다. 패킷(229)은 예를 들어, 목적지(227)로 제공된다.
실시 예에 따르면, SDP 매니저(207)와 같은 SDP 매니저는 SDP 네트워크 노드 능력(capabilitie) 및 상태(status) 정보의 데이터베이스를 유지(maintain)할 수 있다. SDP 네트워크 노드의 능력들의 데이터베이스는 처리 속도, 프로세서의 수, 프로토콜 소프트웨어를 업데이트할 능력(ability), 지원되는 프로토콜 동작들의 타입(예를 들어, 시스템 운영 시스템, 하드웨어 버전 등) 등과 같은 정보를 포함할 수 있다. SDP 네트워크 노드의 상태 정보의 데이터는 측정된 처리 속도, 부하(load), 프로토콜 상태 정보(예를 들어, 윈도우 사이즈, 버퍼 사이즈, 레이턴시(latency), 오류율(error rate) 등)를 포함할 수 있다. SDP 매니저는 가상 네트워크의 SDP 네트워크 노드을 관리할 수 있으며, 또는 SDP 네트워크 노드들은 이동성 및/또는 전력 상태에 따라 오고 갈 수(come and go) 있다.
데이터베이스에 저장되는 정보는 수(number)에 따라 실행 불가능할 수 있음에도 불구하고, 통신 시스템의 오퍼레이터(operator)에 의해 진입(enter)될 수 있다. 동적 디스커버리 메커니즘(dynamic discovery mechanism)이 동적으로 변화하는 통신 시스템(dynamically changing communications system)을 지원하기 위하여 사용될 수 있다. 예시적인 예로서, SDP 매니저가 SDP 네트워크 노드들에게 그들의 능력 및/또는 상태를 질의하기 위하여 프로브(probe) 메시지를 보낼(send) 수 있다. 선택적인 예시적인 예로서, SDP 네트워크 매니저는 주기적으로(또는 능력 및/또는 상태에서의 변화와 같은 이벤트 발생에 따라) 능력 및/또는 상태에 대한 정보를 보낼 수 있다.
실시 예에 따르면, SDP 매니저는 패킷 처리를 위한 소프트웨어 SDP 네트워크 노드들을 공급(provision)할 수 있다. SDP 매니저는 프로토콜 소프트웨어 업데이트(들)을(SDP 네트워크 노드가 하드웨어 능력을 가지지만 소프트웨어 능력을 가지지 않으면 또는 일반적인 업데이트) SDP 네트워크 노드에 보낼 수 있다. SDP 매니저는 프로토콜들의 소프트웨어 버전이 경로의 모든 SDP 네트워크 노드들에 대해 일관되는(onsistent) 것을 보장할 수 있다. SDP 매니저는 어떤 SDP 네트워크 노드가 어떤 단대단 플로에 대하여 어떤 소프트웨어 프로토콜 스택을 구현해야 하는지를 결정할 수 있다. SDP 매니저는 포워딩 테이블을 셋업하여 플로 식별자들을 소프트웨어 정의 프로토콜 스택에 매핑한다. SDP 매니저는 어토믹(atomic) 프로토콜 계층들, 계층 배열(layer ordering), 프로토콜의 파라미터들(최대 윈도우 사이즈, 최소 윈도우 사이즈 등)을 포함하는, 프로토콜 스택 구성을 위한 명령을 보내서 프로토콜을 셋업할 수 있다.
실시 예에 따르면, SDP 매니저는 메시지들을 다양한 포맷으로 송신할 수 있다. 메시지는 이진 포맷(binary format), 일반 텍스트 포맷, 확장가능한 마크업 언어(extensible markup language (XML) 포맷 등일 수 있다. 예시적인 예로서, 소프트웨어 업그레이드 및/또는 설치를 위하여 사용되는 SDP로부터의 메시지는, 소프트웨어 업데이트에서의 프로토콜들의 리스트, SDP 매니저의 검증에서의 사용을 위한 SDP 매니저의 디지털 서명, 소프트웨어 업데이트의 검증에서의 사용을 위한 암호화 해쉬(encryption hash), 그리고 이진 포맷, 바이트 코드(byte-code) 포맷, 텍스트 스크립트 등의 소프트웨어를 포함할 수 있다. 다른 예시적인 예로서, 새로운 패킷 플로를 셋업하는데 사용되는 SDP 매니저로부터의 메시지는, 패킷 플로 식별자, 패킷 플로 우선순위, 순서대로 패킷 플로(즉, 워킹 플로)에 대해 적용될 프로토콜들의 리스트, 프로토콜 서브태그(sub-tag)를 판독하기 위한 명령 등을 포함할 수 있다. 또 다른 예시적인 예로서, 패킷 플로를 분해(tear-down)하는데 사용되는 SDP 매니저로부터의 메시지는 패킷 플로 식별자 등을 포함할 수 있다.
실시 예에 따르면, SDP 네트워크 노드 (209)와 같은 SDP 네트워크 노드는 SDP 매니저로부터 메시지를 수신하고, 메시지에서 명령된 바와 같이 데이터 평면을 구현할 수 있다. 데이터 평면은 메타-캐리어 프로토콜을 활용할 수 있다. 예시적인 예로서, SDP 네트워크 노드에 의한 프로토콜 처리는 순차적 또는 계층적 프로토콜 처리를 사용하는 다수의 프로토콜을 위한 대량 병렬 처리(massively parallel processing)을 지원하는 하드웨어 구조(architecture)를 사용할 수 있다. 혼합 처리(Mixed processing)는 또한 순차적(사일로(silo)) 처리를 위한 일부 패킷 플로와 병렬 및/또는 계층 처리를 위한 일부 패킷 플로를 스케줄링하는 것에 의해 가능할 수 있다. 다른 예시적인 예로서, 교차 계층(cross-layered) 정보 교환(exchange) 및 교차 계층 프로토콜 처리는 공유 프로토콜 데이터베이스(shared protocol database)를 사용하는 메커니즘을 통하여 지원될 수 있다. 연결 속성(connection properties)들의 공유 데이터베이스는 각 계층에 의해 액세스될 수 있다. 또 다른 예시적인 예로서, 일부 프로토콜 계층 구현은 SDP 네트워크 노드 상에 설치될 수 있으며, 어토믹 동작(atomic operations)(시퀀스내 전달(in-sequence delivery), 신뢰할 수 있는 전달(reliable delivery), 혼잡 제어(congestion control), 압축, 압호화 등을 포함), 복잡한 동작(complex operations)(시퀀스 내 신뢰가능한 전달, 혼잡 제어를 가지는 시퀀스내 신뢰가능한 전달 등을 포함), 네트워크 서비스(가령, 방화벽(firewalls), 플로 집계(flow aggregation) 등), 컨텐트 처리(가령, 비디오 스트림 압축 등) 등을 포함할 수 있다. 프로토콜 우선순위 결정은 SDP 네트워크 노드 상에서의 큐 스케줄링과 자원 할당에 의해 지원될 수 있다.
실시 예에 따르면, 캐리어 메타-프로토콜은 SDP 네트워크 노드에서의 패킷의 처리를 위한 정보를 함유(contain)할 수 있다. 예로서, 프로토콜에서의 정보는 패킷 플로와 그의 프로토콜 처리 워크플로를 식별하는 데 사용된다. 도 3a 및 도 3b는 제1 예시적인 캐리어 메타-프로토콜 패킷 포맷(300)과 제2 예시적인 캐리어 메타-프로토콜 패킷 포맷(350)을 나타낸다. 가상 네트워크 식별자(virtual network identifier, VNID) 필드(305, 355)는 가상 네트워크를 식별하는 데 사용되는 식별자(VNID)를 함유할 수 있다. VNID는 플로 ID 필드(307, 357)에 함유되어 있는 플로 식별자(플로 ID)의 독립적인 개별 값일 수 있으며 또는 VNID는 플로 ID에서 유추되거나 내장될 수 있으며, VNID 필드(305, 355)의 생략을 허용할 수 있다. 플로 ID 필드(307, 357)는 단대단 연결 및/또는 서비스를 식별하는 데 사용될 수 있다. SDN 매니저는 제1 패킷이 수신되기 전에 플로 ID를 사용하여 가상 회로를 셋업할 수 있다. 플로 ID로서 사용될 수 있는 식별자의 예는 5-터플(tupple) 기반의 인터넷 프로토콜, 애플리케이션 및/또는 서비스 식별자, 가상 LAN(VLAN) 네트워크 태그, 다중프로토콜 레벨 스위칭(multiprotocol label switching, MPLS) 태그, 사설(private) 가상 네트워크 태그(8비트, 16비트, 32비트 등), 자기 링크(가령, 정수 값에 대해 해쉬된(hashed) URL(universal resource locator)), 암호화된 및/또는 압축된 및/또는 해쉬된 값들의 임의 조합의 그룹 등을 포함한다. 패킷은 프로토폴 처리를 바이패스(bypass)하기 위하여, 헤더의 검사 없이 포워딩될 수 있음을 주목한다.
캐리어 메타-프로토콜 패킷 포맷(300)은 또한 패킷 플로의 프로토콜 워크플로에서 프로토콜에 관한 조합된 정보를 운반하는 캐리어 프로토콜 헤더 필드(309)를 포함할 수 있다. 캐리어 메타-프로토콜 패킷 포맷(300)은 또한 예를 들어, 패신저(passenger) 프로토콜 헤더 및 데이터 필드(311)에 저장된, 캐리어의 프로토콜 스택의 상태에 관한 정보를 포함할 수 있다. 캐리어 메타-프로토콜 패킷 포맷(350)은 또한, 패킷 플로의 프로토콜 워크플로에서 프로토콜에 관한 조합된 정보를 운반하는 캐리어 프로토콜 헤더 필드(359)를 포함할 수 있다. 캐리어 메타-프로토콜 패킷 포맷(350)은 또한 예를 들어, 서브프로토콜 ID 필드(361), 서브프로토콜 헤더 필드(363), 서브프로토콜 ID 필드(365) 및 서브 프로토콜 헤더 필드(367)에서, 향상된 계층화(layering) 능력들을 위한 상이한 서브프로토콜들의 개별적인 헤더들을 포함할 수 있다. 일반적으로(Typically), 서브 프로토콜 ID는 패킷 플로에 대하여 적용할 어토믹 서브프로토콜의 식별자를 함유하며, 서브프로토콜 헤더는 서브프로토콜 ID로 식별되는 프로토콜에 대한 정보를 포함한다. 패신저 프로토콜 헤더 및 데이터 필드(369)는 패킷 플로에 대한 프로토콜 워크플로에 관한 부가적인 정보를 운반할 수 있다. 서브프로토콜 ID와 서브프로토콜 헤더는 각 홉(hop)에서 패킷으로부터 푸쉬(pushed)되거나(추가되거나) 또는 팝될(popped)(제거될) 수 있다. 서브프로토콜 헤더는 스택에서 프로토콜을 식별할 수 있으며 또는 태그는 스택에서 프로토콜을 식별할 수 있다.
도 4는 예시적인 SDP 네트워크 노드(400)의 구조를 나타낸다. SDP 네트워크노드(400)는 NIC(405)와 같은, 패킷을 수신하고 전달하는 다수의 네트워크 인터페이스(network interface, NIC)를 포함한다. NIC들은 SDP 매니저에 의해, 예를 들어, 포워딩 및 처리에 대하여 지시받을 수 있다. 하나의 예로서, 다른 패킷들이 다른 NIC로 포워딩될 수 있으며, 일부 패킷들은 추가적인 프로토콜 처리를 위해 통과(pass)될 수 있다. 일반적으로, SDP 네트워크 노드 상의 NIC들은 이더넷(Ethernet), IEEE 802.3, IEEE 802.11, IEEE 802.16, 3GPP(Third Generation Partnership ) LTE( Long Term Evolution), 3GPP LTE-Advanced 등과 같은 다수의 유선 또는 무선 프로토콜 타입들을 지원할 수 있다. NIC(405)와 같은 NIC는 통신 시스템에 대하여 연결성(connectivity)을 허용하는 네트워크 포트(407), 처리 능력을 제공하는 중앙 처리 유닛(central processing unit, CPU)(409), 수신된 패킷을 저장하는 고속(fast) 데이터 메모리(411)를 포함할 수 있다. NIC는, 패킷에 연관된 FIB가 NIC에게 그렇게 하도록 지시하면, 프로토콜 처리를 위해 메모리(413)로 일부 패킷을 전달할 수 있다. FIB들 없이 일부 SDP 네트워크 노드들을 가질 수 있으므로, 모든 패킷들이 프로토콜 처리를 위해 메모리(413)로 전달된다.
랜덤 액세스 메모리(random access memory, RAM)를 사용하여 구현될 수 있는 메모리(413)는 프로토콜 상태(415), 패킷 처리 소프트웨어 및/또는 스크래치(scratch) 메모리(417), 소프트웨어(419) 등뿐만 아니라 패킷을 저장할 수 있다. SDP 네트워크 노드(400)는 또한 일반적(generic) CPU(421)와 같은, 메모리(413)를 활용하여 패킷을 처리하기 위하여 처리 능력을 제공하는 다수의 일반적인 CPU를 포함할 수 있다. 선택적으로, 일반적인 CPU들에 대하여 개별적인 메모리들 및/또는 고속 링크들 또는 버스들을 사용하는 것이 가능하다. 병렬 처리는 크로스 플로(cross flow)(즉, 수직 병렬처리(vertical parallelism)), 교차 계층(across layers)(즉, 수평 병렬처리(horizontal parallelism)) 또는 이들의 조합을 활용하는 SDP 네트워크 노드(400)에 의해 지원될 수 있다. 특수(special) ASIC(application specific integrated circuits), 예를 들어, 특수 ASIC(423)는 특수 처리를 위한 처리 능력을 제공할 수 있다. 하나의 예로서, TCAM(ternary content addressable memory)은 빠른 어드레스 검색(lookup)을 제공할 수 있으며, 또는 디지털 신호 프로세서(digital signal processor, DSP) 코어는 무선 신호 처리를 제공할 수 있다.
도 5는 제1 예시적인 소프트웨어 프로토콜 엔진(500)의 구조를 나타낸다. 소프트웨어 프로토콜 엔진(500)은 모놀리식 처리를 특징으로 한다. 소프트웨어 프로토콜 엔진(500)은 가상 머신일 수 있으며, 또는 다수 패킷 플로들 간에 공유될 수 있다. 소프트웨어 프로토콜 엔진(500)은 다수의 VNN들 또는 다수의 VNN들의 패킷 플로들 간에 공유될 수 있다. 소프트웨어 프로토콜 엔진(500)은 프로토콜 처리를 위해 어떻게 일부 수신된 패킷들을 전달하고 일부 수신된 패킷들을 다른 SDP 네트워크 노드들로 보낼지를 결정하는 데 사용될 수 있는 PIB(505)를 포함한다. 프로토콜 처리를 위해 전달된 수신된 패킷들은 인커밍 패킷 큐(incoming packet queue)(507)에 저장될 수 있으며, 프로토콜 처리를 대기한다. 프로토콜 라이브러리(protocol library)(509)는 비록 모든 지원되는 프로토콜들이 활성화(active)되지 않지만, 소프트웨어 프로토콜 엔진(500)에 의해 지원되는 프로토콜들을 포함한다. 프로토콜 스택(511)은 활성화된 프로토콜들을 위한 스택들을 포함한다. 디스패쳐(dispatcher)(513)는 인커밍 패킷 큐(507)에 저장된 패킷들을, 프로토콜 스택(511)의 프로토콜 사일로(silo)에서의 프로토콜 처리를 위하여 그들의 대응하는 프로토콜에 디스패치할 수 있다. 프로토콜 처리의 결과는 프로토콜 상태 데이터베이스(517)에 저장될 수 있으며, 자신의 목적지로 계속될 패킷들은 다른 SDP 네트워크 노드로의 다음 전달을 기다리기 위하여 아웃고잉(outgoing) 패킷 큐(519)에 위치될 수 있다. 프로토콜 프로비저닝(provisioning) 데이터베이스(521)는 소프트웨어 프로토콜 엔진(500)에 의해 지원되는 프로토콜을 위해, 소프트웨어, 명령, 파라미터 등을 저장할 수 있다. 프로토콜 프로비저닝 데이터베이스(521)는 또한 소프트웨어 프로토콜 엔진(500)에서 아직 구현되지 않는 프로토콜을 위해, 소프트웨어, 업데이트, 업그레이드 등을 저장할 수 있다. 소프트웨어 프로토콜 엔진(500)은 또한 SDP 노드 관리 유닛(523)을 저장한다. SDP 노드 관리 유닛(523)은 프로토콜 스택과의 패킷 플로의 연관(associations)을 잠재적으로 언급하는 명령들의 일부와, 디스패쳐(513) 및/또는 프로토콜 자체에서의 플로의 우선순위결정(prioritization)을 잠재적으로 언급하는 다른 명령들을 가지고, SDP 매니저로부터 명령을 수신하고, SDP 매니저로부터의 명령에 따라 소프트웨어 프로토콜 엔진(500)을 구성한다. SDP 노드 관리 유닛(523)은 동작 가능하게 PIB(505), 프로토콜 프로비저닝 데이터베이스(521), 디스패쳐(513)에 연결될 수 있다.
실시 예에 따르면, 프로토콜 사일로는 SDP 네트워크 노드가 새로운 패킷 플로를 통지받는 경우 동적 가능하게 구축될(built) 수 있다. 프로토콜 사일로는 기능들의 순서화된 리스트를 포함할 수 있으며, 이는 프로토콜 스택(511)에서 각 프로토콜을 구현한다. 프로토콜 매핑에 대한 패킷 플로는 PIB(505)에 저장될 수 있다. 프로토콜은 그들의 상태를 계속 추적하기 위하여 프로토콜 상태 데이터베이스(517)를 사용하며, 이는 계층에 걸쳐서 공유를 가능하게 할 수 있다. 프로토콜 상태 테이터베이스(517)에 저장된 정보의 예는 패킷 시퀀스 번호, 이용가능한 패킷 크레딧(credits), 보안 키(security keys), 큐 길이(queue length), 윈도우 사이즈, HOL(head of line) 지연, 큐잉된 패킷 타입(queued packet types) 등을 포함한다.
실시 예에 따르면, 디스패쳐(513)는 자원을 관리하고 편성한다(coordinate). 하나의 예로서, 디스패쳐(513)는 처리할 패킷을 선택하고, 선택된 패킷을 서브(serve)할 CPU 및/또는 ASIC를 선택할 수 있다. 디스패쳐(513)는 선택된 패킷에 대한 할당 프로토콜 사일로(assigned protocol silo)를 호출할 수 있다. 디스패쳐(513)는 인커밍 패킷 큐(507)로부터의 패킷을 CPU(활성화된 동작으로 도시된)로 핸드오버하며, CPU로부터의 패킷을 아웃고잉 패킷 큐(519)로 핸드오버할 수 있다. 디스패쳐(513)는 인커밍 패킷 큐(507)와 아웃고잉 패킷 큐(519)에서의 패킷을 스케줄링하여 플로 우선순위들을 적용할 수 있으며, 또한 프로토콜 우선순위를 구별하기 위하여 프로세서(CPU 및/또는 ASIC)들 할당할 수 있다.
도 6은 제2 예시적인 소프트웨어 프로토콜 엔진(600)의 구조를 나타낸다. 소프트웨어 프로토콜 엔진(600)은 계층 처리를 특징으로 한다. 소프트웨어 프로토콜 엔진(600)은 프로토콜 처리를 위해 어떻게 일부 수신된 패킷을 전달하고 일부 수신된 패킷을 다른 SDP 네트워크 노드로 보낼지를 결정하는 데 사용될 수 있는 PIB(605)를 포함한다. 프로토콜 처리를 위해 전달된 수신된 패킷은 프로토콜 처리를 대기하는 인커밍 패킷 큐(607)에 저장될 수 있다. 프로토콜 라이브러리(609)는 비록 모든 지원되는 프로토콜들이 활성화되지 않지만, 소프트웨어 프로토콜 엔진(600)에 의해 지원되는 프로토콜들을 저장한다. 작업(work) 큐(611)는 활성화된 프로토콜을 위한 큐들을 포함한다. 디스패쳐(613)는 인커밍 패킷 큐(607)에 저장된 패킷들을 작업 큐(611)의 작업 큐들에서의 프로토콜 처리를 위하여 그들의 대응하는 프로토콜에 디스패치할 수 있다. 패킷들은 하나의 계층별로(layer by layer) 처리될 수 있다. 각 계층에 대하여, 디스패쳐(613)는 이용가능한 CPU(예를 들어 활성화된 동작(615)과 같이, 활성화된 동작으로서 도시됨)을 선택할 수 있다. 프로토콜 처리의 결과는 프로토콜 상태 데이터베이스(617)에 저장될 수 있으며, 자신의 목적지로 계속될 패킷들은 다른 SDP 네트워크 노드로의 다음 전달을 기다리기 위하여 아웃고잉 패킷 큐(619)에 위치될 수 있다. 프로토콜 프로비저닝 데이터베이스(621)는 소프트웨어 프로토콜 엔진(600)에 의해 지원되는 프로토콜을 위해, 소프트웨어, 명령, 파라미터 등을 저장할 수 있다. 프로토콜 프로비저닝 데이터베이스(621)는 또한 소프트웨어 프로토콜 엔진(600)에서 아직 구현되지 않는 프로토콜을 위해, 소프트웨어, 업데이트, 업그레이드 등을 저장할 수 있다.
디스패쳐(613)는 현재 계층의 처리가 완료된 후에, 처리를 위한 다음 계층을 동적으로 결정하기 위하여 프로토콜 프로비저닝 데이터베이스(621)를 사용할 수 있다. 일반적으로, 디스패쳐(613)는 자원을 관리하고 편성한다. 하나의 예로서, 디스패쳐(613)는 패킷을 선택하기 위하여 플로 우선순위를 사용하여 처리할 패킷을 선택할 수 있으며, 디스패쳐(613)는 작업큐를 선택하기 위하여 패킷의 우선순위를 사용하여 패킷을 위치시킬 작업 큐를 선택할 수 있고, 디스패쳐(613)는 프로토콜 헤더를 사용하거나 PIB(605)를 참조하여 패킷에 대해 할당된 프로토콜을 호출할 수 있다. 다른 예로서, 디스패쳐(613)는 패킷 플로마다 프로토콜 계층당 하나의 처리 스레드(thread)를 가지고 각 패킷에 대하여 CPU 상에서의 처리를 스케줄링할 수 있다. 또 다른 예로서, 디스패쳐(613)는 CPU로부터의 패킷을 아웃고잉 패킷 큐(519)로 핸드오버할 뿐만 아니라, 작업 큐(611)로부터의 패킷을 CPU로 핸드오버하고 다시 작업 큐(611)로 핸드오버할 수 있다. 소프트웨어 프로토콜 엔진(600)은 또한 SDP 노드 관리 유닛(623)을 포함한다. SDP 노드 관리 유닛(523)은 프로토콜 스택과의 패킷 플로의 연관을 잠재적으로 언급하는 명령들의 일부와, 디스패쳐(513) 및/또는 프로토콜 자체에서의 플로의 우선순위결정을 잠재적으로 언급하는 다른 명령들을 가지고, SDP 매니저로부터 명령을 수신하고, SDP 매니저로부터의 명령에 따라 소프트웨어 프로토콜 엔진(600)을 구성할 수 있다. SDP 노드 관리 유닛(623)은 동작 가능하게 PIB(605), 프로토콜 프로비저닝 데이터베이스(621), 디스패쳐(613)에 연결될 수 있다.
실시 예에 따르면, 수평 병렬처리는 과부하(heavily loaded) 계층들에 대하여 더 많은 CPU를 할당하고 저부하(lightly loaded) 계층들에 대하여 더 적은 CPU를 할당하는 것에 의해, 더 나은 부하 분산(load balancing)을 달성할 수 있다. 디스패쳐(613)는 인커밍 패킷 큐(607)와 아웃고잉 패킷 큐(619)를 스케줄링하여 플로 우선순위를 적용할 수 있다. 디스패쳐(613)는 또한 프로토콜 우선순위를 구별하기 위하여 CPU를 할당할 수 있다. 디스패쳐(613)는 또한 가상 머신 하이퍼바이저를 포함할 수 있다.
도 7은 소프트웨어 프로토콜 엔진이 패킷을 처리하면서 소프트웨어 프로토콜 엔진에서 발생하는 예시적인 동작들(700)의 흐름도를 나타낸다. 동작들(700)은 소프트웨어 프로토콜 엔진이 패킷을 처리하면서, 소프트웨어 프로토콜 엔진(500) 또는 소프트웨어 프로토콜 엔진(600)과 같은, SDP 네트워크 노드의 소프트웨어 프로토콜 엔진에서 발생하는 동작들을 나타낸다.
동작들(700)은 소프트웨어 프로토콜 엔진이 패킷 처리 명령을 수신하면서 시작된다(블록 705). 소프트웨어 프로토콜 엔진(또는 그것의 SDP 노드 관리 유닛)은 SDP 매니저로부터 패킷 처리 명령을 수신한다. 소프트웨어 프로토콜 엔진은 패킷 플로 마다 한번 패킷 처리 명령을 수신할 수 있다. 소프트웨어 프로토콜 엔진은 패킷이 SDP 네트워크 노드의 NIC에 도착하기를 대기할 수 있다(블록 707). 소프트웨어 프로토콜 엔진은 NIC가 패킷을 수신하기를 대기할 수 있다(블록 709).
소프트웨어 프로토콜 엔진은 패킷의 플로 식별자(플로 ID)를 판독할 수 있다(블록 711). 일반적으로, 소프트웨어 프로토콜 엔진이 패킷의 헤더의 적어도 일부를 파싱하여 패킷이 프로토콜 처리를 수신할지를 결정하며, 플로 식별자를 판독하는 것은 소프트웨어 프로토콜 엔진이 패킷이 프로토콜 처리를 수신할지를 결정하는 데 사용할 수 있는 예시적인 기술이다. 소프트웨어 프로토콜 엔진은 패킷이 SDP 네트워크 노드에 의해 처리되는지를 즉, 패킷이 프로토콜 처리를 수신할지를 결정하기 위하여 검사(check)를 수행할 수 있다(블록 713). 총괄하여(Collectively), 블록 711과 713은 플로 분류로서 명명될 수 있다(블록 715).
만약 패킷이 SDP 네트워크 노드에 의해 처리된다면, 소프트웨어 프로토콜 엔진은 패킷을 메모리 예를 들어, RAM으로 전달할 수 있다(블록 717). 소프트웨어 프로토콜 엔진은 패킷이 메모리로 전달됨에 따라 패킷에 대해 우선순위화(prioritizing)를 적용할 수 있다. 블록 717은 또한 플로 우선순위결정으로 명명될 수 있다(블록 719).
소프트웨어 프로토콜 엔진은 패킷에 대한 VNN을 결정, 예를 들어 패킷에 대한 VNN을 선택하고, 패킷을 VNN에 전달할 수 있다(블록 721). 소프트웨어 프로토콜 엔진은 패킷에 대하여 적용할 프로토콜 스택을 결정, 예를 들어 패킷에 대하여 적용할 프로토콜 스택을 선택할 수 있다(블록 723). 각 프로토콜에 대하여(블록 725), 소프트웨어 프로토콜 엔진은 프로토콜을 패킷에 적용하고, 프로토콜 상태를 업데이트하며(블록 727), 패킷의 프로토콜 헤더를 업데이트할 수 있다(블록 729). 소프트웨어 프로토콜 엔진은 생성할 새로운 프로토콜 패킷이 있는지를 결정하기 위하여 검사를 할 수 있다(블록 731). 새로운 프로토콜 패킷이 생성된다면, 소프트웨어 프로토콜 엔진은 추가적인 프로토콜 처리를 위해 블록 725로 리턴할 수 있다. 총괄하여, 블록 721~731은 프로토콜 처리로 명명될 수 있다(블록 733).
새로운 프로토콜 패킷의 생성이 필요하지 않다면, 소프트웨어 프로토콜 엔진은 각각의 처리된 또는 생성된 패킷에 대하여(블록 735), 패킷의 목적지를 결정하고(블록 737), 포워딩 NIC를 검색(lookup)하며(블록 739), 패킷을 포워딩 NIC로 보낸다(블록 741).
패킷이 SDP 네트워크 노드에 의해 처리되지 않는다면, 소프트웨어 프로토콜 엔진은 패킷의 목적지를 결정하고(블록 737), 포워딩 NIC를 검색하며(블록 739), 패킷을 포워딩 NIC로 보낸다(블록 741).
전술한 바와 같이, 모놀리식 처리는 하나의 스레드를 사용하여 패킷 플로에 대한 모든 프로토콜을 처리할 수 있다. 모놀리식 처리로, 프로토콜 사이에 의존성이 없다면 프로토콜 처리를 다수의 CPU에 대해 분배하는 것이 가능하다. 계층 프로토콜 처리로, 프로토콜들이 순차적으로 처리되며, 이는 프로토콜 시퀀스의 중단(interruption)을 허용한다. 하나의 큐는 패킷 플로마다 사용될 수 있으며, 또는 하나의 큐는 프로토콜마다 사용될 수 있으며, 이에 따라 플로 우선순위 결정 또는 프로토콜 우선순위 결정을 단순화시킬 수 있다.
플로 패킷 우선순위결정은 패킷 처리를 우선순위화하는 것에 의해 달성될 수 있다. 모놀리식 워크플로로, 우선순위 결정이 인커핑 패킷 큐에서 수행될 수 있으며, 계층 처리로 추가적인 우선순위 결정이 워크플로 큐들에서 구현될 수 있다. 가중치 라운드 로빈(weighted round robin), 가장 빠른 첫번째 데드라인(earliest deadline first) 등을 포함하는 넓은 범위의 패킷 스케줄링 분야(disciplines)가 사용될 수 있다. 패킷 플로 우선순위는 또한 더 많은 CPU를 할당하여 달성될 수 있다.
계층 접근 방식(layered approach)에서, 더 많은 CPU를 할당하는 것은 일부 패킷 플로에게 더 높은 처리량(processing throughput)을 주면서 싱글 패킷 플로의 하나 이상의 패킷들이 동시에 처리되는 것을 의미한다. 유사하게, 일부 프로토콜에 더 높은 처리량을 주면서, 동일한 프로토콜 타입의 하나 이상의 패킷들이 동시에 처리될 수 있다.
도 8a는 모놀리식 처리를 활용하는 패킷 플로 우선순위 결정을 제공하는 소프트웨어 프로토콜 엔진에서 발생하는 예시적인 동작들(800)의 흐름도를 나타낸다. 동작들(800)은 소프트웨어 프로토콜 엔진이 모놀리식 처리를 활용하는 패킷 플로 우선순위 결정을 제공하면서, 소프트웨어 프로토콜 엔진(500) 또는 소프트웨어 프로토콜 엔진(600)과 같은, SDP 네트워크 노드의 소프트웨어 프로토콜 엔진에서 발생하는 동작들을 나타낸다.
동작(800)은 SDP 네트워크 노드가 패킷을 수신하고 소프트웨어 프로토콜 엔진이 공유 큐에 패킷을 위치시키면서 시작된다(블록 805). 소프트웨어 프로토콜 엔진은 패킷을 프로토콜 사일로로 전달할 수 있다(블록 807). 소프트웨어 프로토콜 엔진(예를 들어, 디스패쳐)은 처리를 위해 CPU 및/ASIC들에 대하여 패킷을 스케줄링한다(블록 809). 패킷은 프로토콜 사일로를 사용하여 처리될 수 있으며(블록 811), 처리의 결과들이 프로토콜 데이터베이스를 업데이트하는 데 사용될 수 있다(블록 813). 소프트웨어 프로토콜 엔진은 패킷을 아웃고잉 패킷 큐로 패킷을 전달할 수 있다(블록 815).
도 8b는 계층 처리를 활용하는 패킷 플로 우선순위 결정을 제공하는 소프트웨어 프로토콜 엔진에서 발생하는 예시적인 동작들(850)의 흐름도를 나타낸다. 동작들(850)은 소프트웨어 프로토콜 엔진이 계층 처리를 활용하는 패킷 플로 우선순위 결정을 제공하면서, 소프트웨어 프로토콜 엔진(500) 또는 소프트웨어 프로토콜 엔진(600)과 같은, SDP 네트워크 노드의 소프트웨어 프로토콜 엔진에서 발생하는 동작들을 나타낸다.
동작(850)들은 SDP 네트워크 노드가 패킷을 수신하고 소프트웨어 프로토콜 엔진이 공유 큐에 패킷을 위치시키면서 시작된다(블록 855). 소프트웨어 프로토콜 엔진은 패킷을 작업 큐로 전달할 수 있다(블록 857). 소프트웨어 프로토콜 엔진(예를 들어, 디스패쳐)은 처리를 위해 CPU 및/ASIC들에 대하여 패킷을 스케줄링한다(블록 859). 패킷 플로의 각 프로토콜에 대하여(블록 861), 소프트웨어 프로토콜 엔진은 작업 큐로부터 패킷을 제거하고(블록 863), CPU 및/ASIC들을 사용하여 프로토콜 기능에 의해 패킷을 처리할 수 있다(블록 865). 소프트웨어 프로토콜 엔진은 패킷을 작업 큐 또는 다음 프로토콜의 큐로 전달하고(블록 867), 프로토콜 데이터베이스를 업데이트할 수 있다(블록 869). 소프트웨어 프로토콜 엔진은 작업 큐에 추가적인 패킷이 있으면, 블록 863으로 리턴할 수 있다. 소프트웨어 프로토콜 엔진은 패킷을 아웃고잉 패킷 큐로 전달할 수 있다(블록 871).
실시 예에 따르면, 가상화(virtualization)는 하나의 SDP 네트워크 노드 상에서 다수의 VNN들의 동시적인 공존(simultaneous co-existence)을 허용할 수 있다. VNN들의 하나의 사용 예는 SDP 네트워크 노드의 각 VNN이 보안 및 데이터 분리를 허용하는 하나의 가상 네트워크 프로바이더(provider)에 속할 수 있다. SDP 네트워크 노드의 하드웨어는 다수의 VNN들에 의해 공유된다. VNN들은 SDP 네트워크 노드 상에서 하나의 가상 머신으로 구현될 수 있다. 가상 네트워크는 주어진 SDP 네트워크 노드 상의 하나의 VNN에 할당될 수 있다. 다수의 VNN은 주어진 네트워크 노드 상의 하나의 가상 네트워크 노드에 할당될 수 있다.
실시 예에 따르면, VNN 매니저는 SDP 네트워크 노드에 상주(reside in)할 수 있다. VNN 매니저는 정책 규칙 집합(set) 또는 특정 명령어(command)(예를 들어, 제1 VNN으로부터 제2 VNN으로의 패킷 플로 전달, 제1 VNN으로부터 제2 VNN으로의 가상 네트워크 전달 등)를 통하여 SDP 매니저에 의해, VNN에 대한 가상 네트워크의 매핑에 관하여 지시를 받을 수 있다. VNN 매니저는 VNN들 사이에서 가상 네트워크 컨텐트 및/또는 플로 컨텍스트를 전달할 수 있다. VNN 매니저는 또한 CPU, ASIC, 메모리 등과 같은 하드웨어 자원을 VNN들에게 할당할 수 있다.
공유 가상 네트워크 노드(shared virtual network node, S-VNN)는 상이한 가상 네트워크들 사이에 하드웨어 자원들의 공유를 허용할 수 있다. 일반적으로, 가상화 없이 물리적 요소에 대하여 하나의 S-VNN이 있을 수 있다. 가상 네트워크들 또는 패킷 플로들 사이에 메모리의 분리 없이, 하드웨어 자원들의 최선의 공유(Best effort sharing)가 제공될 수 있다.
전용 가상 네트워크 노드(dedicated virtual network node, D-VNN)가 예를 들어 가상 머신의 사용을 통하여 가상 네트워크에 대하여 하드웨어 자원의 할당을 허용할 수 있다. D-VNN들은 CPU, ASIC, 메모리 등과 같은 하드웨어 자원들의 단단한 공유(hard sharing)를 제공할 수 있다. SDP 네트워크 노드 하이퍼바이저는 서비스 품질(QoS) 요건을 만족하기 위하여 하드웨어 자원들의 사용을 다시 조화(re-balance)시킬 수 있다. D-VNN은 가상 네트워크들 또는 패킷 플로들 사이에 메모리의 완전한 분리를 제공할 수 있다.
도 9는 예시적인 VNN(900)의 구조를 나타낸다. VNN(900)과 연관된 SDP 노드에 도착하는 패킷은 인커밍 패킷 큐(905)에서 수신될 수 있다. 패킷 분류기(classifier)(907)는 패킷을 처리를 위해 가상 자원(예를 들어, VNN)을 할당할 수 있다. 패킷 분류기(907)는 가상 자원을 패킷에 할당하기 위하여 가상 네트워크 및/또는 플로 테이블(909)에 저장된 정보를 사용할 수 있다. 가상 네트워크 및/또는 플로 테이블(909)은 선택적 가상 네트워크 식별자를 가지고 가상 네트워크에 패킷 플로를 매핑하는 것에 관한 정보를 포함한다. 패킷 분류기(907)는 패킷(들)을 분류(sort)하고 패킷(들)을 VNN에 할당할 수 있다. 가상 자원은 S-VNN(913)과, D-VNN(915)와 같은 다수의 D-VNN을 포함할 수 있으며, 이는 가상 머신 매니저(911)에 의해 제어될 수 있다. 하드웨어 자원 스케줄러(917)는 CPU 및/또는 ASIC를 가상 자원에 할당할 수 있다. 패킷은 메모리(919)로 전달되고, 하나 이상의 CPU(가령, CPU(921)) 및/또는 하나 이상의 ASIC(가령, ASIC(923))를 사용하여 가상 자원에 의해 처리되며, 메모리(919)로 다시 전달되거나 또는 아웃고잉 패킷 큐(925)로 전달될 수 있다. 아웃고잉 패킷 큐(925)로 전달된 패킷은 시간 데드라인, QoS 요건 등을 만족하도록 스케줄링될 수 있다.
도 10은 VNN 매니저에서 발생하는 예시적인 동작들(1000)의 흐름도를 나타낸다. 동작들(1000)은 VNN 매니저에서 발생하는 동작들을 나타낸다. 동작들(1000)은 VNN 매니저에 의한 정책 방향(policy directed), 정책에 의해 지시되는 것(instructed by policy), 그리고 자율 동작(autonomous operation)을 나타낸다.
정책 방향 동작(policy directed operation)에서, 동작들(1000)은 VNN 매니저가 SDP 매니저로부터 VNN 정책 명령을 수신하는 것으로 시작된다(블록 1005). VNN 매니저는 VNN 성능을 모니터링할 수 있다(블록 1007). 하나의 예로서, VNN 매니저는 CPU 사용률(usage), 트래픽 부하, 이동성(mobility) 등을 모니터링할 수 있다. VNN 매니저는 VNN 정책 명령에 따른 VNN 전달에 의한 성능의 변화가 정당한(justified)지를 결정하기 위한 검사(check)를 수행할 수 있다(블록 1009). 성능의 변화가 정당하다면, VNN 매니저는 필요하다면 새로운 VNN을 시작하고, 새로운 VNN에 대한 새로운 VNN 플로 컨텍스트에 패킷 플로 포워딩 테이블을 설치할 수 있다(블록 1013). VNN 매니저는 트래픽을 새로운 VNN로 유도(direct) 하기 위하여 가상 네트워크 테이블의 엔트리를 변경하고, 이전 VNN(old VNN)이 그의 영향을 받은 패킷 모두를 처리하는 것을 끝내기(플러시(flush))를 기다린다(블록 1017). VNN 매니저는 이전 VNN의 패킷 플로 포워딩 테이블로부터 이전(old) 패킷 플로 포워딩 엔트리들을 삭제할 수 있다(블록 1019). 이전 VNN의 패킷 플로 포워딩 테이블의 엔트리가 없으면, VNN 매니저는 이전 VNN을 삭제하고 그의 자원을 재할당할 수 있다(블록 1021).
정책에 의해 지시된 동작(instructed by policy operation)에서, 동작들(1000)은 VNN 매니저가 SDP 매니저로부터 VNN 포워딩 테이블 변경 메시지(VNN forwarding table change message)를 수신하는 것으로 시작될 수 있다. VNN 매니저는 필요하면 새로운 VNN을 시작하고(블록 1011), 새로운 VNN에 대한 새로운 VNN 플로 컨텍스트에 패킷 플로 포워딩 테이블을 설치할 수 있다(블록 1013). VNN 매니저는 새로운 VNN으로 트래픽을 유도하기 위하여 가상 네트워크 테이블의 엔트리를 변경하고(블록 1015), 이전 VNN이 그의 영향을 받은 패킷 모두를 처리하는 것을 끝내기(플러시)를 기다린다(블록 1017). VNN 매니저는 이전 VNN의 패킷 플로 포워딩 테이블로부터 이전 패킷 플로 포워딩 엔트리들을 삭제할 수 있다(블록 1019). 이전 VNN의 패킷 플로 포워딩 테이블의 엔트리가 없으면, VNN 매니저는 이전 VNN을 삭제하고 그의 자원을 재할당할 수 있다(블록 1021).
자율 동작에서, 동작들(1000)은 VNN 매니저가 VNN 성능을 모니터링하는 것으로 시작될 수 있다(블록 1030). 하나의 예로서, VNN 매니저는 CPU 사용률, 트래픽 부하, 이동성 등을 모니터링할 수 있다. VNN 매니저는 어떤 패킷 플로가 어떤 VNN으로 가야하는지를 결정할 수 있다(블록 1032). VNN 매니저는 필요하다면 새로운 VNN(들)을 시작하고(블록 1011), 새로운 VNN에 대한 새로운 VNN 플로 컨텍스트에 패킷 플로 포워딩 테이블을 설치할 수 있다(블록 1013). VNN 매니저는 새로운 VNN으로 트래픽을 유도하기 위하여 가상 네트워크 테이블의 엔트리를 변경하고(블록 1015), 이전 VNN이 그의 영향을 받은 패킷 모두를 처리하는 것을 끝내기(플러시)를 기다린다(블록 1017). VNN 매니저는 이전 VNN의 패킷 플로 포워딩 테이블로부터 이전 패킷 플로 포워딩 엔트리들을 삭제할 수 있다(블록 1019). 이전 VNN의 패킷 플로 포워딩 테이블의 엔트리가 없으면, VNN 매니저는 이전 VNN을 삭제하고 그의 자원을 재할당할 수 있다(블록 1021).
실시 예에 따르면, VNN 매니저는 SDP 매니저가 VNN 매니저로 직접 명령을 보내는 경우, 패킷 플로 또는 가상 네트워크를 이동시킬 수 있다. 하나의 예로서, SDP 매니저는 이전 VNN(들)과 새로운 VNN(들)에 대한 가상 네트워크들과 패킷 플로들의 리스트를 구체화(specify)할 수 있다. VNN 매니저는 SDP 매니저가 VNN 매니저로 정책을 보내는 경우, 패킷 플로 또는 가상 네트워크를 이동시킬 수 있다. 하나의 예로서, 정책은 체감 품질(quality of experience, QoE), QoS, CPU 부하, 메모리 부하 등에 대한 문턱값들의 집합일 수 있다. 더욱이, 정책은 UE가 통신 시스템에 대해 이동을 함에 따라 패킷 플로를 어떻게 이동시킬지를 구체화할 수 있다. 부가적으로, 정책은 예를 들어, 공유된 가상 머신들로 이동되는 보안이 없는 패킷 플로를 가지는, 보안 요건을 기반으로 할 수 있다. VNN 매니저는 최적화 목적(optimization objective)을 달성하기 위하여 자율적으로 패킷 플로를 이동시키는 SDP 매니저로 VNN 매니저가 패킷 플로 또는 가상 네트워크를 이동시킬 수 있다. 하나의 예로서, 이러한 이동은 자원의 활용을 최적화시킬 수 있다. 문턱값은, 공유된 자원의 활용이 특정량을 초과하면 공유된 자원으로부터 전용 자원으로 이동시키는 데 사용될 수 있다. 유사하게, 문턱값은 전용 활용(dedicated utilization)이 특정 값을 만족하면 전용 자원에서 공유된 자원으로 이동시키는 데 사용될 수 있으며, 전용 자원은 제거될 수 있다.
도 11은 SDP 네트워크 노드가 소프트웨어를 업그레이드 및/또는 설치하면서, SDP 네트워크 노드에서 발생하는 예시적인 동작들(1100)의 흐름도를 나타낸다. 동작들(1100)은 SDP 네트워크 노드가 소프트웨어를 업그레이드 및/또는 설치하면서, SDP 네트워크 노드(209)와 같은, SDP 네트워크 노드에서 발생하는 동작들을 나타낼 수 있다.
동작들(1100)은 소프트웨어 업데이트를 대기하는 SDP 네트워크 노드에 의해 시작될 수 있다(블록 1105). SDP 네트워크 노드가 소프트웨어 업데이트를 대기하는 동안에 다른 동작들을 수행할 수 있음을 주목해야 한다. SDP 네트워크 노드는 SDP 매니저의 ID(Identification)와 함께 소프트웨어 업데이트를 수신할 수 있다(블록 1107). SDP 네트워크 노드는 SDP 매니저의 아이덴티티(identity)를 검증할 수 있다(블록 1109). SDP 매니저는 디지털 인증서(digital certificate)를 사용하여 식별될 수 있다. 하나의 예로서, 중앙 인증 기관(central certification authority)이 사용될 수 있으며 또는 인증서가 이전 사용에서 캐시(cache)될 수 있다. SDP 매니저의 아이덴티티가 검증되면, SDP 네트워크 노드는 소프트웨어 업데이트의 무결성(integrity)을 검증할 수 있다(블록 1111). 하나의 예로서, 소프트웨어 업데이트의 무결성은 체크섬 해쉬(check-sum hash)(예를 들어, md5, sha-256 등과 같은 해쉬 함수를 사용)로 검사될 수 있다. 가상 머신 하이퍼바이저는 소프트웨어 업데이트의 인증을 도울 수 있다. 업데이트가 SDP 노드 상의 모든 프로토콜에 대한 것이거나 또는 SDP 노드 상의 전체 소프트웨어에 대한 것이면, 단지 SDP 매니저 ID가 충분할 수 있음을 주목한다. 특정 프로토콜이 업데이트되면, 업데이트는 업데이트되는 프로토콜의 식별자 또는 PIB를 위한 업데이트 후에 사용될 업데이트된 프로토콜의 새로운 식별자를 포함할 수 있다. 소프트웨어 업데이터의 무결성이 검증되면, SDP 네트워크 노드는 소프트웨어 업데이트를 설치하고 그의 능력들의 리스트를 업데이트할 수 있다(블록 1113). 설치된 프로토콜은, 이진 어드레스에 매핑된 그들의 이름 또는 프로토콜이 호출되는 경우 참조될 수 있는 기능 이름들과 함께 데이터베이스에 저장될 수 있다. 프로토콜은 공유 메모리에 설치될 수 있으므로, 리눅스 공유 객체 라이브러리(linux shared object libraries)와 유사한 방식으로 다수의 VNN에 의해 사용될 수 있다. 하나의 예로서, COM(component object model) 레지스트리 키(registry key)와 유사한 데이터베이스 또는 DLL(dynamically linked librarie)의 기능 테이블이 사용될 수 있다. SDP 매니저의 아이덴티티 검증 또는 소프트웨어 업데이트의 무결성의 검증이 실패하면, SDP 네트워크 노드는 소프트웨어 업데이트를 거절하고(블록 1115), 추가 업데이트를 대기한다(블록 1105).
본 개시와 그의 효과가 상세히 기술되었음에도 불구하고, 첨부한 청구범위에 의해 정의되는 바와 같이 본 개시의 개념과 범위(spirit and scope)를 벗어나지 않고 다양한 변경, 대체 그리고 수정(alteration)이 행해질 수 있다.

Claims (23)

  1. 소프트웨어 설계 프로토콜(software designed protocol, SDP) 네트워크 노드로서,
    명령(instruction)을 수신하고 패킷을 수신하도록 구성된 수신기; 및
    상기 수신기에 동작 가능하게(operatively) 연결된 프로세서
    를 포함하고,
    상기 프로세서는 상기 수신된 명령에 따라, 상기 SDP 네트워크 노드의 구성을 업데이트하고 상기 수신된 패킷을 처리하도록 구성되는, SDP 네트워크 노드.
  2. 제1항에 있어서,
    상기 명령은 프로토콜의 소프트웨어 디스크립션(software description)을 포함하고, 상기 프로세서는 상기 프로토콜을 상기 수신된 패킷에 적용하도록 구성되는, SDP 네트워크 노드.
  3. 제1항에 있어서,
    상기 수신기는 소프트웨어 설계 네트워킹(software designed networking, SDN) 제어기로부터 상기 명령을 수신하도록 구성되는, SDP 네트워크 노드.
  4. 제1항에 있어서,
    상기 명령은 프로토콜의 소프트웨어 디스크립션을 포함하고, 상기 프로세서는 상기 소프트웨어 디스크립션을 검증(verify)하고, 상기 소프트웨어 디스크립션을 저장하도록 구성되는, SDP 네트워크 노드.
  5. 제1항에 있어서,
    상기 프로세서는 상기 수신된 패킷을 디스패치(dispatch)하도록 구성되는, SDP 네트워크 노드.
  6. 제5항에 있어서,
    상기 프로세서는 수평적 방식 및 수직적 방식 중 적어도 하나로 상기 수신된 패킷을 디스패치하도록 구성되는, SDP 네트워크 노드.
  7. 소프트웨어 설계 프로토콜(software designed protocol, SDP) 네트워크 노드를 동작시키는(operating) 방법으로서,
    상기 SDP 네트워크 노드가, 처리 명령(processing instructions)을 수신하는 단계;
    상기 SDP 네트워크 노드가, 제1 패킷을 수신하는 단계;
    상기 SDP 네트워크 노드가, 상기 제1 패킷의 정보를 식별하는 것에 따라 상기 제1 패킷을 분류하는 단계; 및
    상기 SDP 네트워크 노드가, 상기 처리 명령에 따라 상기 제1 패킷을 처리하는 단계
    를 포함하는, 방법.
  8. 제7항에 있어서,
    상기 처리 명령은 워크플로 시퀀스 디스크립션(workflow sequence description)을 포함하는, 방법.
  9. 제7항에 있어서,
    상기 처리 명령은 소프트웨어 설계 네트워킹(SDN) 제어기로부터 수신되는, 방법.
  10. 제7항에 있어서,
    상기 처리 명령은 프로토콜의 소프트웨어 디스크립션을 포함하는, 방법.
  11. 제7항에 있어서,
    상기 처리 명령은 패킷 플로 식별자와 프로토콜을 포함하고, 상기 패킷 플로 식별자는 상기 프로토콜과 연관되어 있는, 방법.
  12. 제7항에 있어서,
    상기 제1 패킷을 분류하는 단계는,
    상기 제1 패킷의 플로 식별자를 파싱(parsing)하는 단계; 및
    상기 제1 패킷이 상기 SDP 네트워크 노드에 의해 처리되는 것으로 결정하는 것에 응답하여, 상기 제1 패킷을 메모리로 전달(transferring)하는 단계
    를 포함하는, 방법.
  13. 제12항에 있어서,
    상기 제1 패킷을 분류하는 단계는,
    상기 패킷이 상기 SDP 네트워크 노드에 의해 처리되지 않는 것으로 결정하는 것에 응답하여, 상기 제1 패킷을 상기 제1 패킷의 목적지로 포워딩(forwarding)하는 단계
    를 더 포함하는, 방법.
  14. 제7항에 있어서,
    상기 분류된 패킷을 처리하는 것은,
    상기 제1 패킷을 네트워크 요소(element)로 전달하는 단계;
    상기 제1 패킷을 처리할 프로토콜 스택(stack)을 식별하는 단계;
    상기 프로토콜 스택에 연관된 프로토콜을 상기 제1 패킷에 적용시켜서, 처리된 패킷을 생성하는 단계; 및
    상기 처리된 패킷을 상기 처리된 패킷의 목적지로 포워딩하는 단계
    를 포함하는, 방법.
  15. 제14항에 있어서,
    상기 네트워크 요소는 가상 네트워크 요소를 포함하는, 방법.
  16. 제14항에 있어서,
    상기 프로토콜을 적용하는 것은, 프로토콜 상태(state)를 업데이트하는 단계를 포함하는, 방법.
  17. 제14항에 있어서,
    상기 프로토콜을 적용하는 것은,
    상기 제1 패킷에 제1 프로토콜 헤더를 추가하는 단계와, 상기 제1 패킷에 대하여 제2 프로토콜 헤더를 제거하는 단계 중 하나를 포함하는, 방법.
  18. 제14항에 있어서,
    상기 프로토콜을 적용하는 것은, 제2 패킷을 생성하는 단계를 포함하는, 방법.
  19. 소프트웨어 설계 프로토콜(software designed protocol, SDP) 네트워크 노드로서,
    처리 명령을 수신하고 패킷을 수신하도록 구성된 수신기; 및
    상기 수신기에 동작 가능하게 연결된 프로세서
    를 포함하고,
    상기 프로세서는 상기 패킷의 정보를 식별하는 것에 따라 상기 패킷을 분류하고, 상기 처리 명령에 따라 상기 패킷을 처리하도록 구성되는, SDP 네트워크 노드.
  20. 제19항에 있어서,
    상기 프로세서가 상기 패킷의 플로 식별자를 파싱하고, 상기 패킷이 상기 SDP 네트워크 노드에 의해 처리되는 것으로 결정하는 것에 응답하여 상기 패킷을 메모리에 전달하도록 구성되는, SDP 네트워크 노드.
  21. 제20항에 있어서,
    상기 프로세서가 상기 패킷이 상기 SDP 네트워크 노드에 의해 처리되지 않는 것으로 결정하는 것에 응답하여 상기 패킷을 상기 패킷의 목적지로 포워딩하도록 구성되고, 상기 SDP 네트워크 노드는 상기 프로세서에 동작 가능하게 연결된 송신기를 더 포함하며, 상기 송신기는 상기 패킷을 상기 목적지로 송신하도록 구성되는, SDP 네트워크 노드.
  22. 제19항에 있어서,
    상기 프로세서가 상기 패킷을 가상 네트워크 요소로 전달하고, 상기 패킷을 처리할 프로토콜 스택을 식별하며, 상기 프로토콜 스택에 연관된 프로토콜을 상기 패킷에 적용하여 처리된 패킷을 생성하고, 상기 처리된 패킷을 상기 처리된 패킷의 목적지로 포워딩하도록 구성되는, SDP 네트워크 노드.
  23. 제19항에 있어서,
    상기 프로세서는 가상 머신인, SDP 네트워크 노드.
KR1020167022165A 2014-01-21 2015-01-19 소프트웨어 정의 프로토콜 네트워크 노드를 위한 시스템 및 방법 KR101893963B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/160,146 US9755901B2 (en) 2014-01-21 2014-01-21 System and method for a software defined protocol network node
US14/160,146 2014-01-21
PCT/US2015/011914 WO2015112460A2 (en) 2014-01-21 2015-01-19 System and method for a software defined protocol network node

Publications (2)

Publication Number Publication Date
KR20160108500A true KR20160108500A (ko) 2016-09-19
KR101893963B1 KR101893963B1 (ko) 2018-08-31

Family

ID=53545799

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167022165A KR101893963B1 (ko) 2014-01-21 2015-01-19 소프트웨어 정의 프로토콜 네트워크 노드를 위한 시스템 및 방법

Country Status (7)

Country Link
US (2) US9755901B2 (ko)
EP (1) EP3087707B1 (ko)
JP (1) JP2017505578A (ko)
KR (1) KR101893963B1 (ko)
CN (1) CN106416147B (ko)
BR (1) BR112016016828A2 (ko)
WO (1) WO2015112460A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180123379A (ko) * 2017-05-08 2018-11-16 삼성전자주식회사 소프트웨어 정의 네트워크에서 동적 자원 할당 방법 및 장치

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8880657B1 (en) * 2011-06-28 2014-11-04 Gogrid, LLC System and method for configuring and managing virtual grids
EP3130133B1 (en) * 2014-04-11 2019-11-06 Nokia Solutions and Networks GmbH & Co. KG Multi tenancy in software defined networking
US10127383B2 (en) * 2014-11-06 2018-11-13 International Business Machines Corporation Resource usage optimized auditing of database shared memory
JP6426849B2 (ja) * 2015-01-20 2018-11-21 華為技術有限公司Huawei Technologies Co.,Ltd. Sdtがnfv及びsdnと連携するためのシステム及び方法
EP3241318B1 (en) 2015-01-20 2023-05-31 Huawei Technologies Co., Ltd. Method and apparatus for nfv management and orchestration
CN106559460B (zh) * 2015-09-30 2020-06-26 华为技术有限公司 软件定义协议网络中分配资源的方法和系统
CN105912936B (zh) * 2016-04-11 2018-09-21 浪潮集团有限公司 一种提高sdn交换机性能及安全的方法
KR102054259B1 (ko) 2018-12-28 2020-01-22 제주대학교 산학협력단 소프트웨어 정의 네트워크에서 인텐트 기반의 자원관리를 수행하는 방법 및 그 시스템, 그 방법을 수행하는 프로그램이 기록된 컴퓨터 판독이 가능한 기록매체
WO2021047606A1 (zh) * 2019-09-10 2021-03-18 华为技术有限公司 报文处理方法、装置以及芯片
US11777598B2 (en) 2021-06-21 2023-10-03 Ciena Corporation Utilizing polarization characteristics to detect vibrations in optical fibers
US11595761B2 (en) 2021-06-25 2023-02-28 Ciena Corporation Detecting and localizing acoustic signals with an optical network
US11894969B2 (en) 2021-07-12 2024-02-06 Ciena Corporation Identifying root causes of network service degradation
US11477070B1 (en) 2021-07-12 2022-10-18 Ciena Corporation Identifying root causes of network service degradation
US11683260B2 (en) 2021-07-13 2023-06-20 Ciena Corporation Estimating a traffic matrix of a communication network using network topology features

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110276685A1 (en) * 2010-01-22 2011-11-10 Brutesoft, Inc. Cloud computing as a service for enterprise software and data provisioning
WO2013104375A1 (en) * 2012-01-09 2013-07-18 Telefonaktiebolaget L M Ericsson (Publ) Network device control in a software defined network

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3576019B2 (ja) 1998-12-28 2004-10-13 株式会社東芝 通信ノード
SE516175C2 (sv) * 1999-02-17 2001-11-26 Axis Ab Anordning och metod för kommunikation över ett nätverk
US6721555B1 (en) * 1999-02-19 2004-04-13 Qualcomm Incorporated System and method for facilitating device authentication in a wireless communications system
US7099291B2 (en) 2001-06-22 2006-08-29 Motorola, Inc. Dispatch call origination and set up in a CDMA mobile communication system
US20020099858A1 (en) * 2001-08-06 2002-07-25 Muse Corporation Network communications protocol
US7203169B1 (en) * 2001-12-20 2007-04-10 Packeteer, Inc. Interface facilitating configuration of network resource utilization
GB2406663B (en) * 2003-10-01 2006-03-22 Toshiba Res Europ Ltd Flexible protocol stack
US7535926B1 (en) * 2005-01-07 2009-05-19 Juniper Networks, Inc. Dynamic interface configuration for supporting multiple versions of a communication protocol
US20060251093A1 (en) * 2005-05-03 2006-11-09 Nokia Corporation Signaling quality of service (QoS) parameters for a multimedia session
US8069209B1 (en) * 2006-06-16 2011-11-29 Openwave Systems Inc. Method for activating and deactivating client-side services from a distant server
US8332921B2 (en) * 2007-01-12 2012-12-11 Wmware, Inc. Enhanced security for user instructions
US9584622B2 (en) * 2007-08-23 2017-02-28 Telefonaktiebolaget Lm Ericsson (Publ) Method for network controlled access selection
US8880056B2 (en) * 2007-09-03 2014-11-04 Broadcom Corporation Systems and methods for mobile phone validation
WO2009042919A2 (en) * 2007-09-26 2009-04-02 Nicira Networks Network operating system for managing and securing networks
US20090097492A1 (en) * 2007-10-12 2009-04-16 Telefonaktiebolaget Lm Ericsson (Publ) Support of triple play services in user devices
US20100332212A1 (en) * 2008-09-19 2010-12-30 Ori Finkelman Method and apparatus for sleep and wake of computer devices
CN102171983B (zh) * 2008-10-02 2014-11-26 艾利森电话股份有限公司 用于控制通信网络中的会话的方法和装置
CN102084705B (zh) * 2008-11-17 2015-07-01 思科技术公司 通信网络中的动态负载平衡
US8793758B2 (en) * 2009-01-28 2014-07-29 Headwater Partners I Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US8503434B2 (en) * 2009-09-28 2013-08-06 Stoke, Inc. Method and system for inserting a new node into a communications path between two existing nodes without disruption
US8942245B2 (en) * 2010-11-22 2015-01-27 Juniper Networks, Inc. Methods and apparatus for centralized virtual switch fabric control
US10033585B2 (en) * 2010-12-15 2018-07-24 Juniper Networks, Inc. Methods and apparatus related to a switch fabric system having a multi-hop distributed control plane and a single-hop data plane
US9106527B1 (en) * 2010-12-22 2015-08-11 Juniper Networks, Inc. Hierarchical resource groups for providing segregated management access to a distributed switch
KR101528825B1 (ko) * 2011-04-18 2015-06-15 닛본 덴끼 가부시끼가이샤 단말, 제어 장치, 통신 방법, 통신 시스템, 통신 모듈, 프로그램 및 정보 처리 장치
EP3021554A1 (en) * 2011-08-11 2016-05-18 Intel Corporation Methods for switching between a mbms download and an http-based delivery of dash formatted content over an ims network
US9065842B2 (en) * 2011-12-22 2015-06-23 Xerox Corporation Methods and systems for authenticating electronic messages using client-generated encryption keys
WO2013140796A1 (en) * 2012-03-23 2013-09-26 Nec Corporation Communication system, control device, communication method and program
US8842672B2 (en) * 2012-03-28 2014-09-23 Anue Systems, Inc. Systems and methods for modifying network packets to use unrecognized headers/fields for packet classification and forwarding
WO2014007247A1 (ja) * 2012-07-03 2014-01-09 日本電気株式会社 ネットワーク装置、パケット処理方法及びプログラム、並びにネットワークシステム
US9197568B2 (en) * 2012-10-22 2015-11-24 Electronics And Telecommunications Research Institute Method for providing quality of service in software-defined networking based network and apparatus using the same
US9923997B2 (en) * 2012-12-21 2018-03-20 Telefonaktiebolaget Lm Ericsson (Publ) Systems and methods for packet classification
CN103067245B (zh) * 2012-12-28 2015-10-28 中兴通讯股份有限公司 一种用于网络虚拟化的流表空间隔离装置及方法
US9185058B2 (en) * 2013-03-15 2015-11-10 Alcatel Lucent Method and apparatus for processing GPRS tunneling protocol user plane traffic in a cloud-based mobile network
US10333779B2 (en) 2013-04-10 2019-06-25 Huawei Technologies Co., Ltd. System and method for providing a software defined protocol stack
EP3014821A4 (en) * 2013-06-28 2017-02-22 Intel Corporation Mechanism to control resource utilization with adaptive routing
WO2015000516A1 (en) * 2013-07-03 2015-01-08 Nokia Solutions And Networks Oy User plane idle mode buffering within software defined network architecture
CN103401786B (zh) * 2013-07-12 2016-08-24 华为技术有限公司 网络拓扑建立、路径控制、报文传输方法及装置、系统
EP3028401A1 (en) * 2013-08-01 2016-06-08 Hewlett-Packard Development Company, L.P. Address resolution rewriting
JP6156002B2 (ja) * 2013-09-13 2017-07-05 富士通株式会社 情報処理装置、通信方法及び通信プログラム
US9742632B2 (en) * 2013-12-27 2017-08-22 Intel Corporation Hybrid SDN controller

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110276685A1 (en) * 2010-01-22 2011-11-10 Brutesoft, Inc. Cloud computing as a service for enterprise software and data provisioning
WO2013104375A1 (en) * 2012-01-09 2013-07-18 Telefonaktiebolaget L M Ericsson (Publ) Network device control in a software defined network

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180123379A (ko) * 2017-05-08 2018-11-16 삼성전자주식회사 소프트웨어 정의 네트워크에서 동적 자원 할당 방법 및 장치
US11134025B2 (en) 2017-05-08 2021-09-28 Samsung Electronics Co., Ltd Dynamic resource allocation method and apparatus in software-defined network

Also Published As

Publication number Publication date
EP3087707A2 (en) 2016-11-02
US10644941B2 (en) 2020-05-05
US20150207717A1 (en) 2015-07-23
US9755901B2 (en) 2017-09-05
US20180013617A1 (en) 2018-01-11
JP2017505578A (ja) 2017-02-16
EP3087707B1 (en) 2020-04-29
WO2015112460A2 (en) 2015-07-30
KR101893963B1 (ko) 2018-08-31
BR112016016828A2 (pt) 2018-05-08
WO2015112460A3 (en) 2015-11-26
CN106416147B (zh) 2019-09-03
EP3087707A4 (en) 2017-04-26
CN106416147A (zh) 2017-02-15

Similar Documents

Publication Publication Date Title
KR101893963B1 (ko) 소프트웨어 정의 프로토콜 네트워크 노드를 위한 시스템 및 방법
US11677851B2 (en) Accelerated network packet processing
US10986041B2 (en) Method and apparatus for virtual network functions and packet forwarding
US10057387B2 (en) Communication traffic processing architectures and methods
US9065701B2 (en) Enhanced serialization mechanism
US9654406B2 (en) Communication traffic processing architectures and methods
US9838308B2 (en) Improving the architecture of middleboxes or service routers to better consolidate diverse functions
US20150146527A1 (en) System, Method and Apparatus for Network Congestion Management and Network Resource Isolation
US8144588B1 (en) Scalable resource management in distributed environment
EP3314827A1 (en) Method and system for managing data traffic in a computing network
CN104956637A (zh) 在多个逻辑网络连接中优先化封装数据包的方法、装置以及系统
US9125089B2 (en) Method and apparatus for packet aggregation in a network controller
EP3094053A1 (en) Predictive egress packet classification for quality of service
WO2018013443A1 (en) Multiple core software forwarding
Shah et al. A QoS model for real-time application in wireless network using software defined network
US9609572B2 (en) Method and system for supporting mobility of a mobile terminal in a software-defined network
Fulber-Garcia et al. CUSCO: a customizable solution for NFV composition
CN115834722A (zh) 一种数据处理方法、装置、网元设备以及可读存储介质
KR20110071833A (ko) 가상화 지원 네트워크 장치

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