본문 바로가기

Dev/ONOS & OF-DPA

(내가 알고 있는) SDN의 모든 것 (2) - Flow Table -

제목에 작성한 것과 같이 '내가 알고 있는' 틀린 지식이나 정보 등이 있을 수 있습니다.

피드백은 감사히 받겠습니다.


용어 정리

SDN = Software Defined Network

Control Plane = 장비를 Control하는 Plane

Data Plane = 데이터(패킷)를 처리하는 Plane

Legacy 장비 = 기존 네트워크 장비

SDN Switch = SDN에서 사용하는 스위치

DPID = SDN Switch 식별자


Flow는 패킷을 처리해주는 규칙의 단위이다.

예를 들어 하나의 SDN Switch에서 Mac이 A인 패킷을 5번 포트로 보내고 싶다면 하나의 Flow가 생성된다.

다음으로 Mac이 B인 패킷을 6번 포트로 보내고 싶다면 또 하나의 Flow가 생성된다.

이러게 생성된 Flow들은 스위치의 Flow Table에 저장된다.



Flow는 Matching Field와 Action을 지정하여 생성하게 된다.

Matching Field에 들어갈 수 있는 내용은 다음 그림과 같다.


자세한 내용은 Openflow Spec를 참고 : Openflow spec v1.3.0 Page 42-46


Action에 들어갈 수 있는 내용은 Drop 또는 특정 포트로 포워딩, 다른 테이블로 전달 등이 있다.

위의 Flow Table 그림을 Matching Field와 Action으로 쓴다면 아래와 같다.




SDN Switch는 하드웨어/소프트웨어 Switch로 볼 수 있다.


하드웨어 스위치는 EdgecorE, Quanta 등 여러 벤더에서 생산하고 소프트웨어 스위치는 대표적으로 OpenVSwitch가 있다.

하드웨어 스위치는 보통 TCAM이라는 메모리에 Flow Table을 저장하고 소프트웨어 스위치는 RAM에 저장한다.

스위치의 메모리가 한정적이기 때문에 Flow Table 관리를 하는 방법에도 많은 연구들이 진행되고 있다.


또한 스위치에 패킷이 도착하였을 때 Matching되는 Flow를 찾는 방법에도 여러가지가 존재한다.

TCAM과 같은 경우에는 one cycle로 한번에 Matching되는 Flow를 찾고 OpenVswitch Tuple Space Search를 사용한다.

Openflow Switch는 Hash기반 / Wildcard 기반으로 Flow Table을 구성하는데

Hash 기반은 패킷의 정보를 해시 함수에 넣어 해시값을 생성하고 해시값을 키(Key)값으로 Flow를 저장한다.

Wildcard 기반은 Wildcard를 사용하여 Flow를 저장한다.

*Openflow Switch는 OpenVSwitch와 다른 소프트웨어 스위치로 Stanford 대학교에서 초창기에 개발한 소프트웨어 스위치