OpenFlow
태그 :
- 개념
- 네트워크 장치의 Control Plane과 Data Plane간의 인터페이스를 위한 표준 통신 프로토콜 - 네트워크 장치의 Control Plane과 Data Plane 간의 인터페이스 위한 표준 통신 프로토콜 - 패킷을 제어하는 기능과 전달하는 기능을 분리하고 프로그래밍을 통해 네트워크를 제어하는 기술 - SDN을 실현하기 위한 가장 적합한 기술의 하나로 평가, 현재 SDN 컨트롤러와 네트워크 장치간의 인터페이스 규격으로 사용되고 있는 기술
1. OpenFlow의 개념
- 네트워크 장치의 Control Plane과 Data Plane 간의 인터페이스 위한 표준 통신 프로토콜
- 패킷을 제어하는 기능과 전달하는 기능을 분리하고 프로그래밍을 통해 네트워크를 제어하는 기술
- SDN을 실현하기 위한 가장 적합한 기술의 하나로 평가, 현재 SDN 컨트롤러와 네트워크 장치간의 인터페이스 규격으로 사용되고 있는 기술
2. OpenFlow 구성도 및 구성요소
구성도 |
구성요소 |
설명 |
Controller |
- 오픈플로우 프로토콜을 사용하여 네트워크 장치 설정 및 어플리케이션 최적 경로 설정하는 소프트웨어 - 상위 응용이나 정책 요구에 따라 차별화된 포워딩 및 패킷 처리 룰을 결정하여 하위의 스위치 박스에 Rule을 전달함 - Flow Table 내 Flow Entry의 삽입, 추가, 삭제 가능 |
|
OpenFlow Protocol |
- 스위치와 스위치를 관리하는 컨트롤러가 통신하기 위한 개방형 표준 인터페이스 |
|
OpenFlow Switch |
- L2 스위치에 OpenFlow 프로토콜을 펌웨어로 추가하여 OpenFlow 스위치를 구성하거나 소프트웨어 방식의 Logical 스위치 - Flow Table 별 패킷 포워드와 조작, 통계 수집, 터널 캡슐화/비캡슐화 등의 기능 수행 - Flow Table, Pipeline(각 플로우 테이블의 패킷 프로세싱 통로), 그룹 테이블, 보안 채널(SSL)로 구성됨 |
[추가] – 구성요소
구성요소 |
설명 |
OpenFlow Controller |
- 오픈플로우 프로토콜을 사용하여 네트워크 장치 설정 및 어플리케이션 최적 경로 설정하는 소프트웨어 (플러드라이트, NOX, POX 등) - 스위치에 명령, 스위치는 그 명령에 따라 패킷을 목적지로 전송하거나 수정, 폐기하는 등의 처리 |
Openflow Protocol |
- 스위치와 컨트롤러가 통신하기 위한 개방형 표준 인터페이스 - 패킷의 포워딩 방법이나 VLAN 우선순위 값 등을 스위치에 전달하여 수행되도록 하며 스위치는 장애정보와 사전에 등록된 플로우 엔트리가 없는 패킷에 대한 정 보를 컨트롤러에 문의하고 그 결정을 받아 처리 |
OpenFlow Switch |
- L2 스위치에 OpenFlow 프로토콜을 펌웨어로 추가하여 OpenFlow 스위치 구성하거나 소프트웨어 방식의 Logical 스위치 |
Flow Table |
- Flow Entry : 조건(Match fields), 처리(Actions), 통계(Counters)3가지 정보로 구성 - Flow Entry 모여 플로우 테이블 구성 |
Pipelining |
- 플로우 테이블에는 패킷에 대한 Action을 처리하거나 다른 Action을 추가할 수 있는데 다른 플로우 테이블에 있는 엔트리와 비교하여 패킷 처리가 계속되도록 지시 - 연속되는 테이블내의 플로우 엔트리는 추가적인 Action을 부가하거나, 이전에 추가된 Action을 삭제(또는 수정) 하거나 특정한 Action을 수행 |
Group Table |
- 각 엔트리는 ID값, 그룹의 Type, Counter 및 Action Buckets들로 구성 - Action bucket은 실행할 action들의 집합과 파라미터들을 포함 - Broadcast나 Multicast를 구현하는데 유용 |
Secure Channel |
- 보안 채널 |
3. OpenFlow Flow Table 구조 및 Flow Table을 이용한 패킷 경로 제어
Flow Table 구조 |
Flow Table 이용 패킷 경로 제어 |
- 플로우를 정의하는 패킷 헤더정보(Rule), 패킷을 어떻게 처리할 지 여부를 표시하는 동작(Action) 및 각 플로우별 통계(Statistics)를 포함 |
- Flow Table을 기반으로 특정 패킷 플로우에 대해 가장 짧은 패킷 경로를 선택함 |
4. OpenFlow 동작과정
가. OpenFlow 스위치가 컨트롤러에 연결될 때까지의 흐름
|
- 1) TCP 연결 à 2) Hello à 3) Feature Request, Reply à 4) Set Configuration à 5) Stats
나. OpenFlow 프레임의 전송
1) 스위치에 플로우 엔트리가 사전 등록된 경우의 Ping 프레임 전송
|
- 연결이 성립되면 Openflow 컨트롤러가 플로우의 등록, 변경 또는 삭제를 요구하는 FlowModify 메시지를 스위치에
보내어 플로우 엔트리들의 등록을 통합하여 지시
2) 스위치에 플로우 엔트리가 사전 등록되어 있지 않을 경우의 Ping 프레임 전송
|
- 스위치는 단말로부터 받은 프레임을 일단 버퍼에 저장하고 컨트롤러에 적합한 플로우 엔트리를 문의
- FlowModify 메시지로 플로우 엔트리를 써넣도록 지시
- 프레임의 착신지를 PacketOut 메시지로 지정
- 이후 같은 패킷을 받으면 Openflow 스위치는 플로우 테이블에 저장된 플로우 엔트리를 참조하면 되므로 다시 컨트롤러에 문의할 필요 없음
4. OpenFlow 라우팅 방식
구분 |
설명 |
Hob-by-hop방식 |
- 컨트롤러가 모든 스위치의 상태와 서비스별로 계산된 경로를 알고 있음 - 복잡한 경로 구성을 자유롭게 할 수 있어 네트워크 이용효율 100%까지 향상 - 각 스위차가 모든 경로 정보를 가지고 있어야 하므로 확장성의 문제 발생 |
Overlay방식 |
- 컨트롤러가 모든 경로를 제어하지 않고 터널링 기술을 이용하여 경로를 설정 - 관리해야 할 대량의 라우팅 정보를 하부계층에서 처리하므로 대규모 네트워크 뿐만 아니라 기존의 IP네트워크에도 적용가능 - 네트워크 사용효율은 기존의 네트워크와 같은 수준 |