본문 바로가기

Network/현대 네트워크 기초

8주차 정리(4장)

728x90
반응형

SDN 데이터 평면)

SDN 제어평 면에서 지정한 기준에 따라 데이터를 전송하고 처리하는 영역, 인프라스트럭처 계층 or 리소스 계층

 

기능: 

 

1. 제어 지원 기능 : 리소스 제어 인터페이스 사용, 컨트롤러 계층과 상호 작용, 스위치는 컨트롤러와 통신, 컨트롤러는 오픈플로우 프로토콜을 통해 스위치를 관리.

 

2. 데이터 포워딩 기능: 다른 네트워크나 단말로 부터 데이터플로우를 받음, SDN 어플리케이션에 정의된 룰에 따라 결정된 경로로 데이터 포워딩, 포워딩 테이블에 포워딩 룰 저장, 네트워크 장치는 헤더 변경, 패킷 버리기도 가능하다. 패킷이 들어오면 입력큐에 저장되고 처리가 끝나면 출력큐에 넣어서 전송을 대기한다.

실제 네트워크 장치는 여러 포트를 통해 들어오거나 나가는 패킷 플로우를 처리하기 위해, 두 개 이상의 I/O 포트를 사용할 수 있다.

 

데이터 평면 프로토콜:

네트워크 장치는 특정한 프로토콜을 지원

패킷 플로우는 IP패킷에 대한 스트림으로 구성

포워딩 테이블은 TCP, UDP 뿐만 아니라 다른 전송 계층 및 응용 계층에 프로토콜에 대한 헤더 필드를 기반으로 엔트리구성

 

사우스바운드 API : 오픈플로우 프로토콜의 PDU나 이와 유사한 사우스바운드 API 프로토콜 트래픽으로 구성.

 

SDN 개념 구현을 위한, 두 가지 요구 사항

1. 논리적 아키텍처 : 네트워크 장치에 공통적으로 적용되는 논리적인 아키텍처, 논리적으로 일정한 기능을 가진 스위치

2. 표준 보안 프로토콜 : SDN 컨트롤러와 네트워크 장치가 서로 통신하는데 필요한 보안이 제공되는 표준 프로토콜

 

오픈 플로우:

오픈 플로우: SDN 컨트롤러와 네트워크 장치가 서로 통신하기 위한 프로토콜 부분, 네트워크 스위치 기능의 논리적 구조에 대한 규격, 오픈 플로우 SW는 SDN컨트롤러에 포함 되어 있다, 규격 정의X, 일반적으로 플로우는 일정한 헤더 필드 값들을 공유하며 네트워크에 돌아다니는 일련의 패킷을 의미.

ex) 출발지 혹은 목적지의 IP 주소가 같거나, VLAN ID가 동일한 경우 패킷들이 하나의 플로우를 구성.

 

SDN 컨트롤러: TLS 연결된 채널, 오픈플로우 프로토콜을 통해 스위치와 통신

 

오픈플로우 스위치: 각 스위치는 다른 오픈플로우 스위치랑 연결, 일부 스위치는 출발지와 목적지에 해당하는 단말 장치에 연결

 

오픈플로우 채널: 채널은 스위치 입장에서 서로 연결하는 인터페이스, 오픈플로우 포트를 통해 연결

 

플로우 테이블:

논리적인 스위치 아키텍처에서 가장 기본 구성 요소, 각각의 패킷은 스위치에 들어올때 한개 이상의 플로우 테이블을 통과, 각 플로우 테이블은 여러 개의 행(Entry)으로 구성, 각 행은 7개의 요소(매치필드, 우선 순위, 카운터, 인스트럭션, 타임아웃, 쿠키, 플래그)로 구성됨.

 

<플로우 테이블 행의 7개 요소>

매치 필드 : 필드에 나온 값과 일치하는 패킷을 선택시에 사용

우선순위: 테이블 엔트리에 대한 우선 순위 표시(0은 가장 낮음, 가장 높은 우선 순위는 (2**16) - 1)

카운터: 매칭되는 패킷이 발견될 때마다 갱신

인스트럭션: 매치 필드에 매칭되는 패킷이 발견될 때마다 수행되는 명령

타임아웃: 플로우 엔트리가 만료될 때까지 기다리는 최대 시간

쿠키: 컨트롤러가 지정하는 64비트 데이터 값, 플로우 통계 필터링, 수정/삭제할 때, 컨트롤러가 사용.

플래그: 플로우 엔트리를 관리하는 방식 설정

 

 플로우 테이블에서 '플로우'의 정의: 스위치 관점에서 플로우는 플로우 테이블에서 특정한 엔트리와 일치하는 일련의 패킷을 의미, 패킷의 헤더 필드 값에 대한 함수, 경로에 대한 함수가 아님, 여러 스위치에 지정된 플로우 엔트리를 조합해서 경로에 대한 플로우 정의 가능

 

인스트럭션: 실행할 명령어들의 집합

 

액션 : 패킷포워딩 / 수정, 그룹 테이블 처리 연산 수행 등의 동작을 의미, 오픈 플로우 규격에서 정의하는 액션들은 아래와 같다.

- Output : 특정한 포트로 패킷을 포워딩 하는 액션, 캡슐화

- Set-Queue : 큐 ID를 지정, 포트로 패킷 전달시 큐 ID를 보고 패킷 스케줄링을 결정

- Group : 지정한 그룹에서 패킷을 처리하도록 하는 액션

- Push-Tag/Pop-Tag : VLAN이나 MPLS 패킷에 태그 필드 Push/Pop 액션

- Set-Field : 패킷 헤더에 대해서, 지정한 필드에 해당하는 헤더 값을 수정

- Change-TTL : 패킷의 IPv4 TTL, IPv6 홉 제한, MPLS TTL 값 수정 액션

- Drop : 액션 셋에 Output 액션이 지정되지 않은 패킷은 버리는 액션

 

액션 셋: 각 테이블에서 패킷을 처리하는 동한 쌓아 둔 수행 예정인 액션들로 구성된 리스트, 패킷이 파이프라인을 벗어 날때 액션들이 실행 됨

1. 패킷을 파이프라인으로 보내는 인스트럭션

2. 패킷에 대해 액션을 수행하는 인스터럭션(지정된 액션 셋 변경역시 즉시 해당 액션 수행, 테이블 사이 건너뛰는 동안, 패킷 수정시 사용)

3. 액션 셋을 수정하는 인스트럭션(패킷에 대해 특정한 액션 추가, 지정된 모든 액션을 삭제)

4. 패킷마다 메터데이터 값을 지정하여 다음 테이블로 특정한 정보 전달 가능(메타 데이터 수정, 생성 가능)

 

플로우 테이블 파이프 라인)

스위치에는 한개 이상의 테이블 존재 가능, 각 테이블마다 0부터 1씩 증가하는 숫자 값으로 레이블을 붙여서 파이프라인 구성

플로우 테이블을 하나만 사용할 때 보다 SDN 컨트롤러가 할 수 있는 일의 범위가 커짐.

두단계의 파이프라인 처리 과정을 가진다.

 

인그레스 프로그레싱 :

입력 포트로 들어오는 패킷 처리, 0번 테이블에서 시작하며 포트ID로 입력 구분, 0번 테이블만 존재한다면 별도의 이그레스 프로그레싱이 없다는 의미

 

이그레스 프로그레싱:

출력 포트를 결정한 뒤에 수행하는 작업, 생략 가능한 옵션, 첫번째 이그레스 테이블 ID값은 파이프라인의 모든 인그레스 테이블 ID보다 커야한다.

 

그룹 테이블)

 

여러 테이블을 사용하면 플로우를 여러겹으로 만들 수 있다. => 플로우를 여러개의 하위 플로우로 나눌 수 있다.

 

여러 테이블 사용시 장점:

1. 0번 테이블 안에서 모두 처리하도록 정의 가능하다.

2. SDN 컨트롤러 뿐만 아니라 오픈플로우 스위치에서도 플로우를 간결하게 처리 할 수 있다. => 플로우에 공통적으로 적용할 액션을 컨트롤러에서 정의해두면 스위치에서는 각 플로우에 대해 이를 검사하여 수행하기만 하면된다.

3. 새로운 하위 플로우를 추가하더라도 설정 작업이 적다.

4. 네트워크 연산을 효율적으로 수행하고, 정교하게 제어가 가능하다. 

 

그룹테이블과 그룹 액션을 통해 여러개의 포트를 묶어서 패킷 포워딩을 위한 하나의 개체처럼 표현할 수 있다.

포워딩 추상화 종류에 따라, 그룹의 종류를 다양하게 제공(멀티캐스팅, 브로드캐스팅)

 

그룹테이블의 네가지 필드:

 

1. 그룹 ID : 그룹에 대한식별자

2. 그룹 타입:

3. 카운터 : 패킷을 처리할 때마다 값 증가

4. 액션 버킷 리스트 : 액션 버킷에 대한 순서 리스트, 액션 집합과 관련 파라미터가 담겨있다.

 

액션 버킷 :

 

1. 그룹마다 한 개 이상의 액션 버킷을 가짐,

2. 각각의 버킷마다 액션 셋을 가짐(액션 버킷에 있는 액션들은 패킷에 버킷에 도착할 때 바로 실행)

3. 액션 버킷 액션들의 실행 순서(오픈플로우 규격에 따라 정한 순서로 실행, 마지막 경우에 output 액션을 수행하거나, 다른 그룹에 보내는 그룹 액션 수행)

4. 그룹 액션을 사용하면 여러개의 그룹을 체인 형태로 엮어서 보다 복잡한 패킷 처리 작업 수행 가능

 

그룹 테이블의 네가지 타입:

 

ALL : 그룹에 지정된 모든 버킷을 실행, 모든 패킷은 버킷 수만큼 복제됨, 입력패킷을 여러개의 출력포트로 전송 가능, 멀티캐스트, 브로드캐스트 방식으로 보낼 때, 해당 타입으로 지정

Select: 그룹에 지정된 버킷 중에서 한 개만 실행, 스위치에서 계산한 선택 알고리즘을 통해 버킷 선택(해시값, RR), SDN 컨트롤러가 지정한 버킷에 대한 가중치에 따라 부하 분산 가능

Fast Failover: 현재 사용할 수 있는 버킷 중 첫번째 실행

Indirect: 앞의 세가지 타입은 모두 하나의 패킷 플로우에 적용임, 해당 타입은 여러 패킷 플로우를 하나의 공통 그룹ID로 지정, 컨트롤러가 효율적으로 관리 가능

 

오픈플로우 프로토콜)

오픈플로우 컨트롤러와 오픈플로우 스위치 사이에서 메시지를 주고 받을 때, 사용하는 프로토콜. 일반적으로 안전한 오픈 플로우 채널 제공을 위하여 TLS 위에서 동작하도록 구성함.

 

오픈플로우 프로토콜이 제공하는 세 가지 종류의 메시지

 

1. 컨트롤러에서 스위치로 보내는 메시지(컨트롤러 생성, 경우에 따라 스위치가 응답, Packet-Out 메시지)

 

2. 비동기 메시지(스위치가 컨트롤러 요청없이 보냄, 여러가지 상태 정보 담기 가능, Packet-in 메시지)

 

3. 대칭 메시지(아무나 보낼 수 있음 ,Hello, Echo 요청 응답(스위치와 컨트롤러 사이에 연결된 채널 지연 시간, 대역폭 측정), Exprinter 메시지(다음 버전의 실험용) 등)

 

SDN 컨트롤러가 네트워크 관리에 필요한 정보를 오픈플로우 프로토콜이 세 가지 타입으로 제공

 

1. 이벤트 기반 메시지(링크, 포트에 변경 사항 발생시, 스위치가 컨트롤러에 전송하는 메세지)

 

2. 플로우 통계(트래픽 상태에 따라 스위치가 생성하는 정보, 트래픽 모니터링, 네트워크 구성, Qos 요구 사항에 맞게 파라미터 조정)

 

3. 캡슐화된 패킷(스위치가 컨트롤러에 전송하는 메시지, 스위치는 처음 보는 플로우에 대해 컨트롤러에 문의할때 사용)

 

728x90
반응형

'Network > 현대 네트워크 기초' 카테고리의 다른 글

9주차 정리(5장)  (0) 2023.05.29
6주차 정리  (0) 2023.04.12
5주차 정리  (0) 2023.04.09
4주차 정리  (0) 2023.04.01
3주차 정리  (1) 2023.03.28