...
전공교육 | 개발실습 | 부서교육 | 부서업무지원 | 기타 | |
---|---|---|---|---|---|
P | 과학데이터교육 일 3.2시간 이상 수강 | omz 설치 및 실습, snmp설치 및 실습, influx DB 설치 및 실습, mininet으로 만든 sdn의 snmp 데이터 가시화하기 | 우수성과취합 | ||
D | |||||
C | |||||
A |
일일회고
23/02/06
- Fact : oh-my-zsh와 snmp를 설치 및 실습, mininet 토폴로지 구성을 위해 mininet python API 설명서 참조
- Feelings : oh-my-zsh의 자동완성이 너무나도 편리했다.
- Finding : snmp가 네트워크 장비들을 관리하기 위한 프로토콜 이라는 것을 알았고 mininet prthon api를 보면서 mininet 토폴로지 구성 방법에 대해 알았다.
- Future Action Plan : mininet python api를 이용해서 호스트간의 지속적인 ping을 보내는 토폴로지 구성, influxDB 설치
- Feedbacks : -
...
- Fact : mininet python api를 이용한 호스트간 지속적인 ping 보내는 간단한 토폴로지 구성, mininet controller인 ryu 컨트롤러 탐색, telegraf의 .conf 파일을 수정해보면서 influxdb에 다양한 데이터 저장 실습
- Feelings : 네트워크가 정말 복잡하다는 것을 다시 깨달았다.
- Finding : telegraf의 설정에 따른 snmp저장 형식을 배웠다. mininet의 기본 switch인 ovSwitch는 호스트 내에서 snmpd를 실행시킬수 없고 전체로 관리 된다
- Future Action Plan : 만든 토폴로지에 snmp를 구동하고 telegraf, influxdb,grafana를 통해 네트워크 모니터링
- Feedbacks : -
23/02/09
- Fact : ryu wiki를 보면서 컨트롤러 실습, mininet으로 만든 sdn의 snmp 데이터 grafana에 시각화
- Feelings : 알면 알수록 더욱 미궁속으로 빠져들어가는 느낌이다.
- Finding : ovSwitch를 사용한 토폴로지에서는 snmp가 리눅스에서 실행되기 때문에 telegraf의 설정파일을 수정하고 snmpd와 telegraf, influxdb를 모두 실행시키면 mininet을 켯을 때 자동으로 토폴로지의 호스트에 대한 iftable이 잡히게 되서 알아서 influxdb에 저장되게 된다.
- Future Action Plan : 토폴로지의 switch의 정보가 원래 snmp에 안잡히는 건지를 찾아봐야겠다.
- Feedbacks : -
Memo
23/02/06
- 참고사항
- snmp란? https://ja-gamma.tistory.com/entry/SNMP-%EA%B0%9C%EB%85%90%EB%8F%99%EC%9E%91%EC%9B%90%EB%A6%AC → 네트워크 장비들을 관리하기 위해 장비들의 정보를 주고받을 프로토콜이 필요한데 이에 쓰이는 프로토콜
- mininet으로 sdn 구성하기 https://seoneu.tistory.com/9 → mininet으로 간단한 sdn 구성
- 네트워크 마스크 https://kldp.org/node/127933
- mininet Python API 설명서 https://github.com/mininet/mininet/wiki/Introduction-to-Mininet → 파이썬으로 mininet 토폴로지 구성
- 동영상 참고
...
- 참고사항
- ovSwith로 구성한 mininet에서의 snmp 구동 https://discuss.openvswitch.narkive.com/WEURLcpB/ovs-snmp-agent-on-open-vswitch → ovSwitch는 snmp을 지원하지 않기 때문에 리눅스에 snmpd를 실행시키고 해당 인터페이스들의 정보를 받아볼 수 있다.
23/02/09
- 참고사항
- telegraf snmp 설정 https://lkhill.com/telegraf-influx-grafana-network-stats/
- ryu 컨트롤러 실행 https://book.ryu-sdn.org/ko/html/switching_hub.html
배운 것 및 기억해야할 것
지속적인 핑을 주고받는 간단한 토폴로지
코드 블럭 |
---|
#!/usr/bin/python from mininet.net import Mininet from mininet.node import Controller from mininet.cli import CLI from mininet.link import Intf from mininet.log import setLogLevel, info from mininet.topo import Topo class tmpnet(Topo): def build(self, n=2): info( '*** Add switches\n') switch = self.addSwitch('s1') for h in range(n): info( '*** Add host '+str(h)+' and Link Siwtch\n') host = self.addHost('h%s'%(h+1)) self.addLink(host, switch) if __name__ == '__main__': setLogLevel( 'info' ) topo=tmpnet() net=Mininet(topo=topo) net.start() hosts=net.hosts print(hosts) hosts[0].cmd("ping "+hosts[1].IP()+" &") hosts[1].cmd("ping "+hosts[0].IP()+" &") CLI(net) net.stop() |
snmp 정보를 influxdb에 저장하는 telegraf.conf
코드 블럭 |
---|
[[outputs.influxdb]]
#influxdb에 데이터베이스를 만들고 해당 정보를 기입한다.
urls = ["http://127.0.0.1:8086"]
database = "telegrafdb"
username = "telegraf"
password = "12345"
[[inputs.snmp]]
agents = [ "localhost" ]
version = 2
community = "public"
interval = "10s"
timeout = "10s"
retries = 3
[[inputs.snmp.field]]
name = "hostname"
oid = "RFC1213-MIB::sysName.0"
is_tag = true
# IF-MIB::ifTable contains counters on input and output traffic as well as errors and discards.
[[inputs.snmp.table]]
name = "interface"
inherit_tags = [ "hostname" ]
oid = "IF-MIB::ifTable"
# Interface tag - used to identify interface in metrics database
[[inputs.snmp.table.field]]
name = "ifDescr"
oid = "IF-MIB::ifDescr"
is_tag = true |
mininet + ryu controller
코드 블럭 |
---|
sudo mn --controller remote #외부 컨트롤러를 사용하여 mininet 실행
sudo python3 /usr/local/bin/ryu-manager --verbose ~/ryu/ryu/app/simple_monitor_13.py # ryu의 예제 중 openflow1.3 을 사용하여 간단한 트래픽 모니터 컨트롤러를 실행 |