2013年3月21日 星期四

[轉] 寬頻網絡部署IPv6探討


  雖然IETF的IPv6工作開始於1990年,但截至目前為止IPv6還是很少被用於個人業務上。雖然各國政府/機構一直在推動采用服務提供商部署IPv6,但是沒有真正的商業上的驅動力,一方面沒有新的應用需要IPv6,另一方面普遍認為IPv6的引入成本太高。上述原因導致了服務提供商很少關註在住宅寬帶網絡中引入IPv6。但是,隨著公網IPv4地址的枯竭,智能手機和M2M設備的迅速普及,越來越多的人認識到需要通過引入IPv6來維持業務增長並為客戶提供完善的服務。
  從技術角度看IPv6與IPv4是不兼容的,並且IPv6中的一些新概念會改變寬帶網絡的運作模式:
  IPv6的尋址方式:單播:LLA(鏈路本地地址),GUA(全球單播地址)和ULA(本地唯一地址),組播尋址,廣播尋址的取消
  IPv6報頭的變化:例如下一個報頭,等
  SLAAC:無狀態地址自動配置,不需要使用DHCPServer
  缺省路由器支持使用路由器通告(RA)
  DHCPPD:通過DHCP的前綴委派為家庭網絡分配前綴地址
  鄰居發現(ND),MLD(組播偵聽發現)等通過ICMP支持
  盡管這些改變都有很好的理由,但是這些概念會影響IPv6如何在住宅用戶網絡部署,網絡中各個網元對IPv6的支持程度也不盡相同。
  2終端設備硬件/操作系統
  PC:MACOS,Linux,WindowsVista/Windows 7具有良好的IPv6支持,而Windows XP可工作在雙棧模式,Windows 98不支持IPv6
  手機終端對IPv6的支持剛剛開始(Symbian,iPhone,Android等)
  VoIP系統對IPv6的支持較較差
  IPTV系統/機頂盒對IPv6的支持較差
  CPE/家庭網關
  在新的xDSL/GPON/以太網設備上開始支持IPv6
  接入節點
  DSL/GPON/以太網設備:大多數廠商開始支持IPv6。
  匯聚/邊緣/核心網絡設備
  大多數設備很早就開始支持IPv6,有些已經部署了一段時間。
  固定移動業務邊緣節點(BNG/ BRAS,媒體網關GGSN/ PGW)
  BNG/BRAS:大多數廠商支持基於IPv6的PPPoX,IPoE(DHCPv6/ DHCPv6 PD)和LNS
  GGSN/PGW:大多數廠商都支持3GPPR8和R7的IPv6架構
  應用
  最終用戶應用程序:是否能在合適的操作系統上運行,是否能夠運行IPv6API從而支持IPv6網絡連接
  網站:是否支持IPv6尋址和連接
  CDN:是否支持IPv6尋址和連接
  上述因素對引入IPv6的影響取決於運營商所選擇的網絡設計。接下來會具體分析在在固定/移動網絡中的引入IPv6的場景,因為大多數組播IPTV平臺還沒有準備好向IPv6遷移而大多數IPTV方案不需要使用公網IPv4地址,所以分析將集中在建立單播IPv6連接上。
  PPPoE網絡中引入IPv6
  在使用PPPoE的電信網絡環境中如何支持IPv6在寬帶論壇的TR–187中有明確定義。在PPPoE/L2TP網絡中引入IPv6不會對接入和匯聚網元產生任何影響。IPv6PPP會話認證方式與IPv4一樣使用PAP/CHAP或option82,並且IPv4和IPv6會話的認證可以在同一個認證階段同時進行。由於PPPoXIPv6CP只定義鏈路本地地址,全球IPv6地址通常由DHCP或SLAAC分配。在使用IPv6路由型家庭網關的情況下,在家庭網關和BNG/BRAS之間需要下列機制確保IPv6連接。
  PPPoEIPv6CP用於鏈路本地地址分配(LLA)
  DHCPv6的前綴委派(IA- PD)用於獲取局域網地址前綴
  無狀態DHCPv6用於獲取其他配置參數
  當部署numberedRG模型時,有狀態的DHCPv6(IA-NA)用於獲取家庭網關的IPv6地址。而部署unnumbered RG模型時,則不是必需的
  使用路由器通告分配默認網關
  采用路由型家庭網關PPP模型時,建立IPv6連接的典型流程如下圖所示:
圖1IPv6PPPoE接入– 路由型RG:DHCPv6 PD
圖1IPv6PPPoE接入– 路由型RG:DHCPv6 PD
  另一種用於提供IPv6PPPoE連接的方法是使用橋接型家庭網關,也稱為主機模型。為確保在這個模型下的IPv6連接,在終端設備(通常是個人電腦)和BNG/BRAS之間需要執行下列機制。
  PPPoEIPv6CP用於鏈路本地地址分配(LLA)
  SLAAC用於為主機獲得全球單播IPv6地址
  無狀態DHCP用於獲取其他的配置參數
  使用路由器通告分配默認網關
  采用橋接型家庭網關PPP模型時,建立IPv6連接的典型流程如下圖所示:
  
圖1IPv6PPPoE接入– 路由型RG:DHCPv6 PD
圖2IPv6PPPoE接入– 橋接型RG:SLAAC
  提供PPPoE業務時,使用N:1VLAN或1:1VLAN的結構對於部署IPv6還是IPv4沒有區別。在采用PPPoE的寬帶網絡中引入IPv6只對BNG和CPE/RG產生影響,對CPE/RG具體影響取決於家庭網絡使用橋接模式還是路由模式。采用RADIUS進行認證/計費/COA時,還需要RADIUS支持一些新的屬性。
  IPoE網絡中引入IPv6
  在電信網絡中支持IPv6IPoE在寬帶論壇中的TR–177中有詳細定義。引入IPv6IPoE對網絡的影響主要取決於部署的VLAN模型是1:1模型還是N:1模型,以及家庭網絡選擇橋接型還是路由型部署模式。
  當采用1:1VLAN模型時,可以從VLANID判斷家庭身份。因此引入IPv6時,只要現有的設備支持基本的IPv6轉發機制,無論是接入網絡還是匯聚網絡都不需要有任何變化。而采用N:1VLAN模型時,接入節點至少要支持LDRA(輕量級的DHCPv6中繼代理),以確保BNG/BRAS知道收到的DHCP請求是從哪個用戶發出的。同時,接入節點最好能夠支持anti-spoofing。
  使用IPv6路由型家庭網關部署DHCPv6,在家庭網關和BNG/BRAS之間需要執行下列機制以確保IPv6連接。
  DHCPv6的前綴委派(IA-PD):為家庭網關分配唯一的IPv6前綴在家庭網絡中使用。
  如果使用numberedRG模型,為家庭網關分配DHCPv6廣域網地址
  從BNG收到有效路由器通告後,設定BNG鏈路本地地址作為下一跳缺省路由
  采用路由型家庭網關IPoE模型時,建立IPv6連接的典型流程如下圖所示:
圖1IPv6PPPoE接入– 路由型RG:DHCPv6 PD
圖3IPv6IPoE接入(xDSL/FTTx接入)-路由型RG:DHCPv6 PD
  當部署橋接家庭網關模型來支持IPv6IPoE時,對網絡的影響取決於是采用DHCP還是SLAAC為終端設備分配地址。采用DHCP時,橋接型家庭網關IPoE模型與路由型家庭網關IPoE模型的主要區別是只對主機分配一個IA地址而不需要DHCPPD地址。值得關註的是要確保家庭網絡中的IPv6設備之間的通信在本地完成的,不通過BNG。
  而采用SLAAC則會帶來一系列新的問題。在N:1的VLAN部署模型中,BNG不知道路由器請求消息是從哪個用戶發來的,因此BNG不知道在路由器通告消息發送哪個前綴。為了解決這個問題,接入節點需要在路由器請求消息中增加一個線路標識選項,就像對DHCPv6所做的一樣。與此同時,BNG/BRAS需要確保對應的路由器通告消息可以被接入節點轉發到正確的用戶處。
  由於接入網絡的split-horizon的轉發行為,重復地址檢測(DAD)消息不會被送給鄰近的用戶,BNG需要支持DAD代理功能幫助確保DAD功能正常工作。因為這些問題仍在IETF討論,因此目前很少有BNG/接入設備支持這種場景。
  移動網絡中引入IPv6
  移動網絡中的IPv6連接場景在3GPPR7/R8等規範中定義得很清楚。建立IPv6連接所涉及的主要網元是UE和GGSN/PGW。
  在移動網絡中提供IPv6連接,在UE和GGSN/PGW之間需要運行下列機制:
  SLAAC(路由器請求/路由器通告)使用/64地址提供IPv6連接
  在創建的PDP響應中的PCO選項中提供DNS信息
  從GGSN/PGW收到有效路由器通告後,設定GGSN/PGW的鏈路本地地址作為下一跳缺省路由
  3GPP從R8開始定義了一種機制,在單一的PDP/BearerContext上使用PDPtype(IPv4IPv6)同時分配IPv4和IPv6地址。有了這一機制,引入IPv6時不需要額外創建PDP Context。然而,在R8之前,每種PDN類型(IPv4和IPv6)都需要一個PDP Context,這會降低GGSN的可擴展性。
  
圖1IPv6PPPoE接入– 路由型RG:DHCPv6 PD
圖4移動網絡引入IPv6
  在解決IPv4公網地址耗盡的問題和逐步引入IPv6的過程中有很多可能性,也會有很多部署的實際問題,阿爾卡特朗訊一直使用ISOCORE第三方獨立實驗室驗證在各種IPv6部署場景下的部署細節。阿爾卡特朗訊將會通過細致的技術驗證工作幫助固定和移動運營商在從IPv4向IPv6遷移的過程中做出正確的選擇,並從技術和業務上解決多種緯度的問題。

How to use simple speedtest in RaspberryPi CLI

  pi@ChunchaiRPI2:/tmp $  wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py --2023-06-26 10:4...