def test_Packet_in_2_icmpEcho1(self): print "*** Case2: HOST2のMAC未学習の時、HOST1からICMP Echoを受信 ***" sr = SimpleForward() dstMac = ROUTER_MACADDR1 srcMac = HOST_MACADDR1 srcIp = HOST_IPADDR1 dstIp = HOST_IPADDR2 targetMac = dstMac targetIp = dstIp ttl = 64 datapath = _Datapath() e = ethernet(dstMac, srcMac, ether.ETH_TYPE_IP) iph = ipv4(4, 5, 0, 0, 0, 2, 0, ttl, 1, 0, srcIp, dstIp) echo = icmp.echo(1, 1, 'unit test') icmph = icmp.icmp(8, 0, 0, echo) p = Packet() p.add_protocol(e) p.add_protocol(iph) p.add_protocol(icmph) p.serialize() packetIn = OFPPacketIn(datapath, match=OFPMatch(in_port=1), data=buffer(p.data)) ev = ofp_event.EventOFPPacketIn(packetIn) result = sr.packet_in_handler(ev) self.assertEqual(result, 1) print ""
def test_Packet_in_4_icmpEcho2(self): print "*** Case4: HOST2からHOST1以外の宛先IPへのIPパケットを受信 ***" sr = SimpleForward() sr.HOST_MACADDR1 = HOST_MACADDR1 sr.HOST_MACADDR2 = HOST_MACADDR2 dstMac = ROUTER_MACADDR2 srcMac = HOST_MACADDR2 srcIp = HOST_IPADDR2 dstIp = "91.189.89.22" ttl = 64 datapath = _Datapath() e = ethernet(dstMac, srcMac, ether.ETH_TYPE_IP) iph = ipv4(4, 5, 0, 0, 0, 2, 0, ttl, 1, 0, srcIp, dstIp) p = Packet() p.add_protocol(e) p.add_protocol(iph) p.serialize() packetIn = OFPPacketIn(datapath, match=OFPMatch(in_port=2), data=buffer(p.data)) ev = ofp_event.EventOFPPacketIn(packetIn) result = sr.packet_in_handler(ev) self.assertEqual(result, 1) print ""
def test_Packet_in_1_arpRequest(self): print "*** Case1: HOST1からARP Request受信 ***" sr = SimpleForward() dstMac = "ff:ff:ff:ff:ff:ff" srcMac = HOST_MACADDR1 srcIp = HOST_IPADDR1 dstIp = ROUTER_IPADDR1 targetMac = dstMac targetIp = dstIp datapath = _Datapath() e = ethernet(dstMac, srcMac, ether.ETH_TYPE_ARP) a = arp(1, 0x0800, 6, 4, 1, srcMac, srcIp, targetMac, targetIp) p = Packet() p.add_protocol(e) p.add_protocol(a) p.serialize() packetIn = OFPPacketIn(datapath, match=OFPMatch(in_port=1), data=buffer(p.data)) ev = ofp_event.EventOFPPacketIn(packetIn) result = sr.packet_in_handler(ev) self.assertEqual(result, 0) print ""
def test_Packet_in_3_arpReply2(self): print "*** Case3: HOST1のMAC学習済の時、HOST2からARP Replyを受信 ***" sr = SimpleForward() sr.HOST_MACADDR1 = HOST_MACADDR1 sr.HOST_MACADDR2 = HOST_MACADDR2 dstMac = ROUTER_MACADDR2 srcMac = HOST_MACADDR2 srcIp = HOST_IPADDR2 dstIp = ROUTER_IPADDR2 targetMac = dstMac targetIp = dstIp datapath = _Datapath() e = ethernet(dstMac, srcMac, ether.ETH_TYPE_ARP) a = arp(1, 0x0800, 6, 4, 2, srcMac, srcIp, targetMac, targetIp) p = Packet() p.add_protocol(e) p.add_protocol(a) p.serialize() packetIn = OFPPacketIn(datapath, match=OFPMatch(in_port=2), data=buffer(p.data)) ev = ofp_event.EventOFPPacketIn(packetIn) result = sr.packet_in_handler(ev) self.assertEqual(result, 0) print ""
def test_pkt_in_filter_discard(self): datapath = ProtocolDesc(version=ofproto_v1_3.OFP_VERSION) e = ethernet.ethernet(mac.BROADCAST_STR, mac.BROADCAST_STR, ether.ETH_TYPE_IP) i = ipv4.ipv4() pkt = (e / i) pkt.serialize() pkt_in = ofproto_v1_3_parser.OFPPacketIn(datapath, data=buffer(pkt.data)) ev = ofp_event.EventOFPPacketIn(pkt_in) ok_(not self.app.packet_in_handler(ev))
def test_pkt_in_filter_pass(self): datapath = _Datapath() e = ethernet.ethernet(mac.BROADCAST_STR, mac.BROADCAST_STR, ether.ETH_TYPE_8021Q) v = vlan.vlan() i = ipv4.ipv4() pkt = (e / v / i) pkt.serialize() pkt_in = ofproto_v1_3_parser.OFPPacketIn(datapath, data=buffer(pkt.data)) ev = ofp_event.EventOFPPacketIn(pkt_in) ok_(self.app.packet_in_handler(ev))
def test_pkt_in_filter_pass(self): datapath = ProtocolDesc(version=ofproto_v1_3.OFP_VERSION) e = ethernet.ethernet(mac.BROADCAST_STR, mac.BROADCAST_STR, ether.ETH_TYPE_8021Q) v = vlan.vlan() i = ipv4.ipv4() pkt = (e / v / i) pkt.serialize() pkt_in = ofproto_v1_3_parser.OFPPacketIn(datapath, data=six.binary_type( pkt.data)) ev = ofp_event.EventOFPPacketIn(pkt_in) ok_(self.app.packet_in_handler(ev))
def test_Packet_in(self): sa = SimpleArp() datapath = _Datapath() e = ethernet.ethernet(dstMac, srcMac, ether.ETH_TYPE_ARP) a = arp(1, 0x0800, 6, 4, 1, srcMac, srcIp, targetMac, dstIp) p = Packet() p.add_protocol(e) p.add_protocol(a) p.serialize() packetIn = OFPPacketIn(datapath, match=OFPMatch(in_port=1), data=buffer(p.data)) ev = ofp_event.EventOFPPacketIn(packetIn) result = sa.packet_in_handler(ev) self.assertEqual(result, 0)
def test_pkt_in_filter_truncated(self): datapath = ProtocolDesc(version=ofproto_v1_3.OFP_VERSION) truncated_data = '' pkt_in = ofproto_v1_3_parser.OFPPacketIn(datapath, data=truncated_data) ev = ofp_event.EventOFPPacketIn(pkt_in) ok_(not self.app.packet_in_handler(ev))
def test_pkt_in_filter_truncated(self): datapath = _Datapath() truncated_data = buffer('') pkt_in = ofproto_v1_3_parser.OFPPacketIn(datapath, data=truncated_data) ev = ofp_event.EventOFPPacketIn(pkt_in) ok_(not self.app.packet_in_handler(ev))