Uploaded image for project: 'vpp'
  1. vpp
  2. VPP-228

Mapping algorithm sends packet to wrong IPv6 address

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Medium Medium
    • 16.09
    • None
    • None
    • None

      Map domain is configured as

      • IPv6 src: 2001:db8:ffff::1
      • IPv6 prefix: 2001:db8::/48
      • IPv4 prefix: 20.0.0.0/16
      • EA bits length: 16
      • PSID length: 8
      • PSID offset: 6

      An IPv4 packet is send to 20.0.6.5 with UDP dst port 1232.
      The computed IPv6 destination is 3401:db8::1400:605:34 witch is not from configured IPv6 preffix.

      VAT configuration

      sw_interface_add_del_address sw_if_index 1 2001:0::1/64
      sw_interface_add_del_address sw_if_index 2 10.0.0.1/24
      sw_interface_set_flags sw_if_index 1 admin-up
      sw_interface_set_flags sw_if_index 2 admin-up

      ::/0 via 2001:0::2 sw_if_index 1
      ip_neighbor_add_del sw_if_index 1 dst 2001:0::2 mac 08:00:27:46:2b:4c

      map_add_domain ip4-pfx 20.0.0.0/16 ip6-pfx 2001:db8::/48 ip6-src 2001:db8:ffff::1 ea-bits-len 16 psid-offset 6 psid-len 8

      Sending packet out of eth3
      ###[ Ethernet ]###
      dst = 08:00:27:66:b8:57
      src = 08:00:27:1a:17:8e
      type = 0x800
      ###[ IP ]###
      version = 4L
      ihl = 5L
      tos = 0x0
      len = 28
      id = 1
      flags =
      frag = 0L
      ttl = 64
      proto = udp
      chksum = 0xfcca
      src = 100.0.0.1
      dst = 20.0.6.5
      \options \
      ###[ UDP ]###
      sport = 20000
      dport = 1232
      len = 8
      chksum = 0x2ee8

      Received packet on eth2
      ###[ Ethernet ]###
      dst = 08:00:27:46:2b:4c
      src = 08:00:27:f3:be:f0
      type = 0x86dd
      ###[ IPv6 ]###
      version = 6L
      tc = 0L
      fl = 0L
      plen = 28
      nh = IP
      hlim = 63
      src = 2001:db8:ffff::1
      dst = 3401:db8::1400:605:34
      ###[ IP ]###
      version = 4L
      ihl = 5L
      tos = 0x0
      len = 28
      id = 1
      flags =
      frag = 0L
      ttl = 63
      proto = udp
      chksum = 0xfdca
      src = 100.0.0.1
      dst = 20.0.6.5
      \options \
      ###[ UDP ]###
      sport = 20000
      dport = 1232
      len = 8
      chksum = 0x2ee8
      ###[ Padding ]###
      load = '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

      show trace
      00:00:28:692049: dpdk-input
      GigabitEthernet0/a/0 rx queue 0
      buffer 0x10eb9: current data 0, length 60, free-list 0, totlen-nifb 0, trace 0x0
      PKT MBUF: port 1, nb_segs 1, pkt_len 60
      buf_len 2176, data_len 60, ol_flags 0x0, data_off 128, phys_addr 0x7d02ac80
      packet_type 0x0
      IP4: 08:00:27:1a:17:8e -> 08:00:27:66:b8:57
      UDP: 100.0.0.1 -> 20.0.6.5
      tos 0x00, ttl 64, length 28, checksum 0xfcca
      fragment id 0x0001
      UDP: 20000 -> 1232
      length 8, checksum 0x2ee8
      00:00:28:692096: ethernet-input
      IP4: 08:00:27:1a:17:8e -> 08:00:27:66:b8:57
      00:00:28:692100: ip4-input
      UDP: 100.0.0.1 -> 20.0.6.5
      tos 0x00, ttl 64, length 28, checksum 0xfcca
      fragment id 0x0001
      UDP: 20000 -> 1232
      length 8, checksum 0x2ee8
      00:00:28:692102: ip4-lookup
      fib 0 adj-idx 5 : map flow hash: 0x00000000
      UDP: 100.0.0.1 -> 20.0.6.5
      tos 0x00, ttl 64, length 28, checksum 0xfcca
      fragment id 0x0001
      UDP: 20000 -> 1232
      length 8, checksum 0x2ee8
      00:00:28:692103: ip4-map
      MAP domain index: 0 L4 port: 1232
      00:00:28:692104: ip6-lookup
      fib 0 adj-idx 16 : GigabitEthernet0/9/0
      IP6: 08:00:27:f3:be:f0 -> 08:00:27:46:2b:4c flow hash: 0x00000000
      IP_IN_IP: 2001:db8:ffff::1 -> 3401:db8::1400:605:34
      tos 0x00, flow label 0x0, hop limit 64, payload length 28
      00:00:28:692108: ip6-rewrite
      tx_sw_if_index 1 adj-idx 16 : GigabitEthernet0/9/0
      IP6: 08:00:27:f3:be:f0 -> 08:00:27:46:2b:4c flow hash: 0x00000000
      IP6: 08:00:27:f3:be:f0 -> 08:00:27:46:2b:4c
      IP_IN_IP: 2001:db8:ffff::1 -> 3401:db8::1400:605:34
      tos 0x00, flow label 0x0, hop limit 63, payload length 28
      00:00:28:692109: GigabitEthernet0/9/0-output
      GigabitEthernet0/9/0
      IP6: 08:00:27:f3:be:f0 -> 08:00:27:46:2b:4c
      IP_IN_IP: 2001:db8:ffff::1 -> 3401:db8::1400:605:34
      tos 0x00, flow label 0x0, hop limit 63, payload length 28
      00:00:28:692109: GigabitEthernet0/9/0-tx
      GigabitEthernet0/9/0 tx queue 0
      buffer 0x10eb9: current data -40, length 100, free-list 0, totlen-nifb 0, trace 0x0
      IP6: 08:00:27:f3:be:f0 -> 08:00:27:46:2b:4c
      IP_IN_IP: 2001:db8:ffff::1 -> 3401:db8::1400:605:34
      tos 0x00, flow label 0x0, hop limit 63, payload length 28

      vppctl show version
      load_one_plugin:63: Loaded plugin: /usr/lib/vpp_api_test_plugins/snat_test_plugin.so
      load_one_plugin:63: Loaded plugin: /usr/lib/vpp_api_test_plugins/ioam_pot_test_plugin.so
      vpp v16.09-rc0~233-gad2c9c0~b404 built by jenkins on ubnt-trusty-3ab at Thu Jul 14 14:53:37 UTC 2016

            otroan Ole Trøan
            mklotton Matej Klotton
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: