KR101786616B1 - 소프트웨어 정의 네트워크에서 서브넷을 지원하는 방법, 장치 및 컴퓨터 프로그램 - Google Patents

소프트웨어 정의 네트워크에서 서브넷을 지원하는 방법, 장치 및 컴퓨터 프로그램 Download PDF

Info

Publication number
KR101786616B1
KR101786616B1 KR1020150185851A KR20150185851A KR101786616B1 KR 101786616 B1 KR101786616 B1 KR 101786616B1 KR 1020150185851 A KR1020150185851 A KR 1020150185851A KR 20150185851 A KR20150185851 A KR 20150185851A KR 101786616 B1 KR101786616 B1 KR 101786616B1
Authority
KR
South Korea
Prior art keywords
subnet
mac address
packet
destination
switch
Prior art date
Application number
KR1020150185851A
Other languages
English (en)
Other versions
KR20170076066A (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 아토리서치(주)
Priority to KR1020150185851A priority Critical patent/KR101786616B1/ko
Publication of KR20170076066A publication Critical patent/KR20170076066A/ko
Application granted granted Critical
Publication of KR101786616B1 publication Critical patent/KR101786616B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/10Mapping addresses of different types
    • H04L61/6022

Abstract

본 발명은 소프트웨어 정의 네트워크에서 서브넷 기능을 지원하는 방법에 대한 것으로, 컨트롤러가, 스위치에 서브넷을 지정하고 각각의 서브넷에 가상 게이트웨이 주소를 할당하는 단계; 서브넷을 이동하는 패킷의 도착지 MAC 주소 필드를 도착지 호스트의 MAC 주소 값으로 변경하는 단계를 포함하는 것을 특징으로 한다.

Description

소프트웨어 정의 네트워크에서 서브넷을 지원하는 방법, 장치 및 컴퓨터 프로그램 {METHOD, APPARATUS AND COMPUTER PROGRAM FOR SUBNETTING OF SOFTWARE DEFINED NETWORK}
본 발명은 소프트웨어 정의 네트워크를 제어하는 방법에 대한 것이다. 보다 구체적으로 본 발명은 소프트웨어 정의 네트워크에서 서브넷 기능을 지원하는 방법에 대한 것이다.
소프트웨어 정의 네트워킹 (Software Defined Networking, 이하 SDN이라 칭함)은 네트워크의 모든 네트워크 장비를 지능화된 중앙관리시스템에 의해 관리하는 기술을 의미한다. SDN 기술에서는 기존 하드웨어 형태의 네트워크 장비에서 자체적으로 수행하는 패킷 처리와 관련된 제어 동작을 소프트웨어 형태로 제공되는 컨트롤러가 대신하여 처리함으로써, 기존의 네트워크 구조보다 다양한 기능을 개발하고 부여할 수 있다는 장점을 갖는다.
SDN 시스템은 일반적으로 전체 네트워크를 제어하는 컨트롤러 서버와, 상기 컨트롤러 서버에 의해 제어되며 패킷을 처리하는 복수의 오픈플로우 스위치와, 오픈플로우 스위치의 하위 계층에 해당하는 호스트를 포함하여 구성된다. 여기에서 오픈플로우 스위치는 패킷의 송수신 기능만을 담당하게 되고, 패킷의 경로 설정, 관리 및 제어는 모두 컨트롤러 서버에서 이루어진다. 즉, 네트워크 장비를 이루는 Data Plane과 Control Plane을 분리하는 것이 SDN 시스템의 기본 구조라 볼 수 있다.
Open Networking Foundation, “OpenFlow Specification 1.2.0”
본 발명은 소프트웨어 정의 네트워크에서 서브넷 기능을 지원하고, 특히 특정 서브넷에서 다른 서브넷으로 넘어가는 패킷의 MAC 주소 다시 쓰기 (MAC rewriting)을 오픈플로우 프로토콜을 이용하여 처리할 수 있는 방법 및 장치를 제공하는 것을 목적으로 한다.
본 발명의 실시예를 따르는 소프트웨어 정의 네트워크에서 서브넷 기능을 지원하는 방법은, 컨트롤러가, 스위치에 서브넷을 지정하고 각각의 서브넷에 가상 게이트웨이 주소를 할당하는 단계; 서브넷을 이동하는 패킷의 도착지 MAC 주소 필드를 도착지 호스트의 MAC 주소 값으로 변경하는 단계를 포함하는 것을 특징으로 한다.
나아가 본 발명의 실시예를 따르는 소프트웨어 정의 네트워크에서 서브넷 기능을 지원하는 컨트롤러는 스위치와 통신하는 통신부; 및 상기 스위치에 서브넷을 지정하고 각각의 서브넷에 가상 게이트웨이 주소를 할당하며, 서브넷을 이동하는 패킷의 도착지 MAC 주소 필드를 도착지 호스트의 MAC 주소 값으로 변경하는 제어부를 포함하는 것을 특징으로 한다.
한편 본 발명의 실시예를 따르는 소프트웨어 정의 네트워크에서 서브넷 기능을 지원하는 처리를 컨트롤러에서 수행하기 위하여 컴퓨터 판독가능한 기록 매체에 저장된 컴퓨터 프로그램은, 스위치에 서브넷을 지정하고 각각의 서브넷에 가상 게이트웨이 주소를 할당하는 기능; 서브넷을 이동하는 패킷의 도착지 MAC 주소 필드를 도착지 호스트의 MAC 주소 값으로 변경하는 기능을 수행하는 것을 특징으로 한다.
본 발명에 따르면, 스위치의 포트 별로 서브넷을 지정할 수 있어, 네트워크 자원 관리가 용이해지는 효과가 있다. 나아가 본 발명에 따르면 별도의 설정 없이 오픈플로우 프로토콜에 따라 서브넷을 이동하는 패킷에 대한 맥 주소 다시 쓰기를 처리할 수 있는 효과가 있다.
도 1은 소프트웨어 정의 네트워크의 구성을 설명하기 위한 도면
도 2는 본 발명의 실시예를 따라 SDN에서 서브넷을 지정하는 예시를 설명하기 위한 도면
도 3은 본 발명의 실시예를 따르는 SDN에서 서브넷을 지정하고 서브넷을 이동하는 패킷을 처리하는 방법을 설명하기 위한 순서도
본 발명은 이하에 기재되는 실시예들의 설명 내용에 한정되는 것은 아니며, 본 발명의 기술적 요지를 벗어나지 않는 범위 내에서 다양한 변형이 가해질 수 있음은 자명하다. 그리고 실시예를 설명함에 있어서 본 발명이 속하는 기술 분야에 널리 알려져 있고 본 발명의 기술적 요지와 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다.
한편, 첨부된 도면에서 동일한 구성요소는 동일한 부호로 표현된다. 그리고 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시될 수도 있다. 이는 본 발명의 요지와 관련이 없는 불필요한 설명을 생략함으로써 본 발명의 요지를 명확히 설명하기 위함이다. 이하 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예들을 상세히 설명한다.
본 발명의 명세서에서 “플로우 룰”의 용어는 해당 업계의 통상의 기술자 입장에서 소프트웨어 정의 네트워크에서 컨트롤러 서버가 적용하는 네트워크 정책을 의미하는 것으로 이해되어야 한다.
나아가 본 명세서에서 오픈플로우 스위치(200)는 오픈플로우 프로토콜만을 지원하는 스위치, 오픈플로우 프로토콜을 지원하는 가상 스위치, 오픈플로우 프로토콜을 지원하는 일반적인 L2 스위치를 포함하는 개념으로 이해될 수 있다.
도 1은 소프트웨어 정의 네트워크의 구성을 설명하기 위한 도면이다. 도 1을 참조하면, 소프트웨어 정의 네트워크(Software Defined Network)는 컨트롤러 서버 (100), 네트워크 장비(200) 및 호스트(300)를 포함할 수 있다. 네트워크 장비(200)와 호스트(300)는 노드(Node)라고 지칭할 수 있으며, 링크(Link)는 2개의 노드 사이의 연결을 의미할 수 있다.
컨트롤러 서버(100)는 네트워크 장비(200)를 관리하는 기능을 하는 것으로, 복수의 네트워크 장비(200)를 중앙 집중형으로 관리 및 제어한다. 구체적으로 컨트롤러 서버(100)는 토폴로지 관리(Topology management), 패킷 처리와 관련된 경로 관리(Path management), 링크 디스커버리(Link discovery), 패킷 흐름인 플로우 관리(Flow management) 등의 기능을 하는 응용 프로그램이 탑재된 형태로 구현될 수 있다.
네트워크 장비(200)는 컨트롤러 서버(100)의 제어에 따라 패킷을 처리하는 기능을 한다. 네트워크 장비(200)의 예로는 이동 통신 기지국, 기지국 제어기, 게이트웨이 장비, 유선 네트워크의 스위치, 라우터 등이 있다.
소프트웨어 정의 네트워크에서 컨트롤러 서버(100)와 오픈플로우 스위치(200)는 상호간 정보를 주고 받아야 하며, 이를 위한 프로토콜로 널리 사용되는 것이 오픈플로우 (OpenFlow) 프로토콜이다. 즉, 오픈플로우 프로토콜은 컨트롤러 서버(100)와 오픈플로우 스위치(200)간 서로 통신할 수 있는 표준 규격이다.
오픈플로우 프로토콜을 따르면, 스위치(200)는 컨트롤 채널(Control Channel)을 통해 컨트롤러 서버(100)와 정보를 교환하고, 파이프라인(Pipeline) 프로세싱을 위한 하나 이상의 플로우 테이블(Flow table), 그룹 테이블, 미터 테이블 및/또는 패킷 전달을 위한 네트워크 인터페이스로 하나 이상의 포트를 가질 수 있다.
한편, 오픈플로우 표준은 서브넷 기능을 별도로 제공하지 않는다. 서브넷팅(subnetting)이란 임의의 IP 네트워크를 둘 이상의 논리적 네트워크로 분할하는 것을 말하며, 일반적으로 네트워크 자원 관리의 편의를 위해 이용될 수 있다.
서브넷을 설정하면 브로드캐스팅 영역이 분리되기 때문에 원활한 통신이 가능해지는 것은 물론 네트워크 전체의 보안이 강화되고, 속도가 향상되는 효과가 있다.
예를 들어 공격자가 네트워크의 특정 호스트를 통해 ARP 포이즈닝을 시도한다고 하더라도, 전체 네트워크가 아니라 해당 호스트가 속하는 서브넷만 공격으로 인한 속도 저하가 발생하며, 해당 서브넷에 속하는 노드들의 패킷만 도용당하는 것으로 피해를 축소시킬 수 있다.
나아가 서브넷을 설정하면 네트워크 관리가 용이해지는 효과가 있다. 예를 들어 특정 노드에 과부하가 발생한 경우, 해당 서브넷만 검색하면 과부하의 원인을 발견할 수 있기 때문이다.
그러나 오픈플로우 표준은 서브넷팅을 별도로 제공하지 않는다. 따라서 소프트웨어 정의 네트워크에서는 논리적 서브넷을 설정할 수 있는 방법이 별도로 존재하지 않았다. 따라서 모든 스위치들은 전체 네트워크 단위로만 기능하는 문제가 있었다.
본 발명은 상기와 같은 문제를 해결하기 위하여 안출된 것이다.
본 발명의 실시예를 따르면, 컨트롤러는 오픈플로우 스위치의 포트 별로 서브넷을 지정할 수 있다. 소프트웨어 정의 네트워크에서는 컨트롤러가 네트워크의 노드를 중앙 집중식으로 제어할 수 있으므로, 스위치의 포트별로 서브넷을 설정하여 해당 서브넷마다 가상 주소, 즉 가상 게이트웨이의 주소를 할당하고, 상기 가상 주소에 대한 패킷의 처리를 컨트롤러가 제어하는 방식으로 서브넷을 운영할 수 있다.
보다 구체적으로 컨트롤러는 서브넷 별로 가상 게이트웨이 IP 주소와 MAC 주소를 할당하고, 할당한 주소에 대한 패킷의 처리를 제어하는 플로우 룰을 스위치에 적용하는 방식으로 서브넷을 운용할 수 있다.
예를 들어 호스트가 다른 서브넷의 호스트에 패킷을 전송하고자 하는 경우, 호스트는 먼저 자신의 서브넷의 게이트웨이 MAC 주소가 필요할 것이다. 따라서 호스트는 자신의 서브넷에 할당받은 가상 게이트웨이 MAC 주소를 문의하는 ARP 요청 메시지를 스위치에 전달할 수 있다.
스위치는 플로우 룰에 따라 이를 브로드캐스트하지 않고, 컨트롤러의 제어를 받아 가상 게이트웨이의 MAC 주소를 포함하는 ARP 응답 메시지를 소스 호스트에 전송할 수 있다.
자신의 가상 게이트웨이 MAC 주소를 획득한 소스 호스트는 목적지 IP 필드에 목적지 호스트의 IP 주소를 기재하고, 목적지 MAC 필드에 상기 가상 MAC 주소를 기재한 패킷을 자신과 연결된 스위치에 전송할 수 있다.
상기 패킷을 수신한 스위치는 오픈플로우 프로토콜에 따라 플로우 테이블을 참고하여 패킷을 전송할 것이다. 플로우 테이블에 관련 플로우 룰이 없으면 스위치는 컨트롤러에 플로우 룰을 문의하고, 컨트롤러는 자신의 서브넷 관리 테이블을 참고하여 해당 패킷의 경로를 지정할 수 있다.
특히 컨트롤러는 상기 패킷의 목적지 필드를 가상 게이트웨이 MAC 주소에서 목적지 호스트의 실제 MAC 주소로 변경하는 MAC 주소 다시 쓰기 (MAC rewriting)을 게이트웨이를 대신하여 처리할 수 있다. 나아가 컨트롤러는 MAC 주소 다시 쓰기를 자신이 직접 처리하지 않고, 스위치가 처리하도록 플로우 룰을 전송하여 스위치를 제어할 수도 있다.
본 발명의 실시예에 따르는 SDN에서 서브넷 기능을 제공하는 구체적인 방법은 첨부된 도면에 대한 설명과 함께 후술된다.
도 2는 본 발명의 실시예를 따르는 SDN에서 서브넷을 지정하는 예시를 설명하기 위한 도면이다.
도 2는 오픈플로우 프로토콜을 지원하는 스위치 1 내지 6 (211, 212, 213, 214, 215, 216) 및 상기 스위치의 해당 포트에 연결된 호스트 1 내지 7 (231, 232, 233, 234, 235, 236, 237)을 노드로 하는 임의의 소프트웨어 정의 네트워크를 예시한다.
나아가 도 2에 도시된 예시는 호스트 1 (231)은 스위치 2(212)의 포트 1에 연결되고, 호스트 2 (232)는 스위치 2 (212)의 포트 2에 연결되며, 호스트 3 (233)은 스위치 3 (213)의 포트 1에 연결되고, 호스트 4 (234)는 스위치 3 (213)의 포트 2에 연결되며, 호스트 5 (235)은 스위치 5 (215)의 포트 1에 연결되고, 호스트 6 (236)은 스위치 6 (216)의 포트 1에 연결되고, 호스트 7 (237)는 스위치 6 (216)의 포트 2에 연결된 네트워크를 예시한다.
이와 같은 소프트웨어 정의 네트워크에서, 본 발명의 실시예를 따르는 컨트롤러는 스위치의 포트 별로 서브넷을 지정할 수 있다.
예를 들어 스위치 2의 포트 1, 스위치 2의 포트 2, 스위치 3의 포트 1, 스위치 6의 포트 2를 제 1 서브넷 (251)으로 지정하고, 스위치 3의 포트 2, 스위치 5의 포트 1, 스위치 6의 포트 1을 제 2 서브넷 (252)으로 지정할 수 있다. 이 경우, 호스트 1, 2, 3 및 7 (231, 232, 233, 237)은 제 1 서브넷 (251) 에 속하며 호스트 4, 5 및 6 (234, 235, 236)은 제 2 서브넷 (252) 에 속하게 될 것이다.
특히 본 발명의 실시예를 따르면 스위치별로 서브넷을 지정하는 것이 아니라 스위치의 포트별로 서브넷을 지정할 수 있다. 따라서 하나의 스위치는 복수의 서브넷에 속할 수 있다. 앞의 예에서 스위치 3 (213) 및 스위치 6 (216) 제 1 서브넷 (251) 및 제 2 서브넷 (252)에 동시에 속해 있는 경우이다.
보다 구체적으로 컨트롤러는 가상 게이트웨이의 IP 주소와 MAC 주소를 할당하여 서브넷을 운용할 수 있다. 도 2의 예에서 컨트롤러는 제 1 서브넷 (251)에 제 1 가상 IP 주소 <IP 1> 및 제 1 가상 MAC 주소 <MAC 1>을 할당하고, 제 2 서브넷 (252)에 제 2 가상 IP 주소 <IP 2>및 제 2 가상 MAC 주소 <MAC 2>를 할당할 수 있다.
표 1은 위의 예에서 컨트롤러가 관리하는 서브넷 리스트를 예시한다. 이때 제 1 가상 게이트웨이의 IP 주소는 <IP 1>, 제 1 가상 게이트웨이의 MAC 주소는 <MAC 1>, 제 2 가상 게이트웨이의 IP 주소는 <IP 2>, 제 2 가상 게이트웨이의 MAC 주소는 <MAC 2>로 간략하게 표시하였다.
서브넷 ID 가상 게이트웨이 IP 주소 가상 게이트웨이 MAC주소 멤버 정보 호스트 정보
제 1 서브넷 제 1 가상 IP 주소 < IP 1> 제 1 가상 MAC 주소 < MAC 1> (스위치 2, 포트 1) 호스트 1
(스위치 2, 포트 2) 호스트 2
(스위치 3, 포트 1) 호스트 3
(스위치 7, 포트 2) 호스트 7
제 2 서브넷 제 2 가상 IP 주소 <IP 2> 제 2 가상 MAC 주소 < MAC 2> (스위치 3, 포트 2) 호스트 4
(스위치 5, 포트 1) 호스트 5
(스위치 6, 포트 1) 호스트 6
나아가 컨트롤러는 자신의 로컬 네트워크의 IP 주소와 MAC 주소를 테이블 형태로 저장하고 있을 수 있다.
한편 소프트웨어 정의 네트워크에서도 호스트 간의 전송은 IP 주소를 기반으로 이루어진다. 보다 구체적으로 송신 호스트 (소스 호스트)는 수신 호스트 (목적지 호스트)의 IP 주소를 이용하여 데이터 송신을 시도하며, 이때 수신 호스트의 IP 주소를 이용하여 수신 호스트의 MAC 주소를 알아내기 위하여 ARP가 사용된다.
ARP, 즉 주소 결정 프로토콜(Address Resolution Protocol)은 네트워크 상에서 IP 주소를 MAC 주소 등 물리적 네트워크 주소로 대응시키기 위해 사용되는 프로토콜이다. 여기서 물리적 네트워크 주소는 이더넷의 네트워크 카드 주소를 포함할 수 있다.
예를 들어 도 2의 예에서 호스트 1 (231)이 호스트 4 (234)에 패킷을 전송하고자 하는 경우, 호스트 1과 호스트 4는 논리적으로 구분된 다른 서브넷에 속하기 때문에 호스트 1 (231)은 자신의 게이트웨이 MAC 주소를 획득하기 위하여 ARP 프로토콜에 따라 게이트웨이 IP 주소에 대한 ARP 요청 패킷을 네트워크 상에 브로드캐스팅할 것이다. 예를 들어 표 1의 예에서 호스트 1은 목적지 IP 주소 필드에 <IP 1>을 기재한 ARP 요청 메시지를 자신의 서브넷에 브로드캐스팅하기 위해 스위치 2에 전송할 것이다.
ARP 요청 패킷을 수신한 스위치 2 (212)는 본 발명의 실시예에 따라 이를 브로드캐스팅하지 않고 자신의 플로우 테이블을 참고하여 처리할 것이다.
예를 들어 플로우 테이블에 해당 ARP 요청 패킷은 컨트롤러에 전송하도록 설정되어 있는 경우 스위치 2는 컨트롤러에 해당 ARP 요청 패킷을 전달할 수 있다. 이후 컨트롤러는 해당 서브넷의 가상 MAC 주소에 대한 ARP 응답 패킷을 패킷 아웃 메시지 형태로 스위치 2에 전송하고, 상기 ARP 응답 패킷을 호스트 1 (231)에 전송하도록 스위치 2 (212)를 제어하는 플로우 변경 메시지를 전송할 수 있다. 이 경우, 표 1의 예에서 호스트 1은 소스 IP 주소 필드에 <IP 1>, 소스 MAC 주소 필드에 <MAC 1>을 기재한 ARP 응답 패킷을 수신할 수 있다.
게이트웨이의 MAC 주소를 획득한 호스트 1 (231)은 호스트 4 (234)에 전송할 패킷을 목적지 IP 주소 필드에 호스트 4 (234)의 IP 주소를 기재하고, 목적지 MAC 주소 필드에 <MAC 1>을 기재하여 스위치 2 (212)에 전송할 수 있다.
한편, 일반적인 L3 통신에서 MAC 주소 다시 쓰기, 즉 패킷의 도착지 MAC 주소를 게이트웨이의 MAC 주소에서 도착 호스트의 MAC 주소로 변경하는 처리는 일반적으로 게이트웨이에서 수행된다. MAC 주소 다시 쓰기가 필요한 이유는 목적지 호스트까지 IP 주소 기반으로 패킷이 도달한다 하더라도, 목적지 호스트의 MAC 주소와 일치하지 않는 패킷은 드랍될 수 있기 때문이다.
그러나 본발명의 실시예를 따르면, MAC 주소를 다시 쓰는 게이트웨이의 역할을 컨트롤러가 대신할 수 있다. 소프트웨어 정의 네트워크에서는 컨트롤러가 중앙 집중식으로 네트워크의 패킷 정책을 결정할 수 있으므로, 다른 서브넷과 통신하는 패킷에 대한 처리를 규정하는 플로우 룰을 전송하는 방식으로 맥 주소 다시 쓰기를 수행할 수 있다.
보다 구체적으로, 본 발명의 실시예를 따르면, 컨트롤러는 가상 게이트웨이의 MAC 주소를 목적지로 하는 패킷은 컨트롤러에 전송하도록 규정하는 플로우 룰을 스위치에 전송할 수 있다.
이후 패킷을 수신한 컨트롤러는 해당 패킷의 도착지 MAC 주소 필드를 도착지 IP 주소와 매칭되는 MAC 주소, 즉 도착지 호스트의 실제 MAC 주소 값으로 변경하여 스위치에 다시 전송할 수 있다. 나아가 컨트롤러는 변경한 패킷의 경로를 지정하는 플로우 룰 역시 스위치에 전송할 수 있다.
본 발명의 다른 실시예를 따르면, 컨트롤러는 플로우 룰을 전송하여 MAC 주소 다시 쓰기를 스위치에서 처리할 수도 있다. 보다 구체적으로, 컨트롤러는 가상 게이트웨이의 MAC 주소를 목적지로 하는 패킷은, 해당 패킷의 도착지 MAC 주소 필드를 특정 값으로 변경하도록 규정하는 플로우 룰을 해당 스위치에 전송할 수 있다. 상기 특정 값은 도착지 IP 주소와 매칭되는 MAC 주소, 즉 도착지 호스트의 실제 MAC 주소이다.
도 3은 본 발명의 실시예를 따르는 소프트웨어 정의 네트워크에서 서브넷을 지정하고, 서브넷 간의 L3 통신을 처리하는 방법을 설명하기 위한 순서도이다. 도 3은 본 발명의 실시예에 따라 서브넷을 지정하는 구체적인 방법을 설명하기 위해, 전술한 도 2의 제 1 서브넷 (251)에 속하는 스위치 (212, 213, 216) 및 제 2 서브넷 (252)에 속하는 스위치 (213, 215, 216)를 예로 들고 있다.
도 3의 단계 310에서 컨트롤러는 스위치의 포트별로 서브넷을 지정하고, 각각의 서브넷에 대한 가상 게이트웨이 IP 주소와 가상 게이트웨이 MAC 주소를 할당하고, 이를 리스트 및/또는 테이블의 형태로 관리할 수 있다.
서브넷 리스트는 예를 들어 전술한 표 1의 형태의 데이터베이스로 컨트롤러가 관리할 수 있다. 이에 따르면 도 3에 도시된 제 1 서브넷 스위치 (251)는 가상 게이트웨이의 IP 주소 및 MAC 주소가 < <IP 1, MAC 1> 로 할당되었으며, 제 2 서브넷 스위치 (252)는 <IP 2, MAC 2>로 할당된 경우이다.
나아가 컨트롤러는 컨트롤러는 자신의 로컬 네트워크의 IP 주소와 MAC 주소를 테이블 형태로 저장하고 있을 수 있다.
단계 320에서 컨트롤러는 서브넷을 이동하는 패킷은 컨트롤러의 제어를 받아 처리하도록 스위치를 설정할 수 있다. 이는 도 3에 도시된 것과 같이 컨트롤러가 스위치에 플로우 룰을 전송하는 방식으로 구현될 수 있다.
본 발명의 실시예를 따르면, 상기 플로우 룰은 다른 서브넷으로 전달되는 패킷 또는 다른 서브넷에서 전달된 패킷의 처리에 대해 규정할 수 있다.
보다 구체적으로 서브넷을 이동하는 패킷을 처리하는 플로우 룰은, 표 2와 같이 해당 패킷을 컨트롤러에 전송하도록 규정할 수 있다. 이 때 실제 MAC 주소 다시 쓰기는 컨트롤러가 처리할 수 있다. 표 2의 1번 행은 다른 서브넷으로 전달되는 패킷의 MAC 주소 다시 쓰기를 위한 것이고, 2번 행은 다른 서브넷에서 전달된 패킷의 MAC 주소 다시 쓰기를 위한 것이다.
Match Fields Instructions
1 1. 도착지 IP 주소 : 다른 서브넷에 속하는 호스트의 IP 주소
2. 도착지 MAC 주소 : 해당 서브넷에 할당된 가상 게이트웨이의 MAC 주소

컨트롤러로 전송 (send to controller)
2 1. 소스 IP 주소 : 다른 서브넷에 속하는 호스트의 IP 주소
2. 도착지 MAC 주소 : 다른 서브넷에 할당된 가상 게이트웨이의 MAC 주소
컨트롤러로 전송 (Send to controller)
본 발명의 다른 실시예를 따르면 서브넷을 이동하는 패킷을 처리하는 플로우 룰은, 표 3와 같이 MAC 주소 다시 쓰기를 스위치에서 처리하도록 규정할 수 있다. 표 3의 1번 행은 다른 서브넷으로 전달되는 패킷의 MAC 주소 다시 쓰기를 위한 것이고, 2번 행은 다른 서브넷에서 전달된 패킷의 MAC 주소 다시 쓰기를 위한 것이다.
Match Fields Instructions
1 1. 도착지 IP 주소 : 다른 서브넷에 속하는 호스트의 IP 주소
2. 도착지 MAC 주소 : 해당 서브넷에 할당된 가상 게이트웨이의 MAC 주소
도착지 MAC 주소 필드를 도착지 IP 주소에 따라 특정 값으로 변경
2 1. 소스 IP 주소 : 다른 서브넷에 속하는 호스트의 IP 주소
2. 도착지 MAC 주소 : 다른 서브넷에 할당된 가상 게이트웨이의 MAC 주소
도착지 MAC 주소 필드를 도착지 IP 주소에 따라 특정 값으로 변경
특히 표 3에서 예시하는 플로우 룰을 따르면, 스위치는 다른 서브넷으로 전달되는 패킷, 또는 다른 서브넷에서 전달된 패킷의 MAC 주소를 실제 호스트의 MAC 주소로 변경할 수 있다.
한편 도 3에 별도로 도시된 것은 아니지만, 본 발명의 실시예를 따르면 서브넷은 스위치별로 지정되는 것이 아니라, 스위치의 포트별로 지정될 수 있다. 따라서 특정 스위치는 복수의 서브넷에 속할 수 있다. 전술한 도 2에서 스위치 3 (213) 및 스위치 6 (216)은 제 1 서브넷 (251) 과 제 2 서브넷 (252)에 모두 속해 있는 경우이다.
스위치가 복수의 서브넷에 속하는 경우, 서브넷을 이동하는 패킷의 처리를 규정하기 위하여 플로우 룰이 복수개 적용될 수 있다. 예를 들어 도 2의 스위치 3 (213) 및 스위치 6 (216)은 제 1 서브넷에서 제 2 서브넷으로 이동하는 패킷의 처리를 규정하는 플로우 룰, 그리고 제 2 서브넷에서 제 1 서브넷으로 이동하는 패킷의 처리를 규정하는 플로우 룰을 컨트롤러로부터 각각 수신할 수 있다.
이후 스위치는 수신한 플로우 룰을 플로우 테이블에 반영할 수 있다.
이후 호스트가 서브넷을 이동하는 패킷을 수신하면, 스위치는 플로우 테이블에 따라 해당 패킷을 처리할 수 있다.
도 3의 예에서 제 1 서브넷에 속하는 스위치 (251)는 목적지 MAC 주소를 <MAC 1>로 기재하고, 목적지 IP 주소를 제 2 서브넷에 속하는 호스트의 IP로 기재한 패킷을 수신할 수 있다. (단계 330) 이때 스위치는 플로우 테이블을 참고하여 패킷의 경로를 결정하며, 패킷의 MAC 주소 다시 쓰기는 전술한 표 2 또는 표 3에 따라 처리될 수 있다. 특히 본 발명의 실시예를 따르면 MAC 주소 다시 쓰기는 소스 서브넷에서 처리될 수도 있고, 목적지 서브넷에서 처리될 수도 있다.
도 3의 예에서 단계 342 내지 단계 349는 소스 서브넷에서 패킷의 MAC 주소 다시 쓰기를 처리하고 목적지 서브넷으로 전송하는 예시이며, 단계 351 내지 단계 357은 목적지 서브넷에서 패킷의 MAC 주소 다시 쓰기를 처리하는 예시이다.
보다 구체적으로, 표 2과 같은 플로우 룰이 스위치(251)에 적용된 경우, 스위치는 상기 패킷을 패킷인 메시지의 형태로 컨트롤러에 전송할 수 있다. (단계 345)
이를 수신한 컨트롤러는 해당 패킷의 도착지 MAC 주소를 <MAC 1>에서 도착 호스트의 MAC 주소로 변경하는 MAC 주소 다시 쓰기를 수행하고 (단계 346), MAC 주소를 다시 쓴 패킷을 스위치에 전송하고, 해당 패킷의 경로를 규정하는 플로우 룰을 전송할 수 있다. (단계 347) 스위치는 플로우 룰에 따라 MAC 주소를 다시 쓴 패킷을 제 2 서브넷 (252)에 전달할 것이다. (단계 351)
한편, 표 3과 같은 플로우 룰이 스위치에 적용된 경우, 스위치는 MAC 주소 다시 쓰기를 직접 수행할 것이다. (단계 342) 즉, 스위치는 해당 패킷의 도착지 MAC 주소 필드를 <MAC 1>에서 미리 특정된 값으로 변경할 것이다. 상기 특정 값은 도착지 IP 주소와 매칭되는 MAC 주소, 즉 도착 호스트의 MAC 주소에 해당한다. 이후 스위치는 플로우 룰에 따라 MAC 주소를 다시 쓴 패킷을 제 2 서브넷 (252)에 전달할 것이다. (단계 351)
이후 제 2 서브넷의 스위치는 목적지 호스트에 패킷을 전달할 것이다. (단계 360)
한편, 도 3의 단계 351 내지 단계 357은 목적지 서브넷에서 패킷의 MAC 주소 다시 쓰기를 처리하는 예시이다.
먼저 소스 서브넷의 스위치는 목적지 서브넷의 스위치에 패킷을 전송할 수 있다. (단계 351)
이후 표 2과 같은 플로우 룰이 스위치(252)에 적용된 경우, 스위치는 상기 패킷을 패킷인 메시지의 형태로 컨트롤러에 전송할 수 있다. (단계 354)
이를 수신한 컨트롤러는 해당 패킷의 도착지 MAC 주소를 <MAC 1>에서 도착 호스트의 MAC 주소로 변경하는 MAC 주소 다시 쓰기를 수행하고 (단계 356), MAC 주소를 다시 쓴 패킷을 스위치에 전송하고, 해당 패킷의 경로를 규정하는 플로우 룰을 전송할 수 있다. (단계 357) 스위치는 플로우 룰에 따라 MAC 주소를 다시 쓴 패킷을 목적지 호스트에 전달할 것이다. (단계 360)
한편, 표 3과 같은 플로우 룰이 스위치에 적용된 경우, 스위치는 MAC 주소 다시 쓰기를 직접 수행할 것이다. (단계 352) 즉, 스위치는 해당 패킷의 도착지 MAC 주소 필드를 <MAC 1>에서 미리 특정된 값으로 변경할 것이다. 상기 특정 값은 도착지 IP 주소와 매칭되는 MAC 주소, 즉 도착 호스트의 MAC 주소에 해당한다. 이후 스위치는 플로우 룰에 따라 MAC 주소를 다시 쓴 패킷을 목적지 호스트에 전달할 것이다. (단계 360)
본 명세서와 도면에 게시된 본 발명의 실시 예들은 본 발명의 기술 내용을 쉽게 설명하고 본 발명의 이해를 돕기 위해 특정 예를 제시한 것뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 게시된 실시 예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식 가진 자에 자명한 것이다.

Claims (6)

  1. 소프트웨어 정의 네트워크에서 서브넷 기능을 지원하는 방법에 있어서,
    컨트롤러가, 게이트웨이를 포함하지 않고 오픈플로우 스위치에 서브넷을 지정하고, 각각의 서브넷에 가상 IP 주소 및 가상 MAC 주소를 할당하고, 상기 서브넷을 이동하는 패킷의 MAC 주소 다시 쓰기 (MAC rewriting)를 처리하기 위한 플로우 룰을 생성하는 A 단계; 및
    상기 오픈플로우 스위치가, 상기 서브넷을 이동하는 패킷을 수신하면, 상기 컨트롤러로 전송하지 않고, 상기 패킷의 도착지 MAC 주소 필드를 도착지 IP 주소의 MAC 주소 값으로 변경하는 B 단계를 포함하며,
    상기 B 단계는,
    제 1 서브넷에 속하는 오픈플로우 스위치가, 도착지 IP 주소 필드에 제 2 서브넷에 속하는 호스트의 IP 주소가 기록되고, 도착지 MAC 주소 필드에 상기 제 2 서브넷에 할당된 가상 MAC 주소가 기록된 패킷을 수신하는 단계; 및
    상기 오픈플로우 스위치가, 상기 패킷의 상기 도착지 MAC 주소 필드를 상기 제 2 서브넷에 속하는 호스트의 실제 MAC 주소로 변경하는 단계를 포함하는 것을 특징으로 하는 서브넷 지원 방법.
  2. 제 1항에 있어서, 상기 A 단계는,
    상기 컨트롤러가, 상기 서브넷을 이동하는 패킷을 수신하면 상기 컨트롤러에 전송하도록 상기 오픈플로우 스위치를 설정하는 플로우 룰을 상기 오픈플로우 스위치에 전송하는 단계를 포함하는 것을 특징으로 하는 서브넷 지원 방법.
  3. 제 2항에 있어서, 상기 B 단계는,
    상기 컨트롤러가, 상기 오픈플로우 스위치로부터 상기 서브넷을 이동하는 패킷을 수신하면, 상기 패킷의 도착지 MAC 주소 필드를 도착지 IP 주소의 MAC 주소 값으로 변경한 패킷을 상기 오픈플로우 스위치에 전송하는 단계를 포함하는 것을 특징으로 하는 서브넷 지원 방법.
  4. 제 3항에 있어서, 상기 A 단계는,
    상기 컨트롤러가, 상기 오픈플로우 스위치의 포트 별로 상기 서브넷을 지정하는 단계; 및
    상기 오픈플로우 스위치에 복수의 서브넷이 지정된 경우, 상기 서브넷을 이동하는 패킷의 처리에 대한 플로우 룰을 상기 오픈플로우 스위치에 복수개 전송하는 단계를 포함하는 것을 특징으로 하는 서브넷 지원 방법.
  5. 소프트웨어 정의 네트워크에서 서브넷 기능을 지원하는 시스템에 있어서,
    게이트웨이를 포함하지 않고 오픈플로우 스위치에 서브넷을 지정하고 각각의 서브넷에 가상 IP 주소 및 가상 MAC 주소를 할당하고, 상기 서브넷을 이동하는 패킷의 MAC 주소 다시 쓰기를 처리하기 위한 플로우 룰을 생성하는 컨트롤러; 및
    상기 서브넷을 이동하는 패킷을 수신하면, 상기 컨트롤러로 전송하지 않고, 상기 패킷의 도착지 MAC 주소 필드를 도착지 IP 주소의 MAC 주소 값으로 변경하는 오픈플로우 스위치를 포함하며,
    상기 오픈플로우 스위치는,
    제 1 서브넷에 속하는 경우, 도착지 IP 주소 필드에 제 2 서브넷에 속하는 호스트의 IP 주소가 기록되고, 도착지 MAC 주소 필드에 상기 제 2 서브넷에 할당된 가상 MAC 주소가 기록된 패킷을 수신하면, 상기 패킷의 상기 도착지 MAC 주소 필드를 상기 제 2 서브넷에 속하는 호스트의 실제 MAC 주소로 변경하는 것을 특징으로 하는 서브넷 지원 시스템.
  6. 소프트웨어 정의 네트워크에서 서브넷 기능을 지원하는 처리를 컨트롤러에서 수행하기 위하여 컴퓨터 판독가능한 기록 매체에 저장된 컴퓨터 프로그램에 있어서,
    게이트웨이를 포함하지 않고 오픈플로우 스위치에 서브넷을 지정하고 각각의 서브넷에 가상 IP 주소 및 가상 MAC 주소를 할당하는 기능; 및
    상기 서브넷을 이동하는 패킷의 MAC 주소 다시 쓰기를 처리하기 위한 플로우 룰을 생성하는 기능을 수행하고,
    상기 플로우 룰은, 상기 오픈플로우 스위치에서 상기 서브넷을 이동하는 패킷을 수신하면, 상기 컨트롤러로 전송하지 않고, 상기 패킷의 도착지 MAC 주소 필드를 도착지 IP 주소의 MAC 주소 값으로 변경하도록 상기 오픈플로우 스위치를 설정하며,
    상기 플로우 룰은, 제 1 서브넷에 속하는 오픈플로우 스위치가, 도착지 IP 주소 필드에 제 2 서브넷에 속하는 호스트의 IP 주소가 기록되고, 도착지 MAC 주소 필드에 상기 제 2 서브넷에 할당된 가상 MAC 주소가 기록된 패킷을 수신하면, 상기 오픈플로우 스위치를, 상기 패킷의 상기 도착지 MAC 주소 필드를 상기 제 2 서브넷에 속하는 호스트의 실제 MAC 주소로 변경하도록 설정하는 것을 특징으로 하는 컴퓨터 프로그램.
KR1020150185851A 2015-12-24 2015-12-24 소프트웨어 정의 네트워크에서 서브넷을 지원하는 방법, 장치 및 컴퓨터 프로그램 KR101786616B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150185851A KR101786616B1 (ko) 2015-12-24 2015-12-24 소프트웨어 정의 네트워크에서 서브넷을 지원하는 방법, 장치 및 컴퓨터 프로그램

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150185851A KR101786616B1 (ko) 2015-12-24 2015-12-24 소프트웨어 정의 네트워크에서 서브넷을 지원하는 방법, 장치 및 컴퓨터 프로그램

Publications (2)

Publication Number Publication Date
KR20170076066A KR20170076066A (ko) 2017-07-04
KR101786616B1 true KR101786616B1 (ko) 2017-10-17

Family

ID=59357329

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150185851A KR101786616B1 (ko) 2015-12-24 2015-12-24 소프트웨어 정의 네트워크에서 서브넷을 지원하는 방법, 장치 및 컴퓨터 프로그램

Country Status (1)

Country Link
KR (1) KR101786616B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108259477B (zh) * 2017-12-30 2020-12-08 未鲲(上海)科技服务有限公司 基于sdn的网络访问控制方法、装置和计算机设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150281067A1 (en) * 2013-12-31 2015-10-01 Huawei Technologies Co.,Ltd. Method and apparatus for implementing communication between virtual machines

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150281067A1 (en) * 2013-12-31 2015-10-01 Huawei Technologies Co.,Ltd. Method and apparatus for implementing communication between virtual machines

Also Published As

Publication number Publication date
KR20170076066A (ko) 2017-07-04

Similar Documents

Publication Publication Date Title
CN104202266B (zh) 一种通信方法、交换机、控制器及通信系统
CN102882699B (zh) 边缘节点的分配方法和装置及边缘节点控制器
US9756682B2 (en) Method and system for partitioning wireless local area network
CN101577722B (zh) 实现强制mac转发功能的方法和装置
EP4027688A1 (en) Communication method, apparatus, device and system, and medium
KR101786620B1 (ko) 소프트웨어 정의 네트워크에서 서브넷을 지원하는 방법, 장치 및 컴퓨터 프로그램
EP3069471B1 (en) Optimized multicast routing in a clos-like network
EP2584742B1 (en) Method and switch for sending packet
US20130343394A1 (en) Method and Apparatus for Converting Virtual Local Area Network Identity
CN107094110B (zh) 一种dhcp报文转发方法及装置
EP2536099A2 (en) Method and access node for preventing address conflict
US20120257565A1 (en) Mobile network traffic management
JP2018521599A (ja) Sdnベースのarp実装方法および装置
KR101710385B1 (ko) Arp 패킷을 관리하는 방법, 장치 및 컴퓨터 프로그램
EP3086512B1 (en) Implementation method and apparatus for vlan to access vf network and fcf
US9219688B2 (en) Method and system for network load balancing
CN110445708B (zh) 一种融合网关内通信方法及系统
KR101786616B1 (ko) 소프트웨어 정의 네트워크에서 서브넷을 지원하는 방법, 장치 및 컴퓨터 프로그램
CN112995038A (zh) Profinet协议在工业sdn中的接入方法
KR102092015B1 (ko) 소프트웨어 정의 네트워크에서 네트워크 장비를 인식하는 방법, 장치 및 컴퓨터 프로그램
KR101931139B1 (ko) 소프트웨어 정의 네트워크에서 호스트 상태 정보를 확인하는 방법, 장치 및 컴퓨터 프로그램
KR20040011936A (ko) 복수의 가상랜으로 구성된 이더넷 상에서의 스위칭 장치와이를 이용한 통신 방법
KR101786623B1 (ko) 소프트웨어 정의 네트워크에서 브로드캐스트를 처리하는 방법, 장치 및 컴퓨터 프로그램
KR102019210B1 (ko) 소프트웨어 정의 네트워크에서 호스트를 관리하는 방법, 장치 및 컴퓨터 프로그램
KR102207290B1 (ko) 소프트웨어 정의 네트워크에서 vlan을 지원하는 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant