Hi Xyxue,

I have not used xcrw before to know how it is supposed to work, to cross 
connect a layer 2 interface to a layer 3 stack.  My suggestion was based on the 
error shown by the packet trace you provided, that l2-output node found GRE 
tunnel not to be set to L2 mode.  If a GRE tunnel is created in TEB mode, it is 
an L2 interface and thus can be put into L2 mode to work with L2 xconnect.  If 
you have a “normal” L2 xconnect config like the following I would expect it to 
work:

set interface l2 xconnect host-eth5 gre0
set interface l2 xconnect gre0 host-eth5

BTW, in older version of VPP, GRE tunnel in TEB mode has the name pattern 
teb-greN while with later version just greN, where N is the tunnel instance 
number.

I don’t know what are your intended usage or expectation of xcrw is and hoping 
someone with proper knowledge of xcrw can help.

Regards,
John


From: 薛欣颖 <xy...@fiberhome.com>
Sent: Wednesday, May 16, 2018 8:07 AM
To: John Lo (loj) <l...@cisco.com>; Neale Ranns (nranns) <nra...@cisco.com>; 
vpp-dev <vpp-dev@lists.fd.io>
Subject: Re: Re: [vpp-dev] problem in xcrw testing

Hi John,

I changed my configuration to that shown below:

create host-interface name eth1 mac 00:50:56:3a:32:d2
create host-interface name eth5 mac 00:50:56:31:35:92
set interface l3 host-eth1
set interface ip address host-eth1 11.1.1.2/24
create gre tunnel src 11.1.1.2 dst 11.1.1.1 teb
set interface l2 xcrw host-eth5 next gre-output  rw 
4500005800000000fd2fa5720b0101020b01010100006558
create bridge-domain 1
set interface l2 bridge teb-gre0 1
set interface l2 bridge xcrw0 1

There is an assert :
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff6f30e72 in gre_interface_tx_inline (vm=0x7ffff791d1a0 
<vlib_global_main>, node=0x7fffb6c87600, frame=0x7fffb676fbc0) at 
/home/vpp/build-data/../src/vnet/gre/gre.c:366
366           hw = vnet_get_hw_interface (vnm, sw->hw_if_index);
(gdb) bt
#0  0x00007ffff6f30e72 in gre_interface_tx_inline (vm=0x7ffff791d1a0 
<vlib_global_main>, node=0x7fffb6c87600, frame=0x7fffb676fbc0) at 
/home/vpp/build-data/../src/vnet/gre/gre.c:366
#1  0x00007ffff6f3126b in gre_interface_tx (vm=0x7ffff791d1a0 
<vlib_global_main>, node=0x7fffb6c87600, frame=0x7fffb676fbc0) at 
/home/vpp/build-data/../src/vnet/gre/gre.c:412
#2  0x00007ffff769b2aa in dispatch_node (vm=0x7ffff791d1a0 <vlib_global_main>, 
node=0x7fffb6c87600, type=VLIB_NODE_TYPE_INTERNAL, 
dispatch_state=VLIB_NODE_STATE_POLLING,
    frame=0x7fffb676fbc0, last_time_stamp=35926090675277) at 
/home/vpp/build-data/../src/vlib/main.c:1010
#3  0x00007ffff769b88d in dispatch_pending_node (vm=0x7ffff791d1a0 
<vlib_global_main>, pending_frame_index=4, last_time_stamp=35926090675277)
    at /home/vpp/build-data/../src/vlib/main.c:1160
#4  0x00007ffff769daa4 in vlib_main_or_worker_loop (vm=0x7ffff791d1a0 
<vlib_global_main>, is_main=1) at /home/vpp/build-data/../src/vlib/main.c:1630
#5  0x00007ffff769db53 in vlib_main_loop (vm=0x7ffff791d1a0 <vlib_global_main>) 
at /home/vpp/build-data/../src/vlib/main.c:1649
#6  0x00007ffff769e2ad in vlib_main (vm=0x7ffff791d1a0 <vlib_global_main>, 
input=0x7fffb5704fb0) at /home/vpp/build-data/../src/vlib/main.c:1806
#7  0x00007ffff76e0d64 in thread0 (arg=140737346916768) at 
/home/vpp/build-data/../src/vlib/unix/main.c:617
#8  0x00007ffff6927560 in clib_calljmp () at 
/home/vpp/build-data/../src/vppinfra/longjmp.S:128
#9  0x00007fffffffd350 in ?? ()
#10 0x00007ffff76e1223 in vlib_unix_main (argc=31, argv=0x653800) at 
/home/vpp/build-data/../src/vlib/unix/main.c:682
#11 0x0000000000406202 in main (argc=31, argv=0x653800) at 
/home/vpp/build-data/../src/vpp/vnet/main.c:241
(gdb)

Is there any examples about xcrw ? Is there any configuration I missed?

Thanks,
Xyxue
From: John Lo (loj)<mailto:l...@cisco.com>
Date: 2018-05-16 16:02
To: 薛欣颖<mailto:xy...@fiberhome.com>; Neale Ranns 
(nranns)<mailto:nra...@cisco.com>; vpp-dev<mailto:vpp-dev@lists.fd.io>
Subject: Re: [vpp-dev] problem in xcrw testing
Hi Xyxue,

The L2 cross connect CLI via either xconnect or xcrw would put the source/input 
interface into L2 mode and setup an one-directional cross connect to the 
specified peer/output interface.  The expectation is there should be a 
xcrw/cross connect CLI for the other direction specifying the other interface 
as source/input so it will also be in L2 mode.

Hope this help, with regards,
John

From: 薛欣颖 <xy...@fiberhome.com<mailto:xy...@fiberhome.com>>
Sent: Wednesday, May 16, 2018 3:46 AM
To: John Lo (loj) <l...@cisco.com<mailto:l...@cisco.com>>; Neale Ranns (nranns) 
<nra...@cisco.com<mailto:nra...@cisco.com>>; vpp-dev 
<vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io>>
Subject: Re: Re: [vpp-dev] problem in xcrw testing

Hi John,

The description of 'set interface l2 xcrw' in docs is that 'Add or delete a 
Layer 2 to Layer 3 rewrite cross-connect'.
After put the gre tunnel in l2 mode , there is a 'Layer 2 to Layer 2 rewrite 
cross-connect'. Is there anything wrong in my comprehension?



Thanks,
Xyxue
________________________________

From: John Lo (loj)<mailto:l...@cisco.com>
Date: 2018-05-15 20:32
To: 薛欣颖<mailto:xy...@fiberhome.com>; Neale Ranns 
(nranns)<mailto:nra...@cisco.com>; vpp-dev<mailto:vpp-dev@lists.fd.io>
Subject: Re: [vpp-dev] problem in xcrw testing
The GRE tunnel needs to be put in L2 mode so it can be a valid l2-output 
interface. You can do that by putting the GRE tunnel into a bridge domain, or 
xconnect it to peer interface:

vpp# set int l2  bri ?
  set interface l2 bridge                  set interface l2 bridge <interface> 
<bridge-domain-id> [bvi] [shg]
vpp# set int l2 xconnect ?
  set interface l2 xconnect                set interface l2 xconnect 
<interface> <peer interface>

Regards,
John

From: vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io> 
<vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io>> On Behalf Of xyxue
Sent: Tuesday, May 15, 2018 8:10 AM
To: Neale Ranns (nranns) <nra...@cisco.com<mailto:nra...@cisco.com>>; vpp-dev 
<vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io>>
Subject: Re: [vpp-dev] problem in xcrw testing


Hi Neale,

After I changed my configuration (the configuration and the trace info is shown 
below)

create host-interface name eth1 mac 00:50:56:3a:32:d2
create host-interface name eth5 mac 00:50:56:31:35:92
set interface ip address host-eth1 11.1.1.2/24
create gre tunnel src 11.1.1.2 dst 11.1.1.1 teb
set interface l2 xcrw host-eth5 next teb-gre0-output rw 
4500005800000000fd2fa5720b0101020b01010100006558




VPP# show trace
------------------- Start of thread 0 vpp_main -------------------
Packet 1

00:01:18:847131: af-packet-input
  af_packet: hw_if_index 2 next-index 4
    tpacket2_hdr:
      status 0x20000001 len 78 snaplen 78 mac 66 net 80
      sec 0x5afaa73c nsec 0x2c4032d7 vlan 0
00:01:18:847197: ethernet-input
  IP4: 00:50:56:c0:00:05 -> 00:50:56:c0:00:04
00:01:18:847305: l2-input
  l2-input: sw_if_index 2 dst 00:50:56:c0:00:04 src 00:50:56:c0:00:05
00:01:18:847323: l2-output
  l2-output: sw_if_index 4 dst 00:50:56:c0:00:04 src 00:50:56:c0:00:05 data 08 
00 45 01 00 40 00 01 00 00 40 01
00:01:18:847336: error-drop
  l2-output: L2 Output interface not valid




It doesn't seem to be in effect. Is there something I missed?




Thanks,
Xyxue
________________________________

From: Neale Ranns<mailto:nra...@cisco.com>
Date: 2018-05-15 15:58
To: 薛欣颖<mailto:xy...@fiberhome.com>; 
vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io>
Subject: Re: [vpp-dev] problem in xcrw testing
Hi Xyxue,

The GRE tunnel needs to be in L2 mode, which in the case of GRE is known as 
‘transparent ethernet bridging’. So:
  create gre tunnel src 11.1.1.2 dst 11.1.1.1 teb

/neale






From: <vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io>> on behalf of xyxue 
<xy...@fiberhome.com<mailto:xy...@fiberhome.com>>
Date: Tuesday, 15 May 2018 at 08:50
To: "vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io>" 
<vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io>>
Subject: [vpp-dev] problem in xcrw testing


Hi guys,

I’m testing the xcrw . But the packet were 'error-drop'. My configuration and 
trace info is shown below:

create host-interface name eth1 mac 00:50:56:3a:32:d2
create host-interface name eth5 mac 00:50:56:31:35:92
set interface ip address host-eth1 11.1.1.2/24
create gre tunnel src 11.1.1.2 dst 11.1.1.1
set interface ip address gre0 100.1.1.2/24
VPP# set interface l2 xcrw host-eth5 next gre4-input rw 
4500005800000000fd2fa5720b0101020b01010100006558
VPP# set interface l2 xcrw xcrw0 next host-eth1-output rw 1234

VPP# show trace
------------------- Start of thread 0 vpp_main -------------------
Packet 1

00:00:22:692356: af-packet-input
  af_packet: hw_if_index 2 next-index 4
    tpacket2_hdr:
      status 0x20000001 len 78 snaplen 78 mac 66 net 80
      sec 0x5af559c7 nsec 0x8bb04a9 vlan 0
00:00:22:692493: ethernet-input
  IP4: 00:50:56:c0:00:05 -> 00:50:56:31:35:92
00:00:22:692706: l2-input
  l2-input: sw_if_index 2 dst 00:50:56:31:35:92 src 00:50:56:c0:00:05
00:00:22:692724: l2-output
  l2-output: sw_if_index 4 dst 00:50:56:31:35:92 src 00:50:56:c0:00:05 data 08 
00 45 01 00 40 00 01 00 00 40 01
00:00:22:692737: l2-xcrw
  L2_XCRW: next index 1 tx_fib_index -1
00:00:22:692753: gre4-input
  GRE: tunnel 0 len 88 src 11.1.1.2 dst 11.1.1.1
00:00:22:692771: error-drop
  gre4-input: GRE input packets dropped due to missing tunnel

Is there any problem in my configuration?

Thanks,
Xyxue
________________________________

Reply via email to