假設PC1與R2這一側的網絡屬於一個獨立的業務;PC2與R3這一側的網絡屬於另一個獨立的業務,由於設備資源有限或者其他方面的原因,這兩個獨立的業務的相關節點連接在R1上,也就是同一台設備上。那么在完成相關配置后,R1的路由表如上圖所示。
現在如果PC1要發一個數據包到2.2.2.2,那么這個數據包在到達R1后,R1就會去查看自己的路由表,發現有一條2.2.2.0/24的路由匹配,因此將這個IP包從GE0/0/2口轉發給192.168.100.2。這是沒有問題的,然而如果PC1要訪問3.3.3.0/24網絡呢?也是無壓力的,因為數據包到達R1后,她照樣查找路由表結果發現有匹配的路由,因此將數據包轉給R3。但是實際上,從業務的角度考慮,我們禁止PC1訪問3.3.3.0/24網絡。
那么怎么辦?
現在,我們在R1上創建兩個VRF:VRF1及VRF2,創建完成后,我們可以理解為,擁有了兩台虛擬路由器。當然,現在這兩台虛擬路由器上啥也沒有。
接下去我們將GE0/0/1口及GE0/0/2口綁定到VRF1;將GE0/0/3及GE0/0/4口綁定到VRF2。如此一來這兩台虛擬路由器就各自擁有了兩個物理接口。值得注意的是,這兩台虛擬路由器是雖然都在同一台物理設備上,但是卻是隔離的,他們將有自己的接口,自己的路由表,自己的ARP表等等相關的內容。我們的環境就變成有點像這樣:
我們看到,VRF1及VRF2有了自己的接口,也有了自己的路由表。並且相互之間是隔離的。
現在PC1要發送一個數據包到2.2.2.2,R1從接口GE0/0/1收到了這個數據包,由於此時GE0/0/1已經綁定到了VRF1,因此在執行目的IP的路由查找的時候,查的是VRF1的路由表,查找到匹配的路由條目后,間個數據包從其指示的GE0/0/1口轉發給下一跳192.168.100.2。
那么如果PC1要訪問3.3.3.3呢?數據包發到了R1,R1從接口GE0/0/1收到了這個數據包,於是它在做路由查找的時候,查的仍然是VRF1的路由表。經過查表后,它發現並無匹配的條目,因此將數據包丟棄。