Skip to Content.
Sympa Menu

rare-dev - Re: [rare-dev] Debugging IP checksum failure

Subject: Rare project developers

List archive

Re: [rare-dev] Debugging IP checksum failure


Chronological Thread 
  • From: mc36 <>
  • To: , Alexander Gall <>
  • Subject: Re: [rare-dev] Debugging IP checksum failure
  • Date: Thu, 9 Jun 2022 18:17:16 +0200

hi,
here we goo:
https://bitbucket.software.geant.org/projects/RARE/repos/rare/commits/233cce079794dc91afc5c4d9071fa5ea756f2b65
could you please check if it really silences the logs?
thanks,
cs


On 6/9/22 15:39, mc36 wrote:
a bit better... now the test rounds need to passed....

sid#clear counters
warning userClear.doer:userClear.java:319 counters cleared on all interfaces
sid#packet replay pw1 /nfs/zzz.txt
% tx: 01 00 5e 00 00 01 00 76 16 02 74 79 | | 08 00 46 00 00 24 00 00 00 00
01 02 3a cc 0a 08 ff fe e0 00 00 01 94 04 00 00 11 0a ec b9 00 00 00 00 02 3c
00 00
% tx: 01 00 5e 00 00 01 00 76 16 02 74 79 | | 08 00 46 00 00 24 00 00 00 00
01 02 3a cc 0a 08 ff fe e0 00 00 01 94 04 00 00 11 0a ec b9 00 00 00 00 02 3c
00 00
% tx: 01 00 5e 00 00 01 00 76 16 02 74 79 | | 08 00 46 00 00 24 00 00 00 00
01 02 3a cc 0a 08 ff fe e0 00 00 01 94 04 00 00 11 0a ec b9 00 00 00 00 02 3c
00 00
% tx: 01 00 5e 00 00 01 00 76 16 02 74 79 | | 08 00 46 00 00 24 00 00 00 00
01 02 3a cc 0a 08 ff fe e0 00 00 01 94 04 00 00 11 0a ec b9 00 00 00 00 02 3c
00 00
sid#packet replay sdn1 /nfs/zzz.txt
% tx: 01 00 5e 00 00 01 00 76 16 02 74 79 | | 08 00 46 00 00 24 00 00 00 00
01 02 3a cc 0a 08 ff fe e0 00 00 01 94 04 00 00 11 0a ec b9 00 00 00 00 02 3c
00 00
% tx: 01 00 5e 00 00 01 00 76 16 02 74 79 | | 08 00 46 00 00 24 00 00 00 00
01 02 3a cc 0a 08 ff fe e0 00 00 01 94 04 00 00 11 0a ec b9 00 00 00 00 02 3c
00 00
% tx: 01 00 5e 00 00 01 00 76 16 02 74 79 | | 08 00 46 00 00 24 00 00 00 00
01 02 3a cc 0a 08 ff fe e0 00 00 01 94 04 00 00 11 0a ec b9 00 00 00 00 02 3c
00 00
% tx: 01 00 5e 00 00 01 00 76 16 02 74 79 | | 08 00 46 00 00 24 00 00 00 00
01 02 3a cc 0a 08 ff fe e0 00 00 01 94 04 00 00 11 0a ec b9 00 00 00 00 02 3c
00 00
sid#show interfaces summary
interface state tx rx drop
template1 admin 0 0 644
loopback0 up 1272 0 0
loopback42 up 0 0 0
loopback65535 up 0 0 0
bundle1 up 9870 12225 0
bvi1 up 0 228 0
bvi2 up 0 216 0
bvi3 up 0 292 0
bvi4 up 0 216 0
ethernet1 up 6635 7802 0
ethernet2 up 3235 4423 0
ethernet8 up 0 0 0
ethernet9 up 0 0 0
pwether0 up 160 200 0
pwether1 up 152 184 0
pwether2 up 0 0 0
pwether3 up 0 0 0
pwether4 up 0 0 0
sdn1 up 152+364 192+0 0+0
sdn2 up 0+62 0+0 0+0
sdn3 up 0+62 0+0 0+0
sdn4 up 0+0 0+0 0+0

sid#



mc36@nass:/nfs/own/web/freerouter$ ./dif.sh
diffing
Only in /safe/: binDwn
Only in /safe/: binImg
Only in /safe/: binOut
Only in /safe/: binTmp
Only in /safe/: dmp
Only in ../src/: .github
Only in /safe/: img
Only in /safe/: lost+found
diff -r -U 10 --color ../src/misc/p4bf/include/ig_ctl.p4
/safe/misc/p4bf/include/ig_ctl.p4
--- ../src/misc/p4bf/include/ig_ctl.p4 2022-06-08 11:08:38.000000000 +0200
+++ /safe/misc/p4bf/include/ig_ctl.p4 2022-06-09 15:33:09.872125000 +0200
@@ -120,20 +120,21 @@
if (hdr.ipv6.isValid()) ig_md.pktlen = hdr.ipv6.payload_len
+ 40;
#endif

#ifdef HAVE_FRAG
ig_ctl_frag.apply(hdr, ig_md, ig_intr_md);
#endif

ig_ctl_vlan_in.apply(hdr, ig_md, ig_intr_md);

if (ig_intr_md.ingress_port == CPU_PORT) {
+ ig_md.saw_rsvp = 1;
ig_tm_md.ucast_egress_port = (PortId_t)hdr.cpu.port;
ig_tm_md.bypass_egress = 1;
hdr.cpu.setInvalid();
} else {
if (ig_intr_md.ingress_port == RECIR_PORT) {
hdr.cpu.setInvalid();
}
#ifdef HAVE_PPPOE
ig_ctl_pppoe.apply(hdr,ig_md,ig_intr_md,
ig_dprsr_md, ig_tm_md);
#endif
@@ -188,20 +189,21 @@
ig_ctl_outport.apply(hdr, ig_md, ig_dprsr_md,
ig_tm_md);
#ifdef HAVE_OUTACL
ig_ctl_acl_out.apply(hdr, ig_md, ig_intr_md,
ig_dprsr_md, ig_tm_md);
#endif
#ifdef HAVE_OUTQOS
ig_ctl_qos_out.apply(hdr, ig_md, ig_intr_md,
ig_dprsr_md, ig_tm_md);
#endif
ig_ctl_pkt_pre_emit.apply(hdr, ig_md, ig_intr_md,
ig_tm_md);

if (ig_md.nexthop_id == CPU_PORT) {
+ ig_md.saw_rsvp = 1;
#ifdef HAVE_TUN
ig_ctl_tunnel.apply(hdr,ig_md,ig_intr_md,
ig_dprsr_md, ig_tm_md);
#endif
#ifdef HAVE_MCAST
ig_ctl_mcast.apply(hdr,ig_md,ig_intr_md,
ig_dprsr_md, ig_tm_md);
#endif
#ifdef HAVE_COPP
ig_ctl_copp.apply(hdr, ig_md, ig_intr_md,
ig_dprsr_md, ig_tm_md);
#endif
} else {
Only in /safe/: rtr.zip
Only in /safe/: vm
mc36@nass:/nfs/own/web/freerouter$




On 6/9/22 15:26, mc36 wrote:
hi,
i also did not believed this so i simply replayed the previous igmps through
the tofino dataplane vm,
and i also got the checksum error so at least it's something.... :)
https://github.com/rare-freertr/freeRtr/blob/f24232b5332ed9f4eeeaa1daa8b9301e70b63c1e/misc/p4bf/include/ig_ctl_dprs.p4#L34
is what updates the checksum, and well, rsvp is the other protocol with
router alert option.... lemme fix it real quick... :)
br,
cs

sid#packet capture pw1
% capturing=true
sid#packet capture sdn1
% capturing=true
sid#packet replay pw1 /nfs/zzz.txt
% tx: 01 00 5e 00 00 01 00 76 16 02 74 79 | | 08 00 46 00 00 24 00 00 00
00 01 02 3a cc 0a 08 ff fe e0 00 00 01 94 04 00 00 11 0a ec b9 00 00 00 00 02
3c 00 00
% tx: 01 00 5e 00 00 01 00 76 16 02 74 79 | | 08 00 46 00 00 24 00 00 00
00 01 02 3a cc 0a 08 ff fe e0 00 00 01 94 04 00 00 11 0a ec b9 00 00 00 00 02
3c 00 00
% tx: 01 00 5e 00 00 01 00 76 16 02 74 79 | | 08 00 46 00 00 24 00 00 00
00 01 02 3a cc 0a 08 ff fe e0 00 00 01 94 04 00 00 11 0a ec b9 00 00 00 00 02
3c 00 00
% tx: 01 00 5e 00 00 01 00 76 16 02 74 79 | | 08 00 46 00 00 24 00 00 00
00 01 02 3a cc 0a 08 ff fe e0 00 00 01 94 04 00 00 11 0a ec b9 00 00 00 00 02
3c 00 00
info ipCor4.parseIPheader:ipCor4.java:91 got bad checksum from 10.8.255.254
info ipCor4.parseIPheader:ipCor4.java:91 got bad checksum from 10.8.255.254
info ipCor4.parseIPheader:ipCor4.java:91 got bad checksum from 10.8.255.254
info ipCor4.parseIPheader:ipCor4.java:91 got bad checksum from 10.8.255.254
sid#packet capture pw1
% capturing=false
sid#packet capture sdn1
% capturing=false
sid#



On 6/9/22 14:54, Alexander Gall wrote:
On Thu, 9 Jun 2022 14:34:00 +0200, mc36 <> said:

first of all, thanks for spotting... so the easiest way to have such packets
decoded is doing the capture directly from freerouter...
"packet capture sdnXXX" should record you the exact failing ones with cpu
headers stripped down already...
(if you go for pack cap eth0 then you should get the same result as what you
did...)
but for now, as we already have something and we need to manipulate this hex
dumps, k12 format is for rescue (attached)
is what you sent, with (pack1) and without (pack2) the cpu header.... just
wireshark zzz.txt will give you the same red checksum error...
finally the 2nd capture is how freertr emits an igmp query toward my
notebook... it's all green... so for now, cisco was wrong...:)

Thanks. That would be a really astonishing bug. But, sadly, it would
not surprise me (I have a TAC case open since 1.5 years where our
NCS5500 sometimes create bogus destination MAC addresses in IPv6 NS
messages...)

I'd like to look at the packet right after it leaves the 8201, just to
be sure. I'll look at that later.




Archive powered by MHonArc 2.6.19.

Top of Page