Thanks for your timely help & pointers here Hanoh; I was able to troubleshoot & resolve the issue.
Looks like the problem here is the MSS/MTU being used in the IPv6 flows; the packet responses being sent by TRex were too big & hence being dropped.
The DUT talking server side to TRex sends SYN with MSS of 1440 here;
Frame 549: 94 bytes on wire (752 bits), 94 bytes captured (752 bits)
Ethernet II, Src: c2:e8:86:66:06:c0 (c2:e8:86:66:06:c0), Dst: IntelCor_20:99:28 (a0:36:9f:20:99:28)
Internet Protocol Version 6, Src: ::16.0.128.53, Dst: ::48.0.128.56
Transmission Control Protocol, Src Port: 17441, Dst Port: 80, Seq: 0, Len: 0
Source Port: 17441
Destination Port: 80
[Stream index: 44]
[TCP Segment Len: 0]
Sequence number: 0 (relative sequence number)
[Next sequence number: 0 (relative sequence number)]
Acknowledgment number: 0
1010 .... = Header Length: 40 bytes (10)
Flags: 0x002 (SYN)
Window size value: 43200
[Calculated window size: 43200]
Checksum: 0xad36 [unverified]
[Checksum Status: Unverified]
Urgent pointer: 0
Options: (20 bytes), Maximum segment size, SACK permitted, Timestamps, No-Operation (NOP), Window scale
TCP Option - Maximum segment size: 1440 bytes
Kind: Maximum Segment Size (2)
Length: 4
MSS Value: 1440
TCP Option - SACK permitted
TCP Option - Timestamps: TSval 1501722585, TSecr 0
TCP Option - No-Operation (NOP)
TCP Option - Window scale: 12 (multiply by 4096)
[Timestamps]
But data packets are being sent from TRex that are 1448 bytes in size:
Frame 556: 1534 bytes on wire (12272 bits), 1534 bytes captured (12272 bits)
Ethernet II, Src: IntelCor_20:99:28 (a0:36:9f:20:99:28), Dst: c2:e8:86:66:06:c0 (c2:e8:86:66:06:c0)
Internet Protocol Version 6, Src: ::48.0.128.56, Dst: ::16.0.128.53
Transmission Control Protocol, Src Port: 80, Dst Port: 17441, Seq: 696, Ack: 1592, Len: 1448
Source Port: 80
Destination Port: 17441
[Stream index: 44]
[TCP Segment Len: 1448]
Sequence number: 696 (relative sequence number)
[Next sequence number: 2144 (relative sequence number)]
Acknowledgment number: 1592 (relative ack number)
1000 .... = Header Length: 32 bytes (8)
Flags: 0x010 (ACK)
Window size value: 32768
[Calculated window size: 32768]
[Window size scaling factor: 1]
Checksum: 0x463c [unverified]
[Checksum Status: Unverified]
Urgent pointer: 0
Options: (12 bytes), No-Operation (NOP), No-Operation (NOP), Timestamps
[SEQ/ACK analysis]
[Timestamps]
TCP payload (1448 bytes)
[Reassembled PDU in frame: 564]
TCP segment data (1448 bytes)
I can work round this as you know; by dropping the MSS values down:
#set the MSS values lower
c_glob_info = ASTFGlobalInfo()
c_glob_info.tcp.mss = 1400
s_glob_info = ASTFGlobalInfo()
s_glob_info.tcp.mss = 1400
# profile
profile = ASTFProfile(default_ip_gen=ip_gen, default_c_glob_info=c_glob_info, default_s_glob_info=s_glob_info,
Now I can run my IPv6 traffic without seeing errors / drops.
Thanks,
Darren