OpenFlow는 SDN에서 controller와 라우터간에 이용하는 인터페이스 기술 중 하나로, 네트워크를 통해 네트워크 스위치 또는 라우터의 전달 평면에 대한 액세스를 제공하는 통신 프로토콜이다. 네트워크 컨트롤러가 스위치 네트워크에서 네트워크 패킷의 경로(전달 테이블)를 결정할 수 있도록 해준다.
즉 서버가 라우터한테 라우터의 forwarding table를 전송하기 위해서 필요한 프로토콜이다.
흐름 테이블 항목과 일치하지 않는 패킷은 추가 처리를 위해 원격 컨트롤러로 전송 또는 삭제된다. (DPI: deep packet inspection, 심층 패킷 검사)
header의 flow field에 의해 OpenFlow가 정의된다.
라우터가 직접 계산하지 않고 SDN 컨트롤러가 계산해서 값을 라우터에 전달해준다.
💡 OpenFlow 예시
match와 Action에 대한 Rule들을 전부 라우터든 이더넷 스위치든 전부 설정할 수 있다. 따라서 시나리오를 통한 연습이 필요하다.
✔1번: Match-plus-action in Action
- src IP주소가 10.3.x.x, des IP주소가 10.2.x.x이면 3번 인터페이스로 보낸다.
- 1번에서 들어오는 것에 대해서 src IP주소가 10.3.x.x이고, des IP가 10.2.x.x이면 4번 인터페이스로 보낸다.
- 2번에서 들어오고, des IP주소가 10.2.0.3이면 3번으로 보낸다. 10.2.0.4이면 4번으로 보낸다.
✔2번: load balancing
- 호스트별로 라우팅 방향을 다르게 지정해줄 수 있다. RIP는 한쪽 방향으로밖에 못간다.
- 3번으로 들어오고 des IP주소가 10.1.x.x이면 2번으로 보낸다.
- 4번으로 들어오고 des IP주소가 10.1.x.x이면 1번으로 보낸다.
✔ 3번: firewalling
- s3라우터가 보낸 패킷만 받고싶다는 것을 나타낸다.
- s2에 IP src가 10.1.x.x와 관련된 정보가 없음으로 패킷을 받지 않는다.