Python ryu.lib.packet.packet.Packet() Examples
The following are 30
code examples of ryu.lib.packet.packet.Packet().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
ryu.lib.packet.packet
, or try the search function
.
Example #1
Source File: simpleArp.py From simpleRouter with MIT License | 6 votes |
def send_arp(self, datapath, opcode, srcMac, srcIp, dstMac, dstIp, outPort): if opcode == 1: targetMac = "00:00:00:00:00:00" targetIp = dstIp elif opcode == 2: targetMac = dstMac targetIp = dstIp e = ethernet(dstMac, srcMac, ether.ETH_TYPE_ARP) a = arp(1, 0x0800, 6, 4, opcode, srcMac, srcIp, targetMac, targetIp) p = Packet() p.add_protocol(e) p.add_protocol(a) p.serialize() actions = [datapath.ofproto_parser.OFPActionOutput(outPort, 0)] out = datapath.ofproto_parser.OFPPacketOut( datapath=datapath, buffer_id=0xffffffff, in_port=datapath.ofproto.OFPP_CONTROLLER, actions=actions, data=p.data) datapath.send_msg(out)
Example #2
Source File: stplib.py From ryu with Apache License 2.0 | 6 votes |
def _generate_tcn_bpdu(self): src_mac = self.ofport.hw_addr dst_mac = bpdu.BRIDGE_GROUP_ADDRESS length = (bpdu.bpdu._PACK_LEN + bpdu.TopologyChangeNotificationBPDUs.PACK_LEN + llc.llc._PACK_LEN + llc.ControlFormatU._PACK_LEN) e = ethernet.ethernet(dst_mac, src_mac, length) l = llc.llc(llc.SAP_BPDU, llc.SAP_BPDU, llc.ControlFormatU()) b = bpdu.TopologyChangeNotificationBPDUs() pkt = packet.Packet() pkt.add_protocol(e) pkt.add_protocol(l) pkt.add_protocol(b) pkt.serialize() return pkt.data
Example #3
Source File: simpleRouter.py From simpleRouter with MIT License | 6 votes |
def packet_in_handler(self, ev): msg = ev.msg datapath = msg.datapath ofproto = datapath.ofproto inPort = msg.match['in_port'] packet = Packet(msg.data) etherFrame = packet.get_protocol(ethernet) if etherFrame.ethertype == ether.ETH_TYPE_ARP: self.receive_arp(datapath, packet, etherFrame, inPort) elif etherFrame.ethertype == ether.ETH_TYPE_IP: self.receive_ip(datapath, packet, etherFrame, inPort) else: LOG.debug("receive Unknown packet %s => %s (port%d)" %(etherFrame.src, etherFrame.dst, inPort)) self.print_etherFrame(etherFrame) LOG.debug("Drop packet") return 1 return 0
Example #4
Source File: simpleRouter.py From simpleRouter with MIT License | 6 votes |
def send_icmp(self, datapath, srcMac, srcIp, dstMac, dstIp, outPort, seq, data, id=1, type=8, ttl=64): 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(id, seq, data) icmph = icmp.icmp(type, 0, 0, echo) p = Packet() p.add_protocol(e) p.add_protocol(iph) p.add_protocol(icmph) p.serialize() actions = [datapath.ofproto_parser.OFPActionOutput(outPort, 0)] out = datapath.ofproto_parser.OFPPacketOut( datapath=datapath, buffer_id=0xffffffff, in_port=datapath.ofproto.OFPP_CONTROLLER, actions=actions, data=p.data) datapath.send_msg(out) return 0
Example #5
Source File: test_bfd.py From ryu with Apache License 2.0 | 6 votes |
def test_serialize(self): pkt = packet.Packet() eth_pkt = ethernet.ethernet('b0:a8:6e:18:b8:08', '64:87:88:e9:cb:c8') pkt.add_protocol(eth_pkt) ip_pkt = ipv4.ipv4(src='172.28.3.1', dst='172.28.3.2', tos=192, identification=26697, proto=inet.IPPROTO_UDP) pkt.add_protocol(ip_pkt) udp_pkt = udp.udp(49152, 3784) pkt.add_protocol(udp_pkt) bfd_pkt = bfd.bfd(ver=1, diag=bfd.BFD_DIAG_CTRL_DETECT_TIME_EXPIRED, state=bfd.BFD_STATE_UP, detect_mult=3, my_discr=6, your_discr=7, desired_min_tx_interval=60000, required_min_rx_interval=60000, required_min_echo_rx_interval=0) pkt.add_protocol(bfd_pkt) eq_(len(pkt.protocols), 4) pkt.serialize() eq_(pkt.data, self.data)
Example #6
Source File: bfdlib.py From ryu with Apache License 2.0 | 6 votes |
def arp_parse(data): """ Parse ARP packet, return ARP class from packet library. """ # Iteratize pkt pkt = packet.Packet(data) i = iter(pkt) eth_pkt = next(i) # Ensure it's an ethernet frame. assert type(eth_pkt) == ethernet.ethernet arp_pkt = next(i) if type(arp_pkt) != arp.arp: raise ARPPacket.ARPUnknownFormat() if arp_pkt.opcode not in (ARP_REQUEST, ARP_REPLY): raise ARPPacket.ARPUnknownFormat( msg='unsupported opcode %d' % arp_pkt.opcode) if arp_pkt.proto != ETH_TYPE_IP: raise ARPPacket.ARPUnknownFormat( msg='unsupported arp ethtype 0x%04x' % arp_pkt.proto) return arp_pkt
Example #7
Source File: simpleRouter.py From simpleRouter with MIT License | 6 votes |
def packet_in_handler(self, ev): msg = ev.msg datapath = msg.datapath ofproto = datapath.ofproto inPort = msg.match['in_port'] packet = Packet(msg.data) etherFrame = packet.get_protocol(ethernet) if etherFrame.ethertype == ether.ETH_TYPE_ARP: self.receive_arp(datapath, packet, etherFrame, inPort) elif etherFrame.ethertype == ether.ETH_TYPE_IP: self.receive_ip(datapath, packet, etherFrame, inPort) else: LOG.debug("receive Unknown packet %s => %s (port%d)" %(etherFrame.src, etherFrame.dst, inPort)) self.print_etherFrame(etherFrame) LOG.debug("Drop packet") return 0
Example #8
Source File: simpleRouter.py From simpleRouter with MIT License | 6 votes |
def send_arp(self, datapath, opcode, srcMac, srcIp, dstMac, dstIp, outPort): if opcode == 1: targetMac = "00:00:00:00:00:00" targetIp = dstIp elif opcode == 2: targetMac = dstMac targetIp = dstIp e = ethernet(dstMac, srcMac, ether.ETH_TYPE_ARP) a = arp(1, 0x0800, 6, 4, opcode, srcMac, srcIp, targetMac, targetIp) p = Packet() p.add_protocol(e) p.add_protocol(a) p.serialize() actions = [datapath.ofproto_parser.OFPActionOutput(outPort, 0)] out = datapath.ofproto_parser.OFPPacketOut( datapath=datapath, buffer_id=0xffffffff, in_port=datapath.ofproto.OFPP_CONTROLLER, actions=actions, data=p.data) datapath.send_msg(out) return 0
Example #9
Source File: simpleForward.py From simpleRouter with MIT License | 6 votes |
def send_arp(self, datapath, opcode, srcMac, srcIp, dstMac, dstIp, outPort): if opcode == 1: targetMac = "00:00:00:00:00:00" targetIp = dstIp elif opcode == 2: targetMac = dstMac targetIp = dstIp e = ethernet(dstMac, srcMac, ether.ETH_TYPE_ARP) a = arp(1, 0x0800, 6, 4, opcode, srcMac, srcIp, targetMac, targetIp) p = Packet() p.add_protocol(e) p.add_protocol(a) p.serialize() actions = [datapath.ofproto_parser.OFPActionOutput(outPort, 0)] out = datapath.ofproto_parser.OFPPacketOut( datapath=datapath, buffer_id=0xffffffff, in_port=datapath.ofproto.OFPP_CONTROLLER, actions=actions, data=p.data) datapath.send_msg(out)
Example #10
Source File: sample_router.py From ryu with Apache License 2.0 | 6 votes |
def _arp_reply_packet(self, arp_req_sha, arp_req_spa, arp_req_tpa): if not (arp_req_tpa in self.config.ip_addresses or arp_req_tpa == self.config.primary_ip_address): return None src_mac = vrrp.vrrp_ipv4_src_mac_address(self.config.vrid) e = ethernet.ethernet(arp_req_sha, src_mac, ether.ETH_TYPE_ARP) a = arp.arp_ip(arp.ARP_REPLY, src_mac, arp_req_tpa, arp_req_sha, arp_req_spa) p = packet.Packet() p.add_protocol(e) utils.may_add_vlan(p, self.interface.vlan_id) p.add_protocol(a) p.serialize() self._transmit(p.data)
Example #11
Source File: simpleRouter.py From simpleRouter with MIT License | 6 votes |
def packet_in_handler(self, ev): msg = ev.msg datapath = msg.datapath ofproto = datapath.ofproto inPort = msg.match['in_port'] packet = Packet(msg.data) etherFrame = packet.get_protocol(ethernet) if etherFrame.ethertype == ether.ETH_TYPE_ARP: self.receive_arp(datapath, packet, etherFrame, inPort) elif etherFrame.ethertype == ether.ETH_TYPE_IP: self.receive_ip(datapath, packet, etherFrame, inPort) else: LOG.debug("receive Unknown packet %s => %s (port%d)" %(etherFrame.src, etherFrame.dst, inPort)) self.print_etherFrame(etherFrame) LOG.debug("Drop packet") return 0
Example #12
Source File: simpleRouter.py From simpleRouter with MIT License | 6 votes |
def send_arp(self, datapath, opcode, srcMac, srcIp, dstMac, dstIp, outPort): if opcode == 1: targetMac = "00:00:00:00:00:00" targetIp = dstIp elif opcode == 2: targetMac = dstMac targetIp = dstIp e = ethernet(dstMac, srcMac, ether.ETH_TYPE_ARP) a = arp(1, 0x0800, 6, 4, opcode, srcMac, srcIp, targetMac, targetIp) p = Packet() p.add_protocol(e) p.add_protocol(a) p.serialize() actions = [datapath.ofproto_parser.OFPActionOutput(outPort, 0)] out = datapath.ofproto_parser.OFPPacketOut( datapath=datapath, buffer_id=0xffffffff, in_port=datapath.ofproto.OFPP_CONTROLLER, actions=actions, data=p.data) datapath.send_msg(out) return 0
Example #13
Source File: simpleRouter.py From simpleRouter with MIT License | 6 votes |
def packet_in_handler(self, ev): msg = ev.msg datapath = msg.datapath ofproto = datapath.ofproto inPort = msg.match['in_port'] packet = Packet(msg.data) etherFrame = packet.get_protocol(ethernet) if etherFrame.ethertype == ether.ETH_TYPE_ARP: self.receive_arp(datapath, packet, etherFrame, inPort) elif etherFrame.ethertype == ether.ETH_TYPE_IP: self.receive_ip(datapath, packet, etherFrame, inPort) else: LOG.debug("receive Unknown packet %s => %s (port%d)" %(etherFrame.src, etherFrame.dst, inPort)) self.print_etherFrame(etherFrame) LOG.debug("Drop packet") return 0
Example #14
Source File: simpleRouter.py From simpleRouter with MIT License | 6 votes |
def send_icmp(self, datapath, srcMac, srcIp, dstMac, dstIp, outPort, seq, data): ttl = 64 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, seq, data) icmph = icmp.icmp(8, 0, 0, echo) p = Packet() p.add_protocol(e) p.add_protocol(iph) p.add_protocol(icmph) p.serialize() actions = [datapath.ofproto_parser.OFPActionOutput(outPort, 0)] out = datapath.ofproto_parser.OFPPacketOut( datapath=datapath, buffer_id=0xffffffff, in_port=datapath.ofproto.OFPP_CONTROLLER, actions=actions, data=p.data) datapath.send_msg(out) return 0
Example #15
Source File: test_lldp.py From ryu with Apache License 2.0 | 6 votes |
def test_serialize(self): pkt = packet.Packet() dst = lldp.LLDP_MAC_NEAREST_BRIDGE src = '00:04:96:1f:a7:26' ethertype = ether.ETH_TYPE_LLDP eth_pkt = ethernet.ethernet(dst, src, ethertype) pkt.add_protocol(eth_pkt) tlv_chassis_id = lldp.ChassisID(subtype=lldp.ChassisID.SUB_MAC_ADDRESS, chassis_id=addrconv.mac. text_to_bin(src)) tlv_port_id = lldp.PortID(subtype=lldp.PortID.SUB_INTERFACE_NAME, port_id=b'1/3') tlv_ttl = lldp.TTL(ttl=120) tlv_end = lldp.End() tlvs = (tlv_chassis_id, tlv_port_id, tlv_ttl, tlv_end) lldp_pkt = lldp.lldp(tlvs) pkt.add_protocol(lldp_pkt) eq_(len(pkt.protocols), 2) pkt.serialize() eq_(pkt.data, self.data)
Example #16
Source File: rest_router.py From ryu with Apache License 2.0 | 6 votes |
def packet_in_handler(self, msg): pkt = packet.Packet(msg.data) # TODO: Packet library convert to string # self.logger.debug('Packet in = %s', str(pkt), self.sw_id) header_list = dict((p.protocol_name, p) for p in pkt.protocols if type(p) != str) if header_list: # Check vlan-tag vlan_id = VLANID_NONE if VLAN in header_list: vlan_id = header_list[VLAN].vid # Event dispatch if vlan_id in self: self[vlan_id].packet_in_handler(msg, header_list) else: self.logger.debug('Drop unknown vlan packet. [vlan_id=%d]', vlan_id, extra=self.sw_id)
Example #17
Source File: test_SimpleArp.py From simpleRouter with MIT License | 6 votes |
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)
Example #18
Source File: simpleRouter.py From simpleRouter with MIT License | 6 votes |
def packet_in_handler(self, ev): msg = ev.msg datapath = msg.datapath ofproto = datapath.ofproto inPort = msg.match['in_port'] packet = Packet(msg.data) etherFrame = packet.get_protocol(ethernet) if etherFrame.ethertype == ether.ETH_TYPE_ARP: self.receive_arp(datapath, packet, etherFrame, inPort) elif etherFrame.ethertype == ether.ETH_TYPE_IP: self.receive_ip(datapath, packet, etherFrame, inPort) else: LOG.debug("receive Unknown packet %s => %s (port%d)" %(etherFrame.src, etherFrame.dst, inPort)) self.print_etherFrame(etherFrame) LOG.debug("Drop packet") return 1 return 0
Example #19
Source File: simple_switch_13.py From ryu with Apache License 2.0 | 6 votes |
def switch_features_handler(self, ev): datapath = ev.msg.datapath ofproto = datapath.ofproto parser = datapath.ofproto_parser # install table-miss flow entry # # We specify NO BUFFER to max_len of the output action due to # OVS bug. At this moment, if we specify a lesser number, e.g., # 128, OVS will send Packet-In with invalid buffer_id and # truncated packet data. In that case, we cannot output packets # correctly. The bug has been fixed in OVS v2.1.0. match = parser.OFPMatch() actions = [parser.OFPActionOutput(ofproto.OFPP_CONTROLLER, ofproto.OFPCML_NO_BUFFER)] self.add_flow(datapath, 0, match, actions)
Example #20
Source File: simple_switch_14.py From ryu with Apache License 2.0 | 6 votes |
def switch_features_handler(self, ev): datapath = ev.msg.datapath ofproto = datapath.ofproto parser = datapath.ofproto_parser # install table-miss flow entry # # We specify NO BUFFER to max_len of the output action due to # OVS bug. At this moment, if we specify a lesser number, e.g., # 128, OVS will send Packet-In with invalid buffer_id and # truncated packet data. In that case, we cannot output packets # correctly. The bug has been fixed in OVS v2.1.0. match = parser.OFPMatch() actions = [parser.OFPActionOutput(ofproto.OFPP_CONTROLLER, ofproto.OFPCML_NO_BUFFER)] self.add_flow(datapath, 0, match, actions)
Example #21
Source File: simpleRouter.py From simpleRouter with MIT License | 6 votes |
def send_icmp(self, datapath, srcMac, srcIp, dstMac, dstIp, outPort, seq, data, id=1, type=8, ttl=64): 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(id, seq, data) icmph = icmp.icmp(type, 0, 0, echo) p = Packet() p.add_protocol(e) p.add_protocol(iph) p.add_protocol(icmph) p.serialize() actions = [datapath.ofproto_parser.OFPActionOutput(outPort, 0)] out = datapath.ofproto_parser.OFPPacketOut( datapath=datapath, buffer_id=0xffffffff, in_port=datapath.ofproto.OFPP_CONTROLLER, actions=actions, data=p.data) datapath.send_msg(out) return 0
Example #22
Source File: simple_switch_snort.py From ryu with Apache License 2.0 | 6 votes |
def switch_features_handler(self, ev): datapath = ev.msg.datapath ofproto = datapath.ofproto parser = datapath.ofproto_parser # install table-miss flow entry # # We specify NO BUFFER to max_len of the output action due to # OVS bug. At this moment, if we specify a lesser number, e.g., # 128, OVS will send Packet-In with invalid buffer_id and # truncated packet data. In that case, we cannot output packets # correctly. match = parser.OFPMatch() actions = [parser.OFPActionOutput(ofproto.OFPP_CONTROLLER, ofproto.OFPCML_NO_BUFFER)] self.add_flow(datapath, 0, match, actions)
Example #23
Source File: simple_switch_snort.py From ryu with Apache License 2.0 | 6 votes |
def packet_print(self, pkt): pkt = packet.Packet(array.array('B', pkt)) eth = pkt.get_protocol(ethernet.ethernet) _ipv4 = pkt.get_protocol(ipv4.ipv4) _icmp = pkt.get_protocol(icmp.icmp) if _icmp: self.logger.info("%r", _icmp) if _ipv4: self.logger.info("%r", _ipv4) if eth: self.logger.info("%r", eth) # for p in pkt.protocols: # if hasattr(p, 'protocol_name') is False: # break # print('p: %s' % p.protocol_name)
Example #24
Source File: bfdlib.py From ryu with Apache License 2.0 | 6 votes |
def bfd_parse(data): """ Parse raw packet and return BFD class from packet library. """ pkt = packet.Packet(data) i = iter(pkt) eth_pkt = next(i) assert type(eth_pkt) == ethernet.ethernet ipv4_pkt = next(i) assert type(ipv4_pkt) == ipv4.ipv4 udp_pkt = i.next() assert type(udp_pkt) == udp.udp udp_payload = next(i) return bfd.bfd.parser(udp_payload)[0]
Example #25
Source File: test_igmp.py From ryu with Apache License 2.0 | 6 votes |
def _build_igmp(self): dl_dst = '11:22:33:44:55:66' dl_src = 'aa:bb:cc:dd:ee:ff' dl_type = ether.ETH_TYPE_IP e = ethernet(dl_dst, dl_src, dl_type) total_length = len(ipv4()) + len(self.g) nw_proto = inet.IPPROTO_IGMP nw_dst = '11.22.33.44' nw_src = '55.66.77.88' i = ipv4(total_length=total_length, src=nw_src, dst=nw_dst, proto=nw_proto, ttl=1) p = Packet() p.add_protocol(e) p.add_protocol(i) p.add_protocol(self.g) p.serialize() return p
Example #26
Source File: sdn_ip.py From Ryu-SDN-IP with MIT License | 6 votes |
def internal_host_route_handler(self, ev): ''' Handle internal network host routing ''' msg = ev.msg dp = msg.datapath dpid = dp.id ofproto = dp.ofproto pkt = packet.Packet(msg.data) ipv4_header = pkt.get_protocol(ipv4.ipv4) src_ip = ipv4_header.src dst_ip = ipv4_header.dst if not self.cfg_mgr.is_internal_host(dst_ip): return self.install_internal_host_path(dst_ip)
Example #27
Source File: test_igmp.py From ryu with Apache License 2.0 | 6 votes |
def _build_igmp(self): dl_dst = '11:22:33:44:55:66' dl_src = 'aa:bb:cc:dd:ee:ff' dl_type = ether.ETH_TYPE_IP e = ethernet(dl_dst, dl_src, dl_type) total_length = len(ipv4()) + len(self.g) nw_proto = inet.IPPROTO_IGMP nw_dst = '11.22.33.44' nw_src = '55.66.77.88' i = ipv4(total_length=total_length, src=nw_src, dst=nw_dst, proto=nw_proto, ttl=1) p = Packet() p.add_protocol(e) p.add_protocol(i) p.add_protocol(self.g) p.serialize() return p
Example #28
Source File: ofp_pktinfilter.py From ryu with Apache License 2.0 | 5 votes |
def packet_in_filter(cls, args=None, logging=False): def _packet_in_filter(packet_in_handler): def __packet_in_filter(self, ev): pkt = packet.Packet(ev.msg.data) if not packet_in_handler.pkt_in_filter.filter(pkt): if logging: LOG.debug('The packet is discarded by %s: %s', cls, pkt) return return packet_in_handler(self, ev) pkt_in_filter = cls(args) packet_in_handler.pkt_in_filter = pkt_in_filter return __packet_in_filter return _packet_in_filter
Example #29
Source File: lacplib.py From ryu with Apache License 2.0 | 5 votes |
def _create_response(self, datapath, port, req): """create a packet including LACP.""" src = datapath.ports[port].hw_addr res_ether = ethernet.ethernet( slow.SLOW_PROTOCOL_MULTICAST, src, ether.ETH_TYPE_SLOW) res_lacp = self._create_lacp(datapath, port, req) res_pkt = packet.Packet() res_pkt.add_protocol(res_ether) res_pkt.add_protocol(res_lacp) res_pkt.serialize() return res_pkt
Example #30
Source File: tester.py From ryu with Apache License 2.0 | 5 votes |
def _continuous_packet_send(self, pkt): assert self.ingress_event is None pkt_text = pkt[KEY_PACKETS]['packet_text'] pkt_bin = pkt[KEY_PACKETS]['packet_binary'] pktps = pkt[KEY_PACKETS][KEY_PKTPS] duration_time = pkt[KEY_PACKETS][KEY_DURATION_TIME] randomize = pkt[KEY_PACKETS]['randomize'] self.logger.debug("send_packet:[%s]", packet.Packet(pkt_bin)) self.logger.debug("pktps:[%d]", pktps) self.logger.debug("duration_time:[%d]", duration_time) arg = {'packet_text': pkt_text, 'packet_binary': pkt_bin, 'thread_counter': 0, 'dot_span': int(CONTINUOUS_PROGRESS_SPAN / CONTINUOUS_THREAD_INTVL), 'packet_counter': float(0), 'packet_counter_inc': pktps * CONTINUOUS_THREAD_INTVL, 'randomize': randomize} try: self.ingress_event = hub.Event() tid = hub.spawn(self._send_packet_thread, arg) self.ingress_threads.append(tid) self.ingress_event.wait(duration_time) if self.thread_msg is not None: raise self.thread_msg # pylint: disable=E0702 finally: sys.stdout.write("\r\n") sys.stdout.flush()