Hi,

I'm looking at doing some MPLS/VPLS stuff with OpenBSD, in particular using 'mpw' pseudowires. I've created a test network comprising two "PE" and two "P" hosts, to transport Ethernet traffic between service ports on the PE hosts across the MPLS network, based on an example I found online. I'm using a 6.3 snapshot from March 11th.

[firewall] = [em0][mpw0][PE1][em1] - [em0][P1][em1] - [em1][P2][em0] - [em1][PE2][mpw0][em0] = [host]

PE1 em0 and mpw0 are in a bridge, PE1 em1 is MPLS, P1 em0/1 are MPLS etc.

This is all working great, except for short outages which turn out to coincide with the ARP cache expiry time for the P router's IP address on the PE host.

When the ARP entry times out (or is manually deleted), the PE host doesn't ARP for the P router IP, but instead sends ARP who-has queries for other, definitely non-local things, such as the IP address for the other PE host's router-id. After a minute or so it finally ARPs for the P router IP and things work again.

This only happens when "ldpd" is running (and I think only when the pseudowires are actually up). If I stop "ldpd" on the PE host, ARP works fine as expected every time.

I guess I could fix this with static ARP entries, but that doesn't seem like quite the right thing. My test setup is running in Virtualbox VMs. I also replicated the issue under VMWare ESX using 'vic' interfaces.

Does anyone have any clues on this?

Thanks in advance,

Adrian Close

Reply via email to