From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Monjalon Subject: Re: [RFC 00/16] enhance checksum offload API Date: Thu, 22 Jan 2015 11:00:01 +0100 Message-ID: <7246473.sOL5Cyqyvb@xps13> References: <1421883395-27235-1-git-send-email-olivier.matz@6wind.com> <54C0390F.3040004@6wind.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="nextPart2239986.aX5dAVpMei" Content-Transfer-Encoding: 7Bit To: dev-VfR2kkLFssw@public.gmane.org Return-path: In-Reply-To: <54C0390F.3040004-pdR9zngts4EAvxtiuMwx3w@public.gmane.org> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-VfR2kkLFssw@public.gmane.org Sender: "dev" This is a multi-part message in MIME format. --nextPart2239986.aX5dAVpMei Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" 2015-01-22 00:41, Olivier MATZ: > We use the attached scapy script (dpdk-cksum-test.py) for testing. Attaching the python script which was filtered out. --nextPart2239986.aX5dAVpMei Content-Disposition: attachment; filename="dpdk-cksum-test.py" Content-Transfer-Encoding: 7Bit Content-Type: text/x-python; charset="UTF-8"; name="dpdk-cksum-test.py" class VXLAN(Packet): name = 'VXLAN' fields_desc = [ FlagsField('flags', default=1 << 3, size=8, names=['R', 'R', 'R', 'R', 'I', 'R', 'R', 'R']), XBitField('reserved1', default=0x000000, size=24), BitField('vni', None, size=24), XBitField('reserved2', default=0x00, size=8), ] overload_fields = { UDP: {"sport": 4789, "dport": 4789} } def mysummary(self): return self.sprintf("VXLAN (vni=%VXLAN.vni%)") bind_layers(UDP, VXLAN, dport=4789) bind_layers(VXLAN, Ether) macdst = "00:1B:21:8E:B2:30" # test with ixgbe #macdst = "68:05:CA:26:9B:10" # test with fortvile iface = "ixgbe6" count = 1 macsrc = get_if_hwaddr(iface) def send_test_packets(hdr, iface, count): p = hdr.copy() p /= IP(src=RandIP(), dst=RandIP()) p /= TCP(flags=0x10)/Raw(RandString(1400)) # valid packet q = p.copy() sendp(q, iface=iface, count=count) # bad outer IP checksum q = p.copy() q[IP].chksum=0x1234 sendp(q, iface=iface, count=count) if q.haslayer(UDP): # bad outer UDP checksum q = p.copy() q[UDP].chksum=0x1234 sendp(q, iface=iface, count=count) # disable outer UDP checksum q = p.copy() q[UDP].chksum=0 sendp(q, iface=iface, count=count) if q[IP].payload.haslayer(IP): # bad inner IP checksum q = p.copy() q[IP].payload[IP].chksum=0x1234 sendp(q, iface=iface, count=count) # bad inner TCP checksum q = p.copy() q[IP].payload[TCP].chksum=0x1234 sendp(q, iface=iface, count=count) def do_test(): # Ether packet p = Ether(dst=macdst, src=macsrc) send_test_packets(p, iface, count) # VxLAN packet p = Ether(dst=macdst, src=macsrc)/IP(src=RandIP(), dst=RandIP()) p /= UDP(sport=4789, dport=4789) p /= VXLAN(vni=1234)/Ether(dst=macdst, src=macsrc) send_test_packets(p, iface, count) # Ethernet over GRE p = Ether(dst=macdst, src=macsrc)/IP(src=RandIP(), dst=RandIP()) p /= GRE(proto=0x6558)/Ether(dst=macdst, src=macsrc) send_test_packets(p, iface, count) # IP over GRE p = Ether(dst=macdst, src=macsrc)/IP(src=RandIP(), dst=RandIP()) p /= GRE() send_test_packets(p, iface, count) # IP over IP p = Ether(dst=macdst, src=macsrc)/IP(src=RandIP(), dst=RandIP()) send_test_packets(p, iface, count) do_test() --nextPart2239986.aX5dAVpMei--