Aug 14, 2012

BGP export(redistribution) policy without "match protocol" in JUNOS

今天在review公司core router時,發現有些BGP export policy有設match protocol,有些沒設,心中突然浮現一個問號?

「沒有設定match protocol可以進行static or connect redistribute to BGP的動作嗎?」

然後開始請教資深的同事們討論,結果大家有不同的認知,有的人認為只要export policy就可以將inet.0中的best route直接宣告給BGP neighbor,有的人認為應該要轉成BGP active route才能宣告給BGP neighbor…


其實這種情況常常發生在JUNOS設定中,因為網路的sample config都是很經典的大同小異,沒有太多的例外狀況可以參考,所以最後二話不說,直接實機演練來確認比較快,這也是我很頭痛的地方,只要沒有測試過Lab的JUNOS指令,我真的不能確定結果為何?(尤其是在不同platform及不同hardware combination的情況下)
  • 先把SRX設定成Packet Mode(很特別的指令 如果我沒上過JSEC的課程,打死也不知道設定packet mode會在這樣的階層下…family mpls你的存在跟packet mode到底有什麼關聯??? 真的很難理解啊!):
security {
    forwarding-options {
        family {
            mpls {
                mode packet-based;
            }
        }
    }
}
  • 再來設定兩個準備被轉成BGP的static & connected route (恕小弟偷懶,其他基本的interface設定就不在此列出)
interfaces {
    lo0 {
        unit 0 {
            family inet {
                address 100.100.100.100/32;
            }
        }
    }
}                                       
routing-options {
    static {
        route 200.200.200.0/24 discard;
    }
}
  • 然後開始設定prefix-list & policy-statement,我不設定match protocol直接利用prefix-list-filter來過濾路由,內容就是前面的loopback interface & static route
policy-options {
    prefix-list LO {
        100.100.100.100/32;
        200.200.200.0/24;
    }
    policy-statement LO_OUT {           
        from {
            prefix-list-filter LO exact;
        }
        then accept;
    }
}

  • 接著我先設定完另一邊的Router BGP(AS200)之後,開始設定本機的BGP相關設定:
routing-options {
    autonomous-system 100;
}
protocols {
    bgp {
        group EBGP {
            type external;
            neighbor 10.1.1.2 {
                export LO_OUT;
                peer-as 200;
            }
        }
    }
}

好了,大功告成後,確定BGP UP再來檢查宣告出去的BGP routes是否有包含static & connected routes:

root@SRX1# run show route advertising-protocol bgp 10.1.1.2 

inet.0: 4 destinations, 4 routes (4 active, 0 holddown, 0 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
* 100.100.100.100/32      Self                                    I
* 200.200.200.0/24        Self                                    I

答案揭曉! 真的是不需要特定的match protocol就可以將非BGP routes宣告給BGP neighbor,也就是說如果你想把所有的routes利用BGP轉發只要設定一個空的export policy(then accept)就能達到目的?...對不起,我還沒試過,所以我不敢百分之百肯定,下次有空再試給各位看看~

Post a Comment