sorry I had added a -c1 at the end of the command. mininet> h1 ping h3
On 3 May 2013 17:16, Murphy McCauley <[email protected]> wrote: > Ping sends packets from A to B, and B sends them back to A. Ping does > this continually until you stop it unless you specify a limit on the > commandline. > > Since you're installing flows, you'd actually expect them to start hitting > the flow table and stop hitting the switch, but the fewest you could > probably expect to see at the controller in that case is still three. > > -- Murphy > > On May 2, 2013, at 9:48 PM, Karthik Sharma wrote: > > I have mininet configured with a remote POX controller running.The > configuration of mininet network is as shown below > > > > h1 (eth0) ----------- s2(eth1) s2(eth2) ---------- h3(eth0) > > where > h1: eth0 is ca:bc:2e:0c:5a:52 > h2: eth0 is 0a:79:40:89:44:cf > > > The packet handling function in the POX network controller that gets > called whenever a packet is forwarded to the controller is given below.The > basic idea is that I use > a database backed controller.If the packet destination address is not > present in the database,I flood the packet.else I forward the packet to the > appropriate port. > > def act_like_switch (self, packet, packet_in): > """ > Implement switch-like behavior. > """ > # Learn the port for the source MAC > print "RECIEVED FROM PORT ",packet_in.in_port , "SOURCE ",packet.src > ,"DEST" , packet.dst > self.mac_to_port[packet.src]=packet_in.in_port > q_res = > session.query(SourcetoPort).filter_by(src_address=str(packet.dst)).first() > if q_res is not None: > self.send_packet(packet_in.buffer_id, > packet_in.data,q_res.port_no, packet_in.in_port) > #create a flow modification message > msg = of.ofp_flow_mod() > #set the fields to match from the incoming packet > msg.match = of.ofp_match.from_packet(packet) > #send the rule to the switch so that it does not query the > controller again. > msg.actions.append(of.ofp_action_output(port=q_res.port_no)) > #push the rule > self.connection.send(msg) > else: > #flood this packet out as we don't know about this node. > self.send_packet(packet_in.buffer_id, > packet_in.data,of.OFPP_FLOOD, packet_in.in_port) > q_res = > session.query(SourcetoPort).filter_by(src_address=str(packet.src)).first() > if q_res is None: > entry = SourcetoPort(src_address=str(packet.src) , > port_no=packet_in.in_port) > #add the record to the session object > session.add(entry) > #add the record to the session object > session.commit() > > > As mentioned above this function is running on a remote POX controller > connected to the described mininet network.Now I do > > mininet> h1 ping h3 > > The output that I get is as follows.I have put print statements in the > beginning of act_like_switch() function. > > RECIEVED FROM PORT 1 SOURCE ca:bc:2e:0c:5a:52 DEST 0a:79:40:89:44:cf > RECIEVED FROM PORT 2 SOURCE 0a:79:40:89:44:cf DEST ca:bc:2e:0c:5a:52 > RECIEVED FROM PORT 1 SOURCE ca:bc:2e:0c:5a:52 DEST 0a:79:40:89:44:cf > RECIEVED FROM PORT 2 SOURCE 0a:79:40:89:44:cf DEST ca:bc:2e:0c:5a:52 > > It seems that there are two ICMP messages from h1 to h2 and two ICMP > messages from h2 to h1. > I would expect only 1 ICMP message from host h1 to h2.Why are there so > many messages.I did think of > broadcast but why is the destination address not ff:ff:ff:ff:ff:ff ? The > source and destination addresses seems to be swapped? > > Can anyone explain why this is happening? I am fairly new to POX and > mininet > > Regards, > Karthik > > >
