OpenFlow SDN을 구현하기 위해 처음으로 제정된 표준 인터페이스입니다다음 그림과 같이 스위치, OpenFlow 컨트롤러로 구성되며흐름(Flow) 정보를 제어하여 패킷의 전달 경로 및 방식을 결정합니다.

 

흐름(Flow)

 

흐름(Flow)은 특정 시간 동안 네트워크상의 지정된 관찰 지점을 지나가는 패킷의 집합이라고 정의됩니다간단히 이야기하면 흐름이란 패킷의 출발지와 목적지 정보 등을 가진 데이터라고 할수 있습니다.

 

[ OpenFlow 시스템 구성 ]

 

오픈플로우(OpenFlow) 동작 방식

OpenFlow 스위치 내부에는 패킷 전달 경로와 방식에 대한 정보를 가지고 있는 FlowTable이라는 것이 존재합니다패킷이 발생하여 제일 먼저 FlowTable이 해당 패킷에 대한 정보를 가지고 있는지 확인합니다패킷에 대한 정보가 존재하면 그에 맞춰 패킷을 처리하고정보가 존재하지 않으면 해당 패킷에 대한 제어 정보를 OpenFlow 컨트롤러에 요청합니다.

 

스위치로부터 제어 정보를 요청받은 OpenFlow 컨트롤러는 내부에 존재하는 패킷 제어 정보를 확인하고해당 결과를 OpenFlow 스위치에 전달합니다. OpenFlow 컨트롤러 내의 패킷 제어 정보는 외부의 프로그램에서 API를 통해 입력할 수 있습니다. OpenFlow 스위치는 컨트롤러로부터 전달 받은 제어 정보를 FlowTable에 저장하고이후 동일한 패킷이 발생하면 FlowTable에 있는 정보를 활용하여 패킷을 전달합니다.

 

 

오픈플로우(OpenFlow) 패킷 제어 정보

앞에서 언급했듯이 OpenFlow에서 패킷을 제어하는 정보는 FlowTable에 저장되어 있으며다음 그림과 같이 Header Fields, Counters, Actions로 구성됩니다.

 

[ Flow Entry 구성 요소 ]

 

헤더 필드(Header fields)에는 스위치 포트이더넷 및 프로토콜 정보출발지(Source)/목적지(Destination) MAC/IP/포트(Port)/우선순위(Priority)가 저장됩니다헤더 필드 정보와 패킷의 정보의 일치 여부에 따라서 발생한 패킷이 FlowTable에 존재하는지 여부를 결정하게 됩니다.

 

액션(Actions)은 패킷 정보가 헤더 필드 정보와 일치할 때 어떻게 패킷을 처리할지에 대한 정보를 담고 있으며처리 방식은 다음 3가지가 있습니다.

 

 스위치에 정의되어 있는 경로에 따라 패킷 전달

② 정해진 하나의 포트 또는 여러 개의 포트로 패킷 전달(전달 경로 변경)

③ 패킷이 더 이상 전달되지 못하도록 차단(Drop)

 

카운터(Counters) FlowTable에 제어 정보가 등록된 순간부터 현재까지의 시간을 측정하는 용도로 사용됩니다. FlowTable에 등록된 제어 정보는 영구적으로 저장하거나 정해진 시간 동안만 유지할 수 있는데카운터는 후자의 경우 생명 주기(Life Cycle) 관리에 사용됩니다.

 

 

오픈플로우(OpenFlow) 적용 예

앞에서 클라우드 환경의 네트워크는 보안자동화확장성을 보장해야 한다고 했는데, OpenFlow에서 어떻게 보장하는지 살펴보도록 하겠습니다.

 

다음과 같은 2명의 사용자가 생성한 VM 그룹이 있다고 가정해봅니다.

 

[ OpenFlow 적용 예 ]

 

보안을 위해서는 각 사용자가 생성한 VM끼리만 통신할 수 있어야 하는데, OpenFlow FlowTable에서 다음과 같이 구성하면 이를 해결할 수 있습니다.

 

[ FlowTable 설정 예 ]

 

10.0.0.2, 10.0.0.3 간의 패킷과 10.0.0.4, 10.0.0.5 간의 패킷만 전달하고 다른 모든 패킷은 drop하도록 설정되어있습니다네트워크 설정을 자동화하려면 VM이 생성될 때마다 자동으로 위와 같이 설정되어야 합니다외부 프로그램에서 API OpenFlow 컨트롤러에 정보를 입력할 수 있으므로해당 VM이 생성될 때 관리 프로그램에서 API를 호출해 관련 정보를 설정하도록 하면 쉽게 해결할 수 있습니다.

 

확장성을 보장하려면 네트워크 환경을 쉽게 구축할 수 있어야합니다. OpenFlow 스위치를 추가할 때에는 기존의 OpenFlow 컨트롤러와 연결하기만 하면 되고, OpenFlow 컨트롤러를 추가할 때에는 API로 패킷 제어 정보를 일괄 등록하고 OpenFlow 스위치와 연결하기만 하면 됩니다따라서 쉽고 빠르게 네트워크 환경을 구축할 수 있습니다. 

+ Recent posts