Outline
Introduction
IP Address & MAC Address
TCP/UDP/ICMP
IP Gateway, Network Mask, TTL
Routing Protocol
Network Address Translation (NAT)
Domain Name System (DNS)
Dynamic Host Configuration Protocol (DHCP) / Asymmetric Digital Subscriber Line (ADSL)
HyperText Transfer Protocol (HTTP) Protocol
Virtual Private Network (VPN)
Overview
Routing Protocol概述
RIP-Routing Information Protocol
Routing相關名詞簡介
OSPF - Open Shortest Path First
Zebra簡介
實驗導引-實驗 6.1 利用Zebra實作RIP 設定靜態路由
設定動態路由
比較靜態路由與動態路由的差異
了解RIP的運作機制
目的
期望讀者可以使用Linux 設計成一簡單的Router,進而可以了解Routing Protocol
以學習目的而言,更重要的是如何運用與實作一 台Router
僅使用Open Source的Linux 並不能設計為 最好的Router,這僅是幫助讀者了解Router 的第一步。事實上,不應該使用一般電腦當作校 園骨幹網路的Router,因為一般電腦硬體設計 與軟體效能上皆必須進行改進前言─
一般PC不能當作骨幹網路的 Router理由如下 個人電腦的架構,沒有針對 Packet 與網路介面的處理 特別設計
若 Routing 皆使用軟體的話,無法即時進行 Routing Table 的查詢,雖然還是可以執行 Router 的功能,但 效能差
個人電腦的設計非針對長時間工作設計,散熱與安全 是更大的問題
前言─
Linux Router
Linux 無法取代現有之大型Router 功能: 搜尋Routing Table 之速度未最佳化
散熱與安全
Linux Router 可提供小網路之Routing 選擇CYUT NC
Routing Protocol概述
Routing Protocol
網路 Packet 的傳送必須經過一台又一台的網 路設備,一般來說我們稱能夠轉送網路 Packet 的網路設備
Packet 沒有智慧,Packet 必須由 Router 決策往哪一方向繼續前進(即由Router 的哪一 個網路介面輸出)
判斷「Packet 該往哪裡去」是根據下列兩者的 資訊: 靜態設定的 Routing (Static Route)
賴以學習的Routing Protocol
多路 Packet 傳送路徑
Routing Protocol ─ 根據以下的設計哲學
有根據之資訊的取得並整理成方便查詢的決策根據 由鄰近的 Router 使用相同通訊協定,利用網路程式將本 身 Routing的資訊送給鄰近的 Router
當收到鄰近 Router 的 Route (Routing),結合本身現有 的 Routing資訊,進行最佳路徑的選擇 ,形成路徑的選 擇表格(最合宜的 Routing Table 或 Forwarding Table)
有效查詢有根據之資訊 設計高效能的軟、硬體 Routing Table 或 Forwarding Table 的查詢單元(要有好的軟、硬體的搜尋演算法)
選擇與決策 Routing (Route) 根據每一進入 Router 的 Packet 資訊,例如 Destination
Routing Protocol
好的 Routing Protocol 具有以下條件 基本的安全機制不被偽裝、不同等級之網路要有不同 之資訊、不能太佔用頻寬、穩定且不造成網路迴路
必需足夠且有效地建立此查詢的表格知識,不能計算 量過高
必需能幫助 Router 正確地選擇與決策Routing,並可 適當的更新此決策
Routing相關名詞簡介
Autonomous System - 自主系統
由於在網路上有成千上萬的Router,這一個一個 Router 之間的互動關係或是資訊交換與管理機制 會是很大的問題
在管理或是實作上的考量後,我們以區域為單位,將網路分割成許多的「小」的系統分散式處理,各 自負責單位內之 Routing
以區域為單位,將網路分割成小單位:Autonomous System (AS)
申請AS必須向Internet Assigned Numbers Authority (IANA: 各項網際網路通信協定參數 的總註冊中心,http://www.iana.org) 申 請,並且每個AS 都會被配發特定不重複的一個號 碼,稱為Autonomous System Number圖例說明
Autonomous System B Autonomous System A
Router X
Router 3
Router 1 Router 2
Network α
Network 1 Network 2 Network A Network B
同一個AS中的Router及網路使用相同的 Routing Protocol (e.g. RoutingInformation Protocol-RIP or Open Shortest Path First-OSPF)
AS與AS相接的Router稱為AS Boundary Router (ASBR) (e.g. Router X and 3)
不同AS間使用之Routing Protocol為 Border Gateway Protocol (BGP)IGP和EGP
IGP:Interior Gateway Protocol,AS
內各Router和網路的 Routing Protocol EGP:Exterior Gateway Protocol,AS
與AS間之 Routing
常見之 EGP:Border Gateway Protocol (BGP)
常見之 IGP:Interior Gateway Routing Protocol (IGRP)、Open Shortest Path First (OSPF)、Routing InformationProtocol (RIP)
BGP - Border Gateway Protocol
EGP - 於 AS 之間傳播
在 Routing資訊中增加AS路徑和其他等附帶屬 性,來建構自主系統的拓撲圖,消除 Routing 的環路
選擇 Routing 並控制 Routing 之傳播而非計 算 Routing 路徑
BGP Peers - BGP 對等體: BGP 中的相鄰的 AS 稱為對等體
分為 EBGP - External BGP 和 Internal BGP
Interior Gateway Protocol(IGP)
說明:內部閘道通訊協定
功能:閘道之路徑選擇資訊交換
用途:獨立系統之內(Within Autonomous system)之閘道路徑選擇
產品:TCP/IP通訊服務核心軟體、Router、Gateway
Exterior Gateway Protocol(EGP)
說明:外部閘道通訊協定
功能:閘道之可送達網路位址報告
用途:獨立系統之間(BetweenAutonomous systems)之閘道路徑選擇
產品:TCP/IP通訊服務核心軟體、Router、Gateway
圖例說明
Autonomous System B Autonomous System A
Router X
Router 3
Router 1 Router 2
Network α
Network 1 Network 2 Network A Network B EGP
IGP
CYUT NC
RIP-Routing Information Protocol
演進
最初由Xerox網路系統的Xerox Parc通訊協定 而設計
RIP (RFC1058)被提出之後有許多缺陷
在RFC1388中提出了改進的RIP-2,並在RFC 1723和RFC 2453中進行了修訂,目前最新的 版本為RFC2453
RIP-2定義了一套有效的改進方案,新的RIP- 2支持子網 Routing選擇,支援CIDR,支援群 播 (multicast),並提供了驗證機制RIP - Routing Information Protocol
採用距離向量(Distance Vector)演算法,根距離向量 據距離選擇 Routing
距離:Router 經過的個數(Hop)
Router 收集所有可到達目的地的不同Routing,並且保存有關到達每個目的地的最少 站點數的Routing資訊。同時Router 也把所 收集的Routing資訊用RIP協議通知相鄰的其 它Router
規定Router每30 秒必須將本身路由器之所有 內容傳給相鄰的Router
UDP Base,使用 Port 520,最多可達 15 HopsRIP優缺點
優點: 簡單、雖不可靠但方便使用,因此使用非常廣泛
對於小型網路,RIP就所佔頻寬而言非常小,易於設 置、管理和實作
缺點: 多個網路易出現迴路,可解決但會耗掉一定程度之頻 寬 (Sol. (1) Split Horizon RFC 2453, (2) Triggered Update: 30 sec broadcast routing information)
允許的最大站點數為15 Hops,任何超過15個Hop的目 的地均被記錄為不可達,因此RIP使用只適用於小型的 網路
Hop 數並不代表實際之距離
RIP ─ 舉例說明
RIP是以經過router數做為測量依據,並非以 連線頻寬來選擇
所以有可能選擇到較慢的路徑來傳遞封包 路徑二hops數雖少但速度慢,RIP會選擇此路徑
RIP ─ 收斂過慢
Network 1
Network 1
Network 1
R1往Net 1 Hop=16 (不可到達)
Broadcast this information R2往Net 1 Hop=2
Update R1往Net 1 Hop=2+1=3, TTL-1
R1往Net 1 Hop=3>2 (R2往 Net 1 ), do nothing
…
Time out, remove the entry: R2往Net 1 Hop=2 Update R1往Net 1
Hop=2+1=3, TTL-1
R2往Net 1 Hop=3+1=4 R1往Net 1 Hop=16>2 (R2 往Net 1 ), do nothing
…
R2往Net 1 Hop=16
分割範圍(Split Horizon)
加速Routing收斂
主要功能:從一個Router學得的路徑將不會含 在RIP Packet中送回原RouterNetwork 1
當R1與Net1斷線,
R1不會將Net1的路
R2與R3 到Net1 的路徑資訊互相 傳遞,直至
Hop=16
觸發更新(Triggered Update)
如網路上沒改變,更新資料是以每30秒為週期送 出。如果有改變類路由器就可立即送出它的更新 路徑表,這方法稱為觸發性更新。
觸發性更新可以提高穩定度,當路由器收到改變 訊息後,立即送出自已的更新內容,這樣做平均 時間遠小於15秒。Network 1
Disconnected to Network 1
Disconnected to Network 1
距離向量範例
各節點的初始距離表
各節點第一次交換後的距離表
各節點第二次交換後的距離表
各節點第三次交換後的距離表
各節點最後的距離表
Note: 網路層通訊協定
routing table Routing Protocols
•path selection
•RIP, OSPF, BGP
IP Protocol
•addressing conventions
•datagram format
•packet handling conventions ICMP protocol
•error reporting
•router “signaling”
Transport layer: TCP, UDP
Link layer physical layer Network
Layer
RIPv1 Packet 格式
metric 必須為零 必須為零
IP位址 Address Family Identifier 必須為零
version 必須為零 command
0 7 15 31
Routing metrics
Routing entities keep a database (look up table) of basic information based on
numeric result s (metric) of an algorithm to forward a datagram onward to its next
destination.
Each entity participating in routing
decisions sends update messages to its neighbour.
In order to provide complete network
routing information every router within the AS must participate in the protocol.
Each router has a lookup table which
contains one entry for every destination
RIP五種指令 (in command field)
1.
request:要求回應的系統全部或部份的 Routing Table2.
response:包含部份或全部發送者的 Routing Table,用來回應Request Packet 或者是發送者送的更新 Packet3.
traceon:已經不再使用的command4.
traceoff:已經不再使用的command5.
reserved:由Sun Microsystems保留使 用
Address Family Identifier (AFI) 因RIP設計用於攜帶多種不同協定的routing information,故需此一欄位
指使用的address family
E.g. IP: AFI=2
CYUT NC
OSPF - Open Shortest Path First
OSPF概述
演進 OSPF:RFC 1131
OSPF v2:RFC 1247 Æ RFC 1583 Æ RFC 2178 而 到最近一個版本為 1998 年 4 月RFC 2328
優點 支援各種不同 authentication ,並且允許各個系統或 區域採用互不相同的authentication
為dynamic routing protocol ,對於網路的拓撲結構變 化可以迅速地做出反應,提供短的收斂期
支援Classless Inter-Domain Routing (CIDR)地址
缺點OSPF
OSPF是一種Link-State Algorithm,每個 router都知道整個AS的拓樸(Topology)狀 況。
根據連線狀態(Link State)決定
連線狀態 Packet 傳送 的路徑
有階層的觀念
依據 Routing Traffic,定時計算出Shortest Path 以建立、更新 Shortest-Path Tree
計算 Shortest Path 之依據: Cost:Router之間的傳送速率及花費成本
目前的 Cost 是以 Metric 來定義
Metric = 100,000,000 bps / Bandwidth
頻寬越大的線路其 Metric 越小,視為距離越近
OSPF
Flooding: 每個router必須要將本身與哪些
neighbor相鄰的訊息傳送到整個AS。 Security: 所有router間交換的訊息需要被認
可(authenticated),防止錯誤的訊息影響到 正常的routing table。 Multiple same-cost paths: 到達某目的地
可能有多重路徑(相同cost)可以選擇。OSPF步驟
1.
兩台 Router 先進行 Discover 找尋鄰近的 Router2.
交換彼此的 Link State Advertisement (LSA) 訊息,並建立 LSA 資訊3.
逐步散播 LSA 資訊4.
告知鄰近 Router,完成交換OSPF ─ Hello Packet
Router間互傳Hello Packet,來找尋鄰近的 Router Router 1會送Hello Packet給Router 2、Router 3及 Router 4
同時Router 1也會接收到由Router 2、3及4傳來的 Hello Packet
藉由這週期性發出的Hello Packet,可得到鄰近Router Link State資訊
將這些資訊組合建立成一 LSA(Link State Advertisement)資訊
OSPF 範例
Steps for building routing table for node D
A
D
C
5 B
10
11 2
3
(D, 0, -) (C, 2, C)
(B, 5, B) 7
(A, 10, C) (D, 0, -)
(C, 2, C) (B, 5, B) 6
(A, 12, C) (D, 0, -)
(C, 2, C) (B, 5, B) 5
(B, 5, B) (A, 12, C) (D, 0, -)
(C, 2, C) 4
(B, 11, B) (D, 0, -)
(C, 2, C) 3
(B, 11, B) (C, 2, C) (D, 0, -)
2
(D, 0, -) 1
Tentative Confirmed
Step
Data structure
(Neighbor, Cost, NextHop)
選最小cost 加入routing table
New node
OSPF 和網路組織架構(階層式)
Hierarchical OSPF
Border Gateway Protocol (BGP)
BGP邊界閘道通訊協定 最早在1989年提出(BGP1),1993年提出(BGP4)
使用TCP傳送routing information with port number 179
網路的大小沒有限制
BGP provides each AS a means to:1.Obtain subnet reachability information from neighboring ASs.
2.Propagate the reachability information to all routers internal to the AS.
3.Determine “good” routes to subnets based on reachability information and policy.
Allows a subnet to advertise itsexistence to rest of the Internet:
“ I am
Note
BGP: 著眼點是選擇最好的routing並控制routing的傳播(不在於發現和計算routing)
IGP: 發現和計算routingBGP basics
BGP peers: BGP的鄰居(分成2類) EBGP: 2個BGP分屬不同AS (e.g. (3a,1c), (1b, 2a))
IBGP:2個BGP屬於相同AS (e.g. (3a, 3c), (3a, 3b))
3b
1d 3a
1c
2a AS 3
AS 1
AS 2
1a
2c 2b 1b
3c
EBGP session
BGP 把從BGP獲得的routing向其所有的BGP peers通告
(包含IBGP, EBGP)
把從IBGP獲得的routing(不向IBGP peers通告)向 EBGP通告,且要保證IBGP與BGP同步(i.e. routing information相同)
BGP messages
BGP的透過TCP作訊息交換。
BGP message的種類: OPEN: 與對方建立TCP連線並且確認Sender。
UPDATE: 廣播新的path,或是取消舊的path。
KEEPALIVE: 目的是維持TCP連線(可能一段時間沒有 UPDATE訊息),也用來產生OPEN的ACKs。
NOTIFICATION:回報上述的訊息所產生的錯誤或是關 閉連線。
Internet inter-AS routing: BGP
BGP: Border Gateway Protocol.
Path Vector Protocol: 與Distance Vector相似。
Mechanism: router告知neighbor通往某個目的地的 path (sequence of ASs)。
Policy:管理者決定是否將這個path加入routing table。
CYUT NC
Linux Zebra
概說
GNU Zebra 是一套以TCP/IP為基礎來管理 Routing Protocol的免費軟體。
Zebra支援在RFC1771中描述的BGP- 4(Border Gateway Protocol 4)、RIPv1、RIPv2 以及OSPFv2。Zebra軟體 提供真正模組化的Routing Protocol的處理模 組
Zebra 不只支援 x86 架構的電腦,也可支援以 Linux 為基礎的 Network Processor特色
每一個Protocol都有自己的process
具彈性和可靠性 每個模組可允許快速的升級
可以保護因一個Protocol的錯誤而影響整個系統
Zebra架構
Linux Routing 控制模組
各不同的 Routing Protocol 有自己的 process
Zebra包括了幾個模組,每個模組都是一個 Daemon,可分為以下兩類: 管理的Daemon,如Zebra
實作Routing Protocol的Daemon,如BGPd、RIPd、
OSPFd
Daemon可視為長期於系統中執行的程式,以 提供必需的特定服務VTY (Visual Telnet tYpe Interface)
管理或實作Routing Protocol 的Daemon都 會在特定的Port聆聽VTY 的連接 如同 Cisco Router 一樣接收使用者的命令
透過Command Line Interpreter (CLI) 更改或增加目前的設定值,透過Telnet協定與 Daemon做溝通
VTY模式 VTY View Mode:唯讀的模式
VTY Enable Mode:可讀可寫的模式
VTY Other Mode:其他模式(Configuration mode、
Router Mode)
Zebra基本操作
1. 更改/usr/local/etc/中設定檔之檔名
zebra.conf.sample→zebra.conf
RIPd.conf.sample→RIPd.conf
ospf.conf.sample→ospf.conf
bgp.conf.sample→bgp.conf
2. 執行zebra –d(讓 Zebra成為一個daemon)
3. 啟動其他的 Routing Protocol(RIPd、OSPFd、
BGPd)
啟動 Routing Proctocol 如RIPd:輸入ripd –d 使其成為daemon
4. 進入Zebra的VTY設定
Zebra預設開啟的Port是2601(可藉由–P參數更改開啟的Port),
密碼為zebra(定義於zebra.conf)
其他的Routing Protocol如RIPd port為2602; ospf為2603; bgpd 為2604,此處的Port 是 Server 設定使用的Port 並非 Routing Protocol 本身的Port
5. 輸入”enable”進入enable mode
操作範例
啟動Zebra
進入VTY後為view mode中,只能顯示系統的訊
要切換至enable mode則輸入 “enable”進入enable mode,輸入 “disable” (或quit) 離開 enable mode進入view mode。
進入configure mode configure terminal
各Daemon主要的設定都是在configure mode內。 如設定某個界面的IP、裝置是否要啟動及是否允許 multicast
實驗導引
實驗 6.1 利用Zebra實作RIP
實驗 6.1 利用Zebra實作RIP
實驗目的
設定靜態路由
設定動態路由 利用Zebra實作RIP
比較靜態路由與動態路由的差異
了解RIP的運作機制實驗架構圖
在本實驗Host A, Host B及Host C都設定為 router
由Network 1到Network 2可有兩條路徑,如下圖
實驗架構圖(實體架構)
Step 1: 設定靜態路由
欲設定的靜態路由下圖所示設定實驗環境與靜態路由
Host A: ip route add 192.168.7.0/24 via 192.168.2.2
ip route add 192.168.6.0/24 via 192.168.2.2
Host B: ifconfig eth0 192.168.6.2 netmask 255.255.255.0
ip route add 192.168.7.0/24 via 192.168.6.3
ip route add 192.168.0.0/24 via 192.168.1.2
Host C: ifconfig eth0 192.168.6.3 netmask 255.255.255.0
ifconfig eth2 192.168.7.3 netmask 255.255.255.0
ip route add 192.168.2.0 via 192.168.6.2
ip route add 192.168.0.0 via 192.168.6.2
問題與討論 討論上述靜態路由的涵義
Step 2: 進行連線測試
Host A: ping 192.168.7.3
traceroute 192.168.7.3
封包路徑示意圖
其路徑如下圖所示Step 3: 設定動態路由前的準備
刪除之前步驟所設定的靜態路由
Host A: ip route del 192.168.7.0/24 via 192.168.2.2
ip route del 192.168.6.0/24 via 192.168.2.2
Host B: ip route del 192.168.7.0/24 via 192.168.6.3
ip route del 192.168.0.0/24 via 192.168.1.2
Host C: ip route del 192.168.2.0 via 192.168.6.2
ip route del 192.168.0.0 via 192.168.6.2
Step 4: 設定動態路由
設定Host AHostA# /usr/local/sbin/zebra -d HostA# /usr/local/sbin/ripd -d HostA# telnet 127.0.0.1 2602 Password: zebra
ripd> enable
ripd# configure terminal ripd(config)# router rip
ripd(config-router)# redistribute connected
ripd(config-router)# network 192.168.0.0/24 ripd(config-router)# network 192.168.1.0/24 ripd(config-router)# network 192.168.2.0/24 ripd(config-router)# end
設定Host BHostB# /usr/local/sbin/zebra -d HostB# /usr/local/sbin/ripd -d HostB# telnet 127.0.0.1 2602 Password: zebra
ripd> enable
ripd# configure terminal ripd(config)# router rip
ripd(config-router)# redistribute connected ripd(config-router)# network 192.168.6.0/24 ripd(config-router)# network 192.168.2.0/24 ripd(config-router)# end
設定Host CHostC# /usr/local/sbin/zebra -d HostC# /usr/local/sbin/ripd -d HostC# telnet 127.0.0.1 2602 Password: zebra
ripd> enable
ripd# configure terminal ripd(config)# router rip
ripd(config-router)# redistribute connected ripd(config-router)# network 192.168.6.0/24 ripd(config-router)# network 192.168.1.0/24 ripd(config-router)# end
Step 5: 觀察rip封包
Host A: 開啟Ethereal,interface選eth2,以便觀察下列rip封包
由192.168.2.1發出的RIP request packet
192.168.2.2送給192.168.2.1的回應
Host A: 開啟Ethereal,interface選eth1,以便觀察下列rip封包
由192.168.1.3發出的RIP response packetStep 5: 觀察經rip交換後的routing table
Codes: K - kernel route, C - connected, S - static, R - RIP
三台router交換routing table資訊後,結果如下:
(在view mode下輸入show ip route)
Step 4: 進行連線測試
Host A: ping 192.168.7.3
tracert 192.168.7.3