<div><div dir="auto">Thanks for the suggestion, Vincent. I am using VTI interfaces for this, similar to what’s documented on the strongswan page.</div><div dir="auto"><br></div><div dir="auto">After reading your blog, I gave each tunnel a different mark value, which seemed to do the trick. I’m going to monitor the status of this throughout the day, but after making that change, all of my tunnels have been able to establish a BGP session. </div><div dir="auto"><br></div><div dir="auto">Thanks again for the help. Nice blog post, by the way. </div><br><div class="gmail_quote"><div>On Sun, Nov 12, 2017 at 03:52 Vincent Bernat <<a href="mailto:bernat@luffy.cx">bernat@luffy.cx</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> ❦ 11 novembre 2017 23:44 -0600, Chris Stein <<a href="mailto:bksteiny@gmail.com" target="_blank">bksteiny@gmail.com</a>> :<br>
<br>
> Individually, bird is able to establish a session on both tunnels at every<br>
> remote VPC, so I know that works. Occasionally, I have noticed that<br>
> established connections will disconnect with a “Hold timer expired”.<br>
> There’s something I’m missing/overlooking in the config to allow all<br>
> sessions to be active.<br>
<br>
I think BIRD is receiving a remote route that would replace the route<br>
used to reach the neighbor. Are you using route-based tunnels (with VTI<br>
interfaces)? If yes, "ip route show" output would help to<br>
understand. Otherwise, "ip xfrm policy" would help.<br>
<br>
If you want a working setup similar to yours (a tad more complex since<br>
it involves multiple routing tables), here is one:<br>
<br>
 <a href="https://vincent.bernat.im/en/blog/2017-route-based-vpn" rel="noreferrer" target="_blank">https://vincent.bernat.im/en/blog/2017-route-based-vpn</a><br>
--<br>
Use self-identifying input.  Allow defaults.  Echo both on output.<br>
            - The Elements of Programming Style (Kernighan & Plauger)<br>
</blockquote></div></div>