2014年10月7日 星期二

RSVP

利用RSVP保障IP Phone語音品質
前言打過IP Phone的人,都知道通話品質要好,QoS的功能少不了。但是談到QoS,還真是一門很大的學問,所以先用些許篇幅說明一下QoS的理論基礎,然後再進入RSVP的主題。

IP封包QoS的模式可以簡單分成Best-Effort、分類型DiffServ (Differentiated Services)跟整合型InServ (Integrated Services)三種,以使用的比例來說,仍以Best-Effort為最大,譬如今日網路人口最多的Internet,因為ISP頂多擋掉P2P的流量外,沒有實施什麼複雜的管制措施,所以幾乎不強調什麼服務品質的保證。

其次為DiffServ,簡單是其特點,在網路的出入口首先把封包分成不同型態的Class,然後個別Class給予有差異的SLA (Service Level Agreement)與標記(Marking)。簡單來說,SLA與標記可以由路徑上的路由器沿用部份或整個自行定義與操作,重點是這些路由器彼此之間並沒有特別或強制的約定存在。換句話說,end-to-end的QoS是獨立切開再串聯的。因為這種作法是各自為政,所以有著高彈性以及不受限制的好處,如同數據網路理論的Connection-less模式,封包走的路徑並不需先預定,也不見得是固定的。因為DiffServ的模式簡單不複雜,可以完全應用在私人廣域網路的範圍。值得說明的是,嚴格而言,DiffServ的QoS模式並沒有達到完全的保障,如果網路的建置上有oversubscription的情況,end-to-end QoS的SLA條件滿足與否仍是無法完全事先預估的。

最後為InServ的模式,其類似電信網路的Connection-Oriented的模式,如同發話方拿起電話撥號,待對方鈴響接起後才開始交談,然而事前必須先完成許多複雜的步驟。此模式不以封包分類為基準,而是以可以預測的需求為觸發因子;傳送前路徑上的路由器必須事先溝通過,同意建立合乎滿足條件的路徑與預留頻寬,否則不予發生作用。例如[圖1]左邊的PBX交換機,欲建立一個20Kbps的頻寬及20ms延遲SLA條件的資源保留到右邊的PBX交換機,其間有一段一段的交談與共識必須先進行。


圖1:InServ由發話端到收話端的Call Setup模式

雖然InServ看起來SLA的滿足度最佳,但是仍不比DiffServ比較能商業化,因其網路架構可大可小,同時也可以避開不同營運商個別策略與相容性的因素;相對的,InServ的實施也需要有相當的條件,通常僅用於單一大型營運商內部骨幹網路,利用MPLS Traffic Engineering對複雜的多重路徑做流量工程的優化。


一、RSVP Messages的Call Flow簡介InServ的服務模式需要透過資源預留協議(RSVP, Resource ReSerVation Protocol)的信令協定來完成,其中必須注意RSVP的信息是單方向hop by hop建立資源預留的。RSVP主要的信息有PATH、RESV (Reservation-Request)、Error and Conformation及Teardown四種。PATH跟RESV分別是RSVP從Source端與Destination端之間傳遞hop by hop建立需求跟回應的訊息,例如[圖2],再以Error and Conformation的訊息做確認與否;Teardown的訊息為移除原先PATH或RESV的狀態之用。



圖2:RSVP PATH與RESV messages的示意圖

以[圖3]為例子,假設PC1已建立某頻寬的traffic到PC2,所走的路徑經由R1  R 5  R6  R3  R4等5個Hop Router,其中已將R6跟R3之間的頻寬耗用到只剩下6Kbps。


圖3:PC1已建立頻寬預留至PC2

當PC3預申請建立24Kbps的頻寬到PC4,所走的路徑經由R 5  R6  R3  R8等4個Hop Router,但是R6與R3之間的頻寬出現瓶頸已不足預留一個新的24Kbps頻寬出來,如[圖4]。故R6回傳R5時RESV時伴隨著Bandwidth unavailable的Reservation-Request error message。PC3必須放棄這條路徑,將原先的PATH及RESV的狀態Teardown,另尋建立R 5  R2  R3  R8的中繼站。在此可以看出RSVP的特性可允許去回不同路,因為資源的保留是針對單向而計算的。


圖4:PC3欲申請建立24Kbps的頻寬至PC4


二、CAC允諾控制
對即時與延遲敏感的Voice/Video UDP流量,其表現模式與純Data的TCP/UDP大不相同,QoS以DiffServ模式的做法,通常把Voice及Video放入Strict Priority Queue或提高 DSCP(Differentiated Services Code Point)、Precedence或MPLS EXP之類標計值的方式,讓即時的Traffic能比純Data優先送出。雖然把服務的封包類型做出差異化的處理方式,但是仍有其極限,無法面面俱到。譬如說,對處理即時的封包的Queue Buffer大小也不能太大,愈大的Buffer Size會導致Delay增加,而Buffer Size縮小又會增加封包的遺失率。不管是何種類型的訊務,都要建立一套阻塞控制(Congestion Control)的退場機制,以避免量過大超過負荷,導致發生Packet Loss的現象,降低原有的品質。

管理Voice及Video的流量最合適的阻塞管理方法就是運用允諾控制(CAC; Call Administration Control)。在電路交換網路上,因為具有Connection Oriented的特性,Call的多寡會受到Physical Trunks的通道數量所限制,故不至於影響到即有的通話品質。然而對於分封交換的網路跑VoIP的服務,因為頻寬是分享共用的,如果只限VoIP流量總量而不限通話總數,一但超過流量的上限,多增加一通新的通話,就會開始影響即有通話的語音品質,如[圖5]所示。在DiffServ的QoS Domain上,值得注意此問題的嚴重後果,免不了要加頻寬來解決。

 
圖5:電路交換網路與分封交換網路CAC的比較

思科把RSVP的技術整合到統合通訊的產品線內,利用RSVP的技術來補強即有CAC允諾控制的完整性,藉由RSVP在有限資源的IP廣域網路頻寬上限制通話撥通與否,讓新建立通話的頻寬不要超過運用頻寬的上限,以阻塞管理來保證穿過廣域網路撥打的IP Phone通訊品質。


三、思科統合通訊的架構介紹說明
思科統合通訊的產品線由語音及IP通信產品及應用組成,可簡單分為四塊(如[圖6]所示):

功能產品
Infrastructure以Cisco IOS為服務核心的網路基礎建設,如Router、Switch及Voice Gateway及Gatekeeper等
Call ProcessingCisco Unified Communication Manager是處理通話的軟體組件,為思科統合通訊的核心
Applications運用統合通訊API所發展出來的多媒體互動的應用程式
Client如用戶端的桌上型IP話機,或軟體式話機等


思科把RSVP的功能發展在呼叫處理(Call Processing)與底層網路基礎設施( Infrastructure)兩者的設備,為統合通訊網路的部署佈建提供了通訊允諾控制與服務品質QoS的保證,從而提高了Any to Any通訊的可靠性。



圖6:思科統合通訊的組成架構


四、Cisco 統合通訊早期CAC的限制
IP語音電話的設計以中央集權的呼叫處理所佔的比例很高,例如較適用於台灣的用戶,對於分公司與總公司或分公司對分公司之間的話務限量,統合通訊版本5.0以前CAC的做法是以地區為基準(Location-Based)的控制,定義各點的頻寬及語音/影像所使用Codec的型式,來限制各地區之間的通話數量,如[圖7]所示。如果通話數超過上限的,便轉到PSTN上。但是這種方式過於僵化,原因是中央端的Communication Manager缺乏對各點網路架構的敏感度與了解,一但有網路發生斷線,切到備援線路時,如果備援線路受限於較低頻寬的限制,有可能就先把備援線路頻寬給塞暴,也不會轉到PSTN上,對通話品質產生影響。


圖7:早期以地區為基準(Location-Based)的CAC控制架構

因此Communication Manager需要藉重Cisco IOS路由器RSVP Agent的智慧,透過路由器與Communication Manager交換動態的訊息,才能在廣域網路端點對通話數運用CAC,做到嚴謹的QoS控管。架構如[圖8]所示。


圖8:新一代Communication Manager與RSVP Agent CAC架構


五、RSVP Agent的介紹
Cisco 2600XM, 2691, 2800, 3700及3800系列路由器的IOS 12.4(6)T功能提供了RSVP Agent的Feature,RSVP Agent向Communication Manager註冊後,然後以SCCP的通訊協定被Communication Manager管理著。Communication Manager能利用IETF RFC 2205標準的RSVP信號協定,隨網路的變化來動態調整IP廣域網路的頻寬預留,尤其合用於層次更是複雜的網路。尤其當影像電話因頻寬不足無法同時滿足通影像及語音,可以犧牲影像而保語音,避免以往馬賽克又跳針的辛苦。各種機型的RSVP Session容量數也有差異,下表是以路由器純扮演RSVP Agent的角色,CPU Time到達75%的容量數列表。

路由器機型IOS 12.4(6)T RSVP Session容量數
2611XM40
2621XM50
2651XM65
2691150
2801130
2811180
2821
240
2851300
3725250
3745320
3825400
3845536


至於為什麼需要RSVP Agent?如果不透過RSVP Agent,就必須由終端設備自行發出RSVP的Request了。因為終端設備(IP Phone, H.323 Device等)不見得都有支援RSVP這種頻寬預留的能力,因此終端設備需要透過像RSVP Agent這樣的角色來升級至支援RSVP,以達成End-to-end頻寬預留的功能。再者,一般LAN上的通訊用不上CAC,平常只有在進出廣域網路的通訊才有其CAC發揮的意義,故RSVP Agent的存在有其必要性。


六、RSVP Messages具穿透性
Communication Manager利用廣域網路端點Gateway的一對RSVP Agent Sender/Receiver當做眼線,如果廣域網路中間某段的網路如果不支援RSVP,仍不至於讓RSVP的messages封包給擋掉,也不需要建立GRE Tunnel或VPN之類的批步,因為對不懂RSVP封包的路由器,會以一般的IP封包來處理,只是RSVP-unaware的路由器頻寬夠,就不影響RSVP功能的延續。如[圖9]所示。

Communication Manager的RSVP通話允諾控制在建立之初,所提出預留的頻寬會比較大,原因是Codec的取樣頻率不一定,在Call Setup之初用Worst Case來計算,在Call Setup完成之後,就回復實際值了。例如一通G.711的Voice Call在LAN上的頻寬為80Kbps,在RSVP Initial時,是以96Kbps的頻寬來要求的,當建立完成後,所佔的頻寬會回降成80Kbps。若是384Kbps的影像,在Call Setup初期要預留410Kbps的頻寬。



圖9:RSVP Messages具廣域網路的穿透性


七、RSVP Agent的特徵與優勢
除了上述RSVP的一些立論基礎外,因篇幅有限,還有一些RSVP Agent的特徵及優勢僅做簡單的文字說明如下:
1. 可整合DiffServ QoS,修改封包的DSCP(Differentiated Services Code Point)值。
2. 支持SIP、SCCP、H.323、MGCP的呼叫信號協定(Signaling Protocol)。
3. 具有Reservation Retry的能力,可強制必須有足夠的頻寬才通話,連Try數次失效後放棄,或持續嘗試;也可以不強制,即無法先預留頻寬,然後以Best Effort Call再送出。
4. 支援影像與語音的頻寬預留,假如頻寬不夠同時支援影像時,可允許只通Voice。


總結
RSVP技術提供了Call Setup必要的授權管理,以確保Voice跟Video的通話在有限網路資源的可用性。同時不依賴終端用戶設備,以降低IP Phone Client的複雜度。

此外,RSVP提供了Communication Manager除了早期Location-Based之外的另一種通話允諾控制的選項,它的優勢在於RSVP可以知曉網路的實際頻寬使用,以及適用於多層次複雜的網路架構,即使其中有不支援RSVP的節點存在,增加了設計上的彈性。

(文章出處:麟瑞科技 http://www.ringline.com.tw/support/techpapers/network-security/158-rsvpip-phone-.html)

2014年10月6日 星期一

no ip unreachables

no ip unreachables  

路由器A和路由器B在同一个网段中。现在有PC的网关设置为A的地址 192.18.3.1. 在发送数据过程中可能会出现发往 192.168.2.X 网段的数据。这样数据包会先到A的接口再流向B。
ip redirects 可以使用ICMP 包。告知PC 以后发往192.168.2.X 的数据直接发给B。而不需要通过自己。
no ip redirects 是关闭这项功能。特别是在HSRP中。主要是为了避免让客户端使用真实的MAC地址通讯。
ICMP unreachables are normally limited to no more than one every one-half second per input interface, but this can changed by using the ip icmp rate-limit unreachables global configuration command.
如用用户使用ACL列表。那么所有不符合条件的数据包在经过路由器时会被丢弃。返回显示 目标主机不可达。因为没有合适的路由。 使用 no ip unreachables 后。只会出现 timeout 。

轉錄:http://blog.163.com/s_u/blog/static/1330836720115104843626/

cisco show interface


下表給出了show interface的輸出中所有表項的具體含義:
表項
描述
Fast Ethernet... is up ...is administratively down
表明接口的硬件當前是否是被激活的還是被管理員手工的showdown掉了。
line protocol is
標識該接口的線協議也就是軟件進程是否可用,還是被管理員手工的給shutdown了。
Hardware
硬件類型(例如MCI Ethernet, SCI, cBus Ethernet) 和硬件地址
Internet address
帶有子網信息的該接口的IP地址。
MTU
接口上的最大傳輸單元。
BW
接口的帶寬,通常單位是kb/s。
DLY
端口的延遲,單位是ms。
rely
以255為參照數的接口的可靠性參數(255/255 就是百分之百的可靠), 以5分鐘的平均數來計算。
load
以255為參照數的接口的負荷(255/255 就是百分之百的負荷量), 5分鐘的平均數來計算。
Encapsulation
接口的封裝類型。
ARP type
接口配置的地址解析協議(ARP)的類型。
loopback
標識是否設置了接口回環。
keepalive
標識接口是否設置了發送存活(keepalives)信息
Last input
自從接口接受到最近的一個數據包後的時間。 當該數據包是被precess-switch的方式轉發的時候計數器會更新,而當該包是被fast-switch的方式轉發時則不更新計數器。
output
自從接口發送最近的一個數據包後的時間。
output hang
接口因為數據包傳輸時間過長而重啟後的時間,如果沒有重啟,則顯示為never。
Last clearing
清除接口統計計數器後的時間。 注意:可能會影響到路由的變量信息時不會被清除置0的,例如load和reliablity
型號***表示清計算器後的時間太長顯示不出來了。
Output queue, input queue, drops
在接口輸入輸出隊列中的數據包的個數。 每個數字都跟了個/隊列的最大範圍。 以及超過了隊列的最大範圍而丟棄的包的數量。
5 minute input rate, 5 minute output rate
在最近5分鐘內每秒傳輸的數據包的平均值。
packets input
系統接受到的數據包的總的個數。
bytes
系統接受到的所有數據包(包括數據和MAC封裝)的字節數。
no buffer
因為在系統中沒有足夠的緩存從而丟棄的數據包的個數。 可以和ignore的計數來比較。 以太網上個廣播風暴和串行接口上​​的傳輸質量不好通常可能會導致該計數器的增加。
Received ... broadcasts
接口所接受到的廣播和多播的數據包的數量。
runts
因為小於介質的最小的包大小而丟棄的數據包的個數。 例如,對以太網來說,小於64byte的數據包被認為是一個runt。
giants
因為大於介質的最大的包大小而丟棄的數據包的個數。 例如,對以太網來說,大於1518byte的數據包被認為是一個runt。
throttles
接口disable的次數,可能是因為緩存或者處理器過載等因素。
input errors
包括runts, giants, no buffer, CRC, frame, overrun, 和ignored的所有的計數器。 其他和輸入相關的error包也可以造成input errors計數器的增長。 同時,一個數據包可能會包括多個的error。
CRC
接口接受到的循環冗餘校驗和的數量。 在局域網中,通常是因為線路質量或者硬件的傳輸問題,一個比較高的CRC數目通常是有些工作站發送大量壞的數據包造成的。
frame
接受到的含有CRC錯誤和非整數的十進制數目的數據包的數量,在局域網中,通常是因為碰撞過多或者以太網設備的故障。
overrun
因為輸入的速率超出了接受者硬件的處理能力沒有硬件緩存來處理的次數。
ignored
和系統的緩​​存不同,這個是因為接口的內部緩存而造成的接受到數據包被忽略的數目。
abort
接受時中斷的數據包的個數。
input packets with dribble condition detected
Frame超長的輸入的數據包。
packets output
系統發出的數據包的個數。
bytes
系統接發出的所有數據包(包括數據和MAC封裝)的字節數。
underruns
發送者傳輸過快導致路由器無法處理的次數。
output errors
接口認為的所有傳輸數據包的錯誤的總和,同時,一個數據包可能會包括多個的error。
collisions
因為以太網衝突導致重傳的數據包的個數。
interface resets
接口重啟的次數。 在幾秒鐘時間內進入隊列的數據包都沒有傳輸的情況下可能發生。 在串行接口上​​,可能是因為傳輸的modem故障沒有發送時鐘信號或者線纜的問題。 如果系統發現串行上因為有載波信號接口up但是協議是down的情況下,接口會努力週期性的重啟自己。 當接口回環或者被shut down是接口也可能會重啟。
babbles
傳輸的計時器到。
late collision
傳輸數據包序文報頭後發生的碰撞叫late collisions。 通常發生late collision都是因為以太網的線纜過長,超出了它所能傳輸的距離限製造成的。
deferred
因為載波的問題,芯片延後傳輸幀。
lost carrier
傳輸過程中丟失載波的次數。