登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

巴东向明的blog

量变才能造成质变

 
 
 

日志

 
 

WCCP介绍  

2010-01-08 20:26:35|  分类: squid+wccp |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

WCCP 简介

一、概述

虽然因特网网络传输的数据量巨大,但是其中大部分传输来自用户在任一既定地点上对相同内容的需求,这意味着广域网大部分基础设施传输着完全相同的内容和完全相同的需求,Web 上的大量通信流都是冗余的,网络缓冲技术就是将这些被频繁访问的信息,总是放在靠近访问者一方的技术,使网络内容局域存储从而更迅速地为用户服务,并减少广域网连接和网络服务器的传输数量。

WCCP Web Cache Communication Protocol 是一种高速缓存技术协议,是路由器与缓存引擎Cache Engine 之间的通信协议,其中缓存引擎是作为Web 缓存的专用设备,用来管理存储Web 页面。路由器通过与缓存引擎的协同工作处理Web 数据流,达到提高数据传输效率、缩短Web 访问时间的目的,这些Web 数据流包括来自网络内部或外部的用户浏览Web 服务器上页面和图形的请求,以及WWW 服务器对这些请求的答复。当用户向Internet 上的WWW 服务器发出浏览某页面的请求时,路由器首先把请求发给缓存引擎,如果缓存引擎已经保存了这个页面的拷贝,则由缓存引擎直接将这个页面发给用户,否则缓存引擎就到Web 服务器上取得这个页面和这个页面上的所有对象,自己保存一份备份后再转发给用户,此后当用户对相同的网页提出访问请求时,就由网络缓存引擎来满足其要求,将已存储该网页的拷贝发送给用户。

二、WCCP 技术特点及应用

WCCP 协议定义了路由和缓存引擎之间透明重定向的机制,在网络缓存引擎中实现负载分配的方法、转发方式的协商等等各个方面,这里只介绍WCCP 主要的技术特点和应用。

特点:

1、支持动态服务与标准服务

WCCP 支持将多种TCP 端口的数据流重定向到缓存引擎。WCCP 除了支持把TCP端口为80 的HTTP 数据流重定向到缓存引擎的标准服务外,还支持将把TCP 端口为非80 的HTTP 数据流重定向到缓存引擎的动态服务。

2、支持多路由器

WCCP 允许系列缓存引擎连接到若干路由器上,提供冗余和分布式的结构。WCCP是这样实现路由器和缓存引擎之间的通信的:将若干路由器和系列缓存引擎组成一个服务组Service Group ,并且这些路由器和引擎都彼此知道对方的存在。一旦建立了服务组,就专门指定一个缓存引擎来决定各个缓存引擎间的负载分配。在一个服务组中,一般能够为所有路由器所见,并具有最小IP 地址的那个缓存引擎成为首领缓存引擎,它的任务是为缓存引擎群分配数据流,其分配信息被传送给整个服务组,这样每个路由器就可以正确地重定向数据分组,而缓存引擎群可以更好地管理它们的负载。

3、实现透明地重定向

WCCP 路由器透明地实现用户浏览器对Web 服务器的HTTP 请求的重定向,最终用户并不知道所浏览的页面并不是直接来自Web 服务器而是缓存引擎。除此之外,缓存引擎的操作对网络也是透明的,对非重定向传输来说路由器完全扮演了他的通常角色即正常的转发。

4、支持两种重定向方法

WCCP 支持两种重定向方法:GRE 封装重定向和L2 重写重定向。GRE 封装重定向方法,是在IP 报文的头部封装一个GRE头,在IP 报文尾部封装一个四字节的Redirect头,形成一个新的IP 报文的方法。L2 重写重定向方法,则不封装IP 报文,而是由WCCP 路由器直接用目标缓存引擎的MAC 地址替换IP 报文的目的MAC 地址即可。GRE 封装重定向方法允许目标缓存引擎与路由器之间跨网络连接,而L2 重写重定向方法要求目标缓存引擎与路由器在链路层Layer2 直接相连。

5、负载均衡

WCCP 在缓存引擎群之间的负载均衡方式有两种:散列方式和掩码/变量值集合方式。负载均衡的目的是为了将数据流负载均匀地分配给缓存引擎群集。通过负载均衡的方法,WCCP 可将通信流重定向到缓存引擎,因此,当服务组中增加或减少了缓存引擎时,WCCP 可重新在缓存引擎群之间分配负载。这样WCCP 支持可伸缩的缓存引擎群集,使可用资源更有效地利,用同时为用户提供高质量的服务。

6、报文退还

当缓存引擎把不能处理的报文退还给路由器时,该路由器将不再把该报文重定向,而进行正常的转发。例如,缓存引擎已经过载没有空间缓存报文时,它将拒绝任何重定向报文并把它们退还安全验证。

应用:

WCCP 技术可以有效地降低Internet 网络流量,节省昂贵的广域网链路费用。由于实现WCCP 协议的路由器透明地实现了用户浏览器对Web 服务器的HTTP 请求的重定向,所以用户不用将浏览器配置成代理服务器模式。这对ISP 和大的企业来说将是非常适宜的,因为他们要统一实现用户配置非常困难并且昂贵,不易于管理和维护,利用WCCP 的特点,现在就不用将用户浏览器配置成统一的代理服务器模式了,这无疑是非常令人感兴趣的。

另外,由于缓存引擎对用户和网络操作都是透明的,ISP 可以根据需要用分层的形式将缓存引擎放在实际网络中的数个不同层次的网络地点。譬如在核心层放置一个缓存引擎群集,在低层的POP 服务器边放置一些缓存引擎,形成一个有层次性的体系结构,就可以实现高质量服务,同时实现有效利用网络资源的目的。

 

從90年的初期開始至今日,人類的資訊傳播以及生活型態已經與網路緊密的結合難以分割,而這主要的原因則歸功於WWW (World-Wide Web)的成功及蓬勃發展,而WWW已從早期簡單的client – server的模式演進變成了今日複雜而且分散式的架構,龐大的文字、圖片、聲音以及影像在網路上傳送,而且每日以飛快的速度成長中,但是該如何讓這些資料快速地被人們取得,以滿足人們的需求呢?

為滿足需求,頻寬的升級當然是一種方式,但是當頻寬升級之後更多的人進入到網路裡時提供資料或訊息伺服器只得更拼命的工作以滿足更多的需求,為了減少伺服器的負擔,減少頻寬的消耗,提高人們的滿意程度,在網路的建置上有兩種主要的方式來達成,一種是複製(replication),一種是快取 (caching)。在這兩種的技術裡包含了多種的協定(Protocol),以期建立一個標準、有效,又穩定的服務,這些協定所包含的諸如有HTTP、 WPAD( Web Proxy Auto-Discovery Protocol)、 SOCKS、PAC(Proxy Auto Configuration)、Cache Digest、 DNS,ICP(Internet Cache Protocol)、CARP (Cache Array Routing Protocol)、 WCCP(Web Cache Communication Protocol) 等,筆者今日就WCCP的原理及運用和各位做個探討。

認識WCCP

WCCP全名為Web Cache Communication Protocol,於1997年時正式發表,WCCP 至今已有WCCP V1、WCCP V2兩種版本,WCCP這種協定主要的功能是提供路由器(Router)與快取伺服器(Cache Server)之間的溝通,這種溝通的結果是希望能達成一種機制,將user所要求的需求經過路由器時,路由器將此需求及時的重導(Redirect)到快取伺服器上,如果快取伺服器儲存了符合user所要求的資料,則快取伺服器便直接將該份符合的資料回應給user,如圖一。

WCCP這種的運作機制對於user來說是完全毫不知覺的,user並不需要在瀏覽器上做任何的設定即可享受快取伺服器的服務,這種方式稱為透通式的快取(Transparent Cache)。相對於一樣提供快取服務的proxy server 來說,user是必須於自己的流覽器上設定該proxy server的名稱或IP位址才能享受到該proxy server的服務,而如果該部proxy server的運作發生了問題時,user 的瀏覽器也必須再重新做設定,否則user的瀏覽器是沒辦法做正常的存取。但如果是WCCP溝通失敗或快取伺服器發生了問題時,user的需求卻是完全不受影響地被路由器傳送到目的地,user需要的服務也不會遭受任何的中斷。

WCCP現在有Version1,Version2兩種版本, Version 1中主要是定義一台路由器與單台或多台的快取伺服器之間針對HTTP的資料流做透通式Redirect,同時告知路由器若有多部快取伺服器存在時如何將資料平均地分散到每部快取伺服器上,也就是說WCCP V1裡所要服務的資料型態僅僅是HTTP的資料型態。

WCCPV2的主要是定義單台或多台的路由器與單台或多台的快取伺服器之間的互動,這種互動主要有幾大主要功能:

第一、讓快取伺服器服務的資料型式不再僅僅是HTTP而是可以根據實際的需求去定義不同的服務群組(Service Group),這些服務群組裡包含不同的資料型態如RTSP、MMS 、HTTP等等。

第二、資源的最佳化在WCCPV2裡頭允許多部的路由器以及多部快取伺服器同時做透通式的Redirect,而在這樣的情況之下如何將資料有效且平均的放置在多部的快取伺服器上而且儘量降低對user的回應時間(Response Time)。

第三、群播(Multicast)的支援,WCCP V2支援群播協定訊息(Multicast Protocol)在路由器與快取伺服器之間傳送。

第四、安全性強化(Security Improvement),路由器與快取伺服器之間可以透過認證(Authentication)的方式來確保彼此的正當性,這種認證是採用MD5的安全密碼機制。

第五、多樣的傳送方式( Multiple Forwarding Methods),每部快取伺服器可以各別與路由器溝通出不同的傳送方式,如GRE(Generic Routing Encapsulation) encapsulation或是以Layer2的方式使用目的地位址(Destination Address)做為rewrite。

在經過了簡略的介紹之後,接下來向各位說明WCCP實際的運作原理。

WCCP 的運作原理

WCCP V2允許一個或多個被要求執行所謂的通透性內容重導(transparent redirection)的路由器去找尋一個或多個快取伺服器間的連結。當路由器與這些快取伺服器建立連結之後就形成了一個服務群組(service group),並且負責協調快取伺服器之間作負載分散的功能以及提供路由器和快取伺服器之間的傳送方式。而在一群快取伺服器中會有一台專屬的快取伺服器(Designed Web Cache)負責提供資訊給路由器,路由器會根據這些資料作流量分散重導的依據。 如何加入到一個服務群組。快取伺服器每10秒鐘以unicast 或 multicast的方式送出WCCP2_HERE_I_AM (參照表一) 的訊息給每一個在服務群組的路由器,WCCP2_HERE_I_AM 的訊息當中的資訊包含了該Web Cache 的IP address,以及透通式的快取想加入的服務群組。

路由器的部分,每當一收到unicast WCCP2_HERE_I_AM的訊息會立刻回應WCCP2_I_SEE_YOU(參照表二)的訊息,而當收到multicast WCCP2_HERE_I_AM,則每9秒以multicast的方式回應WCCP2_I_SEE_YOU,在WCCP2_I_SEE_YOU會列出將需要回應的快取伺服器的 IP位址,假若有個快取伺服器收到了此WCCP2_I_SEE_YOU的訊息而其中的IP 位址中沒有此快取伺服器的IP 位址,則收到此訊息的快取伺服器會將這個訊息忽略掉。

描述想要參加的服務群組。在 WCCP2_HERE_I_AM 訊息的Service Info component(參照表一)中存放Web Cache 想要加入的服務群組,而服務群組的種類是由Service Type和 Service ID來決定共分為兩種服務群組:

1.Well Known Services: 路由器和Web Cache都了解的服務型態,不需要描述Service type但必須有Service ID。

2.Dynamic Services: Web Cache則需要描述服務型態去告訴路由器這是一個動態的服務。

建立雙向的溝通。在WCCP V2中每個服務群組會使用”Receive ID ”來檢視路由器和快取伺服器間的溝通,此”Receive ID “包含在WCCP2_I_SEE_YOU的訊息中,路由器每送一次WCCP2_I_SEE_YOU的訊息Receive ID的值就會增加,快取伺服器在收到WCCP2_I_SEE_YOU會回應WCCP2_HERE_I_AM給路由器,如果回應回來的”Receive ID “和原來的值不相符的話,此訊息就會被路由器忽略掉,如果收到的值相符化,則路由器會認為此快取伺服器可用。而如果在建立雙向溝通後路由器在25秒內沒收到WCCP2_HERE_I_AM 的訊息,則路由器會以單向廣播(unicast)的方式對Web Cache發出WCCP2_REMOVAL_QUERY(參照表四)的訊息,而此時快取伺服器會連續發三個相同的WCCP2_HERE_I_AM回應訊息給路由器。如果路由器在30秒後仍未收到WCCP2_HERE_I_AM訊息,則會認為此快取伺服器已停止服務,並將其從服務群組中移除。

封包轉送編碼方式。路由器所支援的傳送方法共有兩種,一種是使用GRE編碼,另一種是使用Layer 2的改寫。如果封包的轉送是使用GRE編碼的方式,則要傳送的封包會被加一個新的IP封包表頭。而如果是使用Layer 2的改寫方式則是把原來要傳送目的地的MAC位址用已選擇好的Web Cache的MAC位址做改寫,而這種方式有一個限制就是快取伺服器和路由器必須直接相連接。而要協調使用何種方式轉送,則是使用放在WCCP2_I_SEE_YOU 的optional Capabilities Info component(參照表二) 欄位傳送給快取伺服器,如果欄位中沒有指定傳送方式,那就表示其只有支援GRE的編碼方法。快取伺服器收到後會檢視Router所指定的支援傳送方式,是不是也有支援,如果是則會挑選起來,如果不是則Web Cache會放棄加入此服務群組。Web Cache 會將其挑選的結果放在optional Capabilities Info Component(參照表一)中,在下一個WCCP2_HERE_I_AM的訊息中回應給路由器,如果Web Cache不回應表示其支援GRE。路由器收到第二個WCCP2_HERE_I_AM後也會檢視Web Cache所指定的傳送方式,如果Web Cache所指派的不是路由器所支援的,路由器會忽略此WCCP2_HERE_I_AM的訊息,如果是路由器所支援的則路由器會認為此Web Cache可用並把它加入服務群組中。

封包的配送方式。Web Cache和路由器間可以用協調的方式決定封包是要用哪種分配方式。共有兩種配送方式,一種是Hash Table、另一種是Mask/Value Sets的方式。Hash 的方式是由Designated Web Cache 先將Hash 表分送給每個路由器,而路由器再利用256-bucket Redirection Hash表將封包分配給每一個快取伺服器。而Mask/Value Sets的做法則是路由器會使用mask 和一個列表的值來分配封包給每一個快取伺服器,而Mask/Value Sets也是由Designated Web Cache 分配給每一個路由器。而Designated Web Cache的產生是由每一個服務群組中的快取伺服器選出IP 值最低的。每一種服務群組都可以有不同的封包分配方式。路由器會透過WCCP2_I_SEE_YOU 訊息裡的optional Capabilities Info component(參照表二) 的欄位告訴快取伺服器配送的方式,如果欄位沒有值的話,則預設使用Hash 的分配方式。而快取伺服器則是透過WCCP2_HERE_I_AM 訊息裡的optional Capabilities Info component 的欄位告訴路由器它所指定的分配方式,如果雙方的指定的方式都相同的話,而且都有支援的話,分配的方式就如此決定,如果指定的方式不同的話則雙方都不會理會對方optional Capabilities Info component 的欄位,就無法協調出分配的方式。

連結的安全檢查。WCCP V2有提供MD5安全驗證,預設是不使用安全驗證。在每一個WCCP傳送的封包中的Security Info Component 包含了MD5 的Checksum 以及服務群組的密碼,路由器或Web Cache 在驗證完WCCP 訊息的表頭後會立刻檢查Security Info Component的欄位,如果檢查不過則封包則會被丟棄。

WCCP 的實際運用

現在將wccp運用到一個實際的網路環境(參考圖二)

所使用的設備有:

-路由器: CISCO 7206。

-Web Cache: Network Appliance C1105。

步驟一:針對HTTP、FTP、NNTP三個服務,設定路由器的三個服務群組(設定參考圖三),並在網路對外的路由器出口Serial 3/0 作封包攔截轉送的動作。

步驟二:設定所對應的路由器IP位址192.168.3.254,指定封包轉送編碼方式(參考圖四)。

步驟三:在快取伺服器上啟動相對應的三個服務群組的服務(參考圖五、六、七),並檢查相關設定及狀態,完成設定工作。

 

圖二 WCCP 運作架構圖

version 12.1

service timestamps debug datetime localtime

service timestamps log datetime localtime

service password-encryption

!

hostname 7206

!

boot system flash c7200-js-mz.121-1.E.bin

enable password 7

!

clock timezone GMT+8 8

!

ip subnet-zero

no ip source-route

ip wccp 1 redirect-list 10 e 啟動wccp 的服務群組,及過濾哪些流量要做透通

ip wccp 2 快取

ip wccp 3

!

!

ip cef

cns event-service server

!

!

interface FastEthernet1/0

ip address 192.168.2.254 255.255.255.0

full-duplex

no cdp enable

!

interface FastEthernet1/1

ip address 192.168.3.254 255.255.255.0

full-duplex

!

interface Serial3/0

bandwidth 1544

ip address 192.168.1.254 255.255.255.252

ip wccp 1 redirect out 在介面中指定要做要做透通快取的服務群組

ip wccp 2 redirect out

ip wccp 3 redirect out

fair-queue 512 256 0

no cdp enable

!

ip route 0.0.0.0 0.0.0.0 192.168.1.253

ip http server

!

!

access-list 10 deny host 192.168.2.4

access-list 10 deny 192.168.5.0 0.0.0.255

access-list 10 permit any

!

!

line con 0

transport input none

line aux 0

line vty 0 4

password 7

login

transport input lat pad v120 mop telnet rlogin udptn nasi

line vty 5 15

login

transport input lat pad v120 mop telnet rlogin udptn nasi

!

end

 

圖三 路由器設定範例 

圖四 設定快取伺服器的IP 位址  

圖五 啟動HTTP服務群組ID 1 

圖六 啟動 FTP 服務群組 ID 2 

圖七 啟動 NNTP 服務群組 ID 3

結論

到了今天,各大品牌的網路產品及網路設備都有支援WCCP的功能,而每種品牌所支援的版本依各家發展的進度而有所不同,有些產品只有支援 Version 1 ,有些產品同時支援Version 1 和 Version 2 。 WCCP最大的好處就是建立一個透通式快取的網路環境,這樣的環境可以是個私人企業、學校、公家機關、ISP業者等等。使得這些環境下的使用者能享受到有效而且方便的快取服務,進而提升該網路環境的服務效能及服務品質。

除了WCCP之外,透通式快取的網路環境也可以利用Layer4 switch的方式去達成,有人或許會問哪一種方式比較好呢?筆者個人認為這兩種方式都各有其優點,而且需視當時的網路環境及架構來決定,至於該如何將兩者的效能都能提到最高點呢?選擇一個口碑良好,信譽卓著的SI來做整體的規劃和調整應該是最有利於使用者的。

 

  评论这张
 
阅读(1529)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018