KR20170001654A - Sdn 스위치를 이용한 네트워크 주소 변환 방법 - Google Patents
Sdn 스위치를 이용한 네트워크 주소 변환 방법 Download PDFInfo
- Publication number
- KR20170001654A KR20170001654A KR1020160079856A KR20160079856A KR20170001654A KR 20170001654 A KR20170001654 A KR 20170001654A KR 1020160079856 A KR1020160079856 A KR 1020160079856A KR 20160079856 A KR20160079856 A KR 20160079856A KR 20170001654 A KR20170001654 A KR 20170001654A
- Authority
- KR
- South Korea
- Prior art keywords
- address
- packet
- public
- switch
- flow
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2521—Translation architectures other than single NAT servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
SDN 환경에서, 네트워크 주소 변환을 수행하도록 스위치를 구성하기 위한, 컨트롤러의 동작 방법이 개시된다. 본 발명에 따른 방법의 일 실시예는 스위치로 입력되는 패킷의 목적지 IP 주소가 공인 IP 주소(d1)인 경우에, 상기 패킷의 사설 소스 IP 주소(s1)와 사설 포트 번호(s2)를 공인 IP 주소(p1)와 공인 포트 번호(p2)로 변환하기 위한 주소변환용 제1 플로우 엔트리를 상기 스위치의 제1 플로우 테이블에 추가하는 단계; 및 상기 제1 플로우 엔트리를 거친 상기 패킷에 대한 포워딩용 플로우 엔트리를 상기 스위치의 제2 플로우 테이블에 추가하는 단계를 포함하여 구성될 수 있다. 본 발명에 따르면, 별도의 NAT 장치를 사용하지 않고 SDN 스위치와 컨트롤러만을 이용하여 NAT 기능을 구현할 수 있고, 이를 통해 SDN 스위치에 연결된 다수의 단말이나 네트워크 장치들이 부족한 공인 IP 주소 대신에 사설 IP 주소를 사용하여 인터넷 서비스를 제공 받을 수 있다.
Description
본 발명은 소프트웨어 정의 네트워킹(SDN; Software Defined Networking) 기술에 관한 것으로, 더욱 상세하게는, 별도의 NAT(Network Address Translation) 장치를 사용하지 않고도 SDN 스위치 상에서 네트워크 주소 변환 기능을 수행하도록 하는, 컨트롤러와 스위치의 동작 방법에 관한 것이다.
최근 들어, 네트워크 장치의 트래픽 포워딩 기능과 제어 기능을 분리하여 통신 시스템을 효율적으로 운용하는 기술에 대한 표준화가 ONF(Open Networking Foundation), IETF(Internet Engineering Task Force), ETSI ISG NFV(Network Function Virtualization) 및 ITU-T 등을 중심으로 진행되고 있다.
SDN(Software Defined Network)은 라우터나 스위치 등의 기본 네트워크 장비에 관계없이 사용자가 통제 권한을 가지며, 별도의 소프트웨어 컨트롤러가 스위치를 통해 트래픽 흐름을 제어하는 사용자 중심의 네트워크이다.
SDN에서 사용자는 컨트롤러를 통해 스위치가 수행해야 할 인스트럭션(instruction)들을 만들어 제어 메시지에 담아서 스위치로 전달하며, 스위치는 단순히 컨트롤러로부터 전달받은 인스트럭션들을 수행하는 역할을 한다. 컨트롤러가 스위치에게 보낸 제어 메시지 안의 인스트럭션은 각각의 플로우 엔트리(Flow entry)에 저장되어 스위치가 실제 패킷을 처리하는 동작을 제어 한다.
전 세계적으로 인터넷 사용 인구가 크게 증가하고 또한 인터넷을 통해서 웹이나 이메일 같은 일반 데이터뿐만 아니라 전화, TV, 무선 데이터 등과 같은 다양한 서비스들을 제공할 수 있게 됨으로써 인터넷에 연결된 단말 수도 기하 급수적으로 증가하고 있다. 특히 스마트폰과 같은 모바일 기기의 등장으로 향후에도 인터넷에 연결될 단말의 숫자는 폭발적으로 증가할 것으로 예상된다.
단말이 인터넷에 연결되기 위해서는 IP 주소라는 고유한 주소를 갖고 있어야 하는데 현재 대부분의 인터넷 단말이 사용하고 있는 IPv4(Internet Protocol version 4)는 32비트라는 제한된 주소 체계를 가지고 있고, 이미 대부분의 주소 영역이 할당된 상태이기 때문에 신규 단말들을 위한 IP 주소의 할당이 매우 어려운 상태이다.
이에 따라 IP 주소 체계를 128비트로 늘린 IPv6에 대한 연구와 표준화가 활발히 진행되고 있지만 이미 광범위하게 사용되고 있는 IPv4를 대체하기까지는 매우 오랜 기간이 걸릴 것으로 예상된다. 이를 해결하기 위한 방안으로 하나의 IP 주소를 여러 단말이 공유해서 사용하는 방안이 오래 전부터 폭넓게 사용되어 왔는데 이 기술을 네트워크 주소 변환(Network Address Translation) 이라고 한다.
네트워크 주소 변환 기술은 한 서브 네트워크(sub network) 안에 있는 단말들에게는 각각 고유한 사설 IP 주소를 할당하되, 서브 네트워크 안에 있는 단말로부터의 패킷이 해당 서브 네트워크가 아닌 다른 네트워크로 전달될 때에는 공인 IP 주소로 변환하여 전달하는 것이다. 이를 통해, 여러 단말들이 하나의 공인 IP 주소를 공유해서 사용할 수 있기 때문에 필요한 공인 IP 주소의 수를 대폭 절감할 수 있다. 또한, 서로 다른 서브네트워크 안에 있는 단말들 간에는 동일한 사설 IP 주소를 사용할 수 있기 때문에 단말이 대폭 늘어나더라도 IP 주소 자원 부족의 문제 없이 인터넷 서비스가 가능하다. 이러한 장점으로 인해 현재 인터넷을 구성하고 있는 네트워크 장치들 안에는 네트워크 주소 변환 기술이 광범위하게 사용되고 있다. IETF에서는 전체 주소 대역(232) 중에서 10.x.x.x, 172.16~31.x.x, 192.168.x.x 주소 대역을 사설 IP 주소로 사용하도록 규정하고 있다.
SDN 스위치는 기존 네트워크 장치에서 제어 기능과 트래픽 포워딩 기능을 분리하여 제어 기능은 컨트롤러에서 수행하고 트래픽 포워딩 같이 루틴한 기능은 스위치에서 수행하도록 함으로써 스위치의 기능을 단순화시켜서 멀티 벤더화 및 저가격화 시킬 수 있는 장점이 있다.
따라서 SDN 스위치에 네트워크 주소 변환 기술을 적용하면 기존 네트워크 장치에 구현했을 때 보다 멀티 벤더화 및 저가격화가 가능하지만 현재 ONF OpenFlow 표준안에는 네트워크 주소 변환 기술을 적용할 수 있는 방법이 정의되어 있지 않기 때문에 SDN 스위치를 미래 인터넷의 다양한 네트워크 장치로 활용하는데 한계가 있다.
상술된 종래 기술의 문제점을 해결하기 위한 본 발명의 제1 목적은 SDN 스위치가 입력받은 패킷의 사설 IP 주소와 공인 IP 주소를 상호 변환하여 출력하도록 하는, 상기 스위치와 연동하는 SDN 컨트롤러의 동작 방법을 제공하는데 있다.
상술된 종래 기술의 문제점을 해결하기 위한 본 발명의 제2 목적은 상기 컨트롤러와 연동하여, 입력받은 패킷의 사설 IP 주소와 공인 IP 주소를 상호 변환하여 출력하는 SDN 스위치의 동작 방법을 제공하는데 있다.
상술한 본 발명의 제 1 목적을 달성하기 위한 본 발명의 일 측면에 따른, SDN 환경에서 네트워크 주소 변환(Network Address Translation)을 수행하도록 스위치를 구성하기 위한 방법은, 컨트롤러의 동작 방법으로서, 상기 스위치로 입력되는 패킷의 목적지 IP 주소가 공인 IP 주소(d1)인 경우에, 상기 패킷의 사설 소스 IP 주소(s1)와 사설 포트 번호(s2)를 공인 IP 주소(p1)와 공인 포트 번호(p2)로 변환하기 위한 주소변환용 제1 플로우 엔트리를 상기 스위치의 제1 플로우 테이블에 추가하는 단계; 및 상기 제1 플로우 엔트리를 거친 상기 패킷에 대한 포워딩을 위한 포워딩용 플로우 엔트리를 상기 스위치의 제2 플로우 테이블에 추가하는 단계를 포함하여 구성될 수 있다.
여기에서, 상기 스위치로 입력되는 패킷의 목적지 IP 주소가 상기 공인 IP 주소(p1)인 경우에, 상기 패킷의 상기 공인 IP 주소(p1)와 공인 포트 번호(p2)를 상기 사설 IP 주소(s1)와 상기 사설 포트 번호(s2)로 변환하기 위한 주소변환용 제2 플로우 엔트리를 상기 스위치의 제1 플로우 테이블에 추가하는 단계를 추가로 포함할 수 있다.
여기에서, 상기 주소변환용 제1 플로우 엔트리에 의해서 주소변환이 이루어지는 패킷은 상기 스위치의 다운링크 포트로 입력되어 상기 스위치의 업링크 포트로 출력되는 패킷일 수 있다.
여기에서, 상기 주소변환용 제2 플로우 엔트리에 의해서 주소변환이 이루어지는 패킷은 상기 스위치의 업링크 포트로 입력되어 상기 스위치의 다운링크 포트로 출력되는 패킷일 수 있다.
여기에서, 상기 주소변환용 제1 플로우 엔트리는 상기 패킷의 사설 소스 IP 주소(s1)와 사설 포트 번호(s2)를 매치 필드(match field)에 포함하고, 상기 패킷의 사설 소스 IP 주소(s1)와 사설 포트 번호(s2)를 공인 IP 주소(p1)와 공인 포트 번호(p2)로 변환하기 위한 인스트럭션을 인스트럭션 필드(instruction field)에 포함할 수 있다.
또한, 상기 주소변환용 제1 플로우 엔트리의 상기 인스트럭션 필드는 상기 제1 플로우 엔트리의 삭제 시점을 결정하는 타이머를 초기화하는 인스트럭션을 추가로 포함할 수 있다.
여기에서, 상기 주소변환용 제2 플로우 엔트리는 상기 패킷의 공인 IP 주소(p1)와 공인 포트 번호(p2)를 매치 필드(match field)에 포함하고, 상기 패킷의 상기 공인 IP 주소(p1)와 공인 포트 번호(p2)를 상기 사설 IP 주소(s1)와 상기 사설 포트 번호(s2)로 변환하기 위한 인스트럭션을 인스트럭션 필드에 포함할 수 있다.
또한, 상기 주소변환용 제2 플로우 엔트리의 상기 인스트럭션 필드는 상기 제2 플로우 엔트리의 삭제 시점을 결정하는 타이머를 초기화하는 인스트럭션을 추가로 포함할 수 있다.
여기에서, 상기 사설 소스 IP 주소(s1) 및 사설 포트 번호(s2)와 상기 공인 IP 주소(p1)과 공인 포트 번호(p2)의 대응 관계는, 상기 컨트롤러가 가진 주소 매핑 테이블(address mapping table)에 의해서 정의될 수 있다.
여기에서, 상기 제1 플로우 테이블은 네트워크 주소 변환을 위한 플로우 엔트리를 포함하여 구성되며, 상기 제2 플로우 테이블은 패킷 포워딩을 위한 플로우 엔트리를 포함하여 구성될 수 있다.
상술한 본 발명의 제 1 목적을 달성하기 위한 본 발명의 일 측면에 따른, SDN 환경에서 네트워크 주소 변환을 수행하는 스위치의 동작 방법은, 상기 스위치로 입력되는 패킷의 목적지 IP 주소가 공인 IP 주소(d1)인 경우, 주소변환용 제1 플로우 엔트리가 저장된 제1 플로우 테이블로 상기 패킷을 전달하여 상기 패킷의 사설 소스 IP 주소(s1)와 사설 포트 번호(s2)를 공인 IP 주소(p1)와 공인 포트 번호(p2)로 변환하는 단계; 및 상기 제1 플로우 엔트리를 거친 상기 패킷을 포워딩용 플로우 엔트리가 저장된 제2 플로우 테이블로 전달하는 단계를 포함하여 구성될 수 있다.
여기에서, 상기 스위치로 입력되는 패킷의 목적지 IP 주소가 상기 공인 주소(p1)인 경우, 주소변환용 제2 플로우 엔트리가 저장된 제1 플로우 테이블로 상기 패킷을 전달하여 상기 패킷의 상기 공인 IP 주소(p1)와 공인 포트 번호(p2)를 상기 사설 IP 주소(s1)와 상기 사설 포트 번호(s2)로 변환하는 단계; 및 상기 제2 플로우 엔트리를 거친 상기 패킷을 포워딩용 플로우 엔트리가 저장된 상기 제2 플로우 테이블로 전달하는 단계를 추가로 포함할 수 있다.
여기에서, 상기 주소변환용 제1 플로우 엔트리에 의해서 주소변환이 이루어지는 패킷은 상기 스위치의 다운링크 포트로 입력되어 상기 스위치의 업링크 포트로 출력되는 패킷일 수 있다.
여기에서, 상기 주소변환용 제2 플로우 엔트리에 의해서 주소변환이 이루어지는 패킷은 상기 스위치의 업링크 포트로 입력되어 상기 스위치의 다운링크 포트로 출력되는 패킷일 수 있다.
여기에서, 상기 주소변환용 제1 플로우 엔트리는 상기 패킷의 사설 소스 IP 주소(s1)와 사설 포트 번호(s2)를 매치 필드(match field)에 포함하고, 상기 패킷의 사설 소스 IP 주소(s1)와 사설 포트 번호(s2)를 공인 IP 주소(p1)와 공인 포트 번호(p2)로 변환하기 위한 인스트럭션을 인스트럭션 필드에 포함할 수 있다.
또한, 상기 주소변환용 제1 플로우 엔트리의 상기 인스트럭션 필드는 상기 제1 플로우 엔트리의 삭제 시점을 결정하는 타이머를 초기화하는 인스트럭션을 추가로 포함할 수 있고, 상기 타이머의 만료(expiry) 시점에 상기 제1 플로우 엔트리는 삭제될 수 있다.
여기에서, 상기 주소변환용 제2 플로우 엔트리는 상기 패킷의 공인 IP 주소(p1)와 공인 포트 번호(p2)를 매치 필드(match field)에 포함하고, 상기 패킷의 상기 공인 IP 주소(p1)와 공인 포트 번호(p2)를 상기 사설 IP 주소(s1)와 상기 사설 포트 번호(s2)로 변환하기 위한 인스트럭션을 인스트럭션 필드에 포함할 수 있다.
또한, 상기 주소변환용 제2 플로우 엔트리의 상기 인스트럭션 필드는 상기 제2 플로우 엔트리의 삭제 시점을 결정하는 타이머를 초기화하는 인스트럭션을 추가로 포함할 수 있고, 상기 타이머의 만료(expiry) 시점에 상기 제2 플로우 엔트리는 삭제될 수 있다.
여기에서, 상기 사설 소스 IP 주소(s1) 및 사설 포트 번호(s2)와 상기 공인 IP 주소(p1)과 공인 포트 번호(p2)의 대응 관계는, 상기 스위치가 연결된 컨트롤러가 가진 주소 매핑 테이블에 의해서 정의될 수 있다.
여기에서, 상기 제1 플로우 테이블은 네트워크 주소 변환을 위한 플로우 엔트리를 포함하여 구성되며, 상기 제2 플로우 테이블은 패킷 포워딩을 위한 플로우 엔트리를 포함하여 구성될 수 있다.
상기와 같은 본 발명에 따르면, 컨트롤러가 스위치를 제어하여 사설 IP 주소와 공인 IP 주소간 네트워크 주소 변환을 할 수 있도록 해줌으로써, SDN 스위치에 연결된 다수의 단말이나 네트워크 장치들이 부족한 공인 IP 주소 대신에 사설 IP 주소를 사용하여 인터넷 서비스를 제공 받을 수 있다.
또한, 별도의 NAT 장치를 사용하지 않고 SDN 스위치와 컨트롤러 만을 이용하여 NAT 기능을 구현할 수 있다.
도 1은 본 발명에 따른 네트워크 주소 변환 기능을 수행하기 위한 SDN 컨트롤러와 SDN 스위치를 포함한 시스템의 구성을 도시한 블록도이다.
도 2는 본 발명에 따른 네트워크 주소 변환 기능을 수행하기 위한 SDN 스위치의 다운링크(Down link)와 업링크(Up link) 포트 구조를 설명하기 위한 개념도이다.
도 3은 본 발명의 일 실시예에 따라 스위치가 플로우 x와 y에 대해 네트워크 주소 변환 기능을 수행할 수 있도록 컨트롤러가 제어하는 절차와 스위치가 플로우 x에 대해 네트워크 주소 변환 기능을 수행하는 절차를 나타낸 순서도이다.
도 4는 본 발명의 일 실시예에 따른 컨트롤러가 관리하는 사설/공인 IP 주소 변환을 위한 주소 매핑 테이블의 예시도이다.
도 5는 본 발명의 일 실시예에 따라 SDN 스위치에서 실제 패킷 포워딩을 수행하기 위해 이용되는 플로우 테이블을 설명하기 위한 예시도이다.
도 6은 본 발명의 일 실시예에 따라 스위치가 플로우 y에 대해 NAT 기능을 수행하는 절차를 나타낸 흐름도이다.
도 7은 본 발명의 일 실시예에 따라 스위치와 컨트롤러가 주소 변환용 플로우 엔트리에 대한 타임 아웃 동작을 수행하는 절차를 설명하기 위한 순서도이다.
도 2는 본 발명에 따른 네트워크 주소 변환 기능을 수행하기 위한 SDN 스위치의 다운링크(Down link)와 업링크(Up link) 포트 구조를 설명하기 위한 개념도이다.
도 3은 본 발명의 일 실시예에 따라 스위치가 플로우 x와 y에 대해 네트워크 주소 변환 기능을 수행할 수 있도록 컨트롤러가 제어하는 절차와 스위치가 플로우 x에 대해 네트워크 주소 변환 기능을 수행하는 절차를 나타낸 순서도이다.
도 4는 본 발명의 일 실시예에 따른 컨트롤러가 관리하는 사설/공인 IP 주소 변환을 위한 주소 매핑 테이블의 예시도이다.
도 5는 본 발명의 일 실시예에 따라 SDN 스위치에서 실제 패킷 포워딩을 수행하기 위해 이용되는 플로우 테이블을 설명하기 위한 예시도이다.
도 6은 본 발명의 일 실시예에 따라 스위치가 플로우 y에 대해 NAT 기능을 수행하는 절차를 나타낸 흐름도이다.
도 7은 본 발명의 일 실시예에 따라 스위치와 컨트롤러가 주소 변환용 플로우 엔트리에 대한 타임 아웃 동작을 수행하는 절차를 설명하기 위한 순서도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 발명에서 언급되는 '컨트롤러(controller)'는 트래픽의 흐름을 제어하기 위해 관련 구성 요소(예를 들면, 스위치, 라우터 등)를 제어하는 기능 요소(entity)를 의미하는 것으로, 물리적인 구현 형태나 구현 위치 등에 한정되지 않는다. 예를 들어, 상기 컨트롤러는 ONF나, IETF, ETSI 및/또는 ITU-T 등에서 정의하고 있는 컨트롤러 기능 요소(entity)를 의미할 수 있다.
또한, 본 발명에서 언급되는 '스위치'는 트래픽(또는 패킷)을 실질적으로 포워딩하거나 스위칭 또는 라우팅하는 기능 요소를 의미하는 것으로, ONF나, IETF, ETSI 및/또는 ITU-T 등에서 정의하고 있는 스위치, 라우터, 스위치 요소, 라우터 요소, 포워딩 요소 등을 의미할 수 있다.
본 개시는 컨트롤러와 스위치로 구성되는 SDN 환경에서, SDN 스위치에 입력되는 패킷이 사설 IP 주소(또는, 공인 IP 주소)를 가지고 있을 때 이를 공인 IP 주소(또는, 사설 IP 주소)로 변환하여 출력시켜 주기 위한 네트워크 주소 변환 방법에 관한 것이다.
본 발명에 따른 SDN 환경에서의 네트워크 주소 변환 방법은, 1) 스위치가 네트워크 주소 변환 기능을 수행할 수 있도록 컨트롤러가 주소 변환용 플로우 엔트리들을 생성하여 스위치의 플로우 테이블을 업데이트하는 절차, 2) 스위치에 패킷이 입력되면 주소 변환용 플로우 엔트리들을 이용하여 네트워크 주소 변환을 수행하는 절차, 3) 스위치에 일정 시간 동안 해당 플로우의 패킷이 들어오지 않으면 네트워크 주소 변환을 종료하는 절차를 제공한다.
본 발명은 SDN 스위치에 네트워크 주소 변환 기능을 제공하므로써 IPv4 인터넷에서도 대규모 신규 단말을 추가 수용할 수 있도록 하는 것을 목적으로 한다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 네트워크 주소 변환 기능을 수행하기 위한 SDN 컨트롤러와 SDN 스위치를 포함한 시스템의 구성을 도시한 블록도이다.
도 1을 참조하면, SDN 환경에서 NAT 기능을 수행하기 위한 시스템은 컨트롤러(100)와 스위치(200)를 포함하여 구성될 수 있다. 이때, 상기 컨트롤러(100)와 스위치(200)는 각각 OpenFlow 표준에 따른 OpenFlow 컨트롤러 및 OpenFlow 스위치일 수 있다.
먼저, 컨트롤러(100)는 스위치(200)에 대한 제어 인스트럭션(플로우 엔트리의 추가/수정/삭제 등)을 생성하고, 생성된 제어 인스트럭션을 스위치(200)으로 전달하는 과정을 제어하는 컨트롤러 제어부(111), 각 스위치 별 플로우 테이블들을 관리하기 위한 플로우 테이블(flow table) 관리부(112), 스위치 별로 주소 매핑 테이블(address mapping table)을 관리하기 위한 주소 매핑 테이블 관리부(113), 및 스위치와 통신하기 위한 스위치 연동 프로토콜 처리부(114)를 포함하여 구성될 수 있다.
다음으로, 스위치(200)는 상기 컨트롤러(100)과 통신하기 위한 컨트롤러 연동 프로토콜 처리부(214), 상기 컨트롤러 연동 프로토콜 처리부(214)를 통하여 컨트롤러(100)로부터 제어 인스트럭션을 받아서 스위치 내부에 저장된 플로우 테이블을 제어하는 스위치 제어부(211), 컨트롤러(100)로부터의 제어 인스트럭션에 따라 플로우 테이블을 업데이트(플로우 엔트리 추가/수정/삭제)하고, 플로우 테이블을 저장 및 관리하는 플로우 테이블 관리부(212), 및 플로우 엔트리들의 삭제(타임아웃) 시점을 결정하는 타이머 값들을 관리하는 타이머 관리부(213)를 포함하여 구성될 수 있다.
도 2는 본 발명에 따른 네트워크 주소 변환 기능을 수행하기 위한 SDN 스위치의 다운링크(Downlink)와 업링크(Uplink) 포트 구조를 설명하기 위한 개념도이다.
도 2를 참조하면, 스위치에 존재하는 물리적인 포트는 두 가지 타입-다운링크 포트와 업링크 포트-으로 구성될 수 있다. 예컨대, 스위치(200)에는 n개의 다운링크 포트들(DL1,...,DLn)과 m개의 업링크 포트들(UL1,...,ULm)이 존재할 수 있다. 여기에서, n과 m은 같을 수도 있으며 다를 수도 있다.
각각의 포트들은 송신(Tx)과 수신(Rx)을 수행할 수 있다. 즉, 다운링크 포트가 수신만을 수행하는 것으로 오해되거나, 업링크 포트가 송신만을 수행하는 것으로 오해되어서는 안된다. 즉, 각각의 포트는 Tx와 Rx로 구성되어 있으며 Tx는 패킷을 스위치 외부로 전달해주는 역할을 하고 Rx는 외부로부터 패킷을 수신하는 역할을 한다.
통상적으로, 다운링크 포트들에는 단말이나 좀 더 낮은 성능의 스위치가 연결될 수 있다. 반면, 업링크 포트들에는 좀 더 높은 성능의 스위치가 연결될 수 있다.
스위치(200)는 다운링크 포트들 통하여 입력되는 패킷을 집선해서 업링크 포트를 통하여 출력하는 역할과 업링크 포트를 통하여 입력되는 패킷을 다운링크 포트로 전달해 주는 역할을 한다. 또한, 다운링크 포트를 통해 입력된 패킷이 다른 다운링크 포트로 스위칭 될 수도 있다.
먼저, 본 발명에서는, 다운링크 포트에 연결된 장치들 간에는 사설 IP 주소를 이용하여 통신하고, 다운링크 포트에 연결된 장치와 업링크 포트에 연결된 장치들 간의 통신은 공인 IP 주소를 사용하여야 하는 환경을 가정한다. 즉, 다운링크 포트에 연결된 장치들 간에는 서브 네트워크가 형성된 환경이다. 여기에서, 다운링크 포트와 업링크 포트는 엄밀하게 물리적으로 포트 구분이라기 보다는, 각각 사설 IP 주소를 사용하는 서브 네트워크의 장치들이 연결된 포트들과 공인 IP 주소를 이용하는 외부 네트워크의 장치들이 연결된 포트들을 의미한다.
다운링크 포트에 연결된 장치로부터의 패킷이 외부 네트워크로 출력되기 위해서는 해당 패킷의 사설 IP 주소가 공인 IP 주소로 변경되어야 한다. 또한, 업링크 포트에 연결된 장치는 다운링크 포트에 연결된 장치의 사설 IP 주소를 알 수가 없으므로, 업링크 포트에 연결된 장치로부터의 패킷이 다운링크 포트에 연결된 장치에 전달되기 위해서는 패킷의 공인 IP 주소가 사설 IP 주소로 변경되어야 한다.
즉, 다운링크 포트를 통해 스위치에 입력된 패킷이 공인 IP 주소를 목적지로 가진 경우(즉, 외부 네트워크로 출력되는 패킷을 의미), 해당 패킷은 자신의 사설 IP 주소를 자신의 사설 소스 IP 주소에 매핑되는 공인 IP 주소로 변경하여, 업링크 포트를 통해 출력되어야 한다. 반면, 업링크 포트를 통해 스위치에 입력된 패킷이 공인 IP 주소를 목적지로 가진 경우, 해당 공인 IP 주소는 매핑되는 사설 IP 주소로 변환되어 다운링크 포트로 출력되어야 한다.
도 3은 본 발명의 일 실시예에 따라 스위치가 플로우 x와 y에 대해 네트워크 주소 변환 기능을 수행할 수 있도록 컨트롤러가 제어하는 절차와 스위치가 플로우 x에 대해 네트워크 주소 변환 기능을 수행하는 절차를 나타낸 순서도이다.
여기에서, '플로우 x'는 스위치(200)의 다운링크 포트로 입력되어 업링크 포트로 출력되는 패킷들(즉, 외부 네트워크로 출력된 패킷들)의 플로우이며, '플로우 y'는 상기 플로우 x의 역방향 플로우로서 스위치(200)의 업링크 포트로 입력되어 다운링크 포트로 출력되는 패킷들의 플로우이다. 다르게 말하면, 플로우 x는 공인 IP 주소를 목적지로 가진 다운링크 포트로 입력된 패킷들에 대응되는 플로우이며, 플로우 y는 공인 IP 주소를 목적지로 가진 업링크 포트로 입력된 패킷들에 대응되는 플로우이다.
또한, 제1 플로우 테이블(flow table1)은 상기 플로우 x와 플로우 y에 속한 패킷들에 대한 네트워크 주소 변환을 수행하기 위한 플로우 테이블이며, 제2 플로우 테이블(flow table2)은 네트워크 주소 변환이 필요 없거나 네트워크 주소 변환이 이미 수행된 패킷들에 대한 실제 패킷 포워딩을 수행하기 위한 플로우 테이블이다. 즉, 본 발명에서는, 네트워크 주소 변환이 필요한 패킷들(외부 네트워크?서브 네트워크 또는 서브 네트워크?외부 네트워크로 전달되는 패킷들)은 상기 제1 플로우 테이블을 이용하여 네트워크 주소 변환을 먼저 수행하고, 제2 플로우 테이블을 이용하여 포워딩되는 절차를 따르게 된다.
도 3을 참조하면, 스위치(200)의 다운링크 포트를 통해 패킷 k가 입력되면(S310), 해당 패킷 k의 목적지(destination) IP 주소가 공인 IP 주소(d1)인지 아닌지가 판별된다(S320). 예를 들면, 패킷 k의 목적지 주소가 사설 IP 주소로 사용하기로 IETF에서 규정한 주소 대역들(10.X.X.X, 172.16-31.X.X, 192.168.X.X)에 속하는지 여부를 확인하여, 상기 패킷 k의 목적지 주소가 공인 IP 주소인지 사설 IP 주소인지를 판단할 수 있다. 또는, 인터넷 주소 정책에 따라 해당 스위치(200)에 할당된 공인 IP 주소 대역을 참조하여, 상기 패킷 k가 공인 IP 주소인지 여부를 판단할 수 있다.
패킷 k의 목적지 IP 주소가 공인 IP 주소가 아닌 경우, 해당 패킷은 제2 플로우 테이블(flow table2)로 전달되고, 제2 플로우 테이블에 설정해 둔 플로우 엔트리를 통해서 출력 포트로 포워딩되며, 패킷 k에 대한 처리를 마친다(S360). 제2 플로우 테이블에 의한 처리 절차는 통상적인 오픈플로우 스위치에서의 플로우 테이블 처리 절차와 동일하다.
반면, 패킷 k의 목적지 IP 주소가 공인 IP 주소인 경우는, 제1 플로우 테이블(flow table1)에 패킷 k의 소스(source) IP 주소(s1)와 포트 번호(s2)에 매칭되는 플로우 엔트리(즉, 플로우 x에 대응되는 플로우 엔트리)가 존재하는지 확인한다(S330). 제1 플로우 테이블에 플로우 x에 대응되는 플로우 엔트리가 존재하면, 플로우 x에 대응되는 플로우 엔트리의 인스트럭션 필드에서 지정하는 인스트럭션들을 수행하고 플로우 x와 플로우 y의 타임 아웃을 위한 타이머 값을 T로 초기화시키고 패킷 k를 제2 플로우 테이블로 전달한다(S350). 앞서 언급된 바와 동일하게 제2 플로우 테이블에서는 제2 플로우 테이블에 설정해둔 플로우 엔트리를 통해서 패킷을 출력 포트로 포워딩하여 패킷 k에 대한 처리를 마친다(S360).
단계(S330)에서, 제1 플로우 테이블에 플로우 x에 대응되는 플로우 엔트리가 존재하지 않는 것으로 확인된 경우, 패킷 k가 플로우 x의 첫 번째 패킷 임을 의미하며, 스위치는 패킷 k를 Packet In 메시지에 실어서 컨트롤러로 보낸다(S331).
즉, 후술될 S331 내지 S337 단계들은 패킷 k가 플로우 x의 첫번째 패킷인 경우에 플로우 x와 플로우 y에 대응되는 플로우 엔트리들을 컨트롤러부터 내려받기 위해 필요한 단계들이다. 플로우 x에 속하는 패킷 k를 뒤따르는 두번째 패킷부터는 상기 S331 내지 S337 단계들이 수행되지 않는다.
컨트롤러(100)는 Packet In 메시지를 받으면 패킷 k의 사설 소스 IP 주소(s1)와 포트 번호(s2)를 매핑 시킬 공인 소스 IP 주소(p1)와 소스 포트(p2)를 선정한다(S332). 공인 IP 주소는 인터넷 주소 정책에 따라 해당 스위치에 할당된 주소 대역에서 선정할 수 있으며 소스 포트는 16비트로 할당 할 수 있는 64,000여개(216) 포트들 중에서 well known port 대역인 1~1000 대역을 제외한 63,000개 대역 중에서 랜덤하게 선정하거나 순차적으로 선정할 수 있다.
선정된 공인 소스 IP 주소와 포트 번호는 컨트롤러(100)이 관리하는 주소 매핑 테이블에 엔트리로서 추가될 수 있다. 주소 매핑 테이블의 예시는 도 4를 참고하여 후술된다.
상기 단계(S332)에서 컨트롤러가 패킷 k에 대해 선정한 공인 소스 IP 주소(p1)와 포트 번호(p2)가 주소 매핑 테이블에 주소 매핑 테이블 엔트리로서 추가된 후에, 제1 플로우 테이블에 추가될 플로우 x와 플로우 y에 대응되는 플로우 엔트리들을 생성하게 된다(S333).
생성된 플로우 엔트리들에 대한 예시(300)에서, 플로우 x에 대응되는 플로우 엔트리(310)의 매치 필드(match field)에는 패킷 k의 사설 소스 IP 주소(s1)와 포트 번호(s2)가 포함되며, 인스트럭션 필드에는 사설 소스 IP 주소(s1)와 포트 번호(s2)를 각각 대응되는 공인 IP 주소(p1)와 포트 번호(p2)로 변경하기 위한 실행 인스트럭션들이 포함된다.
예를 들면, 사설 소스 IP 주소(s1)와 소스 포트(s2)를 각각 대응되는 공인 IP 주소(p1)과 포트 번호(p2)로 변경하기 위한 실행 인스트럭션들로는 push, pop 인스트럭션들이 이용될 수 있다. 하나의 예시로, 플로우 엔트리(310)의 인스트럭션 필드에는 다음과 같은 인스트럭션들이 포함될 수 있다.
pop-소스 IP 주소(s1),
pop-소스 포트(s2),
push-소스 IP 주소(p1),
push-소스 포트(p2),
Timeout(T),
Goto Flow table2
사설 소스 IP 주소(s1)에 대한 pop 연산(pop-소스 IP 주소(s1))과 공인 IP 주소(p1)에 대한 push 연산(push-소스 IP 주소(p1))이 대응 관계를 이루며 수행되는 것에 의해서 패킷의 소스 IP 주소는 s1에서 p1으로 변환된다. 또한, 사설 포트 번호(s2)에 대한 pop 연산(pop-소스 포트(s2))과 공인 소스 포트(p2)에 대한 push 연산(push-소스 포트(p2))이 대응 관계를 이루며 수행되는 것에 의해서 패킷의 소스 포트 번호는 s2에서 p2로 변경되게 된다.
Timeout(T) 인스트럭션은 플로우 엔트리(310)의 삭제 시점을 결정하는 타이머 값을 설정하기 위한 인스트럭션으로서, 해당 타이머는 플로우 엔트리(310)가 제1 플로우 테이블에 처음 추가될 때 T 값으로 세팅 되며 해당 플로우의 패킷이 들어올 때마다 초기값인 T로 다시 세팅 된다. Goto Flow table2 인스트럭션은 네트워크 주소 변환을 한 후에 패킷을 제2 플로우 테이블로 전달하라는 의미이다.
즉, 이상에서 설명된 플로우 엔트리(310)에 포함된 인스트럭션 필드에서 지정하는 동작들은 앞서 설명된 단계(S350)의 동작에 대응된다.
한편, 플로우 x에 대한 플로우 엔트리를 생성할 때에, 플로우 x에 대응되는 반대 방향의 플로우(즉, 플로우 y)에 대한 플로우 엔트리를 미리 생성해둘 수 있다. 즉, 생성된 플로우 엔트리들에 대한 예시(300)에서, 플로우 엔트리(320)는 플로우 x의 반대 방향 플로우(즉, 플로우 y)에 대응되는 플로우 엔트리다.
플로우 엔트리(320)의 매치 필드(match field)에는 패킷 k의 사설 IP 주소(s1)에 대응되는 공인 목적지 IP 주소(p1)과 사설 포트 번호(s2)에 대응되는 공인 목적지 포트 번호(p2)가 포함되며, 인스트럭션 필드에는 상기 공인 IP 주소(p1)와 포트 번호(p2)를 각각 대응되는 사설 IP 주소(s1)와 포트 번호(s2)로 변경하기 위한 실행 인스트럭션들이 포함된다.
예를 들면, 앞서 설명된 플로우 엔트리(310)와 유사하게, 상기 공인 목적지 IP 주소(p1)과 포트 번호(p2)를 각각 대응되는 사설 IP 주소(s1)와 포트 번호(s2)로 변경하기 위한 실행 인스트럭션들로는 push, pop 인스트럭션들이 이용될 수 있다. 하나의 예시로, 플로우 엔트리(320)의 인스트럭션 필드에는 다음과 같은 인스트럭션들이 포함될 수 있다.
pop-목적지 IP 주소(p1),
pop-목적지 포트(p2),
push-목적지 IP 주소(s1),
push-목적지 포트(s2),
Timeout(T),
Goto Flow table2
공인 IP 주소(p1)에 대한 pop 연산(pop-목적지 IP 주소(p1))과 사설 IP 주소(s1)에 대한 push 연산(push-목적지 IP 주소(s1))이 대응 관계를 이루며 수행되는 것에 의해서 패킷의 목적지 IP 주소는 p1에서 s1으로 변환된다. 또한, 공인 포트 번호(p2)에 대한 pop 연산(pop-목적지 포트(p2))과 사설 포트 번호(s2)에 대한 push 연산(push-목적지 포트(s2))이 대응 관계를 이루며 수행되는 것에 의해서 패킷의 포트 번호는 p2에서 s2로 변경되게 된다.
Timeout(T) 인스트럭션은 플로우 엔트리(320)의 삭제 시점을 결정하는 타이머 값을 설정하기 위한 인스트럭션으로서, 해당 타이머는 플로우 엔트리(320)가 제1 플로우 테이블에 처음 추가될 때 T 값으로 세팅 되며 해당 플로우의 패킷이 들어올 때마다 초기값인 T로 다시 세팅 된다. Goto Flow table2 인스트럭션은 네트워크 주소 변환을 한 후에 패킷을 제2 플로우 테이블로 전달하라는 의미이다.
컨트롤러(100)는 상기 생성된 플로우 엔트리들(310, 320)를 스위치(200)에 추가하기 위한 플로우 엔트리 추가 메시지(Flow entry ADD 메시지)를 스위치(200)으로 전송한다(S334). 이때, Flow entry ADD 메시지 안에는 상기 플로우 엔트리들이 추가되어야 하는 플로우 테이블(즉, 제1 플로우 테이블)을 지시하는 table_id와 두 개의 플로우 엔트리들(310, 320)이 포함된다.
스위치(200)는 컨트롤러로부터 Flow entry ADD 메시지를 수신하면 제1 플로우 테이블에 플로우 엔트리들(310, 320)을 추가하고 컨트롤러(100)로 Flow entry ADD 응답 메시지를 전송한다(S336).
마지막으로, 컨트롤러(100)은 스위치(200)로부터 상기 Flow entry ADD 응답 메시지를 수신하면 Packet Out 메시지 안에 단계(S331)에서 수신한 패킷 k을 실어서 스위치로 다시 전송한다(S337).
스위치(200)는 컨트롤러(100)로부터 Packet Out 메시지를 받으면 패킷 k를 제1 플로우 테이블로 전달하여 플로우 x에 대응되는 플로우 엔트리(310)에 포함된 인스트럭션을 수행한다(즉, 단계 S350). 이러한 과정은 앞서 플로우 엔트리(310)의 구성에 대한 기술에서 이미 설명되었으므로 중복된 설명은 생략한다.
마지막으로, 패킷 k가 제2 플로우 테이블에 전달되면 제2 플로우 테이블에서는 설정해 둔 플로우 엔트리를 통해서 패킷을 출력 포트로 포워딩하여 패킷 k에 대한 처리를 마친다(즉, 단계 S360).
상기 단계들을 통해, 컨트롤러는 스위치에게 네트워크 주소 변환에 필요한 플로우 엔트리를 추가할 수 있도록 제어하고 스위치는 네트워크 주소 변환에 필요한 플로우 엔트리가 추가된 플로우 테이블을 이용하여 사설 IP 주소와 공인 IP 주소간의 네트워크 주소 변환을 실행할 수 있다. 즉, SDN 스위치(200)에는 사설 IP 주소와 공인 IP 주소를 사용하는 단말과 네트워크 장치들이 모두 연결될 수 있다.
도 4는 본 발명의 일 실시예에 따른 컨트롤러가 관리하는 사설/공인 IP 주소 변환을 위한 주소 매핑 테이블의 예시도이다.
도 4를 참조하면, 주소 매핑 테이블의 각 엔트리는 사설 IP 주소/포트 와 공인 IP 주소/포트 간 매핑 관계를 정의한다. 예컨대, 주소 매핑 테이블의 첫번째 엔트리는, 소스 IP 주소가 사설 IP 주소(a1)이고 포트가 b1인 패킷(다운링크 포트로 입력되어 업링크 포트로 출력되는 패킷)은 그 소스 IP 주소가 공인 IP 주소(v1)와 포트 w1으로 변환되어야 함을 의미한다. 역으로, 목적지 IP 주소가 공인 IP 주소(v1)이고 포트가 w1인 패킷(업링크 포트로 입력되어 다운링크 포트로 출력되는 패킷)은 그 목적지 IP 주소가 사설 IP 주소(a1)과 포트(b1)으로 변환되어야 함을 의미한다.
한편, 주소 매핑 테이블 예시에서는 공인 IP 주소 하나(v1)에 세 개의 사설 IP 주소들(a1, a2, a3)이 매핑 되어 있는 것을 보여 주는데, 각각의 사설 IP 주소를 구분해 주기 위해서 서로 다른 포트 번호들(w1, w2, w3)이 사용된다. 앞서 언급된 바와 같이, 포트 번호는 16비트로 표현할 수 있는 216 범위 안에서 사용할 수 있기 때문에, 하나의 공인 IP 주소에 사설 IP 주소를 수 만개까지 매핑해서 사용할 수 있다.
도 5는 본 발명의 일 실시예에 따라 SDN 스위치에서 실제 패킷 포워딩을 수행하기 위해 이용되는 플로우 테이블을 설명하기 위한 예시도이다.
앞서 언급된 바와 같이, SDN 스위치가 가지는 제1 플로우 테이블은 패킷 포워딩이 아닌 네트워크 주소 변환을 수행하기 위한 플로우 테이블이며, 제2 플로우 테이블은 네트워크 주소 변환이 필요 없거나 제1 플로우 테이블을 거쳐서 네트워크 주소 변환이 된 패킷들에 대한 실제 포워딩을 처리하는 플로우 테이블이다. 즉, 도 5에서 예시되는 플로우 테이블은 앞서 도 3을 통해 설명된 제2 플로우 테이블에 해당된다.
도 5를 참조하면, 제2 플로우 테이블의 매치 필드는 목적지 IP 주소로 구성 되어 있으며, 패킷의 목적지 IP 주소가 매칭되는 플로우 엔트리의 인스트럭션 필드에 포함된 인스트럭션들이 수행된다. 즉, 목적지 IP 주소가 매칭되는 패킷들은 해당 엔트리의 인스트럭션 필드에 포함된 인스트럭션이 지정하는 출력 포트로 패킷을 전달한다.
패킷의 목적지 IP 주소는 10.1.1.1, 10.1.1.2 등과 같이 32비트 (8비트 네 자리) IP 주소 체계를 모두 사용해서 표현될 수도 있고 120.1.1.x/24 등과 같이 aggregate된 IP 주소 체계를 사용해서 표현될 수도 있다. 인스트럭션 필드에 예시된 "output DL1"은 해당 패킷을 다운링크 포트(DL1)으로 전달하여 출력시키라는 인스트럭션이다.
도 6은 본 발명의 일 실시예에 따라 스위치가 플로우 y에 대해 NAT 기능을 수행하는 절차를 나타낸 흐름도이다.
앞서 설명된 도 3의 절차에 의하여 스위치에는 플로우 x와 이에 대응되는 플로우 y에 대한 플로우 엔트리가 제1 플로우 테이블에 저장되어 있게 된다. 도 6에서는 도 3의 절차에 의해서 저장된 플로우 y에 대한 플로우 엔트리에 의해서 주소 변환이 이루어지는 과정이 설명된다.
도 6을 참조하면, 먼저 스위치(200)에서 업링크 포트를 통해 패킷 k가 입력되면(S610), 제1 플로우 테이블에 패킷 k의 목적지 IP 주소(예컨대, p1)와 포트 번호(p2)에 매칭되는 플로우 엔트리(즉, 플로우 y에 대응되는 플로우 엔트리)가 존재하는지 확인하고(S620), 매칭되는 플로우 엔트리가 없으면 패킷 k를 폐기(discard) 시킨다(S621).
상기 단계(S620)에서 제1 플로우 테이블에 패킷 k의 목적지 IP 주소(p1)와 포트 번호(p2)에 매칭되는 플로우 엔트리(즉, 플로우 y에 대응되는 플로우 엔트리; 플로우 엔트리 320)가 존재하면, 플로우 y에 대응되는 플로우 엔트리의 인스트럭션 필드에서 지정하는 인스트럭션들이 수행된다(S630).
즉, 단계(S630)에서는 패킷 k의 목적지 IP 주소(p1)와 포트 번호(p2)-공인 IP 주소와 공인 포트 번호-를 사설 IP 주소(s1)과 사설 포트 번호(s2)로 바꾸어 주기 위한 네트워크 주소 변환 실행 인스트럭션들이 실행될 수 있다.
단계(S630)의 네트워크 주소 변환 실행 인스트럭션들은 도 3에서 설명된 예와 유사하게 pop, push 연산을 이용하여 구성될 수 있다. 또한, 단계(S630)에서는 플로우 x에 대한 플로우 엔트리(310)과 플로우 y에 대한 플로우 엔트리(320)의 타이머 값들을 다시 초기값인 T로 재설정(reset)할 수 있다. 네트워크 주소 변환을 한 이후에 패킷을 제2 플로우 테이블로 전달하는 인스트럭션 또한 실행될 수 있다.
상기 단계(S630)에서 패킷 k가 제2 플로우 테이블로 전달되면 제2 플로우 테이블에서는 설정해 둔 플로우 엔트리를 통해서 패킷을 해당 출력 포트로 포워딩 하여 패킷 k에 대한 처리를 마친다(S640).
상기 단계들을 통해, 네트워크 주소 변환에 필요한 플로우 엔트리들이 추가된 플로우 테이블을 이용하여 사설 IP 주소와 공인 IP 주소간의 네트워크 주소 변환을 실행할 수 있다. 즉, SDN 스위치(200)에는 사설 IP 주소와 공인 IP 주소를 사용하는 단말과 네트워크 장치들이 모두 연결될 수 있다.
도 7은 본 발명의 일 실시예에 따라 스위치와 컨트롤러가 주소 변환용 플로우 엔트리에 대한 타임 아웃 동작을 수행하는 절차를 설명하기 위한 순서도이다.
앞서, 언급된 도 3의 절차와 도 6의 절차를 통해서, 주소 변환을 위한 플로우 엔트리들(310, 320)에는 각각의 삭제 시점을 결정하는 타이머 값이 설정된다. 상기 타이머 값은 상기 플로우 엔트리들(310, 320)이 처음으로 제1 플로우 테이블에 추가되었을 때 초기값 T로 설정되며, 상기 플로우 엔트리들 중 적어도 하나가 매칭되는 패킷이 제1 플로우 테이블에 입력되었을 때 초기값 T로 재설정된다.
도 7을 참조하면, 스위치(200)는 주기적으로 제1 플로우 테이블에 포함된 플로우 엔트리들(310, 320)의 타이머 값을 감소시킬 수 있다(S710).
상기 단계(S710)에 의해서 주기적으로 감소된 타이머 값이 0이 되면(S720), 스위치(200)는 제1 플로우 테이블에서 플로우 엔트리들(310, 320)을 삭제하고(S730), 삭제 사실을 Flow entry REMOVED 메시지를 이용하여 컨트롤러(100)에 통보한다. 이때, Flow entry REMOVED 메시지 안에는 제1 플로우 테이블을 지시하는 table_id와 플로우 엔트리들(310, 320)을 지시하는 식별자들이 파라미터로 포함된다.
컨트롤러(100)는 스위치(200)로부터 Flow entry REMOVED 메시지를 수신하면 해당 플로우 엔트리들(310, 320)을 자신이 관리하는 플로우 테이블로부터 삭제하고(S740), 주소 매핑 테이블에서도 해당 플로우 엔트리들과 관련된 엔트리를 삭제할 수 있다(S750). 즉, 사설 소스 IP 주소(s1) 및 사설 포트 번호(s2)와 상기 공인 IP 주소(p1)과 공인 포트 번호(p2)의 대응 관계를 주소 매핑 테이블로부터 삭제할 수 있다.
마지막으로, 컨트롤러(100)는 플로우 엔트리가 삭제되었음을 Flow entry REMOVED 응답 메시지로서 스위치(200)로 통보할 수 있다(S760).
상기 단계들을 통해, 스위치에 정해진 타임 아웃 시간(T) 동안 플로우 x와 플로우 y에 대한 패킷이 들어오지 않으면 해당 플로우들에 대한 네트워크 주소 변환을 종료하여 해당 플로우를 위해 사용하고 있던 공인 IP 주소와 포트 번호를 다른 사설 IP 주소 사용 단말들이 재사용할 수 있도록 해줌으로써 공인 IP 주소의 사용 효율을 높여줄 수 있다.
상기와 같은 본 발명에 따르면, 컨트롤러가 스위치를 제어하여 사설 IP 주소와 공인 IP 주소 간 네트워크 주소 변환을 할 수 있도록 해줌으로써, SDN 스위치에 연결된 다수의 단말이나 네트워크 장치들이 부족한 공인 IP 주소 대신에 사설 IP 주소를 사용하여 인터넷 서비스를 제공 받을 수 있다.
또한, 별도의 NAT 장치를 사용하지 않고 SDN 스위치와 컨트롤러만을 이용하여 NAT 기능을 구현할 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
100: 컨트롤러,
111: 컨트롤러 제어부
112: 플로우 테이블 관리부, 113: 주소 매핑 테이블 관리부
114: 스위치 연동 프로토콜 처리부
200: 스위치, 211: 스위치 제어부
212: 플로우 테이블 관리부, 213: 타이머 관리부
214: 컨트롤러 연동 프로토콜 처리부
300: 제1 플로우 테이블
310: 플로우 x에 대한 플로우 엔트리
320: 플로우 y에 대한 플로우 엔트리
112: 플로우 테이블 관리부, 113: 주소 매핑 테이블 관리부
114: 스위치 연동 프로토콜 처리부
200: 스위치, 211: 스위치 제어부
212: 플로우 테이블 관리부, 213: 타이머 관리부
214: 컨트롤러 연동 프로토콜 처리부
300: 제1 플로우 테이블
310: 플로우 x에 대한 플로우 엔트리
320: 플로우 y에 대한 플로우 엔트리
Claims (22)
- 소프트웨어 정의 네트워킹(SDN; Software Defined Networking) 환경에서, 네트워크 주소 변환(Network Address Translation)을 수행하도록 스위치를 구성하기 위한, 컨트롤러의 동작 방법으로서,
상기 스위치로 입력되는 패킷의 목적지 IP 주소가 공인 IP 주소(d1)인 경우에, 상기 패킷의 사설 소스 IP 주소(s1)와 사설 포트 번호(s2)를 공인 IP 주소(p1)와 공인 포트 번호(p2)로 변환하기 위한 주소변환용 제1 플로우 엔트리를 상기 스위치의 제1 플로우 테이블에 추가하는 단계; 및
상기 제1 플로우 엔트리를 거친 상기 패킷에 대한 포워딩을 위한 포워딩용 플로우 엔트리를 상기 스위치의 제2 플로우 테이블에 추가하는 단계를 포함하는 것을 특징으로 하는, 컨트롤러의 동작 방법. - 청구항 1에 있어서,
상기 스위치로 입력되는 패킷의 목적지 IP 주소가 상기 공인 IP 주소(p1)인 경우에, 상기 패킷의 상기 공인 IP 주소(p1)와 공인 포트 번호(p2)를 상기 사설 IP 주소(s1)와 상기 사설 포트 번호(s2)로 변환하기 위한 주소변환용 제2 플로우 엔트리를 상기 스위치의 제1 플로우 테이블에 추가하는 단계를 추가로 포함하는 것을 특징으로 하는, 컨트롤러의 동작 방법. - 청구항 1에 있어서,
상기 주소변환용 제1 플로우 엔트리에 의해서 주소변환이 이루어지는 패킷은 상기 스위치의 다운링크 포트로 입력되어 상기 스위치의 업링크 포트로 출력되는 패킷인 것을 특징으로 하는, 컨트롤러의 동작 방법. - 청구항 2에 있어서,
상기 주소변환용 제2 플로우 엔트리에 의해서 주소변환이 이루어지는 패킷은 상기 스위치의 업링크 포트로 입력되어 상기 스위치의 다운링크 포트로 출력되는 패킷인 것을 특징으로 하는, 컨트롤러의 동작 방법. - 청구항 1에 있어서,
상기 주소변환용 제1 플로우 엔트리는 상기 패킷의 사설 소스 IP 주소(s1)와 사설 포트 번호(s2)를 매치 필드(match field)에 포함하고, 상기 패킷의 사설 소스 IP 주소(s1)와 사설 포트 번호(s2)를 공인 IP 주소(p1)와 공인 포트 번호(p2)로 변환하기 위한 인스트럭션을 인스트럭션 필드(instruction field)에 포함하는 것을 특징으로 하는, 컨트롤러의 동작 방법. - 청구항 5에 있어서,
상기 주소변환용 제1 플로우 엔트리의 상기 인스트럭션 필드는 상기 제1 플로우 엔트리의 삭제 시점을 결정하는 타이머를 초기화하는 인스트럭션을 추가로 포함하는 것을 특징으로 하는, 컨트롤러의 동작 방법. - 청구항 2에 있어서,
상기 주소변환용 제2 플로우 엔트리는 상기 패킷의 공인 IP 주소(p1)와 공인 포트 번호(p2)를 매치 필드(match field)에 포함하고, 상기 패킷의 상기 공인 IP 주소(p1)와 공인 포트 번호(p2)를 상기 사설 IP 주소(s1)와 상기 사설 포트 번호(s2)로 변환하기 위한 인스트럭션을 인스트럭션 필드(instruction field)에 포함하는 것을 특징으로 하는, 컨트롤러의 동작 방법. - 청구항 7에 있어서,
상기 주소변환용 제2 플로우 엔트리의 상기 인스트럭션 필드는 상기 제2 플로우 엔트리의 삭제 시점을 결정하는 타이머를 초기화하는 인스트럭션을 추가로 포함하는 것을 특징으로 하는, 컨트롤러의 동작 방법. - 청구항 1에 있어서,
상기 사설 소스 IP 주소(s1) 및 사설 포트 번호(s2)와 상기 공인 IP 주소(p1)와 공인 포트 번호(p2)의 대응 관계는, 상기 컨트롤러가 가진 주소 매핑 테이블(address mapping table)에 의해서 정의되는 것을 특징으로 하는, 컨트롤러의 동작 방법. - 청구항 1에 있어서,
상기 제1 플로우 테이블은 네트워크 주소 변환을 위한 플로우 엔트리를 포함하여 구성되며, 상기 제2 플로우 테이블은 패킷 포워딩을 위한 플로우 엔트리를 포함하여 구성되는 것을 특징으로 하는, 컨트롤러의 동작 방법. - 소프트웨어 정의 네트워킹(SDN; Software Defined Networking) 환경에서, 네트워크 주소 변환(Network Address Translation)을 수행하는 스위치의 동작 방법으로서,
상기 스위치로 입력되는 패킷의 목적지 IP 주소가 공인 IP 주소(d1)인 경우, 주소변환용 제1 플로우 엔트리가 저장된 제1 플로우 테이블로 상기 패킷을 전달하여 상기 패킷의 사설 소스 IP 주소(s1)와 사설 포트 번호(s2)를 공인 IP 주소(p1)와 공인 포트 번호(p2)로 변환하는 단계; 및
상기 제1 플로우 엔트리를 거친 상기 패킷을 포워딩용 플로우 엔트리가 저장된 제2 플로우 테이블로 전달하는 단계를 포함하는 것을 특징으로 하는, 스위치의 동작 방법. - 청구항 11에 있어서,
상기 스위치로 입력되는 패킷의 목적지 IP 주소가 상기 공인 주소(p1)인 경우, 주소변환용 제2 플로우 엔트리가 저장된 제1 플로우 테이블로 상기 패킷을 전달하여 상기 패킷의 상기 공인 IP 주소(p1)와 공인 포트 번호(p2)를 상기 사설 IP 주소(s1)와 상기 사설 포트 번호(s2)로 변환하는 단계; 및
상기 제2 플로우 엔트리를 거친 상기 패킷을 포워딩용 플로우 엔트리가 저장된 상기 제2 플로우 테이블로 전달하는 단계를 포함하는 것을 특징으로 하는, 스위치의 동작 방법. - 청구항 11에 있어서,
상기 주소변환용 제1 플로우 엔트리에 의해서 주소변환이 이루어지는 패킷은 상기 스위치의 다운링크 포트로 입력되어 상기 스위치의 업링크 포트로 출력되는 패킷인 것을 특징으로 하는, 스위치의 동작 방법. - 청구항 12에 있어서,
상기 주소변환용 제2 플로우 엔트리에 의해서 주소변환이 이루어지는 패킷은 상기 스위치의 업링크 포트로 입력되어 상기 스위치의 다운링크 포트로 출력되는 패킷인 것을 특징으로 하는, 스위치의 동작 방법. - 청구항 11에 있어서,
상기 주소변환용 제1 플로우 엔트리는 상기 패킷의 사설 소스 IP 주소(s1)와 사설 포트 번호(s2)를 매치 필드(match field)에 포함하고, 상기 패킷의 사설 소스 IP 주소(s1)와 사설 포트 번호(s2)를 공인 IP 주소(p1)와 공인 포트 번호(p2)로 변환하기 위한 인스트럭션을 인스트럭션 필드(instruction field)에 포함하는 것을 특징으로 하는, 스위치의 동작 방법. - 청구항 15에 있어서,
상기 주소변환용 제1 플로우 엔트리의 상기 인스트럭션 필드는 상기 제1 플로우 엔트리의 삭제 시점을 결정하는 타이머를 초기화하는 인스트럭션을 추가로 포함하는 것을 특징으로 하는, 스위치의 동작 방법. - 청구항 16에 있어서,
상기 타이머의 만료(expiry) 시점에 상기 제1 플로우 엔트리는 삭제되는 것을 특징으로 하는, 스위치의 동작 방법. - 청구항 12에 있어서,
상기 주소변환용 제2 플로우 엔트리는 상기 패킷의 공인 IP 주소(p1)와 공인 포트 번호(p2)를 매치 필드(match field)에 포함하고, 상기 패킷의 상기 공인 IP 주소(p1)와 공인 포트 번호(p2)를 상기 사설 IP 주소(s1)와 상기 사설 포트 번호(s2)로 변환하기 위한 인스트럭션을 인스트럭션 필드(instruction field)에 포함하는 것을 특징으로 하는, 스위치의 동작 방법. - 청구항 18에 있어서,
상기 주소변환용 제2 플로우 엔트리의 상기 인스트럭션 필드는 상기 제2 플로우 엔트리의 삭제 시점을 결정하는 타이머를 초기화하는 인스트럭션을 추가로 포함하는 것을 특징으로 하는, 스위치의 동작 방법. - 청구항 19에 있어서,
상기 타이머의 만료(expiry) 시점에 상기 제2 플로우 엔트리는 삭제되는 것을 특징으로 하는, 스위치의 동작 방법. - 청구항 11에 있어서,
상기 사설 소스 IP 주소(s1) 및 사설 포트 번호(s2)와 상기 공인 IP 주소(p1)와 공인 포트 번호(p2)의 대응 관계는, 상기 스위치가 연결된 컨트롤러가 가진 주소 매핑 테이블(address mapping table)에 의해서 정의되는 것을 특징으로 하는, 스위치의 동작 방법. - 청구항 11에 있어서,
상기 제1 플로우 테이블은 네트워크 주소 변환을 위한 플로우 엔트리를 포함하여 구성되며, 상기 제2 플로우 테이블은 패킷 포워딩을 위한 플로우 엔트리를 포함하여 구성되는 것을 특징으로 하는, 스위치의 동작 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150090455 | 2015-06-25 | ||
KR20150090455 | 2015-06-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20170001654A true KR20170001654A (ko) | 2017-01-04 |
Family
ID=57832043
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160079856A KR20170001654A (ko) | 2015-06-25 | 2016-06-27 | Sdn 스위치를 이용한 네트워크 주소 변환 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20170001654A (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113746761A (zh) * | 2021-09-01 | 2021-12-03 | 北京东土科技股份有限公司 | 一种网络交换设备 |
US11483280B2 (en) | 2019-10-25 | 2022-10-25 | Samsung Electronics Co., Ltd. | Method of translating IP packet for tethering service, communication system and electronic device for performing the same |
-
2016
- 2016-06-27 KR KR1020160079856A patent/KR20170001654A/ko unknown
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11483280B2 (en) | 2019-10-25 | 2022-10-25 | Samsung Electronics Co., Ltd. | Method of translating IP packet for tethering service, communication system and electronic device for performing the same |
CN113746761A (zh) * | 2021-09-01 | 2021-12-03 | 北京东土科技股份有限公司 | 一种网络交换设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7079866B2 (ja) | パケット処理方法、及びデバイス | |
US10652086B2 (en) | Converging IOT data with mobile core networks | |
US11038834B2 (en) | Selecting an external link of a plurality of external links | |
US9106711B2 (en) | Minimizing mapping and signaling for data path aggregation | |
JPWO2011037105A1 (ja) | コンテンツベーススイッチシステム、及びコンテンツベーススイッチ方法 | |
WO2012156852A1 (en) | Label switched routing to connect low power network domains | |
JP2020537457A (ja) | 通信システムにおけるデータ・ルーティング | |
US20170199751A1 (en) | Device and method for controlling an ip network core | |
WO2019080592A1 (zh) | 一种发送报文的方法和设备 | |
CN114467286B (zh) | 注册和配置用于选择性路由上行链路数据业务的网络功能 | |
CN105874756B (zh) | 控制信令的传输方法及设备 | |
EP3345341A1 (en) | Direct replying actions in sdn switches | |
US10177973B2 (en) | Communication apparatus, communication method, and communication system | |
KR20170001654A (ko) | Sdn 스위치를 이용한 네트워크 주소 변환 방법 | |
JP6050720B2 (ja) | コアネットワークにおけるゲートウェイのセッション情報を移行させるシステム及び方法 | |
JP6904846B2 (ja) | 通信装置、通信装置の制御方法、および、プログラム | |
CN107005473B (zh) | 通信路径切换装置、控制通信路径切换装置的方法 | |
Comer et al. | WIST: Wi-SUN FAN protocol emulation testbed | |
JP5657505B2 (ja) | ネットワークシステム、中継装置、通信方法、中継方法及び中継プログラム | |
Hamarsheh | Examining the impact of link failures and network performance on a 6to4, 6rd, CHANC and D4across6 tunneling-based networks using various routing protocols | |
CN110474984B (zh) | 一种物联网通信网络系统 | |
KR100679014B1 (ko) | 이동 애드혹 네트워크에서의 노드간 통신 방법 | |
WO2019175935A1 (ja) | 通信端末および通信方法 | |
Geng et al. | Research on interconnection mechanism between 6LoWPAN and Internet | |
JP2019092233A (ja) | 仮想ネットワークシステムおよび仮想ネットワーク経路設定方法 |