mininet-wifi Topology(토폴로지) Control

해담·2024년 11월 26일

Topology

Topology는 네트워크, 시스템, 또는 컴퓨터 구조에서 구성 요소들 간의 연결 구조를 의미합니다. 네트워크 토폴로지는 노드(컴퓨터, 장치 등)와 이들을 연결하는 링크(선, 무선 연결 등)의 배치 방식을 나타냅니다. 네트워크에서 토폴로지는 장치들이 어떻게 서로 연결되고 데이터가 어떻게 흐르는지에 대한 중요한 정보를 제공합니다.

Single Topology

Single Topology는 1개의 Access Point(ap1)와 n개의 station들로 구성된 네트워크입니다. 명령어는 sudo mn --wifi --topo single,4이며, 4개의 station이 있다는 뜻입니다. 1개의 ap(ap1)가 존재하며, 하나의 ap에 4개의 sta가 연결되어 있는 형태입니다. 하나의 컨트롤러(c0)가 ap를 관리합니다.

Linear Topology

Linear Topology는 n개의 Access Point(ap1, ap2, ap3, ..)와 n개의 station들로 구성된 네트워크입니다. 명령어는 sudo mn --wifi --topo linaer,4이며, 각각 4개의 Access Point와 station이 있다는 뜻입니다. 4개의 ap가 존재(ap1, ap2, ap3, ap4)하며, 하나의 ap에 각각의 sta(sta1, sta2, sta3, sta4)가 일대일로 연결되어 있는 형태입니다. 하나의 컨트롤러(c0)가 4개의 ap를 관리하며, ap들 사이에 연결 링크((ap2, ap1)(ap2, ap1)(ap2, ap1))가 존재합니다.

Topology 관련 명령어

pingall
네트워크에 연결된 모든 장치 간의 연결을 확인하는 명령어로, 결과는 총 n(n-1)개의 ping 테스트를 제공합니다.

예를 들어 4개의 station이 존재한다고 가정해 봅시다.

sta1 -> ***sta1 (sta1과 관련된 모든 sta들)
sta2 -> ***sta2 (sta2과 관련된 모든 sta들)
sta3 -> ***sta3 (sta3과 관련된 모든 sta들)
sta4 -> ***sta4 (sta4과 관련된 모든 sta들)

이런 식으로 4(sta의 총 개수) x 3(현재 sta와 관련된 나머지 sta들) = 12개가 나오게 됩니다. 각각의 결과에는 ping 명령어 사용 시 얻을 수 있는 response time, rtt min/avg/max/mdev 등을 확인할 수 있습니다.

sudo mn --wifi --link=wmediumd --position
mininet-wifi에서 장치 간의 물리적 위치를 설정하여, 더 현실적인 무선 환경을 시뮬레이션하는 명령어입니다. wmediumd는 무선 네트워크 시뮬레이션에서 장치 간의 거리, 신호 강도, 간섭 등 현실적인 요소를 반영해 통신 품질을 계산하는 무선 링크 모델입니다. --position 옵션을 추가하면 네트워크 장치들의 위치를 지정할 수 있고, 위치에 따라 신호 강도와 통신 품질이 영향을 받습니다.

distance sta1 sta2
sta1과 sta2 간의 거리를 계산하는 명령어입니다.

참고. x, y, z 좌표 모두를 고려하여 두 지점 사이의 직선 거리로, 유클리드 거리 값으로 나옵니다. 거리=(x2−x1)^2+(y2−y1)^2+(z2−z1)^2에 루트

py sta1.position
sta1의 현재 위치(x,y,z 좌표)를 출력하는 명령어입니다.
py sta1.setPosition('10,0,0')
sta1의 위치를 (10, 0, 0)으로 변경하는 명령어입니다.

py sta.params
노드(=sta)의 구성 파라미터를 출력하는 명령어입니다. 이 명령어는 해당 스테이션의 네트워크 설정, 예를 들어 IP 주소, wlan 등과 같은 네트워크 파라미터를 확인할 수 있습니다.

py sta1.wintfs
wireless interfaces의 약자로, sta1의 무선 인터페이스 정보를 확인하는 명령어입니다. 결과의 의미는, sta1에는 하나의 wireless interface만 존재한다는 뜻입니다. 딕셔너리 형태로 보여주므로, 0은 키를 뜻합니다. 또한 managed는 클라이언트 모드로, STA(스테이션)가 AP(액세스 포인트)에 연결되도록 설정되어 있다는 뜻입니다.

py sta1.wintfs에서 추가 정보를 확인하기 위한 명령어
py sta1.wintfs[0]: sta1의 첫 번째 무선 인터페이스를 나타냅니다. 이를 통해 인터페이스의 세부 정보를 확인할 수 있습니다.
py sta1.wintfs[0].freq: 인터페이스가 현재 사용 중인 주파수(Frequency)를 GHz 단위로 나타냅니다. 2.412 GHz는 Wi-Fi 2.4GHz 대역의 채널 1을 의미합니다.
py sta1.wintfs[0].mode: 인터페이스의 무선 표준 모드를 나타냅니다. g는 802.11g 표준을 의미합니다.
py sta1.wintfs[0].txpower: 송신 전력(Tx Power)을 dBm 단위로 나타냅니다. 이 값이 높을수록 신호 도달 범위가 넓어지지만, 전력 소모도 증가합니다.
py sta1.wintfs[0].range: 송신 범위(Range)를 미터 단위로 나타냅니다.
py sta1.wintfs[0].antennaGain: Antenna Gain을 dBi 단위로 나타냅니다. Antenna Gain은 송신 및 수신 신호의 강도를 나타내며, 값이 클수록 신호가 더 집중됩니다.

ap1 ip link
ap1의 모든 네트워크 인터페이스를 확인하는 명령어입니다. wired interface와 wireless interface가 공존합니다. 이 명령어는 액세스 포인트(ap1)의 네트워크 인터페이스의 상태(활성화, 비활성화 등)를 확인할 수 있습니다.

sta1 iw dev sta1-wlan0 scan
sta1의 무선 인터페이스(sta1-wlan0)에서 주변 네트워크를 스캔하는 명령어입니다. sta1이 연결할 수 있는 와이파이 네트워크 목록을 확인할 수 있습니다.




스위치에 대한 api 함수 및 코딩 샘플

스위치의 역할

스위치의 주된 역할은 Layer 2에서 패킷을 목적지까지 연결해주는 forwarding table을 만드는 것이며, 특정 경우 라우팅을 하게 되면 스위치는 라우터 역할을 할 수 있습니다.

mininet switch 종류

  • User Switch: 네트워크 대역폭(bw)은 1.1Gbps으로, 성능이 일반 스위치보다 낮습니다.
  • 일반 Switch: 네트워크 대역폭(bw)은 54.7Gbps입니다.

iperf

iperf란 네트워크 성능 측정 및 튜닝 도구로, 스위치의 대역폭(bw)를 확인할 수 있습니다.

  • 특징
    • 크로스 플랫폼 도구이며 모든 네트워크의 표준화된 성능 측정을 생성할 수 있다.
    • 클라이언트와 서버 기능이 있어 데이터 스트림을 만들어서 단방향 또는 양방향으로 양단 간 *스루풋을 측정할 수 있다.
    • 일반적으로 iperf의 출력에는 전송된 데이터와 측정된 스루풋의 양을 타임스탬프 기록과 함께 포함하고 있다.

*참고. 스루풋은 네트워크 또는 시스템이 단위 시간당 처리할 수 있는 실제 데이터 전송량을 의미합니다. 보통 bps(bits per second)의 단위로 표현합니다(ex. Mbps, Gbps). 스루풋은 네트워크 성능을 평가할 때 중요한 척도로 사용합니다.

iperf3

iperf3란 Windows, Linux 및 Unix에서 네트워크 성능을 테스트할 수 있으며, 속도와 대역폭에 따라 두 시스템 간의 네트워크 성능을 확인하는 데 사용되는 오픈 소스 무료 명령줄 도구입니다. 이 도구는 TCP 또는 UDP 네트워크 처리량을 측정하는 데 사용합니다.

  • sudo apt-get -y install iperf3: 우분투에서의 iperf3 설치 명령어

  • iperf3 -c 127.0.0.1 Connecting to host 127.0.0.1, port 5201: iperf3를 이용하여 먼저 클라이언트를 구현하는 명령어입니다. 서버 IP 주소 정보인 127.0.0.1의 서버에서 서버 listening socket port 5201에 연결하겠다는 의미입니다.

    • Connecting to host 127.0.0.1, port 5201: port 5201는 서버 listening socket port입니다.
    • local 127.0.0.1 port 5201 connected to 127.0.0.1 port 52938: port 52938은 서버가 클라이언트를 식별하기 위해 생성한 클라이언트 소켓 번호입니다.
  • iperf3 -s: iperf3를 이용하여 서버를 구현하는 명령어입니다. 서버는 클라이언트 포트 번호(52923)로 접속한 클라이언트의 성능을 표시합니다. 서버 listening socket port 번호는 5201입니다.

만약 같은 listening socket port에 또 클라이언트를 연다면, 서버는 클라이언트에 다른 포트 번호를 부여하여 다중 클라이언트를 처리합니다.

  • port 52938는 서버에서 관리하는 첫 번째 클라이언트 socket 번호입니다.
  • port 35788는 서버에서 관리하는 두 번째 클라이언트 socket 번호입니다.



Topology 컨트롤 예제

Mobile Ad hoc Network

MANET는 중앙 집중적인 인프라가 없는 동적이고 자율적인 네트워크입니다. 노드가 이동하거나 추가/삭제되더라도 네트워크가 자체적으로 구성되고 유지될 수 있는 특징을 가집니다.

이동 Ad Hoc 네트워크와 인프라스트럭처 네트워크

  • 이동 Ad Hoc 네트워크는 독립적으로 동작하며, 고정된 인프라 없이 노드 간 직접 연결로 통신이 이루어집니다. 각 노드가 라우터 및 호스트 역할을 수행하며, 다른 노드 간 데이터 전송을 지원합니다. (ex. 자연재해, 군사작전, 임시 네트워크)
  • 인프라스트럭처 네트워크는 고정된 중앙 기지국 또는 라우터가 네트워크를 관리합니다. 노드는 해당 인프라를 통해 통신하며, 전체 네트워크가 중앙 관리 하에 유지됩니다. (ex. Wi-Fi 네트워크, 셀룰러 네트워크)

이동 Ad Hoc 네트워크의 존재 형태

  • 독립적으로 존재하는 경우는 완전히 분산된 구조로, 모든 노드가 서로 직접 통신합니다. (ex. 블루투스 기기 연결)
  • 기반망과 연동되는 경우는 게이트웨이를 포함합니다. 애드 혹 방식과 인프라 기반 통신 방식이 혼합된 형태입니다. (ex. 차량 네트워크에서 이동 차량과 고정된 신호등 간 통신)

이동 Ad Hoc 라우팅 프로토콜의 분류

  • Table-Driven/Proactive 라우팅 프로토콜은 모든 노드가 사전에 전체 네트워크의 경로 정보를 유지하며, 지속적으로 경로 정보를 업데이트합니다. 라우팅 테이블을 사용하여 각 목적지까지의 경로를 미리 저장하고, 토폴로지가 변하면 즉시 테이블을 갱신합니다.
  • On-Demand-Driven/Reactive 라우팅 프로토콜은 필요할 때만 경로를 생성하는 방식입니다. 노드가 특정 목적지로 데이터를 전송하려 할 때, 경로 요청을 브로드캐스트하여 경로를 설정합니다. 경로가 사용되지 않을 경우 삭제합니다.
  • Hybrid 라우팅 프로토콜은 Proactive와 Reactive 방식을 결합하여, 네트워크의 특정 영역은 Proactive로 관리하고, 나머지 영역은 Reactive 방식으로 관리합니다. 일반적으로 네트워크를 Zone으로 나누어 관리하며, 영역 내에서는 Proactive로, 영역 간에는 Reactive로 동작합니다.

이동 Ad Hoc 네트워크 응용

  • Satellite Interface는 위성 통신 시스템과 지상 네트워크 시스템을 연결하는 방식이나 기술을 의미합니다. 전쟁 지역에서는 물리적 인프라가 파괴되거나 통신이 차단되는 경우가 많아 전세계 어디서나 연결 가능하고, 지상에서 발생할 수 있는 장애에 영향을 받지 않는 Satellite Interface를 이용합니다.
  • Sensor Network는 센서들이 서로 연결되어 데이터를 수집하고 이를 처리하거나 전송하는 네트워크입니다. 환경 모니터링, 사람들의 위치 추적 등에 사용됩니다.



군사용 애드 혹 네트워크

배경


군사용 애플리케이션을 위한 엣지(Edge) 및 클라우드 서버 아키텍처는 주로 실시간 데이터 처리와 네트워크 최적화를 위해 설계됩니다. 이를 통해 군사용 드론, UAV(Unmanned Aerial Vehicle), 센서 네트워크, 감시 시스템 등 다양한 군사 장비들이 실시간으로 데이터를 수집하고 처리할 수 있습니다. 이러한 시스템에서는 엣지 컴퓨팅(Edge Computing)과 클라우드 컴퓨팅(Cloud Computing)이 결합되어, 빠른 반응 속도와 효율적인 리소스 관리를 지원합니다.

  1. Bidirectional OCC (Operational Command Center)
  • OCC는 작전 지휘 센터를 의미하며, 군사 작전의 중앙 제어 및 관리를 담당하는 핵심적인 역할을 합니다.
  • Bidirectional은 양방향 통신을 의미합니다. 즉, OCC와 군사 장비 간의 실시간 데이터 교환이 이루어지며, 각 장비의 상태나 작전 정보가 양방향으로 전달됩니다. 예를 들어, 드론이 감시 데이터를 실시간으로 OCC에 전송하고, OCC는 필요한 명령을 드론에 전달하는 구조입니다.
  1. Edge AI Model
  • 엣지 AI는 데이터를 클라우드로 전송하기 전에 현장에서 데이터를 처리하는 기술입니다. 군사용 애플리케이션에서는 드론, 센서, 로봇 등이 엣지 장비가 되어, 실시간으로 데이터를 처리하여 빠르게 대응할 수 있습니다.
  • Edge AI Model은 이러한 엣지 장비에서 실행되는 AI 알고리즘으로, 머신 러닝이나 딥 러닝 모델을 활용하여 실시간 분석을 제공합니다. 예를 들어, 드론에 장착된 카메라는 엣지 AI 모델을 통해 영상을 실시간으로 분석하여 적군의 움직임을 식별하고 이를 OCC로 전송합니다.
  1. Drone
  • 군사용 드론(UAV)은 고성능 센서와 카메라를 장착하여 정보 수집 및 실시간 전송을 담당합니다. 드론은 엣지 장비로서 AI 모델을 실행하여 영상 처리, 객체 인식, 위협 감지 등을 수행할 수 있습니다.
  • 드론은 Bidirectional OCC와 연결되어 실시간으로 지휘 센터와 정보를 주고받으며, 작전 목표를 수행합니다.
  1. Airplane Drone
  • Airplane Drone은 고고도에서 장거리 비행을 수행할 수 있는 군사용 드론을 의미합니다. 이 드론은 고고도에서 지속적인 감시나 정찰 임무를 수행하며, 엣지 AI 모델을 활용하여 데이터를 실시간으로 분석합니다.
  • 공중에서 비행하는 드론은 클라우드 서버와 연결되어 큰 범위의 데이터 처리와 전략적 결정을 지원할 수 있습니다.
  1. 엣지 컴퓨팅(Edge Computing)과 클라우드 컴퓨팅(Cloud Computing)
  • 엣지 컴퓨팅은 현장에서 데이터를 처리하여 지연을 최소화하는 역할을 하며, 클라우드 컴퓨팅은 대규모 데이터 처리와 분석, 저장을 담당합니다.
  • 군사 환경에서는 엣지 컴퓨팅을 통해 실시간 데이터 처리와 빠른 의사결정을 하고, 클라우드 컴퓨팅은 이를 지원하는 중앙 처리 및 분석을 수행합니다.
  1. 시나리오 예시
  • 드론이 실시간 영상을 수집하고, 엣지 AI 모델을 사용하여 적군을 식별하거나 이상 상황을 탐지합니다. 이 정보는 Bidirectional OCC를 통해 지휘 센터로 전송됩니다.
  • 지휘 센터에서는 드론으로부터 받은 데이터를 분석하고, 필요한 명령을 드론에 되돌려 보냅니다. 이 과정에서 클라우드 서버는 드론의 데이터와 과거의 데이터를 비교하여 전략적 의사결정을 지원합니다.

내용

  • 네트워크 토폴로지 구성을 통한 최적 자동 주소 및 라우팅 프로토콜 최적화 연구
  • 동적 라우팅 프로토콜 개발- RREQ 및 경로 유지관리 기반 심층 강화 학습: 심층 강화학습 기반 에이전트가 네트워크(환경)와 상호 작용하여 얻은 경험을 기반으로 최적의 라우팅을 결정하는 기술, 에이전트는 심층 강화 학습을 사용하여 최적의 경로를 선택하여 속도, 대기 시간 또는 처리량과 같은 네트워크 품질을 최적화함.
  • 동적 라우팅 프로토콜 개발- RREP 및 경로 유지관리 기반 심층 강화 학습: 심층 강화 학습을 사용하여 에이전트는 최적의 경로를 선택하는 방법을 학습하여 네트워크의 오버헤드를 최적화함.
  • 동적 라우팅 프로토콜 개발- REER 및 경로 유지관리 기반 심층 강화 학습: 심층 강화 학습 기반 에이전트는 경로 단절에 대한 자가 경로 구성을 진행함.



Quiz

  • Single Topology ≠ Ad-hoc, Linear Topology ≠ Infrastructure.
  • Single과 Linear는 네트워크의 구조를 나타내고,
  • Ad-hoc과 Infrastructure는 네트워크의 운영 방식을 나타냄.
  • 두 개념이 독립적이지만, 상황에 따라 조합될 수 있음.
    • Single Topology는 Ad-hoc 방식으로 구현될 가능성이 높으나, Infrastructure도 가능.
    • Linear Topology는 보통 Infrastructure에서 구현되지만 Ad-hoc으로도 가능.

1. Single Topology의 특징은?
하나의 Access Point(ap1)과 n개의 station으로 구성된 네트워크로, station의 개수는 보통 4개 -> sudo mn --wifi --todo single,4

2. Linear Topology를 생성하는 명령은 무엇인가요?
sudo mn --wifi --topo liner,4

3. Single Topology와 Linear Topology의 차이점을 설명하시오.

  • Single Topology: 하나의 Access Point(ap1)에 여러 Station(sta1~sta4)이 연결된 구조
  • Linear Topology: 여러 Access Point(ap1~ap4)가 직렬로 연결되고, 각 AP마다 한 개의 Station(sta1~sta4)이 연결된 구조

4. Mininet-WiFi에서 두 Station(sta1, sta2)의 거리를 확인하려면 어떤 명령어를 사용해야 하나요?
sudo mn --wifi --link=wmediumd --postion -> wmediumd은 채널 모델링이 사용된 토폴로지
distance sta1 sta2

5. wmediumd와 position 옵션의 역할을 설명하고, 이를 통해 얻을 수 있는 이점을 기술하시오.

  • wmediumd 옵션: 네트워크 채널 모델링을 사용하여 현실적인 무선 신호 시뮬레이션을 가능하게 함.
  • position 옵션: 각 Station의 위치를 정의하고 거리와 상호작용을 분석할 수 있도록 함. (py sta1.position: sta1의 3차원 위치 표시)
  • 이점: 현실적인 네트워크 시뮬레이션 환경 제공 및 거리 기반 성능 분석 가능.

6. sta1의 위치를 (10, 0, 0)으로 변경하는 명령어를 작성하시오.
py sta1.setPosition('10,0,0') -> sta1의 위치를 3차원 좌표로 설정하는 파이썬 명령어.

7. sta1의 무선 인터페이스 정보를 확인하려면 어떤 명령어를 사용해야 하나요?
py sta1.params

8. iperf 명령어의 주요 기능은 무엇인가요?
클라이언트-서버 모델을 사용하여 네트워크 대역폭과 성능 측정

9. iperf3를 통해 네트워크 성능을 측정하려고 합니다. 서버와 클라이언트 명령어를 각각 작성하시오.

  • 서버: iperf3 -s
  • 클라이언트: iperf3 -c 127.0.0.1 Connecting to host 127.0.0.1, port 5201
    • 127.0.0.1: 클라이언트 IP 주소
    • port 5201 서버에서 관리하는 클라이언트 socket 번호

10. Dynamic Routing Protocol이 심층 강화 학습(DRL)을 기반으로 최적의 경로를 선택하는 방식과 그 장점에 대해 설명하시오.

  • DRL 기반 라우팅은 에이전트가 환경(네트워크)과 상호작용하여 데이터를 수집하고 최적의 경로를 학습합니다.
  • 장점: 네트워크 대기 시간, 속도, 처리량 등 성능 최적화 가능 / 환경 변화에 유연하게 대응하여 경로 단절 문제를 최소화함.
profile
해담이를먹여살리기위한..

0개의 댓글