CSMA/CD

CSMA/CD

CSMA/CD(Carrier Sense Multiple Access/Collision Detect)即帶衝突檢測的載波偵聽多路訪問技術。主要應用於現場匯流排Ethernet中。在傳統的共享乙太網中,所有的節點共享傳輸介質。如何保證傳輸介質有序、高效地為許多節點提供傳輸服務,就是乙太網的介質訪問控制協議要解決的問題。

基礎篇


CSMA/CD是一種爭用型的介質訪問控制協議。它起源於美國夏威夷大學開發的ALOHA網所採用的爭用型協議,並進行了改進,使之具有比ALOHA協議更高的介質利用率。主要應用於現場匯流排Ethernet中。另一個改進是,對於每一個站而言,一旦它檢測到有衝突,它就放棄它當前的傳送任務。換句話說,如果兩個站都檢測到通道是空閑的,並且同時開始傳送數據,則它們幾乎立刻就會檢測到有衝突發生。它們不應該再繼續傳送它們的幀,因為這樣只會產生垃圾而已;相反一旦檢測到衝突之後,它們應該立即停止傳送數據。快速地終止被損壞的幀可以節省時間和帶寬。
CSMA/CD控制方式的優點是:
原理比較簡單,技術上易實現,網路中各工作站處於平等地位,不需集中控制,不提供優先順序控制。但在網路負載增大時,發送時間增長,發送效率急劇下降。
CSMA/CD應用在 OSI 的第二層數據鏈路層
它的工作原理是: 發送數據前 先偵聽通道是否空閑 ,若空閑,則立即發送數據。若通道忙碌,則等待一段時間至通道中的信息傳輸結束后再發送數據;若在上一段信息發送結束后,同時有兩個或兩個以上的節點都提出發送請求,則判定為衝突。若偵聽到衝突,則立即停止發送數據,等待一段隨機時間,再重新嘗試。
其原理簡單總結為:先聽后發,邊發邊聽,衝突停發,隨機延遲后重發
CSMA/CD採用IEEE 802.3標準。
它的主要目的是:提供定址和媒體存取的控制方式,使得不同設備或網路上的節點可以在多點的網路上通信而不相互衝突。
有人將CSMA/CD的工作過程形象的比喻成很多人在一間黑屋子中舉行討論會,參加會議的人都是只能聽到其他人的聲音。每個人在說話前必須先傾聽,只有等會場安靜下來后,他才能夠發言。人們將發言前監聽以確定是否已有人在發言的動作稱為"載波偵聽";將在會場安靜的情況下每人都有平等機會講話成為“多路訪問”;如果有兩人或兩人以上同時說話,大家就無法聽清其中任何一人的發言,這種情況稱為發生“衝突”。發言人在發言過程中要及時發現是否發生衝突,這個動作稱為“衝突檢測”。如果發言人發現衝突已經發生,這時他需要停止講話,然後隨機後退延遲,再次重複上述過程,直至講話成功。如果失敗次數太多,他也許就放棄這次發言的想法。通常嘗試16次後放棄。

進階篇


控制規程

控制規程的核心問題:解決在公共通道上以廣播方式傳送數據中可能出現的問題(主要是數據碰撞問題)
控制過程包含四個處理內容:偵聽、發送、檢測、衝突處理
(1)偵聽:
通過專門的檢測機構,在站點準備發送前先偵聽一下匯流排上是否有數據正在傳送(線路是否忙)?
若“忙”則進入後述的“退避”處理程序,進而進一步反覆進行偵聽工作。
若“閑”,則一定演演算法原則(“X堅持”演演算法)決定如何發送。
(2)發送:
當確定要發送后,通過發送機構,向匯流排發送數據。
(3)檢測:
數據發送后,也可能發生數據碰撞。因此,要對數據邊發送,邊檢測,以判斷是否衝突了。
(4)衝突處理:
當確認發生衝突后,進入衝突處理程序。有兩種衝突情況:
① 偵聽中發現線路忙
② 發送過程中發現數據碰撞
① 若在偵聽中發現線路忙,則等待一個延時后再次偵聽,若仍然忙,則繼續延遲等待,一直到可以發送為止。每次延時的時間不一致,由退避演演算法確定延時值。
② 若發送過程中發現數據碰撞,先發送阻塞信息,強化衝突,再進行偵聽工作,以待下次重新發送(方法同①)CSMA/CD工作原理及性能分析(指標與影響因素)
CSMA/CD是carrier sense multiple access/collision detected 的縮寫,可譯為“載波偵聽多路訪問/衝突檢測”,或“帶有衝突檢測的載波偵聽多路訪問”。所謂載波偵聽(carrier sense),意思是網路上各個工作站在發送數據前都要偵聽匯流排上有沒有數據傳輸。若有數據傳輸(稱匯流排為忙),則不發送數據;若無數據傳輸(稱匯流排為空),立即發送準備好的數據。所謂多路訪問(multiple access)意思是網路上所有工作站收發數據共同使用同一條匯流排,且發送數據是廣播式的。所謂衝突(collision),意思是,若網上有兩個或兩個以上工作站同時發送數據,在匯流排上就會產生信號的混合,兩個工作站都同時發送數據,在匯流排上就會產生信號的混合,兩個工作站都辨別不出真正的數據是什麼。這種情況稱數據衝突又稱碰撞。為了減少衝突發生后的影響。工作站在發送數據過程中還要不停地檢測自己發送的數據,有沒有在傳輸過程中與其它工作站的數據發生衝突,這就是衝突檢測(collision detected)。
CSMA/CD媒體訪問控制方法的工作原理,可以概括如下:
先聽后說,邊聽邊說;
一旦衝突,立即停說;
等待時機,然後再說;
註:“聽”,即監聽、檢測之意;“說”,即發送數據之意。
上面幾句話意思是在發送數據前,先監聽匯流排是否空閑。若匯流排忙,則不發送。若匯流排空閑,則把準備好的數據發送到匯流排上。在發送數據的過程中,工作站邊發送邊檢測匯流排,是否自己發送的數據有衝突。若無衝突則繼續發送直到發完全部數據;若有衝突,則立即停止發送數據,但是要發送一個加強衝突的JAM信號,以便使網路上所有工作站都知道網上發生了衝突,然後,等待一個預定的隨機時間,且在匯流排為空閑時,再重新發送未發完的數據。
性能指標:通道利用率、吞吐量、介質利用率
CSMA/CD的主要影響因素:傳播時延、工作站數。
①CSMA/CD對站點個數不是很敏感,對實際的輸入負載比較敏感。
②CSMA/CD對傳播時延比較敏感。
③CSMA/CD衝突不可避免。
④CSMA/CD的介質利用率隨a的上升下降較快。
⑤CSMA/CD適合通信量不大,交互頻繁的場合
⑥對於CSMA/CD幀越長,吞吐量越大,要求幀具有最小長度,當有許多短消息時,帶寬浪費嚴重。
⑦CSMA/CD在輕負載時提供最短延遲,但對重負載敏感
主要參數:
時間片512比特時間
幀間間隔9.6微秒
嘗試極限16
退避極限10
人為干擾長32比特
最大幀長1518位元組
最小幀長64位元組
地址欄位長48比特

幾個概念

上述兩種衝突情況都會涉及一個共同演演算法——退避演演算法。
①退避演演算法:當出現線路衝突時,如果衝突的各站點都採用同樣的退避間隔時間,則很容易產生二次、三次的碰撞。因此,要求各個站點的退避間隔時間具有差異性。這要求通過退避演演算法來實現。
截斷的二進位指數退避演演算法(退避演演算法之一):
當一個站點發現線路忙時,要等待一個延時時間M,然後再進行偵聽工作。延時時間M以以下演演算法決定:
M = 0 ~ (2^k - 1) 之間的一個隨機數乘以512比特時間(例如對於10Mbps乙太網,為51.2微秒),k為衝突(碰撞)的次數,M的最大值為1023,即當k=10及以後M始終是0~1023之間的一個隨機值與51.2的乘積,當k增加到16時,就發出錯誤信息。
② 特殊阻塞信息:是一組特殊數據信息。在發送數據后發現衝突時,立即發送特殊阻塞信息(連續幾個位元組的全1,一般為32-48位),以強化衝突信號,使線路上站點可以儘早探測得到衝突的信號,從而減少造成新衝突的可能性。
③ 衝突檢測時間>=2α: α表示網路中最遠兩個站點的傳輸線路延遲時間。該式表示檢測時間必須保證最遠站點發出數據產生衝突后被對方感知的最短時間。在2α時間裡沒有感知衝突,則保證發出的數據沒有產生衝突。(只要保證檢測2α時間,沒有必要整個發送過程都進行檢測)
④ X-堅持的CSMA演演算法:當在偵聽中發現線路空閑時,不一定馬上發送數據,而採用X-堅持的CSMA演演算法決定如何進行數據發送:

演演算法特點

- 非堅持的CSMA:線路忙,等待一段時間,再偵聽;不忙時,立即發送;減少衝突,通道利用率降低:
- 1堅持的CSMA:線路忙,繼續偵聽;不忙時,立即發送;提高通道利用率,增大衝突:
- p堅持的CSMA:線路忙,繼續偵聽;不忙時,根據p概率進行發送,另外的1-p概率為繼續偵聽(p是一個指定概率值);有效平衡,但複雜:
(5)控制流程圖(右上角圖):
(6)CSMA控制規程的特徵
① 簡單
② 具有廣播功能
③ 平均帶寬: f = F / n
④ 絕對平等,無優先順序
⑤ 低負荷高效,高負荷低效
⑥ 延時時間不可預測
⑦傳輸速率與傳輸距離為一定值

應用篇


CSMA/CD 曾經用於各種匯流排結構乙太網(bus topology Ethernet)和雙絞線乙太網(twisted-pair Ethernet)的早期版本中。
CSMA/CD網路上進行傳輸時,必須按下列五個步驟來進行
(1)傳輸前監聽
(2)如果忙則等待
(3)如果空閑則傳輸並檢測衝突
(4)如果衝突發生,重傳前等待
(5)重傳或夭折

產生背景


CSMA協議要求站點在發送數據之前先監聽通道。如果通道空閑,站點就可以發送數據;如果通道忙,則站點不能發送數據。但是,如果兩個站點都檢測到通道是空閑的,並且同時開始傳送數據,那麼這幾乎會立即導致衝突。另外,站點在監聽通道時,聽到通道是空閑的,但這並不意味著通道真的空閑,因為其他站點的數據此時可能正在通道上傳送,但由於傳播時延,信號還沒有到達正在監聽的站點,從而引起對通道狀態的錯誤判斷。在早期的CSMA傳輸方式中,由於通道傳播時延的存在,即使通信雙方的站點,都沒有偵聽到載波信號,在發送數據時仍可能會發生衝突。因為它們可能會在檢測到介質空閑時,同時發送數據,致使衝突發生。儘管CSMA可以發現衝突,但它並沒有先知的衝突檢測和阻止功能,致使衝突發生頻繁。
可以對CSMA協議作進一步的改進,使發送站點在傳輸過程中仍繼續偵聽介質,以檢測是否存在衝突。如果兩個站點都在某一時間檢測到通道是空閑的,並且同時開始傳送數據,則它們幾乎立刻就會檢測到有衝突發生。如果發生衝突,通道上可以檢測到超過發送站點本身發送的載波信號幅度的電磁波,由此判斷出衝突的存在。一旦檢測到衝突,發送站點就立即停止發送,並向匯流排上發一串阻塞信號,用以通知匯流排上通信的對方站點,快速地終止被破壞的幀,可以節省時間和帶寬要求站點在發送數據過程中進行衝突檢測,而一旦檢測到衝突立即停止發送數據。這樣的協議被稱為帶衝突檢測的載波監聽多路訪問協議,即 CSMA/CD(Carrier Sense Multiple Access with Collision Detection)協議。

概念


CSMA/CD(Carrier Sense Multiple Access with Collision Detection,載波偵聽多路訪問/衝突檢測協議),早期主要是乙太網路中數據傳輸方式,廣泛應用於乙太網中。
載波偵聽(Carrier Sense),意思是網路上各個工作站在發送數據前,都要確認匯流排上有沒有數據傳輸。若有數據傳輸(稱匯流排為忙),則不發送數據;若無數據傳輸(稱匯流排為空),立即發送準備好的數據。
多路訪問(Multiple Access),意思是網路上所有工作站收發數據,共同使用同一條匯流排,且發送數據是廣播式。
“衝突檢測”是指發送結點在發出信息幀的同時,還必須監聽媒體,判斷是否發生衝突(同一時刻,有無其他結點也在發送信息幀)。
CSMA/CD的標準為IEEE802.3或者ISO8802/3。 。

工作原理


實際上CSMA/CD的工作流程與人際間通話非常相似,可以用以下7步來說明。
第一步:載波監聽,想發送信息包的節點要確保沒有其他節點在使用共享介質,所以該節點首先要監聽通道上的動靜(即先聽后說)。
第二步:如果通道在一定時段內寂靜無聲(稱為幀間縫隙IFG),則該節點就開始傳輸(無聲則講)。
第三步:如果通道一直很忙碌,就一直監視通道,直到出現最小的IFG時段時,該節點才開始發送它的數據(有空就說)。
第四步:衝突檢測,如果兩個節點或更多的節點都在監聽和等待發送,然後在通道空時同時決定立即(幾乎同時)開始發送數據,此時就發生碰撞。這一事件會導致衝突,並使雙方信息包都受到損壞。乙太網在傳輸過程中不斷地監聽通道,以檢測碰撞衝突(邊聽邊說)。
第五步:如果一個節點在傳輸期間檢測出碰撞衝突,則立即停止該次傳輸,並向通道發出一個“擁擠”信號,以確保其他所有節點也發現該衝突,從而摒棄可能一直在接收的受損的信息包(衝突停止,即一次只能一人講)。
第六步:多路存取,在等待一段時間(稱為後退)后,想發送的節點試圖進行新的發送。
這時採用一種叫二進位指數退避策略(Binary Exponential Back off Policy)的演演算法來決定不同的節點在試圖再次發送數據前要等待一段時間(隨機延遲)。
第七步:返回到第一步。
實際上,衝突是乙太網電纜傳輸距離限制的一個因素。例如,如果兩個連接到同一匯流排的節點間距離超過2500米,數據傳播將發生延遲,這種延遲將阻止CSMA/CD的衝突檢測常式正確進行。

特點


(1)CSMA/CD介質訪問控制方法演演算法簡單,易於實現。有多種VLSI可以實現CSMA/CD方法,這對降低Ethernet成本、擴大應用範圍是非常有利的。
(2)CSMA/CD是一種用戶訪問匯流排時間不確定的隨機競爭匯流排的方法,適用於辦公自動化等對數據傳輸實時性要求不嚴格的應用環境。
(3)CSMA/CD在網路通信負荷較低時表現出較好的吞吐率與延遲特性。但是,當網路通信負荷增大時,由於衝突增多,網路吞吐率下降、傳輸延遲增加,因此,CSMA/CD方法一般用於通信負荷較輕的應用環境中。