hi:
When sending 1500 bytes data with session app_send_dgram api, I find 
session-queue node will split the data to two udp packets, then vpp will 
sending to two separate IP packets out with no fragmentation. Even I set 
interface MTU with 9000, It's still sending two separate IP packets. I think 
the way session-queue process the app_send_dgram data have two logic logic bug.
1. If app_send_dgram's sending length more then snd_mss, session-queue should 
do udp fragmentation, rather simplely separating to other udp packets.
2. if app_send_dgram's sending length less then interface's MTU, session-queue 
should sending one ip packet out. But the MTU seems have no effect on 
session-queue.

Below is the debug log:

> 
> DBGvpp# trace add session-queue 20
> DBGvpp# sh trace
> ------------------- Start of thread 0 vpp_main -------------------
> No packets in trace buffer
> ------------------- Start of thread 1 vpp_wk_0 -------------------
> Packet 1
> 
> 00:06:06:009843: session-queue
> session index 0 thread index 1
> 00:06:06:009860: ip4-lookup
> fib 0 dpo-idx 1 flow hash: 0x00000000
> UDP: 192.168.7.101 -> 192.168.7.100
> tos 0x00, ttl 255, length 1500, checksum 0x0000 (should be 0x25f7) dscp
> CS0 ecn NON_ECN
> fragment id 0x0000
> UDP: 12738 -> 500
> length 1480, checksum 0x0000
> 00:06:06:009868: ip4-rewrite
> tx_sw_if_index 1 dpo-idx 1 : ipv4 via 192.168.7.100 eth0: mtu:9000 next:3
> 0000000000010000000000020800 flow hash: 0x00000000
> 00000000: 0000000000010000000000020800450005dc00000000ff110000c0a80765c0a8
> 
> 00000020: 076431c201f405c80000010101010101010101010101010101010101
> 00:06:06:009873: eth0-output
> eth0
> IP4: 00:00:00:00:00:02 -> 00:00:00:00:00:01
> UDP: 192.168.7.101 -> 192.168.7.100
> tos 0x00, ttl 255, length 1500, checksum 0x0000 (should be 0x25f7) dscp
> CS0 ecn NON_ECN
> fragment id 0x0000
> UDP: 12738 -> 500
> length 1480, checksum 0x0000
> 00:06:06:009878: eth0-tx
> eth0 tx queue 1
> buffer 0x27685e: current data 98, length 1514, buffer-pool 0, ref-count 1,
> trace handle 0x1000000
> local ip4 offload-ip-cksum offload-udp-cksum l3-hdr-offset 112
> l4-hdr-offset 132
> PKT MBUF: port 65535, nb_segs 1, pkt_len 1514
> buf_len 2176, data_len 1514, ol_flags 0xf0000000000000, data_off 226,
> phys_addr 0x47a1800
> packet_type 0x0 l2_len 14 l3_len 20 outer_l2_len 0 outer_l3_len 0
> rss 0x0 fdir.hi 0x0 fdir.lo 0x0
> Packet Offload Flags
> PKT_TX_IP_CKSUM (0x0000) IP cksum of TX pkt. computed by NIC
> PKT_TX_TCP_CKSUM (0x0000) TCP cksum of TX pkt. computed by NIC
> PKT_TX_SCTP_CKSUM (0x0000) SCTP cksum of TX pkt. computed by NIC
> IP4: 00:00:00:00:00:02 -> 00:00:00:00:00:01
> UDP: 192.168.7.101 -> 192.168.7.100
> tos 0x00, ttl 255, length 1500, checksum 0x0000 (should be 0x25f7) dscp
> CS0 ecn NON_ECN
> fragment id 0x0000
> UDP: 12738 -> 500
> length 1480, checksum 0x95f3
> 
> Packet 2
> 
> 00:06:06:009940: session-queue
> session index 0 thread index 1
> 00:06:06:009949: ip4-lookup
> fib 0 dpo-idx 1 flow hash: 0x00000000
> UDP: 192.168.7.101 -> 192.168.7.100
> tos 0x00, ttl 255, length 66, checksum 0x0000 (should be 0x2b91) dscp CS0
> ecn NON_ECN
> fragment id 0x0000
> UDP: 12738 -> 500
> length 46, checksum 0x0000
> 00:06:06:009952: ip4-rewrite
> tx_sw_if_index 1 dpo-idx 1 : ipv4 via 192.168.7.100 eth0: mtu:9000 next:3
> 0000000000010000000000020800 flow hash: 0x00000000
> 00000000: 00000000000100000000000208004500004200000000ff110000c0a80765c0a8
> 
> 00000020: 076431c201f4002e0000010101010101010101010101010101010101
> 00:06:06:009954: eth0-output
> eth0
> IP4: 00:00:00:00:00:02 -> 00:00:00:00:00:01
> UDP: 192.168.7.101 -> 192.168.7.100
> tos 0x00, ttl 255, length 66, checksum 0x0000 (should be 0x2b91) dscp CS0
> ecn NON_ECN
> fragment id 0x0000
> UDP: 12738 -> 500
> length 46, checksum 0x0000
> 00:06:06:009956: eth0-tx
> eth0 tx queue 1
> buffer 0x276837: current data 98, length 80, buffer-pool 0, ref-count 1,
> trace handle 0x1000001
> local ip4 offload-ip-cksum offload-udp-cksum l3-hdr-offset 112
> l4-hdr-offset 132
> PKT MBUF: port 65535, nb_segs 1, pkt_len 80
> buf_len 2176, data_len 80, ol_flags 0xf0000000000000, data_off 226,
> phys_addr 0x47a0e40
> packet_type 0x0 l2_len 14 l3_len 20 outer_l2_len 0 outer_l3_len 0
> rss 0x0 fdir.hi 0x0 fdir.lo 0x0
> Packet Offload Flags
> PKT_TX_IP_CKSUM (0x0000) IP cksum of TX pkt. computed by NIC
> PKT_TX_TCP_CKSUM (0x0000) TCP cksum of TX pkt. computed by NIC
> PKT_TX_SCTP_CKSUM (0x0000) SCTP cksum of TX pkt. computed by NIC
> IP4: 00:00:00:00:00:02 -> 00:00:00:00:00:01
> UDP: 192.168.7.101 -> 192.168.7.100
> tos 0x00, ttl 255, length 66, checksum 0x0000 (should be 0x2b91) dscp CS0
> ecn NON_ECN
> fragment id 0x0000
> UDP: 12738 -> 500
> length 46, checksum 0x9059
> 
> DBGvpp# sh int
> Name               Idx    State  MTU (L3/IP4/IP6/MPLS)     Counter        
> Count
> eth0                              1      up          9000/0/0/0     rx
> packets                   164
> rx bytes                   16136
> tx packets                     9
> tx bytes                    6428
> drops                        164
> ip4                          102
> ip6                           62
> local0                            0     down          0/0/0/0       drops 
> 2
> DBGvpp# sh session verbose
> Thread 0: no sessions
> 
> Connection                                        State          Rx-f     
> Tx-f
> [1:0][U] 192.168.7.101:12738->192.168.7.100:500   OPENED         0        
> 0
> Thread 1: active sessions 1
> DBGvpp#
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#17015): https://lists.fd.io/g/vpp-dev/message/17015
Mute This Topic: https://lists.fd.io/mt/75701885/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to