본문 바로가기
네트워크 프로그래밍

[네트워크 프로그래밍] Week 13: 소프트웨어 정의 네트워크 (SDN) 심화

by cogito21_python 2024. 6. 5.
반응형

Day 1: SDN 아키텍처 심화

강의 내용:

  1. SDN 아키텍처 개요
    • SDN의 기본 아키텍처 복습
    • SDN 컨트롤러, 데이터 플레인, 애플리케이션 플레인
  2. SDN 컨트롤러 심화
    • 주요 SDN 컨트롤러 (OpenDaylight, ONOS, Ryu)
    • SDN 컨트롤러의 기능과 역할
  3. SDN 프로토콜 심화
    • OpenFlow 프로토콜 심화
    • 기타 SDN 프로토콜 (NETCONF, P4)

실습:

  • SDN 컨트롤러 설치 및 설정
### 실습: SDN 컨트롤러 설치 및 설정
1. OpenDaylight 컨트롤러 설치 및 설정
2. Ryu 컨트롤러 설치 및 설정
3. 간단한 네트워크 토폴로지 구성 및 테스트
# OpenDaylight 설치
sudo apt-get update
sudo apt-get install opendaylight

# OpenDaylight 실행
sudo systemctl start opendaylight

# Ryu 설치
pip install ryu

# Ryu 실행
ryu-manager

 

Day 2: SDN 네트워크 구성 및 관리

강의 내용:

  1. SDN 네트워크 구성
    • SDN을 활용한 네트워크 토폴로지 구성
    • 가상 네트워크와 물리 네트워크 통합
  2. SDN 네트워크 관리
    • SDN 컨트롤러를 통한 네트워크 관리
    • 네트워크 상태 모니터링 및 트래픽 제어
  3. SDN 네트워크 최적화
    • SDN을 통한 네트워크 최적화 기법
    • 네트워크 성능 모니터링 및 튜닝

실습:

  • SDN 네트워크 구성 및 관리 실습
### 실습: SDN 네트워크 구성 및 관리
1. Mininet을 이용한 SDN 네트워크 토폴로지 구성
2. OpenFlow 스위치를 통한 트래픽 제어
3. 네트워크 상태 모니터링 및 성능 최적화
# Mininet 설치 및 실행
sudo apt-get install mininet
sudo mn --topo single,3 --controller remote --switch ovsk

# OpenFlow 스위치 제어 예제
ryu-manager ryu.app.simple_switch_13

 

Day 3: SDN 애플리케이션 개발

강의 내용:

  1. SDN 애플리케이션 개발 개요
    • SDN 애플리케이션의 역할과 중요성
    • SDN 애플리케이션 개발 환경 설정
  2. SDN 애플리케이션 개발 기법
    • OpenFlow를 이용한 트래픽 제어 애플리케이션 개발
    • REST API를 이용한 SDN 애플리케이션 개발
  3. SDN 애플리케이션 배포 및 관리
    • SDN 애플리케이션 배포 방법
    • 애플리케이션 성능 모니터링 및 관리

실습:

  • SDN 애플리케이션 개발 실습
# 간단한 SDN 애플리케이션 예제 (Ryu 사용)
from ryu.base import app_manager
from ryu.controller import ofp_event
from ryu.controller.handler import MAIN_DISPATCHER, set_ev_cls
from ryu.ofproto import ofproto_v1_3

class SimpleSwitch(app_manager.RyuApp):
    OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION]

    def __init__(self, *args, **kwargs):
        super(SimpleSwitch, self).__init__(*args, **kwargs)

    @set_ev_cls(ofp_event.EventOFPSwitchFeatures, MAIN_DISPATCHER)
    def switch_features_handler(self, ev):
        datapath = ev.msg.datapath
        ofproto = datapath.ofproto
        parser = datapath.ofproto_parser

        match = parser.OFPMatch()
        actions = [parser.OFPActionOutput(ofproto.OFPP_FLOOD)]
        self.add_flow(datapath, 0, match, actions)

    def add_flow(self, datapath, priority, match, actions):
        ofproto = datapath.ofproto
        parser = datapath.ofproto_parser
        inst = [parser.OFPInstructionActions(ofproto.OFPIT_APPLY_ACTIONS, actions)]
        mod = parser.OFPFlowMod(datapath=datapath, priority=priority, match=match, instructions=inst)
        datapath.send_msg(mod)
# SDN 애플리케이션 실행
ryu-manager simple_switch.py

 

Day 4: SDN 보안

강의 내용:

  1. SDN 보안 개요
    • SDN의 보안 위협과 도전 과제
    • SDN 보안 강화 방법
  2. SDN 보안 기법
    • 네트워크 트래픽 분석 및 모니터링
    • 침입 탐지 및 방어 기법
  3. SDN 보안 사례 연구
    • SDN 보안 성공 사례 분석
    • SDN 보안 실패 사례와 교훈

실습:

  • SDN 보안 실습
### 실습: SDN 보안 실습
1. SDN 네트워크 트래픽 모니터링 설정
2. 침입 탐지 시스템 (IDS) 설정 및 테스트
3. 보안 위협 시나리오를 통한 대응 연습
# 네트워크 트래픽 모니터링 도구 설치 (예: ntopng)
sudo apt-get install ntopng

# ntopng 실행
sudo ntopng

 

Day 5: SDN 프로젝트 준비

강의 내용:

  1. SDN 프로젝트 주제 선정 및 요구사항 분석
    • SDN 프로젝트 주제 논의
    • 팀 구성 및 역할 분담
  2. SDN 프로젝트 계획 수립
    • 프로젝트 목표 및 요구사항 정의
    • 프로젝트 타임라인 설정
    • 프로젝트 도구 및 환경 설정

실습:

  • SDN 프로젝트 계획서 작성 및 공유
### 실습: SDN 프로젝트 계획서 작성
1. 프로젝트 목표 정의
2. 기능 명세서 작성
3. 개발 일정 및 마일스톤 설정
4. 역할 분담 및 작업 계획 수립
5. GitHub 저장소 생성 및 초기화

 

이 강의는 SDN의 심화 주제를 다루며, 실습을 통해 이론을 실제로 적용해보고, SDN 아키텍처, 애플리케이션 개발, 보안 등을 익히는 것을 목표로 합니다. 각 주제별로 실습 예제를 통해 개념을 명확히 이해하고 실제 환경에서 적용해보는 기회를 제공합니다.

반응형