国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
(1) 路由器的原理及作用
(1) 路由器的原理及作用 
 
發(fā)布時(shí)間:2007.06.27 15:59     來源:賽迪網(wǎng)    作者:lynn
什么是路由器?

簡單的說:路由器的功能就是尋路――給IP包尋找正確的路徑以通往目的地。下面是比較詳細(xì)的介紹:

原理與作用

路由器(Router)用于連接多個(gè)邏輯上分開的網(wǎng)絡(luò),所謂邏輯網(wǎng)絡(luò)是代表一個(gè)單獨(dú)的網(wǎng)絡(luò)或者一個(gè)子網(wǎng)。當(dāng)數(shù)據(jù)從一個(gè)子網(wǎng)傳輸?shù)搅硪粋€(gè)子網(wǎng)時(shí),可通過路由 器來完成。因此,路由器具有判斷網(wǎng)絡(luò)地址和選擇路徑的功能,它能在多網(wǎng)絡(luò)互聯(lián)環(huán)境中,建立靈活的連接,可用完全不同的數(shù)據(jù)分組和介質(zhì)訪問方法連接各種子 網(wǎng),路由器只接受源站或其他路由器的信息,屬網(wǎng)絡(luò)層的一種互聯(lián)設(shè)備。它不關(guān)心各子網(wǎng)使用的硬件設(shè)備,但要求運(yùn)行與網(wǎng)絡(luò)層協(xié)議相一致的軟件。

一般說來,異種網(wǎng)絡(luò)互聯(lián)與多個(gè)子網(wǎng)互聯(lián)都應(yīng)采用路由器來完成。 路由器的主要工作就是為經(jīng)過路由器的每個(gè)數(shù)據(jù)幀尋找一條最佳傳輸路徑,并將該數(shù)據(jù)有效地傳送到目的站點(diǎn)。由此可見,選擇最佳路徑的策略即路由算法是路由器 的關(guān)鍵所在。為了完成這項(xiàng)工作,在路由器中保存著各種傳輸路徑的相關(guān)數(shù)據(jù)--路徑表(RoutingTable),供路由選擇時(shí)使用。路徑表中保存著子網(wǎng) 的標(biāo)志信息、網(wǎng)上路由器的個(gè)數(shù)和下一個(gè)路由器的名字等內(nèi)容。路徑表可以是由系統(tǒng)管理員固定設(shè)置好的,也可以由系統(tǒng)動(dòng)態(tài)修改,可以由路由器自動(dòng)調(diào)整,也可以 由主機(jī)控制。

靜態(tài)路徑表

由系統(tǒng)管理員事先設(shè)置好固定的路徑表稱之為靜態(tài)(static)路徑表,一般是在系統(tǒng)安裝時(shí)就根據(jù)網(wǎng)絡(luò)的配置情況預(yù)先設(shè)定的,當(dāng)網(wǎng)絡(luò)結(jié)構(gòu)的改變時(shí)需管理員手工改動(dòng)相應(yīng)的表項(xiàng)。  

動(dòng)態(tài)路徑表

動(dòng)態(tài)(Dynamic)路徑表是路由器根據(jù)網(wǎng)絡(luò)系統(tǒng)的運(yùn)行情況而自動(dòng)調(diào)整的路徑表。路由器根據(jù)路由選擇協(xié)議(RoutingProtocol)提供的功能,自動(dòng)學(xué)習(xí)和記憶網(wǎng)絡(luò)運(yùn)行情況,在需要時(shí)自動(dòng)計(jì)算數(shù)據(jù)傳輸?shù)淖罴崖窂健?

路由器的功能

(1) 協(xié)議轉(zhuǎn)換:能對(duì)網(wǎng)絡(luò)層及其以下各層的協(xié)議進(jìn)行轉(zhuǎn)換。
(2) 路由選擇:當(dāng)分組從互聯(lián)的網(wǎng)絡(luò)到達(dá)路由器時(shí),路由器能根據(jù)分組的目的地址按某種路由策略,選擇最佳路由,將分組轉(zhuǎn)發(fā)出去,并能隨網(wǎng)絡(luò)拓?fù)涞淖兓?,自?dòng)調(diào)整路由表。
(3) 能支持多種協(xié)議的路由選擇:路由器與協(xié)議有關(guān),不同的路由器有不同的路由器協(xié)議,支持不同的網(wǎng)絡(luò)層協(xié)議。如果互聯(lián)的局域網(wǎng)采用了兩種不同的協(xié)議,例如,一 種是TCP/IP協(xié)議,另一種是SPX/IPX協(xié)議(即Netware的傳輸層/網(wǎng)絡(luò)層協(xié)議),由于這兩種協(xié)議有許多不同之處,分布在互聯(lián)網(wǎng)中的 TCP/IP(或SPX/IPX)主機(jī)上,只能通過TCP/IP(或SPX/IPX)路由器與其他互聯(lián)網(wǎng)中的TCP/IP(或SPX/IPX)主機(jī)通信, 但不能與同一局域網(wǎng)中的SPX/IP(或TCP/IP)主機(jī)通信。多協(xié)議路由器能支持多種協(xié)議,如IP,IPX及X.25協(xié)議,能為不同類型的協(xié)議建立和 維護(hù)不同的路由表。這樣不僅能連接同一類型的網(wǎng)絡(luò),還能用它連接不同類型的網(wǎng)絡(luò)。這種功能雖然使路由器的適應(yīng)性變強(qiáng),但同時(shí)也使得路由器的整體性能降低, 現(xiàn)在IP協(xié)議在網(wǎng)絡(luò)中越來越占主導(dǎo)地位,因此在下一代路由器(如交換式路由器)只需要支持IP協(xié)議。
(4) 流量控制:路由器不僅具有緩沖區(qū),而且還能控制收發(fā)雙方數(shù)據(jù)流量,使兩者更加匹配。
(5) 分段和組裝功能:當(dāng)多個(gè)網(wǎng)絡(luò)通過路由器互聯(lián)時(shí),各網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)分組的大小可能不相同,這就需要路由器對(duì)分組進(jìn)行分段或組裝。即路由器能將接收的大分組分 段并封裝成小分組后轉(zhuǎn)發(fā),或?qū)⒔邮盏男》纸M組裝成大分組后轉(zhuǎn)發(fā)。如果路由器沒有分段組裝功能,那么整個(gè)互聯(lián)網(wǎng)就只能按照所允許的某個(gè)最短分組進(jìn)行傳輸,大 大降低了其他網(wǎng)絡(luò)的效能。
(6) 網(wǎng)絡(luò)管理功能:路由器是連接多種網(wǎng)絡(luò)的匯集點(diǎn),網(wǎng)間分組都要通過它,在這里對(duì)網(wǎng)絡(luò)中的分組、設(shè)備進(jìn)行監(jiān)視和管理是比較方便的。因此,高檔路由器都配置了網(wǎng)絡(luò)管理功能,以便提高網(wǎng)絡(luò)的運(yùn)行效率、可靠性和可維護(hù)行。

一個(gè)路由器必然有大于或者等于2的網(wǎng)絡(luò)接口,這樣它才存在路由的功能,否則,如果只有一個(gè)接口的話,也就無所謂"尋路"了!這里說的網(wǎng)絡(luò)接口不一定是物理上的接口,例如網(wǎng)卡或其他,也可以是虛擬的接口,例如隧道入口等。

如前面所描述的,一個(gè)路由器上運(yùn)行的路由信息可以是靜態(tài)配置的,也可以是動(dòng)態(tài)產(chǎn)生。前者通過手工配置完成、而后者則通過在路由器上運(yùn)行跑相關(guān)路由協(xié)議的程 序來根據(jù)網(wǎng)絡(luò)狀態(tài)動(dòng)態(tài)改變內(nèi)核中的路由表。下面我們仔細(xì)介紹一些這兩類路由器的配置。通常,一個(gè)路由器既有靜態(tài)配置的部分,又有動(dòng)態(tài)配置的部分,二者結(jié)合 起來。
多網(wǎng)卡的設(shè)置

靜態(tài)路由器的配置

Linux下最常用的指定路由規(guī)則的命令是route,當(dāng)然也有些圖形化的工具可以使用,我們下面一個(gè)一個(gè)介紹。

route命令的使用

route工具主要功能是管理Linux系統(tǒng)內(nèi)核中的路由表。它最大的用途就是用來設(shè)定靜態(tài)的路由表項(xiàng),通常是在系統(tǒng)用ifconfig配置網(wǎng)絡(luò)接口(例如網(wǎng)卡等)后,用它來設(shè)定主機(jī)或者一網(wǎng)段的IP地址應(yīng)該通過什么接口發(fā)送等。

Route工具有復(fù)雜的調(diào)用參數(shù)。

調(diào)用格式如下:
route [-CFvnee]

route [-v] [-A family] add [-net|-host] target [netmask
Nm] [gw Gw] [metric N] [mss M] [window W] [irtt I]
[reject] [mod] [dyn] [reinstate] [[dev] If]

route [-v] [-A family] del [-net|-host] target [gw Gw]
[netmask Nm] [metric N] [[dev] If]

route [-V] [--version] [-h] [--help]

主要參數(shù)說明如下:
-v 使用冗余輸出模式。
-A family
指定特定的地址族(例如"inet"、"inet6")。
-n 使用數(shù)字顯示的地址(例如,202.38.75.75)而不是去解釋域名。
-e 使用與netstat相同的輸出格式。
-ee 參數(shù)會(huì)產(chǎn)生很長的輸出,包括內(nèi)核路由表的幾乎所有信息。
-net 目標(biāo)(target)是一個(gè)網(wǎng)段。
-host 目標(biāo)(target)是一個(gè)單獨(dú)的主機(jī)。
-F 顯示內(nèi)核FIB路由表。結(jié)果可能被-e 和-ee參數(shù)改變。
-C 顯示內(nèi)核中路由緩存信息。
del 刪除一個(gè)路由表項(xiàng)。
add 增加一個(gè)路由表項(xiàng)。
target 配置的目的網(wǎng)段或者主機(jī)??梢允荌P,或者是網(wǎng)絡(luò)或主機(jī)名。
netmask Nm
用來指明要添加的路由表項(xiàng)的網(wǎng)絡(luò)掩碼。
gw Gw 任何通往目的(target )的IP分組都要通過這個(gè)網(wǎng)關(guān)。
metric M
設(shè)置路由表中該項(xiàng)的尺度域(metric field)為M。
mss M 設(shè)置TCP的最大分片長度(MSS)M bytes。
系統(tǒng)缺省值是536。
window W
設(shè)置TCP發(fā)送窗口的尺寸為W bytes。
irtt I 設(shè)置TCP的初始化回路時(shí)間(irtt)I毫秒(1-12000)。
缺省情況下按照RFC 1122 規(guī)定是300ms。
reject 安裝一個(gè)阻塞型的路由,這樣可能會(huì)有路由查找失敗。
mod, dyn, reinstate
添加或者修改一個(gè)動(dòng)態(tài)路由表項(xiàng)。主要用來測(cè)試和診斷。
dev If 強(qiáng)行使用某個(gè)特定的輸出接口(If),而不用系統(tǒng)去尋找接口。

下面舉幾個(gè)配置的例子:

route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0
添加一條路由表項(xiàng),網(wǎng)段192.56.76.x 應(yīng)該從接口"eth0"走。

route add default gw mango-gw
添加一條缺省路由(如果沒有其他匹配的路由項(xiàng),就使用這個(gè)路由規(guī)則)。
"mango-gw"是一個(gè)主機(jī)名, 而通往這個(gè)主機(jī)的路由規(guī)則應(yīng)該事先已經(jīng)設(shè)置好了。

route add ipx4 sl0
給主機(jī)"ipx4"添加一條路由規(guī)則,使用SLIP接口sl0。

Route命令的輸出結(jié)果

輸出的格式有以下幾欄:

Destination
目標(biāo)網(wǎng)段或者主機(jī)。

Gateway
網(wǎng)關(guān)地址,如果沒有設(shè)置,則是"*"表示。

Genmask
網(wǎng)絡(luò)掩碼。

Flags 一些可能的標(biāo)記如下:
U (路由是活動(dòng)的)
H (目標(biāo)是一個(gè)主機(jī))
G (使用網(wǎng)關(guān)(gateway))
R (reinstate route 動(dòng)態(tài)路由產(chǎn)生的表項(xiàng))
D (dynamically installed by daemon or redirect)
M (modified from routing daemon or rederict)
! (reject route)

Metric 路由距離。

Ref 路由項(xiàng)引用次數(shù)。(linux內(nèi)核中沒有使用)

Use 查找路由項(xiàng)的次數(shù)。.

Iface 該路由表項(xiàng)對(duì)應(yīng)的輸出接口。

MSS 缺省的TCP最大分片尺寸。

Window 缺省的TCP窗口的尺寸。

irtt 缺省的TCP回路時(shí)間。

HH (cached only)
ARP入口的數(shù)目。

Arp (cached only)
該路由項(xiàng)對(duì)應(yīng)的物理地址是否過期等信息。

下面是route -n的輸出實(shí)例:

tarn:~$ /sbin/route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
202.38.64.3 202.38.75.62 255.255.255.255 UGH 0 0 0 eth0
202.38.75.75 0.0.0.0 255.255.255.255 UH 0 0 0 eth2
202.38.75.0 0.0.0.0 255.255.255.128 U 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
192.168.75.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
159.226.0.0 202.38.75.62 255.255.0.0 UG 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 202.38.75.62 0.0.0.0 UG 1 0 0 eth0

上面的輸出中我們可以看出,該路由器配置的缺省網(wǎng)關(guān)是202.38.75.62,它上面有3個(gè)以太網(wǎng)接口(eth0、eth1和eth2)。其中第一條和第二條路由規(guī)則是針對(duì)一個(gè)主機(jī)的,其他的都是針對(duì)一個(gè)網(wǎng)段的,這可以重掩碼看出。
動(dòng)態(tài)路由器的配置

基本原理介紹

先解釋一下什么是動(dòng)態(tài)路由。

從前面的描述中我們可以看到,路由器的基本功能就是為IP分組尋找到達(dá)目的地址的路徑。我們前一節(jié)介紹的是人工手動(dòng)靜態(tài)配置路由規(guī)則,也就是人為的設(shè)定尋 路方式。但是因特網(wǎng)是個(gè)龐大的系統(tǒng),上面跑的網(wǎng)絡(luò)結(jié)構(gòu)負(fù)責(zé),而且拓?fù)浣Y(jié)構(gòu)也在隨時(shí)改變,這樣在某些復(fù)雜的范圍里我們的靜態(tài)配置就不一定能獲得最佳的尋路路 徑了。而且一旦網(wǎng)絡(luò)結(jié)構(gòu)發(fā)生改變,我們手動(dòng)的靜態(tài)配置也往往無法及時(shí)跟著改變。在這個(gè)背景下,產(chǎn)生了動(dòng)態(tài)路由配置的概念,也就是動(dòng)態(tài)路由器。

動(dòng)態(tài)路由器上的路由表項(xiàng)是通過相互連接的路由器之間交換彼此信息,然后按照一定的算法優(yōu)化出來的,而這些路由信息是在一定時(shí)間間隙里不斷更新,以適應(yīng)不斷 變化的網(wǎng)絡(luò),以隨時(shí)獲得最優(yōu)的尋路效果。為了實(shí)現(xiàn)IP分組的高效尋路,IETF制定了多種尋路協(xié)議。其中用于自治系統(tǒng)(AS:Autonomous System)內(nèi)部網(wǎng)關(guān)協(xié)議有開放式最短路徑優(yōu)先(OSPF:Open Shortest Path First)協(xié)議和尋路信息協(xié)議(RIP:Routing Information Protocol)。所謂自治系統(tǒng)是指在同一實(shí)體(如學(xué)校、企業(yè)或ISP)管理下的主機(jī)、路由器及其他網(wǎng)絡(luò)設(shè)備的集合。還有用于自治域系統(tǒng)之間的外部網(wǎng)絡(luò) 路由協(xié)議BGP-4等。

運(yùn)行這些路由協(xié)議的軟件就是我們通常說的路由軟件,Linux下常見的路由軟件有g(shù)ated和zebra,。前者既有GPL版本的發(fā)行,又有收費(fèi)的版本; 而后者則是日本某組織開發(fā)的完全GPL的高效的路由軟件。Linux的發(fā)行里面一般都缺省就有g(shù)ated這個(gè)軟件,我們下面主要介紹它的配置和使用方法。
 
 
 
 (2) 深入剖解路由器的“心臟”技術(shù) 
 
發(fā)布時(shí)間:2007.06.27 14:13     來源:賽迪網(wǎng)    作者:sixth
寬帶上網(wǎng)已經(jīng)不是什么新鮮事情,人們對(duì)相關(guān)的網(wǎng)絡(luò)器件已經(jīng)不再陌生,比如說常見的路由器。對(duì)于一般的網(wǎng)絡(luò)用戶,他們能知道怎樣使用路由器來上網(wǎng)、玩游戲等就已經(jīng)感到很滿足了, 
通常情況下對(duì)路由器的深層技術(shù)很少去過問研究,但做為興趣廣泛的技術(shù)愛好者,對(duì)這方面的知識(shí)是非常感興趣的。但限于各種條件的制約,這些愛好者都非開發(fā)者,很大程度上無法深入了解真正的技術(shù)實(shí)現(xiàn)過程以及相關(guān)的核心內(nèi)幕。正是基于此點(diǎn),筆者憑借自身的知識(shí)沉淀,盡最大努力為愛好技術(shù)的讀者架設(shè)一坐能通向深層核心的橋梁,為大家揭開路由器的神秘面紗,剖開其核心內(nèi)臟。為使讀者能清晰明白的理解掌握,筆者盡量將專業(yè)的技術(shù)內(nèi)容轉(zhuǎn)化為容易接受的知識(shí)講解,其中可能有不足偏頗之處,還請(qǐng)大家多見諒。

  概述
  什么是路由器?
  互聯(lián)網(wǎng)是依靠路由器連接起來的,路由器是互聯(lián)網(wǎng)或者說IP網(wǎng)絡(luò)的核心設(shè)備。寬帶接入的不斷增長,帶動(dòng)了路由器的需求不斷增加。
  路由器究竟是什么樣的技術(shù)產(chǎn)物?
  談到路由器的開發(fā),我們就不免要談到“嵌入式”設(shè)備的開發(fā),沒錯(cuò),通俗的說,路由器就是一種嵌入式產(chǎn)品。那么究竟什么是嵌入式設(shè)備呢?
  其實(shí)就目前而言,嵌入式設(shè)備已經(jīng)不斷深入我們的日常生活方方面面。通俗的講,嵌入式設(shè)備是指具有計(jì)算機(jī)功能,但又不稱為計(jì)算機(jī)的設(shè)備或器材,它幾乎包括了我們周圍的所有電器設(shè)備:PDA、手機(jī)、機(jī)頂盒、汽車、微波爐、電梯、安全系統(tǒng)、自動(dòng)售貨機(jī)、醫(yī)療儀器、立體音響、自動(dòng)取款機(jī)等。
  用較為專業(yè)的話來表述的話,嵌入式設(shè)備就是使用微處理器或微控制器芯片(MCU)加上外圍電路再加上內(nèi)部的程序部分來實(shí)現(xiàn)特定功能的嵌入設(shè)備。比如8位的單片機(jī)、32的ARM以及DSP芯片等都屬于嵌入式核心芯片的范疇。8位MCU市場(chǎng)已逐步趨向穩(wěn)定,32位MPU代表著嵌入式技術(shù)的發(fā)展方向,正在加速發(fā)展。在32位嵌入式微處理器市場(chǎng)上,基于ARM內(nèi)核的微處理器在市場(chǎng)上處于絕對(duì)的領(lǐng)導(dǎo)地位,因此追蹤ARM技術(shù)的發(fā)展趨勢(shì)顯得尤為重要。
  路由器的開發(fā)通常都是基于32位處理器的,就通常的中低端路由器而言,在開發(fā)的配置上有多種選擇,比如有ARM9核心芯片+Wince操作系統(tǒng)、ARM7核心芯片+uClinux操作系統(tǒng)、DSP芯片+Vxworks操作系統(tǒng)等等各種各樣的選擇。本文針對(duì)常用的SOHO路由器來介紹,選擇ARM7核心芯片+uClinux操作系統(tǒng)開發(fā)模式,以完整形象的實(shí)例為大家清晰講解路由器的技術(shù)實(shí)現(xiàn)過程。
  我們?yōu)槭裁匆許OHO路由器為介紹對(duì)象呢?什么是SOHO路由器?前很多家庭中有不止一臺(tái)電腦,需要上網(wǎng)獲取信息、收發(fā)郵件等。這些小型公司和家庭網(wǎng)絡(luò)用戶計(jì)算機(jī)的數(shù)目一般不多,網(wǎng)絡(luò)結(jié)構(gòu)不復(fù)雜。功能和帶寬的要求不高。出于提高網(wǎng)絡(luò)性能、共享有限IP地址或節(jié)省上網(wǎng)費(fèi)用等原因,這些用戶迫切需要具有較高性價(jià)比的小型路由器。我們把這種小型路由器稱為SOHO路由器。目前市場(chǎng)上已經(jīng)充斥了大量的這類低端路由器.由于ARM7系列芯片價(jià)格便宜,非常適合嵌入式系統(tǒng)使用。目前市場(chǎng)上的SOHO路由器大多采用ARM7系列處理器。不過由于技術(shù)的發(fā)展,ARM9系列的專用路由芯片的路由器也逐漸普及。
  路由器宏觀介紹
  我們可以形象的把嵌入式設(shè)備的開發(fā)簡單的理解成三層模式,最底層的是微控制器芯片加外圍器件組成的硬件系統(tǒng),比如我們介紹的開發(fā)小型SOHO路由器所使用的ARM7TDMI芯片等硬件環(huán)境,它是設(shè)備功能實(shí)現(xiàn)的硬件基礎(chǔ),要實(shí)現(xiàn)上層的應(yīng)用肯定離不開最底層硬件的支持。中間層是操作系統(tǒng),比如我們所選擇的uClinux操作系統(tǒng),它是銜接硬件部分和應(yīng)用程序的過渡層,它既可以完成對(duì)底層硬件的基本操作,又能為上層應(yīng)用程序提供運(yùn)行環(huán)境支持。最上層自然就是應(yīng)用程序?qū)恿?,它是?shí)現(xiàn)針對(duì)性應(yīng)用的程序代碼部分,比如路由設(shè)置等功能程序部分。
  那對(duì)與SOHO路由器來說,它當(dāng)然也脫離不了這樣的技術(shù)框架,它的更為具體的實(shí)現(xiàn)過程簡單的匯總的話,莫過于如下內(nèi)容:
  首先先要知道SOHO實(shí)現(xiàn)的網(wǎng)絡(luò)功能,典型路由器應(yīng)該具備以下功能:
  支持PPPoE,固定IP上網(wǎng);
  DHCP動(dòng)態(tài)主機(jī)配置協(xié)議;
  網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)技術(shù);
  根據(jù)TCP,UDP的端口號(hào)(port number),IP 的(協(xié)議號(hào))protocol number,對(duì)IP地址進(jìn)行簡單過濾的防火墻;
  虛擬服務(wù)主機(jī)/端口映射(Port Forwarding)技術(shù);
  支持一定數(shù)量的特殊應(yīng)用程序;
  然后針對(duì)于上邊的功能要求,相應(yīng)地要通過硬件和軟件的構(gòu)造來實(shí)現(xiàn):
  硬件方面:
  1、要明確家用小型路由器(一個(gè)WAN接口,四個(gè)LAN接口)的硬件原理。
  2、實(shí)現(xiàn)硬件電路板設(shè)計(jì),完成電路布線設(shè)計(jì),并對(duì)元件焊接,通過硬件板的調(diào)試。
  軟件方面:
  1、在分析 uClinux內(nèi)核源代碼的基礎(chǔ)上,對(duì)uClinux操作系統(tǒng)的內(nèi)核裁剪。
  2、完成BoaWeb服務(wù)器的配置,并對(duì)CGI腳本進(jìn)行設(shè)計(jì),完成動(dòng)態(tài)網(wǎng)頁的功能。
  3、對(duì)PPPOE的撥號(hào)進(jìn)行配置實(shí)現(xiàn)。
  4、針對(duì)Linux內(nèi)核防火墻部分,運(yùn)用IPtable工具進(jìn)行防火墻規(guī)則操作。
  通過如上的基本構(gòu)造,一個(gè)路由器就基本成型了。說起來簡單,但其中包含了很多很多的技術(shù)細(xì)節(jié),要有大量的實(shí)踐經(jīng)驗(yàn)才能真正實(shí)現(xiàn)。做為門外觀奇的好學(xué)讀者,現(xiàn)在肯定有些不耐煩了吧,想要了解更多的更詳細(xì)的構(gòu)造內(nèi)容吧?那好,現(xiàn)在就可以開始我們真正的技術(shù)之旅了。
  路由器工作原理
  1、基本原理
  要實(shí) 現(xiàn) 網(wǎng) 絡(luò)中通信節(jié)點(diǎn)彼此之間的通信,首先必須給每個(gè)節(jié)點(diǎn)分配一個(gè)唯一的IP地址。路由器應(yīng)該至少有兩個(gè)網(wǎng)絡(luò)端口,分別連接LAN或者WAN子網(wǎng)上,每個(gè)端口必須具有一個(gè)唯一的IP地址,并且要求與所連接IP子網(wǎng)的網(wǎng)絡(luò)號(hào)相同。不同的端口有不同的網(wǎng)絡(luò)號(hào),對(duì)應(yīng)不同的IP子網(wǎng),這樣各子網(wǎng)中的主機(jī)才能通過自己子網(wǎng)的IP地址把要求發(fā)出去的IP數(shù)據(jù)報(bào)送到路由器上。
  當(dāng)路由器收到一份IP數(shù)據(jù)報(bào)后,首先要對(duì)該報(bào)文進(jìn)行判斷,然后根據(jù)判斷的結(jié)果做進(jìn)一步的處理。如果數(shù)據(jù)報(bào)是有效或正確的,路由器就根據(jù)數(shù)據(jù)報(bào)的目的IP地址轉(zhuǎn)發(fā)該報(bào)文:否則就把報(bào)文丟棄。如果這個(gè)數(shù)據(jù)報(bào)的目的IP地址與路由器直接相連的一個(gè)子網(wǎng)上,路由器會(huì)通過相應(yīng)的接口把報(bào)文轉(zhuǎn)發(fā)到目的子網(wǎng)上去;否則會(huì)把它轉(zhuǎn)發(fā)到下一跳(Hop)路由器。為了完成上述的操作,每臺(tái)路由器必須維護(hù)一個(gè)路由表。把對(duì)應(yīng)不同目的地的最佳路徑存放在路由表中,這就是路由策略(Routing Policy)問題。路由表反映網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),一般一條表項(xiàng)應(yīng)該包含數(shù)據(jù)報(bào)的目的IP地址(通常是目的主機(jī)所在網(wǎng)絡(luò)的地址)、下一跳路由器的地址和相應(yīng)的網(wǎng)絡(luò)接口等,在網(wǎng)絡(luò)拓?fù)浒l(fā)生變化的時(shí)候,路由表也應(yīng)該做相應(yīng)的變動(dòng)。所以路由器必須能夠生成并更新路由表。
  選路機(jī)制實(shí)際上就是如何查找路由表,通過查詢路由表來決定向哪個(gè)方向轉(zhuǎn)發(fā)數(shù)據(jù)。一般來說,路由器首先搜索匹配的主機(jī)地址:如果沒有,再搜索匹配的網(wǎng)絡(luò)地址:最后搜索默認(rèn)路由。一旦查到匹配的表項(xiàng),路由器就會(huì)把數(shù)據(jù)從相應(yīng)的接口發(fā)送出去。
  路由器具備了上述各要素后,就可以完成數(shù)據(jù)轉(zhuǎn)發(fā)任務(wù)了。另外,路由器不僅負(fù)責(zé)對(duì)IP包的轉(zhuǎn)發(fā),還要負(fù)責(zé)與別的路由器進(jìn)行聯(lián)絡(luò),共同確定互聯(lián)網(wǎng)的路由選擇和路由表的更新維護(hù)。
  2、SOHO路由器原理
  當(dāng)內(nèi)部計(jì)算機(jī)要與外部Internet網(wǎng)絡(luò)進(jìn)行通信時(shí),各內(nèi)部間通過私有IP地址進(jìn)行通信的計(jì)算機(jī)必須把私有IP地址轉(zhuǎn)換成合法IP。這種網(wǎng)絡(luò)地址轉(zhuǎn)換技術(shù)稱為NAT(Network Address Translation,網(wǎng)絡(luò)地址轉(zhuǎn)換)。在一個(gè)實(shí)際的私有網(wǎng)絡(luò)中,NAT功能通常內(nèi)建在路由器、防火墻或獨(dú)立的NAT設(shè)備之上,網(wǎng)絡(luò)中的主機(jī)將這些設(shè)備作為自己的默認(rèn)網(wǎng)關(guān)。通過這樣的配置,每一臺(tái)內(nèi)部主機(jī)發(fā)送往Internet的數(shù)據(jù)報(bào)就會(huì)送到具有NAT功能的設(shè)備中進(jìn)行轉(zhuǎn)換。NAT是SOHO路由器的必備功能,它是為解決IPv4地址不夠分配的矛盾而產(chǎn)生的一個(gè)簡單高效的解決方案。它能將任何兩個(gè)地址域的地址進(jìn)行轉(zhuǎn)換,使私有網(wǎng)絡(luò)中多臺(tái)主機(jī)共享一個(gè)合法IP地址訪問Internet。
  嵌入式路由器硬件系統(tǒng)介紹
  1、硬件系統(tǒng)總體結(jié)構(gòu)
  硬件結(jié)構(gòu)是非常重要的部分,因?yàn)槲覀儾痖_一個(gè)路由器后首先看到的、所能看到的也就是硬件結(jié)構(gòu),我們就舉例簡單介紹一下硬件設(shè)計(jì)的各個(gè)部位的細(xì)節(jié)內(nèi)容。
  為了宏觀查看,我們給出交換式寬帶路由器的硬件設(shè)計(jì)實(shí)例圖一張。圖中主要分為兩部分:
  ARM4510B部分和交換芯片RTL8305部分,前者主要見上半圖,后者為下半圖。還有電源及各自的復(fù)位電路。
  ARM4510B部分中,中央處理芯片為帶有網(wǎng)絡(luò)接口的S3C4510B--16/32位RISC微控制器,根據(jù)嵌入式操作系統(tǒng)的運(yùn)行需要,擴(kuò)展了SDRAM存儲(chǔ)器和Flash存儲(chǔ)器。SDRAM存儲(chǔ)器由兩片4X1MX16位的HY57V641620HGT
  組成,作為嵌入式操作系統(tǒng)內(nèi)核及應(yīng)該程序運(yùn)行的內(nèi)存空間。Flash存儲(chǔ)器由一片1MX16位的SS139VF160組成,作為內(nèi)核映像的存儲(chǔ),并在嵌入式操作系統(tǒng)啟動(dòng)時(shí)加載系統(tǒng)內(nèi)核及程序。根據(jù)調(diào)試程序及燒寫Flash存儲(chǔ)器的需要,引出JTAG接口。根據(jù)顯示調(diào)試和運(yùn)行信息的需要,提供了RS232接口。交換芯片 RTL8305部分中,提供4個(gè)LAN口(PORTO--PORT3)通過一四口的網(wǎng)絡(luò)隔離變壓器連接一個(gè)四口RJ45口,每個(gè)口可連接到10/10013aseT以太網(wǎng),各端口之間有交換功能:還有一個(gè)WAN接口(CPO RT4)通過一單口的隔離變壓器連接RJ45口。根據(jù)顯示連接速度、狀態(tài)和電源等需要,接出LED燈進(jìn)行顯示。根據(jù)交換芯片的管理需要,提供一串行EEPROM 24C01電路接口。根據(jù)交換芯片的主電源為2.5V.提供一個(gè)3.3V到2.5V的轉(zhuǎn)換器。
  中央處理芯片通過MR(獨(dú)立媒體接口)接口與交換芯片RTL8035SB的PORT4的Mil接口相聯(lián),將交換芯片的PORT4配置為物理層接收器。
  當(dāng)各部分電路設(shè)計(jì)完成后,形成硬件連接圖,進(jìn)而焊接之后,就可以作為開發(fā)用的實(shí)驗(yàn)硬件板了。下面就簡要介紹一下個(gè)硬件電路部分。
  2、硬件系統(tǒng)的簡要設(shè)計(jì)介紹
  ⑴ARM處理器系統(tǒng)設(shè)計(jì)介紹
 ?、賁304510B概述
  Samsung公司的S34510B是基于以太網(wǎng)應(yīng)用系統(tǒng)的高性價(jià)比的16/32位RISC微控制器,內(nèi)含一個(gè)由ARM公司設(shè)計(jì)的16/32位的ARM7TDMI RISC處理器核。ARM7TDMI為低功耗,高性能的16/32位核。
  除了ARM7TDMI外,該芯片還有一些片內(nèi)外圍功能模塊,主要為: 內(nèi)部RAM (8Kbyte unified cache/SRAM),I2 C接口電路(I2C interface)、以太網(wǎng)控件器(Ethernetco ntroller),HDLC,GDMA、串口(UART),時(shí)鐘(Timers)、可編程1/O口(Programmable I/O ports)及中斷控件器(Interrupt controller)等。
  S3C4510B結(jié)構(gòu)框圖所示。在實(shí)際運(yùn)行過程中最主要用到的部分為:以太網(wǎng)接口及串口部分,前者用于收發(fā)以太包,后者主要作為操作系統(tǒng)調(diào)試接口。
 ?、贏RM 處理器系統(tǒng)電源電路和復(fù)位電路
  主要是實(shí)現(xiàn)供電和復(fù)位功能,電路部分不做詳細(xì)講解,有深入研究需要的愛好者可以查看相關(guān)的電子相關(guān)參考資料進(jìn)行深入學(xué)習(xí)。為使文章通俗易懂,以下各電路部分也是做一宏觀介紹,細(xì)節(jié)部分包括電路布線等不再深入講解。
 ?、跘RM處理器與Flash存儲(chǔ)器接口電路
  讀者只要知道這部分的電路連接是為實(shí)現(xiàn)能在Flash存儲(chǔ)器編寫程序即可。
 ?、蹵RM處理器與SDRAM接口電路設(shè)計(jì)介紹
  與 Flash存儲(chǔ)器相比,SDRAM不具有掉電保持?jǐn)?shù)據(jù)的特性,但其存儲(chǔ)速度大大高于Flash存儲(chǔ)器,且具有讀/寫屬性。因此SDRAM在系統(tǒng)中主要用于程序的運(yùn)于空間、數(shù)據(jù)及堆棧。當(dāng)系統(tǒng)啟動(dòng)時(shí),CPU首先從復(fù)位地址0x0片讀取啟動(dòng)代碼,在完成系統(tǒng)的初始化后,程序代碼調(diào)入SDRAM中運(yùn)行,以提高系統(tǒng)的運(yùn)行速度。
  SDRAM 具有單位空間存儲(chǔ)量大和價(jià)格便宜的特點(diǎn),廣泛用于各種嵌入式系統(tǒng)中。SDRAM 的存儲(chǔ)單元可以理解為一個(gè)電容,總是傾向于放電,為了避免數(shù)據(jù)丟失,必須定時(shí)刷新(充電)。因此,在系統(tǒng)中使用SDRAM,就要求微處理器有刷新的控制邏輯或者在系統(tǒng)中另外加刷新控制邏輯電路。S3C4510B在片內(nèi)具有獨(dú)立的SDRAM刷新控制邏輯,可以方便的與SDRAM接口。
 ?、軦RM處理器串行接口電路設(shè)計(jì)介紹
  幾乎所有的微控件器、PC都提供串行接口,使用美國電子工業(yè)協(xié)會(huì)(EIA)推薦的RS-232-C接口標(biāo)準(zhǔn),這是一個(gè)很常用的串行數(shù)據(jù)傳輸總線接口標(biāo)準(zhǔn)。早期被用于計(jì)算機(jī)和終端通過電話線和MODEM進(jìn)行遠(yuǎn)距離的數(shù)據(jù)傳輸,隨著微型計(jì)算機(jī)和微控制器的發(fā)展,不僅在遠(yuǎn)距離,近距離也采用了該通信方式。在近距離的通信中不采用電話線和MODEM,而是直接進(jìn)行端到端的連接。
  RS-232-C標(biāo)準(zhǔn)采用的是9芯或是25芯的D型插頭。
 ?、轆RM處理器JTAG接口電路設(shè)計(jì)介紹
  JTAG(JointTe stAc tionG roup,聯(lián)合測(cè)試行動(dòng)小組)是一種國際標(biāo)準(zhǔn)測(cè)試協(xié)議,主要用于芯片內(nèi)部測(cè)試及系統(tǒng)進(jìn)行仿真、調(diào)試。JTAG是一種嵌入式調(diào)試技術(shù),它在芯片內(nèi)部封裝了TAP(Test Access Port,測(cè)試訪問接口),通過專用的JTAG測(cè)試工具對(duì)內(nèi)部節(jié)點(diǎn)進(jìn)行測(cè)試.標(biāo)準(zhǔn)的JTAG接口是四線:TMS、TCK、TDI、TDO,分別為測(cè)試模式選擇、測(cè)試時(shí)鐘、測(cè)試數(shù)據(jù)輸入、測(cè)試數(shù)據(jù)輸出。JTAG測(cè)試允許多個(gè)器件通過JTAG接口串聯(lián)在一起,形成一個(gè)JTAG鏈,能實(shí)現(xiàn)以各個(gè)器件分別測(cè)試。JTAG接口還常用于ISP(In System Programmable)功能,如對(duì)Flash器件進(jìn)行編程。
 ?、埔蕴W(wǎng)交換電路設(shè)計(jì)介紹
  以太網(wǎng)交換電路主要是采用五口交換芯片RTL8305SB來實(shí)現(xiàn)。RTL8305SB是一個(gè)集成了片內(nèi)存儲(chǔ)器,五個(gè)MAC層接口,五個(gè)物理層(PHY)接口的l0M/l00M自適應(yīng)的五口交換芯片,該集成芯片具有低功耗,可靈活配置為五口小型辦公及家用(SOHO)交換機(jī),家用網(wǎng)關(guān),xDSL路由器及其它智能應(yīng)用。要實(shí)現(xiàn)必要的網(wǎng)絡(luò)功能,這部分的電路是關(guān)鍵中的關(guān)鍵。
  操作系統(tǒng)介紹
  1、Linux
  Linux是一個(gè)誕生于網(wǎng)絡(luò),成長于網(wǎng)絡(luò)且成熟于網(wǎng)絡(luò)的奇特的操作系統(tǒng)。1991年,芬蘭大學(xué)生Linus Torvalds萌發(fā)開發(fā)了一個(gè)自由的UNIX操作系統(tǒng)的想法,并將Linux通過Internet進(jìn)行發(fā)布。從此一大批編程人員加入到開發(fā)過程中來,Linux逐漸成長起來。Linux一開始要求所有的源代碼必須公開,后來轉(zhuǎn)向GPL( GNUG eneral Public Licence),成為GUN的陣營的主要一員。只要遵守GPL的規(guī)定,就可以免費(fèi)獲得復(fù)制,因此Linux是一個(gè)免費(fèi)軟件。同樣,Linux下遵循GPL規(guī)定的C, C++, Java等一系列的工具開發(fā)包,從功能的角度上看并不亞于商用的開發(fā)包,但卻可以極大的降低開發(fā)成本,這一優(yōu)勢(shì)是其它商用操作系統(tǒng)無法比擬的。
  Linux 操作系統(tǒng)最突出的是網(wǎng)絡(luò)部分,基本上所有的網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)接口都可以在Linux上找到,Linux的內(nèi)核比標(biāo)準(zhǔn)的UNIX處理網(wǎng)絡(luò)協(xié)議更加高效,系統(tǒng)的網(wǎng)絡(luò)吞吐性能更好,這也是Linux網(wǎng)絡(luò)服務(wù)器市場(chǎng)上占據(jù)較大的市場(chǎng)分額的重要原因。對(duì)于一般的小型的SOHO路由器,Linux的網(wǎng)絡(luò)技術(shù)無疑是其開發(fā)運(yùn)行的最佳選擇,Linux完全能對(duì)給其提供全方位的網(wǎng)絡(luò)技術(shù)支持。Linux作為互聯(lián)網(wǎng)的產(chǎn)物,許多關(guān)于Linux的文檔可以在Internet上下載到。
  2、uClinux操作系統(tǒng)
  uclinux是嵌入式Linux的一個(gè)分支,在uClinux這個(gè)英文單詞中u表示Micro,小的意思,C表示Control,控制的意思,所以u(píng)clinux就是Micro-Control-Linux,字面上的理解就是“針對(duì)微控制領(lǐng)域而設(shè)計(jì)的Linux系統(tǒng)”。同標(biāo)準(zhǔn)的Linux相比,由于uClinux自身不支持MMU,多任務(wù)的實(shí)現(xiàn)就需要技巧了。但是,在uClinux上運(yùn)行的絕大多數(shù)的用戶程序并不需要多任務(wù)。另外,針對(duì)uclinux內(nèi)核的二進(jìn)制代碼和源代碼都是經(jīng)過了重新編寫,以緊縮和裁剪基本的代碼。這就使得uClinux的內(nèi)核同標(biāo)準(zhǔn)的Linux內(nèi)核相比非常之小,但是它仍保持了Linux操作系統(tǒng)的主要的優(yōu)點(diǎn),如穩(wěn)定性、強(qiáng)大的網(wǎng)絡(luò)功能和出色的文件系統(tǒng)支持等。uclinux包含Linux常用的API、小于512K的內(nèi)核和相關(guān)的工具。操作系統(tǒng)所有的代碼加起來小于900KB。
  uClinux簡介
  uClinux的基本架構(gòu)
  在PC機(jī)上開發(fā)應(yīng)用程序的用戶都會(huì)有這樣的感覺,PC機(jī)有完善的操作系統(tǒng)并提供應(yīng)用程序接口(API),開發(fā)好的應(yīng)用程序可以直接在操作系統(tǒng)上運(yùn)行。雖然嵌入式系統(tǒng)的應(yīng)用程序完全可以在裸板上運(yùn)行,但為了使系統(tǒng)具有任務(wù)管理、定時(shí)器管理、存儲(chǔ)器管理、資源管理、事件管理、系統(tǒng)管理、消息管理、隊(duì)列管理和中斷處理的能力,提供多任務(wù)處理,更好的分配系統(tǒng)資源的功能,用戶就需要針對(duì)自己的硬件平臺(tái)和實(shí)際應(yīng)用選擇適當(dāng)?shù)那度胧讲僮飨到y(tǒng)(Embedded Operating System,以下簡稱EOS)。由于本文實(shí)例中的硬件平臺(tái)是以不含MMU (Memory Management Unit,內(nèi)存管理單)的S3C4510B為核心的,因此采用不帶MMU的ARM 微處理器的嵌入式操作系統(tǒng)uclinux。uclinux 是一個(gè)完全符合GNUIGPL公約的操作系統(tǒng),完全開放代碼,現(xiàn)在由Line。公司支持維護(hù)。uClinux從Linux 2.0(2.4內(nèi)核派生而來,沿襲了主流Linux的絕大部分特性。它是專門針對(duì)沒有MMU的CPU,并且為嵌入式系統(tǒng)做了許多小型化的工作.適用于沒有虛擬內(nèi)存或內(nèi)存管理單元(MMU )的處理器,例如ARM7TDMI。它通常用于具有很少內(nèi)存或Flash的嵌入式系統(tǒng)。uclinux是為了支持沒有MMU的處理器而對(duì)標(biāo)準(zhǔn)Linux作出的修正。它保留了操作系統(tǒng)的所有特性,為硬件平臺(tái)更好的運(yùn)行各種程序提供了保證。在GNU通用公共許可證(GNU GPL)的保證下,運(yùn)行uClinux操作系統(tǒng)的用戶可以使用幾乎所有的Linux API函數(shù),不會(huì)因?yàn)闆]有MMU而受到影響。由于uClinux在標(biāo)準(zhǔn)的Linux基礎(chǔ)上進(jìn)行了適當(dāng)?shù)牟眉艉蛢?yōu)化,形成了一個(gè)高度優(yōu)化的、代碼緊湊的嵌入式Linux,雖然它的體積很小,uClinux仍然保留了Linux的大多數(shù)的優(yōu)點(diǎn):穩(wěn)定、良好的裁剪性、優(yōu)秀的網(wǎng)絡(luò)功能、完備的對(duì)各種文件系統(tǒng)的支持、以及標(biāo)準(zhǔn)豐富的API等。
  BootLoader:負(fù)責(zé)uCLinux內(nèi)核的啟動(dòng),它用于初始化系統(tǒng)資源,包括SDRAM。這部分代碼用于建立uCLinux內(nèi)核運(yùn)行環(huán)境和從Flash中裝載初始化內(nèi)核鏡象。
  內(nèi)核初始化:uCLinux內(nèi)核的入口點(diǎn)是start kernel() 函數(shù)。它初始化內(nèi)核的其他部分,包括捕獲,IRQ通道,調(diào)度,設(shè)備驅(qū)動(dòng),標(biāo)定延遲循環(huán),最重要的是能夠fork "init"進(jìn)程,以啟動(dòng)整個(gè)多任務(wù)環(huán)境。
  系統(tǒng)調(diào)用函數(shù)/捕獲函數(shù):在執(zhí)行完“init”程序后,內(nèi)核對(duì)程序流不再有直接的控制權(quán),此后,它的作用僅僅是處理異步事件(例如硬件中斷)和為系統(tǒng)調(diào)用提供進(jìn)程。
  設(shè)備驅(qū)動(dòng) :設(shè)備驅(qū)動(dòng)占據(jù)了uCLinux內(nèi)核很大部分。同其他操作系統(tǒng)一樣,設(shè)備驅(qū)動(dòng)為它們所控制的硬件設(shè)備和操作系統(tǒng)提供接口。
  文件系統(tǒng) :uCLinux最重要的特性之一就是對(duì)多種文件系統(tǒng)的支持。這種特性使得uCLinux很容易地同其他操作系統(tǒng)共存。文件系統(tǒng)的概念使得用戶能夠查看存儲(chǔ)設(shè)備上的文件和路徑而無須考慮實(shí)際物理設(shè)備的文件系統(tǒng)類型。ucLinux透明的支持許多不同的文件系統(tǒng),將各種安裝的文件和文件系統(tǒng)以一個(gè)完整的虛擬文件系統(tǒng)的形式呈現(xiàn)給用戶。uClinux帶有一個(gè)完整的TCP/IP協(xié)議,同時(shí)它還支持許多其他網(wǎng)絡(luò)協(xié)議。uclinux對(duì)于嵌入式系統(tǒng)來說是一個(gè)網(wǎng)絡(luò)完備的操作系統(tǒng)。
  uClinux開發(fā)環(huán)境
 ?、臛NU開發(fā)套件
  GNU軟件包括C編譯器GCC,C ++編譯器G++,匯編器AS,鏈接器LD,二進(jìn)制轉(zhuǎn)換工具(OBJCOPY,OBJDUMP),調(diào)試工具(GDB.GD BSERVER,KGDB)和基于不同硬件平臺(tái)的開發(fā)庫。在GNU GCC支持下用戶可以使用流行的C/C++語言開發(fā)應(yīng)用程序,滿足生成高效率運(yùn)行代碼、易掌握的編程語言的用戶需求,這些工具都是按GPL版權(quán)聲明發(fā)布,任何人可以從網(wǎng)上獲取全部的源代碼,無需任何費(fèi)用。關(guān)于GNU和公共許可證協(xié)議的詳細(xì)資料,讀者可以參看GNU網(wǎng)站的介紹,http://www,gnu.oTgfhDmc.html。GNU開發(fā)套件作為通用的Linux開放套件,包括一系列的開發(fā)調(diào)試工具。GNU開發(fā)工具都是采用命令行的方式,用戶掌握起來相對(duì)比較困難,不如基于Windows系統(tǒng)的開發(fā)工具好用,但是GNU工具的復(fù)雜性是由于它更貼近編譯器和操作系統(tǒng)的底層,并提供了更大的靈活性。一旦學(xué)習(xí)和掌握了相關(guān)工具后,就了解了系統(tǒng)設(shè)計(jì)的基礎(chǔ)知識(shí)。運(yùn)行于Linux操作系統(tǒng)下的自由軟件GNU gcc編譯器,不僅可以編譯Llnux操作系統(tǒng)下運(yùn)行的應(yīng)用程序,還可以編譯Linux內(nèi)核本身,甚至可以作交叉編譯,編譯運(yùn)行于其它CPU上的程序。所以,在進(jìn)行嵌入式系統(tǒng)應(yīng)用程序開發(fā)時(shí),這些工具得到了日益廣泛的應(yīng)用。
 ?、苪CIinux的打印終端
  通常情況下,uClinux的默認(rèn)終端是串口,內(nèi)核在啟動(dòng)時(shí)所有的信息都打印到串口終端(使用printk函數(shù)打印),同時(shí)也可以通過串口終端與系統(tǒng)交互。uClinux在啟動(dòng)時(shí)啟動(dòng)了telnetd(遠(yuǎn)程登錄服務(wù)),操作者可以遠(yuǎn)程登錄上系統(tǒng),從而控制系統(tǒng)的運(yùn)行。至于是否允許遠(yuǎn)程登錄可以通過燒寫romfs文件系統(tǒng)時(shí)由用戶決定是否啟動(dòng)遠(yuǎn)程登錄服務(wù)。
 ?、墙徊婢幾g調(diào)試工具
  支持一種新的處理器,必須具備一些編譯,匯編工具,使用這些工具可以形成可運(yùn)行于這種處理器的二進(jìn)制文件。對(duì)于內(nèi)核使用的編譯工具同應(yīng)用程序使用的有所不同。
路由器軟件系統(tǒng)的設(shè)計(jì)過程
  uClinux 操作系統(tǒng)提供了嵌入式Web服務(wù)器、PPPOE拔號(hào)軟件、基于IPTable過濾防火墻等功能模塊的源代碼。路由器軟件系統(tǒng)的設(shè)計(jì)包括uClinux操作系統(tǒng)的裁剪、基于uClinux操作系統(tǒng)提供的以上功能模塊源代碼下的修改和設(shè)計(jì),從而實(shí)現(xiàn)本路由器的嵌入式Web服務(wù)器、PPPOE拔號(hào)軟件、基于IPTable過濾防火墻。
  uClinux操作系統(tǒng)裁剪
 ?、挪眉羟皽?zhǔn)備
  uclinux的裁剪牽涉到對(duì)目標(biāo)的硬件支持問題。要讓uClinux支持一個(gè)新硬件體系,要做的第一件事情就是收集和構(gòu)建代碼的工具。然后就可以裁減和編譯內(nèi)核。一旦內(nèi)核支持基本的處理器功能,它就可以運(yùn)作了,但是如果缺乏驅(qū)動(dòng)程序的支持,就起不了多大作用。典型的驅(qū)動(dòng)程序集合中包括了諸如控制臺(tái)終端、基本串行設(shè)備和一個(gè)可能包含了根文件系統(tǒng)的塊設(shè)備的驅(qū)動(dòng)等。
  在這里主要介紹針對(duì)我們剛才介紹的實(shí)例系統(tǒng)采用的uClinux裁剪方法。本實(shí)例中的宿主機(jī)上裝redhat9操作系統(tǒng),因?yàn)閞edhat9具備安裝uClinux交叉編譯工具時(shí)所需要的庫。
  首先必須在redhat9下建立uclinux開發(fā)環(huán)境,建立uclinux開發(fā)環(huán)境的方法有很多,而且也十分方便??梢詮?a >http://www.uClinux.org處下載最新的uClinux的源代碼、最新的gcc3的工具鏈,不過針對(duì)于不同的工具鏈在不同的操作系統(tǒng)下,以及目標(biāo)板的MCU的不一樣,可能在編譯內(nèi)核時(shí)會(huì)產(chǎn)生錯(cuò)誤,在這里,我講解實(shí)例所使用的不是最新版本的。同樣的,針對(duì)不同的硬件開發(fā)環(huán)境要對(duì)uClinux源代碼進(jìn)行不同的適當(dāng)修改,修改部分通常是以代碼補(bǔ)丁形式實(shí)現(xiàn)的,一般網(wǎng)絡(luò)上會(huì)有各種通用模式的補(bǔ)丁提供使用。好了,切入正題,有了齊全的軟件包后,安裝過程如下:
  (1) 下載內(nèi)核和工具包
  內(nèi)核包 : uClinux-disc-200408.tar.gz
  補(bǔ)丁文件:uClinux-disc-200408.patch
  uclinux的源代碼和文件系統(tǒng)的源代碼,軟件包后的數(shù)字代表完成的日期。
  工具鏈 : arm-elf-gcc-200403.sh
  (2) 安裝工具包
  sh arm -elf-gcc-200403.sh
  (3) 解壓縮內(nèi)核
  tar -xzvfuClinux-dist-200408.tar.gz,生成uClinux-disk目錄。
  (4)安裝補(bǔ)丁:
  將補(bǔ)丁文件復(fù)制到uClinux-disk目錄下,進(jìn)入該目錄,在Shell命令中使用如下命令:
  patch -pl-f
 ?、苾?nèi)核的編譯和生成
  執(zhí)行以下命令可以進(jìn)行uClinux編譯:
  make xconfig。具體的編譯選項(xiàng)配置過程本文不做詳細(xì)介紹。但在此給出編譯的一些基本思想:
  ucLinux作為一個(gè)自由軟件,在廣大愛好者的支持下,內(nèi)核版本不斷更新。新的內(nèi)核修訂了舊內(nèi)核的bug,并增加了許多新的特性。如果用戶想要使用這些新特性,或想根據(jù)自己的系統(tǒng)度身定制一個(gè)更高效,更穩(wěn)定的內(nèi)核,就需要重新編譯內(nèi)核。
  為了正確的合理地設(shè)置內(nèi)核編譯配置選項(xiàng),從而只編譯系統(tǒng)需要的功能的代碼,一般主要有下面四個(gè)考慮:
  自己定制編譯的內(nèi)核運(yùn)行更快(具有更少的代碼)。
  系統(tǒng)將擁有更多的內(nèi)存(內(nèi)核部分將不會(huì)被交換到虛擬內(nèi)存中)。
  不需要的功能編譯進(jìn)入內(nèi)核可能會(huì)增加被系統(tǒng)攻擊者利用的漏洞。
  將某種功能編譯為模塊方式會(huì)比編譯到內(nèi)核內(nèi)的方式速度要慢一些。
  在此需要補(bǔ)充說明的是內(nèi)核編譯的目的是為了創(chuàng)建一個(gè)能夠放置在flash上支持flash讀取的完成要求功能的內(nèi)核,同時(shí)也是flash讀取步驟其中一步。對(duì)uCLinux的內(nèi)核進(jìn)行配置和創(chuàng)建要對(duì)uCLinux內(nèi)核的版本進(jìn)行選擇:uCLinux內(nèi)核的版本號(hào)有三種:主號(hào)、次號(hào)、修訂號(hào)。以2.4.10為例一般來說,主號(hào)如目前的2是很穩(wěn)定的。主號(hào)的變動(dòng)說明了操作系統(tǒng)發(fā)生了很大的變動(dòng)。次號(hào)如目前的.4,用來說明內(nèi)核的穩(wěn)定性。當(dāng)次號(hào)為偶數(shù)號(hào)((0,2, 4, 6) 時(shí),表明現(xiàn)在的內(nèi)核的穩(wěn)定性強(qiáng),而當(dāng)次號(hào)為奇數(shù)號(hào)(1,3, 5) 時(shí),表明現(xiàn)在的內(nèi)核處于測(cè)試的階段,其穩(wěn)定性值得考慮,如果你使用次號(hào)為奇數(shù)號(hào)的內(nèi)核進(jìn)行配置和創(chuàng)建時(shí)、就值得三思而行了。而修訂號(hào)的發(fā)表比較的頻繁,它主要是用來對(duì)前面的版本進(jìn)行修補(bǔ)。開發(fā)新的版本和修改以前的版本是同時(shí)進(jìn)行的,很有可能修改的修訂版本在新的版本出來之后。
  依次執(zhí)行以下命令完成uClinux的編譯過程:
  cd/usr/local/src/uclinux=dist
  make dep
  make clean
  make lib_only
  make user_only
  make romfs
  make image
  最終在image目錄下生成2個(gè)文件:
  zImage——uClinux內(nèi)核2.4.x的壓縮方式可執(zhí)行映象文件;
  romfs——文件系統(tǒng)的映象文件。
  這就是我們要用來燒錄到硬件板內(nèi)的最終文件了。具體燒寫可以通過使用專用的燒寫工具來實(shí)現(xiàn),燒寫過程一定要參照燒寫工具的說明要求來進(jìn)行。
  其中zImage已經(jīng)包含了文件系統(tǒng)映象文件,通常直接燒寫到Flash文件上即可執(zhí)行了。當(dāng)然在這之前要進(jìn)行BootLoader的燒錄, BootLoader其實(shí)就是一個(gè)引導(dǎo)程序,主要作用就是初始化系統(tǒng),進(jìn)而來引導(dǎo)操作系統(tǒng)。在嵌入式系統(tǒng)中,處理器上電后首先執(zhí)行的一段代碼就是BootLoader,BootLoader與硬件密切相關(guān),其代碼主要用C和匯編語言寫成,不同的系統(tǒng)中,BootLoader的功能有所不同,但主要作用還是差不多的,主要有下面幾點(diǎn):
  初始化微控制器MCU運(yùn)行的時(shí)鐘頻率;
  初始化Flash和內(nèi)存的數(shù)據(jù)寬度,讀/寫訪問周期和刷新周期;
  初始化中斷系統(tǒng);
  初始化系統(tǒng)中各種片內(nèi)、片外設(shè)備和I/O端口設(shè)備;
  初始化系統(tǒng)各種運(yùn)行模式下的寄存器和堆棧;
  加載和引導(dǎo)操作系統(tǒng);
  BLOb是BootLoaderObject的縮寫,它是一個(gè)功能強(qiáng)大、源代碼公開的自由軟件,它已經(jīng)實(shí)現(xiàn)了對(duì)多種處理器芯片的Linux 引導(dǎo)支持。對(duì)ARM7等核心的BootLoader支持版本可以到專業(yè)網(wǎng)站上進(jìn)行下載,并稍微做適當(dāng)修改來滿足開發(fā)應(yīng)用中的硬件環(huán)境要求即可,在此我們不做過多講述。
  上面所講述的內(nèi)核編譯過程只是比較寬泛的、籠統(tǒng)的操作過程,也就是說只是基本的操作過程,而在真正的路由功能實(shí)現(xiàn)過程中,還要對(duì)內(nèi)核進(jìn)行多種設(shè)置編譯,比如說對(duì)硬件系統(tǒng)中設(shè)計(jì)到的部件進(jìn)行驅(qū)動(dòng)配置安裝等,當(dāng)然,這些并不是特別難的操作技術(shù),再比如我們下面就要講到的內(nèi)容,這可就是很有挑戰(zhàn)性的核心技術(shù)了,這些都是針對(duì)內(nèi)核進(jìn)行技術(shù)性操作來實(shí)現(xiàn)特定的網(wǎng)絡(luò)功能。
  內(nèi)核編譯核心部分
  1、文件系統(tǒng)分析
  文件系統(tǒng)是uClinux操作系統(tǒng)的重要組成部分,uClinux文件系統(tǒng)是操作運(yùn)行的基礎(chǔ)。許多嵌入式系統(tǒng)在不存在磁盤的情況下也可以運(yùn)行。文件系統(tǒng)可以隨同內(nèi)核一起被打包并在啟動(dòng)時(shí)作為一個(gè)文件系統(tǒng)的映像被加載。對(duì)一個(gè)簡單的應(yīng)用系統(tǒng)來說,這己足夠了。文件系統(tǒng)可以存放在一個(gè)傳統(tǒng)磁盤中,但也可以存放在非易失性的存儲(chǔ)介質(zhì)— 閃存中。閃存有一個(gè)引導(dǎo)塊,它存放了CPU上電后運(yùn)行的第一個(gè)軟件,這個(gè)軟件可以是uclinux的引導(dǎo)程序,也可以是自己編的bootloader。uClinux的內(nèi)核可以被引導(dǎo)程序從閃存中拷貝到RAM中全速運(yùn)行。閃存也可以作為文件的存儲(chǔ)介質(zhì),必要時(shí)寫入一些需要保存的數(shù)據(jù)。
  uClinux支持NFS(Network File System),它允許通過網(wǎng)絡(luò)加載各種應(yīng)用程序。由于用在每一個(gè)嵌入式系統(tǒng)上的軟件可以從一個(gè)公用的服務(wù)器上加載,這在控制軟件的修訂或升級(jí)中是很重要的.在系統(tǒng)運(yùn)行的過程中,導(dǎo)入和導(dǎo)出數(shù)據(jù)、配置、狀態(tài)信息的備份也很重要。對(duì)用戶監(jiān)控而言,這是一個(gè)非常強(qiáng)大的功能。例如,一個(gè)嵌入式系統(tǒng)可能裝配了一個(gè)RAM DISK,它包含著與系統(tǒng)當(dāng)前狀態(tài)的更新維持一致的(狀態(tài))文件。那么別的嵌入式系統(tǒng)僅需通過網(wǎng)絡(luò)把這個(gè)RAM DISK作為遠(yuǎn)程磁盤mount過來便可以訪問那些位于遠(yuǎn)端RAM DISK中的狀態(tài)文件。這也允許在另一臺(tái)機(jī)器上的WEB服務(wù)器借助簡單的CGI腳本來訪問那些狀態(tài)信息。運(yùn)行在其他機(jī)器上的應(yīng)用程序包能夠很容易地訪問這些數(shù)據(jù)。uClinux操作系統(tǒng)根據(jù)不同的安裝選擇可以生成不同的文件系統(tǒng)。系統(tǒng)中提供了十分豐富的文件系統(tǒng)以供不同需要的用戶選擇。每種類型的文件系統(tǒng)的基本塊大小、優(yōu)化分配策略、一次傳送的數(shù)據(jù)長度等等都是相互匹配的,使得本類文件系統(tǒng)均有相應(yīng)的最佳性能。
  2、嵌入式Web服務(wù)器
  對(duì)uClinux操作系統(tǒng)下嵌入式Web技術(shù)的實(shí)現(xiàn)主要用于用戶可以通過網(wǎng)
  頁方式來管理路由器。
 ?、舥Clinux下Web Server的實(shí)現(xiàn)
  uClinux下,主要有三個(gè)WebServer:htpd,thttpd和Boa。Httpd是最簡單的一個(gè)Web Server,它的功能最弱,不支持認(rèn)證,不支持CGI。Thttpd和Boa都支持認(rèn)證、CGI等,功能都比較全。為了實(shí)現(xiàn)動(dòng)態(tài)Web技術(shù),這里我們選擇實(shí)現(xiàn)一個(gè)支持CGI的、非常適合于嵌入式系統(tǒng)的Boa Web Server。Boa是一個(gè)單任務(wù)的http服務(wù)器,源代碼開放、性能高。目前,uClinux的代碼中已經(jīng)包含boa的源代碼,在uClinux下實(shí)現(xiàn)Boa,需要對(duì)Boa做一些配置和修改。這主要通過對(duì)boa.conf和mime.types文件進(jìn)行修改來實(shí)現(xiàn),需要改動(dòng)的配置有以下幾項(xiàng):
 ?、俳夸?/div>
  由于uClinux默認(rèn)的根文件系統(tǒng)romfs是只讀的,不能用mkdir等命令來新建目錄,故應(yīng)在編譯內(nèi)核前先建好要用到的目錄,這通過修改
  /uclinux-samsung/vendors/Samsung/4510b/makefile文件來實(shí)現(xiàn)。在ROWFS_DIRS=bin dev etc home lib mnt proc usr var的后邊增加home/webhome/web/cgi-bin,這樣修改后編譯內(nèi)核,編譯好的根文件系統(tǒng)romfs中就包含這些目錄了。
  ②指定Web 服務(wù)器的根目錄路徑(SERVER ROOT)
  進(jìn)入 /uclinux-samsung/user/boa/src/目錄,通過修改define.h文件中#define ERVER ROOT "/home”語句來指定SERVER ROOT。另外,還可以通過命令行來指定,例如:boa-c/home/&。而且命令行指定的SERVER ROOT可以覆蓋define.h文件所指定的。
 ?、坌薷腷oa.conf文件
  在. /uclinux-samsung/user/boa/src/boa.conf里修改:
  *將 user obody和Group ogroup改為User0 和Group0 ;
  *將 DocumentRoot/var/www改為DocumentRoot/home/web,這樣web服務(wù)器的文檔根目錄為/home/web;
  *將 MimeTypes/eWmime.types改為MimeTypes/home/web/mime.types;
  定義默認(rèn)首頁和CGI程序所在目錄,即
  DirectoyIndex index.html
  ScriptAlias/cgi-bin//home/web/cgi-bin/
  這樣指定后,.index.htm為遠(yuǎn)程瀏覽客戶訪問WebServer所看到的首頁默認(rèn)值,用C編寫的CGI程序編譯成二進(jìn)制文件,放到/cgi-bin/目錄下,CGI程序能被正確地執(zhí)行。
  Boa.conf文件和mime.types文件必須放到Web服務(wù)器根目錄下,所以把修改后的bao.conf和mime.types拷貝到“./uclinux-samsung/romfs/home/”目錄下。然后在/uclinux- samsung/Vendors/Samsung/4510b/initab里修改,在:inet:unknown:/bin/inetd后加入: boa:unknown:/bin/boac/homeo
  配置過程后,重新編譯內(nèi)核,編譯時(shí)選中Boa選項(xiàng)。把編譯好的內(nèi)核下載到硬件板,啟動(dòng)uclinux,完成IP配置,啟動(dòng)Boa Web Server,然后就可以通過lE訪問你的網(wǎng)頁了。如果想啟動(dòng)uclinux時(shí)自動(dòng)啟動(dòng)Boa Web Server,可以修改re文件,進(jìn)入uclinux-samsung/vendors/Samsung/4510B目錄,在運(yùn)行腳本rc中增加兩行:
  ifconfig eth0 192.168.0.101 up
  boa-c/home/&
  修改后重新編譯內(nèi)核,再下載到硬件板運(yùn)行.運(yùn)行uclinux后,不需要配置就可以直接通過IE來訪問http://192.168.0.101,看到你的網(wǎng)頁了。
 ?、苪clinux下實(shí)現(xiàn)動(dòng)態(tài)Web頁面的CGI技術(shù)
  到目前為止,實(shí)現(xiàn)動(dòng)態(tài)Web頁面有4種技術(shù)可供選擇:CGI(Common Gateway Interface), ASP(ActiveXServerPage),PHP(PersonalHomePage)和JSP(JavaServerPage).在uclinux下如果要實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁,只能采用CGI,因此目前uclinux還不支持ASP, PHP等動(dòng)態(tài)Web頁面技術(shù)。CGI(通用網(wǎng)關(guān)接口)提供Web服務(wù)器一個(gè)執(zhí)行外部程序的通道,這種服務(wù)端技術(shù)使得瀏覽器和服務(wù)器之間具有交互性。CGI程序?qū)儆谝粋€(gè)外部程序,需要編譯成可執(zhí)行文件,以便在服務(wù)端運(yùn)行。瀏覽器將用戶輸入的數(shù)據(jù)送到Web服務(wù)器,Web服務(wù)器將數(shù)據(jù)使用STDIN送給CGI程序,在執(zhí)行CGI程序后,可能會(huì)訪問存儲(chǔ)數(shù)據(jù)的一些文檔,最后使用STDOUT輸出HTML形式的結(jié)構(gòu)文件,經(jīng)Web服務(wù)器送回瀏覽器顯示給用戶。CGI程序可以用任何程序設(shè)計(jì)語言編寫,如Shell腳本語言、Perl,F(xiàn)ortran, Pascal, C語言等。但目前uclinux不支持Pert, Fortran等語言,而且C語言在平臺(tái)無關(guān)性上表示不錯(cuò),所以我們選擇用C來編寫CGI程序。另外,uClinux也不支持?jǐn)?shù)據(jù)庫,所以需要保存的數(shù)據(jù)只能保存到文件中,CGI查詢數(shù)據(jù)時(shí)也是查詢這些文件,而不是訪問數(shù)據(jù)庫。
  ⑶uClinux下動(dòng)態(tài)Web頁面的實(shí)現(xiàn)
  下面通過一個(gè)例子來說明如何實(shí)現(xiàn)uClinux下的動(dòng)態(tài)Web頁面技術(shù)。此例子的目的是使用戶能夠通過Web頁面內(nèi)嵌表單提交數(shù)據(jù),并能把用戶提交的數(shù)據(jù)通過Web瀏覽器正確地返回給用戶。實(shí)現(xiàn)動(dòng)態(tài)Web頁面的第一步是用HTML語言編寫Web頁及內(nèi)建表單。編寫Web頁面時(shí),要由ACTION屬性來指定相關(guān)的CGI程序,如ACTION=cgi-bin/demo;由MOTHOD屬性來指明所用的提交數(shù)據(jù)的方法,即MOTHOD=POST(GET)。
  實(shí)現(xiàn)動(dòng)態(tài) Web頁面的第二步是用C編寫CGI程序,CGI程序分為以下幾部分:①根據(jù)POST方法或GET方法從提交的表單中接收數(shù)據(jù);②URL編碼的解碼;③用printf() 函數(shù)來產(chǎn)生HTML源代碼,并將經(jīng)過解碼后的數(shù)據(jù)正確地返回給瀏覽器。包括demo.c, cgivars.h和cgivars.c三個(gè)文件。將編寫好的CGI程序編譯成二進(jìn)制文件放在cgi-bin/目錄下,CGI程序能被正確地執(zhí)行,最終CGI程序就可以對(duì)上述表單數(shù)據(jù)的進(jìn)行處理了。
  下面對(duì)程序稍加說明。若以GET方法提交數(shù)據(jù),表單中的數(shù)據(jù)被保存在QUERY_STRING環(huán)境變量中,通過調(diào)用函數(shù)getenv("QUERY_STRING")來讀取數(shù)據(jù);若以POST方法提交數(shù)據(jù),則程序先從CONTENT LENGTH環(huán)境量得到數(shù)據(jù)的字長,然后從標(biāo)準(zhǔn)輸入中讀取相應(yīng)長度的字符串即可得到提交的數(shù)據(jù)。數(shù)組postinput[i] 中保存的就是從表單中提取的數(shù)據(jù)。
  URL編碼的解碼過程較為復(fù)雜,URL編碼的規(guī)則下:①變量之間用“&”分開;② 變量與其對(duì)應(yīng)值之間用“=”連接;③空格符用“+”代替;④特殊意義的字符用%接相應(yīng)的十六進(jìn)制ASCI碼代替。解碼即為編碼的逆過程。在程序中,對(duì)于從表單中提取過來的postinput[i]中的數(shù)據(jù),當(dāng)發(fā)現(xiàn)字符為“+”時(shí),將它轉(zhuǎn)換成空格;當(dāng)發(fā)現(xiàn)字符為“&”時(shí),意味著個(gè)名字2值對(duì)的結(jié)束,在此處將字符中切成幾個(gè)字符串;當(dāng)再現(xiàn)字符為“=”時(shí),意味著一個(gè)名字/值對(duì)的名字部分的結(jié)束,在此再將名字/值對(duì)分開。最后通過調(diào)用unescape_url(char *url)子函數(shù)將十六進(jìn)制ASCII碼值表示的特殊字符轉(zhuǎn)換成相應(yīng)的ASCII字符。
  3、PPPOE撥號(hào)實(shí)現(xiàn)
  PPPOE主要針對(duì)ADSL寬帶接入方式,實(shí)現(xiàn)用戶的的認(rèn)證上網(wǎng)方式就是采用這種方式接入。
 ?、臥PPOE簡介
  1998年后期問世的以太網(wǎng)上點(diǎn)對(duì)點(diǎn)協(xié)議(PPP over Ethernet)技術(shù)是由Redback網(wǎng)絡(luò)公司、客戶端軟件開發(fā)商RouterWare公司以及Worldcom子公司UUNET Technologies公司在IETF RFC制的基礎(chǔ)上聯(lián)合開發(fā)的。通過把最經(jīng)濟(jì)的局域網(wǎng)技術(shù)以太網(wǎng)和點(diǎn)對(duì)點(diǎn)協(xié)議的可擴(kuò)展性及管理控制功能結(jié)合在一起,網(wǎng)絡(luò)服務(wù)提供商和電信運(yùn)營商便可利用可靠和熟悉的技術(shù)來加速部署高速互聯(lián)網(wǎng)業(yè)務(wù)。它使服務(wù)提供商在通過數(shù)字用戶線、電纜調(diào)制解調(diào)器或無線連接等方式,提供支持多用戶的寬帶接入服務(wù)時(shí)更加簡便易行.同時(shí)該技術(shù)亦簡化了最終用戶在動(dòng)態(tài)地選擇這些服務(wù)時(shí)的操作.
 ?、芇PPOE實(shí)現(xiàn)
  實(shí)現(xiàn)步驟 :
  pppoe的實(shí)現(xiàn)有兩種方式,一種是作為一個(gè)用戶態(tài)的應(yīng)用程序運(yùn)行,就是rp-pppoe這個(gè)程序;另一種是選擇在kernel ppp里支持pppoe功能,這同時(shí)也需要pppd支持pppoe。
  具體的細(xì)節(jié)實(shí)現(xiàn)步驟本文不做詳述,有興趣的讀者可以查閱相關(guān)的Linux資料進(jìn)行更深一步的學(xué)習(xí)研究。
  基于IPTable過濾式防火墻
  網(wǎng)絡(luò)防火墻用來保護(hù)一個(gè)網(wǎng)絡(luò)不受來自另一個(gè)網(wǎng)絡(luò)的攻擊,是網(wǎng)絡(luò)安全環(huán)節(jié)中進(jìn)行的一個(gè)防御步驟。在路由器中配置IPTable過濾式防火墻,可以對(duì)IP數(shù)據(jù)封包進(jìn)行規(guī)則檢查和過濾,保證內(nèi)網(wǎng)安全。
 ?、欧阑饓Ω攀?/div>
  防火墻是一套能夠在兩個(gè)或兩個(gè)以上的網(wǎng)絡(luò)之間,明顯區(qū)隔出實(shí)體線路聯(lián)機(jī)的軟硬件設(shè)備組合。被區(qū)隔開來的網(wǎng)絡(luò),可以透過封包轉(zhuǎn)送技術(shù)來相互通訊,透過防火墻的安全管理機(jī)制,可以決定哪些數(shù)據(jù)可以流通,哪些資料無法流通,藉此達(dá)到網(wǎng)絡(luò)安全保護(hù)的目的。
  防火墻產(chǎn)品可以概略歸類為硬件式防火墻和軟件式防火墻,但實(shí)際上無論是硬件式或軟件式防火墻,它們都需要使用硬件來作為聯(lián)機(jī)介接,也需要使用軟件來設(shè)定安全政策,嚴(yán)格說兩者間的差別并不太大。我們只能從使用的硬件與操作系統(tǒng)來加以區(qū)分,硬件式防火墻是使用專有的硬件,而軟件式防火墻則使用一般的計(jì)算機(jī)硬件,硬件式防火墻使用專有的操作系統(tǒng),而軟件式防火墻則使用一般的操作系統(tǒng)。
  防火墻依照其運(yùn)作方式來分類,可以區(qū)分為封包過濾式防火墻(Packet Filter)、應(yīng)用層網(wǎng)關(guān)式防火墻(Application-Level Gateway,也有人把它稱為Proxy防火墻)、電路層網(wǎng)關(guān)式防火墻(Circuit-Level Gateway).其中被廣為采用的是封包過濾式防火墻,本文要介紹的iptables防火墻就是屬于這一種。
  封包過濾是最早被實(shí)作出來的防火墻技術(shù),它是在TCP/IP四層架構(gòu)下的IP層中運(yùn)作.封包過濾器的功能主要是檢查通過的每一個(gè)IP數(shù)據(jù)封包,如果其標(biāo)頭中所含的數(shù)據(jù)內(nèi)容符合過濾條件的設(shè)定就進(jìn)行進(jìn)一步的處理,主要的處理方式包含:放行(accept)、丟棄(drop)或拒絕(reject)。要進(jìn)行封包過濾,防火墻必須要能分析通過封包的來源IP與目的地IP,,還必須能檢查封包類型、來源端口號(hào)與目的端口號(hào)、封包流向、封包進(jìn)入防火墻的網(wǎng)卡接口、TCP的聯(lián)機(jī)狀態(tài)等數(shù)據(jù)。
 ?、艻Ptable的原理及實(shí)現(xiàn)
  IPTables是Linux操作系統(tǒng)中的一個(gè)管理內(nèi)核包過濾的工具,它可以添加、插入或刪除核心包過濾表(1)中的規(guī)則,以實(shí)現(xiàn)防火墻功能。
  一個(gè)iptables命令基本上包含如下五部分:希望工作在哪個(gè)表上、希望使用該表的哪個(gè)鏈、進(jìn)行的操作(M入,添加,刪除,修改)、對(duì)特定規(guī)則的目標(biāo)動(dòng)作、匹配數(shù)據(jù)報(bào)條件。
  基本的語法為:
  iptables -t table -Operation chain -target match(es)
  例如,希望添加一個(gè)規(guī)則,允許所有從任何地方到本地smtp端口的連接:
  iptables -t filter -A INPUT -ACCEPT -p tcp --dport smtp
  當(dāng)然 ,還有其他的對(duì)規(guī)則進(jìn)行操作的命令如:清空鏈表,設(shè)置鏈缺省策略,添加一個(gè)用戶自定義的鏈...
  經(jīng)過一系列深入的配置后,基本的路由功能器就這樣誕生了,當(dāng)然實(shí)際中路由器還有相當(dāng)多的應(yīng)用功能,這些都是通過軟件開發(fā)來逐步深層次實(shí)現(xiàn)的,如果你想成為一個(gè)嵌入式工程師的話,那這篇文章就算是一個(gè)引路人吧,要達(dá)到更高的境界,還需要自己刻苦學(xué)習(xí)研究,一步一步在魔幻般的技術(shù)殿堂中自由遨游。
(責(zé)任編輯:凌云通)
 
 
 
(3)  用 Linux 打造路由器 
 
發(fā)布時(shí)間:2006.08.01 16:55     來源:linux寶庫    作者:韓波
Linux 作為一種新近崛起的操作系統(tǒng),由于其性能穩(wěn)定,源碼開放及價(jià)格方面的優(yōu)勢(shì)而逐漸被廣大用戶所接受。現(xiàn)在Linux的主要用武之地在于服務(wù)器領(lǐng)域,但是,經(jīng)過適當(dāng)?shù)呐渲弥螅€可以擔(dān)當(dāng)互聯(lián)網(wǎng)的物理基石--路由器這一重要角色。

路由器是通信子網(wǎng)中的通信節(jié)點(diǎn),每個(gè)路由器都計(jì)算并維護(hù)一張路由表,并據(jù)此指導(dǎo)數(shù)據(jù)報(bào)前往最佳路徑中的下一站,這便是所謂的路由。這樣,經(jīng)過互聯(lián)網(wǎng)上所有路由器的通力合作,數(shù)據(jù)報(bào)就能夠沿著一條"最佳"路徑到達(dá)目的地。在 GNU 軟件 Zebra 的協(xié)助下,我們可以將 Linux 機(jī)器打造成一臺(tái)功能完備的路由器,它能夠同時(shí)支持 RIPv1、 RIPv2、RIPng、OSPFv2、OSPFv3、BGP - 4 和 BGP - 4+ 等諸多 TCP/IP 協(xié)議?,F(xiàn)在我們首先了解一下 OSPF 和 BGP 協(xié)議的運(yùn)行模式和基本原理,然后介紹 Zebra 的安裝配置方法,讓你的 Linux 機(jī)器變成支持 OSPF 與 BGP 的路由器。

BGP/OSPF 概述

如今,許多公司都建有多個(gè)網(wǎng)絡(luò),如果這些網(wǎng)絡(luò)的類型不盡相同,則需要用路由器進(jìn)行互聯(lián)。路由器是與兩個(gè)或兩個(gè)以上的網(wǎng)絡(luò)連接的計(jì)算機(jī),它根據(jù)路由協(xié)議生成并維護(hù)一個(gè)路由表,并按照該路由表中的信息轉(zhuǎn)發(fā)包。這些路由器對(duì)公司內(nèi)部的網(wǎng)絡(luò)結(jié)構(gòu)了如指掌,知道將分組送到目的地的全部細(xì)節(jié),但對(duì)于其他公司的網(wǎng)絡(luò)結(jié)構(gòu)并不了解。像這樣"在同一機(jī)構(gòu)下管理的一系列路由器和網(wǎng)絡(luò)"被稱為自治系統(tǒng)(AS)。由不同機(jī)構(gòu)掌管的自治系統(tǒng),可以采用不同的路由選擇算法;但同一自治系統(tǒng)內(nèi)的所有路由器都使用同一路由協(xié)議,以便于自治系統(tǒng)內(nèi)部各個(gè)路由器互換路由信息來維持相互的連通性。每一個(gè)自治系統(tǒng)都有一個(gè)16位的"自治系統(tǒng)(AS)編號(hào)"作為標(biāo)志,就像 IP 地址一樣,它是由專門機(jī)構(gòu)來分配的。

自治系統(tǒng)內(nèi)的路由器稱為"內(nèi)部網(wǎng)關(guān)",所用的協(xié)議稱為"內(nèi)部網(wǎng)關(guān)協(xié)議"。內(nèi)部網(wǎng)關(guān)協(xié)議大體上分為兩類,一類是距離向量協(xié)議,如 RIP,EIGRP 協(xié)議;另一類是鏈路狀態(tài)協(xié)議如 OSPF 協(xié)議。鏈路狀態(tài)路由協(xié)議與距離向量協(xié)議的不同之處在于,采用鏈路狀態(tài)路由協(xié)議的路由器不是交換到達(dá)目的地的距離,而是維護(hù)一張網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖。然后用數(shù)據(jù)庫表示該圖,其中的表項(xiàng)對(duì)應(yīng)網(wǎng)絡(luò)的一條鏈路。路由器根據(jù)數(shù)據(jù)庫的信息計(jì)算出"最佳路由",由此指導(dǎo)包的轉(zhuǎn)發(fā)。當(dāng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)發(fā)生變化時(shí),只需將相應(yīng)紀(jì)錄而非整個(gè)數(shù)據(jù)庫通知其他節(jié)點(diǎn)。各路由器做出相應(yīng)修改并重新計(jì)算路由后,就可以繼續(xù)正常工作。

因?yàn)?開放式最短路徑優(yōu)先協(xié)議"的文檔必須公開發(fā)表,所以它是"開放式的"(Open);又因?yàn)樗捎?最短路徑優(yōu)先"(SPF)算法來計(jì)算一個(gè)節(jié)點(diǎn)到所有其它節(jié)點(diǎn)間的最短路徑,故名為 OSPF。OSPF 具有支持多重度量制式和多重路徑等諸多優(yōu)點(diǎn),因此成為因特網(wǎng)上推薦使用的內(nèi)部網(wǎng)關(guān)協(xié)議,RIP 卻由于自身的局限性而被打入冷宮。現(xiàn)在,在性能上唯一能夠與 OSPF 相匹敵的內(nèi)部網(wǎng)關(guān)協(xié)議便是 EIGRP--Cisco 的一個(gè)專有協(xié)議,但 OSPF 的"開放"本身就是一個(gè)響亮的招牌,因?yàn)檎l也不想受制于某家供應(yīng)商。

前面提到,自治系統(tǒng)內(nèi)的路由器不必知道其他自治系統(tǒng)的內(nèi)部結(jié)構(gòu)細(xì)節(jié),從而有效地節(jié)約了路由器的內(nèi)存和 CPU 時(shí)間,并提高了網(wǎng)絡(luò)帶寬的利用率。但是,如果想與其他公司(自治系統(tǒng))通信時(shí)該怎么辦呢?很簡單,我們可以在自治系統(tǒng)內(nèi)指定一個(gè)與其他自治系統(tǒng)相連的路由器為"外部網(wǎng)關(guān)",通過它進(jìn)入其他自治系統(tǒng)。該路由器使用的協(xié)議叫做"外部網(wǎng)關(guān)協(xié)議",如邊界網(wǎng)關(guān)協(xié)議(BGP)。相鄰的兩個(gè)網(wǎng)關(guān)必須首先互換"鄰機(jī)探測(cè) "報(bào)文,協(xié)商是否愿意成為"鄰機(jī)"。成為鄰機(jī)則意味著兩個(gè)自治系統(tǒng)同意中轉(zhuǎn)雙方的通信流。同意后,兩個(gè)鄰機(jī)互換"鄰機(jī)可達(dá)性報(bào)文",來監(jiān)督他們之間的鏈路的工作情況。接下來便是最重要的工作,用"網(wǎng)絡(luò)可達(dá)性報(bào)文"來交換通過各鄰機(jī)所能到達(dá)的網(wǎng)絡(luò)的信息,從而實(shí)現(xiàn)自治系統(tǒng)之間的連通性。在外部網(wǎng)關(guān)的眼里只由外部網(wǎng)關(guān)和連接他們的鏈路,如此以來,自治系統(tǒng)內(nèi)的通信由內(nèi)部網(wǎng)關(guān)處理,自治系統(tǒng)之間的通信交由外部網(wǎng)關(guān)處理--一個(gè)分級(jí)路由的景象已經(jīng)展現(xiàn)在我們面前,實(shí)際上,因特網(wǎng)正是由大量自治系統(tǒng)組成的。

建立一個(gè)高級(jí)路由器

許多人對(duì)路由器感到比較陌生,事實(shí)上作為一個(gè)防火墻使用的 Linux 系統(tǒng)已經(jīng)是一個(gè)路由器了,只不過還有點(diǎn)"簡陋"而已。然而,我們的目標(biāo)是用 Linux 打造一個(gè)"高級(jí)"路由器,它必須能夠利用動(dòng)態(tài)路由協(xié)議(上文提到的協(xié)議皆為動(dòng)態(tài)路由協(xié)議)工作。這些協(xié)議能夠使路由器互換相關(guān)信息,從而共享穿越網(wǎng)絡(luò)時(shí)所用的那些路徑--路由。這一點(diǎn)對(duì)于大型網(wǎng)絡(luò)(比如 Internet)而言是"異常"重要的,因?yàn)榇藭r(shí)再用靜態(tài)路由(也就是人工計(jì)算設(shè)置路由)是根本不現(xiàn)實(shí)的。

舉例來說,即使在比較理想--即不考慮路由的變化的情況下,一個(gè)邊界網(wǎng)關(guān)協(xié)議(BGP)路由表也至少包含 100,000 條以上的表項(xiàng)。這時(shí),手工建立這樣的靜態(tài)路由是難以忍受的。很明顯,即使我們的網(wǎng)絡(luò)小于 Internet--比如一個(gè)大型公司網(wǎng)絡(luò),我們還是更加喜歡動(dòng)態(tài)路由協(xié)議。

外部網(wǎng)關(guān)協(xié)議 BGP 通常作為 Internet 的骨干使用,而其它的協(xié)議(如 OSPF)則適于小型的互連網(wǎng)絡(luò)。開放式最短路徑優(yōu)先(OSPF)協(xié)議是一個(gè)應(yīng)用最廣的內(nèi)部網(wǎng)關(guān)協(xié)議(IGP)。Zebra 是一個(gè)開放源代碼程序包,通過它你可以在 Linux 上運(yùn)行 BGP 與 / 或 OSPF。

安裝 Zebra

你既可以從 Zebra.org 網(wǎng)站下載 Zebra 的最新源程序,也能從 Redhat 和 Debian 中獲得它,但不一定是最新版的。從源代碼中進(jìn)行軟件安裝,你就會(huì)發(fā)現(xiàn)使用的是一些普通的安裝過程。簡介如下:

代碼:

./configure
make
make install
 
配置腳本會(huì)搜索系統(tǒng)上已經(jīng)安裝的 IP 棧并且自動(dòng)地設(shè)置成支持他們。當(dāng)前,IP 棧很可能僅僅是指 IPv4,但是 IPv6 用戶也不用擔(dān)心,因?yàn)?Zebra 也會(huì)發(fā)現(xiàn)并且支持它。

程序安裝之后,還可能必須在 /etc/services 中增加一些命令行。Zebra 的守護(hù)程序在他們自己的虛擬終端連接(VTY)下運(yùn)行,所以你的系統(tǒng)必須知道這些虛擬終端連接。這里是你應(yīng)該增加的一些連接∶

代碼:

zebrasrv 2600/tcp # zebra service
zebra 2601/tcp # zebra vty
ripd 2602/tcp # RIPd vty
ripngd 2603/tcp # RIPngd vty
ospfd 2604/tcp # OSPFd vty
bgpd 2605/tcp # BGPd vty
ospf6d 2606/tcp # OSPF6d vty
 

配置 Zebra

如果你已經(jīng)熟悉 Cisco IOS,那你就能在短時(shí)間內(nèi)掌握 Zebra,因?yàn)槟銜?huì)發(fā)現(xiàn)兩者極為相似。Zebra 的每個(gè)守護(hù)程序使用一個(gè)單獨(dú)的 VTY,這些 VTY 可以通過一個(gè)遠(yuǎn)程登錄會(huì)話進(jìn)行動(dòng)態(tài)配置。所以,如果你需要設(shè)置 OSPF,簡單地遠(yuǎn)程登錄到該 Linux 上 2604 端口;為了修改內(nèi)核的路由表或設(shè)置路由協(xié)議間的再分發(fā),你可以遠(yuǎn)程登錄到端口 2601,該 Zebra 守護(hù)程序充當(dāng)內(nèi)核管理器,管理其他的守護(hù)程序和系統(tǒng)本身之間的通信。

現(xiàn)在介紹如何在一個(gè)服務(wù)器上創(chuàng)建和運(yùn)行 OSPF 和 BGP。Zebra 的守護(hù)程序運(yùn)用純文本文件儲(chǔ)存它們的配置。對(duì)于 OSPF/BGP 路由器,將用到三個(gè)文件∶zebra.conf、ospfd.conf 和 bgpd.conf。舉例來說,zebra.conf 文件可能會(huì)是這樣:

代碼:

! Zebra configuration saved from vty
! 2002/02/28 01:46:12
!
hostname LinuxRouter /*主機(jī)名為 LinuxRouter*/
password zebra /*口令為 zebra*/
enable password z3bRa /*進(jìn)入特權(quán)模式時(shí)的口令為 z3bRa */
log file /var/log/zebra/zebra.log /*日志文件的地址*/
!
interface eth0 /*以太接口 eth0*/
description Interface to External Network/*對(duì)接口的描述*/
ip address 10.0.0.1/24 /*該接口的 IP 地址*/
!
interface eth1/*以太接口 eth0*/
description Interface to Internal Network/*對(duì)接口的描述*/
ip address 192.168.66.1/24/*該接口的 IP 地址*/
 

這里的感嘆號(hào)充當(dāng)注解標(biāo)識(shí)或分隔符。盡管存在大量不同的網(wǎng)絡(luò)接口類型(Ethernet、ISDN 等等),但只要是 Linux 內(nèi)核能夠辨認(rèn)的網(wǎng)絡(luò)接口類型,Zebra 都可以使用。

子網(wǎng)掩碼都帶有網(wǎng)絡(luò)位的位數(shù)(例如/24),默認(rèn)掩碼則不然(比如 255.255.255.0)。注意存在兩個(gè)口令,一個(gè)用于用戶模式而另一個(gè)用于特權(quán)模式。這不僅有利于向非管理員提供訪問權(quán)限,而且對(duì)于創(chuàng)建路由服務(wù)器或者路由探測(cè)鏡也是非常重要的。所有 BGP 管理員都知道,這些探測(cè)鏡是調(diào)試路由問題的關(guān)鍵,因?yàn)樗麄兡軌蚴鼓憔拖髲囊粋€(gè)外部 AS( AS代表自治系統(tǒng))一樣查看路由。 BGP 路由需要用到 AS 編號(hào),AS 編號(hào)是一些由 ARIN (美國互聯(lián)網(wǎng)絡(luò)號(hào)碼注冊(cè)機(jī)構(gòu))控制的注冊(cè)號(hào)碼。

下一步將啟動(dòng)一些必要的程序。用以下命令完成∶

代碼:

/usr/sbin/zebra -dk
/usr/sbin/ospfd -d
/usr/sbin/bgpd -d
 
第一個(gè)命令,啟動(dòng) zebra,該守護(hù)程序?qū)嶋H上用來更新內(nèi)核的路由表。-dk 告訴該程序作為一個(gè)守護(hù)程序運(yùn)行(d),它的大部分時(shí)間在后臺(tái)運(yùn)行。k 是另外的一個(gè)選項(xiàng),告訴 Zebra 維護(hù)所有已配置的路由。它用來保證在你測(cè)試 Zebra 的時(shí)候不會(huì)意外地刪除路由表。一般情況下,設(shè)置路由和接口,需要將 ifconfig 和 route 這兩個(gè)命令配合使用。而 Zebra 完全可以替代這種路由管理方式,使用起來更為簡潔。

設(shè)置OSPF

至此,基本的服務(wù)已經(jīng)具備,現(xiàn)在讓我們 Telnet 到本地機(jī)器的 2604 端口,開始配置 OSPF。為進(jìn)入特權(quán)模式,鍵入 enable (正如在Cisco IOS 中一樣),然后鍵入特權(quán)模式口令。接下來,用 configuration terminal 命令切換到配置模式。值得一提的是 Zebra 也能接受命令縮寫形式,這與 Cisco 極為相似,如 configuration terminal 可以簡寫為 config t,這大大縮短了輸入時(shí)間,使用起來更為方便。另外,如果輸入 list 和 ?,它將顯示一個(gè)當(dāng)前可用命令的清單,并附有一些簡略解釋。除此之外,還可以鍵入 tab 用于命令的自動(dòng)完成。這就是說,如果你想鍵入命令 clock,只要鍵入前兩個(gè)字母 cl 然后按 tab 鍵,機(jī)器就會(huì)自動(dòng)"補(bǔ)全"這條命令--前提是你鍵入的字符足以唯一地確定這條命令。這是一個(gè)很好的功能,尤其是當(dāng)你習(xí)慣于這種用法時(shí)。

接下來,我們還需要告訴守護(hù)程序?qū)⑼ㄟ^ OSPF 廣播哪些網(wǎng)絡(luò)以及相關(guān)的域(area)。OSPF 的可伸縮性允許它支持多個(gè)域。鍵入 router ospf 開始配置 OSPF,然后鍵入 network 192.168.66.0/24 area 0。這告訴路由器,我們將使用 OSPF 廣播一個(gè)子網(wǎng)掩碼為 255.255.255.0 的 192.168.66.0 網(wǎng)絡(luò)。

在本例中,我們讓 eth0 接口變成一個(gè)被動(dòng)(passive)接口,以便使它不能發(fā)送路由更新。這對(duì)于實(shí)驗(yàn)是非常重要的,因?yàn)樵谀莻€(gè)方向上的其他的路由器可能監(jiān)聽到發(fā)送的路由更新,將接口變成一個(gè)被動(dòng)(passive)接口,從而有效的避免擾亂網(wǎng)絡(luò)的正常運(yùn)行。為此,鍵入命令 passive - interface eth0。如果打算將此路由器作為工作路由器使用時(shí),就沒有這個(gè)必要了。一旦你完成修改,用 end 命令從配置模式中退出,然后用 write file 命令保存。這里是一個(gè)快照:

代碼:

labrat:~# telnet 0 2604 /*Telnet 到本地機(jī)器的 2604 端口*/
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'. /*用 '^]'退出該會(huì)話*/

Hello, this is zebra (version 0.84b)
Copyright 1996-2000 Kunihiro Ishiguro

User Access Verification

Password: /*在此鍵入口令,如 zebra*/
ospfd> enable/*進(jìn)入特權(quán)模式*/
Password: /*輸入特權(quán)模式口令,如 z3bRa*/
ospfd# configure terminal /*從終端配置路由器*/
ospfd(config)# router ospf /*配置 OSPF*/
ospfd(config-router)# network 192.168.66.0/24 area 0 /*通過 OSPF 廣播網(wǎng)絡(luò) network 192.168.66.0,/24 指出子網(wǎng)掩碼為 24 位,area 0 指出該網(wǎng)絡(luò)所在的域*/
ospfd(config-router)# passive-interface eth0 /*將 eth0 接口設(shè)置成一個(gè)被動(dòng)(passive)接口*/
ospfd(config-router)# end /*退出配置模式*/
ospfd# write file /*保存修改*/
Configuration saved to /etc/zebra/ospfd.conf
 

請(qǐng)記住,為了讓 OSPF 或 BGP 在某接口上工作,那么該接口必須處于"運(yùn)行"狀態(tài)。為手工運(yùn)行一個(gè)接口,登錄到端口 2601 并且在該接口上執(zhí)行 no shut 命令。

建立 BGP

BGP 與 OSPF 的配置大致相同。開始,打開一個(gè)遠(yuǎn)程登錄會(huì)話到端口 2605。之后執(zhí)行 configure terminal,輸入 router bgp 進(jìn)入 BGP 配置模式。如前所述,BGP 使用 AS 編號(hào)建立鄰機(jī)關(guān)系并路由通信流。在我們的試驗(yàn)中,我們將使用一個(gè)范圍在 64512 到 65534 之間的私有 AS 號(hào)碼(換句話說,該號(hào)碼旨在機(jī)構(gòu)內(nèi)部有效,而在因特網(wǎng)上無效)。用 network 命令設(shè)置由 BGP 廣播的那些網(wǎng)絡(luò),如 network 192.168.66.0/24.。與 OSPF 不同的是,BGP 鄰機(jī)必須靜態(tài)指定。如同下述∶neighbor remote-as 。這里是一個(gè)范例:

代碼:

labrat:~# telnet 0 2605
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.

Hello, this is zebra (version 0.84b)
Copyright 1996-2000 Kunihiro Ishiguro

User Access Verification

Password:
bgpd> enable
Password:
bgpd# configure terminal
bgpd(config)# router bgp 65530 /*配置 BGP,65530 是自治系統(tǒng)編號(hào)。也就是將該系統(tǒng)配置成自治系統(tǒng) 65530 上的外部網(wǎng)關(guān)*/
bgpd(config-router)# network 192.168.66.0/24 /*由 BGP 廣播的網(wǎng)絡(luò)*/
bgpd(config-router)# neighbor 10.0.0.5 remote-as 65531 /*靜態(tài)指定自治系統(tǒng) 65531 上 IP 地址為 10.0.0.5 的路由器為本機(jī)的鄰機(jī)*/
bgpd(config-router)# end
bgpd# write file
Configuration saved to /etc/zebra/bgpd.conf
 
對(duì)于 OSPF 和 BGP,有大量選項(xiàng)可用,限于篇幅不能在此一一介紹。對(duì)于每個(gè)協(xié)議,我建議在實(shí)際使用之前,不妨先研究一番。為此,可以參考 GNU Zebra 文檔,它會(huì)給你提供許多幫助。

結(jié)束語

在網(wǎng)絡(luò)中,路由通信流的方法有若干種。就路由器而論,雖然有用各種硬件可用,但是費(fèi)用較高--人們自然就會(huì)想到運(yùn)行一個(gè)用 Linux 系統(tǒng)構(gòu)筑的功能豐富的路由器作為代替。Zebra 路由守護(hù)程序已經(jīng)使這一切變?yōu)楝F(xiàn)實(shí)。因?yàn)橹С?IPv4、IPv6 和其它各式各樣的協(xié)議,所以 Zebra 能夠滿足我們所有的路由需求。它還有一個(gè)好處就是,因?yàn)?Cisco IOS 和 Zabra 極為相似,如果你以前在 Cisco IOS 環(huán)境中工作,可以輕松的過渡到 Zebra 系統(tǒng);同時(shí),使用 Zebra 也能讓你積累起豐富的類似于使用 Cisco IOS 路由器的經(jīng)驗(yàn)和知識(shí)。

作者簡介:

韓波,自由撰稿人,有近十年的 C 語言編程經(jīng)驗(yàn),主要感興趣的領(lǐng)域?yàn)?TCP/IP 協(xié)議以及 Linux 內(nèi)核。個(gè)人認(rèn)為自由撰稿人的價(jià)值在于:在不影響問題實(shí)質(zhì)的前提下,用一種通俗的,易于理解的方式來闡述自己的見解。您可以通過 Email:hbzzx2001@yahoo.com.cn 與他取得聯(lián)系。
 
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服