目錄

前言
DLCI
Frame Relay Switching
  DTE (Data Terminal Equipment)
  DCE (Data Circuit-terminating Equipment)
Multipoint Frame Relay
Point to Point Sub-interface

前言

在設計 WAN 網路時,有多種不同的方法,Frame Relay 是其中一種。Frame Relay 是一套 Layer 2 的封裝協定,使用 Frame Relay 大大縮減了連接 WAN 的成本。所謂 Frame Relay 就是把訊息封裝到 Layer 2 的 Frame 裡面,然後在 Frame 裡面配置一個 10 Bits 的 DLCI 號碼,Frame Relay Switch 就可以憑這個 DLCI 號碼把 Frame 傳到相對應的目的地。

Frame Relay 是一個較經濟的 WAN 配置辦法。到底 Frame Relay 怎樣幫我們節省成本呢?以下有一個例子,假設一間公司有兩個辦公室,最簡單的方法就是用 Dedicated Line (專線) 把兩個 Site 連起來。

frame-relay

如果這家公司未來增加多一個 Site,就要再增加兩條專線將其接通,但一條專線價值不菲,而且每個 Router 也要增加 Interface Port 亦增加了成本,除非錢並不是考慮因素,否則,專線顯然並非理想的解決辦法。

frame-relay

Frame Relay 的出現就是讓我們可以透過 ISP 提供的 Frame Relay Network,連接不同的 Site 來建立 WAN 連線。ISP 用 Frame Relay Network 同時服務多個客戶,價格方便當然比專線便宜,而且每個 Router 只需要一個 Interface,兩者都可以在預算上省卻成本。

frame-relay

DLCI

DLCI (Data Link Connection Identifier) 是一組讓 Frame Relay Switch 閱讀的地址,就好像 Ethernet 裡面的 MAC Address 一樣,讓每一個 Frame 傳到相應的目的地。而這組 DLCI 只會在 Local Router 使用,所以每隻 Router 都有自己的 DLCI Mapping。要解釋 DLCI,可以用乘飛機作一個比喻,如我們要乘飛機去外地,去到機場便要知道在那一個閘口上機,上了飛機幾個小時後,到達目的地了,乘客就在另一個機場的某一個閘口下機,這個離開飛機的閘口號碼跟原本上機的閘口號碼並沒有任可關係,號碼通常會不同,也有很小的機會和上機時一樣。DLCI 就像這個閘口的號碼,每一個 Frame 在登上 Frame Relay Network 之前都要先放置一個 DLCI。到達 Frame Relay Network 的另一端,會變成另一個 DLCI 號碼。

我們可以用 GNS3 裡面內建的 Frame Relay Switch 來嘗試作一個簡單的 Frame Relay 實驗。首先把 Frame Relay Switch 拉出來,然後按右鍵選 Configure 去設定 DLCI 值。以下圖這個設定為例:即是說如果 DLCI 是 102 的 Frame 從 Port 1 進來,就把它改成 DLCI 201 送到 Port 2。留意這設定是雙向的,即是說 DLCI 201 的 Frame 從 Port 2 進來,也會改成 DLCI 102 送到 Port 1。

frame-relay

然後,把 R1 和 R2 與 Frame Relay Switch 連接如下圖:

frame-relay

要設定這組 Frame Relay 步驟非常簡單,全部在 Interface 裡面完成:

  1. 設定 IP Address
  2. 輸入 encapsulation frame-relay 來讓 Interface 知道使用 frame-relay 協定
  3. frame-relay interface-dlci <dlci> 設定 DLCI 號碼,根據 Frame Relay Switch 的設定,R1 應該使用 102,而 R2 應該使用 201

以下是 R1 及 R2 的設定:

hostname R1
!
interface Serial0/0
 ip address 192.168.12.1 255.255.255.0
 encapsulation frame-relay
 serial restart-delay 0
 frame-relay interface-dlci 102
hostname R2
!
interface Serial0/0
 ip address 192.168.12.2 255.255.255.0
 encapsulation frame-relay
 serial restart-delay 0
 frame-relay interface-dlci 201

如果設定沒問題的話,可以從 R1 Ping 到 R2,show frame-relay pvc 會見到有一條 PVC (Permenent Virtual Circuit) 正在 Active,而且有 Packets 在使用。

R1#ping 192.168.12.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/34/68 ms
R1#
R1#show frame-relay pvc
 
PVC Statistics for interface Serial0/0 (Frame Relay DTE)
 
              Active     Inactive      Deleted       Static
  Local          1            0            0            0
  Switched       0            0            0            0
  Unused         0            0            0            0
 
DLCI = 102, DLCI USAGE = LOCAL, PVC STATUS = ACTIVE, INTERFACE = Serial0/0
 
  input pkts 6             output pkts 6            in bytes 554
  out bytes 554            dropped pkts 0           in pkts dropped 0
  out pkts dropped 0                out bytes dropped 0
  in FECN pkts 0           in BECN pkts 0           out FECN pkts 0
  out BECN pkts 0          in DE pkts 0             out DE pkts 0
  out bcast pkts 1         out bcast bytes 34
  5 minute input rate 0 bits/sec, 0 packets/sec
  5 minute output rate 0 bits/sec, 0 packets/sec
  pvc create time 00:09:07, last time pvc status changed 00:07:52

另外,show frame-relay map 可以看到 IP 與 DLCI 的 mapping,情況就像在 Ethernet 看 ARP Table 一樣。在這個例子中 mapping 是自動產生的 (dynamic),因為 interface default 使用了 Inverse ARP,關於自動不自動的問題,然在先記一下就好,稍後我們才會嘗試手動設定 (static)。

R1#show frame-relay map
Serial0/0 (up): ip 192.168.12.2 dlci 102(0x66,0x1860), dynamic,
              broadcast,
              CISCO, status defined, active

Frame Relay Switching

剛才我們用 GNS3 的 Frame Relay Switch 來做實驗,其實 Cisco Router 也支緩 Frame Relay Switching,接下來我們把原來的 Frame Relay Switch 換成一隻 Router,看看怎樣用 Router 來執行 Frame Relay Switching。基本上 R1 及 R2 的設定都沒有更改,要學習的只是怎樣設定 FRSW。

frame-relay

再設定之前請先學習兩個大名:DTE 和 DCE。

DTE (Data Terminal Equipment)

DTE,全名是Data Terminal Equipment。一般而言,DTE 代表著用戶端的設備,例如上圖的 Frame Relay Network 中,R1 和 R2 就是 DTE。 Interface 預設設定成 DTE,所以 R1 和 R2 設定不用更改。

DCE (Data Circuit-terminating Equipment)

DCE,全名是Data Circuit-terminating Equipment。DCE 的用途是在網路內提供 Clocking 和Switching 服務,以及負責在 WAN 傳遞資料。一般用來形容 ISP 的設備,現在 FRSW 就是 DCE 了。由於 Interface 預設設定是 DTE,所以 FRSW 的 Interface 需要更改成 DCE 設定。

設定 FRSW 有以下幾個步驟:

  1. 使用 frame-relay switching 開啟 Router 的 Frame Relay Switch 功能
  2. 在 Interface 使用 encapsulation frame-relay 來讓 Interface 知道使用 frame-relay 協定
  3. 在 Interface 使用 frame-relay intf-type dce 把 Interface 設成 DCE
  4. 用 frame-relay route <dlci> interface <interface> <dlci> 來設定 Frame Relay Route。所謂 Frame Relay Route 其實就像之前設定 frame relay switch 的示範,讓 Router 知道 Frame 「上機和下機」的安排。

在 serial0/0 所設定的 frame-relay route 意思是:從 Serial 0/0 收到 DLCI 102 的 Frame 就傳到 Serial 0/1 而且把 DLCI 改為 201,在 Serial 0/1 則剛好相反。所以說,和之前設定圖像化的 Frame Relay Switch 是一樣的,只不過改成指令而已。

hostname FRSW
!
frame-relay switching
!
interface Serial0/0
 no ip address
 encapsulation frame-relay
 frame-relay intf-type dce
 frame-relay route 102 interface Serial0/1 201
!
interface Serial0/1
 no ip address
 encapsulation frame-relay
 frame-relay intf-type dce
 frame-relay route 201 interface Serial0/0 102

最後確定一下是否已經通行。

R1#ping 192.168.12.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 44/64/120 ms

現在我們再玩大一點,如上面的例子所示,客戶向 ISP 購買了 Frame Relay 服務之後,就會接上 ISP 的 Frame Relay Switch Cloud,在這個 Cloud 當中當然不會只有一隻 Frame Relay Switch,如果有超過一隻的話又要怎樣設定呢?我們看看以下的例子:

frame-relay

有兩個地方要注意的:

  1. 兩個 FRSW 中間多了一個 DLCI 111,設定 Route 時需要留意
  2. FRSW1 連接 FRSW2 的 Interface 不是 DCE,也不是 DTE,要使用 NNI
hostname FRSW1
!
frame-relay switching
!
interface Serial0/0
 no ip address
 encapsulation frame-relay
 serial restart-delay 0
 frame-relay intf-type dce
 frame-relay route 102 interface Serial0/1 111
!
interface Serial0/1
 no ip address
 encapsulation frame-relay
 serial restart-delay 0
 frame-relay intf-type nni
 frame-relay route 111 interface Serial0/0 102
hostname FRSW2
!
interface Serial0/0
 no ip address
 encapsulation frame-relay
 serial restart-delay 0
 frame-relay intf-type dce
 frame-relay route 201 interface Serial0/1 111
!
interface Serial0/1
 no ip address
 encapsulation frame-relay
 serial restart-delay 0
 frame-relay intf-type nni
 frame-relay route 111 interface Serial0/0 201

所以,無論 Frame Relay Switch Cloud 裡面有多少隻 Frame Relay Switch,設定都是大同小異的,目的都是為 Frame 「預設好行走的路徑」。

Multipoint Frame Relay

接下來我們體驗一下如何把多個 Site 透過 Frame Relay 連接,一般來說,購買 ISP 的 Frame Relay 服務是按 Connection 的數量來付款的,舉例:如果你有 n 個 Site 要做 Fully Mesh Topology 的連接,你就要購買 n(n-1) / 2 條 Connection,這是一個不可能的任務,除非錢不是問題吧!所以,我們多數會用 Hub And Spoke Topology,意思是只把所有 Remote Site 連接到 Head Quarter(HQ)。

frame-relay

 

要設定上圖的網絡,需注意以下幾點:

  1. R1 要到達 R2 和 R3 分別要使用不同的 DLCI,不能用 frame-relay interface-dlci <dlci> 來設定 DLCI 了,我們要用 frame-relay map ip <ip> <dlci> 逐一為不同的 IP 設定。
  2. 我們已經不能用 Inverse ARP 來取得 DLCI 和 IP 的 Mapping 了,所以 R2 和 R3 也要用 frame-relay map ip <ip> <dlci> 來設定
  3. R2 要透過 R1 到達 R3,因此除了 R1 的 Mapping 之外,也要為 R3 的 IP 額外增加一個 Mapping,同樣地,在 R3 的情況也一樣,要為 R2 的 IP 做 Mapping
  4. FRSW 要為每個 DLCI 做 Route 設定
hostname R1
!
interface Serial0/0
 ip address 192.168.123.1 255.255.255.0
 encapsulation frame-relay
 frame-relay map ip 192.168.123.2 102
 frame-relay map ip 192.168.123.3 103
hostname R2
!
interface Serial0/0
 ip address 192.168.123.2 255.255.255.0
 encapsulation frame-relay
 frame-relay map ip 192.168.123.1 201
 frame-relay map ip 192.168.123.3 201
hostname R3
!
interface Serial0/0
 ip address 192.168.123.3 255.255.255.0
 encapsulation frame-relay
 frame-relay map ip 192.168.123.1 301
 frame-relay map ip 192.168.123.2 301
hostname FWSW
!
frame-relay switching
!
interface Serial0/0
 no ip address
 encapsulation frame-relay
 frame-relay intf-type dce
 frame-relay route 102 interface Serial0/1 201
 frame-relay route 103 interface Serial0/2 301
!
interface Serial0/1
 no ip address
 encapsulation frame-relay
 frame-relay intf-type dce
 frame-relay route 201 interface Serial0/0 102
!
interface Serial0/2
 no ip address
 encapsulation frame-relay
 frame-relay intf-type dce
 frame-relay route 301 interface Serial0/0 103

最後確認一下從 R3 可以 Ping 通 R1 及 R2,而且試試 Traceroute R2 會發現是經過 R1 再到達 R2。

R3#ping 192.168.123.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.123.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 28/48/84 ms
R3#
R3#ping 192.168.123.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.123.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 68/81/104 ms
R3#
R3#traceroute 192.168.123.2

Type escape sequence to abort.
Tracing the route to 192.168.123.2

  1 192.168.123.1 108 msec 80 msec 36 msec
  2 192.168.123.2 168 msec 120 msec 72 msec

Multipoint Frame Relay 雖然設定上簡單,但對某些 Routing Protocol 會產生一些問題。首先,Multipoint Frame Relay 預設是不會 Forward Broadcast 的,也不會 Forward Multicast,所以如果要靠 Multicast 來連接的 Routing Protocol 會預到障礙。繼續使用剛才的 Topology ,我們用 EIGRP 來做例子:
三隻 Router 都設定好 EIGRP:

hostname R1
!
router eigrp 1
 network 192.168.123.0
hostname R2
!
router eigrp 1
 network 192.168.123.0
hostname R3
!
router eigrp 1
 network 192.168.123.0

但一直無法發現 Neighbor:

R1#show ip eigrp 1 neighbors
IP-EIGRP neighbors for process 1

因為 EIGRP 是用 Multicast 來傳送 Hello Message 的,Frame Relay 不送 Multicast 就無法成 Neighbor,解決方法是在使用 frame-relay map 時加入 broadcast 這個 keyword,這樣 Frame Relay 就能傳送 Broadcast 和 Multicast 了。

hostname R1
!
interface Serial0/0
 ip address 192.168.123.1 255.255.255.0
 encapsulation frame-relay
 frame-relay map ip 192.168.123.2 102 broadcast
 frame-relay map ip 192.168.123.3 103 broadcast
hostname R2
!
interface Serial0/0
 ip address 192.168.123.2 255.255.255.0
 encapsulation frame-relay
 frame-relay map ip 192.168.123.1 201 broadcast
 frame-relay map ip 192.168.123.3 201 broadcast
hostname R3
!
interface Serial0/0
 ip address 192.168.123.3 255.255.255.0
 encapsulation frame-relay
 frame-relay map ip 192.168.123.1 301 broadcast
 frame-relay map ip 192.168.123.2 301 broadcast

這樣才能成功成為 Neighbors:

R1#show ip eigrp 1 neighbors
IP-EIGRP neighbors for process 1
H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq
                                            (sec)         (ms)       Cnt Num
1   192.168.123.3           Se0/0            160 00:12:33   77   462  0  5
0   192.168.123.2           Se0/0            165 00:12:36   64   384  0  5

Multipoint 對 Routing Protocol 的另一個衝擊是 Split Horizon 問題。使用 Distance Vector 的 Routing Protocol 預設會開啟 Split Horizon 保護,使由某 Interface 入來的 Route 資訊不會於同一個 Interface 散播出去,防止 Route Loop。這遇到 Multipoint Frame Relay 就會發生了問題。

做個簡單實驗,在 R2 增加了一個 Loopback,IP 為 2.2.2.2,透過 EIGRP 發佈此網段。

hostname R2
!
interface Loopback0
 ip address 2.2.2.2 255.255.255.255
!
router eigrp 1
 network 2.2.2.2 0.0.0.0
 network 192.168.123.0

R1 收到了這 Route 但 R3 卻一直接收不到:

R1#show ip eigrp topology
IP-EIGRP Topology Table for AS(1)/ID(192.168.123.1)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - reply Status, s - sia Status

P 2.0.0.0/8, 1 successors, FD is 2297856
        via 192.168.123.2 (2297856/128256), Serial0/0
P 192.168.123.0/24, 1 successors, FD is 2169856
        via Connected, Serial0/0
R3#show ip eigrp topology
IP-EIGRP Topology Table for AS(1)/ID(192.168.123.3)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - reply Status, s - sia Status

P 192.168.123.0/24, 1 successors, FD is 2169856
        via Connected, Serial0/0

原因是 R1 從 Serial 0/0 收到 2.0.0.0/8 之後,因為 Split Horizon 的關係,不能在 Serial 0/0 傳給 R3,解決辦法是在 R1 關掉 Split Horizon。

R1(config-if)#no ip split-horizon eigrp 1

問題就解決了:

R3#show ip eigrp topology
IP-EIGRP Topology Table for AS(1)/ID(192.168.123.3)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - reply Status, s - sia Status

P 2.0.0.0/8, 1 successors, FD is 2809856
        via 192.168.123.1 (2809856/2297856), Serial0/0
P 192.168.123.0/24, 1 successors, FD is 2169856
        via Connected, Serial0/0
R3#
R3#ping 2.2.2.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 64/92/136 ms

Point to Point Sub-interface

另一個建立 Frame Relay 的方法是使用 Point to Point Sub-Interface。Sub-Interface 意思是把一個 Interface 分成兩個或以上,例如:Serial 0/0 分成 Serial 0/0.1 和 Serial 0/0.2 來連接兩個不同的網段,留意由於 Sub-Interface 不能使用相同的網段,因此在 IP Address 的配置上需要有一點轉變。

frame-relay

設定上圖的網絡要點如下:

  1. 把 R1 的 Serial 0/0.1 與 R2 的 Serial 0/0 放在同一網段,把 R1 的 Serial 0/0.2 與 R3 的 Serial 0/0 放在另一個網段
  2. 用 frame-relay interface-dlci <dlci> 設定 DLCI 號碼
hostname R1
!
interface Serial0/0
 no ip address
 encapsulation frame-relay
 serial restart-delay 0
!
interface Serial0/0.1 point-to-point
 ip address 192.168.12.1 255.255.255.0
 frame-relay interface-dlci 102
!
interface Serial0/0.2 point-to-point
 ip address 192.168.13.1 255.255.255.0
 frame-relay interface-dlci 103
hostname R2
!
interface Serial0/0
 ip address 192.168.12.2 255.255.255.0
 encapsulation frame-relay
 serial restart-delay 0
 frame-relay interface-dlci 201
hostname R3
!
interface Serial0/0
 ip address 192.168.13.3 255.255.255.0
 encapsulation frame-relay
 serial restart-delay 0
 frame-relay interface-dlci 301

完成設定後,基本上各 Router 都能透過 Inverse ARP 找到對方的 Mapping,R1 可以 Ping 通 R2 和 R3。

R1#show frame-relay map
Serial0/0.1 (up): point-to-point dlci, dlci 102(0x66,0x1860), broadcast
          status defined, active
Serial0/0.2 (up): point-to-point dlci, dlci 103(0x67,0x1870), broadcast
          status defined, active
R1#
R1#ping 192.168.12.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 20/63/112 ms
R1#
R1#ping 192.168.13.3

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.13.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 32/49/80 ms

但問題出現了,你會發現在 R2 不能 Ping R3。當然了!因為我們把 R2 和 R3 放在不同的網段嘛,所以我們要靠 Routing Protocol 來交換大家的 Route 啦!例如用 EIGRP。

hostanme R1
!
router eigrp 1
 network 192.168.12.0
 network 192.168.13.0
 auto-summary
hostname R2
!
router eigrp 1
 network 192.168.12.0
 auto-summary
hostname R3
!
router eigrp 1
 network 192.168.13.0
 auto-summary

與 Multipoint 不同,Point to point Sub-Interface 本來已支緩 broadcast,所以在建立 Neighbor 方面不成問題,另外,因為 Sub-Interface 在 Routing Protocol 的角度看來是兩個不同的 Interface,也不存在 Split Horizon 導致的問題,所以在 Routing Protocol 設定方面就簡單得多。現在從 R2 應該可以 Ping 到 R3 了!

R2#ping 192.168.13.3

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.13.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 68/84/108 ms