一劍開天門系列-OSPF協商過程

<p><span style="font-size:14px"> 上篇講到OSPF協議基礎,簡單總結為 “<strong><span>三表五包七狀態</span></strong><span>”;</span>今天我們來談談OSPF協商過程;</span><span style="font-size:14px">OSPF協商過程還是圍繞OSPF五種數據包和七種狀態來細化展開。</span></p><p>
</p><blockquote><p>狀態與包分解
</p></blockquote><p>
</p><p><span style="font-size:14px"> 在 中,提到OSPF協議五個包,分別是<strong>Hello、<strong><span>DBD</span></strong>、<strong><span>LSR、<strong><span>LSU</span></strong>、<strong><span>LSAck</span></strong></span></strong></strong><span>;下面將分析協商過程中七狀態如何結合五個包進行整個OSPF建立的協商交互過程。</span></span></p><p><span style="font-size:14px">
</span></p><p><span style="font-size:14px"/></p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/2084007-7a2e89ad87f81a7d.jpeg" img-data="{"format":"jpeg","size":47422,"height":651,"width":779}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div>
<p/><p><span style="font-size:14px">
</span></p><p><span style="font-size:14px">如上圖所示,OSPF啟動開始使用Hello報文確定相互連接的鄰居是否可以通信,如下圖:
</span></p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/2084007-92c24e92df0b1438.jpeg" img-data="{"format":"jpeg","size":37991,"height":705,"width":1080}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p><span style="font-size:14px">PS:OSPF的選路,是通過SPF算法計算出來的,而計算就有個計算方法,具體的計算方法后面張開說明,這里需要說明的是根據鏈路的開銷值(Cost)和協議的優先級來選擇路由路徑的。</span></p><p><span style="font-size:14px">
</span></p><p><strong><span style="font-size:14px">關于帶寬參考值說明:</span></strong></p><p><span style="font-size:14px">路由選擇最優路徑是根據開銷值在選擇,默認是根據接口鏈路帶寬來計算的(可手動設置cost值),如OSPF有個默認帶寬參考值100Mbps,而如果實際鏈路是1G,那么Cost值就是1,<span>計算公式為:接口cost=帶寬參考值/接口帶寬,取計算結果的整數部分作為接口cost值,cost越小越優先。在這里可以修改鏈路帶寬參考值,現在企業內部網絡帶寬最少也是千兆鏈路,可修改帶寬為10000Mbps為帶寬參考值,如果是千兆鏈路cost值就是10,萬兆鏈路就是1。</span>
</span></p><p><span style="font-size:14px">
</span></p><p><span><strong><span style="font-size:14px">OSPF支持的網絡類型</span></strong></span></p><ol><li><p><span><strong><span style="font-size:14px">P2P--點到點網絡</span></strong></span></p></li><li><p><span><strong><span style="font-size:14px">P2MP--點到多點網絡</span></strong></span></p></li><li><p><span><strong><span style="font-size:14px">MA--廣播多路訪問網絡</span></strong></span></p></li><li><p><span><strong><span style="font-size:14px">NBMA--非廣播多路訪問網絡</span></strong></span></p></li></ol><p>
</p><p><span><strong><span style="font-size:14px">詳細請了解該文章:</span></strong></span></p><p><span><strong><span style="font-size:14px">OSPF支持的網絡類型
</span></strong></span></p><p><span><strong><span style="font-size:14px">
</span></strong></span></p><p><span style="font-size:14px">
</span></p><p><span style="font-size:14px"/></p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/2084007-bbdda91729249329.jpeg" img-data="{"format":"jpeg","size":46277,"height":574,"width":1080}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p/><p><span style="font-size:14px">
</span></p><p><span style="font-size:14px">上圖所示,OSPF 協議啟動后,先尋找網絡中的鄰居( Neighbor ),也就是通過 Hello 報文確認可以雙向通信,Hello報文交換,確定鄰居關系。</span></p><p><span><strong><span style="font-size:14px">Down 失效狀態</span></strong></span><strong><span style="font-size:14px">:</span></strong><span style="font-size:14px">這是鄰居的初始狀態,表示路由器還沒有從鄰居收到任何信息。</span></p><ol><li><p><span style="font-size:14px">停滯于此狀態表明路由器沒有從鄰居處接收到Hello報文。</span></p></li></ol><p>
</p><p><span><strong><span style="font-size:14px">Attempt 嘗試狀態</span></strong></span><strong><span style="font-size:14px">:</span></strong><span style="font-size:14px">此狀態只在<strong>NBMA</strong>網絡上存在,表示路由器沒有收到鄰居的任何信息,但是已經周期性地向鄰居發送了Hello報文;如果在Router Dead Interval的時間間隔內未收到鄰居的Hello報文,則轉為Down狀態。</span></p><ol><li><p><span style="font-size:14px">停滯于此狀態表明路由器向已配置的鄰居發送了單播Hello報文,但沒有收到該鄰居的Hello報文。</span></p></li></ol><p>
</p><p><span><strong><span style="font-size:14px">Init 初始狀態</span></strong></span><strong><span style="font-size:14px">:</span></strong><span style="font-size:14px">表示路由器已經從鄰居收到了Hello報文,但是自己不在所收到的Hello報文的鄰居列表中。這說明自己尚未與鄰居建立起雙向通信關系。</span></p><ol><li><p><span style="font-size:14px">停滯于此狀態表明路由器收到了鄰居的Hello報文,但Hello報文中沒有包含接收路由器的OSPF RID(Router ID)。</span></p></li></ol><p><span style="font-size:14px">
前面三個階段都是Hello報文的交互作用:下面簡單說下Hello報文結構和作用</span>
</p><p><span style="font-size:14px">
</span></p><p><span style="font-size:14px"/></p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/2084007-0c50306769e276f6.jpeg" img-data="{"format":"jpeg","size":24515,"height":318,"width":487}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p/><p><span style="font-size:14px">
</span></p>字段長度含義Network Mask32比特發送Hello報文的接口所在網絡的掩碼。HelloInterval16比特發送Hello報文的時間間隔。Options8比特可選項:<ol><li><p>E:允許Flood</p><p><span>AS-External-LSAs</span></p></li><li><p>MC:轉發IP組播報文</p></li><li><p>N/P:處理Type-7 LSAs</p></li><li><p>DC:處理按需鏈路</p></li></ol>Rtr Pri8比特DR優先級。默認為1。如果設置為0,則路由器不能參與DR或BDR的選舉。RouterDeadInterval32比特失效時間。如果在此時間內未收到鄰居發來的Hello報文,則認為鄰居失效。Designated Router32比特MA網絡中DR的接口地址。若不存在則為0.0.0.0Backup Designated Router32比特MA網絡中BDR的接口地址。若不存在則為0.0.0.0Neighbor32比特鄰居,以Router ID標識。<p>
</p><p><span><strong><span style="font-size:14px">2-Way 雙向通信狀態</span></strong></span><span style="font-size:14px">:<span>表示路由器與鄰居的雙向通信關系已經建立(即已經建立起了鄰居關系),但是尚未建立起鄰接關系。</span></span></p><ol><li><p><span style="font-size:14px">停滯于此狀態表明路由器彼此都收到了對方的Hello報文,并且都從Hello報文中發現了自己的OSPF RID。</span><span style="font-size:14px"><strong>對于以太網鏈路上的非DR/BDR路由器來說,這種狀態是可以接受的。</strong></span></p></li></ol><p>
</p><p><strong><span style="font-size:14px">可以查看下wireshark抓包下的Hello報文:
</span></strong></p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/2084007-8d33d1ef93c75151.jpeg" img-data="{"format":"jpeg","size":82797,"height":626,"width":1058}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>
</p><p><span style="font-size:14px">綜上原理可得Hello報文作用:</span><span style="font-size:14px"><strong>用于發現鄰居和維護鄰居關系</strong></span>
</p><p><span style="font-size:14px"><strong>
</strong></span></p><p><span style="font-size:14px"><strong>PS:在MA網絡中,</strong></span><span><strong><span style="font-size:14px">鄰居狀態在 2-Way 后,會進行 DR 和 BDR 選舉。</span></strong></span></p><p><span><strong><span style="font-size:14px">什么是MA網絡?</span></strong></span></p><p><span style="font-size:14px">MA 網絡,即多路訪問網絡,是在同一個共享介質中連接多個設備的網絡。網絡中的任意兩臺設備都能直接進行二層通信。MA 網絡有兩種,一種是 BMA 網絡,即廣播型多路訪問網絡,比如以太網,典型場景就是一臺以太網交換機連接著多臺路由器,如果有一個廣播數據發出來,整個網絡中的路由器都能收到。另一種是 NBMA 網絡,即非廣播型多路訪問網絡,比如幀中繼,只是幀中繼不支持廣播。</span></p><p>
</p><p><span style="font-size:14px">在 MA 網絡中,n 臺路由器都兩兩建立鄰接關系,那么就有 n(n-1)/2 個鄰接關系,會消耗大量的路由器資源,增加網絡中 LSA 的泛洪數量。為了優化鄰接關系數量,減少不必要的協議流量,OSPF 會在每一個 MA 網絡中選舉一個 DR(指定路由器)和一個 BDR(備用指定路由器)。</span></p><p>
</p><p><span style="font-size:14px">既不是 DR 也不是 BDR 的路由器叫做 DROther ,MA網絡中所有 DROther 只和 DR 及 BDR 建立 OSPF 鄰接關系,BDR 也和 DR 建立鄰接關系,DROther 之間只停留在 2-Way 狀態。這樣,就有 <strong>2(n-2)+1 </strong>個鄰接關系,數量得到優化。</span></p><p>
</p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/2084007-bc17f2f980d7cf2e.jpeg" img-data="{"format":"jpeg","size":68746,"height":1155,"width":667}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>
</p><p><span style="font-size:14px">DR 會偵聽網絡中的拓撲變化信息,并將變更信息通知給其它路由器。BDR 會監控 DR 狀態,當 DR 發生故障時就接替它的工作。</span></p><p>
</p><p><span style="font-size:14px">DR 、BDR 的選舉通過 Hello 報文實現,發生在 2-Way 狀態之后。Hello 報文有路由器接口的 DR 優先級,取值范圍是 0 ~ 255 ,默認值為 1 ,DR 優先級為 0 的接口沒有 DR 和 BDR 的選舉資格。</span></p><p>
</p><p><span style="font-size:14px">當接口激活 OSPF 后,它會查看網絡中是否存在 DR ,如果有就使用已經存在的 DR ,也就是 DR 不可搶占,否則選擇最高優先級的路由器成為 DR ,當優先級相等時,選擇 Router-ID 最大的路由器成為 DR 。之后還會進行 BDR 的選舉,選舉過程與 DR 類似。</span></p><p>
</p><p><span style="font-size:14px">需要注意的是,DR 和 BDR 是一個接口級別的概念。某臺路由器是 DR ,這種說法不準確,嚴謹的說法是:某臺路由器的某個接口在這個 MA 網絡中是 DR 。</span></p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/2084007-31a5e53f1dc42269.jpeg" img-data="{"format":"jpeg","size":26770,"height":291,"width":789}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>
</p><p><span style="font-size:14px">在一個 MA 網絡中,DR 要確保網絡中的所有路由器有相同的 LSDB ,也就是確保 LSDB 同步。DR 使用組播地址 224.0.0.5 向網絡中發送 LSU 報文,所有 OSPF 路由器都會偵聽這個組播地址,并同步自己的 LSDB 。而 DROther 感知到拓撲變化時,向 224.0.0.6 發送 LSU 報文通告這個變化,DR 和 BDR 會偵聽這個組播地址。</span></p><p>
</p><p><span style="font-size:14px"><strong>鄰居已經發現,接下來就是ExStart和Exchange的過程,也就是鏈路狀態信息傳遞過程,在這個過程,鄰居之間交互DD報文。</strong></span></p><p><span style="font-size:14px"><strong>
</strong></span></p><p><span><strong><span style="font-size:14px">ExStart 信息交換初始狀態</span></strong></span><span style="font-size:14px">:<span>鄰居狀態變成此狀態以后,路由器開始向鄰居發送DD報文。Master/Slave關系是在此狀態下形成的,初始DD序列號也是在此狀態下確定的。在此狀態下發送的DD報文不包含鏈路狀態描述。</span></span></p><ol><li><p><span style="font-size:14px">停滯于此狀態表明鄰居路由器之間的MTU不匹配或OSPF RID重復。</span></p></li></ol><p>
</p><p><strong><span style="font-size:14px">DD報文的主從選擇</span></strong></p><p><strong><span style="font-size:14px">
</span></strong></p><p><strong><span style="font-size:14px"/></strong></p><p><strong><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/2084007-247ed18778b5d495.jpeg" img-data="{"format":"jpeg","size":27396,"height":439,"width":601}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div></strong></p><p/><p><strong><span style="font-size:14px">
</span></strong></p><p><span><strong><span style="font-size:14px">Exchange 信息交換狀態</span></strong></span><strong><span style="font-size:14px">:</span></strong><strong><span style="font-size:14px">在此狀態下,路由器與鄰居之間相互發送包含鏈路狀態信息摘要的DD報文。</span></strong></p><ol><li><p><strong><span style="font-size:14px">停滯于此狀態表明鄰居路由器之間的MTU不匹配。</span></strong></p></li></ol><p>
</p><p><span style="font-size:14px">路由器進入 Exchange 狀態,向鄰居發送描述自己 LSDB 的 DD 報文,DD 報文中包含 LSA 頭部。DD 報文逐個發送,每個報文中都有 DD 序列號,DD 序列號由 Master 路由器決定,序列號在 DD 報文的交互過程中遞增,確保交互過程的有序性和可靠性。</span></p><p>
</p><p><span style="font-size:14px">DD 報文用于描述 LSDB ,攜帶 LSDB 中 LSA 的頭部數據,而非完整的 LSA 內容。在路由器鄰接關系的建立過程中,先用空的 DD 報文協商 Master/Slave ,然后用 DD 報文描述各自的 LSDB ,這種 DD 報文包含 LSDB 里的 LSA 頭部。路由器可以使用多個 DD 報文來描述 LSDB ,為了保證 DD 報文傳輸的順序和可靠,Master 路由器使用序列號字段遞增的方式,主導整個 LSDB 描述過程。</span></p><p>
</p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/2084007-fd13763d872e35a0.jpeg" img-data="{"format":"jpeg","size":37429,"height":759,"width":619}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>
</p><p><strong><span style="font-size:14px">DD報文結構:</span></strong></p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/2084007-5af972213add1dde.jpeg" img-data="{"format":"jpeg","size":45987,"height":362,"width":816}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>
</p><ol><li><p>Interface MTU:16位,此接口最大可發出IP報文的長度,華為默認不填充為0。</p></li><li><p>Options:含義同OSPF報文頭一致。</p></li><li><p>I位:1位,當連續發送多個DD報文時,是第一個DD報文時為1,否則為0。</p></li><li><p>M位:1位,當連續發送多個DD報文時,后續沒有LSA頭要傳時,則為0。</p></li><li><p>M/S位:1位,當兩臺路由器交換DD報文需選舉主從,RouterID大的為主,當值位1則為Master。</p></li><li><p>DDS equence Number:32位,DD報文序列號,主從交互DD利用序列號保證DD報文傳輸的可靠性和穩定性。</p></li><li><p>LSA Headers:本地LSDB的頭部信息。</p></li></ol><p>
</p><p><strong><span style="font-size:14px">DD報文抓包</span></strong>
</p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/2084007-dc2a39bae460e744.jpeg" img-data="{"format":"jpeg","size":43168,"height":458,"width":1080}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p/><p><span style="font-size:14px">DD報文作用:</span><b>用來描述本地LSDB的摘要信息,用于同步數據庫</b></p><p>
</p><p><span><strong><span style="font-size:14px">Loading 信息加載狀態</span></strong></span><span style="font-size:14px">:在此狀態下,路由器與鄰居之間相互發送LSR報文、LSU報文、LSAck報文。</span></p><ol><li><p><span style="font-size:14px">停滯于此狀態表明可能存在硬件故障或硬件故障或MTU不匹配。</span></p></li></ol><p>
</p><p><span style="font-size:14px">接下來,路由器進入 Loading 狀態,路由器向鄰居發送 LSR 請求 LSA 的完整信息。鄰居使用 LSU 進行回應,LSU 報文里有 LSA 的完整信息。在收到 LSU 報文后,路由器需要發送 LSAck 對 LSA 進行確認。</span></p><p><span style="font-size:14px">
</span></p><p><strong><span style="font-size:14px">LSR報文格式:</span></strong><span style="font-size:14px">用于向鄰居請求完整的LSA。{注意:只會請求自己沒有的LSA}
</span></p><p><span style="font-size:14px"/></p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/2084007-e6863feffff6e632.jpeg" img-data="{"format":"jpeg","size":43344,"height":383,"width":775}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p/><p><span style="font-size:14px">
</span></p><ol><li><p><span style="font-size:14px">LS type:32位,LSA的類型</span></p></li><li><p><span style="font-size:14px">Link State ID:32位,根據LSA中的LSA Type和LSA Description在路由域中描述一個LSA。</span></p></li><li><p><span style="font-size:14px">Advertising Router:32位,產生此LSA的路由器Router ID。</span></p></li></ol><p>
</p><p><span style="font-size:14px">LSA常見的類型:</span></p><p><span style="font-size:14px">type-1=Router LSA</span></p><p><span style="font-size:14px">type-2=Network LSA</span></p><p><span style="font-size:14px">type-3=Network Summary LSA</span></p><p><span style="font-size:14px">type-4=ASBR Summary LSA</span></p><p><span style="font-size:14px">type-5=AS External LSA</span></p><p><span style="font-size:14px">type-6=Group Membership LSA</span></p><p><span style="font-size:14px">type-7=NSSA LSA</span></p><p>
</p><p><span><strong><span style="font-size:14px">日常使用的有1、2、3、4、5、7</span></strong></span></p><p><strong><span style="font-size:14px">后續文章講詳細講解LSA
</span></strong></p><p>
</p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/2084007-b1a96bc7899c850d.jpeg" img-data="{"format":"jpeg","size":97542,"height":674,"width":896}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>
</p><p><strong><span style="font-size:14px">LSU報文格式:</span></strong><span style="font-size:14px">LSU報文包含的是完整的LSA信息,用于回復LSR報文。并且當路由器感知到網絡發生變化時也會泛洪LSU。</span></p><p><span style="font-size:12px">PS:注意:非DR/BDR路由器的LSU報文是發送給224.0.0.6地址的,而DR收到這個報文后又會把它發送給224.0.0.5[所有的OSPF路由器]。這樣就大大的減少的網絡開支,有利于網絡的優化。</span></p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/2084007-2cae20d41fe6ffc1.jpeg" img-data="{"format":"jpeg","size":38363,"height":316,"width":750}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>
</p><ol><li><p><span style="font-size:14px">Number of LSAs:32位,表示此Update中包含的LSA數量。</span></p></li><li><p><span style="font-size:14px">LSAs:多個完整的LSA內容。</span></p></li></ol><p>
</p><p>
</p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/2084007-7cb2698ce9496cdd.jpeg" img-data="{"format":"jpeg","size":145097,"height":844,"width":906}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>
</p><p><strong><span style="font-size:14px">LSAck報文格式:</span></strong></p><p><span style="font-size:14px">鏈路狀態確認報文,用于確認LSU報文;為了保障每條LSA可達,需要LSAck來對每天收到的LSA進行確認。</span></p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/2084007-56f90924e1809dc5.jpeg" img-data="{"format":"jpeg","size":34619,"height":285,"width":763}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>
</p><p><span style="font-size:14px">LSA Headers:LSA頭列表,OSPF通過LSA頭對完整的LSA做確認,一份LSA可以對多份LSU中的LSA做確認。</span></p><p><span style="font-size:14px">
</span></p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/2084007-2b1a2daa04935da7.jpeg" img-data="{"format":"jpeg","size":84850,"height":816,"width":1030}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>
</p><p><span><strong><span style="font-size:14px">Full 完全鄰接狀態:</span></strong></span><span style="font-size:14px">表示LSDB同步過程完成,路由器與鄰居之間形成了完全的鄰接關系。</span></p><p>
</p><p><span style="font-size:14px"><strong>整個狀態變化的報文交互情況:</strong></span>
</p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/2084007-82bc56e7cdf31e7c.jpeg" img-data="{"format":"jpeg","size":65066,"height":742,"width":739}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>
</p>

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,882評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,208評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,746評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,666評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,477評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,960評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,047評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,200評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,726評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,617評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,807評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,327評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,049評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,425評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,674評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,432評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,769評論 2 372

推薦閱讀更多精彩內容