路由協(xié)議:現(xiàn)實中的交通規(guī)則

俗話說得好,在家千日好吏口,出門一日難奄容。網(wǎng)絡(luò)包一旦出了網(wǎng)關(guān),就像玄奘西行一樣踏上了江湖漂泊的路产徊。

上一節(jié)我們描述的是一個相對簡單的情形昂勒。出了網(wǎng)關(guān)之后,只有一條路可以走舟铜。但是叁怪,網(wǎng)絡(luò)世界復(fù)雜得多,一旦出了網(wǎng)關(guān)深滚,會面臨著很多路由器奕谭,有很多條道路可以選。如何選擇一個更快速的道路求取真經(jīng)呢痴荐?這里面還有很多門道可以講血柳。

如何配置路由?

通過上一節(jié)的內(nèi)容生兆,你應(yīng)該已經(jīng)知道难捌,路由器就是一臺網(wǎng)絡(luò)設(shè)備,它有多張網(wǎng)卡鸦难。當(dāng)一個入口的網(wǎng)絡(luò)包送到路由器時根吁,它會根據(jù)一個本地的轉(zhuǎn)發(fā)信息庫,來決定如何正確地轉(zhuǎn)發(fā)流量合蔽。這個轉(zhuǎn)發(fā)信息庫通常被稱為路由表击敌。

一張路由表中會有多條路由規(guī)則。每一條規(guī)則至少包含這三項信息拴事。

目的網(wǎng)絡(luò):這個包想去哪兒沃斤?

出口設(shè)備:將包從哪個口扔出去?

下一跳網(wǎng)關(guān):下一個路由器的地址刃宵。

通過 route 命令和 ip route 命令都可以進(jìn)行查詢或者配置衡瓶。

例如,我們設(shè)置 ip route add 10.176.48.0/20 via 10.173.32.1 dev eth0牲证,就說明要去 10.176.48.0/20 這個目標(biāo)網(wǎng)絡(luò)哮针,要從 eth0 端口出去,經(jīng)過 10.173.32.1坦袍。

上一節(jié)的例子中十厢,網(wǎng)關(guān)上的路由策略就是按照這三項配置信息進(jìn)行配置的。這種配置方式的一個核心思想是:根據(jù)目的 IP 地址來配置路由键闺。

如何配置策略路由寿烟?

當(dāng)然,在真實的復(fù)雜的網(wǎng)絡(luò)環(huán)境中辛燥,除了可以根據(jù)目的 ip 地址配置路由外筛武,還可以根據(jù)多個參數(shù)來配置路由,這就稱為策略路由挎塌。

可以配置多個路由表徘六,可以根據(jù)源 IP 地址、入口設(shè)備榴都、TOS 等選擇路由表待锈,然后在路由表中查找路由。這樣可以使得來自不同來源的包走不同的路由嘴高。

例如竿音,我們設(shè)置:

ip rule add from 192.168.1.0/24 table 10

ip rule add from 192.168.2.0/24 table 20

表示從 192.168.1.10/24 這個網(wǎng)段來的和屎,使用 table 10 中的路由表,而從 192.168.2.0/24 網(wǎng)段來的春瞬,使用 table20 的路由表柴信。

在一條路由規(guī)則中,也可以走多條路徑宽气。例如随常,在下面的路由規(guī)則中:

ip route add default scope global nexthop via 100.100.100.1 weight 1 nexthop via 200.200.200.1 weight 2

下一跳有兩個地方,分別是 100.100.100.1 和 200.200.200.1萄涯,權(quán)重分別為 1 比 2绪氛。

在什么情況下會用到如此復(fù)雜的配置呢?我來舉一個現(xiàn)實中的例子涝影。

我是房東枣察,家里從運(yùn)營商那兒拉了兩根網(wǎng)線。這兩根網(wǎng)線分別屬于兩個運(yùn)行商袄琳。一個帶寬大一些询件,一個帶寬小一些。這個時候唆樊,我就不能買普通的家用路由器了宛琅,得買個高級點的,可以接兩個外網(wǎng)的逗旁。

家里的網(wǎng)絡(luò)呢嘿辟,就是普通的家用網(wǎng)段 192.168.1.x/24。家里有兩個租戶片效,分別把線連到路由器上红伦。IP 地址為 192.168.1.101/24 和 192.168.1.102/24,網(wǎng)關(guān)都是 192.168.1.1/24淀衣,網(wǎng)關(guān)在路由器上昙读。

就像上一節(jié)說的一樣,家里的網(wǎng)段是私有網(wǎng)段膨桥,出去的包需要 NAT 成公網(wǎng)的 IP 地址蛮浑,因而路由器是一個 NAT 路由器。

兩個運(yùn)營商都要為這個網(wǎng)關(guān)配置一個公網(wǎng)的 IP 地址只嚣。如果你去查看你們家路由器里的網(wǎng)段沮稚,基本就是我圖中畫的樣子。

運(yùn)行商里面也有一個 IP 地址册舞,在運(yùn)營商網(wǎng)絡(luò)里面的網(wǎng)關(guān)蕴掏。不同的運(yùn)營商方法不一樣,有的是 /32 的,也即一個一對一連接盛杰。

例如挽荡,運(yùn)營商 1 給路由器分配的地址是 183.134.189.34/32,而運(yùn)營商網(wǎng)絡(luò)里面的網(wǎng)關(guān)是 183.134.188.1/32饶唤。有的是 /30 的徐伐,也就是分了一個特別小的網(wǎng)段。運(yùn)營商 2 給路由器分配的地址是 60.190.27.190/30募狂,運(yùn)營商網(wǎng)絡(luò)里面的網(wǎng)關(guān)是 60.190.27.189/30。

根據(jù)這個網(wǎng)絡(luò)拓?fù)鋱D角雷,可以將路由配置成這樣:

$ ip route list table main

60.190.27.189/30 dev eth3? proto kernel? scope link? src 60.190.27.190

183.134.188.1 dev eth2? proto kernel? scope link? src 183.134.189.34

192.168.1.0/24 dev eth1? proto kernel? scope link? src 192.168.1.1

127.0.0.0/8 dev lo? scope link

default via 183.134.188.1 dev eth2

當(dāng)路由這樣配置的時候祸穷,就告訴這個路由器如下的規(guī)則:

如果去運(yùn)營商二,就走 eth3勺三;

如果去運(yùn)營商一呢雷滚,就走 eth2;

如果訪問內(nèi)網(wǎng)吗坚,就走 eth1祈远;

如果所有的規(guī)則都匹配不上,默認(rèn)走運(yùn)營商一商源,也即走快的網(wǎng)絡(luò)车份。

但是問題來了,租戶 A 不想多付錢牡彻,他說我就上上網(wǎng)頁扫沼,從不看電影,憑什么收我同樣貴的網(wǎng)費(fèi)白稹缎除?沒關(guān)系,咱有技術(shù)可以解決总寻。

下面我添加一個 Table器罐,名字叫 chao。

# echo 200 chao >> /etc/iproute2/rt_tables

添加一條規(guī)則:

# ip rule add from 192.168.1.101 table chao

# ip rule ls

0:? from all lookup local

32765:? from 10.0.0.10 lookup chao

32766:? from all lookup main

32767:? from all lookup default

設(shè)定規(guī)則為:從 192.168.1.101 來的包都查看個 chao 這個新的路由表轰坊。

在 chao 路由表中添加規(guī)則:

# ip route add default via 60.190.27.189 dev eth3 table chao

# ip route flush cache

默認(rèn)的路由走慢的樊零,誰讓你不付錢沉衣。

上面說的都是靜態(tài)的路由,一般來說網(wǎng)絡(luò)環(huán)境簡單的時候既荚,在自己的可控范圍之內(nèi)晴叨,自己搗鼓還是可以的问拘。但是有時候網(wǎng)絡(luò)環(huán)境復(fù)雜并且多變纽绍,如果總是用靜態(tài)路由盹愚,一旦網(wǎng)絡(luò)結(jié)構(gòu)發(fā)生變化毅舆,讓網(wǎng)絡(luò)管理員手工修改路由太復(fù)雜了,因而需要動態(tài)路由算法愈腾。

動態(tài)路由算法

使用動態(tài)路由路由器憋活,可以根據(jù)路由協(xié)議算法生成動態(tài)路由表,隨網(wǎng)絡(luò)運(yùn)行狀況的變化而變化虱黄。那路由算法是什么樣的呢悦即?

我們可以想象唐僧西天取經(jīng),需要解決兩大問題橱乱,一個是在每個國家如何找到正確的路辜梳,去換通關(guān)文牒、吃飯泳叠、休息冗美;一個是在國家之間,野外行走的時候析二,如何找到正確的路、水源的問題节预。

無論是一個國家內(nèi)部叶摄,還是國家之間,我們都可以將復(fù)雜的路徑安拟,抽象為一種叫作圖的數(shù)據(jù)結(jié)構(gòu)蛤吓。至于唐僧西行取經(jīng),肯定想走的路越少越好糠赦,道路越短越好会傲,因而這就轉(zhuǎn)化成為如何在途中找到最短路徑的問題。

咱們在大學(xué)里面學(xué)習(xí)計算機(jī)網(wǎng)絡(luò)與數(shù)據(jù)結(jié)構(gòu)的時候拙泽,知道求最短路徑常用的有兩種方法淌山,一種是 Bellman-Ford 算法,一種是 Dijkstra 算法顾瞻。在計算機(jī)網(wǎng)絡(luò)中基本也是用這兩種方法計算的泼疑。

1. 距離矢量路由算法

第一大類的算法稱為距離矢量路由(distance vector routing)。它是基于 Bellman-Ford 算法的荷荤。

這種算法的基本思路是退渗,每個路由器都保存一個路由表,包含多行蕴纳,每行對應(yīng)網(wǎng)絡(luò)中的一個路由器会油,每一行包含兩部分信息,一個是要到目標(biāo)路由器古毛,從那條線出去翻翩,另一個是到目標(biāo)路由器的距離。

由此可以看出,每個路由器都是知道全局信息的体斩。那這個信息如何更新呢梭稚?每個路由器都知道自己和鄰居之間的距離,每過幾秒絮吵,每個路由器都將自己所知的到達(dá)所有的路由器的距離告知鄰居弧烤,每個路由器也能從鄰居那里得到相似的信息。

每個路由器根據(jù)新收集的信息蹬敲,計算和其他路由器的距離暇昂,比如自己的一個鄰居距離目標(biāo)路由器的距離是 M,而自己距離鄰居是 x伴嗡,則自己距離目標(biāo)路由器是 x+M急波。

這個算法比較簡單,但是還是有問題瘪校。

第一個問題就是好消息傳得快澄暮,壞消息傳得慢。 如果有個路由器加入了這個網(wǎng)絡(luò)阱扬,它的鄰居就能很快發(fā)現(xiàn)它泣懊,然后將消息廣播出去。要不了多久麻惶,整個網(wǎng)絡(luò)就都知道了馍刮。但是一旦一個路由器掛了,掛的消息是沒有廣播的窃蹋。當(dāng)每個路由器發(fā)現(xiàn)原來的道路到不了這個路由器的時候卡啰,感覺不到它已經(jīng)掛了,而是試圖通過其他的路徑訪問警没,直到試過了所有的路徑匈辱,才發(fā)現(xiàn)這個路由器是真的掛了。

我再舉個例子惠奸。

原來的網(wǎng)絡(luò)包括兩個節(jié)點梅誓,B 和 C。A 加入了網(wǎng)絡(luò)佛南,它的鄰居 B 很快就發(fā)現(xiàn) A 啟動起來了梗掰。于是它將自己和 A 的距離設(shè)為 1,同樣 C 也發(fā)現(xiàn) A 起來了嗅回,將自己和 A 的距離設(shè)置為 2及穗。但是如果 A 掛掉,情況就不妙了绵载。B 本來和 A 是鄰居埂陆,發(fā)現(xiàn)連不上 A 了苛白,但是 C 還是能夠連上,只不過距離遠(yuǎn)了點焚虱,是 2购裙,于是將自己的距離設(shè)置為 3。殊不知 C 的距離 2 其實是基于原來自己的距離為 1 計算出來的鹃栽。C 發(fā)現(xiàn)自己也連不上 A躏率,并且發(fā)現(xiàn) B 設(shè)置為 3,于是自己改成距離 4民鼓。依次類推薇芝,數(shù)越來越大,直到超過一個閾值丰嘉,我們才能判定 A 真的掛了夯到。

這個道理有點像有人走丟了。當(dāng)你突然發(fā)現(xiàn)找不到這個人了饮亏。于是你去學(xué)校問耍贾,是不是在他姨家呀?找到他姨家路幸,他姨說逼争,是不是在他舅舅家呀?他舅舅說劝赔,是不是在他姥姥家呀?他姥姥說胆敞,是不是在學(xué)校呀着帽?總歸要問一圈,或者是超過一定的時間移层,大家才會認(rèn)為這個人的確走丟了仍翰。如果這個人其實只是去見了一個誰都不認(rèn)識的網(wǎng)友去了,當(dāng)這個人回來的時候观话,只要他隨便見到其中的一個親戚予借,這個親戚就會拉著他到他的家長那里,說你趕緊回家频蛔,你媽都找你一天了灵迫。

這種算法的第二個問題是,每次發(fā)送的時候晦溪,要發(fā)送整個全局路由表瀑粥。網(wǎng)絡(luò)大了,誰也受不了三圆,所以最早的路由協(xié)議 RIP 就是這個算法狞换。它適用于小型網(wǎng)絡(luò)(小于 15 跳)避咆。當(dāng)網(wǎng)絡(luò)規(guī)模都小的時候,沒有問題⌒拊耄現(xiàn)在一個數(shù)據(jù)中心內(nèi)部路由器數(shù)目就很多查库,因而不適用了。

所以上面的兩個問題黄琼,限制了距離矢量路由的網(wǎng)絡(luò)規(guī)模樊销。

2. 鏈路狀態(tài)路由算法

第二大類算法是鏈路狀態(tài)路由(link state routing),基于 Dijkstra 算法适荣。

這種算法的基本思路是:當(dāng)一個路由器啟動的時候现柠,首先是發(fā)現(xiàn)鄰居,向鄰居 say hello弛矛,鄰居都回復(fù)够吩。然后計算和鄰居的距離,發(fā)送一個 echo丈氓,要求馬上返回周循,除以二就是距離。然后將自己和鄰居之間的鏈路狀態(tài)包廣播出去万俗,發(fā)送到整個網(wǎng)絡(luò)的每個路由器湾笛。這樣每個路由器都能夠收到它和鄰居之間的關(guān)系的信息。因而闰歪,每個路由器都能在自己本地構(gòu)建一個完整的圖嚎研,然后針對這個圖使用 Dijkstra 算法,找到兩點之間的最短路徑库倘。

不像距離距離矢量路由協(xié)議那樣临扮,更新時發(fā)送整個路由表。鏈路狀態(tài)路由協(xié)議只廣播更新的或改變的網(wǎng)絡(luò)拓?fù)浣挑妫@使得更新信息更小杆勇,節(jié)省了帶寬和 CPU 利用率。而且一旦一個路由器掛了饱亿,它的鄰居都會廣播這個消息蚜退,可以使得壞消息迅速收斂。

動態(tài)路由協(xié)議

1. 基于鏈路狀態(tài)路由算法的 OSPF

OSPF(Open Shortest Path First彪笼,開放式最短路徑優(yōu)先)就是這樣一個基于鏈路狀態(tài)路由協(xié)議钻注,廣泛應(yīng)用在數(shù)據(jù)中心中的協(xié)議。由于主要用在數(shù)據(jù)中心內(nèi)部配猫,用于路由決策队寇,因而稱為內(nèi)部網(wǎng)關(guān)協(xié)議(Interior Gateway Protocol,簡稱 IGP)章姓。

內(nèi)部網(wǎng)關(guān)協(xié)議的重點就是找到最短的路徑佳遣。在一個組織內(nèi)部识埋,路徑最短往往最優(yōu)。當(dāng)然有時候 OSPF 可以發(fā)現(xiàn)多個最短的路徑零渐,可以在這多個路徑中進(jìn)行負(fù)載均衡窒舟,這常常被稱為等價路由。

這一點非常重要诵盼。有了等價路由惠豺,到一個地方去可以有相同的兩個路線,可以分?jǐn)偭髁糠缒€可以當(dāng)一條路不通的時候洁墙,走另外一條路。這個在后面我們講數(shù)據(jù)中心的網(wǎng)絡(luò)的時候戒财,一般應(yīng)用的接入層會有負(fù)載均衡 LVS热监。它可以和 OSPF 一起,實現(xiàn)高吞吐量的接入層設(shè)計饮寞。

有了內(nèi)網(wǎng)的路由協(xié)議孝扛,在一個國家內(nèi),唐僧可以想怎么走怎么走了幽崩,兩條路選一條也行苦始。

2. 基于距離矢量路由算法的 BGP

但是外網(wǎng)的路由協(xié)議,也即國家之間的慌申,又有所不同陌选。我們稱為外網(wǎng)路由協(xié)議(Border Gateway Protocol,簡稱 BGP)蹄溉。

在一個國家內(nèi)部柠贤,有路當(dāng)然選近的走。但是國家之間类缤,不光遠(yuǎn)近的問題,還有政策的問題邻吭。例如餐弱,唐僧去西天取經(jīng),有的路近囱晴。但是路過的國家看不慣僧人膏蚓,見了僧人就抓。例如滅法國畸写,連光頭都要抓驮瞧。這樣的情況即便路近,也最好繞遠(yuǎn)點走枯芬。

對于網(wǎng)絡(luò)包同樣论笔,每個數(shù)據(jù)中心都設(shè)置自己的 Policy采郎。例如,哪些外部的 IP 可以讓內(nèi)部知曉狂魔,哪些內(nèi)部的 IP 可以讓外部知曉蒜埋,哪些可以通過,哪些不能通過最楷。這就好比整份,雖然從我家里到目的地最近,但是不能誰都能從我家走白阉铩烈评!

在網(wǎng)絡(luò)世界,這一個個國家成為自治系統(tǒng) AS(Autonomous System)犯建。自治系統(tǒng)分幾種類型讲冠。

Stub AS:對外只有一個連接。這類 AS 不會傳輸其他 AS 的包胎挎。例如沟启,個人或者小公司的網(wǎng)絡(luò)。

Multihomed AS:可能有多個連接連到其他的 AS犹菇,但是大多拒絕幫其他的 AS 傳輸包德迹。例如一些大公司的網(wǎng)絡(luò)。

Transit AS:有多個連接連到其他的 AS揭芍,并且可以幫助其他的 AS 傳輸包胳搞。例如主干網(wǎng)。

每個自治系統(tǒng)都有邊界路由器称杨,通過它和外面的世界建立聯(lián)系肌毅。

BGP 又分為兩類,eBGP 和 iBGP姑原。自治系統(tǒng)間悬而,邊界路由器之間使用 eBGP 廣播路由。內(nèi)部網(wǎng)絡(luò)也需要訪問其他的自治系統(tǒng)锭汛。邊界路由器如何將 BGP 學(xué)習(xí)到的路由導(dǎo)入到內(nèi)部網(wǎng)絡(luò)呢笨奠?就是通過運(yùn)行 iBGP,使得內(nèi)部的路由器能夠找到到達(dá)外網(wǎng)目的地的最好的邊界路由器唤殴。

BGP 協(xié)議使用的算法是路徑矢量路由協(xié)議(path-vector protocol)般婆。它是距離矢量路由協(xié)議的升級版。

前面說了距離矢量路由協(xié)議的缺點朵逝。其中一個是收斂慢蔚袍。在 BGP 里面,除了下一跳 hop 之外配名,還包括了自治系統(tǒng) AS 的路徑啤咽,從而可以避免壞消息傳得慢的問題晋辆,也即上面所描述的,B 知道 C 原來能夠到達(dá) A闰蚕,是因為通過自己栈拖,一旦自己都到達(dá)不了 A 了,就不用假設(shè) C 還能到達(dá) A 了没陡。

另外涩哟,在路徑中將一個自治系統(tǒng)看成一個整體,不區(qū)分自治系統(tǒng)內(nèi)部的路由器盼玄,這樣自治系統(tǒng)的數(shù)目是非常有限的贴彼。就像大家都能記住出去玩,從中國出發(fā)先到韓國然后到日本埃儿,只要不計算細(xì)到具體哪一站器仗,就算是發(fā)送全局信息,也是沒有問題的童番。

小結(jié)

好了精钮,這一節(jié)就到這里了,我來做個總結(jié):

路由分靜態(tài)路由和動態(tài)路由剃斧,靜態(tài)路由可以配置復(fù)雜的策略路由轨香,控制轉(zhuǎn)發(fā)策略;

動態(tài)路由主流算法有兩種幼东,距離矢量算法和鏈路狀態(tài)算法臂容。基于兩種算法產(chǎn)生兩種協(xié)議根蟹,BGP 協(xié)議和 OSPF 協(xié)議脓杉。

最后,再給你留兩個思考題:

路由協(xié)議要在路由器之間交換信息简逮,這些信息的交換還需要走路由嗎球散?不是死鎖了嗎?

路由器之間信息的交換使用什么協(xié)議呢散庶?報文格式是什么樣呢蕉堰?

歡迎你留言和我討論。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末督赤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子泻蚊,更是在濱河造成了極大的恐慌躲舌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件性雄,死亡現(xiàn)場離奇詭異没卸,居然都是意外死亡羹奉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門约计,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诀拭,“玉大人,你說我怎么就攤上這事煤蚌「ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵尉桩,是天一觀的道長筒占。 經(jīng)常有香客問我,道長蜘犁,這世上最難降的妖魔是什么翰苫? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮这橙,結(jié)果婚禮上奏窑,老公的妹妹穿的比我還像新娘。我一直安慰自己屈扎,他們只是感情好埃唯,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著助隧,像睡著了一般筑凫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上并村,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天巍实,我揣著相機(jī)與錄音,去河邊找鬼哩牍。 笑死棚潦,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的膝昆。 我是一名探鬼主播丸边,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼荚孵!你這毒婦竟也來了妹窖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤收叶,失蹤者是張志新(化名)和其女友劉穎骄呼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蜓萄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年隅茎,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嫉沽。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡辟犀,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出绸硕,到底是詐尸還是另有隱情堂竟,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布臣咖,位于F島的核電站跃捣,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏夺蛇。R本人自食惡果不足惜疚漆,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望刁赦。 院中可真熱鬧娶聘,春花似錦、人聲如沸甚脉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牺氨。三九已至愤炸,卻和暖如春羞迷,著一層夾襖步出監(jiān)牢的瞬間杖们,已是汗流浹背宰闰。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留郊霎,地道東北人沼头。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像书劝,于是被迫代替她去往敵國和親进倍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容