国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

蘭州大學(xué):共享緩存提升網(wǎng)速

2012-08-28 02:40陳文波李林唐鈞李善璽
中國教育網(wǎng)絡(luò) 2012年9期
關(guān)鍵詞:教育網(wǎng)配置文件路由

文/陳文波 李林 唐鈞 李善璽

為了更好地利用網(wǎng)絡(luò)資源,給廣大師生提供一個(gè)良好的網(wǎng)上工作、學(xué)習(xí)、娛樂環(huán)境,在不調(diào)整原有網(wǎng)絡(luò)結(jié)構(gòu)的前提下,蘭州大學(xué)提出用多出口和共享緩存的代理方式來提升網(wǎng)頁瀏覽速度。

雖然校園網(wǎng)中普遍采用接入多ISP(Internet Service Provider)的組網(wǎng)方式,但是由于校園網(wǎng)用戶對(duì)網(wǎng)絡(luò)資源需求的快速增長(典型的,如P2P流量劇增),仍然無法避免出口擁塞的狀況。在上網(wǎng)高峰期,甚至出現(xiàn)連正常的網(wǎng)頁瀏覽都無法保障的尷尬情形。如何突破校園網(wǎng)出口,以及各個(gè)ISP之間互聯(lián)的瓶頸,縮短網(wǎng)絡(luò)延遲,以便給廣大師生提供一個(gè)良好的網(wǎng)上工作、學(xué)習(xí)、娛樂環(huán)境,成為當(dāng)務(wù)之急。

目前人們多采用NAT(Network Address Translation)或策略路由的方式,還有些采用直接鏡像某些熱門網(wǎng)站的方式來加速網(wǎng)頁響應(yīng)速度。如何把二者有機(jī)地結(jié)合起來,以充分發(fā)揮多ISP接入的資源優(yōu)勢,成為另外一個(gè)亟待解決的問題。

圖1 代理服務(wù)器的網(wǎng)絡(luò)架構(gòu)

單出口堆砌

起初,出于成本考慮,我們?cè)谝慌_(tái)多網(wǎng)卡的實(shí)體機(jī)上部署了三臺(tái)相對(duì)獨(dú)立的虛擬機(jī)來做代理。在軟件選擇上,我們使用的都是開源免費(fèi)軟件,其中Squid是由NLANR開發(fā)的Web Cache Server。由于Squid是開源和免費(fèi)軟件,再加上其在性能方面的優(yōu)秀表現(xiàn),成為我們做網(wǎng)絡(luò)加速的首選。三臺(tái)虛擬機(jī)的具體信息如表1所示。

虛擬機(jī)和外界的通信通過和實(shí)體機(jī)做橋接(802.1d Ethernet Bridge)實(shí)現(xiàn)。具體實(shí)現(xiàn)如圖1所示(箭頭所指方向?yàn)橛脩粽?qǐng)求的流向)。

以電信出口為例,主要的網(wǎng)絡(luò)配置如下:

第一步:配置虛擬機(jī)網(wǎng)卡地址(本例eth0和eth1代表虛擬機(jī)的兩塊網(wǎng)卡,分別對(duì)應(yīng)圖1中tap2和tap4)

ifconfig eth0202.201.0.151broadcast 202.201.0.255netmask 255.255.255.128 up

ifconfig eth161.178.18.80broadcast 61.178.18.255netmask 61.178.18.0up

第二步:設(shè)置默認(rèn)網(wǎng)關(guān)

ip route add default via 61.178.18.1dev eth1

第三步:添加校內(nèi)路由

表1 代理服務(wù)器相關(guān)信息

ip route add 202.201.0.0/20via 202.201.0.129 dev eth0

ip route add 210.26.48.0/20via 202.201.0.129 dev eth0

……

這種方式原理簡單,配置也很容易,但在實(shí)際運(yùn)行當(dāng)中發(fā)現(xiàn)這種方式效果并不理想:

1. 三個(gè)代理都是虛擬機(jī),在性能上自然比實(shí)體機(jī)要差,尤其是磁盤I/O性能低下成了性能提升的瓶頸。

2. 三個(gè)代理之間相對(duì)獨(dú)立,相互之間緩存共享困難。比如,電信代理緩存了某個(gè)網(wǎng)頁,當(dāng)另外一個(gè)用戶從教育網(wǎng)代理訪問同一個(gè)網(wǎng)頁的時(shí)候,教育網(wǎng)代理并不知道電信代理已經(jīng)緩存了該網(wǎng)頁,因而是向原始網(wǎng)站發(fā)起請(qǐng)求。這種現(xiàn)象因?yàn)橛脩粼L問所有網(wǎng)站都有用同一個(gè)代理的偏好而顯得非常普遍。這不僅造成了本地緩存資源的浪費(fèi),還不能起到代理應(yīng)有的減少網(wǎng)頁響應(yīng)時(shí)間,降低了出口帶寬的作用。即使通過ICP(Internet Cache Protocol)協(xié)議,讓代理之間能夠相互通信,但I(xiàn)CP自身是個(gè)簡單協(xié)議,難以完成緩存共享的任務(wù)。

如果說我們可以用實(shí)體機(jī)來代替虛擬機(jī),使第一種情況不成為問題的話,那么第二種情況才是造成上述方案效率不高的主要原因。

多出口高速Web緩存的實(shí)現(xiàn)

共享緩存和多出口的實(shí)現(xiàn)

如何讓三個(gè)代理共享緩存,進(jìn)而提高網(wǎng)頁請(qǐng)求的緩存命中率,成為了首先要解決的問題。最好的辦法就是把三個(gè)代理整合在一臺(tái)實(shí)體機(jī)上,由同一個(gè)Squid進(jìn)程調(diào)度資源。但新的問題馬上出現(xiàn)了,路由怎么實(shí)現(xiàn)?首先想到的辦法是利用Linux強(qiáng)大的路由功能,維護(hù)一張到各個(gè)ISP的路由表。這種方法很簡單,但也存在明顯的弊端:

1. 靜態(tài)路由配置的數(shù)目很多,而且各個(gè)ISP的地址列表還在不停的變化當(dāng)中,維護(hù)起來非常不便;

2. 當(dāng)任何一路出口出現(xiàn)故障的時(shí)候,為了保證該路對(duì)應(yīng)的網(wǎng)址能正常訪問,必須修改原有的路由表,使用戶請(qǐng)求從別的出口發(fā)送出去。

這些都會(huì)給代理的穩(wěn)定性帶來負(fù)面影響。

再者也可以通過iptables的相關(guān)技術(shù)實(shí)現(xiàn)Squid透明代理(Transparent Proxy),然而Squid在透明模式下不支持認(rèn)證。因?yàn)橛姓J(rèn)證的需求,所以透明代理也行不通。

既要實(shí)現(xiàn)共享緩存,又要保證代理的穩(wěn)定、高效運(yùn)行,還要支持認(rèn)證。為了滿足以上要求,我們決定拓展Squid的相關(guān)模塊。結(jié)果發(fā)現(xiàn)Squid本身就具備這樣的功能:基于請(qǐng)求的源地址或者用戶名,Squid允許將該請(qǐng)求映射到不同的出口地址。這項(xiàng)功能在Squid的配置文件中對(duì)應(yīng)的標(biāo)簽為“tcp_outgoing_address”。有了它,再結(jié)合Linux高級(jí)路由策略就可以輕松實(shí)現(xiàn)多出口高速Web緩存代理。具體實(shí)現(xiàn)見圖2。

對(duì)圖2的說明:

1. 整合后的代理外部環(huán)境和整合前保持一致。

2. eth0既是代理接收請(qǐng)求的入口,又是多出口中教育網(wǎng)的出口。

3. eth0配置了202.201.0.149~202.201.0.151三個(gè)地址,在經(jīng)過Squid轉(zhuǎn)換后分別對(duì)應(yīng)教育、電信、聯(lián)通的出口地址。

4. 關(guān)鍵路由配置:

(1)首先編輯/etc/iproute2/rt_tables,追加兩列:

100unicom

101telecom

(2)設(shè)置路由策略:

ip route add default via 202.201.0.129 dev eth0table main

ip route add default via 221.7.37.129 dev eth1table unicom

圖2 整合后的代理服務(wù)器網(wǎng)絡(luò)架構(gòu)

ip rule add from 221.7.37.140table unicom

ip route add default via 61.178.18.1dev eth2table telecom

ip rule add from 61.178.18.80table telecom

(3)Squid的相關(guān)配置:

目前我校使用的Squid軟件版本為3.1.8,這個(gè)版本是支持IPv6代理的。為了滿足純IPv6用戶訪問IPv6和IPv4用戶訪問IPv6的需求,在Squid配置文件中添加以下幾條命令就可實(shí)現(xiàn)上述功能:

http_port[2001:da8:c000::150]:8080

acl from_ipv6src 2001:da8:ff3a::/48

tcp_outgoing_address 2001:da8:c000::150to_ipv6

tcp_outgoing_address 202.201.0.150from_ipv6!to_ipv6

圖3 單位時(shí)間HTTP請(qǐng)求數(shù)及命中數(shù)(30分鐘平均)

圖4 代理相關(guān)服務(wù)耗時(shí)統(tǒng)計(jì)(30分鐘平均)

注:“2001:da8:c000::150”是eth0的IPv6地址

代理的進(jìn)一步優(yōu)化Squid優(yōu)化的方式方法有很多,我們根據(jù)自身的情況主要做了以下幾點(diǎn)優(yōu)化。

優(yōu)化一:

將Squid可用的文件描述符(filedescriptor)調(diào)整為65536。Gentoo下面Squid的最大文件描述符為8192,但在運(yùn)行一段時(shí)間后發(fā)現(xiàn)Squid仍然頻繁報(bào)“WARNING!Your cache is running out of filedescriptors”錯(cuò)誤,如果置之不理,Squid很有可能假死(進(jìn)程還在,但不接收請(qǐng)求)。在將文件描述付調(diào)整為65536后,這個(gè)問題就沒再出現(xiàn)過。

優(yōu)化二:

讓對(duì)校內(nèi)和教育網(wǎng)的請(qǐng)求都走教育線路。由于教育網(wǎng)的域名大多以edu.cn結(jié)尾,所以可以基于域名做策略:

acl edu dstdomain "/etc/squid/edu.lst" # edu.lst對(duì)應(yīng)以edu.cn結(jié)尾的域名

acl lzu dst "/etc/squid/localnet.lst" # localnet.lst對(duì)應(yīng)校內(nèi)地址列表

tcp_outgoing_address 202.201.0.150edu

tcp_outgoing_address 202.201.0.150lzu

優(yōu)化三:

禁止緩存校內(nèi)資源。因?yàn)樾?nèi)資源不存在延遲問題,而且可以節(jié)省Squid緩存資源,雖說這會(huì)降低HTTP請(qǐng)求的緩存命中率(hit-rates)。對(duì)應(yīng)到Squid的配置文件:

acl lzu dst "/etc/squid/localnet.lst"

cache deny lzu

優(yōu)化四:

加快網(wǎng)頁響應(yīng)速度,降低網(wǎng)絡(luò)延遲有兩種方法:1.選擇正確的線路訪問相應(yīng)的網(wǎng)站;2. 提高h(yuǎn)it-rates。正確線路在第二點(diǎn)中已經(jīng)提到,關(guān)鍵還是需要用戶自己把握。提高h(yuǎn)it-rates則是通過修改緩存置換算法來實(shí)現(xiàn),對(duì)應(yīng)到Squid的配置文件:

memory_replacement_policy heap GDSF cache_replacement_policy heap GDSF

優(yōu)化后的效果

因?yàn)镾quid支持SNMP,所以我們使用Cacti將Squid的狀態(tài)進(jìn)行了監(jiān)控。圖3、圖4是撰文時(shí)最近代理相關(guān)信息的監(jiān)控圖,從圖4中可以看到命中率(Req Hit Ratios)在40%左右,峰值甚至達(dá)到了78.66%,效果還是很明顯的。

從用戶的反映來看,代理的穩(wěn)定性比以前高了,上網(wǎng)速度也快了很多。總之,多出口共享緩存Web代理達(dá)到了預(yù)期的效果。

猜你喜歡
教育網(wǎng)配置文件路由
從Windows 10中刪除所有網(wǎng)絡(luò)配置文件
用軟件處理Windows沙盒配置文件
鐵路數(shù)據(jù)網(wǎng)路由匯聚引發(fā)的路由迭代問題研究
互不干涉混用Chromium Edge
多點(diǎn)雙向路由重發(fā)布潛在問題研究
一種基于虛擬分扇的簇間多跳路由算法
基于IPv6的行業(yè)云安全服務(wù)互助平臺(tái)
路由重分發(fā)時(shí)需要考慮的問題
基于Zookeeper的配置管理中心設(shè)計(jì)與實(shí)現(xiàn)
紅色平臺(tái)
呈贡县| 开原市| 乌拉特前旗| 天长市| 通河县| 昔阳县| 乐业县| 涟源市| 阳高县| 白沙| 齐河县| 固阳县| 紫金县| 日土县| 诸暨市| 芒康县| 调兵山市| 资溪县| 延庆县| 厦门市| 会昌县| 田东县| 盐池县| 顺平县| 崇礼县| 灵台县| 小金县| 历史| 琼结县| 长沙市| 瑞昌市| 中宁县| 新津县| 措勤县| 呼玛县| 石林| 顺昌县| 汝南县| 淮阳县| 双桥区| 镇雄县|