Hi,

My 3GPP UPF implementation uses a DPO to direct all UE IP to my session
logic. This works well.

I now want to use deterministic NAT on the UE IPs. The NAT config inserts a
DPO in the FIB:

nat44 deterministic add in 10.106.0.0/16 out 10.116.0.0/24

show ip fib:

ipv4-VRF:2, fib_index:2, flow hash:[src dst sport dport proto ] epoch:0
flags:none locks:[CLI:3, adjacency:1, ]
[...]
10.116.0.0/24
  unicast-ip4-chain
  [@0]: dpo-load-balance: [proto:ip4 index:35 buckets:1 uRPF:41 to:[0:0]]
    [0] [@2]: dpo-receive: 0.0.0.0 on host-ens161

When my session now tries to insert a DPO with /32 route to the UE IP, VPP
crashes with:

(gdb) bt
#0  0x00007ffff5ec29c4 in hash_memory64 (p=0x7fffad1302ef,
n_bytes=1881489448, state=0) at /usr/src/vpp/src/vppinfra/hash.c:141
#1  0x00007ffff5ec2ea3 in hash_memory (p=0x7fffad1302ef,
n_bytes=1881489448, state=0) at /usr/src/vpp/src/vppinfra/hash.c:280
#2  0x00007ffff5ec46ad in vec_key_sum (h=0x7fffb633cba0,
key=140736097092335) at /usr/src/vpp/src/vppinfra/hash.c:864
#3  0x00007ffff5ec30ef in key_sum (h=0x7fffb633cba0, key=140736097092335)
at /usr/src/vpp/src/vppinfra/hash.c:341
#4  0x00007ffff5ec3a2c in lookup (v=0x7fffb633cc60, key=140736097092335,
op=GET, new_value=0x0, old_value=0x0) at
/usr/src/vpp/src/vppinfra/hash.c:556
#5  0x00007ffff5ec3d2a in _hash_get (v=0x7fffb633cc60, key=140736097092335)
at /usr/src/vpp/src/vppinfra/hash.c:641
#6  0x00007ffff641faf3 in vlib_get_node_by_name (vm=0x7ffff66b4680
<vlib_global_main>, name=0x7fffad1302ef "upf-ip4-session-dpo") at
/usr/src/vpp/src/vlib/node.c:52
#7  0x00007ffff75032e0 in dpo_default_get_next_node (dpo=0x7fffb7b1f650) at
/usr/src/vpp/src/vnet/dpo/dpo.c:298
#8  0x00007ffff7504302 in dpo_get_next_node (child_type=DPO_LOAD_BALANCE,
child_proto=DPO_PROTO_IP4, parent_dpo=0x7fffb7b1f650) at
/usr/src/vpp/src/vnet/dpo/dpo.c:428
#9  0x00007ffff75046d1 in dpo_stack (child_type=DPO_LOAD_BALANCE,
child_proto=DPO_PROTO_IP4, dpo=0x7fffb7a7dca0, parent=0x7fffb7b1f650) at
/usr/src/vpp/src/vnet/dpo/dpo.c:521
#10 0x00007ffff7510a94 in load_balance_set_bucket_i (lb=0x7fffb7a7dc80,
bucket=0, buckets=0x7fffb7a7dca0, next=0x7fffb7b1f650) at
/usr/src/vpp/src/vnet/dpo/load_balance.c:252
#11 0x00007ffff7511423 in load_balance_fill_buckets_norm
(lb=0x7fffb7a7dc80, nhs=0x7fffb7b1f650, buckets=0x7fffb7a7dca0,
n_buckets=1) at /usr/src/vpp/src/vnet/dpo/load_balance.c:525
#12 0x00007ffff7511846 in load_balance_fill_buckets (lb=0x7fffb7a7dc80,
nhs=0x7fffb7b1f650, buckets=0x7fffb7a7dca0, n_buckets=1,
flags=LOAD_BALANCE_FLAG_NONE) at
/usr/src/vpp/src/vnet/dpo/load_balance.c:589
#13 0x00007ffff7511bf3 in load_balance_multipath_update
(dpo=0x7fffb7a7d1d8, raw_nhs=0x7fffb7b1f600, flags=LOAD_BALANCE_FLAG_NONE)
at /usr/src/vpp/src/vnet/dpo/load_balance.c:654
#14 0x00007ffff749f1d4 in fib_entry_src_mk_lb (fib_entry=0x7fffb7a7d1b0,
esrc=0x7fffb7b1f570, fct=FIB_FORW_CHAIN_TYPE_UNICAST_IP4,
dpo_lb=0x7fffb7a7d1d8) at /usr/src/vpp/src/vnet/fib/fib_entry_src.c:645
#15 0x00007ffff749f348 in fib_entry_src_action_install
(fib_entry=0x7fffb7a7d1b0, source=FIB_SOURCE_FIRST) at
/usr/src/vpp/src/vnet/fib/fib_entry_src.c:705
#16 0x00007ffff749fe14 in fib_entry_src_action_activate
(fib_entry=0x7fffb7a7d1b0, source=FIB_SOURCE_FIRST) at
/usr/src/vpp/src/vnet/fib/fib_entry_src.c:1078
#17 0x00007ffff7496170 in fib_entry_create_special (fib_index=2,
prefix=0x7fffb507c7f0, source=FIB_SOURCE_FIRST,
flags=(FIB_ENTRY_FLAG_EXCLUSIVE | FIB_ENTRY_FLAG_LOOSE_URPF_EXEMPT),
dpo=0x7fffb507c7d8) at /usr/src/vpp/src/vnet/fib/fib_entry.c:775
#18 0x00007ffff747d3be in fib_table_entry_special_dpo_add (fib_index=2,
prefix=0x7fffb507c7f0, source=FIB_SOURCE_FIRST,
flags=(FIB_ENTRY_FLAG_EXCLUSIVE | FIB_ENTRY_FLAG_LOOSE_URPF_EXEMPT),
dpo=0x7fffb507c7d8) at /usr/src/vpp/src/vnet/fib/fib_table.c:338
#19 0x00007fffad0cdaac in pfcp_add_del_ue_ip (ip=0x7fffb7b1e730,
si=0x7fffb6827040, is_add=1) at /usr/src/vpp/src/plugins/upf/upf_pfcp.c:1192

The invocation is here:
https://github.com/travelping/vpp/blob/feature/2001/upf-liusa-pfcp-socket/src/plugins/upf/upf_pfcp.c#L1191

Any hints on what I might be doing wrong?

Many thanks,
Andreas

-- 

Andreas Schultz

-- 

Principal Engineer

t: +49 391 819099-224

------------------------------- enabling your networks
-----------------------------

Travelping GmbH
Roentgenstraße 13
39108 Magdeburg
Germany

t: +49 391 819099-0
f: +49 391 819099-299

e: i...@travelping.com
w: https://www.travelping.com/
Company registration: Amtsgericht Stendal
Geschaeftsfuehrer: Holger Winkelmann
Reg. No.: HRB 10578
VAT ID: DE236673780
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#15755): https://lists.fd.io/g/vpp-dev/message/15755
Mute This Topic: https://lists.fd.io/mt/71902419/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