码迷,mamicode.com
首页 > Web开发 > 详细

Mininet实验 动态改变转发规则

时间:2018-12-31 19:14:45      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:art   运行   elf   pid   tps   image   oca   prot   time()   

介绍

拓扑如下:

技术分享图片

在该环境下,假设H1 ping H4,初始的路由规则是S1-S2-S5,一秒后,路由转发规则变为S1-S3-S5,再过一秒,规则变为S1-S4-S5,然后再回到最初的转发规则S1-S2-S5。通过这个循环调度的例子动态地改变交换机的转发规则。


pox脚本

pox脚本lab_controller.py

不得不说这脚本问题是真的多。

  1 from pox.core import core
  2 
  3 import pox.openflow.libopenflow_01 as of
  4 
  5 from pox.lib.util import dpidToStr
  6 
  7 from pox.lib.addresses import IPAddr, EthAddr
  8 
  9 from pox.lib.packet.arp import arp
 10 
 11 from pox.lib.packet.ethernet import ethernet, ETHER_BROADCAST
 12 
 13 from pox.lib.packet.packet_base import packet_base
 14 
 15 from pox.lib.packet.packet_utils import *
 16 
 17 import pox.lib.packet as pkt
 18 
 19 from pox.lib.recoco import Timer
 20 
 21 import time
 22 
 23 log = core.getLogger()
 24 
 25 s1_dpid = 0
 26 
 27 s2_dpid = 0
 28 
 29 s3_dpid = 0
 30 
 31 s4_dpid = 0
 32 
 33 s5_dpid = 0
 34 
 35 s1_p1 = 0
 36 
 37 s1_p4 = 0
 38 
 39 s1_p5 = 0
 40 
 41 s1_p6 = 0
 42 
 43 s2_p1 = 0
 44 
 45 s3_p1 = 0
 46 
 47 s4_p1 = 0
 48 
 49 pre_s1_p1 = 0
 50 
 51 pre_s1_p4 = 0
 52 
 53 pre_s1_p5 = 0
 54 
 55 pre_s1_p6 = 0
 56 
 57 pre_s2_p1 = 0
 58 
 59 pre_s3_p1 = 0
 60 
 61 pre_s4_p1 = 0
 62 
 63 turn = 0
 64 
 65 
 66 def getTheTime():  # fuction to create a timestamp
 67 
 68     flock = time.localtime()
 69 
 70     then = "[%s-%s-%s" % (str(flock.tm_year),
 71                           str(flock.tm_mon), str(flock.tm_mday))
 72 
 73     if int(flock.tm_hour) < 10:
 74 
 75         hrs = "0%s" % (str(flock.tm_hour))
 76 
 77     else:
 78 
 79         hrs = str(flock.tm_hour)
 80 
 81     if int(flock.tm_min) < 10:
 82 
 83         mins = str(flock.tm_min)
 84 
 85         secs = "0%s" % (str(flock.tm_sec))
 86 
 87     else:
 88 
 89         secs = str(flock.tm_sec)
 90 
 91     then += "]%s.%s.%s" % (hrs, mins, secs)
 92 
 93     return then
 94 
 95 
 96 def _timer_func():
 97     global s1_dpid, s2_dpid, s3_dpid, s4_dpid, s5_dpid, turn
 98 
 99     # print getTheTime(), "sent the port stats request to s1_dpid"
100 
101     if turn == 0:
102         msg = of.ofp_flow_mod()
103 
104         msg.command = of.OFPFC_MODIFY_STRICT
105 
106         msg.priority = 100
107 
108         msg.idle_timeout = 0
109 
110         msg.hard_timeout = 0
111 
112         msg.match.dl_type = 0x0800
113 
114         msg.match.nw_dst = "10.0.0.4"
115 
116         msg.actions.append(of.ofp_action_output(port=5))
117 
118         core.openflow.getConnection(s1_dpid).send(msg)
119 
120         turn = 1
121 
122         return
123 
124     if turn == 1:
125         msg = of.ofp_flow_mod()
126 
127         msg.command = of.OFPFC_MODIFY_STRICT
128 
129         msg.priority = 100
130 
131         msg.idle_timeout = 0
132 
133         msg.hard_timeout = 0
134 
135         msg.match.dl_type = 0x0800
136 
137         msg.match.nw_dst = "10.0.0.4"
138 
139         msg.actions.append(of.ofp_action_output(port=6))
140 
141         core.openflow.getConnection(s1_dpid).send(msg)
142 
143         turn = 2
144         return
145 
146     if turn == 2:
147         msg = of.ofp_flow_mod()
148 
149         msg.command = of.OFPFC_MODIFY_STRICT
150 
151         msg.priority = 100
152 
153         msg.idle_timeout = 0
154 
155         msg.hard_timeout = 0
156 
157         msg.match.dl_type = 0x0800
158 
159         msg.match.nw_dst = "10.0.0.4"
160 
161         msg.actions.append(of.ofp_action_output(port=4))
162 
163         turn = 0
164 
165         return
166 
167 
168 def _handle_portstats_received(event):
169     global s1_p1, s1_p4, s1_p5, s1_p6, s2_p1, s3_p1, s4_p1
170 
171     global pre_s1_p1, pre_s1_p4, pre_s1_p5, pre_s1_p6, pre_s2_p1, pre_s3_p1, pre_s4_p1
172 
173     if event.connection.dpid == s1_dpid:
174 
175         for f in event.stats:
176 
177             if int(f.port_no) < 65534:
178 
179                 if f.port_no == 1:
180                     pre_s1_p1 = s1_p1
181 
182                     s1_p1 = f.rx_packets
183 
184                 if f.port_no == 4:
185                     pre_s1_p4 = s1_p4
186 
187                     s1_p4 = f.tx_packets
188 
189                     # s1_p4=f.tx_bytes
190 
191                 if f.port_no == 5:
192                     pre_s1_p5 = s1_p5
193 
194                     s1_p5 = f.tx_packets
195 
196                 if f.port_no == 6:
197                     pre_s1_p6 = s1_p6
198 
199                     s1_p6 = f.tx_packets
200 
201         for f in event.stats:
202 
203             if int(f.port_no) < 65534:
204 
205                 if f.port_no == 1:
206                     pre_s2_p1 = s2_p1
207 
208                     s2_p1 = f.rx_packets
209 
210                     # s2_p1=f.rx_bytes
211 
212     if event.connection.dpid == s3_dpid:
213 
214         for f in event.stats:
215 
216             if int(f.port_no) < 65534:
217 
218                 if f.port_no == 1:
219                     pre_s3_p1 = s3_p1
220 
221                     s3_p1 = f.rx_packets
222 
223     if event.connection.dpid == s4_dpid:
224 
225         for f in event.stats:
226 
227             if int(f.port_no) < 65534:
228 
229                 if f.port_no == 1:
230                     pre_s4_p1 = s4_p1
231 
232                     s4_p1 = f.rx_packets
233 
234 
235 def _handle_ConnectionUp(event):
236     global s1_dpid, s2_dpid, s3_dpid, s4_dpid, s5_dpid
237 
238     print "ConnectionUp: ", dpidToStr(event.connection.dpid)
239 
240     # remember the connection dpid for switch
241 
242     for m in event.connection.features.ports:
243 
244         if m.name == "s1-eth1":
245 
246             s1_dpid = event.connection.dpid
247 
248             print "s1_dpid=", s1_dpid
249 
250         elif m.name == "s2-eth1":
251 
252             s2_dpid = event.connection.dpid
253 
254             print "s2_dpid=", s2_dpid
255 
256         elif m.name == "s3-eth1":
257 
258             s3_dpid = event.connection.dpid
259 
260             print "s3_dpid=", s3_dpid
261 
262         elif m.name == "s4-eth1":
263 
264             s4_dpid = event.connection.dpid
265 
266             print "s4_dpid=", s4_dpid
267 
268         elif m.name == "s5-eth1":
269 
270             s5_dpid = event.connection.dpid
271 
272             print "s5_dpid=", s5_dpid
273 
274     if s1_dpid <> 0 and s2_dpid <> 0 and s3_dpid <> 0 and s4_dpid <> 0:
275         Timer(1, _timer_func, recurring=True)
276 
277 
278 def _handle_PacketIn(event):
279     global s1_dpid, s2_dpid, s3_dpid, s4_dpid, s5_dpid
280 
281     packet = event.parsed
282 
283     if event.connection.dpid == s1_dpid:
284 
285         a = packet.find(arp)
286 
287         if a and a.protodst == "10.0.0.4":
288             msg = of.ofp_packet_out(data=event.ofp)
289 
290             msg.actions.append(of.ofp_action_output(port=4))
291 
292             event.connection.send(msg)
293 
294         if a and a.protodst == "10.0.0.5":
295             msg = of.ofp_packet_out(data=event.ofp)
296 
297             msg.actions.append(of.ofp_action_output(port=5))
298 
299             event.connection.send(msg)
300 
301         if a and a.protodst == "10.0.0.6":
302             msg = of.ofp_packet_out(data=event.ofp)
303 
304             msg.actions.append(of.ofp_action_output(port=6))
305 
306             event.connection.send(msg)
307 
308         if a and a.protodst == "10.0.0.1":
309             msg = of.ofp_packet_out(data=event.ofp)
310 
311             msg.actions.append(of.ofp_action_output(port=1))
312 
313             event.connection.send(msg)
314 
315         if a and a.protodst == "10.0.0.2":
316             msg = of.ofp_packet_out(data=event.ofp)
317 
318             msg.actions.append(of.ofp_action_output(port=2))
319 
320             event.connection.send(msg)
321 
322         if a and a.protodst == "10.0.0.3":
323             msg = of.ofp_packet_out(data=event.ofp)
324 
325             msg.actions.append(of.ofp_action_output(port=3))
326 
327             event.connection.send(msg)
328 
329         msg = of.ofp_flow_mod()
330 
331         msg.priority = 100
332 
333         msg.idle_timeout = 0
334 
335         msg.hard_timeout = 0
336 
337         msg.match.dl_type = 0x0800
338 
339         msg.match.nw_dst = "10.0.0.1"
340 
341         msg.actions.append(of.ofp_action_output(port=1))
342 
343         event.connection.send(msg)
344 
345         msg = of.ofp_flow_mod()
346 
347         msg.priority = 100
348 
349         msg.idle_timeout = 0
350 
351         msg.hard_timeout = 0
352 
353         msg.match.dl_type = 0x0800
354 
355         msg.match.nw_dst = "10.0.0.2"
356 
357         msg.actions.append(of.ofp_action_output(port=2))
358 
359         event.connection.send(msg)
360 
361         msg = of.ofp_flow_mod()
362 
363         msg.priority = 100
364 
365         msg.idle_timeout = 0
366 
367         msg.hard_timeout = 0
368 
369         msg.match.dl_type = 0x0800
370 
371         msg.match.nw_dst = "10.0.0.3"
372 
373         msg.actions.append(of.ofp_action_output(port=3))
374 
375         event.connection.send(msg)
376 
377         msg = of.ofp_flow_mod()
378 
379         msg.priority = 100
380 
381         msg.idle_timeout = 0
382 
383         msg.hard_timeout = 1
384 
385         msg.match.dl_type = 0x0800
386 
387         msg.match.nw_dst = "10.0.0.4"
388 
389         msg.actions.append(of.ofp_action_output(port=4))
390 
391         event.connection.send(msg)
392 
393         msg = of.ofp_flow_mod()
394 
395         msg.priority = 100
396 
397         msg.idle_timeout = 0
398 
399         msg.hard_timeout = 0
400 
401         msg.match.dl_type = 0x0800
402 
403         msg.match.nw_dst = "10.0.0.5"
404 
405         msg.actions.append(of.ofp_action_output(port=5))
406 
407         event.connection.send(msg)
408 
409         msg = of.ofp_flow_mod()
410 
411         msg.priority = 100
412 
413         msg.idle_timeout = 0
414 
415         msg.hard_timeout = 0
416 
417         msg.match.dl_type = 0x0800
418 
419         msg.match.nw_dst = "10.0.0.6"
420 
421         msg.actions.append(of.ofp_action_output(port=6))
422 
423         event.connection.send(msg)
424 
425 
426 
427     elif event.connection.dpid == s2_dpid:
428 
429         msg = of.ofp_flow_mod()
430 
431         msg.priority = 10
432 
433         msg.idle_timeout = 0
434 
435         msg.hard_timeout = 0
436 
437         msg.match.in_port = 1
438 
439         msg.match.dl_type = 0x0806
440 
441         msg.actions.append(of.ofp_action_output(port=2))
442 
443         event.connection.send(msg)
444 
445         msg = of.ofp_flow_mod()
446 
447         msg.priority = 10
448 
449         msg.idle_timeout = 0
450 
451         msg.hard_timeout = 0
452 
453         msg.match.in_port = 1
454 
455         msg.match.dl_type = 0x0800
456 
457         msg.actions.append(of.ofp_action_output(port=2))
458 
459         event.connection.send(msg)
460 
461         msg = of.ofp_flow_mod()
462 
463         msg.priority = 10
464 
465         msg.idle_timeout = 0
466 
467         msg.hard_timeout = 0
468 
469         msg.match.in_port = 2
470 
471         msg.match.dl_type = 0x0806
472 
473         msg.actions.append(of.ofp_action_output(port=1))
474 
475         event.connection.send(msg)
476 
477         msg = of.ofp_flow_mod()
478 
479         msg.priority = 10
480 
481         msg.idle_timeout = 0
482 
483         msg.hard_timeout = 0
484 
485         msg.match.in_port = 2
486 
487         msg.match.dl_type = 0x0800
488 
489         msg.actions.append(of.ofp_action_output(port=1))
490 
491         event.connection.send(msg)
492 
493 
494 
495     elif event.connection.dpid == s3_dpid:
496 
497         msg = of.ofp_flow_mod()
498 
499         msg.priority = 10
500 
501         msg.idle_timeout = 0
502 
503         msg.hard_timeout = 0
504 
505         msg.match.in_port = 1
506 
507         msg.match.dl_type = 0x0806
508 
509         msg.actions.append(of.ofp_action_output(port=2))
510 
511         event.connection.send(msg)
512 
513         msg = of.ofp_flow_mod()
514 
515         msg.priority = 10
516 
517         msg.idle_timeout = 0
518 
519         msg.hard_timeout = 0
520 
521         msg.match.in_port = 1
522 
523         msg.match.dl_type = 0x0800
524 
525         msg.actions.append(of.ofp_action_output(port=2))
526 
527         event.connection.send(msg)
528 
529         msg = of.ofp_flow_mod()
530 
531         msg.priority = 10
532 
533         msg.idle_timeout = 0
534 
535         msg.hard_timeout = 0
536 
537         msg.match.in_port = 2
538 
539         msg.match.dl_type = 0x0806
540 
541         msg.actions.append(of.ofp_action_output(port=1))
542 
543         event.connection.send(msg)
544 
545         msg = of.ofp_flow_mod()
546 
547         msg.priority = 10
548 
549         msg.idle_timeout = 0
550 
551         msg.hard_timeout = 0
552 
553         msg.match.in_port = 2
554 
555         msg.match.dl_type = 0x0800
556 
557         msg.actions.append(of.ofp_action_output(port=1))
558 
559         event.connection.send(msg)
560 
561 
562 
563     elif event.connection.dpid == s4_dpid:
564 
565         msg = of.ofp_flow_mod()
566 
567         msg.priority = 10
568 
569         msg.idle_timeout = 0
570 
571         msg.hard_timeout = 0
572 
573         msg.match.in_port = 1
574 
575         msg.match.dl_type = 0x0806
576 
577         msg.actions.append(of.ofp_action_output(port=2))
578 
579         event.connection.send(msg)
580 
581         msg = of.ofp_flow_mod()
582 
583         msg.priority = 10
584 
585         msg.idle_timeout = 0
586 
587         msg.hard_timeout = 0
588 
589         msg.match.in_port = 1
590 
591         msg.match.dl_type = 0x0800
592 
593         msg.actions.append(of.ofp_action_output(port=2))
594 
595         event.connection.send(msg)
596 
597         msg = of.ofp_flow_mod()
598 
599         msg.priority = 10
600 
601         msg.idle_timeout = 0
602 
603         msg.hard_timeout = 0
604 
605         msg.match.in_port = 2
606 
607         msg.match.dl_type = 0x0806
608 
609         msg.actions.append(of.ofp_action_output(port=1))
610 
611         event.connection.send(msg)
612 
613         msg = of.ofp_flow_mod()
614 
615         msg.priority = 10
616 
617         msg.idle_timeout = 0
618 
619         msg.hard_timeout = 0
620 
621         msg.match.in_port = 2
622 
623         msg.match.dl_type = 0x0800
624 
625         msg.actions.append(of.ofp_action_output(port=1))
626 
627         event.connection.send(msg)
628 
629 
630 
631     elif event.connection.dpid == s5_dpid:
632 
633         a = packet.find(arp)
634 
635         if a and a.protodst == "10.0.0.4":
636             msg = of.ofp_packet_out(data=event.ofp)
637 
638             msg.actions.append(of.ofp_action_output(port=4))
639 
640             event.connection.send(msg)
641 
642         if a and a.protodst == "10.0.0.5":
643             msg = of.ofp_packet_out(data=event.ofp)
644 
645             msg.actions.append(of.ofp_action_output(port=5))
646 
647             event.connection.send(msg)
648 
649         if a and a.protodst == "10.0.0.6":
650             msg = of.ofp_packet_out(data=event.ofp)
651 
652             msg.actions.append(of.ofp_action_output(port=6))
653 
654             event.connection.send(msg)
655 
656         if a and a.protodst == "10.0.0.1":
657             msg = of.ofp_packet_out(data=event.ofp)
658 
659             msg.actions.append(of.ofp_action_output(port=1))
660 
661             event.connection.send(msg)
662 
663         if a and a.protodst == "10.0.0.2":
664             msg = of.ofp_packet_out(data=event.ofp)
665 
666             msg.actions.append(of.ofp_action_output(port=2))
667 
668             event.connection.send(msg)
669 
670         if a and a.protodst == "10.0.0.3":
671             msg = of.ofp_packet_out(data=event.ofp)
672 
673             msg.actions.append(of.ofp_action_output(port=3))
674 
675             event.connection.send(msg)
676 
677         msg = of.ofp_flow_mod()
678 
679         msg.priority = 100
680 
681         msg.idle_timeout = 0
682 
683         msg.hard_timeout = 0
684 
685         msg.match.dl_type = 0x0800
686 
687         msg.match.nw_dst = "10.0.0.1"
688 
689         msg.actions.append(of.ofp_action_output(port=1))
690 
691         event.connection.send(msg)
692 
693         msg = of.ofp_flow_mod()
694 
695         msg.priority = 100
696 
697         msg.idle_timeout = 0
698 
699         msg.hard_timeout = 0
700 
701         msg.match.dl_type = 0x0800
702 
703         msg.match.nw_dst = "10.0.0.2"
704 
705         msg.actions.append(of.ofp_action_output(port=2))
706 
707         event.connection.send(msg)
708 
709         msg = of.ofp_flow_mod()
710 
711         msg.priority = 100
712 
713         msg.idle_timeout = 0
714 
715         msg.hard_timeout = 0
716 
717         msg.match.dl_type = 0x0800
718 
719         msg.match.nw_dst = "10.0.0.3"
720 
721         msg.actions.append(of.ofp_action_output(port=3))
722 
723         event.connection.send(msg)
724 
725         msg = of.ofp_flow_mod()
726 
727         msg.priority = 100
728 
729         msg.idle_timeout = 0
730 
731         msg.hard_timeout = 0
732 
733         msg.match.dl_type = 0x0800
734 
735         msg.match.nw_dst = "10.0.0.4"
736 
737         msg.actions.append(of.ofp_action_output(port=4))
738 
739         event.connection.send(msg)
740 
741         msg = of.ofp_flow_mod()
742 
743         msg.priority = 100
744 
745         msg.idle_timeout = 0
746 
747         msg.hard_timeout = 0
748 
749         msg.match.dl_type = 0x0800
750 
751         msg.match.nw_dst = "10.0.0.5"
752 
753         msg.actions.append(of.ofp_action_output(port=5))
754 
755         event.connection.send(msg)
756 
757         msg = of.ofp_flow_mod()
758 
759         msg.priority = 100
760 
761         msg.idle_timeout = 0
762 
763         msg.hard_timeout = 0
764 
765         msg.match.dl_type = 0x0800
766 
767         msg.match.nw_dst = "10.0.0.6"
768 
769         msg.actions.append(of.ofp_action_output(port=6))
770 
771         event.connection.send(msg)
772 
773 
774 def launch():
775     global start_time
776 
777     core.openflow.addListenerByName("PortStatsReceived", _handle_portstats_received)
778 
779     core.openflow.addListenerByName("ConnectionUp", _handle_ConnectionUp)
780 
781     core.openflow.addListenerByName("PacketIn", _handle_PacketIn)

 


mininet脚本

  1 #!/usr/bin/python
  2  
  3  
  4  
  5 from mininet.topo import Topo
  6  
  7 from mininet.net import Mininet
  8  
  9 from mininet.node import CPULimitedHost
 10  
 11 from mininet.link import TCLink
 12  
 13 from mininet.util import dumpNodeConnections
 14  
 15 from mininet.log import setLogLevel
 16  
 17 from mininet.node import Controller 
 18  
 19 from mininet.cli import CLI
 20  
 21 from functools import partial
 22  
 23 from mininet.node import RemoteController
 24  
 25 import os
 26  
 27  
 28  
 29  
 30  
 31 class MyTopo(Topo):
 32  
 33     "Single switch connected to n hosts."
 34  
 35     def __init__(self):
 36  
 37         Topo.__init__(self)
 38  
 39         s1=self.addSwitch(s1)
 40  
 41         s2=self.addSwitch(s2)
 42  
 43         s3=self.addSwitch(s3)
 44  
 45         s4=self.addSwitch(s4)
 46  
 47         s5=self.addSwitch(s5) 
 48  
 49         h1=self.addHost(h1)
 50  
 51         h2=self.addHost(h2)
 52  
 53         h3=self.addHost(h3)
 54  
 55         h4=self.addHost(h4)
 56  
 57         h5=self.addHost(h5)
 58  
 59         h6=self.addHost(h6)
 60  
 61          
 62  
 63         self.addLink(h1, s1, bw=1, delay=10ms, loss=0, max_queue_size=1000, use_htb=True)
 64  
 65         self.addLink(h2, s1, bw=1, delay=10ms, loss=0, max_queue_size=1000, use_htb=True) 
 66  
 67         self.addLink(h3, s1, bw=1, delay=10ms, loss=0, max_queue_size=1000, use_htb=True)
 68  
 69         self.addLink(s1, s2, bw=1, delay=10ms, loss=0, max_queue_size=1000, use_htb=True) 
 70  
 71         self.addLink(s1, s3, bw=1, delay=10ms, loss=0, max_queue_size=1000, use_htb=True) 
 72  
 73         self.addLink(s1, s4, bw=1, delay=10ms, loss=0, max_queue_size=1000, use_htb=True) 
 74  
 75         self.addLink(s2, s5, bw=1, delay=10ms, loss=0, max_queue_size=1000, use_htb=True) 
 76  
 77         self.addLink(s3, s5, bw=1, delay=10ms, loss=0, max_queue_size=1000, use_htb=True)  
 78  
 79         self.addLink(s4, s5, bw=1, delay=10ms, loss=0, max_queue_size=1000, use_htb=True) 
 80  
 81         self.addLink(s5, h4, bw=1, delay=10ms, loss=0, max_queue_size=1000, use_htb=True) 
 82  
 83         self.addLink(s5, h5, bw=1, delay=10ms, loss=0, max_queue_size=1000, use_htb=True) 
 84  
 85         self.addLink(s5, h6, bw=1, delay=10ms, loss=0, max_queue_size=1000, use_htb=True) 
 86  
 87  
 88  
 89 def perfTest():
 90  
 91     "Create network and run simple performance test"
 92  
 93     topo = MyTopo()
 94  
 95  
 96     net = Mininet(topo=topo, host=CPULimitedHost, link=TCLink, controller=partial(RemoteController, ip=127.0.0.1, port=6633))
 97  
 98     net.start()
 99  
100     print "Dumping host connections"
101  
102     dumpNodeConnections(net.hosts)
103  
104     h1,h2,h3=net.get(h1,h2,h3)
105  
106     h4,h5,h6=net.get(h4,h5,h6)
107  
108     h1.setMAC("0:0:0:0:0:1")
109  
110     h2.setMAC("0:0:0:0:0:2")
111  
112     h3.setMAC("0:0:0:0:0:3")
113  
114     h4.setMAC("0:0:0:0:0:4")
115  
116     h5.setMAC("0:0:0:0:0:5")
117  
118     h6.setMAC("0:0:0:0:0:6")
119  
120     CLI(net)
121  
122     net.stop()
123  
124  
125  
126 if __name__ == __main__:
127  
128     setLogLevel(info)
129  
130     perfTest()

 

 

如果是在不同的机器使用的pox将控制器ip修改到对应pox所在的ip,我使用的是同一台计算机上的就直接修改成了127.0.0.1。


然后运行pox脚本再运行mininet脚本,得到下图:

技术分享图片

技术分享图片

mininet运行没啥问题,不过提示0丢包率是非法的emmmmm。 然后pox的内容有些奇怪,咋感觉少了一句的感觉。强迫症,到脚本里填上。在第260行填上一行输出。得到下图:

技术分享图片

鉴于有人说,h1 ping不到 h4,就先pingall一下,得到下图:

技术分享图片

一切正常。 然后继续实验,在mininet输入h1 ping -i 0.1 h4 每秒从h1传送10个包到h4。

技术分享图片

mininet界面到时挺正常的,但是pox界面emmm一片死寂,所以我反复了几次,结果没有变化。估计不是pox出问题了,就是pox脚本写的有问题吧,难不成是我实验环境有问题?

由于对脚本内容了解的不够,所以我先尝试了一下使用poxdesk图形界面来显示结果。先安装一下。

1 cd ./pox/ext
2 git clone https://github.com/MurphyMc/poxdesk
3 cd poxdesk
4 wget http://downloads.sourceforge.net/qooxdoo/qooxdoo-2.0.2-sdk.zip
5 unzip qooxdoo-2.0.2-sdk.zip
6 mv qooxdoo-2.0.2-sdk qx
7 cd poxdesk
8 ./generate.py

我的小水管算是把我卡死了

然后通过命令运行:

1 ./pox.py 脚本名 web messenger messenger.log_service messenger.ajax_transport openflow.of_service poxdesk

 

然后进入浏览器查看:http://pox-ip:8000/poxdesk。这里pox-ip是pox所在的ip,如果本地就直接使用127.0.0.1就行。

技术分享图片

观察s1目标为h4的,发现output一直在5和6之间变化,但是理论来说应该有三种不同的路由规则。结果很尴尬。。。

Mininet实验 动态改变转发规则

标签:art   运行   elf   pid   tps   image   oca   prot   time()   

原文地址:https://www.cnblogs.com/pullself/p/10202584.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!