일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ret2libc
- sampling theory
- CTF
- 게임개발
- DSP
- Double free
- Race condition
- linear difference equation
- MAC
- 유스케이스
- Rr
- 운영체제
- 언리얼엔진
- dtft
- frequency-domain spectrum analysis
- 메카님
- pdlc
- STCF
- 유니티
- RBAC
- TSet
- Unity #Indie Game
- DP
- dirty cow
- Security
- AINCAA
- 게임 개발
- 배경 그림
- MLFQ
- stride
- Today
- Total
다양한 기록
SDN(software defined networking) control plane 본문
트래픽 엔지니어링
어느 한 쪽으로 트래픽이 몰리는 게 마음에 안들면 분산시키고 싶을 수도 있음 (로드 밸런싱)
그런데 전통적인 방법으로는(라우터에서 포워딩 테이블 만들기) 어려움이 있음
예전 방식은 control과 data plane이 분리가 안됨
현재는 네트워크 관리자가 패킷의 흐름을 제어할 수 있도록 관여 -> 소프트웨어를 통해
논리적으로 중앙화된 컨트롤 플레인
멀리 있는 컨트롤러와 라우터의 CA(control agent)와 상호작용하여 포워딩 테이블을 만듦
왜 "논리적으로" 중앙화인가
물리적으로는 보통 분산처리가 되어 있는데, 포워딩 테이블 만드는 기능에선
그게 중요한게 아니니까 논리적으로 하나의 컨트롤러로 생각하는 것
SDN 방식은 OSPF 같은 개방형 프로토콜처럼 제조회사가 달라도 사용 가능함
Generalized Forwarding
기존에는 오직 IP 주소만 보고 포워딩 테이블을 만들었음
이제 헤더의 여러 정보를 검토해서 포워딩함 => Flow Table
----------------------------
Control applications
직접 개발할 수도 있고, 상업 SW 사용도 가능
보안, 로드 밸런싱, 경로 설정 등을 소프트웨어로 제어 가능
중요한 건 정책
---------------------------
SDN contoller (network OS)
- 네트워크 상태 정보를 유지
- northbound API - 네트워크 컨트롤 어플리케이션과 소통
- southbound API - 네트워크 스위치들과 소통
성능을 위해서 실제론 분리되어 있으나, 논리적으론 통합되어 있음
---------------------------
Data plane switch
하드웨어로 구현된 데이터 플레인(포워딩)을 가짐
플로우 테이블은 컨트롤러에 의해 인스톨됨
컨트롤로와 소통을 위한 프로토콜 사용
OpenFlow protocol
컨트롤러와 오픈플로우 스위치 간 메시지 교환
tcp 사용
오픈플로우 메시지
- controller to switch (sync .. 동기적. 컨트롤러는 스위치한테 응답을 받은 이후에 다른 작업이 가능)
- switch to controller (async .. 비동기적. 제대로 받는지 확인을 하지 않음)
- symmetric (misc .. 기타 메시지. 테스트 용으로 같은 메시지를 주고 받음, 메아리)
Controller-to-switch messages
- features: 문제 없냐고 쿼리
- configure: 세팅에 문제 없냐고 쿼리
- modify-state: add, delete, modify 등 테이블 내용 모디파이 지시
- packet-out: 특정 포트로 보내라고 지시
=> 스위치, 라우터로부터 정보를 모으고 지시
Switch-to-controller messages
- packet-in: 패킷이 왔는데 나갈 수 있는 포트가 없어서 어디로 보낼지 위에 물어보기
- flow-removed: 포트 없애기
- port status: 포트 상태 알려주기
오픈 플로우 - Flow Table Entries
오픈 플로우 메시지에 들어가는 내용들임
[ 룰 | 액션 | 스탯 ]
룰: 스위치 포트, [ VLAN ID, MAC src, MAC dst, Eth type ] [IP src, IP dst, IP Protocol] [TCP s port, TCP d port]
액션: port6, drop 등 ..
룰에 일치하는 패킷에 대해 행동할 동작을 정의
ex)
- Destination-based forwarding-
[IP dst]: 51.6.0.8, [Action]: port6 => 51.6.0.8로 향하는 패킷은 포트 6번으로 보내라
-Firewall-
[TCP dport]: 22, [Action]: drop => 22번 포트로 들어오는 패킷은 버려라
[IP src]: 128.119.1.1, [Action]: drop => 128.119.1.1 IP에서 오는 패킷은 버려라
match+action => 다양한 종류의 장치를 통합
라우터
- 매치: longest destination IP prefix
- 액션: 해당하는 링크로 내보내기
방화벽
- 매치: IP 주소와 TCP/UDP 포트 번호
- 액션: 허가 혹은 거부
스위치
- 매치: 목적지 MAC 주소
- 액션: 포워드 or 플루드 (거기로만 보내서 전달하거나, 그냥 알아서 받으라고 브로드캐스팅하거나)
NAT
- 매치: IP 주소와 포트
- 액션: 주소랑 포트 rewrite
'네트워크' 카테고리의 다른 글
네트워크 매니지먼트와 SNMP (0) | 2024.06.07 |
---|---|
ICMP (Internet Control Message Protocol) (0) | 2024.06.06 |
Intra-AS / Inter-AS routing (0) | 2024.06.05 |
라우팅 프로토콜 (0) | 2024.06.05 |
IPv6 (0) | 2024.06.05 |