Juniper SRX (Junos OS) 使用 基於過濾器之轉送 (FBF) 來控制路由下一躍點(Next-Hop)的選擇
Juniper SRX (Junos OS) 使用 基於過濾器之轉送 (FBF) 來控制路由下一躍點(Next-Hop)的選擇
基於過濾器之轉送 (FBF - Filter-Based Forwarding)
FBF在作用與功能上類似於SSG5 ScreenOS的策略路由PBR (Policy-Based Routing) ,當一般的路由表設定(基於目的地的路由)無法滿足我們的路由需求時,我們就會用到FBF。
基於過濾器之轉送(filter-based
forwarding)讓您能夠使用過濾器來配置數據包篩檢程式, 根據標頭資訊對數據包進行分類, 如 ip 源位址、ip 目標位址、ip 協定欄位以及源和目標 TCP/UDP 埠號等。過濾器據此來控制流量下一躍點(next-hop)的選擇。如果數據包滿足過濾器的匹配條件, 則使用過濾器動作陳述式中指定的路由實例(routing-instance)來轉發數據包。
FBR一個比較典型的運用就是雙線(dual-WAN)做分流的運用。先分別建立兩個將數據包路由到兩條WAN的路由實例,然後再使用防火牆過濾器(firewall filters)來對數據包進行分類,最後則使用過濾器動作陳述式中指定的路由實例(routing-instance)來轉發數據包。
數據包分類
過濾器可以檢查數據包的標頭欄位來對數據包進行分類。這些欄位包括以下內容:
l
來源 和/或 目的 IP 位址。
l
協定號碼 (Protocol number)。
l
來源 和/或 目的 埠號 (port numbers)。
l
IP 優先順序值 (IP precedence value)。
l
DSCP值(DSCP value) 。
l
IP選項 (IP options)。
l
TCP旗標 (TCP flags)。
l
數據包長度 (Packet length)。
l
ICMP種類 (ICMP type)。
l
傳入 和/或 傳出 的邏輯或物理介面。
過濾器操作(Filter Actions)
如果數據包滿足過濾器準則,
則可以指定稱為 <routing-instance> 的過濾器操作。此過濾器操作允許您指定用於轉發與過濾器條件匹配的通信的路由表實例。一旦確定了路由表, 就會發生傳統的基於目的地的路由(destination-based routing)。除了路由實例操作之外, 還可以在過濾器中指定以下操作:
l
警報 (Alert)。
l
計數 (Count)。
l
系統日誌 (Log)。
l
輸出佇列 (Output-queue)。
l
數據包丟失優先級 (PLP)。
l
管制 (Police)。
l
示範 (Sample)。
圖1顯示了一個數據包流示範,其中輸入數據包過濾器用於對數據包進行分類,每個數據包都將根據數據包分類過程的結果,使用不同的路由表轉發到不同的下一躍點(next-hop)。
在此示範中,傳入的數據包到達介面 In_if_1。數據包轉發引擎 (PFE) 使用輸入數據包過濾器檢查每個數據包。如果數據包與過濾器的術語1匹配,則基於過濾器之轉送會使用 RTT_A。如果數據包與過濾器的術語2匹配,則基於過濾器之轉送會使用 RTT_B。如果數據包與過濾器的術語3匹配,則基於過濾器之轉送使用 RTT_C. RTT
示範
本節提供示範語法,說明如何在瞻博網路路由器上配置基於過濾器之轉送。第一個配置片段定義了一個數據包過濾器,它根據數據包的源位址將客戶通信定向到 sp 1 或 sp 2 中的下一躍點(next-hop)路由器。
圖2顯示了此示範的網路拓撲。
如果數據包有分配給 SP
1客戶的源位址,則基於過濾器之轉送使用 sp1-route-table。如果數據包有分配給 SP 2 客戶的源位址,則基於過濾器之轉送使用
sp2-route-table。如果一個數據包與上述任一條件都不匹配,則過濾器接受該數據包,然後使用標準的
inet.0 路由表來發生基於過濾器之轉送。
下面的配置定義了過濾器classify-customers所引用的路由實例
PS:在路由實例之中每增加一個實例(instance),就會在路由表中一併增加一份相對應的路由表(與路由主表不同的副表)。
routing-instances {
sp1-route-table {
instance-type
forwarding;
routing-options {
static {
route
0.0.0.0/0 next-hop 10.0.0.1; /* sp1預設路由 */
}
}
}
sp2-route-table {
instance-type
forwarding;
routing-options {
static {
route
0.0.0.0/0 next-hop 10.0.0.2; /* sp2預設路由 */
}
}
}
}
請在CLI配置模式下輸入下列命令:
set routing-instances sp1-route-table instance-type forwarding
set routing-instances sp1-route-table routing-options static
route 0.0.0.0/0 next-hop 10.0.0.1
set routing-instances sp2-route-table instance-type forwarding
set routing-instances sp2-route-table routing-options static
route 0.0.0.0/0 next-hop 10.0.0.2
下列設定乃是將路由實例中的路由資訊與inet介面路由連結並將其匯入路由表之中。
routing-options {
interface-routes {
rib-group inet
fbf-group;
}
static {
route 0.0.0.0/0
next-hop [ 10.0.0.1 10.0.0.2 ]; /* 預設路由,在此非必要可省略 */
}
rib-groups {
fbf-group {
import-rib [
inet.0 sp1-route-table.inet.0 sp2-route-table.inet.0 ];
}
}
}
請在CLI配置模式下輸入下列命令:
set routing-options interface-routes rib-group inet fbf-group
set routing-options static route 0.0.0.0/0 next-hop 10.0.0.1
set routing-options static route 0.0.0.0/0 next-hop 10.0.0.2
set routing-options rib-groups fbf-group import-rib inet.0
set routing-options rib-groups fbf-group import-rib
sp1-route-table.inet.0
set routing-options rib-groups fbf-group import-rib
sp2-route-table.inet.0
下列為firewall
filter 的設定,作用乃是根據不同的篩選條件去選擇相對應的routing-instances路由表。
firewall {
filter
classify-customers {
term sp1-customers {
from {
source-address { /* 要轉送到SP 1 的網段,SP 1 的前綴列表
*/
}
}
then {
routing-instance sp1-route-table; /* 符合匹配條件的流量使用
sp1-route-table.inet.0 路由表 */
}
}
term sp2-customers {
from {
source-address { /* 要轉送到SP 2 的網段,SP 2 的前綴列表
*/
}
}
then {
routing-instance sp2-route-table; /* 符合匹配條件的流量使用
sp2-route-table.inet.0 路由表 */
}
}
term default { /* 預設路由,放行所有的流量,若不放行則只有符合上述匹配條件的流量能通過套用過濾器的介面 */
then {
accept; /* 在此放行的流量皆使用inet.0路由表 */
}
}
}
}
請在CLI配置模式下輸入下列命令:
set firewall filter classify-customers term sp1-customers from
source-address 10.1.1.0/24
set firewall filter classify-customers term sp1-customers from
source-address 10.1.2.0/24
set firewall filter classify-customers term sp1-customers then
routing-instance sp1-route-table
set firewall filter classify-customers term sp2-customers from
source-address 10.2.1.0/24
set firewall filter classify-customers term sp2-customers from
source-address 10.2.2.0/24
set firewall filter classify-customers term sp2-customers then
routing-instance sp2-route-table
set firewall filter classify-customers term default then accept
下面的設定乃是在客戶端ge-0/0/5介面上啟用防火牆過濾器classify-customers。
interfaces {
ge-0/0/5 {
unit 0 {
family inet {
filter {
input
classify-customers;
}
}
}
}
}
請在CLI配置模式下輸入下列命令:
set interfaces ge-0/0/5 unit 0 family inet filter input
classify-customers
root@srx220> run show security flow
session
要查看路由表,請在CLI配置模式下輸入下列命令:
root@srx220> show route