컴퓨터 네트워크

5단원 네트워크 계층: 제어평면-3

YJ_ma 2022. 10. 10. 20:36

5.5 소프트웨어 정의 네트워크(SDN) 제어평면


SDN의 특징 4가지

① 플로우 기반 포워딩

- SDN으로 제어되는 스위치들에서 패킷 포워딩은 전송계층, 네트워크계층, 링크계층의 헤더의 어떤 값으로도 이루어진다.

- 패킷 포워딩 규칙은 스위치의 플로우 테이블에 기록된다.

- SDN에서 모든 네트워크 스위치들의 플로우 테이블 항목들을 계산하고 관리, 설치하는 일들이 모두 SDN 제어 평면의 임무이다.

② 데이터 평면과 제어 평면의 분리

- 데이터 평면은 네트워크 스위치들로 구성되고 자신들의 플로우 테이블 내용을 기반으로 비교와 실행을 수행

- 제어평면은 서버와 스위치들의 플로우 테이블을 결정, 관리하는 소프트웨어로 이루어짐

③ 네트워크 제어 기능이 데이터 평면 스위치 외부에 존재

- SDN 컨트롤러와 네트워크 제어 응용들의 집합으로 이루어짐

- 컨트롤러 : 정확한 상태 정보를 유지하고 이 정보를 제어 평면에서 동작하고 있는 네트워크 제어 응용들에 제공하며 응용들이 하부 네트워크 장치들을 모니터하고 프로그램하고 제어까지 할 수 있도록 수단을 제공, 논리적으로 중앙 집중 형태

④ 프로그램이 가능한 네트워크

- SDN 제어평면의 두뇌로서 SDN컨트롤러가 제공하는 API를 이용하여 네트워크 장치들에 있는 데이터 평면을 명세하고 제어한다.

5.5.1 SDN 제어평면: SDN 컨트롤러와 SDN 네트워크 제어 응용들


SDN 제어평면은 크게 SDN 컨트롤러와 SDN 네트워크 제어 응용들로 나뉜다.

SDN 컨트롤러의 기능 - 3가지 계층으로 나뉜다.

① 통신 계층: SDN 컨트롤러와 제어받는 네트워크 장치들 사이의 통신

- 컨트롤러와 그 장치들 사이에 정보를 전달하는 프로토콜이 필요

ex, 연결된 링크 동작 시작or단절, 장치가 가동중인 메시지

- 이러한 이벤트들은 SDN 컨트롤러에게 네트워크 상태에 대한 최신의 정보를 제공

- 사우스바운드(south-bound) : 컨트롤러와 제어받는 장치들 간의 통신

② 네트워크 전역 상태 관리 계층: SDN 제어 평면의 궁극적인 제어 결정

- 종단간 포워딩, 부하균형, 방화벽 같은 기능을 하기 위해서는 SDN으로 제어되는 다른 장치들에 대한 최신정보가 필요

- 제어평면 목적 : 다양한 제어 장치들의 플로우 테이블을 결정하는 것이므로 컨트롤러도 테이블의 복사본을 유지해야함

③ 네트워크 제어 응용 계층과의 인터페이스

- 노스바운스(north-bound): 네트워크 제어 응용들과 상호작용

- 네트워크 제어 응용들이 상태 관리 계층 내의 네트워크 상태 정보와 플로우 테이블을 읽고 쓸 수 있도록 해준다.

 

5.5.2 오픈플로우(OpenFlow) 프로토콜


오픈플로우 프로토콜

- SDN 컨트롤러와 SDN으로 제어되는 스위치 또는 오픈플로우 API를 구현하는 다른장치와의 사이에서 동작

- TCP 상에서 디폴트 포트번호 : 6653

(1) 컨트롤러에서 제어되는 스위치로 전달되는 중요한 메시지

① 설정 : 컨트롤러가 스위치의 설정 파라미터들을 문의하거나 설정할 수 있게 한다.

② 상태 수정 : 컨트롤러가 스위치 플로우 테이블의 엔트리를 추가/제거 또는 수정하거나 스위치 포트의 특성을 설정

③ 상태 읽기 : 컨트롤러가 스위치 플로우 테이블과 포트로부터 통계정보와 카운터 값 얻기위해 사용

④ 패킷 전송 : 컨트롤러가 제어하는 스위치의 지정된 포트에서 특정 패킷을 내보내기 위해 사용

 

(2) SDN으로 제어되는 스위치에서 컨트롤러로 전달되는 중요한 메시지

① 플로우 제거 : 컨트롤러에게 어떤 플로우 테이블 엔트리가 시간이 만료되거나 상태 수정 메시지를 수신한 결과로 삭제되었음을 알린다.

② 포트 상태 : 스위치가 컨트롤러에게 포트의 상태 변화를 알리기위해 사용

③ 패킷 전달 : 스위치 포트에서 도착한 패킷 중에서 플로우 테이블의 어떤 엔트리와도 일치하지 않는 패킷은 처리를 위해 또는 어떤 엔트리와 일치한 패킷 중에서도 일부는 그에 작업을 수행하기 위해 컨트롤러에게 보내려고 사용

 

5.5.3 데이터 평면과 제어 평면의 상호작용: 예제


SDN시나리오 VS 라우터별 제어 시나리오

1. 다익스트라 알고리즘이 패킷 스위치 외부에서 별도의 응용으로 수행

2. 패킷 스위치들이 링크 업데이트 정보를 서로 간이 아닌 SDN 컨트롤러에게 전송

스위치 s1와 s2사이의 링크가 단절되었다고 가정

 스위치 s2와 사이의 링크 단절을 감지한 s1은 오픈플로우의 포트 상태 메시지를 사용하여 링크 상태의 변화를 SDN 컨트롤러에게 알린다.

 링크 상태 변화를 알리는 오픈플로우 메시지를 받은 SDN컨트롤러는 링크 상태 관리자에게 알리고, 링크 상태 관리자는 링크 상태 데이터베이스 갱신

③ 다익스트라 링크 상태 라우팅을 담당하는 네트워크 제어 응용은 링크 상태의 변화가 있을 경우 알려달라고 이전에 등록했으므로 이에대한 알림을 받음

 링크 상태 라우팅 응용이 링크 상태 관리자와 접촉하여 갱신된 링크 상태를 가져온다. 그 후 새로운 최소 비용 경로를 계산

링크 상태 라우팅 응용은 갱신되어야 할 플로우 테이블을 결정하는 플로우 테이블 관리자와 접촉

플로우 테이블 관리자는 오픈플로우 프로토콜을 사용하여 링크 상태 변화에 영향을 받은 스위치들은 플로우 테이블을 갱신한다. 

ex, s1 : s2를 목적지로하는 패킷을 s4에게 보냄

s2: s1으로부터의 패킷을 중간 스위치 s4을 통해 받음

s4: s1에서 s2로 가는 패킷을 포워딩해야한다.

 

5.6 인터넷 제어 메시지 프로토콜(ICMP)


인터넷 제어 메시지 프로토콜(ICMP) 

: 호스트와 라우터 서로 간에 네트워크 계층 정보를 주고 받기 위해서 사용

ex, 오류보고

- ICMP메시지가 IP 데이터그램에 담겨 전송되므로 구조적으로는 IP위에 존재

- ICMP메시지는 IP페이로드로 전송되고 IP 데이터그램을 받으면 ICMP로 내용을 역다중화

- ICMP메시지에는 타입과 코드필드가 있고 ICMP메시지가 처음 생성되도록 한 IP데이터그램의 헤더와 첫 8byte를가진다.

ICMP 타입 코드  설명
0 0 에코 응답(ping에 대한)
3 0 목적지 네트워크 도달 불가능
3 1 목적지 호스트 도달 불가능
3 2 목적지 프로토콜 도달 불가능
3 3 목적지 포트 도달 불가능
3 6 목적지 네트워크 찾지 못함
3 7 목적지 호스트 찾지 못함
4 0 출발지 억제(혼잡제어)
8 0 에코 요청
9 0 라우터 알림
10 0 라우터 발견
11 0 TTL 만료
12 0 IP 헤더 불량

5.7 네트워크 관리와 SNMP


네트워크 관리는 적정한 비용으로 실시간, 운용성능, 서비스 품질 등의 요구사항을 만족시키기 위하여 네트워크와 구성요소 자원들을 감시, 테스트, 폴링, 설정, 분석, 평가, 제어하는 하드웨어, 소프트웨어, 인간요소 등을 배치하고, 통합, 조정하는 것이다.

5.7.1 네트워크 관리 프레임워크


네트워크 관리의 핵심 요소들

1. 관리 서버(managing server)

- 네트워크 운영센터(NOC)의 중앙 집중화된 네트워크 관리 스테이션에서 동작하는 일반적으로 사람과 상호작용하는 응용이다.

- 네트워크 관리 활동이 일어나는 장소로서 네트워크 관리 정보의 수집, 처리, 분석, 게시를 제어

2. 피관리 장치(managed device)

- 관리 대상 네트워크에 존재하는 네트워크 장비들이다

ex, 호스트, 라우터, 스위치, 미들박스, 모뎀, 온도계, 네트워크에 연결된 다른 장치들

- 피관리 장치 내부에는 소위 피관리 객체가 있다.

피관리 객체: 피관리 장치내부의 실제 하드웨어 일부, 그리고 이러한 하드웨어와 소프트웨어 요소에 대한 설정 매개변수들이다.

3. MIB(Managedment Information Base)

- 피관리 장치 내의 피관리 객체들에 관련된 정보들은 MIB에 저장된다.

- MIB객체는 SMI라고 하는 데이터 기술 언어로 IP데이터그램 헤더의 오류로 라우터에서 버려지는 IP데이터그램의 개수 또는 호스트에서 수신하는 UDP 세그먼트 개수 같은 카운터이다.

- MIB객체는 DNS서버에서 실행되는 소프트웨어 버전과 같은 설명정보, 특정 장치가 제대로 동작하는지 나타내는 상태정보, 목적지까지 라우팅 경로와 같은 프로토콜 관련 정보일 수 있다.

4. 네트워크 관리 에이전트

- 각 피관리 장치에는 네트워크 관리 에이전트가 있다.

- 관리 서버와 통신하면서 관리 서버의 명령과 제어에 따라 피관리 장치에 국지적인 행동을 취하는 피관리 장치상의 프로세스이다.

5. 네트워크 관리 프로토콜

- 관리 서버와 피관리 장치들 사이에서 동작하면서 관리 서버가 피관리 장치의 상태에 대해 질의하고 에이전트를 통해 간접적으로 피관리 장치에 행동을 취할 수 있도록 해준다.

5.7.2 SNMP(Simple Network Management Protocol)


SNMP

: 관리 서버와 그 관리 서버를 대표하여 실행되고 있는 에이전트 사이에서 네트워크 관리 제어 및 정보 메시지를 전달하기 위해 사용한다.

1. 형태 : 요청(request) - 응답(reply)

- SNMP 관리 서버는 에이전트에게 요청을 송신하고 이를 받은 SNMP에이전트는 이를 수행 후 요청에 대한 응답을 보낸다

- 일반적으로 요청은 MIB객체 값들의 질의(검색) 또는 수정(설정)에 사용

2. 에이전트가 요구받지 않았더라도 트랩 메시지라는 이름의 메시지를 관리 서버에게 전송하는 것이다.

SNMPv2 PDU타입 송신자-수신자 설명
GetRequest manager to agent 하나 또는 그 이상의 MIB 객체 인스턴스 값을 가져온다.
GetNextRequest manager to agent 목록 또는 테이블에서 다음 MIB 객체 인스턴스의 값을 가져온다.
GetBulkRequest manager to agent 큰 블록 단위의 데이터를 가져온다. 예를들면, 큰 테이블의 값들이다.
InformRequest manager to agent 원격으로 접근하는 원격 관리 서버에게 MIB값을 알린다.
SetRequest manager to agent 하나 또는 그 이상의 MIB객체 인스턴스들의 값들을 설정한다.
Response agent to agent 또는
manager to manager
GetRequeset, GetNextRequest, GetBulkRequest, SetRequest PDU, 또는 InformRequest에 대한 응답으로 발생한다.
SNMPv2-Trap agent to manager 관리자에게 예외적인 이벤트 발생을 알린다.

 

SNMP요청 - 응답 특성 : UDP 데이터그램 페이로드 부분에 실린다.

- UDP는 신뢰성이 보장되지 않은 전송 프로토콜이므로 PDU의 request ID필드는 관리서버가 에이전트에 보내는 요청에 번호를 매기기 위해 사용

- 에이전트 응답 : Request ID값

- Request ID필드 : 관리 서버가 요청 또는 응답의 분실을 검출하는데 이용할 수 있다.

ex, 주어진 시간 후에도 어떤 상응하는 응답이 도착하지 않은 경우 요청을 재전송 할 것인지 아닌지