SDN(소프트웨어 정의 네트워크)은 현대 인터넷의 새로운 혁신적인 네트워크 아키텍처입니다. 핵심 기술인 OpenFlow는 네트워크 장비의 제어 평면과 데이터 평면을 분리하여 네트워크 트래픽을 유연하게 제어할 수 있는 좋은 플랫폼을 제공합니다. 네트워크 및 애플리케이션. Mininet은 경량 소프트웨어 정의 네트워크 및 테스트 플랫폼으로, 경량 가상화 기술을 사용하여 단일 시스템을 원하는 커널 시스템과 사용자 코드를 실행하는 완전한 네트워크처럼 보이게 합니다. SDN 네트워크 시스템은 OpenFlow 및 OpenvSwith와 같은 다양한 프로토콜을 지원합니다. Mininet은 또한 동일한 컴퓨터에서 완전한 네트워크 호스트, 링크 및 스위치를 시뮬레이션할 수 있으며 특히 OpenFlow 및 SDN 기술을 사용하는 대화형 개발, 테스트 및 데모를 용이하게 합니다. 이 프로세스 가상화 플랫폼에서 실제 환경으로 코드를 마이그레이션하는 것도 가능합니다.
Mininet에서 구현한 기능Mininet의 설치 방법은 Git 소스 코드와 내장된 설치 스크립트를 통해 비교적 간단합니다. 여기서는 OpenFlow와 같은 모든 Mininet 관련 패키지의 기본 설치를 사용합니다. POX 및 기타 도구는 기본적으로 현재 파일에 저장됩니다.
<br>
# git 클론 git://github.com/mininet/mininet<br>
# CD 미니넷/util/<br>
# ./install.sh -a<br>
#ls<br>
mininet of-dissector oflops oftest 오픈플로우 pox<br>
그림 1. 간단한 네트워크 예제 다이어그램
Mininet은 사용자 정의 네트워크를 지원하므로 다음은 그림 1과 같은 간단한 네트워크 예입니다. Mininet 네트워크 시스템에 직접 mn 명령을 입력하여 이 시스템에 단일 레이어 토폴로지 네트워크를 생성합니다. 이 시스템에서 두 개의 호스트와 하나의 호스트가 생성됩니다. 기본 스위치이며 컨트롤러와 스위치가 활성화됩니다. 이와 동시에 net 명령을 통해 링크 상태도 확인할 수 있습니다. 먼저 Mininet 시스템에서 웹 서버와 클라이언트를 활성화하는 등의 예를 간략하게 나열합니다.
<br>
#mn<br>
*** 네트워크 만들기<br>
*** 컨트롤러 추가<br>
*** 호스트 추가:<br>
h1 h2<br>
*** 스위치 추가:<br>
s1<br>
*** 링크 추가:<br>
(h1, s1) (h2, s1)<br>
***호스트 구성<br>
h1 h2<br>
*** 컨트롤러 시작<br>
*** 스위치 1개 시작<br>
s1<br>
*** CLI 시작:<br>
미니넷><br>
웹 서비스 활성화 및 비활성화
Mininet 환경에서는 웹 서버 구축이 쉽습니다. 아래 예시를 보면, Host1에서 웹 서버가 구축되고, 다른 호스트로부터 웹 서버로 HTTP 요청을 받는 것을 볼 수 있습니다.
<br>
mininet> h1 python -m SimpleHTTPServer 80 & #호스트 h1에서 웹 서비스 활성화<br>
mininet> h2 wget -O - h1 # 호스트 h2에서 h1 웹사이트 콘텐츠 다운로드<br>
--2013-11-04 00:05:40-- http://10.0.0.1/<br>
10.0.0.1:80으로 연결 중... 연결되었습니다.<br>
HTTP 요청이 전송되었으며 응답을 기다리는 중... 200 OK<br>
......<br>
길이: 760 [text/html<br>
<br>
<title> /</title>
0K 100% 1.65M=0초
2013-11-04 00:05:40 (1.65MB/s) - stdout [760/760]
mininet> h1 kill %python # 웹 프로세스 종료
10.0.0.2 - - [2013년 11월 4일 00:05:40] "GET / HTTP/1.1" 200 -
bash: 23행: kill: python: 모호한 작업 사양
핑 테스트
Mininet 시스템에서는 두 호스트 간의 상호 연결 테스트가 구현됩니다.
<br>
미니넷> h1 ping -c4 h2<br>
PING 10.0.0.2 (10.0.0.2) 56(84)바이트의 데이터입니다.<br>
10.0.0.2에서 64바이트: icmp_req=1 ttl=64 시간=1.55 ms<br>
10.0.0.2에서 64바이트: icmp_req=2 ttl=64 time=0.094 ms<br>
10.0.0.2에서 64바이트: icmp_req=3 ttl=64 time=0.075 ms<br>
10.0.0.2에서 64바이트: icmp_req=4 ttl=64 time=0.071 ms
--- 10.0.0.2 핑 통계 ---
4개 패킷 전송, 4개 수신, 패킷 손실 0%, 시간 3006ms
rtt 최소/평균/최대/mdev = 0.071/0.448/1.553/0.638ms
노드 및 링크 보기
<br>
미니넷>노드<br>
사용 가능한 노드는 다음과 같습니다:<br>
c0 h1 h2 s1<br>
미니넷>넷<br>
h1 h1-eth0:s1-eth1<br>
h2 h2-eth0:s1-eth2<br>
s1 lo: s1-eth1:h1-eth0 s1-eth2:h2-eth0<br>
c0<br>
Mininet은 mininet/custom 디렉토리에 예제가 제공됩니다. mytopo가 topo-2sw-2host.py 파일에 정의된 경우 --topo 옵션을 통해 이 토폴로지의 사용을 지정할 수 있습니다.
그림 2. 사용자 정의 토폴로지 예
Mininet은 매개변수화된 토폴로지도 지원하므로 Python 코드를 통해 유연한 토폴로지를 생성할 수 있으며, 전달된 사용자 정의 매개변수에 따라 구성할 수도 있고 여러 환경에서 재사용할 수도 있습니다. 코드의 일반적인 구조와 의미는 다음과 같습니다. .
#!/usr/bin/python<br>
mininet.net에서 Mininet 가져오기
mininet.util에서 dumpNodeConnections를 가져옵니다
mininet.log에서 setLogLevel을 가져옵니다
def __init__(self, n=2, **opts):
Topo.__init__(self, **opts)
switch = self.addSwitch('s1') # 토폴로지에 스위치 추가
범위(n)의 h에 대해:
호스트 = self.addHost('h%s' % (h + 1)) # 토폴로지에 호스트 추가
self.addLink(host, switch) #양방향 연결 토폴로지 추가
topo = 싱글스위치Topo(n=4)
net = Mininet(topo) #네트워크를 생성하고 관리하는 메인 클래스
net.start() #토폴로지 네트워크 시작
"호스트 연결 덤프 중"을 인쇄하세요
dumpNodeConnections(net.hosts) #파일 연결 덤프
"네트워크 연결 테스트 중"을 인쇄하세요
net.pingAll() #모든 노드가 서로 상호 연결을 테스트합니다
net.stop() #네트워크를 중지하세요
setLogLevel('info') #Mininet 기본 출력 레벨을 설정합니다. info를 설정하면 유용한 정보가 제공됩니다
간단한테스트()
# 파이썬 테스트-single.py<br>
*** 네트워크 만들기<br>
*** 컨트롤러 추가<br>
*** 호스트 추가:<br>
h1 h2 h3 h4<br>
*** 스위치 추가:<br>
s1<br>
*** 링크 추가:<br>
(h1, s1) (h2, s1) (h3, s1) (h4, s1)<br>
***호스트 구성<br>
h1 h2 h3 h4<br>
*** 컨트롤러 시작<br>
*** 스위치 1개 시작<br>
s1<br>
호스트 연결 덤프<br>
h1 h1-eth0:s1-eth1<br>
h2 h2-eth0:s1-eth2<br>
h3 h3-eth0:s1-eth3<br>
h4 h4-eth0:s1-eth4<br>
네트워크 연결 테스트<br>
*** 핑: 핑 도달 가능성 테스트<br>
h1 -> h2 h3 h4<br>
h2 -> h1 h3 h4<br>
h3 -> h1 h2 h4<br>
h4 -> h1 h2 h3<br>
*** 결과: 0% 감소(12/12 수신)<br>
mn --innamespace
# mn --innamespace --사용자 전환<br>
*** 네트워크 만들기<br>
*** 컨트롤러 추가<br>
*** 호스트 추가:<br>
h1 h2<br>
*** 스위치 추가:<br>
s1<br>
*** 링크 추가:<br>
(h1, s1) (h2, s1)<br>
c0 <br> s1
*** 제어 네트워크 테스트<br>
s1 -> c0<br>
c0 -> s1<br>
*** 결과: 0% 하락(2/2 수신)<br>
h1 h2
*** 컨트롤러 시작
*** 스위치 1개 시작
s1
*** CLI 시작:
표 1. 미니넷 공통 명령어
위 내용은 SDN 네트워크 시스템의 미니넷의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!