Commit bb1be405 authored by Raphael Defosseux's avatar Raphael Defosseux

Merge branch 'doc-fix' into 'master'

Doc Updated

See merge request oai/cn5g/oai-cn5g-upf-vpp!37
parents d0999567 2cb05a1e
......@@ -19,3 +19,5 @@
3. [Building the Docker Image](./BUILD_IMAGE.md)
4. [About network configuration](./VPP_NETWORKING.md)
5. [About VPP-UPF configuration](./VPP_UPF_CONFIG.md)
6. [About VPP-UPF configuration with DPDK](./VPP_UPG_WITH_DPDK.md)
7. [About VPP-UPF command line interface (CLI)](./VPP_UPG_CLI.md)
......@@ -44,10 +44,7 @@ make[1]: Leaving directory 'oai-cn5g-upf-vpp/vpp/build-root'
VPP UPG initializing
Installing VPP
```
### Wipe VPP source
```bash
/oai-cn5g-upf-vpp/build/scripts$ ./build_vpp_upf -w
```
### Networking Setup
We need veth pairs type of interfaces for vpp switch. So we create three veth pairs (n3, n4 and n6) as below -
```bash
......
# VPP-UPF CLI
## Available cli options for UPF
```bash
$ docker exec -it vpp-upf ./bin/vppctl show upf help
adf show upf adf commands
application show upf application <name>
applications show upf applications [verbose]
association show upf association
bihash show upf bihash <v4-tunnel-by-key | v6-tunnel-by-key | qer-by-id | peer-index-by-ip> [detail|verbose]
flows show upf flows
flow show upf flow commands
gtpu show upf gtpu commands
node-id show upf node-id
nwi show upf nwi
pfcp show upf pfcp commands
policy show upf policy
proxy show upf proxy
session show upf session
specification show upf specification commands
tdf show upf tdf commands
```
## Show UPF associations
```bash
$ docker exec -it vpp-upf ./bin/vppctl show upf association
Node: oai-smf-svc
Recovery Time Stamp: 2022/09/02 07:26:31:000
Sessions: 1
```
## Show PFCP session at UPF
```bash
$ docker exec -it vpp-upf ./bin/vppctl show upf session
CP F-SEID: 0x0000000000000001 (1) @ 192.168.70.133
UP F-SEID: 0x0000000000000001 (1) @ 192.168.70.202
PFCP Association: 0
TEID assignment per choose ID
PDR: 1 @ 0x7f6cef01cd00
Precedence: 0
PDI:
Fields: 0000000d
Source Interface: Access
Network Instance: access.oai.org
Local F-TEID: 218138074 (0x0d0085da)
IPv4: 192.168.72.202
UE IP address (source):
IPv4 address: 12.1.1.2
SDF Filter [1]:
permit out ip from any to assigned
Outer Header Removal: GTP-U/UDP/IPv4
FAR Id: 1
URR Ids: [1] @ 0x7f6ceefde850
QER Ids: [] @ 0x0
PDR: 2 @ 0x7f6cef01cd80
Precedence: 0
PDI:
Fields: 0000000c
Source Interface: Core
Network Instance: core.oai.org
UE IP address (destination):
IPv4 address: 12.1.1.2
SDF Filter [1]:
permit out ip from any to assigned
Outer Header Removal: no
FAR Id: 2
URR Ids: [1] @ 0x7f6ceefde8e0
QER Ids: [] @ 0x0
FAR: 1
Apply Action: 00000002 == [FORWARD]
Forward:
Network Instance: core.oai.org
Destination Interface: 1
FAR: 2
Apply Action: 00000002 == [FORWARD]
Forward:
Network Instance: access.oai.org
Destination Interface: 0
Outer Header Creation: [GTP-U/UDP/IPv4],TEID:9acb0442,IP:192.168.72.141
URR: 1
Measurement Method: 0002 == [VOLUME]
Reporting Triggers: 0001 == [PERIODIC REPORTING]
Status: 0 == []
Start Time: 2022/09/02 07:29:30:476
vTime of First Usage: 0.0000
vTime of Last Usage: 0.0000
Volume
Up: Measured: 0, Theshold: 0, Pkts: 0
Consumed: 0, Quota: 0
Down: Measured: 0, Theshold: 0, Pkts: 0
Consumed: 0, Quota: 0
Total: Measured: 0, Theshold: 0, Pkts: 0
Consumed: 0, Quota: 0
Measurement Period: 10 secs @ 2022/09/02 07:29:40:476, in 5.597 secs, handle 0x00000c01
```
## Get packet trace
* Add packet trace
```bash
$ docker exec -it vpp-upf ./bin/vppctl trace add af-packet-input 100
```
* Generate traffic
```bash
$ docker exec -it oai-ext-dn ping -c4 12.1.1.3
PING 12.1.1.3 (12.1.1.3) 56(84) bytes of data.
64 bytes from 12.1.1.3: icmp_seq=1 ttl=63 time=0.661 ms
64 bytes from 12.1.1.3: icmp_seq=2 ttl=63 time=0.497 ms
64 bytes from 12.1.1.3: icmp_seq=3 ttl=63 time=0.533 ms
64 bytes from 12.1.1.3: icmp_seq=4 ttl=63 time=0.538 ms
--- 12.1.1.3 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3056ms
rtt min/avg/max/mdev = 0.497/0.557/0.661/0.064 ms
```
* Show trace
```bash
$ docker exec -it vpp-upf ./bin/vppctl show trace
```
* Downlink packet in trace
```bash
Packet 2
02:00:14:156491: af-packet-input
af_packet: hw_if_index 1 next-index 4
tpacket2_hdr:
status 0x20000081 len 98 snaplen 98 mac 66 net 80
sec 0x6311cc53 nsec 0xaef062e vlan 0 vlan_tpid 0
02:00:14:156502: ethernet-input
IP4: 02:42:c0:a8:49:87 -> 02:fe:b3:cb:dd:5f
02:00:14:156507: ip4-input
ICMP: 192.168.73.135 -> 12.1.1.3
tos 0x00, ttl 64, length 84, checksum 0xfb98 dscp CS0 ecn NON_ECN
fragment id 0x27dd, flags DONT_FRAGMENT
ICMP echo_request checksum 0x9de1 id 79
02:00:14:156512: ip4-lookup
fib 1 dpo-idx 1 flow hash: 0x00000000
ICMP: 192.168.73.135 -> 12.1.1.3
tos 0x00, ttl 64, length 84, checksum 0xfb98 dscp CS0 ecn NON_ECN
fragment id 0x27dd, flags DONT_FRAGMENT
ICMP echo_request checksum 0x9de1 id 79
02:00:14:156519: upf-ip4-session-dpo
upf_session1 seid 3
ICMP: 192.168.73.135 -> 12.1.1.3
tos 0x00, ttl 63, length 84, checksum 0xfc98 dscp CS0 ecn NON_ECN
fragment id 0x27dd, flags DONT_FRAGMENT
ICMP echo_request checksum 0x9de1 id 79
02:00:14:156535: upf-ip4-flow-process
upf_session1 cp-seid 0x0000000000000003
FlowInfo - sw_if_index 1, next_index = 2
proto 0x1, 12.1.1.3:0 <-> 192.168.73.135:0, seid 0x0000000000000003
00000000: 03000000000000000000000000000000000000000c0101030000000000000000
00000020: 00000000c0a849870000000001000000
ICMP: 192.168.73.135 -> 12.1.1.3
tos 0x00, ttl 63, length 84, checksum 0xfc98 dscp CS0 ecn NON_ECN
fragment id 0x27dd, flags DONT_FRAGMENT
ICMP echo_request checksum 0x9de1 id 79
02:00:14:156544: upf-ip4-input
upf_session1 cp-seid 0x0000000000000003 pdr 2 far 2
ICMP: 192.168.73.135 -> 12.1.1.3
tos 0x00, ttl 63, length 84, checksum 0xfc98 dscp CS0 ecn NON_ECN
fragment id 0x27dd, flags DONT_FRAGMENT
ICMP echo_request checksum 0x9de1 id 79
02:00:14:156547: upf-ip4-forward
upf_session1 cp-seid 0x0000000000000003 pdr 2 far 2
ICMP: 192.168.73.135 -> 12.1.1.3
tos 0x00, ttl 63, length 84, checksum 0xfc98 dscp CS0 ecn NON_ECN
fragment id 0x27dd, flags DONT_FRAGMENT
ICMP echo_request checksum 0x9de1 id 79
02:00:14:156552: upf4-encap
GTPU encap to upf_session1 teid 0x9acb0442
02:00:14:156555: ip4-load-balance
fib 1 dpo-idx 10 flow hash: 0x88bedf3d
UDP: 192.168.72.202 -> 192.168.72.141
tos 0x00, ttl 254, length 128, checksum 0xa9c4 dscp CS0 ecn NON_ECN
fragment id 0x0000
UDP: 15839 -> 2152
length 108, checksum 0x0000
02:00:14:156558: ip4-rewrite
tx_sw_if_index 3 dpo-idx 10 : ipv4 via 192.168.72.141 host-n3: mtu:1500 next:5 0242c0a8488d02fe9c90fdf90800 flow hash: 0x88bedf3d
00000000: 0242c0a8488d02fe9c90fdf908004500008000000000fd11aac4c0a848cac0a8
00000020: 488d3ddf0868006c000034ff00649acb044200000085010006004500
02:00:14:156563: host-n3-output
host-n3
IP4: 02:fe:9c:90:fd:f9 -> 02:42:c0:a8:48:8d
UDP: 192.168.72.202 -> 192.168.72.141
tos 0x00, ttl 253, length 128, checksum 0xaac4 dscp CS0 ecn NON_ECN
fragment id 0x0000
UDP: 15839 -> 2152
length 108, checksum 0x0000
```
* Uplink packet in trace
```bash
Packet 4
02:00:14:156976: af-packet-input
af_packet: hw_if_index 3 next-index 4
tpacket2_hdr:
status 0x20000009 len 142 snaplen 142 mac 66 net 80
sec 0x6311cc53 nsec 0xaf63908 vlan 0 vlan_tpid 0
02:00:14:156980: ethernet-input
IP4: 02:42:c0:a8:48:8d -> 02:fe:9c:90:fd:f9
02:00:14:156981: ip4-input
UDP: 192.168.72.141 -> 192.168.72.202
tos 0x00, ttl 64, length 128, checksum 0xbc41 dscp CS0 ecn NON_ECN
fragment id 0x6b83, flags DONT_FRAGMENT
UDP: 2152 -> 2152
length 108, checksum 0x0000
02:00:14:156982: ip4-lookup
fib 2 dpo-idx 13 flow hash: 0x00000000
UDP: 192.168.72.141 -> 192.168.72.202
tos 0x00, ttl 64, length 128, checksum 0xbc41 dscp CS0 ecn NON_ECN
fragment id 0x6b83, flags DONT_FRAGMENT
UDP: 2152 -> 2152
length 108, checksum 0x0000
02:00:14:156986: ip4-local
UDP: 192.168.72.141 -> 192.168.72.202
tos 0x00, ttl 64, length 128, checksum 0xbc41 dscp CS0 ecn NON_ECN
fragment id 0x6b83, flags DONT_FRAGMENT
UDP: 2152 -> 2152
length 108, checksum 0x0000
02:00:14:156988: ip4-udp-lookup
UDP: src-port 2152 dst-port 2152
02:00:14:156989: upf-gtpu4-input
GTPU decap from gtpu_session1 teid 0x2d149b71 next 1 error 0
02:00:14:156997: upf-ip4-flow-process
upf_session1 cp-seid 0x0000000000000003
FlowInfo - sw_if_index 3, next_index = 2
proto 0x1, 12.1.1.3:0 <-> 192.168.73.135:0, seid 0x0000000000000003
00000000: 03000000000000000000000000000000000000000c0101030000000000000000
00000020: 00000000c0a849870000000001000000
ICMP: 12.1.1.3 -> 192.168.73.135
tos 0x00, ttl 64, length 84, checksum 0x31fd dscp CS0 ecn NON_ECN
fragment id 0x3179
ICMP echo_reply checksum 0xa5e1 id 79
02:00:14:156998: upf-ip4-input
upf_session1 cp-seid 0x0000000000000003 pdr 1 far 1
ICMP: 12.1.1.3 -> 192.168.73.135
tos 0x00, ttl 64, length 84, checksum 0x31fd dscp CS0 ecn NON_ECN
fragment id 0x3179
ICMP echo_reply checksum 0xa5e1 id 79
02:00:14:156998: upf-ip4-forward
upf_session1 cp-seid 0x0000000000000003 pdr 1 far 1
ICMP: 12.1.1.3 -> 192.168.73.135
tos 0x00, ttl 64, length 84, checksum 0x31fd dscp CS0 ecn NON_ECN
fragment id 0x3179
ICMP echo_reply checksum 0xa5e1 id 79
02:00:14:156999: ip4-input
ICMP: 12.1.1.3 -> 192.168.73.135
tos 0x00, ttl 64, length 84, checksum 0x31fd dscp CS0 ecn NON_ECN
fragment id 0x3179
ICMP echo_reply checksum 0xa5e1 id 79
02:00:14:157000: ip4-lookup
fib 1 dpo-idx 8 flow hash: 0x00000000
ICMP: 12.1.1.3 -> 192.168.73.135
tos 0x00, ttl 64, length 84, checksum 0x31fd dscp CS0 ecn NON_ECN
fragment id 0x3179
ICMP echo_reply checksum 0xa5e1 id 79
02:00:14:157003: ip4-rewrite
tx_sw_if_index 1 dpo-idx 8 : ipv4 via 192.168.73.135 host-n6: mtu:1500 next:3 0242c0a8498702feb3cbdd5f0800 flow hash: 0x00000000
00000000: 0242c0a8498702feb3cbdd5f080045000054317900003f0132fd0c010103c0a8
00000020: 49870000a5e1004f000153cc11630000000033cc0200000000001011
02:00:14:157004: host-n6-output
host-n6
IP4: 02:fe:b3:cb:dd:5f -> 02:42:c0:a8:49:87
ICMP: 12.1.1.3 -> 192.168.73.135
tos 0x00, ttl 63, length 84, checksum 0x32fd dscp CS0 ecn NON_ECN
fragment id 0x3179
ICMP echo_reply checksum 0xa5e1 id 79
```
# VPP-UPF With DPDK
## List Interfaces
```bash
$ sudo lshw -c network -businfo
Bus info Device Class Description
========================================================
pci@0000:01:00.0 network 82599ES 10-Gigabit SFI/SFP+ Network Connection
pci@0000:01:00.1 network 82599ES 10-Gigabit SFI/SFP+ Network Connection
pci@0000:06:00.0 eno1 network I350 Gigabit Network Connection
pci@0000:06:00.1 network I350 Gigabit Network Connection
```
## Bind interfaces to DPDK compatible driver (e.g. uio_pci_generic here)
```bash
$ sudo dpdk-devbind.py -b uio_pci_generic 0000:01:00.0 --force
$ sudo dpdk-devbind.py -b uio_pci_generic 0000:01:00.1 --force
$ sudo dpdk-devbind.py -b uio_pci_generic 0000:06:00.1 --force
```
## Verify DPDK binding is good
```bash
$ sudo dpdk-devbind.py -s
Network devices using DPDK-compatible driver
============================================
0000:01:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection 10fb' drv=uio_pci_generic unused=ixgbe,vfio-pci
0000:01:00.1 '82599ES 10-Gigabit SFI/SFP+ Network Connection 10fb' drv=uio_pci_generic unused=ixgbe,vfio-pci
0000:06:00.1 'I350 Gigabit Network Connection 1521' drv=uio_pci_generic unused=igb,vfio-pci
Network devices using kernel driver
===================================
0000:06:00.0 'I350 Gigabit Network Connection 1521' if=eno1 drv=igb unused=vfio-pci,uio_pci_generic *Active*
No 'Baseband' devices detected
==============================
No 'Crypto' devices detected
============================
No 'Eventdev' devices detected
==============================
No 'Mempool' devices detected
=============================
No 'Compress' devices detected
==============================
No 'Misc (rawdev)' devices detected
===================================
No 'Regex' devices detected
===========================
```
## Add dpdk pci address in startup.conf for VPP
```bash
dpdk {
dev 0000:01:00.0 {name n3}
dev 0000:06:00.1 {name n4}
dev 0000:01:00.1 {name n6}
}
```
## Modify init.conf for UPF accordingly
e.g. for N3
```bash
set interface ip table n3 1
set interface mtu 9000 n3
set interface ip address n3 172.21.8.133/22
set interface state n3 up
```
## Verify interfaces at VPP
```bash
vpp#
vpp# show hardware-interfaces
Name Idx Link Hardware
local0 0 down local0
Link speed: unknown
local
n3 1 up n3
Link speed: 10 Gbps
Ethernet address 90:e2:ba:c5:fc:04
Intel 82599
carrier up full duplex mtu 9000
flags: admin-up pmd maybe-multiseg tx-offload intel-phdr-cksum rx-ip4-cksum
Devargs:
rx: queues 1 (max 128), desc 1024 (min 32 max 4096 align 8)
tx: queues 2 (max 64), desc 1024 (min 32 max 4096 align 8)
pci: device 8086:10fb subsystem 8086:0003 address 0000:01:00.00 numa 0
max rx packet len: 15872
promiscuous: unicast off all-multicast on
vlan offload: strip off filter off qinq off
rx offload avail: vlan-strip ipv4-cksum udp-cksum tcp-cksum tcp-lro
macsec-strip vlan-filter vlan-extend jumbo-frame scatter
security keep-crc rss-hash
rx offload active: ipv4-cksum jumbo-frame scatter
tx offload avail: vlan-insert ipv4-cksum udp-cksum tcp-cksum sctp-cksum
tcp-tso macsec-insert multi-segs security
tx offload active: udp-cksum tcp-cksum multi-segs
rss avail: ipv4-tcp ipv4-udp ipv4 ipv6-tcp-ex ipv6-udp-ex ipv6-tcp
ipv6-udp ipv6-ex ipv6
rss active: none
tx burst function: ixgbe_xmit_pkts
rx burst function: ixgbe_recv_scattered_pkts_vec
rx frames ok 12
rx bytes ok 740
extended stats:
rx_good_packets 12
rx_good_bytes 740
rx_q0_packets 12
rx_q0_bytes 740
mac_local_errors 3
mac_remote_errors 1
rx_size_64_packets 7
rx_size_65_to_127_packets 5
rx_multicast_packets 12
rx_total_packets 12
rx_total_bytes 740
n4 3 down n4
Link speed: unknown
Ethernet address f0:1f:af:db:b9:c8
Intel e1000
carrier down
flags: admin-up pmd maybe-multiseg tx-offload intel-phdr-cksum rx-ip4-cksum
Devargs:
rx: queues 1 (max 8), desc 1024 (min 32 max 4096 align 8)
tx: queues 2 (max 8), desc 1024 (min 32 max 4096 align 8)
pci: device 8086:1521 subsystem 1028:04cf address 0000:06:00.01 numa 0
max rx packet len: 16383
promiscuous: unicast off all-multicast on
vlan offload: strip off filter off qinq off
rx offload avail: vlan-strip ipv4-cksum udp-cksum tcp-cksum vlan-filter
vlan-extend jumbo-frame scatter keep-crc rss-hash
rx offload active: ipv4-cksum jumbo-frame scatter
tx offload avail: vlan-insert ipv4-cksum udp-cksum tcp-cksum sctp-cksum
tcp-tso multi-segs
tx offload active: udp-cksum tcp-cksum multi-segs
rss avail: ipv4-tcp ipv4-udp ipv4 ipv6-tcp-ex ipv6-udp-ex ipv6-tcp
ipv6-udp ipv6-ex ipv6
rss active: none
tx burst function: eth_igb_xmit_pkts
rx burst function: eth_igb_recv_scattered_pkts
n6 2 up n6
Link speed: 10 Gbps
Ethernet address 90:e2:ba:c5:fc:05
Intel 82599
carrier up full duplex mtu 9000
flags: admin-up pmd maybe-multiseg tx-offload intel-phdr-cksum rx-ip4-cksum
Devargs:
rx: queues 1 (max 128), desc 1024 (min 32 max 4096 align 8)
tx: queues 2 (max 64), desc 1024 (min 32 max 4096 align 8)
pci: device 8086:10fb subsystem 8086:0003 address 0000:01:00.01 numa 0
max rx packet len: 15872
promiscuous: unicast off all-multicast on
vlan offload: strip off filter off qinq off
rx offload avail: vlan-strip ipv4-cksum udp-cksum tcp-cksum tcp-lro
macsec-strip vlan-filter vlan-extend jumbo-frame scatter
security keep-crc rss-hash
rx offload active: ipv4-cksum jumbo-frame scatter
tx offload avail: vlan-insert ipv4-cksum udp-cksum tcp-cksum sctp-cksum
tcp-tso macsec-insert multi-segs security
tx offload active: udp-cksum tcp-cksum multi-segs
rss avail: ipv4-tcp ipv4-udp ipv4 ipv6-tcp-ex ipv6-udp-ex ipv6-tcp
ipv6-udp ipv6-ex ipv6
rss active: none
tx burst function: ixgbe_xmit_pkts
rx burst function: ixgbe_recv_scattered_pkts_vec
rx frames ok 16
rx bytes ok 1068
extended stats:
rx_good_packets 16
rx_good_bytes 1068
rx_q0_packets 16
rx_q0_bytes 1068
mac_local_errors 2
mac_remote_errors 2
rx_size_64_packets 7
rx_size_65_to_127_packets 9
rx_broadcast_packets 1
rx_multicast_packets 15
rx_total_packets 16
rx_total_bytes 1068
upf-nwi-access.oai.org 4 up upf-nwi-access.oai.org
Link speed: unknown
GTPU
upf-nwi-core.oai.org 5 up upf-nwi-core.oai.org
Link speed: unknown
GTPU
```
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment