Bluefield DOCA安裝和HBN安裝

預(yù)備工作

這里需要下載2個(gè)文件,一個(gè)文件用于HOST服務(wù)器,一個(gè)文件用于Bluefield DPU。注意根據(jù)系統(tǒng)的不同選擇對應(yīng)的正確的文件。
筆者Ubuntu 22.04,下載了下述兩個(gè)文件。注意下載下述兩個(gè)文件時(shí)務(wù)必要登錄nvidia賬號,并獲得DOCA SDK early Access后再下載。
https://docs.nvidia.com/doca/sdk/nvidia+doca+installation+guide+for+linux/index.html#src-2448907425_NVIDIADOCAInstallationGuideforLinux-BlueFieldDPUImageInstallation

# ls -l
total 1612060
-rw-r--r-- 1 yanghy cord-testdrive-P 1178457336 Jan  9 01:46 DOCA_2.5.0_BSP_4.5.0_Ubuntu_22.04-1.23-10.prod.bfb
-rw-r--r-- 1 yanghy cord-testdrive-P  470566450 Jan  9 01:32 doca-host-repo-ubuntu2204_2.5.0-0.0.1.2.5.0108.1.23.10.1.1.9.0_amd64.deb

Host初始化

# sudo dpkg -i doca-host-repo-ubuntu2204_2.5.0-0.0.1.2.5.0108.1.23.10.1.1.9.0_amd64.deb
# sudo apt-get update
# sudo apt install -y IPdoca-runtime doca-sdk doca-tools
最后一步視網(wǎng)絡(luò)質(zhì)量,可能時(shí)間漫長。

檢視DPU信息

# mst start
Starting MST (Mellanox Software Tools) driver set
Loading MST PCI module - Success
Loading MST PCI configuration module - Success
Create devices
Unloading MST PCI module (unused) - Success

# mst status -v
MST modules:
------------
    MST PCI module is not loaded
    MST PCI configuration module loaded
PCI devices:
------------
DEVICE_TYPE             MST                           PCI       RDMA            NET                                     NUMA
BlueField2(rev:0)       /dev/mst/mt41686_pciconf0.1   81:00.1   mlx5_3          net-enp129s0f1np1                       1

BlueField2(rev:0)       /dev/mst/mt41686_pciconf0     81:00.0   mlx5_2          net-enp129s0f0np0                       1

ConnectX5(rev:0)        /dev/mst/mt4119_pciconf0.1    63:00.1   mlx5_1          net-eno34np1                            0

ConnectX5(rev:0)        /dev/mst/mt4119_pciconf0      63:00.0   mlx5_0          net-eno33np0                            0

重置設(shè)備(可選)

# sudo mlxconfig -d /dev/mst/mt41686_pciconf0 -y reset

調(diào)整Bluefield工作模式

如果持有的Bluefield既支持IB又支持Ethernet,注意調(diào)整其工作模式成Ethernet。

# sudo mlxconfig -d /dev/mst/mt41686_pciconf0 -e q | grep -i link_type

如果上述存在下述輸出,說明當(dāng)前DPU既支持IB又支持ETH。如果無任何輸出,說明該DPU僅支持ETH。

Configurations:                              Default         Current         Next Boot
*        LINK_TYPE_P1                        IB(1)           ETH(2)          IB(1)
*        LINK_TYPE_P2                        IB(1)           ETH(2)          IB(1)

通過下述命令修改Bluefield工作模式

# sudo mlxconfig -d /dev/mst/mt41686_pciconf0 s LINK_TYPE_P1=2 LINK_TYPE_P2=2

設(shè)置tmfifo網(wǎng)卡

通過前述的一系列操作,Host層面出現(xiàn)tmfifo_net0網(wǎng)卡。

# ip a
...
8: tmfifo_net0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
    link/ether 00:1a:ca:ff:ff:02 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::21a:caff:feff:ff02/64 scope link
       valid_lft forever preferred_lft forever

通過設(shè)置tmfifo_net0網(wǎng)卡IP為192.168.100.1/30,使得Host能通過SSH連接至DPU內(nèi)默認(rèn)IP 192.168.100.2。

# ifconfig tmfifo_net0 192.168.100.1/30
# ip a
...
8: tmfifo_net0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
    link/ether 00:1a:ca:ff:ff:02 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.1/30 brd 192.168.100.3 scope global tmfifo_net0
       valid_lft forever preferred_lft forever
    inet6 fe80::21a:caff:feff:ff02/64 scope link
       valid_lft forever preferred_lft forever

至此Host上的相關(guān)設(shè)置已完成。

DPU初始化

生成Bluefield配置文件

Bluefiled中ARM系統(tǒng)將獨(dú)立運(yùn)行Ubuntu操作系統(tǒng),此步驟用于在為Bluefiled中安裝系統(tǒng)時(shí)注入SSH用戶ubuntu登錄用密碼信息。

# openssl passwd -1
Password:
Verifying - Password:
$1$bNJw9LAD$xD95f3AHMX3ek0s5gWIEU.

將生成的密碼hash以下述形式寫入新建的bf.cfg文件。

ubuntu_PASSWORD='$1$bNJw9LAD$xD95f3AHMX3ek0s5gWIEU.'

更新Bluefiled鏡像

Bluefield的鏡像安裝將通過rshim接口實(shí)施。
查看rshim服務(wù)狀態(tài),若未啟動(dòng)則啟動(dòng)。查看DPU的rshim接口,如果本機(jī)只有一張Bluefield,那默認(rèn)為rshim0.

# sudo systemctl status rshim
# sudo systemctl enable rshim
# sudo systemctl start rshim

# ls -la /dev/ | grep rshim
drwxr-xr-x  2 root root         120 Jan  9 01:36 rshim0

根據(jù)下載的鏡像、密碼hash、rshim接口,給DPU安裝系統(tǒng)并注入登錄用的密碼信息。

# sudo bfb-install --rshim rshim0 --bfb DOCA_2.5.0_BSP_4.5.0_Ubuntu_22.04-1.23-10.prod.bfb --config bf.cfg

上述過程要持續(xù)十?dāng)?shù)分鐘。可以通過rshim concole觀察安裝進(jìn)展。

# apt-get install minicom -y
# minicom -D /dev/rshim0/console

當(dāng) bfb-install 完整輸出下述日志時(shí)代表安裝成功。

Warn: 'pv' command not found. Continue without showing BFB progress.
Pushing bfb + cfg
Collecting BlueField booting status. Press Ctrl+C to stop…
 INFO[BL2]: start
 INFO[BL2]: boot mode (rshim)
 INFO[BL2]: DDR POST passed
 INFO[BL2]: UEFI loaded
 INFO[BL31]: start
 INFO[BL31]: lifecycle GA Non-Secured
 INFO[BL31]: runtime
 INFO[UEFI]: UPVS valid
 WARN[UEFI]: UPVS full
 WARN[UEFI]: UPVS reclaim
 WARN[UEFI]: Var reclaim
 WARN[UEFI]: Var reclaim done
 INFO[UEFI]: eMMC init
 INFO[UEFI]: eMMC probed
 INFO[UEFI]: PMI: updates started
 INFO[UEFI]: PMI: total updates: 1
 INFO[UEFI]: PMI: updates completed, status 0
 INFO[UEFI]: PCIe enum start
 INFO[UEFI]: PCIe enum end
 INFO[UEFI]: exit Boot Service
 INFO[MISC]: : Found bf.cfg
 INFO[MISC]: : Ubuntu installation started
 INFO[MISC]: Installing OS image
 INFO[MISC]: : Changing the default password for user ubuntu
 INFO[MISC]: : Installation finished

注意在安裝成功后,DPU會自動(dòng)重啟,無法在第一時(shí)間被ssh。請等待三四分鐘后根據(jù)前述設(shè)置的ubuntu密碼通過下述命令進(jìn)行ssh。如果ssh不成功,可能是DPU內(nèi)部的tmfifo_net0沒有up或者沒有自動(dòng)配上192.168.100.2這個(gè)地址。可以通過前述rshim進(jìn)入DPU后手動(dòng)配置tmfifo_net0網(wǎng)卡。

# ssh ubuntu@192.168.100.2
The authenticity of host '192.168.100.2 (192.168.100.2)' can't be established.
ED25519 key fingerprint is SHA256:RyTOWjhQM7FV0+kHicc0B7VCVuwGUEMOYH+LExG0Ik0.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.100.2' (ED25519) to the list of known hosts.

ubuntu@192.168.100.2's password:
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-1032-bluefield aarch64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Tue Sep 19 16:59:20 UTC 2023

  System load:  2.64501953125      Processes:                    257
  Usage of /:   38.6% of 14.22GB   Users logged in:              0
  Memory usage: 7%                 IPv4 address for tmfifo_net0: 192.168.100.2
  Swap usage:   0%

Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status



The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.


ubuntu@localhost:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: oob_net0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 0c:42:a1:a4:89:96 brd ff:ff:ff:ff:ff:ff
    altname enamlnxbf17i0
3: tmfifo_net0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:1a:ca:ff:ff:01 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.2/30 brd 192.168.100.3 scope global noprefixroute tmfifo_net0
       valid_lft forever preferred_lft forever
    inet6 fe80::21a:caff:feff:ff01/64 scope link
       valid_lft forever preferred_lft forever
4: p0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq master ovs-system state DOWN group default qlen 1000
    link/ether 0c:42:a1:a4:89:90 brd ff:ff:ff:ff:ff:ff
    altname enp3s0f0np0
5: p1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 0c:42:a1:a4:89:91 brd ff:ff:ff:ff:ff:ff
    altname enp3s0f1np1
6: pf0hpf: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master ovs-system state UP group default qlen 1000
    link/ether f6:a6:b9:d3:78:99 brd ff:ff:ff:ff:ff:ff
    altname enp3s0f0nc1pf0
    inet6 fe80::f4a6:b9ff:fed3:7899/64 scope link
       valid_lft forever preferred_lft forever
7: pf1hpf: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether d2:86:90:de:e2:6d brd ff:ff:ff:ff:ff:ff
    altname enp3s0f1nc1pf1
    inet6 fe80::d086:90ff:fede:e26d/64 scope link
       valid_lft forever preferred_lft forever
8: en3f0pf0sf0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master ovs-system state UP group default qlen 1000
    link/ether be:c9:5f:88:b2:32 brd ff:ff:ff:ff:ff:ff
    altname enp3s0f0npf0sf0
9: enp3s0f0s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 02:1a:c9:f8:e7:d1 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::1a:c9ff:fef8:e7d1/64 scope link
       valid_lft forever preferred_lft forever
11: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 0e:99:20:5c:fb:6a brd ff:ff:ff:ff:ff:ff
12: ovsbr1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether 0c:42:a1:a4:89:90 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::e42:a1ff:fea4:8990/64 scope link
       valid_lft forever preferred_lft forever

如果進(jìn)入DPU內(nèi)后ip a出現(xiàn)的網(wǎng)卡數(shù)量名稱(形如下方)與上方示例相差交大的話,說明當(dāng)前Bluefield工作在Separated模式(NIC模式)下,請參考”修改Bluefield工作模式“一節(jié)做出修改,將其工作模式修改成DPU模式(SmartNIC模式)。

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: oob_net0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:1a:ca:ff:ff:03 brd ff:ff:ff:ff:ff:ff
    altname enamlnxbf17i0
3: tmfifo_net0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:1a:ca:ff:ff:03 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.2/24 brd 192.168.100.255 scope global tmfifo_net0
       valid_lft forever preferred_lft forever
    inet6 fe80::21a:caff:feff:ff03/64 scope link 
       valid_lft forever preferred_lft forever
4: p0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 0c:42:a1:a4:8a:50 brd ff:ff:ff:ff:ff:ff
    altname enp3s0f0np0
    inet6 fe80::e42:a1ff:fea4:8a50/64 scope link 
       valid_lft forever preferred_lft forever
5: p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 0c:42:a1:a4:8a:51 brd ff:ff:ff:ff:ff:ff
    altname enp3s0f1np1
    inet6 fe80::e42:a1ff:fea4:8a51/64 scope link 
       valid_lft forever preferred_lft forever

更新Bluefield固件

在DPU內(nèi)執(zhí)行下述命令,更新DPU固件。(如果是OEM的DPU卡,可能此環(huán)節(jié)會失敗)

# sudo /opt/mellanox/mlnx-fw-updater/mlnx_fw_updater.pl --force-fw-update

通過下述任意一種方式使更新生效。

1.Host和DPU上執(zhí)行
# sudo mst start

2.DPU上執(zhí)行
# sudo mlxfwreset -d /dev/mst/mt41686_pciconf0 --sync 1 -y reset
如果此步驟失敗,則使用步驟3

3.重啟Host

至此DOCA的安裝過程結(jié)束。

修改Bluefield工作模式

如果出現(xiàn)SSH進(jìn)DPU內(nèi)部發(fā)現(xiàn)沒有 hpf、sf后綴的設(shè)備,也沒有出現(xiàn)ovsbr前綴的網(wǎng)橋,說明該DPU的工作模式不正確。此時(shí)需要根據(jù)本節(jié)內(nèi)容修改Bluefield工作模式。

檢查工作模式

檢查DPU工作模式,如果Current為SEPARATED_HOST,說明DPU工作在NIC模式下,請將其修改為DPU模式。

# sudo mlxconfig -d /dev/mst/mt41686_pciconf0 -e q

Device #1:
----------

Device type:        BlueField2
Name:               MBF2H516A-CENO_Ax
Description:        Bluefield-2 SmartNIC 100GbE Dual-Port QSFP56; PCIe Gen4 x16; Crypto Disabled; 16GB on-board DDR; 1GbE OOB management; FHHL
Device:             /dev/mst/mt41686_pciconf0

Configurations:                                          Default             Current         Next Boot
      Array[0..7]
*       INTERNAL_CPU_MODEL                          EMBEDDED_CPU(1)      SEPARATED_HOST(0)    SEPARATED_HOST(0)

修改工作模式

修改工作模式為DPU模式。

# mlxconfig -d /dev/mst/mt41686_pciconf0 s INTERNAL_CPU_MODEL=1

注意,修改完成后,按官方指南中的重啟操作不生效的話,請?jiān)谛薷耐旯ぷ髂J胶螅褂孟率雒睿缓笤僦貑ⅰ?/p>

# sudo mlxfwreset -d /dev/mst/mt41686_pciconf0 --sync 1 -y reset

HBN部署

HBN的部署與DPU初始化環(huán)節(jié)類似,需要寫入相關(guān)的配置文件及鏡像。

生成Bluefield配置文件

在前述的DPU初始化環(huán)節(jié),bf.cfg文件中寫入下述內(nèi)容。因?yàn)椤瓾BN requires service function chaining (SFC) to be activated on the DPU before running the HBN service container‘.所以必須開啟SFC。

ubuntu_PASSWORD='$1$bNJw9LAD$xD95f3AHMX3ek0s5gWIEU.'
ENABLE_SFC_HBN=yes
NUM_VFs_PHYS_PORT0=4 # <num VFs supported by HBN on Physical Port 0> (valid range: 0-127) Default 14
NUM_VFs_PHYS_PORT1=4 # <num VFs supported by HBN on Physical Port 1> (valid range: 0-127) Default 0

寫入鏡像及配置文件

# sudo bfb-install --rshim rshim0 --bfb DOCA_2.5.0_BSP_4.5.0_Ubuntu_22.04-1.23-10.prod.bfb --config bf.cfg

寫入過程與DPU初始化過程類似。等寫入成功后ssh進(jìn)入Bluefield。

配置互聯(lián)網(wǎng)連接

后續(xù)步驟需DPU能連接互聯(lián)網(wǎng)下載資源。注意調(diào)整DPU上的默認(rèn)路由設(shè)置、DNS設(shè)置。如果DPU內(nèi)OOB接口無法連接外網(wǎng)網(wǎng)絡(luò),可以通過tmfifo_net0接口以及host上設(shè)置NAT的形式,實(shí)現(xiàn)DPU連接互聯(lián)網(wǎng)。
期間注意systemctl stop systemd-resolved,否則DNS配置文件會不停被覆蓋為空。

DPU內(nèi)下載NGC資源

# wget --content-disposition https://api.ngc.nvidia.com/v2/resources/nvidia/doca/doca_container_configs/versions/2.5.0v1/zip -O doca_container_configs_2.5.0v1.zip
# unzip -o doca_container_configs_2.5.0v1.zip -d doca_container_configs_2.5.0v1

運(yùn)行HBN預(yù)備腳本

進(jìn)入解壓后的下述路徑,運(yùn)行 hbn-dpu-setup.sh腳本。該腳本會自動(dòng)設(shè)置Bluefiled進(jìn)入embedded模式、移除無用的OVS配置、開啟ip forward、設(shè)置大頁內(nèi)存。運(yùn)行該腳本后,根據(jù)最終提示確定是否需要重啟。

# cd doca_container_configs_2.5.0v1/scripts/doca_hbn/2.0.0/
# chmod +x hbn-dpu-setup.sh
# ./hbn-dpu-setup.sh
Created symlink /etc/systemd/system/multi-user.target.wants/rc-bf2-local.service → /lib/systemd/system/rc-bf2-local.service.
HBN setup done for SFC ECMP configuration
Please reboot DPU to setup SFC ECMP Settings

# reboot

添加網(wǎng)絡(luò)配置文件

/etc/network/interfaces
/etc/frr/frr.conf
/etc/frr/daemons

下載hbn容器yaml文件

下載的doca_hbn.yaml與/doca_container_configs_2.5.0v1/configs/2.5.0/doca_hbn.yaml一致。可以直接使用壓縮包中自帶的yaml。

# wget --content-disposition https://api.ngc.nvidia.com/v2/resources/nvidia/doca/doca_container_configs/versions/2.5.0v1/files/configs/2.5.0/doca_hbn.yaml

啟動(dòng)HBN容器

將doca_hbn.yaml拷貝至/etc/kubelet.d/路徑下,可實(shí)現(xiàn)HBN容器的啟動(dòng)。

# ls /etc/kubelet.d/
doca_telemetry_standalone.yaml

# cp doca_hbn.yaml /etc/kubelet.d/

# ls /etc/kubelet.d/
doca_hbn.yaml  doca_telemetry_standalone.yaml

# crictl pods

POD ID              CREATED             STATE               NAME                         NAMESPACE           ATTEMPT             RUNTIME
0d16f3aa0bcd5       2 seconds ago       Ready               doca-hbn-service-localhost   default             0                   (default)

# crictl ps

CONTAINER           IMAGE               CREATED             STATE               NAME                ATTEMPT             POD ID              POD
fa41ae266a098       1e47671bf21db       12 seconds ago      Running             doca-hbn            0                   0d16f3aa0bcd5       doca-hbn-service-localhost

實(shí)際測試中會出現(xiàn)yaml文件復(fù)制進(jìn)/etc/kubelet.d/路徑下后,crictl ps 無法查看到container在運(yùn)行中,此時(shí)可以先將相關(guān)image pull下后,再重復(fù)上述啟動(dòng)容器的過程。

# docker pull nvcr.io/nvidia/doca/doca_hbn:2.0.0-doca2.5.0

# crictl images
IMAGE                              TAG                 IMAGE ID            SIZE
docker.io/library/doca_telemetry   1.15.5-doca2.5.0    095a5833a3f80       387MB
k8s.gcr.io/pause                   3.2                 2a060e2e7101d       487kB
nvcr.io/nvidia/doca/doca_hbn       2.0.0-doca2.5.0     1e47671bf21db       286MB

至此HBN的安裝已完成。

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

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