310 likes | 448 Views
ENVI-based OpenFlow GUI v.0.5. Sungho Shin, Namgon Kim, and Juwon Park Networked Media Lab. GIST, Korea May 11, 2010. Contents. Goals Drag & Drop Flow Management Flow Monitoring Testbed Configuration Networking service UI. GOALS. 3. NetOpen RA. ENVI-based OpenFlow GUI. Drag & Drop.
E N D
ENVI-based OpenFlow GUIv.0.5 Sungho Shin, Namgon Kim, and Juwon Park Networked Media Lab. GIST, Korea May 11, 2010
Contents • Goals • Drag & Drop • Flow Management • Flow Monitoring • Testbed Configuration • Networking service UI
GOALS 3
Level 1 • End1과 End2사이의 Path 목록은제공된다고가정 • Level 2 • End1과 End2사이의 Path 목록을구하는함수제공
P1 P1 Topology 01 • Available Paths between End01 and End02 • Path 1: A-C • Path 2: A-B-C End01 End02 B A C
Topology 01 - 내부로직 • 기본 로직 • OpenFlow 마다 고유의 id (datapath id)을 가지고 있음. • 플로우를 OpenFlow 노드로 drag & drop & mouse hover를 하였을 경우 id를 비교하여 다른 플로우의 경로로 변경 • Case1: Path 1에서 Path2로의플로우변경 • 조건: A-C 사이의플로우를 select하여 OpenFlow 노드로 drag하였을 경우 • B노드로 hover : B노드의 dpid와 비교 • if(gm.getHovered().toSting().equals(“ b의 dpid) : 참이면 변경 메세지 실행 • Case2: Path 2에서 Path1로의 플로우 변경 • 조건 : A-B 사이, B-C의 사이 플로우를 select하여 OpenFlow 노드로 drag하였을 경우 • A노드 또는 C노드로 hover : A노드 또는 C노드의 dpid 비교 • else if(gm.getHovered().toString().equals(“a의 dpid”)|| gm.getHovered().toString().equals(“c의 dpid”)) : 참이면 변경 메세지 실행 • Case3:나머지 조건의 경우 • 잘못된 플로우의 변경 조작으로 간주하여, System error메세지 출력
P1 P1 Topology 02 • Available Paths between End01 and End02 • Path 1: A-C-E • Path 2: A-B-C-E • Path 3: A-C-D-E • Path 4: A-B-C-D-E • Question • Flow를 Path1에서 Path2로이동시키려하는경우, 화면상에는어떻게표시되는가? (1)인가? (2)인가? 왜그렇게되는가? • 즉, 프로그램내부적으로가능한경로의목록은제공되었다고가정했을때그중어느것을선택할것인가의문제임 End02 End01 B D (2) A C E (1)
Topology 02 - 내부로직 • 현재의 Drag/Drop은 one hop 단위로제공된다고이해됨 • Case1: Path 1에서 Path2로의플로우변경 • 이경우는 (1)의경우가됩니다. 조건은즉 A-C 사이의플로우를 select하여 B노드로 drag하였을경우입니다. • Case2: Path 1에서 Path3로의플로우변경 • 이경우의조건은 C-E 사이의플로우를 select하여 D노드로 drag하였을경우입니다. • Case3: Path 1에서 Path4로의플로우변경 • 이경우의조건은 A-C사이의플로우를 select하여 B노드로 drag하여 path2로변경후, C-E 사이의플로우를 select하고 D노드로 drag하여 Path4로변경입니다. • 또는 C-E사이의플로우를 select하고 D노드로 drag하여, Path3로변경후, A-C사이의플로우를 select하여 B노드로 drag하여 Path4로변경합니다. • 두번에걸쳐서진행해야한다는것으로이해됨 • 각 Case에서의조건이외서동작이되지않게하는겁니다. • 잘못된 동작으로 간주하고, 변경 메세지 전달을 하지 않으며, system error메세지 출력
Topology 02 - 구현 • 이를위해서는 • 각 OpenFlow id (OpenFlow switch id로수정) • 각노드사이에형성된 flow id (OpenFlow switch 사이에형성된 flow id로수정) • 내부적인가능한경로의목록작성(이건이미가정에서제공된다고했음) • 현재 OpenFlow Switch id(고정값)만을이용해서 Path의경로를변경해주는방법을진행하였습니다. • OpenFlow switch라고표현 • 예를들면 • Path1에서 Path2로의변경은 (어떤위치)에있는플로우를 select해서 B 노드로 drag하였을경우변경 • Path1에서 Path3으로의변경은 (어떤위치)에있는플로우를 select해서 D노드로 drag하였을경우변경 • Question) 선택된 flow의 id는알지못하는가? • 플로우의 id를적용하지않은이유는플로우의 id정보가고정적인것이아니라, 플로우가생길때마다변경이되기때문입니다. (즉예를들면 A-C사이의플로우의 id가아니라, A-C사이에플로우가생성될때마다 id가변경이됩니다.) • Question) 만약 flow가일정시간이상지속된다고가정하면, flow id가고정이라고가정할수있나? • 이부분은차후에생각을좀더해봐야겠습니다. • 금일까지 OpenFlow id를이용해변경하는방법을적용하였고, • 각 OpenFlow id로 drag하였을경우 3의내용을적용하는부분을내일진행할예정입니다.
P1 P1 Topology 03 • Available Paths between End01 and End02 • Path 1: A-B-C-D • Path 2: A-E-F-H-D • Path 3: A-E-G-H-D • Question • Flow를 Path3에서 Path2로이동시키려하는경우, 화면상에는 (1)에서 (2)로표현되는가? • 또 Path2에서 Path1으로이동시키는경우화면상에 (2)에서 (3)으로표현하는것이가능한가? • 그리고, 화면상에보이는것은사용자의 drag액션에대한결과이고, 실제토폴로지에반영되는것은 drop 액션의결과인데이를구별하여동작하도록구현되었는가? End02 End01 B C (3) (2) F A D E H (1) G
P1 P2 P1 P2 Topology X End01 End02
Google Map Example • http://maps.google.com/maps?f=d&source=embed&saddr=Europa+Dr,+Chapel+Hill,+Orange,+North+Carolina+27514&daddr=35.924853,-79.035044+to:218+Conner+Dr,+Chapel+Hill,+NC+27514&hl=en&geocode=FfMgJAIdUgBK-ykXJRX4ucKsiTHuLtOE3TPLYw%3B%3BFZdFJAId0xtK-ymxQGObrcKsiTG9p3Hfi1e3XQ&mra=dpe&mrcr=0&mrsp=1&sz=15&via=1&sll=35.927425,-79.034&sspn=0.019495,0.038581&ie=UTF8&ll=35.927425,-79.034&spn=0.019495,0.038581
Daum Map Example • http://local.daum.net/map/index.jsp?SP=RIS&sX=463590&sY=480672&eX=466301&eY=477891&map_type=TYPE_MAP&map_hybrid=true&sName=%B1%A4%C1%D6%B0%FA%C7%D0%B1%E2%BC%FA%BF%F8&eName=%B7%D4%B5%A5%B8%B6%C6%AE+%C3%B7%B4%DC%C1%A1
Flow Management • 각 스위치의 flow table entry에는 동일한 정보가 들어가지만, 각 스위치에서는 이를 다른 id로 관리한다 • Controller 나 GUI 입장에서 Flow들을 manage하기 위해 id를 할당해야 한다 • 일단은 현재 GUI에 이런 management가 어떻게 이루어지고 있는지 파악해야 한다 17
Wish List • 각스위치의 flow 목록 • 각스위치를선택시스위치의정보와함께스위치를통과하는 flow 목록을표현 • Flow Table 정보를가져올수있는가? • Flow Table의정보를수집방법 • 1. 각 OpenFlow switch의 ‘./dpctl dump-flows’를통해수집 • 2. NOX를통한방법 • 1과 2의구체적인방법?? • Flow별네트워크특성 • 대역폭사용량 (bps) • Loss나 delay 확인가능한가? • Java의 sigar 라이브러리를활용하는방법 • sigar를통해 cup, memory, tx,rx의정보등을수집할수가있습니다. • sigar의어떤목록이있고, 어떤목록을활용할것인가? • 토폴로지전체의 flow 목록 • 발생된 flow의목록을표현 • End-to-End network monitoring • Available bandwidth ?? • End-to-End flow monitoring • Delay, loss ?? (End를이용한제어솔루션을통해서가능, ping, iperf) • End-to-End Network monitoring은충남대쪽의정보를 GUI에어떤식으로표현을할것인가? • End-to-End flow monitoring은생각을좀더해봐야할것같습니다.
Wish List • 테스트베드내의모든머신에대한 • 원격접속/시동/재시동/종료/ • 프로세스시작/종료 • Controller • FlowVisor • OFSwitch • Endhost • 스위치의목록선택을통한새로운 topology 구성 • Flowvisor 이용 • Tunneling • 사용할 Tunneling solution 선택및설정
장치의 추가/제거 • 새로운 장치를 추가 (host, netfpga, of switch, controller) • SNAC처럼 탭을 여러개 만들어서 • 한 탭에는 장치의 목록을 보여주고 (추가/제거도 여기에서) • 다른 탭에서는 장치들 사이의 연결관계를 보여줌 • 해당 장치가 다른 장치와 어떻게 연결되어있는지의 정보는 controller를 통해서 알 수 있음 손으로 GUI의 모습을 그려보자 23
장치목록 tab 24
플로우 목록 tab 25
Physical network substrate tab & Virtual Network tab • Physical network substrate tab • 모든 switch와 end host가 어떻게 연결되어 있는지를 표현 • Flowvisor와 Controller도 표현됨 • 이 탭에서 switch들을 선택하고, 이들을 flowvisor를 통해 controller와 연결하여 virtual network를 생성 • Virtual network tab • Flowvisor를 통해 구성된 가상의 네트워크를 표현하고 관리 26
Review • Ngkim> testbed configuration ui 로서 필요한 기능들을 좀 더 구체적으로 적어 보았음 • 현재 적어놓은 것처럼 바로 구현하려고 하기보다는 단위 기능별로 구현하고, 추후에 통합하는 형태로 진행 • 단위 기능에서도 일단 command line, 그 후 gui • 구현할 기능 중 우선 순위를 결정할 필요가 있음 27
Networking Service UI • NetOpen UI Software (Version 0.2) • NetOpen RA의 Software-defined (Programmable & Virtualized) Networking 서비스에 대한 가시화 (모니터링 결과) 및 제어를 위한 사용자 인터페이스 • (Version 0.1.1) Packet Routing Service 개발 • (Version 0.1.2) Tunneling Service 개발 • (Version 0.1.3) Packet Routing Service와 Tunneling Serivce의 연동 • 목표 • 가장 먼저 packet routing service를 개발하여 OF substrate를 통해 연결된 end 사이의 연결성을 제공하고, • 다음으로 tunneling service를 개발하여 직접 연결되지 않은 OF substrate 사이의 연결을 제공하는 방법을 제공하며, • 최종으로는 이 둘을 필요에 따라 수동으로 연동하여 확장된 네트워크의 연결성을 제공 29