<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <tt>Hi<br>
      <br>
      we've got a private AS with two uplinks to our ISP, and we've got
      a number of subnets that we advertise. Now we got a new assignment
      and it doesn't work as expected.<br>
      <br>
      Here is the situation:<br>
      <br>
      x.x.74.113<br>
      x.x.74.114<br>
      [DMZ1_box_1]<br>
          ||<br>
      [DMZ1_GW] -- OSPF -- [GW_1] -- OSPF -- [GW_2] -- OSPF -- ...<br>
      x.x.24.227<br>
                              |                 |<br>
                             BGP               BGP<br>
                              |                 |<br>
                           ISP_rtr_1        ISP_rtr_2<br>
                                \           /<br>
                               ISP & Internet<br>
      <br>
      Now if I advertise the new subnet /29 (or up to /31) from DMZ1_GW
      it gets propagated to both BGPs and the ISP correctly routes the
      traffic to GW_1 as it's closer to the box.<br>
      <br>
      However if I advertise the IP/32 from DMZ1_GW then for some reason
      the traffic is routed from Internet to GW_2 first. ISP confirmed
      they accept up to /32 from us.<br>
      <br>
      This is the relevant output from GW_1:<br>
      GW_1 ~ # birdc show route protocol ospf_eit</tt> <tt><tt>| grep
        ^x.x.74<br>
      </tt>BIRD 1.3.8 ready.<br>
      x.x.74.114/32 via 172.31.253.32 on tunVpnCust [ospf_eit 11:44] *
      E2 (150/1/10000) [x.x.24.227]<br>
      x.x.74.112/31 via 172.31.253.32 on tunVpnCust [ospf_eit 11:44] *
      E2 (150/1/10000) [x.x.24.227]<br>
      <br>
      GW_1 ~ # birdc show route export bgp_isp</tt> <tt><tt>| grep
        ^x.x.74<br>
      </tt>BIRD 1.3.8 ready.<br>
      x.x.74.114/32 via 172.31.253.32 on ifDmz1 [ospf_eit 11:44] * E2
      (150/1/10000) [x.x.24.227]<br>
      x.x.74.112/31 via 172.31.253.32 on ifDmz1 [ospf_eit 11:44] * E2
      (150/1/10000) [x.x.24.227]<br>
      <br>
      <br>
      This is the relevant output from GW_2:<br>
      GW_2 ~ # birdc show route protocol ospf_eit</tt><tt><tt> | grep
        ^x.x.74<br>
      </tt>BIRD 1.3.8 ready.<br>
      x.x.74.114/32 via 172.31.253.1 on tunO2Oorc4 [ospf_eit 11:44] * E2
      (150/11/10000) [x.x.24.227]<br>
      x.x.74.112/31 via 172.31.253.1 on tunO2Oorc4 [ospf_eit 11:44] * E2
      (150/11/10000) [x.x.24.227]<br>
      <br>
      GW_2 ~ # birdc show route export bgp_isp | grep ^x.x.74<br>
      BIRD 1.3.8 ready.<br>
      x.x.74.114/32 via 172.31.253.1 on tunO2Oorc4 [ospf_eit 11:44] * E2
      (150/11/10000) [x.x.24.227]<br>
      x.x.74.112/31 via 172.31.253.1 on tunO2Oorc4 [ospf_eit 11:44] * E2
      (150/11/10000) [x.x.24.227]<br>
      <br>
      As it is now a ping from outside to x.x.74.113 (that's advertised
      as /31) goes to GW_1, which is correct and a ping to x.x.74.114
      (that's advertised as /32) goes to GW_2, that's incorrect.<br>
      <br>
      How come? I can't see what am I doing wrong...?<br>
      <br>
      Any ideas?<br>
      <br>
      Thanks<br>
      <br>
      Michael<br>
    </tt>
  </body>
</html>