Hi Ivan,

VXLAN tunnel is usually associated with a BD (bridge domain) and always send 
ethernet packets as payload. So ethernet header should exist on packets 
received at the remote VXLAN tunnel end point. It is confusing why you stated 
remote side OVS does not see any L2 header.

On VPP side, as packet with DIP of 10.0.0.x is sent from vrf 1 via BVI into BD 
13, an ARP request will be sent within BD 13 to request resolution for the IP 
10.0.0.x. Once MAC is resolved (say MAC-D), then the packets as sent in BD 13 
over VXLAN tunnel should have an Ethernet header with DMAC as MAC-D and SMAC as 
that of the BVI MAC.

The most common way to tunnel IP4 payload into straight ip4-lookup is to use 
GRE tunnel. VXLAN is designed for L2 bridging, to send Ethernet packets to 
remote hosts with BDs in the same VXLAN segment. Regarding using VXLAN tunnel 
to send IP payload straight into ip4-lookup, you can look into VXLAN-GPE tunnel 
where there is mechanism to specify the VXLAN payload type via a protocol field 
in the VXLAN-GPE header to be ethernet, IP4, IP6, ... etc.

Regards,
John

-----Original Message-----
From: vpp-dev-boun...@lists.fd.io [mailto:vpp-dev-boun...@lists.fd.io] On 
Behalf Of Ivan Kelly
Sent: Thursday, November 03, 2016 11:17 AM
To: vpp-dev
Subject: [vpp-dev] ip4-lookup to vxlan and vice versa

Hi,

I'm trying to send route packets in VPP into a vxlan tunnel. I have it working, 
but I'm wondering if there's some cleaner adjacency magic to make things nicer.

Right now I have a bunch of packets, that I want tunneled somewhere else. These 
all have the destination ip 10.0.0.0/24.

I created the vxlan tunnel and a loopback on a bridge domain.
<snip>
create vxlan tunnel src 192.168.0.1 dst 192.168.0.2 vni 139 loopback create mac 
de:ad:be:ef:00:05 set int state loop0 up set int l2 bridge vxlan_tunnel0 13 1 
set int l2 bridge loop0 13 bvi set int ip table loop0 1 set int ip table 
vxlan_tunnel0 1 </snip>

I want traffic on vrf 1 with dst ip 10.0.0.0/24 to go into the tunnel, so I 
added a route ip route add table 1 10.0.0.0/24 via loop0

This ended up encapsulating the packets, but only from the ip header onwards. 
OVS is catching the packet at the other end, and ethernet headers are expected 
even though the addressing is ignored, so I had to add a rewrite, which would 
just add a dummy eth header.
ip route add table 1 10.0.0.0/24 via loop0 0xdeadbeef0003deadbeef00040800

I'm wondering is there any cleaner way basically say, route to this node, shift 
the buffer pointer back to the start of the ethernet header. Similarly, I'd 
like to have the vxlan tunnel dump straight into ip4-lookup, rather than having 
to go through l2 handling. Is this possible?

This is on 16.09 btw, so no fib2.

Regards
Ivan
_______________________________________________
vpp-dev mailing list
vpp-dev@lists.fd.io
https://lists.fd.io/mailman/listinfo/vpp-dev
_______________________________________________
vpp-dev mailing list
vpp-dev@lists.fd.io
https://lists.fd.io/mailman/listinfo/vpp-dev

Reply via email to