購物�

解決方案

解決方案

您現(xiàn)在的位置�首頁 > 解決方案 > 行業(yè)應用 > 詳細�(nèi)�
基于兆芯平臺的OpenStack云系�(tǒng)�(diào)�(yōu)指南
�(fā)布時間:2024-07-22   點擊次數(shù)�254�

  為讓使用兆芯平臺服務器的用戶能夠更快捷的構建IaaS系統(tǒng),充分發(fā)揮兆芯平臺的性能,特編寫本指�,供用戶參考。本指南并不依賴特定�(chǎn)品型�,重在指導用戶在兆芯平臺服務器上的調(diào)試方�,并且會隨著評估測試的深入和成熟度增加逐步完善�

 

  一、系�(tǒng)介紹

 

1.硬件�(huán)境:

測試用IaaS系統(tǒng)�(guī)模為46個節(jié)�,均使用兆芯平臺雙路服務器構�。其中OpenStack節(jié)�40�,Ceph分布式存儲系�(tǒng)節(jié)�6�,詳見下��

 

節(jié)點類�

節(jié)點配�

�(shù)�

管理節(jié)�

128G DDR4�(nèi)�+120G SSD+千兆�(wǎng)絡x2

3

�(wǎng)絡節(jié)�

128G DDR4�(nèi)�+120G SSD+千兆�(wǎng)絡x3

1

塊存儲節(jié)�

128G DDR4�(nèi)�+120G SSD+千兆�(wǎng)絡x2

1

對象存儲節(jié)�

128G DDR4�(nèi)�+120G SSD+4T HDDx3+千兆�(wǎng)絡x2

1

計算節(jié)�

128G DDR4�(nèi)�+120G SSD+千兆�(wǎng)絡x2

33

�(jiān)控節(jié)�

128G DDR4�(nèi)�+120G SSD+千兆�(wǎng)絡x2

1

Ceph Mon節(jié)�

128G DDR4�(nèi)�+120G SSD+萬兆�(wǎng)絡x2

3

Ceph OSD節(jié)�

128G DDR4�(nèi)�+250G SSD+500G SSDx3+2T HDDx12+萬兆�(wǎng)絡x4

3

Rally Server

Dell E3-1220v3服務�

1

 

2.軟件�(huán)境:

軟件

版本

備注

Host OS

CentOS7.6

安裝ZX Patch v3.0.9.4

Python

v2.7.5

 

Docker

v19.03.8

 

OpenStack

Sterin

基于容器部署

Mariadb

v10.3.10

多主Golare Cluster

SQLAlchemy

v0.12.0

python module

RabbitMQ

v3.8.14

搭配Erlang v22.3.4.21

Haproxy

v1.5.18

 

KeepAlived

v1.3.5

 

Ceph

v14.2.19

 

Rally

v2.0

并發(fā)測試工具

CosBench

v0.4.2

對象存儲性能測試工具

TestPerf

v2.16.0

消息隊列性能測試工具

 

3.存儲方案

各OpenStack節(jié)點的本地磁盤只做系統(tǒng)使用。提供給用戶的存儲資源統(tǒng)一使用Ceph作為后端。即nova、glance、cinder-volume和cinder-backup以及manila全部使用Ceph做后端存�?;谡仔酒脚_的Ceph集群部署和調(diào)�(yōu)方法請參見官�(wǎng)已發(fā)布的《基于兆芯平臺部署Ceph分布式存儲系�(tǒng)的最佳實踐��

 

部署了Swift對象存儲服務,使用本地磁�,但沒有配置給其他組件使�。其性能也不包含本文討論范圍之內(nèi)�

 

4.組網(wǎng)方案

根據(jù)兆芯平臺服務器板載網(wǎng)卡配置情�、計劃業(yè)務規(guī)模和�(xiàn)有網(wǎng)絡環(huán)境等條件,規(guī)劃集群網(wǎng)絡如下圖所�。將邏輯上的五類�(wǎng)絡收縮成三個物理網(wǎng)絡實施部�,即管理和Tunnel�(wǎng)絡公用一個物理網(wǎng)�、部署和存儲�(wǎng)絡公用一個物理網(wǎng)絡以及外�(wǎng)�

 

- 部署�(wǎng)絡:用于PXE boot及安裝軟件時訪問本地軟件源鏡像;

- 管理�(wǎng)絡:用于各節(jié)點之間通過API訪問以及SSH訪問�

- Tunnel�(wǎng)絡:用于各計算節(jié)上虛擬機互通以及和�(wǎng)絡節(jié)點的連接,主要承載業(yè)務的東西流量�

- 存儲�(wǎng)絡:用于訪問�(tǒng)一存儲后端�

 

基于兆芯平臺的OpenStack云系統(tǒng)調(diào)優(yōu)指南

                                                    �1 �(wǎng)絡拓�

 

  �、調(diào)�(yōu)策略和手�

 

1.性能指標

由于本文主要涉及IaaS平臺性能,并不包含虛擬主機的性能,因此測試和�(diào)�(yōu)工作主要在針對OpenStack關鍵組件的性能測試。我們關注的性能指標有:單個請求的完成時間、批量請求的95%完成時間和批量請求的尾端延遲�

 

2.測試方法

獲得�(yōu)化參�(shù)的流程主要是測試、分�、調(diào)�(yōu)、再測試�

 

- 測試工具

對于OpenStack組件我們使用Rally來進行批量測試,可以使用Rally中包含的測試用例也可以根�(jù)需要自定義測試用例。Rally的測試報告中會有詳細的耗時�(tǒng)�。本測試批量請求的測試規(guī)模是200并發(fā),被測計算節(jié)點十個,使用的Guest OS是Cirros�

 

對于單個請求的測試還可以使用OSprofiler。Openstack中的請求多數(shù)都需要經(jīng)過多個組件處理才可以完成,該工具主要用途是�(xié)助分析請求的處理過程,在并發(fā)測試前找出可能的耗時�,從而提前優(yōu)��

 

對于RabbitMQ我們采用了TestPerf工具,并設計了幾種典型用例來進行性能測試。重點關注消息隊列的吞吐量和消息投遞的延遲時��

 

- 分析方法

主要從測試結果和日志入手,優(yōu)先解決日志中的告警和報錯事件,例如瞬時高并發(fā)請求導致的服務或�(shù)�(jù)庫連接超時、數(shù)�(jù)庫查詢失�、資源不足等問題�

 

其次是基于對源代碼的理解通過添加時間戳獲取測試中的業(yè)務流或數(shù)�(jù)流關鍵節(jié)點的耗時�(shù)�(jù),再逐個分析高耗時點的耗時原因�

 

還有一種常用方法是在標準平臺上做對標測�。在問題收斂到一定程度后仍無法解釋性能問題的原因時或者性能問題的原因可能是和硬件架構或體系結構有關�,使用該方法來驗��

 

- �(yōu)化手�

對于OpenStack控制層面的優(yōu)化方向主要有三個:提高并發(fā)成功率、縮短平均完成時間和降低尾部延遲�

 

使用OpenStack默認配置做并�(fā)測試會發(fā)�(xiàn),根�(jù)具體的被測功能不同,200并發(fā)的成功率差別很大,通常被測功能涉及組件越多且并�(fā)�(shù)量越大成功率越低。提高成功率的方法主要靠提升硬件性能和調(diào)整各組件的配置參�(shù)。在兆芯平臺上,硬件性能的提升除了提高關鍵硬件(�(nèi)存和�(wǎng)卡)的性能外更重要的有兩點:一是服務器系統(tǒng)要打上兆芯BSP Patch;二是系�(tǒng)部署方案開發(fā)階段就要根據(jù)兆芯平臺的NUMA 拓撲結構來考慮合理的親和設�,盡量避免產(chǎn)生跨NUMA訪問,若無法避免跨NUMA訪問,則盡量使用相鄰的node,避免跨Socket訪問。而在組件配置上則需要根�(jù)對請求的處理路徑的跟蹤,找到耗時較長的功�。由于隨并發(fā)量增加經(jīng)常會導致組件處理的Retry和Timeout,這些會進一步導致產(chǎn)生請求失�,在無法提升組件處理效率時應適當增加Retry次數(shù)或Timeout時間來避免請求直接失��

 

為縮短平均完成時�,除了前面已提到增加硬件平臺性能�,就要清楚的找到各種delay請求處理的具體階段。該情況下可使用各種trace手段來梳理控制流和數(shù)�(jù)�,通過分析日志等方法統(tǒng)計各處理階段的耗時。找到關鍵耗時功能�,可�(diào)�(yōu)的手段有�

 

1、修改組件配�,增加處理線程數(shù),充分利用多核性能�

2、組件性能依賴操作系統(tǒng)配置�,考慮�(diào)整系�(tǒng)配置來優(yōu)�,相關配置優(yōu)化方法請參考對應操作系�(tǒng)提供的調(diào)�(yōu)文檔以及兆芯官方提供的其他服務器�(chǎn)品相關調(diào)�(yōu)文檔�

3、組件對同一功能�(jīng)??梢蕴峁┒喾N方式,修改配�,使用更高效的方式;

4、從社區(qū)查找對請求處理性能有提高的Patch,有些處理效率低的原因是實現(xiàn)方式本身就效率低,通過Patch可能有效提高處理能力。如果沒有可用Patch,只能自行開�(fā)�

5、根�(jù)Python語言特性進行�(yōu)�,避免線程阻塞;

6、優(yōu)化組件部署方案,根據(jù)并發(fā)壓力適當增加組件�(shù)量或節(jié)點數(shù)�,也可通過組件遷移均衡各節(jié)點的負載壓力�

7、更新服務器OS �(nèi)核功能Patch,提供高�(nèi)核處理能��

8、對于通用軟件,如消息隊列,數(shù)�(jù)庫和負載均衡�,還可以選擇升級版本或選用性能更好的同類軟件來實現(xiàn)性能的提��

 

本文后續(xù)章節(jié)中介紹的推薦參數(shù)均根�(jù)測試成績得出�

 

請注�,測試用例不同對各參�(shù)的值影響很大,比如測試200并發(fā)�(chuàng)建虛擬機時使用的虛擬機鏡像從Cirros改為Ubuntu,那么很可能很多地方的超時時間和Retry次數(shù)都需要增加才能保證成功率100%。因�,本文中推薦值不適用于生�(chǎn)�(huán)�,僅用作�(diào)�(yōu)參考�

 

  �、OpenStack關鍵組件配置

 

1. �(shù)�(jù)�

OpenStack系統(tǒng)中數(shù)�(jù)庫是十分關鍵的服�。各組件都在�(shù)�(jù)庫服務中有自己的�(shù)�(jù)�,用于保存服�、資源和用戶等相關數(shù)�(jù)。數(shù)�(jù)庫還被用作各種組件間�(xié)同的一種機�。因�,在處理各種請求的過程中或多或少都會涉及到數(shù)�(jù)庫的讀寫操作�

 

在云平臺的性能�(diào)�(yōu)過程中需要重點觀測數(shù)�(jù)庫請求響應時�。對于運行時�(shù)�(jù)庫請求響應時間過長問題通常是比較復雜的,涉及數(shù)�(jù)庫服務器/cluster、代理服務器和客戶端(即組件端),需要一一排查,查找問題源頭并做對應調(diào)�。本節(jié)主要介紹服務器端和客戶端的相關配置參�(shù),代理服務器端參考后�(xù)章節(jié)�

 

1.1 Mariadb

 

測試用系�(tǒng)中以三個Mariadb節(jié)點構建了一個多主模式的Golare Cluster,前端通過haproxy實現(xiàn)主備高可用。數(shù)�(jù)庫的�(diào)�(yōu)方法可以參考《MySQL�(yōu)化手冊�,補充一個在OpenStack云系�(tǒng)中需要特別注意的參數(shù)�

 

- max_allowed_packet

該參�(shù)用于設置MariaDB 服務器端允許接收的最大數(shù)�(jù)包大�。有時候大的插入和更新操作會因max_allowed_packet 參數(shù)設置過小導致失敗�

 

- 推薦配置�

默認�1024,單位Kbyte。在Open Stack的集群中,有超出默認值大小的�,需要適當增加大��

修改mariadb的配置文件galera.cnf

[mysqld]

max_allowed_packet = 64M

重啟mariadb服務生效�

 

1.2 oslo_db

各組件訪問數(shù)�(jù)庫是通過�(diào)用oslo_db來實�(xiàn)�,實際部署中我們配置oslo_db+SQLAlchemy作為�(shù)�(jù)庫訪問的客戶�,因此,�(shù)�(jù)庫客戶端的相關配置參�(shù)和調(diào)�(yōu)手段可以參考SQLAlchemy的官方文�。注�,SQLAlchemy的高版本會帶來性能提升,但不可隨意升級,需要考慮版本兼容�

 

- slave_connection

Stein版oslo_db支持配置slave_connection,并且已�(jīng)有部分組件支持按讀寫分離方式訪問數(shù)�(jù)庫,例如nova,即寫數(shù)�(jù)庫操作使用connection,讀�(shù)�(jù)庫操作使用slave_connection操作。從而改善讀操作的性能�

 

參考配置方法:

1、通過haproxy來為讀寫操作提供不同的�(zhuǎn)�(fā)入口,如寫操作使�3306,轉(zhuǎn)�(fā)模式配置為一主兩�;讀操作使用3307,轉(zhuǎn)�(fā)方式配置為按最小連接�(shù)�

2、為支持讀寫分離的組件在其配置文件的【database】段中增加slave_connection配置�

 

注意:有些組件雖然可以配置slave_connection但其代碼事件中實際上并沒有在讀�(shù)�(jù)庫時�(diào)用slave_connection,需根據(jù)具體版本仔細確認�

 

- 連接�

和數(shù)�(jù)庫建立連接是一個相對耗時的過�,因�,提供了連接池機�,連接池中的連接可以被重復使�,以提高效率。用戶在�(diào)試過程中應關注各組件和數(shù)�(jù)庫之間的連接情況,如組件的數(shù)�(jù)庫請求響應時間和組件日志中數(shù)�(jù)庫連接相關信息�。若�(fā)�(xiàn)�(shù)�(jù)庫請求響應時間過長且�(jīng)排查后懷疑是組件端在連接�(shù)�(jù)庫上耗時過長�,可通過以下參數(shù)嘗試�(yōu)�。在本文所述測試過程中使用了默認參�(shù)設置,用戶需根據(jù)運行時情況進行�(diào)�(yōu)。連接池主要配置參�(shù)如下�

 

    min_pool_size :連接池中已連接的SQL連接�(shù)不得小于該�,默認值是1�

    max_pool_size :連接池中已連接的最大SQL連接�(shù),默認值是5,設�0時無限制�

    max_overflow :最大允許超出最大連接�(shù)的數(shù)量,默認值是50�

    pool_timeout :從連接池里獲取連接時如果無空閑的連接,且連接�(shù)已經(jīng)到達了max_pool_size+max_overflow,那么要獲取連接的進程會等待pool_timeout秒,默認值是30s,如果超過這個時間還沒有得到連接將會拋出異常。如果出�(xiàn)該異�,可以考慮增加連接池的連接�(shù)�

 

2. 消息隊列

 

2.1 Rabbitmq

測試用系�(tǒng)中以三節(jié)點構建了一個RabbitMQ Mirror Queue Cluster,所有節(jié)點均為disk節(jié)��

 

RabbitMQ的主要性能問題是消息投遞的延遲時間,但對于cluster的組織方式,其延遲時間主要消耗在鏡像隊列之間的數(shù)�(jù)一致性保證處理上,而這種處理過程十分復雜,調(diào)�(yōu)難度很大。對于Cluster目前的調(diào)�(yōu)手段有如下幾種:

1、由于Rabbitmq基于erlang運行,而通過對比測試,高低版本性能差異較大,建議盡量使用高版本,如Rabbitmq使用3.8以上版本,erlang版本v22.3及以上(根據(jù)Rabbitmq版本具體選擇��

2、由于Cluster的隊列鏡像數(shù)量越�,每條消息處理時在一致性上的耗時越長,因此可以根�(jù)實際情況減少鏡像隊列�(shù)量�

3、若Rabbitmq是容器化安裝,為避免CPU資源被搶�,可配置docker參數(shù),分配給Rabbitmq更多的CPU時間�

 

推薦的調(diào)�(yōu)參數(shù)如下�

 

- collect_statistics_interval

默認情況下,Rabbitmq Server默認�5s的間隔統(tǒng)計系�(tǒng)信息,周期內(nèi)publish� delivery message等速率信息會以此為周期�(tǒng)��

 

- 推薦配置

增加該值能夠減少Rabbitmq Server 收集大量的狀�(tài)信息而導致CPU利用率增�,參�(shù)單位為ms�

編輯RabbitMQ的配置文件rabbitmq.conf

collect_statistics_interval = 30000

重啟RabbitMQ服務生效�

 

- cpu_share

Docker 允許用戶為每個容器設置一個數(shù)�,代表容器的 CPU share,默認情況下每個容器的 share � 1024。要注意,這� share 是相對的,本身并不能代表任何確定的意�。當主機上有多個容器運行時,每個容器占用的 CPU 時間比例為它� share 在總額中的比�。只有在CPU資源緊張時,設定的資源比例才可以顯現(xiàn)出來,如果CPU資源空閑,cpu_share值低的docker也能獲取到比例外的CPU資源�

 

- 推薦配置

控制節(jié)點上部署openstack 各組件的api server以及rabbitmq server,當對rabbitmq做并�(fā)測試�,可以適當提高節(jié)點上rabbitmq docker的CPU share讓其獲得更多的CPU資源。如果條件滿足的情況�,Rabbitmq Cluster 應該單獨部署在服務器集群�,不和其他服務搶占CPU資源。單獨部署的Rabbitmq Cluster有更高的并發(fā)能力�

 

配置方法�

docker update --cpu-shares 10240 rabbitmq-server

 

- ha-mode

Rabbitmq Cluster鏡像隊列可以配置鏡像隊列在多節(jié)點備份,每個隊列包含一個master節(jié)點和多個slave節(jié)�。消費者消費的操作�(xiàn)在master節(jié)點上完成,之后再slave上進行相同的操�。生�(chǎn)者發(fā)布的消息會同步到所有的節(jié)�。其他的操作通過master中轉(zhuǎn),master將操作作用于slave。鏡像隊列的配置策略�

ha-mode

ha-params

說明

all

 

集群中每個節(jié)點都有鏡像隊�

exactly

count

指定集群中鏡像隊列的個數(shù)

nodes

node names

在指定的節(jié)點列表中配置鏡像隊列

默認的ha-mode是all,三節(jié)點的集群鏡像隊列�3節(jié)點備份。定義策略的指令�

    rabbimqctl set_policy –p vhost

    pattern:正則匹�,定義的policy會根�(jù)正則表達式應用到相應的交換機或者隊列上�

    definition:配置策略的參數(shù)�

 

- 推薦配置

rabbitmqctl set_policy -p / ha-exactly '^' '{'ha-mode':'exactly', 'ha-params':2}'

集群兩隊列備份比三隊列備份應對高并發(fā)的能力更�,前者支持的并發(fā)�(shù)是后者的1.75倍�

 

- CPU綁定

RabbitMQ 運行在erlang 虛擬機中。本文環(huán)境之中使用的erlang版本支持SMP,采用多�(diào)度器多隊列的機制,即啟動erlang虛擬機時,默認會根據(jù)系統(tǒng)邏輯CPU核數(shù)啟動相同�(shù)量的�(diào)度器(可通過啟動參數(shù)+S限制�,每個調(diào)度器都會從各自的運行隊列中獲取運行進程。但由于OS的線程調(diào)度機�,erlang�(diào)度器線程會在各核之間遷移,這會導致Cache Miss增加,影響性能??梢酝ㄟ^參數(shù)+sbt 來設置調(diào)度器和邏輯核綁定。Erlang支持多種綁定策略,詳見Erlang說明文檔�

 

- 推薦配置

默認配置為db,按numa node輪流綁定,盡量使用到所有node。但由于�(diào)度器多任務隊列之間存在balance機制,任務會在隊列間遷移,因�,為了更好的利用cache,在本文測試�(huán)境下上推薦將+stb 配置為nnts,即�(diào)度器線程按numa node順序進行綁定�

 

編輯RabbitMQ的配置文件rabbitmq-env.conf

RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS='+sbt nnts'

重啟RabbitMQ 服務生效�

 

用戶還可根據(jù)實際�(huán)境采取其他Erlang虛擬機調(diào)�(yōu)方法配合使用(如啟用Hipe等),但具體Erlang虛擬機的參數(shù)介紹和調(diào)�(yōu)手段不在本文討論范圍�

 

- 心跳保持

Hearbeat用來檢測通信的對端是否保活。基本原理是檢測對應的socket鏈接上數(shù)�(jù)的收�(fā)是否正常,如果有一段時間沒有收�(fā)�(shù)�(jù),則�?qū)Χ税l(fā)送一個心跳檢測包,如果一段時間內(nèi)沒有回應則認為心跳超時對端可能異常crash。在負載重時組件可能無法及時處理heartbeat消息而導致Rabbitmq Server沒有在超時時間內(nèi)收到心跳檢測應答。Rabbitmq Server因組件超時未應答而關閉連接導致錯誤。適當增加組件和Rabbitmq Server的心跳超時時間以避免該錯�。參考Cinder章節(jié)中相關介紹�

 

編輯RabbitMQ的配置文件rabbitmq.conf

heartbeat = 180

重啟RabbitMQ服務生效�

 

2.2 oslo_messaging

 

各功能組件和Rabbitmq的連接都是�(diào)用oslo_messaging來實�(xiàn)的,該庫中提供的如下幾個參�(shù)可用于優(yōu)化高負載時RPC處理性能�

 

    rpc_conn_pool_size :RPC連接池的大小,默認值是30�

    executor_thread_pool_size :執(zhí)行RPC處理的線程或�(xié)程數(shù)�,默認值是64�

    rpc_response_timeout :RPC�(diào)用響應超時時�,默認值是60s�

 

我們的測試中前兩個參�(shù)使用了默認�,rpc_response_timeout根據(jù)各組件的實際處理能力做了適當增加�

 

3. Nova

 

3.1 nova-api

 

- Workers

nova-api是一個WSGI Server,亦可叫api server,其負責接收外部�(fā)來的REST請求。API Server啟動時會根據(jù)配置文件建立一定數(shù)量的worker線程來接收請�,如果線程數(shù)量不足以滿足并發(fā)量,就會出現(xiàn)排隊,導致請求處理時間增�。因�,管理員可以根據(jù)實際的業(yè)務量來設置worker�(shù)量。對于獨占一個節(jié)點的api server,workers通常可以設置到等同于CPU核數(shù),但在多個api server同部署于一個節(jié)點時(如在控制節(jié)點上�,物理CPU資源有限,就需要根�(jù)服務器處理能力和各api server的負載情況調(diào)整各自的workers�(shù)量�

 

對于容器方式部署的api server,還可以考慮配置容器使用的CPU和內(nèi)存資源的numa親和,盡量做到各容器的NUMA親和分開,從而減少CPU資源搶占以及更好的利用cache資源。該方法對其他以容器方式部署的服務也同樣適用�

 

在nova-api的配置文件中有幾個配置項,如:osapi_compute_workers和metadata_workers,可以根�(jù)節(jié)點服務器能力和負載情況進行�(diào)整�

 

其他組件,如glance等都有自己的api server,與nova-api類似,可以通過增加workers�(shù)量來改善請求處理性能�

 

- Patch:熱遷移性能

Nova Compute在執(zhí)行l(wèi)ive-migrate()�,子線程�(zhí)行_live_migration_operation()函數(shù)和主線程�(zhí)行_live_migration_monitor()函數(shù)都會訪問Instance Fields。如果此前未曾訪問過Instance.fields,則可能同時�(diào)用nova/objects/instance.py:class Instance. obj_load_attr()函數(shù),utils.temporary_mutation()函數(shù)的重入會導致�(zhí)行后Context.read_deleted賦值為“yes”。后�(xù)在_update_usage_from_instances()時會�(tǒng)計不必要�(tǒng)計的已經(jīng)刪除的instances,增加耗時� Stein版本的OpenStack存在上述漏洞,后�(xù)的版本由于其他操作提前獲取過Intance.fields,從而nova-compute不需要在live-migrate時調(diào)用obj_load_attr()。Bug提交信息見鏈接:https://bugs.launchpad.net/nova/+bug/1941819。可以通過補丁https://github.com/openstack/nova/commit/84db8b3f3d202a234221ed265ec00a7cf32999c9 在Nova API中提前獲取Instance.fileds以避免該Bug�

 

補丁詳情參見附件A1.1

 

3.2  Nova-scheduler & nova-conductor

 

這兩個服務同樣也有workers配置參數(shù)來控制處理線程的�(shù)�,可以根�(jù)實際�(yè)務量來調(diào)�,我們的測試中設置為默認值即可滿�。Nova-conductor的workers默認值是CPU核數(shù)。Nova-scheduler的默認值是當使用filter-scheduler時是CPU核數(shù),使用其他Scheduler時默認值是1�

 

3.3 nova-computer

 

- vcpu_pin_set

限定Guest可以使用compute node上的pCPUs的范圍,給Host適當留下一些CPU以保證正常運�。解決因虛擬機高負載情況下爭搶CPU資源導致Host性能不足的問題�

 

- 推薦配置

在每個numa node上都預留一個物理CPU核供Host使用。以兩numa nodes 平臺為例,可選擇預留cpu0和cpu15供Host使用,配置方法如下:

編輯nova-compute的配置文件nova.conf

vcpu_pin_set = 1-14

重啟nova_compute服務生效�

 

- reserved_host_memory_mb

該參�(shù)用于在計算節(jié)點上預留�(nèi)存給Host系統(tǒng)使用,避免虛擬主機占用掉過多�(nèi)�,導致Host系統(tǒng)上的任務無法正常運行�

 

- 推薦配置

設置值須根據(jù)實際�(nèi)存總�、Host系統(tǒng)中運行的tasks以及預期虛擬機會占用的最大內(nèi)存量來決�,建議至少預�1024MB供系�(tǒng)使用�

編輯nova-compute的配置文件nova.conf

reserved_host_memory_mb=4096  #單位MB

重啟nova_compute服務生效�

 

- cpu_allocation_ratio

配置vCPU的可超配比例�

 

- 推薦配置

根據(jù)ZHAOXIN CPU的性能,桌面云系統(tǒng)�,單個pCPU可以虛擬2個vCPU�

編輯nova-compute的配置文件nova.conf

[DEFAULT]

cpu_allocation_ratio = 2

重啟nova_compute服務生效�

 

- block_device_allocate_retries

�(chuàng)建有block device的虛擬機時,需要從blank、image或者snaphot�(chuàng)建volume。在volume被attach到虛擬機之前,其狀�(tài)必須�“available”。block_device_allocate_retries指定nova檢查volume狀�(tài)是否“available”的次�(shù)。相關參�(shù)有block_device_allocate_retries_interval,指定檢查狀�(tài)的查詢間�,默認�3,單位s�

 

- 推薦配置

默認值是60次。當cinder負載較重��60次查詢之后可能volume的狀�(tài)不是“available”,適當增加查詢次�(shù),避免虛擬機�(chuàng)建失��

 

編輯nova-compute的配置文件nova.conf

[DEFAULT]

block_device_allocate_retries = 150

重啟nova_compute服務生效�

 

- vif_plugging_timeout

nova-compute等待Neutron VIF plugging event message arrival的超時時間�

 

- 推薦配置

默認�300,單位s。當�(chuàng)建虛擬機并發(fā)�(shù)高時,可能無法在300s�(nèi)收到該event。兆芯桌面云系統(tǒng)測試200并發(fā)�(chuàng)建虛擬機�,耗時�360s,該值可以根�(jù)系統(tǒng)的最大并�(fā)�(shù)適當�(diào)��

 

編輯nova-compute的配置文件nova.conf

[DEFAULT]

vif_plugging_timeout = 500

重啟nova_compute服務生效�

 

- Patch:熱遷移性能

該補丁完成了兩個功能:去掉遷移過程中不必要的get_volume_connect() 函數(shù)�(diào)�,以及減少不要的Neutron訪問。該補丁能夠讓熱遷移更高�,熱遷移的無服務時間更短。補丁地址�

https://review.opendev.org/c/openstack/nova/+/795027

https://opendev.org/openstack/nova/commit/6488a5dfb293831a448596e2084f484dd0bfa916

補丁詳情參見附件A1.2

 

4. Cinder

 

4.1 cinder-api

 

- Workers

參見nova-api。不同的是Stein版中cinder-api采用httpd部署,因�,其除了可以�(diào)�(yōu)cinder支持的各種workers(如osapi_volume_workers�,還可以�(diào)�(yōu)cinder-wsgi.conf中的processes和threads。類似的組件還有keystone和horizon��

 

編輯cinder-wsgi.conf

WSGIDaemonProcess cinder-api processes=12 threads=3 user=cinder group=cinder display-name=%{GROUP} python-path=/var/lib/kolla/venv/lib/python2.7/site-packages

……

 

重啟cinder-api服務生效�

 

- rpc_response_timeout

 

Cinder-api等待RPC消息返回的超時時�

 

- 推薦配置

默認� 60,單位s。在高并�(fā)的attach_volume�,cinder-volume響應cinder-api的時間較長。如果報告rpc timeout的錯�,可以適當調(diào)大該��

 

編輯cinder-volume的配置文件cinder.conf

[DEFAULT]

rpc_response_timeout = 600

重啟cinder-api服務生效�

 

4.2 cinder-volume

 

- 心跳保持

和Rabbitmq之間

參考RabbitMQ章中�“心跳保持”小節(jié)�

 

Cinder的heartbeat_timeout_threshold用來設置心跳超時時間,會�1/2心跳超時時間為間隔發(fā)送心跳檢測信��

 

- 推薦配置

cinder-volume heartbeat_timeout_threshold默認值為60,單位為s,在負載重時可能無法在及時處理heartbeat消息而導致Rabbitmq Server沒有在超時時間內(nèi)收到心跳檢測應答。Rabbitmq Server因Cinder-volume超時未應答而關閉連接,進而導致一系列錯誤。適當增加Cinder-volume和Rabbitmq Server的心跳超時時間以避免該錯�,不建議禁用心跳檢測機制(heartbeat=0)�

 

編輯cinder-volume的配置文件cinder.conf

[oslo_messaging_rabbit]

heartbeat_timeout_threshold = 180

重啟cinder-volume服務生效�

 

服務之間

OpenStack是一個分布式系統(tǒng),由運行在不同主機上的各個服務組成來共同完成各項工作。每個服務都會定時向�(shù)�(jù)庫中更新自己的update time,服務間可通過查詢對方的update time是否超過設置的service_down_time來判斷服務是否在�。這也可以看作是一種心跳機��

 

在高負載�,數(shù)�(jù)庫訪問可能延遲增�,同時運行上報的周期任務會因CPU資源被占用導致延遲上報,這些都有可能引發(fā)誤報service down�

 

- 推薦配置

report_interval:狀�(tài)報告間隔,即心跳間隔,默�10,單位s�

service_down_time:距離上一次心跳的最長時�,默�60,單位s。超過這個時間沒有心跳則認為服務Down�

report-interval一定要小于service_down_time。適當增加service_down_time,避免cinder-volume的周期性任務占用cpu導致沒有及時報告狀�(tài)而被誤認為Down�

編輯cinder-volume的配置文件cinder.conf

service_down_time = 120

重啟cinder_volume服務生效�

 

- rbd_exclusive_cinder_pool

 

OpenStack Ocata引入了參�(shù)rbd_exclusive_cinder_pool,如果RBD pool是Cinder獨占,則可以設置rbd_exclusive_cinder_pool=true。Cinder用查詢數(shù)�(jù)庫的方式代替輪詢后端所有volumes的方式獲取provisioned size,這會明顯減少查詢時間,同時減輕Ceph 集群和Cinder-volume 服務的負載�

 

- 推薦配置

編輯cinder-volume的配置文件cinder.conf

[DEFAULT]

Enable_backends =rbd-1

[rbd-1]

rbd_exclusive_cinder_pool = true

重啟cinder-volume服務生效�

 

- image_volume_cache_enabled

 

從Liberty版本開始,Cinder能夠使用image volume cahe,能夠提高從image�(chuàng)建volume的性能。從image第一次創(chuàng)建volume的同時會�(chuàng)建屬于快存儲Internal Tenant的cached image-volume 。后�(xù)從該image�(chuàng)建volume時從cached image-volume 克隆,不需要將image 下載到本地再傳入volume�

 

- 推薦配置

cinder_internal_tenant_project_id:指定OpenStack的項�“service”的ID

cinder_internal_tenant_user_id:指定OpenStack的用�“cinder”的ID

image_volume_cache_max_size_gb:指定cached image-volume的最大size,設置為0,即不對其限��

image_volume_cache_max_count:指定cached image-volume的最大數(shù)量,設置�0,即不對其限��

編輯cinder-volume的配置文件cinder.conf

[DEFAULT]

cinder_internal_tenant_project_id = c4076a45bcac411bacf20eb4fecb50e0 

cinder_internal_tenant_user_id = 4fe8e33010fd4263be493c1c9681bec8 

[backend_defaults]

image_volume_cache_enabled=True

image_volume_cache_max_size_gb = 0

image_volume_cache_max_count = 0

重啟cinder-volume服務生效�

 

5. Neutron

 

5.1 Neutron Service

 

neutron-service是neutron組件的api server,其配置�(yōu)化參考nova-api中的介紹,可�(diào)整參�(shù)有api_workers和metadata_workers�

 

- rpc_workers

在neutron的設計架構上,核心服務和各plugin的處理是先主進程fork子進程,再在子進程中創(chuàng)建協(xié)程來運行處理程序,從而實�(xiàn)可利用到多核的并�(fā)處理。rpc_workers是用來控制為RPC處理�(chuàng)建的進程�(shù)�,默認值是api_workers的一半。由于我們的系統(tǒng)是基于容器部署,因此該值使用默認值即��

 

5.2 Neutron DHCP Agent

 

這里的兩個補丁主要影響網(wǎng)絡節(jié)點上的neutron服務�

 

- 改善Network Port管理效率

 

Patch1

Neutron DHCP agent中用Pyroute2 �“ip route”命令替換oslo.rootwrap庫中該linux命令。該補丁讓Neutron DHCP agent�(chuàng)建和刪除port時更加高�。補丁地址�

https://opendev.org/openstack/neutron/commit/06997136097152ea67611ec56b345e5867184df5

補丁詳情參見附件A1.3�

 

Patch2

Neutron DHCP agent中用oslo.privsep庫的“dhcp_release”命令替換oslo.rootwrap庫該linux 命令。該補丁讓Neutron DHCP agent�(chuàng)建和刪除port時更加高效。補丁地址�

https://opendev.org/openstack/neutron/commit/e332054d63cfc6a2f8f65b1b9de192ae0df9ebb3

https://opendev.org/openstack/neutron/commit/2864957ca53a346418f89cc945bba5cdcf204799

補丁詳情參見附件A1.4�

 

5.3 Neuton OpenvSwitch Agent

 

- 改善Network Port處理效率

 

polling_interval

Neutron L2 Agent如果配置的是openvswitch agent,neutron-openvswitch-agent啟動后會運行一個RPC循環(huán)任務來處理端口添�、刪�、修改。通過配置項polling_interval指定RPC循環(huán)�(zhí)行的間隔�

 

- 推薦配置

默認值是2,單位s。減少該值可以使得端口狀�(tài)更新更快,特別是熱遷移過程中,減少該值可以減少遷移時�。但如果設置�0會導致neutron-openvswitch-agent占用過多的CPU資源�

編輯neutron-openvswitch-agent的配置文件ml2_conf.ini

[agent]

polling_interval = 1

重啟計算節(jié)點的neutron-openvswitch-agent服務生效�

 

Patch

Neutron openvswitch agent中用oslo.privsep庫替換oslo.rootwrap庫的“iptables”�“ipset”命令。該補丁能讓Neutron openvswitch agent處理network port時更加高�。補丁地址�

https://opendev.org/openstack/neutron/commit/6c75316ca0a7ee2f6513bb6bc0797678ef419d24

https://opendev.org/openstack/neutron/commit/5a419cbc84e26b4a3b1d0dbe5166c1ab83cc825b

補丁詳情參見附件A1.5�

 

5.4 熱遷移Down Time時間�(yōu)�

 

openstack stein版本在熱遷移的測試中,虛機遷移到目標主機�,網(wǎng)絡不能及時ping�,存在比較明顯的延時�(xiàn)象。原因是虛機遷移成功后會立刻�(fā)送RARP廣播,而此時虛機網(wǎng)卡對應的port還沒真正up。Bug信息�

https://bugs.launchpad.net/neutron/+bug/1901707

https://bugs.launchpad.net/neutron/+bug/1815989

補丁詳情參見附錄B1.1--B1.7, 涉及neutron和nova模塊�

https://review.opendev.org/c/openstack/neutron/+/790702

https://review.opendev.org/c/openstack/nova/+/767368

 

5.5 �(wǎng)絡性能�(yōu)�

 

�(wǎng)絡為了獲得穩(wěn)定的高性能,在部署虛機�,網(wǎng)卡硬中斷和對應虛�,最好限定在位于同一Cluster的CPU�,這樣可以避免不必要的cache miss,進而提升網(wǎng)絡的�(wěn)定性和性能�

 

5.6 VXLAN 性能�(yōu)�

 

主流隧道�(wǎng)絡普遍基于UDP�(xié)議實�(xiàn),例如VXLAN,當UDP校驗和字段為零時,會導致接收端在處理VXLAN報文時不能及時進行GRO(generic receive offload)處理,進而嚴重影響網(wǎng)絡性能。該問題社區(qū)已經(jīng)修正,具體信息可以參見下面鏈接:

https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/commit/?id=89e5c58fc1e2857ccdaae506fb8bc5fed57ee063

打上該補丁后,萬兆網(wǎng)卡情況下,同樣的VXLAN iperf3測試,成績可以提�2倍以��

補丁詳情參見附錄C1.1

 

6. Keystone

 

- 并發(fā)進程�(shù)

WSGIDaemonProcess守護進程的配置參�(shù)。Processes定義了守護進程啟動的進程�(shù)�

 

- 推薦配置

默認值為1。當keystone壓力較大��1個WSGI進程無法處理較大的并�(fā)�(shù),適當增加processes的值,大于CPU cores number的意義不��

編輯keystone的配置文件wsgi-keystone.conf

WSGIDaemonProcess keystone-public processes=12 threads=1 user=keystone group=keystone display-name=%{GROUP} python-path=/var/lib/kolla/venv/lib/python2.7/site-packages

……

 

WSGIDaemonProcess keystone-admin processes=12 threads=1 user=keystone group=keystone display-name=%{GROUP} python-path=/var/lib/kolla/venv/lib/python2.7/site-packages

……

 

重啟keystone服務生效�

 

7. Haproxy

 

- Timeout設置

1、timeout http-request:HTTP請求的最大超時時�

2、timeout queue:當server端請求數(shù)量達到了maxconn,新到的connections會被添加到指定的queue。當requests在queue上等待超過timeout queue�,request被認為不被服務而丟�,返�503 error給client��

3、timeout connect :connection連接上后端服務器的超時時��

4、timeout client :client端發(fā)送數(shù)�(jù)或者應答時,客戶端最大的非活躍時�

5、timeout server:server端最大的非活躍時�

 

- 推薦配置

編輯haproxy的配置文件haproxy.cfg,單位s表示�,單位m表示��

defaults

timeout http-request 100s

timeout queue 4m

timeout connect 100s

timeout client 10m

timeout server 10m�

重啟haproxy服務生效�

 

- 最大連接�(shù)

Haproxy可以配置全局的maxconn定義Haproxy同時最大的連接�(shù),也可以為后端服務配置maxconn定義該服務的最大連接�(shù),可以為前端配置maxconn定義此端口的最大連接�(shù)。系�(tǒng)的ulimit -n的值一定要大于maxconn�

 

- 推薦配置

全局的maxconn默認值為4000,應用過程中在Haproxy的控制臺觀察到全局連接�(shù)不夠,將其增加到40000�

編輯Haproxy的配置文件haproxy.cfg

global

maxconn 40000

重啟haproxy服務生效�

 

- 處理線程�(shù)

設置haproxy的負責均衡并�(fā)進程�(shù),OpenStack Stein的Haproxy 版本�1.5.18。該參數(shù)在haproxy 2.5 版本中已移除,由nbthread參數(shù)指定線程�(shù)量�

 

- 推薦配置

由于Haproxy的負載較�,推薦適當增大該參數(shù)�

編輯Haproxy的配置文件haproxy.cfg

global

nbproc 4

重啟haproxy服務生效�

 

- 權重

Haproxy后端配置參數(shù)weight可以配置server的權重,取值范�0-256,權重越大,分給這個server的請求就越多。weight�0的server將不會被分配任何新的連接。所有server的默認值為1�

 

- 推薦配置

當多個后端的主機壓力不一致時,可以將壓力大的主機上的server的權重適當減少,從而使各主機負載均��

 

�3 控制節(jié)點的小集群為例:測試過程�,controller03上整體cpu使用率較高達95%+,其他兩個控制節(jié)點cpu使用率約�70%,各個控制節(jié)點keystone� cpu使用率均較高。減少controller03上keystone server的權重,從而減少controller03的cpu壓力�

 

編輯Haproxy的配置文件keystone.cfg

listen keystone_external

    mode http

    http-request del-header X-Forwarded-Proto

    option httplog

    option forwardfor

    http-request set-header X-Forwarded-Proto https if { ssl_fc }

    bind haproxy-ip-addr:5000

    maxconn 5000

    server controller01 server-ip-addr:5000 check inter 2000 rise 2 fall 5 maxconn 3000 weight 10

    server controller02 server-ip-addr:5000 check inter 2000 rise 2 fall 5 maxconn 3000 weight 10

    server controller03 server-ip-addr:5000 check inter 2000 rise 2 fall 5 maxconn 3000 weight 9

重啟haproxy服務生效�

~~~~~~~~~~~~~~~~~~

附錄

A1.1

diff -ruN nova-bak/api/openstack/compute/migrate_server.py nova/api/openstack/compute/migrate_server.py

--- nova-bak/api/openstack/compute/migrate_server.py    2021-09-10 11:20:15.774990677 +0800

+++ nova/api/openstack/compute/migrate_server.py 2021-09-10 11:23:22.239098421 +0800

@@ -157,7 +157,9 @@

                               'conductor during pre-live-migration checks '

                               ''%(ex)s'', {'ex': ex})

             else:

-                raise exc.HTTPBadRequest(explanation=ex.format_message())

+               raise exc.HTTPBadRequest(explanation=ex.format_message())

+        except exception.OperationNotSupportedForSEV as e:

+            raise exc.HTTPConflict(explanation=e.format_message())

         except exception.InstanceIsLocked as e:

             raise exc.HTTPConflict(explanation=e.format_message())

         except exception.ComputeHostNotFound as e:

diff -ruN nova-bak/api/openstack/compute/suspend_server.py nova/api/openstack/compute/suspend_server.py

--- nova-bak/api/openstack/compute/suspend_server.py   2021-09-10 11:25:03.847439106 +0800

+++ nova/api/openstack/compute/suspend_server.py 2021-09-10 11:27:09.958950964 +0800

@@ -40,7 +40,8 @@

             self.compute_api.suspend(context, server)

         except exception.InstanceUnknownCell as e:

             raise exc.HTTPNotFound(explanation=e.format_message())

-        except exception.InstanceIsLocked as e:

+        except (exception.OperationNotSupportedForSEV,

+                exception.InstanceIsLocked) as e:

             raise exc.HTTPConflict(explanation=e.format_message())

         except exception.InstanceInvalidState as state_error:

             common.raise_http_conflict_for_instance_invalid_state(state_error,

diff -ruN nova-bak/compute/api.py nova/compute/api.py

--- nova-bak/compute/api.py   2021-09-10 11:31:55.278077457 +0800

+++ nova/compute/api.py 2021-09-10 15:32:28.131175652 +0800

@@ -215,6 +215,23 @@

         return fn(self, context, instance, *args, **kwargs)

     return _wrapped

 

+def reject_sev_instances(operation):

+    '''Decorator.  Raise OperationNotSupportedForSEV if instance has SEV

+    enabled.

+    '''

+

+    def outer(f):

+        @six.wraps(f)

+        def inner(self, context, instance, *args, **kw):

+            if hardware.get_mem_encryption_constraint(instance.flavor,

+                                                      instance.image_meta):

+                raise exception.OperationNotSupportedForSEV(

+                    instance_uuid=instance.uuid,

+                    operation=operation)

+            return f(self, context, instance, *args, **kw)

+        return inner

+    return outer

+

 

 def _diff_dict(orig, new):

     '''Return a dict describing how to change orig to new.  The keys

@@ -690,6 +707,9 @@

         '''

         image_meta = _get_image_meta_obj(image)

 

+        API._validate_flavor_image_mem_encryption(instance_type, image_meta)

+     

+

         # Only validate values of flavor/image so the return results of

         # following 'get' functions are not used.

         hardware.get_number_of_serial_ports(instance_type, image_meta)

@@ -701,6 +721,19 @@

         if validate_pci:

             pci_request.get_pci_requests_from_flavor(instance_type)

 

+    @staticmethod

+    def _validate_flavor_image_mem_encryption(instance_type, image):

+        '''Validate that the flavor and image don't make contradictory

+        requests regarding memory encryption.

+        :param instance_type: Flavor object

+        :param image: an ImageMeta object

+        :raises: nova.exception.FlavorImageConflict

+        '''

+        # This library function will raise the exception for us if

+        # necessary; if not, we can ignore the result returned.

+        hardware.get_mem_encryption_constraint(instance_type, image)

+

+

     def _get_image_defined_bdms(self, instance_type, image_meta,

                                 root_device_name):

         image_properties = image_meta.get('properties', {})

@@ -3915,6 +3948,7 @@

         return self.compute_rpcapi.get_instance_diagnostics(context,

                                                             instance=instance)

 

+    @reject_sev_instances(instance_actions.SUSPEND)

     @check_instance_lock

     @check_instance_cell

     @check_instance_state(vm_state=[vm_states.ACTIVE])

@@ -4699,6 +4733,7 @@

                                                      diff=diff)

         return _metadata

 

+    @reject_sev_instances(instance_actions.SUSPEND)

     @check_instance_lock

     @check_instance_cell

     @check_instance_state(vm_state=[vm_states.ACTIVE, vm_states.PAUSED])

diff -ruN nova-bak/exception.py nova/exception.py

--- nova-bak/exception.py        2021-09-10 11:35:25.491284738 +0800

+++ nova/exception.py     2021-09-10 11:36:09.799787563 +0800

@@ -536,6 +536,10 @@

     msg_fmt = _('Unable to migrate instance (%(instance_id)s) '

                 'to current host (%(host)s).')

 

+class OperationNotSupportedForSEV(NovaException):

+    msg_fmt = _('Operation '%(operation)s' not supported for SEV-enabled '

+                'instance (%(instance_uuid)s).')

+    code = 409

 

 class InvalidHypervisorType(Invalid):

     msg_fmt = _('The supplied hypervisor type of is invalid.')

diff -ruN nova-bak/objects/image_meta.py nova/objects/image_meta.py

--- nova-bak/objects/image_meta.py 2021-09-10 15:16:30.530628464 +0800

+++ nova/objects/image_meta.py      2021-09-10 15:19:26.999151245 +0800

@@ -177,6 +177,9 @@

         super(ImageMetaProps, self).obj_make_compatible(primitive,

                                                         target_version)

         target_version = versionutils.convert_version_to_tuple(target_version)

+       

+        if target_version < (1, 24):

+            primitive.pop('hw_mem_encryption', None)

         if target_version < (1, 21):

             primitive.pop('hw_time_hpet', None)

         if target_version < (1, 20):

@@ -298,6 +301,11 @@

         # is not practical to enumerate them all. So we use a free

         # form string

         'hw_machine_type': fields.StringField(),

+       

+        # boolean indicating that the guest needs to be booted with

+        # encrypted memory

+        'hw_mem_encryption': fields.FlexibleBooleanField(),

+

 

         # One of the magic strings 'small', 'any', 'large'

         # or an explicit page size in KB (eg 4, 2048, ...)

diff -ruN nova-bak/scheduler/utils.py nova/scheduler/utils.py

--- nova-bak/scheduler/utils.py 2021-09-10 15:19:58.172561042 +0800

+++ nova/scheduler/utils.py      2021-09-10 15:35:05.630393147 +0800

@@ -35,7 +35,7 @@

 from nova.objects import instance as obj_instance

 from nova import rpc

 from nova.scheduler.filters import utils as filters_utils

-

+import nova.virt.hardware as hw

 

 LOG = logging.getLogger(__name__)

 

@@ -61,6 +61,27 @@

         # Default to the configured limit but _limit can be

         # set to None to indicate 'no limit'.

         self._limit = CONF.scheduler.max_placement_results

+        image = (request_spec.image if 'image' in request_spec

+                 else objects.ImageMeta(properties=objects.ImageMetaProps()))

+        self._translate_memory_encryption(request_spec.flavor, image)

+

+    def _translate_memory_encryption(self, flavor, image):

+        '''When the hw:mem_encryption extra spec or the hw_mem_encryption

+        image property are requested, translate into a request for

+        resources:MEM_ENCRYPTION_CONTEXT=1 which requires a slot on a

+        host which can support encryption of the guest memory.

+        '''

+        # NOTE(aspiers): In theory this could raise FlavorImageConflict,

+        # but we already check it in the API layer, so that should never

+        # happen.

+        if not hw.get_mem_encryption_constraint(flavor, image):

+            # No memory encryption required, so no further action required.

+            return

+

+        self._add_resource(None, orc.MEM_ENCRYPTION_CONTEXT, 1)

+        LOG.debug('Added %s=1 to requested resources',

+                  orc.MEM_ENCRYPTION_CONTEXT)

+

 

     def __str__(self):

         return ', '.join(sorted(

diff -ruN nova-bak/virt/hardware.py nova/virt/hardware.py

--- nova-bak/virt/hardware.py  2022-02-23 10:45:42.320988102 +0800

+++ nova/virt/hardware.py        2021-09-10 14:05:25.145572630 +0800

@@ -1140,6 +1140,67 @@

 

     return flavor_policy, image_policy

 

+def get_mem_encryption_constraint(flavor, image_meta, machine_type=None):

+    '''Return a boolean indicating whether encryption of guest memory was

+    requested, either via the hw:mem_encryption extra spec or the

+    hw_mem_encryption image property (or both).

+    Also watch out for contradictory requests between the flavor and

+    image regarding memory encryption, and raise an exception where

+    encountered.  These conflicts can arise in two different ways:

+        1) the flavor requests memory encryption but the image

+           explicitly requests *not* to have memory encryption, or

+           vice-versa

+        2) the flavor and/or image request memory encryption, but the

+           image is missing hw_firmware_type=uefi

+        3) the flavor and/or image request memory encryption, but the

+           machine type is set to a value which does not contain 'q35'

+    This can be called from the libvirt driver on the compute node, in

+    which case the driver should pass the result of

+    nova.virt.libvirt.utils.get_machine_type() as the machine_type

+    parameter, or from the API layer, in which case get_machine_type()

+    cannot be called since it relies on being run from the compute

+    node in order to retrieve CONF.libvirt.hw_machine_type.

+    :param instance_type: Flavor object

+    :param image: an ImageMeta object

+    :param machine_type: a string representing the machine type (optional)

+    :raises: nova.exception.FlavorImageConflict

+    :raises: nova.exception.InvalidMachineType

+    :returns: boolean indicating whether encryption of guest memory

+    was requested

+    '''

+

+    flavor_mem_enc_str, image_mem_enc = _get_flavor_image_meta(

+        'mem_encryption', flavor, image_meta)

+

+    flavor_mem_enc = None

+    if flavor_mem_enc_str is not None:

+        flavor_mem_enc = strutils.bool_from_string(flavor_mem_enc_str)

+

+    # Image property is a FlexibleBooleanField, so coercion to a

+    # boolean is handled automatically

+

+    if not flavor_mem_enc and not image_mem_enc:

+        return False

+

+    _check_for_mem_encryption_requirement_conflicts(

+        flavor_mem_enc_str, flavor_mem_enc, image_mem_enc, flavor, image_meta)

+

+    # If we get this far, either the extra spec or image property explicitly

+    # specified a requirement regarding memory encryption, and if both did,

+    # they are asking for the same thing.

+    requesters = []

+    if flavor_mem_enc:

+        requesters.append('hw:mem_encryption extra spec in %s flavor' %

+                          flavor.name)

+    if image_mem_enc:

+        requesters.append('hw_mem_encryption property of image %s' %

+                          image_meta.name)

+

+    _check_mem_encryption_uses_uefi_image(requesters, image_meta)

+    _check_mem_encryption_machine_type(image_meta, machine_type)

+

+    LOG.debug('Memory encryption requested by %s', ' and '.join(requesters))

+    return True

 

 def _get_numa_pagesize_constraint(flavor, image_meta):

     '''Return the requested memory page size

A1.2

diff -ruN nova-bak/compute/manager.py nova/compute/manager.py

--- nova-bak/compute/manager.py  2021-07-07 14:40:15.570807168 +0800

+++ nova/compute/manager.py        2021-10-18 19:02:37.931655551 +0800

@@ -7013,7 +7013,8 @@

                                         migrate_data)

 

         # Detaching volumes.

-        connector = self.driver.get_volume_connector(instance)

+        connector = None

+        #connector = self.driver.get_volume_connector(instance)

         for bdm in source_bdms:

             if bdm.is_volume:

                 # Detaching volumes is a call to an external API that can fail.

@@ -7033,6 +7034,8 @@

                         # remove the volume connection without detaching from

                         # hypervisor because the instance is not running

                         # anymore on the current host

+                        if connector is None:

+                            connector = self.driver.get_volume_connector(instance)

                         self.volume_api.terminate_connection(ctxt,

                                                              bdm.volume_id,

                                                              connector)

@@ -7056,8 +7059,10 @@

 

         # Releasing vlan.

         # (not necessary in current implementation?)

-

-        network_info = self.network_api.get_instance_nw_info(ctxt, instance)

+       

+        #changed by Fiona

+        #network_info = self.network_api.get_instance_nw_info(ctxt, instance)

+        network_info = instance.get_network_info()

 

         self._notify_about_instance_usage(ctxt, instance,

                                           'live_migration._post.start',

A1.3

diff -ruN neutron-bak/agent/l3/router_info.py neutron-iproute/agent/l3/router_info.py

--- neutron-bak/agent/l3/router_info.py    2020-12-14 18:00:23.683687327 +0800

+++ neutron-iproute/agent/l3/router_info.py     2022-02-23 15:18:15.650669589 +0800

@@ -748,8 +748,10 @@

         for ip_version in (lib_constants.IP_VERSION_4,

                            lib_constants.IP_VERSION_6):

             gateway = device.route.get_gateway(ip_version=ip_version)

-            if gateway and gateway.get('gateway'):

-                current_gateways.add(gateway.get('gateway'))

+#            if gateway and gateway.get('gateway'):

+#                current_gateways.add(gateway.get('gateway'))

+            if gateway and gateway.get('via'):

+                current_gateways.add(gateway.get('via'))

         for ip in current_gateways - set(gateway_ips):

             device.route.delete_gateway(ip)

         for ip in gateway_ips:

diff -ruN neutron-bak/agent/linux/ip_lib.py neutron-iproute/agent/linux/ip_lib.py

--- neutron-bak/agent/linux/ip_lib.py 2020-12-14 18:03:47.951878754 +0800

+++ neutron-iproute/agent/linux/ip_lib.py 2022-02-23 15:19:03.981457532 +0800

@@ -48,6 +48,8 @@

                   'main': 254,

                   'local': 255}

 

+IP_RULE_TABLES_NAMES = {v: k for k, v in IP_RULE_TABLES.items()}

+

 # Rule indexes: pyroute2.netlink.rtnl

 # Rule names: https://www.systutorials.com/docs/linux/man/8-ip-rule/

 # NOTE(ralonsoh): 'masquerade' type is printed as 'nat' in 'ip rule' command

@@ -592,14 +594,18 @@

     def _dev_args(self):

         return ['dev', self.name] if self.name else []

 

-    def add_gateway(self, gateway, metric=None, table=None):

-        ip_version = common_utils.get_ip_version(gateway)

-        args = ['replace', 'default', 'via', gateway]

-        if metric:

-            args += ['metric', metric]

-        args += self._dev_args()

-        args += self._table_args(table)

-        self._as_root([ip_version], tuple(args))

+#    def add_gateway(self, gateway, metric=None, table=None):

+#        ip_version = common_utils.get_ip_version(gateway)

+#        args = ['replace', 'default', 'via', gateway]

+#        if metric:

+#            args += ['metric', metric]

+#        args += self._dev_args()

+#        args += self._table_args(table)

+#        self._as_root([ip_version], tuple(args))

+

+    def add_gateway(self, gateway, metric=None, table=None, scope='global'):

+        self.add_route(None, via=gateway, table=table, metric=metric,

+                       scope=scope)

 

     def _run_as_root_detect_device_not_found(self, options, args):

         try:

@@ -618,41 +624,16 @@

         args += self._table_args(table)

         self._run_as_root_detect_device_not_found([ip_version], args)

 

-    def _parse_routes(self, ip_version, output, **kwargs):

-        for line in output.splitlines():

-            parts = line.split()

-

-            # Format of line is: '|default [] ...'

-            route = {k: v for k, v in zip(parts[1::2], parts[2::2])}

-            route['cidr'] = parts[0]

-            # Avoids having to explicitly pass around the IP version

-            if route['cidr'] == 'default':

-                route['cidr'] = constants.IP_ANY[ip_version]

-

-            # ip route drops things like scope and dev from the output if it

-            # was specified as a filter.  This allows us to add them back.

-            if self.name:

-                route['dev'] = self.name

-            if self._table:

-                route['table'] = self._table

-            # Callers add any filters they use as kwargs

-            route.update(kwargs)

-

-            yield route

-

-    def list_routes(self, ip_version, **kwargs):

-        args = ['list']

-        args += self._dev_args()

-        args += self._table_args()

-        for k, v in kwargs.items():

-            args += [k, v]

-

-        output = self._run([ip_version], tuple(args))

-        return [r for r in self._parse_routes(ip_version, output, **kwargs)]

+    def list_routes(self, ip_version, scope=None, via=None, table=None,

+                    **kwargs):

+        table = table or self._table

+        return list_ip_routes(self._parent.namespace, ip_version, scope=scope,

+                              via=via, table=table, device=self.name, **kwargs)

 

     def list_onlink_routes(self, ip_version):

         routes = self.list_routes(ip_version, scope='link')

-        return [r for r in routes if 'src' not in r]

+#        return [r for r in routes if 'src' not in r]

+        return [r for r in routes if not r['source_prefix']]

 

     def add_onlink_route(self, cidr):

         self.add_route(cidr, scope='link')

@@ -660,34 +641,12 @@

     def delete_onlink_route(self, cidr):

         self.delete_route(cidr, scope='link')

 

-    def get_gateway(self, scope=None, filters=None, ip_version=None):

-        options = [ip_version] if ip_version else []

-

-        args = ['list']

-        args += self._dev_args()

-        args += self._table_args()

-        if filters:

-            args += filters

-

-        retval = None

-

-        if scope:

-            args += ['scope', scope]

-

-        route_list_lines = self._run(options, tuple(args)).split('\n')

-        default_route_line = next((x.strip() for x in

-                                   route_list_lines if

-                                   x.strip().startswith('default')), None)

-        if default_route_line:

-            retval = dict()

-            gateway = DEFAULT_GW_PATTERN.search(default_route_line)

-            if gateway:

-                retval.update(gateway=gateway.group(1))

-            metric = METRIC_PATTERN.search(default_route_line)

-            if metric:

-                retval.update(metric=int(metric.group(1)))

-

-        return retval

+    def get_gateway(self, scope=None, table=None,

+                    ip_version=constants.IP_VERSION_4):

+        routes = self.list_routes(ip_version, scope=scope, table=table)

+        for route in routes:

+            if route['via'] and route['cidr'] in constants.IP_ANY.values():

+                return route

 

     def flush(self, ip_version, table=None, **kwargs):

         args = ['flush']

@@ -696,16 +655,11 @@

             args += [k, v]

         self._as_root([ip_version], tuple(args))

 

-    def add_route(self, cidr, via=None, table=None, **kwargs):

-        ip_version = common_utils.get_ip_version(cidr)

-        args = ['replace', cidr]

-        if via:

-            args += ['via', via]

-        args += self._dev_args()

-        args += self._table_args(table)

-        for k, v in kwargs.items():

-            args += [k, v]

-        self._run_as_root_detect_device_not_found([ip_version], args)

+    def add_route(self, cidr, via=None, table=None, metric=None, scope=None,

+                  **kwargs):

+        table = table or self._table

+        add_ip_route(self._parent.namespace, cidr, device=self.name, via=via,

+                     table=table, metric=metric, scope=scope, **kwargs)

 

     def delete_route(self, cidr, via=None, table=None, **kwargs):

         ip_version = common_utils.get_ip_version(cidr)

@@ -1455,3 +1409,53 @@

                 retval[device['vxlan_link_index']]['name'])

 

     return list(retval.values())

+

+def add_ip_route(namespace, cidr, device=None, via=None, table=None,

+                 metric=None, scope=None, **kwargs):

+    '''Add an IP route'''

+    if table:

+        table = IP_RULE_TABLES.get(table, table)

+    ip_version = common_utils.get_ip_version(cidr or via)

+    privileged.add_ip_route(namespace, cidr, ip_version,

+                            device=device, via=via, table=table,

+                            metric=metric, scope=scope, **kwargs)

+

+

+def list_ip_routes(namespace, ip_version, scope=None, via=None, table=None,

+                   device=None, **kwargs):

+    '''List IP routes'''

+    def get_device(index, devices):

+        for device in (d for d in devices if d['index'] == index):

+            return get_attr(device, 'IFLA_IFNAME')

+

+    table = table if table else 'main'

+    table = IP_RULE_TABLES.get(table, table)

+    routes = privileged.list_ip_routes(namespace, ip_version, device=device,

+                                       table=table, **kwargs)

+    devices = privileged.get_link_devices(namespace)

+    ret = []

+    for route in routes:

+        cidr = get_attr(route, 'RTA_DST')

+        if cidr:

+            cidr = '%s/%s' % (cidr, route['dst_len'])

+        else:

+            cidr = constants.IP_ANY[ip_version]

+        table = int(get_attr(route, 'RTA_TABLE'))

+        value = {

+            'table': IP_RULE_TABLES_NAMES.get(table, table),

+            'source_prefix': get_attr(route, 'RTA_PREFSRC'),

+            'cidr': cidr,

+            'scope': IP_ADDRESS_SCOPE[int(route['scope'])],

+            'device': get_device(int(get_attr(route, 'RTA_OIF')), devices),

+            'via': get_attr(route, 'RTA_GATEWAY'),

+            'priority': get_attr(route, 'RTA_PRIORITY'),

+        }

+

+        ret.append(value)

+

+    if scope:

+        ret = [route for route in ret if route['scope'] == scope]

+    if via:

+        ret = [route for route in ret if route['via'] == via]

+

+    return ret

diff -ruN neutron-bak/cmd/sanity/checks.py neutron-iproute/cmd/sanity/checks.py

--- neutron-bak/cmd/sanity/checks.py       2022-02-23 11:33:16.934132708 +0800

+++ neutron-iproute/cmd/sanity/checks.py        2022-02-23 15:20:10.562018672 +0800

@@ -36,6 +36,7 @@

 from neutron.common import utils as common_utils

 from neutron.plugins.ml2.drivers.openvswitch.agent.common \

     import constants as ovs_const

+from neutron.privileged.agent.linux import dhcp as priv_dhcp

 

 LOG = logging.getLogger(__name__)

 

@@ -230,8 +231,8 @@

 

 

 def dhcp_release6_supported():

-    return runtime_checks.dhcp_release6_supported()

-

+#    return runtime_checks.dhcp_release6_supported()

+     return priv_dhcp.dhcp_release6_supported()

 

 def bridge_firewalling_enabled():

     for proto in ('arp', 'ip', 'ip6'):

@@ -363,7 +364,8 @@

 

             default_gw = gw_dev.route.get_gateway(ip_version=6)

             if default_gw:

-                default_gw = default_gw['gateway']

+#                default_gw = default_gw['gateway']

+                default_gw = default_gw['via']

 

     return expected_default_gw == default_gw

 

diff -ruN neutron-bak/privileged/agent/linux/ip_lib.py neutron-iproute/privileged/agent/linux/ip_lib.py

--- neutron-bak/privileged/agent/linux/ip_lib.py 2020-12-14 18:26:08.339307939 +0800

+++ neutron-iproute/privileged/agent/linux/ip_lib.py 2022-02-23 15:20:39.477439105 +0800

@@ -634,3 +634,50 @@

         if e.errno == errno.ENOENT:

             raise NetworkNamespaceNotFound(netns_name=namespace)

         raise

+

[email protected]

[email protected]('privileged-ip-lib')

+def add_ip_route(namespace, cidr, ip_version, device=None, via=None,

+                 table=None, metric=None, scope=None, **kwargs):

+    '''Add an IP route'''

+    try:

+        with get_iproute(namespace) as ip:

+            family = _IP_VERSION_FAMILY_MAP[ip_version]

+            if not scope:

+                scope = 'global' if via else 'link'

+            scope = _get_scope_name(scope)

+            if cidr:

+                kwargs['dst'] = cidr

+            if via:

+                kwargs['gateway'] = via

+            if table:

+                kwargs['table'] = int(table)

+            if device:

+                kwargs['oif'] = get_link_id(device, namespace)

+            if metric:

+                kwargs['priority'] = int(metric)

+            ip.route('replace', family=family, scope=scope, proto='static',

+                     **kwargs)

+    except OSError as e:

+        if e.errno == errno.ENOENT:

+            raise NetworkNamespaceNotFound(netns_name=namespace)

+        raise

+

+

[email protected]

[email protected]('privileged-ip-lib')

+def list_ip_routes(namespace, ip_version, device=None, table=None, **kwargs):

+    '''List IP routes'''

+    try:

+        with get_iproute(namespace) as ip:

+            family = _IP_VERSION_FAMILY_MAP[ip_version]

+            if table:

+                kwargs['table'] = table

+            if device:

+                kwargs['oif'] = get_link_id(device, namespace)

+            return make_serializable(ip.route('show', family=family, **kwargs))

+    except OSError as e:

+        if e.errno == errno.ENOENT:

+            raise NetworkNamespaceNotFound(netns_name=namespace)

+        raise

+

A1.4

diff -ruN neutron-bak/agent/linux/dhcp.py neutron-dhcprelease/agent/linux/dhcp.py

--- neutron-bak/agent/linux/dhcp.py 2020-12-15 09:59:29.966957908 +0800

+++ neutron-dhcprelease/agent/linux/dhcp.py  2022-02-23 15:10:14.169101010 +0800

@@ -25,6 +25,7 @@

 from neutron_lib import constants

 from neutron_lib import exceptions

 from neutron_lib.utils import file as file_utils

+from oslo_concurrency import processutils

 from oslo_log import log as logging

 from oslo_utils import excutils

 from oslo_utils import fileutils

@@ -41,6 +42,7 @@

 from neutron.common import ipv6_utils

 from neutron.common import utils as common_utils

 from neutron.ipam import utils as ipam_utils

+from neutron.privileged.agent.linux import dhcp as priv_dhcp

 

 LOG = logging.getLogger(__name__)

 

@@ -476,7 +478,8 @@

 

     def _is_dhcp_release6_supported(self):

         if self._IS_DHCP_RELEASE6_SUPPORTED is None:

-            self._IS_DHCP_RELEASE6_SUPPORTED = checks.dhcp_release6_supported()

+            self._IS_DHCP_RELEASE6_SUPPORTED = (

+                priv_dhcp.dhcp_release6_supported())

             if not self._IS_DHCP_RELEASE6_SUPPORTED:

                 LOG.warning('dhcp_release6 is not present on this system, '

                             'will not call it again.')

@@ -485,24 +488,28 @@

     def _release_lease(self, mac_address, ip, ip_version, client_id=None,

                        server_id=None, iaid=None):

         '''Release a DHCP lease.'''

-        if ip_version == constants.IP_VERSION_6:

-            if not self._is_dhcp_release6_supported():

-                return

-            cmd = ['dhcp_release6', '--iface', self.interface_name,

-                   '--ip', ip, '--client-id', client_id,

-                   '--server-id', server_id, '--iaid', iaid]

-        else:

-            cmd = ['dhcp_release', self.interface_name, ip, mac_address]

-            if client_id:

-                cmd.append(client_id)

-        ip_wrapper = ip_lib.IPWrapper(namespace=self.network.namespace)

         try:

-            ip_wrapper.netns.execute(cmd, run_as_root=True)

-        except RuntimeError as e:

+            if ip_version == constants.IP_VERSION_6:

+                if not self._is_dhcp_release6_supported():

+                    return

+

+                params = {'interface_name': self.interface_name,

+                          'ip_address': ip, 'client_id': client_id,

+                          'server_id': server_id, 'iaid': iaid,

+                          'namespace': self.network.namespace}

+                priv_dhcp.dhcp_release6(**params)

+            else:

+                params = {'interface_name': self.interface_name,

+                          'ip_address': ip, 'mac_address': mac_address,

+                          'client_id': client_id,

+                          'namespace': self.network.namespace}

+#                LOG.info('Rock_DEBUG: DHCP release construct params %(params)s.', {'params': params})

+                priv_dhcp.dhcp_release(**params)

+        except (processutils.ProcessExecutionError, OSError) as e:

             # when failed to release single lease there's

             # no need to propagate error further

-            LOG.warning('DHCP release failed for %(cmd)s. '

-                        'Reason: %(e)s', {'cmd': cmd, 'e': e})

+            LOG.warning('DHCP release failed for params %(params)s. '

+                        'Reason: %(e)s', {'params': params, 'e': e})

 

     def _output_config_files(self):

         self._output_hosts_file()

diff -ruN neutron-bak/cmd/sanity/checks.py neutron-dhcprelease/cmd/sanity/checks.py

--- neutron-bak/cmd/sanity/checks.py       2022-02-23 11:33:16.934132708 +0800

+++ neutron-dhcprelease/cmd/sanity/checks.py 2022-02-23 15:11:07.536446402 +0800

@@ -36,6 +36,7 @@

 from neutron.common import utils as common_utils

 from neutron.plugins.ml2.drivers.openvswitch.agent.common \

     import constants as ovs_const

+from neutron.privileged.agent.linux import dhcp as priv_dhcp

 

 LOG = logging.getLogger(__name__)

 

@@ -230,8 +231,8 @@

 

 

 def dhcp_release6_supported():

-    return runtime_checks.dhcp_release6_supported()

-

+#    return runtime_checks.dhcp_release6_supported()

+     return priv_dhcp.dhcp_release6_supported()

 

 def bridge_firewalling_enabled():

     for proto in ('arp', 'ip', 'ip6'):

@@ -363,7 +364,8 @@

 

             default_gw = gw_dev.route.get_gateway(ip_version=6)

             if default_gw:

-                default_gw = default_gw['gateway']

+#                default_gw = default_gw['gateway']

+                default_gw = default_gw['via']

 

     return expected_default_gw == default_gw

 

diff -ruN neutron-bak/privileged/__init__.py neutron-dhcprelease/privileged/__init__.py

--- neutron-bak/privileged/__init__.py        2020-04-23 14:45:14.000000000 +0800

+++ neutron-dhcprelease/privileged/__init__.py 2022-02-23 15:10:29.209584186 +0800

@@ -27,3 +27,11 @@

                   caps.CAP_DAC_OVERRIDE,

                   caps.CAP_DAC_READ_SEARCH],

 )

+

+dhcp_release_cmd = priv_context.PrivContext(

+    __name__,

+    cfg_section='privsep_dhcp_release',

+    pypath=__name__ + '.dhcp_release_cmd',

+    capabilities=[caps.CAP_SYS_ADMIN,

+                  caps.CAP_NET_ADMIN]

+)

A1.5

diff -ruN neutron-bak/agent/linux/ipset_manager.py neutron/agent/linux/ipset_manager.py

--- neutron-bak/agent/linux/ipset_manager.py  2022-02-16 15:11:40.419016919 +0800

+++ neutron/agent/linux/ipset_manager.py        2022-02-16 15:17:02.328133786 +0800

@@ -146,7 +146,7 @@

             cmd_ns.extend(['ip', 'netns', 'exec', self.namespace])

         cmd_ns.extend(cmd)

         self.execute(cmd_ns, run_as_root=True, process_input=input,

-                     check_exit_code=fail_on_errors)

+                     check_exit_code=fail_on_errors, privsep_exec=True)

 

     def _get_new_set_ips(self, set_name, expected_ips):

         new_member_ips = (set(expected_ips) -

diff -ruN neutron-bak/agent/linux/iptables_manager.py neutron/agent/linux/iptables_manager.py

--- neutron-bak/agent/linux/iptables_manager.py      2022-02-16 15:05:53.853147520 +0800

+++ neutron/agent/linux/iptables_manager.py   2021-07-07 14:59:16.000000000 +0800

@@ -475,12 +475,15 @@

         args = ['iptables-save', '-t', table]

         if self.namespace:

             args = ['ip', 'netns', 'exec', self.namespace] + args

-        return self.execute(args, run_as_root=True).split('\n')

+        #return self.execute(args, run_as_root=True).split('\n')

+        return self.execute(args, run_as_root=True,

+                            privsep_exec=True).split('\n')

 

     def _get_version(self):

         # Output example is 'iptables v1.6.2'

         args = ['iptables', '--version']

-        version = str(self.execute(args, run_as_root=True).split()[1][1:])

+        #version = str(self.execute(args, run_as_root=True).split()[1][1:])

+        version = str(self.execute(args, run_as_root=True, privsep_exec=True).split()[1][1:])

         LOG.debug('IPTables version installed: %s', version)

         return version

 

@@ -505,8 +508,10 @@

             args += ['-w', self.xlock_wait_time, '-W', XLOCK_WAIT_INTERVAL]

         try:

             kwargs = {} if lock else {'log_fail_as_error': False}

+            #self.execute(args, process_input='\n'.join(commands),

+            #             run_as_root=True, **kwargs)

             self.execute(args, process_input='\n'.join(commands),

-                         run_as_root=True, **kwargs)

+                         run_as_root=True, privsep_exec=True, **kwargs)

         except RuntimeError as error:

             return error

 

@@ -568,7 +573,8 @@

             if self.namespace:

                 args = ['ip', 'netns', 'exec', self.namespace] + args

             try:

-                save_output = self.execute(args, run_as_root=True)

+                #save_output = self.execute(args, run_as_root=True)

+                save_output = self.execute(args, run_as_root=True, privsep_exec=True)

             except RuntimeError:

                 # We could be racing with a cron job deleting namespaces.

                 # It is useless to try to apply iptables rules over and

@@ -769,7 +775,8 @@

                 args.append('-Z')

             if self.namespace:

                 args = ['ip', 'netns', 'exec', self.namespace] + args

-            current_table = self.execute(args, run_as_root=True)

+            #current_table = self.execute(args, run_as_root=True)

+            current_table = self.execute(args, run_as_root=True, privsep_exec=True)

             current_lines = current_table.split('\n')

 

             for line in current_lines[2:]:

diff -ruN neutron-bak/agent/linux/utils.py neutron/agent/linux/utils.py

--- neutron-bak/agent/linux/utils.py 2022-02-16 15:06:03.133090388 +0800

+++ neutron/agent/linux/utils.py       2021-07-08 09:34:12.000000000 +0800

@@ -38,6 +38,7 @@

 from neutron.agent.linux import xenapi_root_helper

 from neutron.common import utils

 from neutron.conf.agent import common as config

+from neutron.privileged.agent.linux import utils as priv_utils

 from neutron import wsgi

 

 

@@ -85,13 +86,24 @@

     if run_as_root:

         cmd = shlex.split(config.get_root_helper(cfg.CONF)) + cmd

     LOG.debug('Running command: %s', cmd)

-    obj = utils.subprocess_popen(cmd, shell=False,

-                                 stdin=subprocess.PIPE,

-                                 stdout=subprocess.PIPE,

-                                 stderr=subprocess.PIPE)

+    #obj = utils.subprocess_popen(cmd, shell=False,

+    #                             stdin=subprocess.PIPE,

+    #                             stdout=subprocess.PIPE,

+    #                             stderr=subprocess.PIPE)

+    obj = subprocess.Popen(cmd, shell=False, stdin=subprocess.PIPE,

+                           stdout=subprocess.PIPE, stderr=subprocess.PIPE)

 

     return obj, cmd

 

+def _execute_process(cmd, _process_input, addl_env, run_as_root):

+    obj, cmd = create_process(cmd, run_as_root=run_as_root, addl_env=addl_env)

+    _stdout, _stderr = obj.communicate(_process_input)

+    returncode = obj.returncode

+    obj.stdin.close()

+    _stdout = helpers.safe_decode_utf8(_stdout)

+    _stderr = helpers.safe_decode_utf8(_stderr)

+    return _stdout, _stderr, returncode

+

 

 def execute_rootwrap_daemon(cmd, process_input, addl_env):

     cmd = list(map(str, addl_env_args(addl_env) + cmd))

@@ -103,31 +115,45 @@

     LOG.debug('Running command (rootwrap daemon): %s', cmd)

     client = RootwrapDaemonHelper.get_client()

     try:

-        return client.execute(cmd, process_input)

+        #return client.execute(cmd, process_input)

+        returncode, __stdout, _stderr =  client.execute(cmd, process_input)

     except Exception:

         with excutils.save_and_reraise_exception():

             LOG.error('Rootwrap error running command: %s', cmd)

+    _stdout = helpers.safe_decode_utf8(_stdout)

+    _stderr = helpers.safe_decode_utf8(_stderr)

+    return _stdout, _stderr, returncode

 

 

 def execute(cmd, process_input=None, addl_env=None,

             check_exit_code=True, return_stderr=False, log_fail_as_error=True,

-            extra_ok_codes=None, run_as_root=False):

+            extra_ok_codes=None, run_as_root=False, privsep_exec=False):

     try:

         if process_input is not None:

             _process_input = encodeutils.to_utf8(process_input)

         else:

             _process_input = None

-        if run_as_root and cfg.CONF.AGENT.root_helper_daemon:

-            returncode, _stdout, _stderr = (

-                execute_rootwrap_daemon(cmd, process_input, addl_env))

+        #if run_as_root and cfg.CONF.AGENT.root_helper_daemon:

+        #    returncode, _stdout, _stderr = (

+        #        execute_rootwrap_daemon(cmd, process_input, addl_env))

+        #else:

+        #    obj, cmd = create_process(cmd, run_as_root=run_as_root,

+        #                              addl_env=addl_env)

+        #    _stdout, _stderr = obj.communicate(_process_input)

+        #    returncode = obj.returncode

+        #    obj.stdin.close()

+        #_stdout = helpers.safe_decode_utf8(_stdout)

+        #_stderr = helpers.safe_decode_utf8(_stderr)

+

+        if run_as_root and privsep_exec:

+            _stdout, _stderr, returncode = priv_utils.execute_process(

+                cmd, _process_input, addl_env)

+        elif run_as_root and cfg.CONF.AGENT.root_helper_daemon:

+            _stdout, _stderr, returncode = execute_rootwarp_daemon(

+                cmd, process_input, addl_env)

         else:

-            obj, cmd = create_process(cmd, run_as_root=run_as_root,

-                                      addl_env=addl_env)

-            _stdout, _stderr = obj.communicate(_process_input)

-            returncode = obj.returncode

-            obj.stdin.close()

-        _stdout = helpers.safe_decode_utf8(_stdout)

-        _stderr = helpers.safe_decode_utf8(_stderr)

+            _stdout, _stderr, returncode = _execute_process(

+                cmd, _process_input, addl_env, run_as_root)

 

         extra_ok_codes = extra_ok_codes or []

         if returncode and returncode not in extra_ok_codes:

diff -ruN neutron-bak/cmd/ipset_cleanup.py neutron/cmd/ipset_cleanup.py

--- neutron-bak/cmd/ipset_cleanup.py      2022-02-16 15:18:00.727786180 +0800

+++ neutron/cmd/ipset_cleanup.py   2021-07-07 15:00:03.000000000 +0800

@@ -38,7 +38,8 @@

 def remove_iptables_reference(ipset):

     # Remove any iptables reference to this IPset

     cmd = ['iptables-save'] if 'IPv4' in ipset else ['ip6tables-save']

-    iptables_save = utils.execute(cmd, run_as_root=True)

+    #iptables_save = utils.execute(cmd, run_as_root=True)

+    iptables_save = utils.execute(cmd, run_as_root=True, privsep_exec=True)

 

     if ipset in iptables_save:

         cmd = ['iptables'] if 'IPv4' in ipset else ['ip6tables']

@@ -50,7 +51,8 @@

                 params = rule.split()

                 params[0] = '-D'

                 try:

-                    utils.execute(cmd + params, run_as_root=True)

+                    #utils.execute(cmd + params, run_as_root=True)

+                    utils.execute(cmd + params, run_as_root=True, privsep_exec=True)

                 except Exception:

                     LOG.exception('Error, unable to remove iptables rule '

                                   'for IPset: %s', ipset)

@@ -65,7 +67,8 @@

     LOG.info('Destroying IPset: %s', ipset)

     cmd = ['ipset', 'destroy', ipset]

     try:

-        utils.execute(cmd, run_as_root=True)

+        #utils.execute(cmd, run_as_root=True)

+        utils.execute(cmd, run_as_root=True, privsep_exec=True)

     except Exception:

         LOG.exception('Error, unable to destroy IPset: %s', ipset)

 

@@ -75,7 +78,8 @@

     LOG.info('Destroying IPsets with prefix: %s', conf.prefix)

 

     cmd = ['ipset', '-L', '-n']

-    ipsets = utils.execute(cmd, run_as_root=True)

+    #ipsets = utils.execute(cmd, run_as_root=True)

+    ipsets = utils.execute(cmd, run_as_root=True, privsep_exec=True)

     for ipset in ipsets.split('\n'):

         if conf.allsets or ipset.startswith(conf.prefix):

             destroy_ipset(conf, ipset)

diff -ruN neutron-bak/privileged/agent/linux/utils.py neutron/privileged/agent/linux/utils.py

--- neutron-bak/privileged/agent/linux/utils.py  1970-01-01 08:00:00.000000000 +0800

+++ neutron/privileged/agent/linux/utils.py        2021-07-07 14:58:21.000000000 +0800

@@ -0,0 +1,82 @@

+# Copyright 2020 Red Hat, Inc.

+#

+#    Licensed under the Apache License, Version 2.0 (the 'License'); you may

+#    not use this file except in compliance with the License. You may obtain

+#    a copy of the License at

+#

+#         http://www.apache.org/licenses/LICENSE-2.0

+#

+#    Unless required by applicable law or agreed to in writing, software

+#    distributed under the License is distributed on an 'AS IS' BASIS, WITHOUT

+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the

+#    License for the specific language governing permissions and limitations

+#    under the License.

+

+import os

+import re

+

+from eventlet.green import subprocess

+from neutron_lib.utils import helpers

+from oslo_concurrency import processutils

+from oslo_utils import fileutils

+

+from neutron import privileged

+

+

+NETSTAT_PIDS_REGEX = re.compile(r'.* (?P\d{2,6})/.*')

+

+

[email protected]

+def find_listen_pids_namespace(namespace):

+    return _find_listen_pids_namespace(namespace)

+

+

+def _find_listen_pids_namespace(namespace):

+    '''Retrieve a list of pids of listening processes within the given netns

+    This method is implemented separately to allow unit testing.

+    '''

+    pids = set()

+    cmd = ['ip', 'netns', 'exec', namespace, 'netstat', '-nlp']

+    output = processutils.execute(*cmd)

+    for line in output[0].splitlines():

+        m = NETSTAT_PIDS_REGEX.match(line)

+        if m:

+            pids.add(m.group('pid'))

+    return list(pids)

+

+

[email protected]

+def delete_if_exists(path, remove=os.unlink):

+    fileutils.delete_if_exists(path, remove=remove)

+

+

[email protected]

+def execute_process(cmd, _process_input, addl_env):

+    obj, cmd = _create_process(cmd, addl_env=addl_env)

+    _stdout, _stderr = obj.communicate(_process_input)

+    returncode = obj.returncode

+    obj.stdin.close()

+    _stdout = helpers.safe_decode_utf8(_stdout)

+    _stderr = helpers.safe_decode_utf8(_stderr)

+    return _stdout, _stderr, returncode

+

+

+def _addl_env_args(addl_env):

+    '''Build arguments for adding additional environment vars with env'''

+

+    # NOTE (twilson) If using rootwrap, an EnvFilter should be set up for the

+    # command instead of a CommandFilter.

+    if addl_env is None:

+        return []

+    return ['env'] + ['%s=%s' % pair for pair in addl_env.items()]

+

+

+def _create_process(cmd, addl_env=None):

+    '''Create a process object for the given command.

+    The return value will be a tuple of the process object and the

+    list of command arguments used to create it.

+    '''

+    cmd = list(map(str, _addl_env_args(addl_env) + list(cmd)))

+    obj = subprocess.Popen(cmd, shell=False, stdin=subprocess.PIPE,

+                           stdout=subprocess.PIPE, stderr=subprocess.PIPE)

+    return obj, cmd

B1.1

--- neutron-bak/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py  2022-08-02 17:02:51.213224245 +0800

+++ neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py 2022-08-02 17:02:09.181883012 +0800

@@ -161,8 +161,8 @@

         self.enable_distributed_routing = agent_conf.enable_distributed_routing

         self.arp_responder_enabled = agent_conf.arp_responder and self.l2_pop

 

-        host = self.conf.host

-        self.agent_id = 'ovs-agent-%s' % host

+        self.host = self.conf.host

+        self.agent_id = 'ovs-agent-%s' % self.host

 

         self.enable_tunneling = bool(self.tunnel_types)

 

@@ -245,7 +245,7 @@

             self.phys_ofports,

             self.patch_int_ofport,

             self.patch_tun_ofport,

-            host,

+            self.host,

             self.enable_tunneling,

             self.enable_distributed_routing,

             self.arp_responder_enabled)

@@ -289,7 +289,7 @@

         #                  or which are used by specific extensions.

         self.agent_state = {

             'binary': 'neutron-openvswitch-agent',

-            'host': host,

+            'host': self.host,

             'topic': n_const.L2_AGENT_TOPIC,

             'configurations': {'bridge_mappings': self.bridge_mappings,

                                c_const.RP_BANDWIDTHS: self.rp_bandwidths,

@@ -1671,6 +1671,7 @@

         skipped_devices = []

         need_binding_devices = []

         binding_no_activated_devices = set()

+        migrating_devices = set()

         agent_restarted = self.iter_num == 0

         devices_details_list = (

             self.plugin_rpc.get_devices_details_list_and_failed_devices(

@@ -1696,6 +1697,12 @@

                 skipped_devices.append(device)

                 continue

 

+            migrating_to = details.get('migrating_to')

+            if migrating_to and migrating_to != self.host:

+                LOG.info('Port %(device)s is being migrated to host %(host)s.',

+                         {'device': device, 'host': migrating_to})

+                migrating_devices.add(device)

+

             if 'port_id' in details:

                 LOG.info('Port %(device)s updated. Details: %(details)s',

                          {'device': device, 'details': details})

@@ -1729,7 +1736,7 @@

                 if (port and port.ofport != -1):

                     self.port_dead(port)

         return (skipped_devices, binding_no_activated_devices,

-                need_binding_devices, failed_devices)

+                need_binding_devices, failed_devices, migrating_devices)

 

     def _update_port_network(self, port_id, network_id):

         self._clean_network_ports(port_id)

@@ -1821,10 +1828,12 @@

         need_binding_devices = []

         skipped_devices = set()

         binding_no_activated_devices = set()

+        migrating_devices = set()

         start = time.time()

         if devices_added_updated:

             (skipped_devices, binding_no_activated_devices,

-             need_binding_devices, failed_devices['added']) = (

+             need_binding_devices, failed_devices['added'],

+                migrating_devices) = (

                 self.treat_devices_added_or_updated(

                     devices_added_updated, provisioning_needed))

             LOG.debug('process_network_ports - iteration:%(iter_num)d - '

@@ -1847,7 +1856,7 @@

         # TODO(salv-orlando): Optimize avoiding applying filters

         # unnecessarily, (eg: when there are no IP address changes)

         added_ports = (port_info.get('added', set()) - skipped_devices -

-                       binding_no_activated_devices)

+                       binding_no_activated_devices - migrating_devices)

         self._add_port_tag_info(need_binding_devices)

         self.sg_agent.setup_port_filters(added_ports,

                                          port_info.get('updated', set()))

B1.2

--- neutron-bak/conf/common.py     2022-08-02 17:07:18.239265163 +0800

+++ neutron/conf/common.py 2021-09-08 17:08:59.000000000 +0800

@@ -166,6 +166,24 @@

                help=_('Type of the nova endpoint to use.  This endpoint will'

                       ' be looked up in the keystone catalog and should be'

                       ' one of public, internal or admin.')),

+    cfg.BoolOpt('live_migration_events', default=True,

+                help=_('When this option is enabled, during the live '

+                       'migration, the OVS agent will only send the '

+                       ''vif-plugged-event' when the destination host '

+                       'interface is bound. This option also disables any '

+                       'other agent (like DHCP) to send to Nova this event '

+                       'when the port is provisioned.'

+                       'This option can be enabled if Nova patch '

+                       'https://review.opendev.org/c/openstack/nova/+/767368 '

+                       'is in place.'

+                       'This option is temporary and will be removed in Y and '

+                       'the behavior will be 'True'.'),

+                deprecated_for_removal=True,

+                deprecated_reason=(

+                    'In Y the Nova patch '

+                    'https://review.opendev.org/c/openstack/nova/+/767368 '

+                    'will be in the code even when running a Nova server in '

+                    'X.')),

 ]

B1.3

--- neutron-bak/agent/rpc.py   2021-08-25 15:29:11.000000000 +0800

+++ neutron/agent/rpc.py 2021-09-15 16:34:09.000000000 +0800

@@ -25,8 +25,10 @@

 from neutron_lib import constants

 from neutron_lib.plugins import utils

 from neutron_lib import rpc as lib_rpc

+from oslo_config import cfg

 from oslo_log import log as logging

 import oslo_messaging

+from oslo_serialization import jsonutils

 from oslo_utils import uuidutils

 

 from neutron.agent import resource_cache

@@ -323,8 +325,10 @@

         binding = utils.get_port_binding_by_status_and_host(

             port_obj.bindings, constants.ACTIVE, raise_if_not_found=True,

             port_id=port_obj.id)

-        if (port_obj.device_owner.startswith(

-                constants.DEVICE_OWNER_COMPUTE_PREFIX) and

+        migrating_to = migrating_to_host(port_obj.bindings)

+        if (not (migrating_to and cfg.CONF.nova.live_migration_events) and

+                port_obj.device_owner.startswith(

+                    constants.DEVICE_OWNER_COMPUTE_PREFIX) and

                 binding[pb_ext.HOST] != host):

             LOG.debug('Device %s has no active binding in this host',

                       port_obj)

@@ -357,7 +361,8 @@

             'qos_policy_id': port_obj.qos_policy_id,

             'network_qos_policy_id': net_qos_policy_id,

             'profile': binding.profile,

-            'security_groups': list(port_obj.security_group_ids)

+            'security_groups': list(port_obj.security_group_ids),

+            'migrating_to': migrating_to,

         }

         LOG.debug('Returning: %s', entry)

         return entry

@@ -365,3 +370,40 @@

     def get_devices_details_list(self, context, devices, agent_id, host=None):

         return [self.get_device_details(context, device, agent_id, host)

                 for device in devices]

+

+# TODO(ralonsoh): move this method to neutron_lib.plugins.utils

+def migrating_to_host(bindings, host=None):

+    '''Return the host the port is being migrated.

+

+    If the host is passed, the port binding profile with the 'migrating_to',

+    that contains the host the port is being migrated, is compared to this

+    value. If no value is passed, this method will return if the port is

+    being migrated ('migrating_to' is present in any port binding profile).

+

+    The function returns None or the matching host.

+    '''

+    #LOG.info('LiveDebug: enter migrating_to_host  001')

+    for binding in (binding for binding in bindings if

+                    binding[pb_ext.STATUS] == constants.ACTIVE):

+        profile = binding.get('profile')

+        if not profile:

+            continue

+       '''

+        profile = (jsonutils.loads(profile) if isinstance(profile, str) else

+                   profile)

+        migrating_to = profile.get('migrating_to')

+       '''

+        # add by michael

+        if isinstance(profile, str):

+            migrating_to = jsonutils.loads(profile).get('migrating_to')

+            #LOG.info('LiveDebug: migrating_to_host 001  migrating_to: %s', migrating_to)

+        else:

+            migrating_to = profile.get('migrating_to')

+            #LOG.info('LiveDebug: migrating_to_host 002  migrating_to: %s', migrating_to)

+

+        if migrating_to:

+            if not host:  # Just know if the port is being migrated.

+                return migrating_to

+            if migrating_to == host:

+                return migrating_to

+    return None

B1.4

--- neutron-bak/db/provisioning_blocks.py        2021-08-25 15:43:47.000000000 +0800

+++ neutron/db/provisioning_blocks.py     2021-09-03 09:32:41.000000000 +0800

@@ -137,8 +137,7 @@

             context, standard_attr_id=standard_attr_id):

         LOG.debug('Provisioning complete for %(otype)s %(oid)s triggered by '

                   'entity %(entity)s.', log_dict)

-        registry.notify(object_type, PROVISIONING_COMPLETE,

-                        'neutron.db.provisioning_blocks',

+        registry.notify(object_type, PROVISIONING_COMPLETE, entity,

                         context=context, object_id=object_id)

 

B1.5

--- neutron-bak/notifiers/nova.py     2021-08-25 16:02:33.000000000 +0800

+++ neutron/notifiers/nova.py  2021-09-03 09:32:41.000000000 +0800

@@ -13,6 +13,8 @@

 #    License for the specific language governing permissions and limitations

 #    under the License.

 

+import contextlib

+

 from keystoneauth1 import loading as ks_loading

 from neutron_lib.callbacks import events

 from neutron_lib.callbacks import registry

@@ -66,6 +68,16 @@

             if ext.name == 'server_external_events']

         self.batch_notifier = batch_notifier.BatchNotifier(

             cfg.CONF.send_events_interval, self.send_events)

+        self._enabled = True

+

+    @contextlib.contextmanager

+    def context_enabled(self, enabled):

+        stored_enabled = self._enabled

+        try:

+            self._enabled = enabled

+            yield

+        finally:

+            self._enabled = stored_enabled

 

     def _get_nova_client(self):

         global_id = common_context.generate_request_id()

@@ -163,6 +175,10 @@

                 return self._get_network_changed_event(port)

 

     def _can_notify(self, port):

+        if not self._enabled:

+            LOG.debug('Nova notifier disabled')

+            return False

+

         if not port.id:

             LOG.warning('Port ID not set! Nova will not be notified of '

                         'port status change.')

B1.6

--- nova-bak/compute/manager.py  2022-08-02 16:27:45.943428128 +0800

+++ nova/compute/manager.py        2021-09-03 09:35:24.529858458 +0800

@@ -6637,12 +6637,12 @@

         LOG.error(msg, msg_args)

 

     @staticmethod

-    def _get_neutron_events_for_live_migration(instance):

+    def _get_neutron_events_for_live_migration(instance, migration):

         # We don't generate events if CONF.vif_plugging_timeout=0

         # meaning that the operator disabled using them.

-        if CONF.vif_plugging_timeout and utils.is_neutron():

-            return [('network-vif-plugged', vif['id'])

-                    for vif in instance.get_network_info()]

+        if CONF.vif_plugging_timeout:

+            return (instance.get_network_info()

+                    .get_live_migration_plug_time_events())

         else:

             return []

 

@@ -6695,7 +6695,8 @@

             '''

             pass

 

-        events = self._get_neutron_events_for_live_migration(instance)

+        events = self._get_neutron_events_for_live_migration(

+            instance, migration)

         try:

             if ('block_migration' in migrate_data and

                     migrate_data.block_migration):

B1.7

--- nova-bak/network/model.py        2022-08-02 16:27:47.490437859 +0800

+++ nova/network/model.py     2021-09-03 09:35:24.532858440 +0800

@@ -469,6 +469,14 @@

         return (self.is_hybrid_plug_enabled() and not

                 migration.is_same_host())

 

+    @property

+    def has_live_migration_plug_time_event(self):

+        '''Returns whether this VIF's network-vif-plugged external event will

+        be sent by Neutron at 'plugtime' - in other words, as soon as neutron

+        completes configuring the network backend.

+        '''

+        return self.is_hybrid_plug_enabled()

+

     def is_hybrid_plug_enabled(self):

         return self['details'].get(VIF_DETAILS_OVS_HYBRID_PLUG, False)

 

@@ -527,20 +535,26 @@

         return jsonutils.dumps(self)

 

     def get_bind_time_events(self, migration):

-        '''Returns whether any of our VIFs have 'bind-time' events. See

-        has_bind_time_event() docstring for more details.

+        '''Returns a list of external events for any VIFs that have

+        'bind-time' events during cold migration.

         '''

         return [('network-vif-plugged', vif['id'])

                 for vif in self if vif.has_bind_time_event(migration)]

 

+    def get_live_migration_plug_time_events(self):

+        '''Returns a list of external events for any VIFs that have

+        'plug-time' events during live migration.

+        '''

+        return [('network-vif-plugged', vif['id'])

+                for vif in self if vif.has_live_migration_plug_time_event]

+

     def get_plug_time_events(self, migration):

-        '''Complementary to get_bind_time_events(), any event that does not

-        fall in that category is a plug-time event.

+        '''Returns a list of external events for any VIFs that have

+        'plug-time' events during cold migration.

         '''

         return [('network-vif-plugged', vif['id'])

                 for vif in self if not vif.has_bind_time_event(migration)]

 

-

 class NetworkInfoAsyncWrapper(NetworkInfo):

     '''Wrapper around NetworkInfo that allows retrieving NetworkInfo

     in an async manner.

C1.1

--- linux-3.10.0-1062.18.1.el7.orig/net/ipv4/udp_offload.c     2020-02-12 21:45:22.000000000 +0800

+++ linux-3.10.0-1062.18.1.el7/net/ipv4/udp_offload.c   2022-08-17 15:56:27.540557289 +0800

@@ -261,7 +261,7 @@ struct sk_buff **udp_gro_receive(struct

      struct sock *sk;

 

      if (NAPI_GRO_CB(skb)->encap_mark ||

-         (skb->ip_summed != CHECKSUM_PARTIAL &&

+         (uh->check && skb->ip_summed != CHECKSUM_PARTIAL &&

           NAPI_GRO_CB(skb)->csum_cnt == 0 &&

           !NAPI_GRO_CB(skb)->csum_valid))

             goto out;

 

分享到:

返回列表
北京集特智能科技有限公司 All Copy Right 2005-2010@ 2015 All rights reserved. 備案號:京ICP�20018443�-1 后臺管理
在線咨詢
kendralust丰满艳妇| 欧美视频导航| 大尺度做爰啪啪床戏有叫声的漫�| 一级毛片电影院| 受被变态攻灌满虐腹h| 巴西少妇xxb大毛又多| 欧美三级黄色大片| 绿奴女神被黑人玩烂的校花小说| 91九色在线| 国产精品美女www爽爽爽软�| 一边叫床一边喷水一边爽| 父女初欢| 久久久久亚洲精品乱码按摩| juy144一色桃子中文在线观�| 欧美高清精品videosexold| 美女扒开让男人桶�| 五月激情六月婷�| 囚禁粗暴强要了她h| 小柔高达厨房嗯啊到高潮视�| 国产精品成人在线视频| 丝袜脚交一区二区三�| 乡村情欲| 久久综合第一�| 可以看的黄色| 欧美老妇与zozoz0�| 亚洲性人人天天夜夜摸| 俺去也视�| 不用下载播放器的av| 女生脱光衣服无马赛克| 老扒+夜夜春宵+第五部分| 丰腴美妇撅着雪白的肉臀| 91久久精品国产亚洲| 午夜精品久久久久久久99婷婷| 性做久久久久久久�| 黄网站色大片| 美艳老师成了我的胯下�| 日本三级香港三级久久99| 国产一区二区三区免费观看网站上| 免费黄色直播网站| 黄色片在线视�| 大肥女bbwbbw肥妇hd视频| avbobo官网下载| 在书房含乳尖h| 男男互吃鳮gay视频| 三男玩一女免费a�| 小受被按在墙上做腿交女女视频| 淫辱的秘书调教高h(抖m�)_| 一久久久久| 永久免费a级在线视�| 校花被灌醉后扒开双腿视频| 国产免费一区二区三区在线观�| 男女做爰猛烈叫床视频电影摸大�| 欧美一级特黄aaaaaa大片在线观看| 末世极度乱淫h| 大地网资源在线观看免费高�| gay耽肉高h喷汁呻吟男男�| 35日本xxxxxxxxx25| free性zozo交体内谢| 麻豆视频在线免费�| 婆岳双床飞呻�| 她被揉的开始呻吟起�| 午夜啪啪免费视频| 日韩电影久久�| 91精品国产自产| 晚上摸硬了武警的的大j8| 边吃奶边做视�| 亚洲日本视频在线观看| 日韩欧美在线视频免费| 国产欧美日韩免费观看| 越南一级淫片在线观�| 《内衣办公室》动�| 国产一级毛片卡| 日日摸夜夜爽人人添av| 91精品国产777在线观看| 国产精品丰满20p| 免费观看蜜桃视频www| gl呻吟调教跪趴sm主人| 日本边吃边摸边做边爱| 美女污污视频网站| chinesegay男男按摩| xxxxx电影�| 精品欧美日韩一区二�| 放荡女友玩三p| 唐三小舞肉h污文| 公交np肉多荤文高h少妇| 亚洲天堂资源在线| 短裙公车被强好爽h吃奶| 家庭淫欲小说| 师父不可以灵犀公主小说笔趣阁无弹窗| 乳色吐息观看| 男女视频在线观看免费| jizz中国zz女人18高潮| 国产精品色哟�| 综合图色| 羽月希被黑人吃奶dasd585| 亚洲精品国产探花| 国产特级黄色录像| 激情五月婷婷av| 双性奶娃呻吟双腿大开n| 嗯啊抵在墙上h失禁| redporno| 真夏の夜の淫梦原片观�| 国产精品�| 91精品在线免费观看视频| 恋夜国产| 欧美日韩�| 吴梦梦�48式在线观�| 欧美成性色| xxxx交换夫妇com视频| chinese国产精品一区二�| 美女黄色一级毛�| 日本国产在线视频| 女人扒开腿免费视�| 动漫美女隐私无遮�| 丁香花在线视�| 久久亚洲�| 国产嫩草影院在线观看88| japanesenewsex性主�| 办公室被吃奶好爽动态图| 好爽好紧老师来了视频| 性欧�6一16性巨大另�| 天美传媒97a�| 偷妻之寂寞难�2中文字幕hd| av电影大全| 性欧美极�| 疯狂七十二小时截了一段门�| 杨钰莹全部小说全文免费阅�| 少妇下岗被迫献身h| 蘑菇视频网页版入口怎么打开| 韩国三级电站推荐| 少妇裸体性生交视频播�| 亚洲影视综合�| 无法抗拒电视�24�| 男女中文字幕| 公交车上内裤扯掉被cao小说| 少妇口述刺激的偷人经�| 在线�**的网�| 欧美久久99| 在线观看天堂av| 欧美大但人体| 粗暴挣扎侵犯绝望h公交�| 武藤绫香av在线�| av福利天堂| 女人扒开下面让男人捅| 护士在病房做爰免费看视频| 国产�99精品9i| 男男大开男男h| 国产另类在线| 日韩动漫av| 97久久人澡人人添人人爽| 免费全黄—级裸片视频| 免费看α片| 小骚受被各种姿势连续高潮小说| 又粗又长顶的很深| 另类性欧�| 日本中文字幕一�| 一受n攻h嗯啊巨肉双龙| 国产sp打屁股调教视�97| 赵大宝和苏媚的小说全集免费阅�| 丰满少妇在线观看| 清纯孕妇妇被脔日常h| 精品国偷自产一区二区三�| 天天躁日日躁狠狠躁欧美巨大小�| 免费黄色网址是多�| 偷拍黄色�| 激情自拍偷�| 女教师淫辱の教室在线观看| 91精品久久久久久久久久不卡| www.22eee| run away高清在线观看全集动漫| 99久久精品免费看国产交�| 青楼h�| 男人的天堂av�| rosimm福利视频在线观看| 美女扒开屁股无遮�| 99视频在线观看免费视频| 水野朝阳av一区二区三�| 变态医生的凌虐调教| 日韩6699****毛片| www.yy4080| 渔夫荒淫性艳史电影免费观�| 亚洲电影免费观看高清完整版在线观| 波多野结衣迅雷下�| 青娱乐国产精�| 毛片基地黄久久久久久天堂| 91成年人视频在线观�| 少妇一区二区三区四�| 侵犯女教师希岛あいり| 四虎国产精品成人永久免费影视| 快穿之闺蜜男友警察h| 成人午夜视频在线免费观看| 97视频入口| 白洁与高义小�| 捆绑羞辱调教一二三�| 黄色激情电�| 国产日本欧美一�| 男人插女人下面的视频| 国产二三四区2021| 麻豆三级电影| 欧洲自拍偷拍| 免费精品国产| 日本裸体女生| 想爱都难电视剧全集免�| 拔萝卜免费观看完整版| 小镇姑娘免费观看全集完整版电�| 少妇高潮久久久久久软�| 精品国产一区二区三区免费胖�| 韩国黄色一级视�| 天干夜天干夜天天免费视频| 我的种马父亲小说原著小说| 高潮啊嗯~动漫视�| 男女啪啪做爰高潮全过程短�| 校花喂我�| 麻豆精国品国�2023| 日本黄网在线观看| 8x海外华人永久免费| 《儿媳妇楚菲菲的小说�| 日韩一区二区三区视�| 亚洲一区二区三区在线影�| 国产色av| **贱屁股眼哭叫求饶h作文| 青青草原免费视频| 一边做一边亲一边摸免费视频| 绯色av一区二区三区免费看| 女人裸体无遮挡屁�| 91精品视频播放| 我和岳疯狂做爰免费视�| 精品国产�| 女人张开腿让男人捅到�| 亚洲毛茸茸户外撤�| 神马影院理伦| 日本好看的三�| 可疑的美容院在线播放| 扒开风韵美妇胸罩蹂躏在线视频| 婷婷伊人久久| 女生裸胸照片| 一级黄�**毛片| 丁香六月激情婷�| 日本少妇ⅹxxxxx视频| a级免费片| 国产一级片观看| 性欧美ⅴideo另类hd| 亚洲精品456在线播放dvd| 1一006女s调教女m| 骚综合网| japanes porn| 夜玩裸睡亲女小丹内裤传奇| 精品日韩欧美一区二�| 少妇av自拍| 青青草免费在线视频播�| 美女全裸动态图| 美女视频黄a视频免费全程软件axs| 91久久丝袜国产露脸动漫| 好爽要高潮了深点作文| 久久久免费观�| 全程穿着长靴做爰在线观看| 国国产片aa国国| 日韩午夜一区二区在线精品三级伦�| 91小仙女jk白丝袜呻�| 警花被扒双乳| 日本成人一区二�| 国产美女**毛片1| 美女直播露全身免费看| baby在线观看完整�| 扒开腿灌牛奶调教赵露�| 特黄色片| 高潮h玩具play失禁男男| 佐山爱av番号�| 亚洲精品色综合av网站| 日韩无字幕一区二区无字幕| 日韩一级电影在线观�| 我的女友小依�18�| 国产日本亚洲欧美| 主奴臀缝调教h| 欧美成人app| 97成人在线观看| 夜鲁鲁鲁夜夜综合视频欧美| 女人去农场与狼交小说| 99国语露脸久久精品国产ktv| 甘婷婷三级做爰电�| 136水嫩福利视频导航| 老卫淑容全文免费阅读| 少妇翘臀后进娇喘呻吟的最新动�| 国产粉嫩学生高清专区麻豆| 巨乳色在�| 日韩av新片�| 91精品爽啪蜜夜国产在线播放| 欧美污网�| 美女脱免费看直播| 亚洲天堂高清| 主播粉嫩国产在线精品| 丝袜ol篠田优在线播�| 奇米888一区二区三�| 国产suv精品一区二区四�99| 总裁受在工地被调教h男男| 公主被太监h各种姿势调教| 一级毛�60分钟在线播放| 日本少妇xx| 乱肉老太婆合集乱500小说| 日韩精品1�2�3�| 他的滋味电视剧免费观看全�| 双性cao成sao浪贱玩物漫画| 太大了轻点阿受不了小�| 操大�| 双性被脔日常h宫交| 浴室情欲2电影| 久久成人精品电影| 啊哈~嗯两攻一�| �100%裸体抚遮�| 嬷嬷羞耻调教后宫日常h视频| 国产伦理一区二区三�| 操女人逼电�| 被宠物狗扑倒后by笔趣阁免费阅�| eeuss影院�14�| 欲乱老太系列| 海外华人永久免费| 女攻男受极限调教高h| 打少妇屁股sp调教训诫| 太深了好疼轻点小�| 成年人网站免费看| 女人与公拘交酡全过程| 黄瓜污影�| av中文字幕一区二区三�| 护士放荡h文系�| 丰满年轻岳中文字幕一区二�| 操高跟美�| 亚洲精品一区二区三区樱�| 岳销魂呻吟肥臀小说| 正在播放国产对白| watch jav free jav online hd| 91一区二区国产好的精华液0| 亚洲成av人片在www色猫�| 浪漫樱花动漫在线观看免费| 免费一级欧美片在线观看网站| 亚洲同志gay1069蓝男�| 极品风韵犹存高潮少妇| bl强迫侵犯肉高h骨科年下| 成人福利影院| 国产又粗又长又大| 日韩高清二区| 一级淫片a慈禧秘史| 丁香花免费完整高清动漫观�| 办公室撞击着旗袍美妇的肉体视�| 极品久久久久久久| 意大利xxxx性hd极品| 高h啃咬花蒂np调教| 秋霞一区二区三区四�| 新午夜国�| 红豆视频电影电视剧免�| 狠狠爱一�| www.一级黄色片| xxxx69日本| 一区二区视频在线观看免�| av蜜桃一�| 欧美成人国产| 欧美黑人一区二�| 男生和女生日b| 在线论理电影| 强行宫交h哭np| 大乳女被狂揉gif动态图| 一女多男混交群体交乱小�| 女警撅着光屁股被调教| 精品白嫩初高中害羞小美女| 男男3p夹心边攻边受h| 国产又粗又猛又爽又黄的视频快8| 久久精品这里精品| 下载一级片| free性高�| 少妇沦陷黑人小说| 福利一区二区视�| 欧美日韩国产大片| 国产视频一区二区三区在线播�| free hd xxxx 4k videos| 激情网�| 上原瑞穗女教师在线播�| 国产精品偷伦免费视频观看�| 成年人黄视频| 辣妹子影视电视剧在线观看免费高清| 免费观看黄视频网�| 又色又爽又黄又视频毛�| 办公室夹羞耻调教主人亚洲观�| 一区二区三区视频在�| 被cao成sao货双性奶�| 亚洲人成电影网站�| 五十路黄色片| 好姑娘韩剧在线观看免费高�| 偷窥自拍色图| 七仙女欲春裸片在线播�| 五个丝袜老师榨精嗯啊哦哦图片| 亚洲免费视频�| 国产日日�| 我在开会他在下添得很爽视频| 久久在线免费| 中文天堂av| 台湾佬一区二�| 国产成a人片在线观看视频下载| 国产�20�| 伦理《法国护士长》电影完整版| 亚洲啪啪免费视频| 孕妇高潮抽搐喷水30分钟| 黑帮大佬和我�365� 第一�| 李丽莎无删减全部视频大全| 第四�26uuu| 免费观看特黄60分钟大片| 全免费a级毛片免费看视频�| 色婷婷国产精品一区二�| 韩国一级性生活片| 欧美性猛交xxxx乱大交久�| 苏晴忘穿内裤坐公交车被揉到视�| 赵露思下面好紧我进不�| 肉体啪啪撞击声呻吟声| 巨胸喷奶水www免费看网�| 亚洲区小说区图片�| 佛女双乳高耸嗯啊h| 玩np虐女重口sm粗口| 男女啪啪无遮挡高潮免�| 高潮videossex高潮| 国产对白乱刺激福利视频| 办公室狂肉校花h陈舒| 男女视频免费高清软件| 欧美天堂视频资源在线| 色悠�| 女s男m(高h)喝尿| 69日本xxxxxxxxx59| 插女人b视频| 91免费版成�| 成人在线视频一区二区三�| 一家人乱操| 久久夜色精品国产噜噜av小说| 亚洲国产精品午夜在线观看| 老司� av| 久久免费**| 韩国三级真的吃奶| 国产亚洲精品久久久久久豆�| 扒开她粉嫩的小缝尿进去h| 欧美精品hdvideosex4k| 脔到她乖h宫交| 女洗澡隐私免费视�| 婷婷玖玖| 亚洲自拍中文字幕| 小雷与婆高爱�27�| 男女视频免费观看| 国产3344在线观看视频下载| aaaa欧美| 国产japanhdxxxx麻豆| av最新在�| 国产帅男男gay捆绑网站视频| 乖不准高潮忍着调教| 少妇与大狼拘作爱性a| 999视频在线免费观看| 国内精品久久精品| 美女被羞羞的网站直播大全| 国产女人久久�| 国产高清视频在线一�| 黄色茄子视频| 女同桌喂我乳我脱她胸罩小�| 日本中文不卡| 久久王色禄象视频�| 公啊好嗯轻一点电�| 成人毛片av在线| 黄色a在线| 日韩一区二区在线电�| 好大好长好紧�69| free av hd video| 国产一级做a爱片久久�| 亚洲成人精品久久| 嗯啊奶子| 全黄h全肉短篇禁乱快穿男男| 嗯王楚然好紧好湿小说污文| 美女范冰冰hdxxxxx| 俄罗斯特级黄色片| 蹂躏清冷美人挣扎呻吟| 一级毛片免费视频观�| 女厕嘘嘘一区二区偷�| 黄色一级视�| 少爷被调教成禁脔h虐小�| 97精品视频在线观看| 激情都市av| 我和岳交换夫妇互换最新章�| 肖奈总h文肉�| ryⅰskyart超大尺度人体| 国产老头gay和老头gay视频| 影音先锋日韩| 黄警官遇险记| 国产伦子沙发午休| 貂蝉露出双乳求调�| 特级黄录像视�| 超级教师第三季免费观看全部剧�| 国产精品一区二区三区不卡视�| 色猫猫视频站| 小舞被黄动漫免费视频| 在教室轮流澡到高潮h| 免费激情影�| 亚洲精品v日韩精品| 粉嫩久久久久久久极品| 国产黄色短片| 少妇的丰�2韩剧| brandilove精品艳妇| 蜜臀久久精品久久久久久酒�?| 裸体精品bbbbbbbbb| 我的女邻居秘密在线观�| 丰满的欲妇在�| 99国产在线精品| 亚洲精品有限公司| 被同桌摸下面很爽h�| 欧美妇人zzzzo00xxxx| 性欧洲美女与动交zoz0z| �88久久久久高潮嫩草影院| 老司机午夜免费福�| 黄网91| 天天爽夜夜春| 欧美精品中文| 黄色小说亚洲| 疯狂挺进少妇岳小�| brazzers xxxxhd| 欧美的性生�| 日本va在线视频播放| 国产精品欧美综合| 穿裙子双腿打开露内裤的图片| 在线免费看av网站| 亚洲ww不卡免费在线| 图片区小说区号在线区综合�| 嫩草影院一�| 性少妇电�| 未满十八岁禁止入内的网站| 男男gaygays18中高�| 亚洲日日摸夜夜夜夜夜爽小�| 可疑的美容店免费观看完整版中文字�| 日本a级按摩片| 快色91| 被鬼强行侮辱糟蹋高h| 免费超爽视频在线观看| 中文av字幕在线观看| 国产毛片91| 天堂网久�| 义姐是不良妈�2在线播放| 91久久人澡人人添人人爽爱播�| 国产**毛片视频爆浆| 真空h调教1v1h视频| 久久日本精品字幕区二�| 欧美一二三四成人免费视�| 紧缚调教奴隷辱视�| 最近中文字幕大�2019| 被年轻教授肉失禁h| 囗交50个视�| hd moms porno videos| 在线播放av电影| 李丽珍蜜桃成熟时2| eutopia动漫在线播放第一�| 欧美日韩一码二码三区四�| 久一蜜臀av亚洲一�| 娇妻�4p�3个男人玩4p小说| 乞丐趴在黄蓉雪白肉体耸动| 免费观看又色又爽又黄的小说忠�| 免费观看全黄做爰的视�| 日韩中文字幕综合| 日韩av女优在线观看| 偷拍男女树林做爰| 日本va亚洲va| 国产欧美日韩亚洲另类第一第二�| 亚洲裸男自慰gv网站| 国产精品一区二区三区三�| 在野外被三个男人躁爽白浆视频| 久久精品一区二区国�| 绿色在线观看电视�| 国产超碰人人爽人人做人人�| 侵犯小男生h�| 最近免费中文在线大全高�2019| 免费的黄色直�| 91精品久久久久久久| 制服丝袜电影第一�| 中文字幕日产乱码中文字幕| 辣妹子视频免费看电视�| free日韩xxxxhd灌满| 年轻女教�8伦理| www.色哟�| 91麻豆精品国产午夜天堂| 亚洲理论一�| 日本a级按摩片| 一二三四在线高清中文版免费观看电影| 黄色精品一区二�| 一级毛片免费网�| 夫妻性生活黄色片| 欧美日韩在线电影| 久久久久久久久久久久久女国产�| 女侠沉沦哀羞迎合呻�| 99久久国产综合精品麻豆| 免费1级做55爰片l在线观看| 日韩激情综合网| 粉嫩国产精品| eeuss鲁一区二区三�| 五月天婷婷丁香综�| 精品女同一区二区三区亚�| chinese国产打屁股实�| 初爱视频教程韩国版免费观�| 色戒无删减电影免费观�| 精品综合99久久久久久www| 久久精品一区二区三区电�| 催眠调教班花成为肉奴| 天堂a在线中文在线新版| 一级片99| 黄色视屏免费在线观看| 《情欲电�3》在线播�| 屁股撅高bl玉势| 香蕉视频污污在线观看| bdsm性残忍bdsm| 影音先锋日韩| freewc女厕偷窥| free×性护士videos呻吟| 国产野外野战小树�18视频| 女人和公牛一级毛�| 在线免费黄色| 亚洲爱爱网址| 婚前试爱未删�144分钟| 夜玩亲女裸睡的小妍h污文| 中文字幕一区二区三区乱码不�| 欧美成人午夜在线视频| 裸体bbbbbbbbb视频| 久久日本三级韩国三级| 少妇口述疯狂的性经�| 国产精品毛片一区二区在线看舒淇| 勾勾人体做爰大胆视频| 潘金莲一级淫片aa| 韩国啪啪�| 我想看国产一级片| 《乳色吐息�| 久久久久99精品国产�| 国产靠�| 国产精品视频免费网站| 国产精品最�| www.7788久久久久久久�| 久久久久久久久女�9999| 欧美日韩在线播放一�| 久久亚洲精品国产一�| 久久久久亚洲国产| 激情视频小�| 嗯啊榨乳电流捆绑催乳乳环警察| 在办公室被老板调教bd| 好大好硬用力深一点视�| 淫宠(高h 1v1)| 午夜情趣视频| 日本sm凌虐bdsm视频| 《淫男乱女�| 蜜桃视频网站www| 滋润少妇h高h借种| 午夜在线视频一区二区区�| 草莓视频在线观看网址| 把孕妇爽到高潮孕妇视�| 毛片免费在线播放| 国产伦精品一区二区三区视频新| 国产精品腿扒开做爽爽爽挤奶网站| 亚洲精品电影在线观看| 秀婷好紧好滑好湿好爽在线观�| 久久久久电影网站| 日韩色在�| 又黄又爽又刺激又色的视频第0�| 亚洲自拍中文字幕| 亚洲性色av| 双腿吊起来揉捏调教h| 国产精品久久久久久久久免费高�| 和尚扒开双腿蹂躏h| 开车疼痛有声音免费软件大全下载| 女人张腿男人�| 丝袜调教女王国产绿帽| 人人鲁人�| 小受被按在墙上做腿交女女视频| 成年女人免费毛片| 亚洲高清精品在线| 秋霞网一区二�| 久久综合伊人一区二区三| 艳妇怀春h1v1媚姬| 先锋资源国产| 日韩在线视屏| 一级做a爰片性色毛片| 女警察高清一级毛片警花高清电�| 国产高颜值精品极品美�| 麻豆国产va免费精品高清在线| 亚洲综合网在线观�| 欧美r级高清无删减在线观看| 不卡中文字幕在线观看| 强制中出しバス黑人痴�| 冲田杏梨v999av| 日本护士69xxxxx高潮hd| 第一136av福利视频导航| 亚洲中出| 夫夫一起被调教双性总攻| 蜜桃精品在线观看| 韩国三级hd两男一�| 欧美999| 久久一区二区视�| 五个女一男调教圣水vk| ss少妇ss少妇bbw| 成人av18| 大吊一区二区三�| 法国做爰露性器50部安娜情欲史| 91精品对白一区国产伦| 操人视频网站| 安野由美中文一区二�| 国产一二三四五�| 躁躁躁日躁夜夜躁| 少妇愉情理伦片高潮情�| 子君阿豪大学交换女友小说| 一区丝袜内裤一区内裤丝�| 欧美18�20岁hd第一�| 丰乳肥臀av| 懂色在线播放一�| 亚洲图色av| 老师洗澡让我随便摸她视频| 曰批全过程又爽又大又�| 快灬福林再深�| 亚洲精品.com| 亚洲无限乱码一二三四麻| 91国偷自产一区二区三区水蜜桃| china嫩模极品videos| 渔夫荒淫艳史| 国内夫妇交换自拍愉拍| free性丰�69性欧美天�| 男人裸体�| 扒开腿狂躁赵丽颖爽出白浆| 交换配乱淫粗�| 小荡男娃h粗口农村| 日产精品久久久久久久| 午夜伦伦电影理论片大片按�| 欧美美女脱衣�| 登山的味�| 浓精堵住小腹鼓起h宫交| 成人短视频app怎么下载| 国产爽爽久久影院hd| 乳色吐息免费�| np高h肉辣灌浆调教肉奴| 日韩大片免费| 性公交车上激情电�| 欧美网站一区二�| 欧美日韩亚洲激�| 欧美一级毛片免费播放器| 久久久久成人免费看a含羞草久�| 日韩亚洲一区在�| 在线天堂8女优| 想看一级片| 97在线看片| 国产性做爰xxx| 电影《睫毛膏2》美国版| 亚洲精品大片www| 苍井空的黄色电影| 男女一边摸一边做爽爽的免费网址| 锕锕锕锕锕锕好深好多�| 色天堂视�| 侵犯女教师早川濑里奈在线| 被调教出来的骚b| 搞黄色无遮挡| sp羞耻调教打屁股跳蛋| 啊灬嗯灬啊灬用力点灬高潮�| 痴汉电车伦理| 日韩av在线网址| 伊人福利�| 亚洲国产视频在线| 无颜之月1~5| 9999久久久久| 少妇精品一区二区三区在线观�| 黑人bbwbbw性另�| 亚洲精品suv精品一区二�| 久久久做| 男人操女人逼网�| 又湿又黄裸乳漫画无遮挡网�| 暖暖日韩| 高h攻被做得榨干�| 开荤粗口h篮球体育�| 大狼拘与少妇牲小�| 总受大胸奶汁(高h)| wwwxxxx免费| 五月99久久婷婷国产综合亚洲| 少妇按摩到高潮顺势进�| 韩国理伦片手机观�| 国产夫妻av在线| 国产草草影院| 伊人网综合在线观�| 欧美精品一区二区三区久久狼| 日韩久久久久久久久久久久| 你懂的视频在线免费观�| �**视频一级毛�| 玩两个丰满奶水在线播�| 黄色一及视�| 欧美日韩水蜜�| 57pao成人国产永久免费视频| 浑圆乳房大力地揉搓着h| 男男放荡人体改造重口虐�| 国产又黄又爽刺激的视�| 情欲小说录目伦短�500| 欧美精品亚洲精品| 国产9999精品| 日韩午夜视频在线观看| 91插插�| chinese护士白丝榨精| 法海强占白素贞的第一�| 乳色吐息在线免费�| yy1111111少妇光屁�| 被cao哭高h调教1v1h奶瘾| 女人被啪到高潮gif无遮�| 在线男人天堂�| 国产主播一区二区三�| 《乳色吐息》在线高�| 国产精品99久久久久久人红楼| 抖音符号图片| free厨房18sex性hd| 小镇姑娘电影在线观看| 强壮的公次次弄得我高潮在线观�| 伊人久久久久久久久久�| 神马午夜三级| 猛烈挺进高潮失禁h| 免费av黄色�| 美妙天堂第二季免费观看全集完整版高清| 欧美a级黄�| 偷拍苏州女厕正面嘘嘘视频| 教室脔到她哭h粗话h| sis001board第一会所原创�| 欧美做爰爽爽爽爽爽爽| 全黄h全肉禁乱np3d| 丰满少妇被猛烈进入高�| 亚洲欧洲精品一区二区三区不�| 老师扒开腿让我c| 激情九月婷�| 中国xxxx性xxxx产国| av在线免费观看中文字幕| 男人猛躁进女人免费视频看n| 中文字幕乱码播放| 性明星video另类hd| 中国少妇热妇xxxxxxxxx| 被从小调教的双性国师h| 中文字幕午夜乱理�11111| 男生和女生艹�| 日韩欧美不卡一区二�| 色哟哟国产精品视�| 亚洲另类一二三�| 日本一区二区三区在线免费观�| 自拍视频在线播放| 囚禁(bl强制� 高h 1v1)| 本子全彩| 白嫩丰满白屁股βbbb| 日本久草视频| 日本三级在丈面前被耍了| 国产紧身裤美女高潮在�| 国产精品久久久久久久av福利| 日韩精品在线免费观看视频| 日韩aa毛片| 男人打飞j视频免费网站| 日产中文字幕一�| 全彩水冰月熟睡侵犯h| 女子监狱性艳史在线观�| 免费在线观看一区二�| 中文字幕免费一�| 国产性猛交××××乱七区| 高潮叫床�| 亚洲国产网站在线观看| 攵女乱h边做小雨| av免费观看在线| 少妇wbb搡bbbb揉bbbb| 韩国三级中文字幕| 女人与拘的交酡过程视�| 女仆被到爽高潮痉�| 欧美乱大交xxxxx古装| 高冷美女被灌醉无力反�| 折腰全集在线观看免费播放| 富二代狂c嫩模h| 东北成熟少妇在线视频| 91嫩草国产�| 国产性生交大片免�| 亚洲免费观看在线| 尽欢年代秦霜与陆占康小说�25�| 羞辱调教有夫之妇| 伊人逼�| 艳妇诱春h容子�| 男人操女人逼网�| 欧美韩国日本一�| a**站免费观�| granny porn| 女人张开腿让男人捅视�| 女人叉开腿让男人�| 欧美成人午夜免费视在线看�| 92福利视频午夜1000合集在线观看| 男主是蛇的h啪肉np�| 极品少妇xxxx精品少妇偷拍| 野外一级毛�| 日韩精品91亚洲二区在线观看| 欧美h版电影在线观�| 乳夹 调教 鞭打 惩罚 sm| 女生胸无遮挡| av在线不卡免费观看| 女邻居教我做�| 男生操女生视频软件下�| 看全色黄大色大片| 娇妻系列交换27部多p小雪| 爽好大快深点视频| 小镇姑娘电影在线观看完整�| 成人免费视频大全| 小sao货cao得你舒服| 日韩午夜�| 好吊色欧�| 口述娇妻4p被三个男人感�| 娇妻自愿接受扩张调教| 女人和男人上床视�| 日韩不卡在线观看| 秘书办公室摸她奶呻吟电影| 国产一级淫片在线观�| 日本中文字幕一区二区有限公�| 亚洲精品国产suv| jav japanese| 美女黄色一级片| 老公一直都穿女士蕾丝内裤正常吗| 精品国产成人av在线�| 午夜�| 久久久久久久99精品免费观看| 双性皇帝龙椅腿合不拢h| 高辣h文乱乳h文公车快�| **高潮大荫蒂毛茸茸| 极品美女av在线| 精品视频在线观看一�| 白袜男男gay互吃鳮吧网站| 亚洲 小说 欧美 激� 另类| 久久久久久国裸歌舞团| 快穿青梅被从小肉到大h| 啊…嗯在情趣店被调�| 少妇中出视频| 国产chinese男男gaygay网站vk| 五月天中文字幕在线观�| 媚药狂c躁到高潮失禁h�| 婷婷好色| 炮机高潮痉挛哭叫失禁| 成熟亚洲日本毛茸茸凸�| 丰满白嫩尤物大尺度私房照| 偷拍各种美女wc嘘嘘视频| 大胸美女裸照| 美女一级全黄大�| 国产精品一区二区三区四区视�| 教室里调教大乳奶牛老师视频| 91麻豆传媒| 少妇做爰免费视频网站动漫| 国产对白精品刺激二区国语| 护士月月的内裤奇缘大团结| 扒丝袜免费午夜在线观看视�| 一级片av| 日本xxxxxxxxx69| chinese国产打屁股实�| 巴西free性满足hd18| 黄色软件茄子视频| 黑色圣经第一季未删减在线观看| 国产黄免费在线观�| 揉捏雪乳乱颤娇喘连连| 老妇女大炕性启�| 亚洲图片 自拍偷拍| 国产综合一区二�| 日韩成人免费在线| 色黄大色黄女片免费看直播| av中文资源在线资源免费观看| 亚洲精品无线乱码一�| 日本又黄又爽gif动态图| 三级福利�| 亚洲电影自拍| 拔萝卜高清视频免费播�| 小稚嫩紧窄h发泄调教| 国产少妇国语对白�| 男性性器被各种虐�| 妖神记污文全文肉高h后宫| 男男进入最深姿势图| 国产一区二区三区高�| 女上男下啪啪激烈xo动态图| 印度美女少妇bbw| 精品少妇一区二区三区视�| 在课堂上做性示范小�| av片播�| 欧美xxxxhd| 淫男乱女小熊性事| 无人播放电视剧在线观�| 精品国产伦一区二区三区观看体�| 91精品国产91| pornoxxxx15老师| 亚洲黄色三级电影| 色戒未减�| 国产精品久久久在线观�| 久久久国产精品午夜一区ai换脸| 公和我边做边爱边好爽在线播放| 国产大尺度自�| 台湾佬中文娱乐网22| 我就要你电影免费观看| 男女啪啪高潮�| 性爱视频在线播放| 玉腿雪白丝袜美腿抽搐| 父欲by金银花露原文笔趣�| ass日本另类肉体图pics| 中文字幕日韩一区二�| 日本伦理电影中文字幕| 操大逼视�| 明日花snis885在线播放| 97精品国产97久久久久久免�| 色偷偷噜噜噜亚洲男人的天�| 好多水视�| 老师扒下内裤让我大爽了一�| 白洁性荡生活全文阅读| 欧美一区二区大�| 又大又爽的免费视�| 欧美性另�69xxxx最新章�| 三级全黄裸体在线观看欲奴| 梦莹情乱全部txt| 亚洲精品六区| 91污视频app| 自拍偷拍一区二区三�| 在线视频欧美亚洲| 【快穿总攻】我给主角当�| 五月婷婷亚洲综合| 丰满岳乱妇bd在线观看k8| 欧美又大粗又爽又黄大片视�| 大象视频一区二�| 嗯~啊~别c了~尿了~啊哈男�| 成人毛片视频免费| 《色戒》无删减版在线观看免�| 春色校园综合激情亚�| 一区二区三区激情电�| 男jⅰ大巴进入女人视�| 偷拍美女撒尿1000例视�| 日本狂喷奶水在线播放212| 双腿吊起乳夹女仆调教| 韩国主播福利一区二区三�| 一边摸一边做一边呻�| 高h爱爱小说| 故意穿暴露被强好爽h明星| 精品国产18久久久久久白浆软�| www.�| 国产免费又色又爽又黄软件| 浪荡小受挨cao日常| 小妖精好紧好爽再浪一�| 欧美疯狂做受xxxx高潮小说| 国产精品�| 口述老男人让我呻�| 男女ss视频| 国内自拍偷拍�| 久久视讯| 在线观看黄av| 丝瓜视频黄色软件| 古装一级毛�| 色婷婷国产精品久久包臀| 一男一女一级毛片免费视�| 女人下面喷水视频| 九九若伊�| 寂寞少妇的诱�| 高清wwwwwxxxxx| 男男gay调教feet贼奴vk| chinese裸体猛熊男gay| 国产一区电影在线观�| 亚洲天堂av观看| 日本黄色小视频在线观�| av中字在线| 夜夜操夜夜爱| 国产寡妇精品久久久久�| 欧美精品色哟�| 老款银杏app官网| 污媚娘导�| 国产高清不卡视频| 日本把胸露出来给人揉| 伊人久久网站| 野本美穗全部三级| 欧美一区二区三区免费视�| 欧美久久影院| 伊人春色成人�| 日韩中文字幕永久| 《丰满老女人》伦理hd| 国模精品一区二区三区色天香| 农场主家的女儿们| 啊灬啊别停灬用力啊岳| 久久久久久免�| 国产乱对白刺激在线视频| 国产男女做爰高清全过小说| 伊人视屏| 亚洲欧美视频二区| 好姑�5免费观看全集| 男女涩涩视频| 中文字幕成人�| 麻豆精品国产91久久久久�| 龟甲系列小说在线阅读全文| 李丽珍毛片未删减免费观看| 直男被强肉到失禁h�| 黄色视屏免费| 日韩欧美视频一区二�| 挺进h嗯呜啊h出去h| 好姑�8免费观看完整版中�| 国产原创一区二�| 男女无遮挡xx00动态图下载| 成全动漫电影大全免费观看完整版高�| 娇妻接受�3p全文| 朱茵三级未删版电影制�| 看美国一级片| 国产边做饭边被躁bd| 日本免费三区| 国产成人精品免高潮费视频| 美女扒开腿直让男人桶| 99久久99久久精品| 好看的三级黄带片| 亚洲一本一�| 办公室撞击穿旗袍老师的肉臀长篇| 各种姿势被陌生人高h男男�| 痴人之爱电影在线观看| 公车上拨开被内裤进入的小说| 十八岁的天空 电视�| 亚洲欧美精品沙发| 全黄h全肉短篇禁乱sm哑巴| 日本中文字幕在线免费观看视频| 国产精品jizz视频| 他的巨物撑开她的花缝| 惊弦2023连续剧免费观看孙红雷| a在线观看视频| 欧美韩精�| 91插插插网�| jizz女人水多| 中国一级特�**毛片免费观看| 特级西西人体444www高清| 汁大总攻肉h快穿c各种受动�| 攻把受从小睡到大的h�| 久草高清| 日本19禁啪啪吃奶大尺度| 老师好紧情趣内衣免费| 国产精品美女www爽爽爽动态图| 久久国产这里只有精品| 99精品网站| 国产无遮挡猛进猛出免费软�| 超级教师3免费观看全集| 日本无遮羞调教打屁股的视�| 老师诱人的乳�| 西西人体大胆www444| 男人一边吃奶一边做爰视�| 乱淫的女高中暑假调教| 嗯~啊~弄嗯~啊h高潮男男视频| 美女张开双腿让男人捅| 东北少妇国语对白吞精| 欧美成年人在线视�| 原神妮露裸体被羞羞漫�| 好大好爽好硬| 嗯~啊~快点死我网站在线观看| 内衣办公�1卷一3卷动�| 要灬要灬再深点灬受不了视�| 黑人巨大亚洲一区二区久| 秋霞影院午夜丰满少妇在线视频| 明星杨幂黄强和刘诗诗小说| 德国free性video极品| 女性私密紧致按摩电�| 国模大尺度一区二区三�| 男男肉互攻揉屁股h| 亚洲黄色免费网址| 国产区欧�| 嫩草精品视频| 双乳男涨鼓鼓奶水h| 日本一本在�| 九九热在线播�| 国产精品成人久久| 福利视频亚洲| 成人在线视频精品| 高潮h跪趴扩张调教男男软件| 少妇白txt洁完整版下载| 免费黄色一级毛�| 浓精h攵女乱爱av| 色综合精品视�| 极品教师第三季免费完整版电视�| 一级床�45分钟的视�| 淫辱的秘书调教高h(抖m�)_| ass白嫩白嫩的少妇pics| 动漫hentai3d挠双乳vk| 欧美 日韩 成人| 放个黄色�| 欧美国产日产一区二�| 小毛片下�| 被教官们狂c躁到高潮失禁漫画| 李丽莎销魂大胆视频在线观�| 精品一区二区三区免费观�| japanesesexav| 国产又黄又粗又猛又爽视频| 国产精品久久精品久久| bl高潮h跪趴扩张h| wc偷拍嘘嘘视频一区二区在�| 夜夜爽影�| 欧美黄色一级生活片| 成人网页在线观看| 好舒服好�| 青娱乐最新视�| 内涵av入口| 欧美另类极品videosbest最新版�| 日韩精品视频免费专区在线播放| brazzers精品成人一�| 国产欧美日韩一�| 黄色一级电�| 国产精品自拍三区| 在线黄色毛片| 久久久久久婷| 不要了啊h| 全肉乱妇杂乱视频在线观看| 兔子先生第一�| 女人与zzzzxxxxoooo| 哺乳期色妇videos| 偷拍亚洲一区二�| 女free性zozo交体人内�| 国产草草| 舒淇三级全黄无删减版| �99久在线观�| 欧洲激情一区二�| 国产啪一�| 国产伦理精品一区二�| 男男高潮play肉车失禁文章| 男人高潮真实叫床声mp3| 媳妇周莹小说全文阅读| 一级毛片不卡直接看| 大尺度做爰床戏呻吟皇�| 欧美三级电影免费观看| 娇妻被各种刑具调教h| 武松与潘金莲电影| 日韩a**�| 亚洲专区在线视频| cao死你小sao货h| 中文字幕一区二区三区免�| 出差被夫の上司持�91精品| 欧美精品啪啪| 仙子被仇人调教成禁脔h快穿| 日韩欧美aⅴ综合网站发�| 我好饥渴好想被cao| 日产精品久久�| 伦亲攵女h文最�1v1| 国产主播直播作爱在线| 浪荡性瘾的公主h| 灰原哀撅着屁股求调�| a视频免费在线观看| 《太平公主秘史�| 成年人在线免费网�| 美女下半身无遮挡免费网站| 国模青青| 亚洲一二三视频| 中文字幕亚洲欧美另类| 色屁屁xxxxⅹ免费视�| 中国性xxxxx极品少妇厨房| 古装大尺度床戏无删减�| mm1313又粗又大受不�| 欧美xxxxb| 欧美8一10稚交| 啊哈嗯哼用力| 师尊之h啪肉np�| 国产99久久久欧美黑�| 翁与小莹高潮连连�9�| 亚洲成av人片在线观看香蕉| 少妇bbxx| 国产肉体xxxx裸体785大胆| 男女羞羞视频网站免费| 久久99精品久久久久久久青青日本| 亚洲伊人久久综合| 天妒红颜小说| 公和我边做边爱边好爽| 女帝被主人调教成胯下玩物| 高潮h跪趴扩张调教男男视频| 皇帝蹂躏玩物h| 医生肉到失禁高h| 国产永久免费av| 污污网址在线观看| 原神涩涩同人18网站| 体育生被强到爽哭高h�| 91丁香| 一女二�3p啪啪图动�| 女主播户外勾搭路人啪�| 欧美精品码一区二区三区免费观�| 久久黄色片视�| 色婷婷av一区二区三区丝袜美�| 日本无遮挡吸乳呻吟免费视频网�| 美女三级�| 小妖精又湿又紧真�| 青娱乐极品视觉盛宴av| 全黄h全肉短篇禁乱sm男男软件| 国产三级在线播放| 办公室韩国电�| 国产精品自拍小视�| 欧美一区二区三区免费电�| 国产在线日本| 性欧美极品ⅴideossexo| 锕锕锕锕锕锕锕锕再深两个�| 我们�2018免费观看大全最新一�| 巨胸喷奶水视频www网站| 亚洲精品一区二区三区四�| 在线视频久久| 13小萝莉裸体视频网站www| 3d开机号30�| 国产国语一级毛�| 青娱乐精品视频在线观�| 当众喷奶水nph| 理伦糟蹋女兵电影| 欧做爰aaaaxxxxx69�| 国产又粗又爽又猛又黄的视�| 虐肉调教np重口入口| 日日操日日爽| 男男调教小黄�| 96久久欧美麻豆网站| 乱系列艳妇乱小说| 艳妇诱人的欲乱生�| 一级毛片aaa| h乳浴室教练h| 成年人黄色一级毛�| 国产精品成人av片免费看最�| japanesespank国产调教| 张起灵调教喷水沦为肉奴视�| 免费黡色av| 日本三人双渗透videos| 女攻 总攻 调教 高h 道具| 国产91成人| 女人脱了内裤让男人桶爽小�| 疯狂揉小核到失禁喷水h视频| 日本大胸少妇| 性迷宫电影在线观�| 卧底受被黑道调教h肉男�| 免费视频看大片在线观�| 国产毛片乡下农村妇女bd| 美美哒影视剧在线观看| 鲤鱼乡啊太粗太快了bl| 熟睡中被进了h青梅| 电视�:一级黄色片| 我们到此为止短剧免费观看| jijzzizz老师出水多国�| 在线播放免费观看| 天天爽夜夜爽夜夜爽精品视�| 国产精品美女久久久久久网�| 欧美特黄录像| 欧美激情片一区二�| 国产主播专区精品| 大香伊人av| 狐妖小红娘全集免费观看完整版| 姉とボイ�| 男女爽插�| 在我内裤里放3个震蛋器嗯啊| 欧美综合偷拍在线另类小说| 女强制男h�| 啊灬啊灬啊灬快灬深用力sm| 青草青草久热精品| 很黄很黄的借种小说| 三级黄网�| 丰满大乳伦理少妇| 免费av影视| 44382亚洲最大成人网| 717电影网good理论片hd| 日韩美女啪啪| 电影淫花�| 被门卫老杨蹂躏的校�| 中文字幕中文字幕中文字幕| 很黄很色的视频在线观�| 丰满少妇被猛烈进入在线观�| 精品视频在线一区二�| 攵女乱h系列小说欧阳�| 欧美午夜性春猛交xxxx竹菊| 日韩精品久久一区二区桃�| 里菜的痛3d游乐场卡住在哪看| 岳乱史系列小说合�| 国产精品第二�| 把高贵校花催眠成母狗小说| 女邻居的大乳| 黄av免费| 嗯啊好舒服h| 色多多污app| 女女高潮h冰块play失禁百合| 短篇肉文h| 天天狠天天透天干天天怕∴| 久久久久久香�| 国产高清av在线一区二区三�| 娇喘h1v1喷水| 99久久免费精品国产男女性高�| 五通神魔之三只狐仙免费冰河剧集| 与动人物交配xxxx| 50岁女人毛�| 亚洲一区二区动�| 一�**免费观看| chinese gay av| 131美女视频黄的免费| 午夜免费成人| 国产成人3p视频免费| 男人添女人囗交图| 污污网址在线观看| 女人本色wwwwww高清视频| 射射射av| 毛片.com| 俊美娇妻被淫�| 欧美男男大粗�1069| 久久久精品一区二�| 精品99爱视频在线观�| 草莓视频在线播放| 丝袜脚交av| 天天插天�| 色猫软件| 70一80老太婆性视�| 亚洲欧美精品一区二�| 男模脱裤子全身精光gay| 成人激情在�| 浪荡h啪肉np文肉在线观看| 影音先锋中文字幕在线播放| 羞羞视频免费视频欧美| 今天的高清视频免费播�| 一本色道久久综合亚洲精品高�| 四虎成人精品永久免费av| 我的姐妹韩剧免费观看| 北岛玲一区二区三区四�| 亚洲欧美伊人| a级毛片毛片免费观看久**| 伊人小视�| 帅气校草被下药调教成奴的图片| 国产一级黄色影�| 女虐女小说重口便�| assbbwbbwbbwbbwbw精品| 男人女人做爰高潮视频| 调教哭喊惩罚颤抖浣肠男男| 黑人三级视频| 色婷�88av视频一二三�| 亚洲人成激情在线播放国| 好爽好想�| 成人18视频在线观看| 亚洲国产中文在线二区三区�| 看韩国黄色录�| 在线看一级片| 天天鲁一鲁摸一摸爽一爽视�| 国产尤物一区二区三�| 女拳�| 天天操夜夜操天天�| 80岁色老头69av| 亚洲无限乱码一二三四麻| 456免费视频| 日本大尺度吃奶做爰电影啊荒野| 色老头av影院| 久久精品�| 手机av在线网站| 韩国电影《办公室�| 久久亚洲sm情趣捆绑调教炮机| 天天色天天射天天�| 中文字幕视频在线免费| 香港三级精品三级在线专区| 风间由美 torrent magnet| 免费男人添女人下部高潮全视频| 手伸进了少妇丰满的乳罩里| 中文字幕视频一�| 极品少妇一区二�| 91香蕉视频�| 九色电影| 欧美一级片在线观看| 黄瓜视频下载| 我被带到满是性玩具的房间挑调| 超碰在线影院| 在线不卡日韩| 生活片av| 乌克兰极品少妇xxxx做受小说| 97欧美一乱一性一交一视频| 国产乱妇无情大码91| 偷拍大众浴池精品视频在线播放| 啊灬啊灬啊灬啊灬快灬深用力倪楠| 老扒+夜夜春宵+第五部分| 亚洲无人区一区二区三区入�| 中文字幕一区二区三区不卡在�| 在线看免费黄色片| 黄金调教一视频丨ⅴk| 西西人体流白�| 国内偷拍精品视频| 亚洲专区欧美| 美丽姑娘国语免费观看全集| 爱情岛论坛永久亚洲品�| 青草综合| 美女扒开粉嫩的尿囗给男生�| 校花被c成sao货调�| 偷窥36女厕美女撒尿大全| 宅男噜噜�66一区二�| 三级做爰高清视频| 国产亚洲精品美女久久�| 国产精品视频一区二区三区四蜜臂| 挤公交挺进少妇身�| 奸少妇小�| 曰本人老少配bbbw| 在线看羞羞视�| 女优久久| 国产精品高潮呻吟伦理之爱�| 久草福利视频| 三级黄色片免费网�| 男女午夜爽爽视频| 美玉足脚交一区二区三区图�| 青青草精品在�| 亚洲爱爱电影| 师尊的羞耻调�(高h,1v1)| 王丽霞张娟完整版| 字幕中文叶山小百合av| bdsm一级虐bdsmhd| 极品美女被洋外教啪啪| 大肉大捧一进一出好爽游�| 欧美日韩免费高清视频| 国产精品推荐天天看天天爽| porno18日本老师 hd| 亚洲国产精品久久亚洲精品| 国产伦精品一区二区三区免�| 在线精品免费观看一�| 国产一二三区免费观�| 和黑人啪�| 国产福利第一�| 心居电视剧免费观看全集完整版| ed2k://file 尤物| 被两个师尊按着做高h| 农村大白腚妇女偷�| 冰帝之辱乳喷高h�| 精品福利一区二�| 噼里啪啦动漫完整版高清免费观�| 啊灬灬用力灬嗯灬np黑视�| 一级午夜aaa免费看三�| 日韩精品视频在线观看网站| 99蜜桃臀久久久欧美精品网�| 波多野结衣痴汉电�| 欧美黄色a级片| 美女高潮动图| 51国产偷自视频在线播放| 禁欲系大尺度无删�| 双性巨龙被迫承欢陌生人h| 国产精品自拍av| 国产一区二区三区在线免�| 一级黄色大片在线观�| 日韩一区二区三区免费视�| 91亚洲精品久久久中文字�| 最好看免费观看高清视频�| 日本japanese丰满bbw| 虫族之红屁股的诱�| 国产99视频精品免视�| 日韩一区二区三区中文字�| 体内s尿慎入h( 调教)| 国产精品久久久久国产a�| 和漂亮的女老板做爰| 魔王逆谋未删�| 被警察c哭高h野外糙汉| 人妖高潮videosse抽搐合集| 摸进她内裤里疯狂揉她的小�| 亚洲精品福利�| 91麻豆精品国产91久久久久�| 埃及艳后荒淫史未删减完整�| 高h失禁肉汁文百�| 男人添女人下部添到高�| 377人体粉嫩噜噜�| 体育生的欲乱h淫体育会| 宝贝乖~张开腿我轻点高视�| 司令脱裤子裸体恋老小�| 把腿岔开不许穿内裤视频漫�| 99久久精品毛片免费�| 裸体女人a级一�| 女主重生变娇媚体制全文阅�| 国产中文字幕毛片| 少妇在厨房与子伦| 小坏蛋快阿受不了好爽| 欲色网站| 中文字幕激情在�| 杨家将外传何�32章小说免费阅�| 禁漫天堂漫画网云�| 日韩三级影视| 继夫猛烈h继攵稚嫩1v1小说| 么公的好大好硬好深好爽视�| 欧美韩国一区二�| 麻豆手机在线观看| 91久久偷偷做嫩草影院电 导演介绍| 国产gaygay男男网站| 偷窥者大尺度无删�| 黑人巨大精品欧美一区二区免�| 在线观看免费观看最新电影高�| 裸男服务按摩猛男| av免费观看不卡| 欧妇女乱妇女乱视�| 91果冻视频| 双性高h浪荡美人被cao到哭| 少妇在线观看888视频| 在线播放女人和拘做受| 稚嫩诱骗初次h| 亚洲欲妇xxxxx69| 快点cao我要被cao烂了视频| 国产黄色av网站| 欧美大胆性生�| 啊~嗯~挨视频免费看啊h| 国产精品果贷一区二区借贷�| 叶子楣三级裸体未删减�| 欧美黑人巨大丰满少妇免费| 爱如潮水日本免费完整版观�| 一二三av在线| 亚洲国产又黄又爽女人高潮�| 黄色电影在线免费观看| 欧美国产日韩在线播放| 国产交换系列| 美女在线视频一区二�| 丝瓜视频黄色软件| 91精品国产综合久久久蜜臀九色| 精品在线观看免费| 欧美成年性h版影视中文字�| 国产777�777| 日本无遮羞打屁股网站视频| 少爷.婢女.�.高潮.颤抖| 男生摸女生下面的视频| 臣服**的贱�| 成人精品人伦一区二区三区水�| 寡妇高潮与继�| 中国丰满裸体人体裸模外拍�| a点w �| 肉色丝袜脚交xx69| 丁香月婷| 青青青视频自偷自�| 啦啦啦免费高清视�| 少妇荡乳情欲办公室手机网�| 午夜免费福利电影| freeyoujizzxxx| 啊灬啊灬啊快日出水了国内| 国产精品久久久久久久久久久免费看| 91九色丨porny| 99免费视频精品| 小少妇ass浓pics| 日韩成人影院在线观看| 快猫成年�| 极品少妇张妍的呻�| 国产精品久久久久久无人区| 97福利�| 日本亲与子乱αy| 久久精品视频91| 东北往事在�| 国产gay男性玩奴sm| 台湾�22| 久久人人爽av亚洲精品天堂| 欧美日韩国产亚洲乱码字幕| 印度女人性猛交视�| 法国艳妇bbw| 韩国毛片在线| 露出调教羞�91九色| chinagay男男激情视�| 殿前欢金银花原文| 日本三级欧美三级人妇英文| 国产精品一区二区毛�| 国产91日韩| 99riav视频一区二�| 欧美日韩国产第一�| 黄频a| 成年片人尤蜜免费视频| 名器精品h攻略多男高h| xxxxbdsmsex捆绑高清| 777国产成人入口| 审神者被肉到失禁h�| 黄色肉小�| 少女大人15集观看免费高�| 再来一次好吗动漫免费观�| 国产精品一二三区夜夜躁| 国师被调教串珠灌满酒走绳| 久久九九久精品国产免费直�| xxxx野外性xxxx| 裸体男女树林做爰| 久久国产免费观看精品3| 欧美人与禽zoz0善交找视�| 一级黄色片在线播放| 高义日白�| 美女被人�| 俺来也在线视�| 夜夜爽一区二区三区视�| 极品美女嫩模瑶瑶大尺度啪�| 国产在线观看免费网站| 泡芙视频成人黄版免费下载| 91精品国产综合久久久久蜜臀| 国产婷婷综合�| 亚洲国产精品精华�999| 偷拍亚洲精品| 男男啪啪做爰高潮全过程软�| 大陆一级毛片视�| 巨胸喷奶水wwww贱多视频| 欧美激情直�| 吃奶边摸边做边爱| 麻豆传谋免费观看全集高清| 一区二区视频免费在线观�| 韩国伦理一区二�| 在线国产三级| 欧美放荡的少�| 孕妇孕交生活片免费看| 快奸高h| 他扒开我的内裤把舌头伸进去视频| h高潮嗯啊娇喘抽搐高h同桌| 奶水被挤得到处喷hnp| 浣肠淫辱女校�| 日本欧美国产| 免费观看无遮挡又黄又爽网�| 国产精品av久久久久久无| 公交车宝贝别夹那么紧�| 免费全黄—级裸片视频| 少女教育动漫全集观看| 亚洲自啪| 欧美性生活一�| 宝贝乖女的奶水调教乳孔h| 和女警少妇性事| 久久久性生活片| 狠狠狠狠狠干| 男人使劲躁女人使劲叫| 色婷婷精品久久二区二�| 挺进美艳麻麻肉体冲刺视频| 亚洲国产精彩视频| 色戒未删减免费观�| 少爷撅着白嫩光屁股被打作�| 很黄很色很爽的视频免�| 中文字幕av不卡在线| 久久久久一�| 国产精品美乳在线播放| 色综合中�| 花房姑娘免费�| 国产成人精品高清久久| 啊啊啊操操操| 中文字幕�9�| 英国一级黄色片| 天天操夜夜操狠狠�| 一级特大黄a爱片免费免免| 亚洲精品久久久打桩机小说| 被男医生添了一个多小时| 日韩第一精品| 亚洲精品美女久久久久久久久久| 扶着硕大进了她的身体h古代| 一区二区激情日韩五月天| 老太婆裸体高潮视�| 日韩中文字幕2019| 偷窥美女换衣�| 和欲奴一样大尺度的电�| 国内丰满少妇猛烈精品�| 日本精品在线观看| 我和岳疯狂做爰免费视�| 偷拍视频第一�| 美丽姑娘高清电影免费观看| 艳妇名器紧窄迎合小说御心香帅| 美女脚底�| 田曦薇喂我乳我解开她胸�| 18亲胸揉胸膜下刺激| 亚洲视频欧美视频| 免费av视屏| 双性强行戴上乳环蒂环调教小�| 男男3p视频| 日日射天天操| 王爷攻暗卫受抵开双腿h| 日韩一区二区观�| 亚洲国产97色在线张津瑜| 国产大学生毛�| 福利日韩| 亚洲伊人精品| 男男捆绑挣扎呻吟调教视频| 久久福利电影| 我们�2018免费观看腾讯视频| 上原亚衣女教师在线观�| 国产剧情av引诱维修�| 男女后进式激烈xx00动态图| 太大太猛太深太粗太爽�| 国产丰满精东videossex| 女尊调教夫奴屁股play| 日韩18p| 高h引诱含整夜不拔h1v1| 公翁与晓晴在厨房小说| 美女靠逼软件下�| 同性做爰电影《夜》在线观�| 欧美69影院| 调教的闷骚娇妻h| 韩国三级日本三级香港三级�| 黄色在线电影网站| 日本aⅴ亚洲精品中文乱�| 下载靠逼软�| 国产理论片午午午伦夜理片2021| 欧美福利精品| 大胸喂奶秘书3p高h| 德国一级黄色片| 小雪婷性欢爱全文阅�| 春雨电影大全免费播放电视�| 91佛爷36分钟八次高潮| 变态tickle挠裸乳日本网�| �2个男人伦高潮�| 一级片免费在线观看视频| 日韩激情四�| 色哟哟哟www精品视频观看软件| 求饶哭泣抬高双腿h| 老师我好爽再深一点好�| 雷电将军裸身被羞羞漫�| 富婆裸体按摩到高�| 日本一级淫�1000�| 护士的色诱k8经典�| 红豆影院电影电视剧在线观�| 18亲胸揉胸膜下刺激| 国产a做爰全过程片| 精品欧美一区二区在线观看欧美熟| 十七岁电视剧日本| 天天插天天狠| 不卡一区av| runaway免费高清在线观看电视�| 水野优香在线一区二�88| 被痴汉强肉h短篇| 好大好硬好粗| (高h,饥渴�)男男| 教练把舌头伸入我下身视频| 河北彩花av在线精品| 海桡依旧笑春风短剧免费观�| 夜夜爽天天操| 国产精品久久久久久久免费软件| 手机毛片电影| 国产调教在线播放| 在线免费观看一级毛�| 中文在线www| 稚嫩的小身子破开h| 双腿放在调教台上调教h视频| 男人干女人的视频| 边走边吮她的花蒂嗯啊| 国产三级三级三级2023�| 午夜秀场在线观�| 麻豆av一区二区三区久�| 孕妇被各种姿势c到高潮视�| 用力挺进她的花苞啊~�| 欧美视频自拍| jlzzxxxx18hd护士| 国产精品久久久电�| 《丰满的女邻居》电�| 大bbw另类交hd| 蜜臀忘忧草久久久久久久a�| 我和小三做又紧水有多�| 美丽姑娘视频观看完整�| 日韩精品一区二区三区丰�| 女性久久人澡人人添人人| 6969av| 美国xxxxwwww| 亚洲tv久久爽久久爽| free性护士vidos猛烈 主演| 黄色免费电影�| 国产白嫩精品又爽又深呻吟| 香软的从后抱住她futa| japanese强迫蹂躏| 99热亚洲精�| 小莹的性荡生活| 少妇丰满尤物大尺度写�| 精品福利在线| 国产精品免费视频一�| 国产一区二区自拍视�| 亚洲精品视频在线观看免费视频| 台湾永久免费视频| 特一级黄色录�| 免费丰满少妇一级毛�| 国产呻吟高潮| 摄政王受被攻h嗯啊巨肉| 客厅里撞击灌满h| 欧美日韩电影一区二区三�| 日韩av手机在线免费观看| 黑人做爰免费视频| 最近中文字幕在线播�| 隔壁寂寞的少�| 我叫林小喜在线阅�| 啊~用力cao嗯cao我视�| 揉捏饱满的双乳h田曦�| 亚洲专区在线| 美腿玉足一区二区三区视�| 男同黄色网址| 永久91嫩草亚洲精品人人| 日日噜噜夜夜狠狠爱视频免费樱�| 小树林的嗯啊呻吟浪荡视频| 啊啊啊快高潮了小说双�| 国产天堂av| 爆笑喜剧电影| �135综合�| 男生女生差差| 虐肉调教np重口入口| 99热在线免费观�| 欧美日本一本线播放| 清纯校花的被擒日常txt免费阅读| 蜜臀久久99精品久久久久�| 妈妈你真棒插曲快来救救我小说免费| 又黄又爽刺激小说| 女人借种一级毛�| 乳夹 震动 走绳play 调教小说| 亚洲gay无套男同| 亚洲成人日韩在线| 被部长灌醉后强行侵犯电影| 搞黄视频在线观看| jav hd video在线观看| 欧美成人精品第一区二区三�| 小舞隐私黄www网站视频| 顾家三个女儿小船全文| 亚洲欧洲日韩国产| 邪恶帝无翼乌福利全彩| 中文字幕一区二区三区手机版| 少妇把腿扒开让我�18| 原神涩涩同人18网站| 欧美�18| 男人揉女人摸下面视频免费| 中文字幕亚洲第一| 丰满岳妇乱中文字�| 国产精品久久久久久久久久iiiii| 2021国产在线视频| 亚洲精品久久久久avwww潮水| 欧美最大胆免费裸体艺术写真| 美女露出粉嫩的尿囗桶�| 女性叫床声| 免费在线观看黄色大片| 国内99视频| 国产成人麻豆精品午夜在线| 丝袜美腿小色�| 国产国语精品| 国产三级啪啪| 老太婆伦小说| 中文字幕在线不卡| 精品视频一区二区在�| x8�8成人成人少妇| 欧美精品在欧美一区二区少�| 欧美激情一二区| 让娇妻尝试两根一起进3p视频| 罚男仆夹震蛋器憋尿虐乳双性动�| **真事免费毛片| spermmania吞精合集| 俏黄蓉新婚夜全集全文阅读| 一分钟电影| 精品国产系列| 大乳女教师与护士在线观看| 久久久久久穴| 精品国产乱码久久久久久密�99| 国产一区二区三区视频网�| av番号搜索| 久久精品国产99久久�| 双性猛男被脔到怀孕h| 引诱亲女乱大全视频播�| 日本一本高�| 成人羞羞视频�| 国产精品国产三级国产传播| 久久久久亚洲精品乱码按摩| 啊灬啊灬啊灬快灬高潮动漫| 豪放女兵美国伦理版剧情介�| 猫咪av.com| 佐山爱拍的日�| 古装一级艳片在线观�| 久久精品国产99久久�| 一区二区三区四区视频在�| 小婷的第一次又紧又湿视�| 天天搞天天干| 国产一区二区三�| 少妇1111| 影视福利| 488yy私人啪啪�| 岛国精品资源网站| 欧美日韩国产精品一区二区亚�| 日日躁夜夜躁aaaabbbb| www.最�| 凸偷窥wc女厕高清视频| 另类亚洲激�| 丁香六月激情综�| 99精品国产高清在线观看| 口技姿势男人爽到�| 韩国三级�| 清纯校花被蹂躏h欲仙�| 亚洲视频在线免费播放| 丰满护士巨好爽好大乳动漫| 丝袜一区二区三�| 中文字幕视频在线�| 亚日韩欧�| 少妇久久�| 男男羞羞视频网站国产| 成人艳情一二三�| 被民工蹂躏的娇妻h| 强h被cao哭高冷受| 国产又黄又粗又猛又爽| 亚洲国产精品午夜在线观看| 羞羞视频破解�| 已婚少妇pk黑人老外| 最近更新中文字幕第一�| 亚洲第一视频在线播放| 被各种怪物触手h灌满高潮图片| 欧美天天�| 又黄又爽又刺激的视�| 欧美精品在线�| 国产不卡毛片| 6080yy伦理亚洲第一�| 久草在线在线精品观看| 欧美男同gayfreegays| 成人午夜免费国产| 扒开裙子脱了小内裤摸屁股| 高冷双性总裁被下属c�| 让娇妻尝试两根一起进3| 看免费黄色毛�| 高潮h玩具play失禁男男| 岛国av资源| 国产高清永久免费| 97超碰人人做人人爽3d| av免费人人�| 花房姑娘电视剧免费播放完整版| 我的妹妹若嘉 小说免费阅读| 非常突然高清无删减完整版国语| 伊人情成综合�2019| 久久性感视频| 亚洲高清在线观看视频| 同人脏漫火影忍者同�| 欧美性猛交乱大交丰满| 三上悠亚被夫上司侵犯| 年轻的大乳少妇在线播�| 美国av毛片| 日韩作爱| 顾教授你睡了�?免费阅读无弹�| √天堂资源地址在线官网| 第一次跟老外做爰| 啪一啪操一�| 色噜噜狠狠色综合�| 国产精品毛片久久久久久久明星| 被肉到哭h名器紧致| 偷窥女邻居洗�| 日韩欧美国产激�| 黄色网址网站在线观看| 手伸进内衣揉捏摸gif动态图| 日本欧美一区二区视�| 校花调教theporn| 欧美大尺度激情无删减�| 亚洲狠狠婷婷综合久久�| 成人性大片免费观看网�| 日韩奸妞av| 狠狠色狠狠色合久久伊�| 受被np攻强迫无力反抗肉�| 97毛片| 黄色污在�| chinese麻豆videostube| 爱搞视频为爱搞点激�| 草莓视频下载网址| 又大又紧又湿又爽的爱视频| 国产亚洲不卡| 电车,做到高潮为止漫画免费| 少妇饥渴偷公乱第32�| 说不出的爱电影免费播�| 亚洲狠狠爱一区二区三�| 国产伦久视频免费观看 视频| 少妇太紧太爽又黄又硬又爽小说| xx性动漫xx无尽xx老师| 精品一区二区三区四区外�| 你是我的女人中文字幕高清| 亚洲东方在线| 精品美女www爽爽爽视�| 少妇放荡的呻吟干柴烈火图�| 国产极品美乳尤物在线观看| 久久99电影| 欧美成人午夜视频在线观看| 老司机精品免费视�| 污草莓视频在线观�| 女人张开大腿让男人捅| 美脚パンスト女教师在�| 亚洲精品mv免费网站| 久久久打桩机| 欧美性xxxx狂欢老少�| 精品久久久电�| 被污辱被禁锢强制的爱h| 国产乱子伦农村xxxx| 今夜无法入睡在线观看完整版电�| 97视频�| 国产男人女人40分钟视频| 色中文字�| 欧美精品国产一区二�| 黄色按摩�| 西西gogo人体做爰大胆影院| 亚洲va在线va天堂va偷拍| 一级女性全黄久久生活片免费| 被粗大黑人jib捣出了白浆视�| 日本人吃胸玩�30分钟| 大团结全文阅读原�| tushy欧美激情在线观�| juliaannxxxxx高清| 黄色的网站在�| 寂寞少妇呻吟视频| 亚洲精品男人的天�| 亚州无限乱码一二三四麻�| 国产美女囗交免费视频| 久久亚洲美女| 亚洲国产精品一二三�| 免费av网址在线| 男子天堂av| 日韩理论在线观看| 日韩在线观看免费| 乡村风流小说免费阅读| 十三以岁女子毛片| 朝鲜一级片| 偷偷看别人做爰过�| 99国内揄拍高清国内精品对白| 坏想法日记免费阅读完结了�| free性满足hd老头配r| 午夜性大�| 日本动漫伦の伦动漫在线观�| 一级特黄录像免费播放全| 免费久久久久�| 免费男人下面进女人下面黄| 观看av在线| 亚洲精品精华液一区二�| 看电影电视剧好网站最新电影电视剧| 人妖系列精品视频在线观看| 91成人观看| 揉着小丹的饱满的乳小�| 国产精品1000夫妇激情啪| 你微笑时很美电视剧免费观看完整版高清| 调教总裁失禁求饶高潮h| 浮生陌小说免费阅读全文笔趣阁| 艳妇乳肉豪妇荡乳流白�| 国产白嫩护士被弄高潮视频| 我对着镜子把她弄到高潮| 欧美性猛交xxx高清大费中文| 成人永久网站| 性生生活大片免费看视�| ass富婆少妇pics| 91精品免费视频| 余罪第三季全集免费播�| 亚洲动态色�| 波多野吉�| 女尊女攻高h巨辣h�| 国产chinese大学生gay| 丁香桃色午夜亚洲一区二区三�| 亚洲欧洲天堂| 国产黄色免费av| 老师叫我脱她的小内内| 一级全�60分钟免费视频| 被老头伦流澡到高潮h小雪| juy144一色桃子中文在�| 国产黑丝91| 唐嫣一级毛�| 抖音里的喜欢作品怎么删除�| 国产任你�| 樱花www成人免费视频| 免费在线观看av的网�| 日本三级日本三级日本三级| 男生插女生下面软�| 天天操天天av| 在线亚洲+欧美+日本专区| 爽娇妻快高h多p| 韩国少妇性xxxx少妇| 欧美日韩国产小视�| 《情欲电车》bd| 欧美国产一�| 耻辱の中出し授业大桥未久8m| 西西人体做爰大胆gogo图片| 爆操杨幂视频| 林由奈jux�467在线播放| 特级毛片免费播放| 黄频在线�| 亚洲天天av| 校花把粉嫩的屁股撅起来打| www.色中�| 免费刺激视频| 菲律宾电影荡�| 国产成人综合电影| 美女黄视频免�| 女初高中洗澡福利网站| 磁力猫最新版官网cilimao| h嗯啊巨肉糙汉1v1宫交| 国产全肉乱妇杂乱| 姑娘6电视剧免费观�| 解开乳罩喂领导吃�| 久久久久久亚洲精品美�| 雷电将军裸图| 最近好看的2019中文在线一�| 清纯受被老头肉h| 作爱的全过程视频无遮| 涩涩涩涩涩涩| 成人网在线观�| 娇妻被交换黑人粗又大又硬连载�| 5个男人躁我一�| 撕衣服亲胸吃奶捏胸摸下边视频| 日本猛少妇色xxxxx猛叫小说| 成人午夜免费视频| 操丝袜美女视�| 免费观看在线播放| 夫上司侵犯电�| 用力挺进她的花苞啊~| 韩国三小时激情bd合集| 日韩黄色精品| 美女扒开腿免费网�| 一级理论片在线观看| 浮生陌霍泽小说全文免费阅读有弹窗| 国产精品国产三级国产拍电�| 老何和新娘全文阅�| 亚洲精品一区二区三区大�| 人人添人人澡人人澡人人人人孕�| heyzo久久| 特别的爱给特别的�| 韩国少妇激三级做爰| 日韩欧美视频在线| 欧美少妇在线观看| 国产jk制服丝袜美腿呻吟动漫| 免费美国黄色�| 嬷嬷抹药调教h小公�| 欧美精品v国产精品v日韩精品| 国产成人av区一区二区三泡芙| 古代后宫训诫浪荡h肉辣�| 日本a v中文字幕| 强行扒开双腿猛烈进入免费| 国产激情图�| 中文字幕不卡在线播放| 亚洲色图综合�| 岳好紧好紧我要进去了电影| 父女情深小兰小说免费阅读全文| 调教高h乱l亲女| 开荤粗肉h| 粗大的内捧猛烈进�| 亚洲一二三四区五区| 奶水尤物娇妻h乳尖(h| 国产精品久久久久久久久久�| 免费全过程曰�40分钟视频在线| 好爽又高潮了毛片免费看中�| 欧美精产国品一二三产品工艺在线| 欧美同性警官gay刺激| 男人用舌头全添女人下�| 久草福利在线资源�| 精品亚洲永久| 天天透天天干| 免费看欧美中韩毛片影�| 高h调教飞机杯榨精bl| 精品国产欧美一区二区三区成�| 94av视频| 9999国产精品| 鹫尾芽衣| 久久羞羞| 成人中文字幕在线| 我们�2018免费观看完整�| 又色又爽又黄视频| 啊灬啊别停灬用力啊岳| 国产专区在线�| 黑人做爰全过程免费视�| 88av copyright| 欧美一级特黄aaaaaaa视频�| 六个黑人进入一个女�| 精品裸体秀hd| 天美传媒mv免费观看| 爽交换快高h中文字幕| 欧美日韩dvd| 1级片网站| 国产免费观看久久黄av�| 高h虐缅铃调�1v3| 别揉我胸啊嗯~用力啊| 国产视频福利在线| 亚洲影院免费| 啊~嗯好深高潮了喷水h| 543av| 国产伦精品一区二区三区�| 亚洲春色在线| 你别揉我胸啊嗯�| 他的粗大在我体内进出好多�| 亚洲国产一区二区在线观�| 一区二区三区免费观看视�| 亚洲性色av| 桃花劫电影在线观看完整版| 一级片一级片一级片| 朱竹清好紧好�| 强壮公把我一次次弄上高潮| 一边揉着胸一边舌�| 国内一区二区三区在线观�| 国产不卡一| 《床戏替�(np)》无删减| 日本一区二区三区免费看| 妾丫鬟湿乳h| 学游泳教练水下c我h| 辣妹子影院电视剧免费播放下载| 男人舌头伸进去添好爽免费视频| 宝贝~你真湿真紧�| 日日躁夜夜躁狠狠�| 免费福利小视�| 乱淫交换| 好大好硬好难受我想要| 亚洲一区日韩精�| 亚洲日本视频| 久久国产小视�| 亚洲精品国产视频| 大片免费播放在线观看视频| 韩国巨乳美女| 欧美日韩亚洲激�| 你可以碰我一分钟 动漫| av毛片免费观看| 女人28片毛�60分钟| 放荡的艳�| 吉哲明步在线观看| 日本激情视频中文字�| 玉米地农村寡妇高�| 白丝美女校花让我c| 久久久久久亚洲精品不�4k岛国| 国产精品免费av| 猎艳少妇小说| 调教荡女高h1v1| 太后被皇上强肉h| 美丽的姑娘电影免费播�| 清纯白嫩挨脔日常h调教| 破除轻点好疼18分钟69| 永濑唯av| 黑人干肥�| 美女扒开尿口让男人捅| 99精品久久精品一区二区爱�| 新婚娇妻和别人做爰h| av免费大全| 中国美女大乳| 久久精品偷拍视频| 3p啊灬啊灬啊灬快灬深用�| 九九99久久精品在免费线bt| 一女多男np慎入h有声小说| 最新日本黄色网址| 女侠嗯啊老和尚好猛h| 骚虎高清在线观看| ******�****aⅴ在线毛�| 免费观看黄色av| 私密教学羞羞动漫| 黄色男同视频| 日本少妇毛茸茸高�| 荔枝影视成人www| 我年轻的性老师| 情人叫床好爽受不了了| 爽好大快深点做吧| 黄色的影�| 久久久久日本精品一区二区三�| 亚洲欧洲�| 体内s尿慎入h(调教)| 满天星电影在�| 啃咬揉捏胸乳bl| 在办公室扒开h| 少妇一级淫�60分钟| 放荡老师张开双腿任我玩大伊香�| 永久免费a级在线视�| 秀婷程仪公欲息肉婷小说在线观看| 老男人把我添得很舒服| 爽文np一女多男h| julia中文字幕久久精品| 日韩欧美黄色大片| 伊人精品一区二区三�| 亚洲va久久久噜噜噜久久男同| 久久久久久久久国产精�| 自拍视频在线观看| 性一交一做一�| 日韩成人看片| 扒开黑女人荫蒂毛茸茸| 帐中香长生君完结| 69式囗交免费视�| 魅影在线观看免费播放电视�| 英语老师的胸好软| 老董戴若曦全文阅读小�| 少妇被三个黑�4p到爽| 经典三级野外农村妇女| 女人脱裤子让男人�| 男生和女生尻�| 久久国产午夜| 狠狠做深爱婷婷久久综合一�| footfeetxxx| 变态玩老妇小说| 国产在线播放网址| 男人扒开腿狂躁女人网�| 好爽~要尿了~要喷了~老师男男| 激情文学亚洲色�| 老女人擦她毛茸茸�**| 夜夜躁狠狠躁日日躁av麻豆| 明星h放荡系h文小�| 一区在线观看视�| 天堂av首页| 97人澡人人添人人爽欧美| 韩国大尺度电影《陷阱�| japanesefreesexvideo高潮| 免费a级毛片在线观�| 黄色av看视| 宝宝你bi里好多水| 夜夜摸夜夜操| 97香蕉碰碰人人澡人人爱| 啊灬啊灬啊灬快灬高潮了女影院| 女女激吻床吻互脱裤摸j| 国产精品一区二区在线播�| 校花被农民工强迫肉h| 小杰啊灬啊灬快灬深用力啊h小喜| 骚攻h性瘾痴汉攻bl| 亚洲综合精品在线| 小受被打开双腿狠狠灌满小说| 午夜大尺度视�| 91福利精品视频| 男男互吃鳮gay视频| 青青久久av北条麻妃海外�| 被继夫调教的小说h含苞待放| 3d今天最新开机试机号| 柯哀肉车怀孕爽文h| 小荷欲绽| free性丰满video性中�| 日韩福利视频在线观看| 董事长被调教成贱奴丽�| 免费成人美女网站| 当她恋爱时电视剧免费观看完整�| 漂亮美人被迫挨c高h多人np| 暗卫被强行糟蹋过程h| 极限扩张虐玩重口小说| 欧美一区二区在线观�| 国产精品久久久久久久毛片| 古代荡公乱妇的小�| 欧美午夜性色大片在线观看| 超级教师3| 日本少妇xxxx软件| ass中国少妇高潮pics动�| 小舞被脱脱内内打扑克3d动漫| 丝袜制服第一�| 双性受被各种怪物h灌满bl| 调教小荡货h办公室跪趴sm主人| 日韩免费**a**毛太�| 宝贝真乖h�| 黄色的网站在线免费观�| 俄罗斯女人下面又进又�| 女同毛片免费全部播放完整| 久久久精品视频一区二区三�| 四虎影院国产精品| 一雪全集在线观�| 天堂√中文在�| 龚玥菲三级在线看未删| 黄色片免费看�| 国产一二三区不�| 性bbwbbwbbwbbw�| 国产美女精品一区二�| 饭冈加奈子av在线�| 亚洲男人天堂影院| 少妇天天�| 中出在线播放| 国产一级大片在线观�| 日本又色又爽又黄又高�| 强壮公弄得我次次高潮hd小趴�| 精品国产一区二区国模嫣�| 引诱亲女乱h文欲�| 欧美一区二区三区激情在线视�| 日韩极品一�| 噜噜噜天天躁狠狠躁夜夜精�| 添花�| 九色欧美| 少妇富婆野战hd| 总裁h�1v1调教play| 动漫乳色吐息| 娇妻秘密进俱乐部穿环调教| 亚洲天堂第一�| 泡妞xxxxwwww| 一本色道久久综合狠狠躁的推�| 91麻豆国产精品| 99久久精品无码一区二区毛�| 色中色综合网| 午夜精品久久久久久不卡av| 噜久寡妇噜噜久久寡妇| 浴室挺进尤物紧窄湿润| 波多野结衣三级视�| 在线观看97| 天天射天天舔| 伊人狠狠色丁香婷婷综�| 亚洲成人网一�| 和家里蹲妹妹一起生�| 娇妻羞耻露出调教受虐小�| 睫毛�2在线观看| 好大好硬好难受我想要| katsuni被黑人前后夹�| 男男高h囚禁强制�| 成码无人av片在线电影软�| jjizz女人老师护士水多| 丰满大乳露双乳免费看| 女同学看见我下面硬了摸了我下�| 亚洲人在线观看视�| 女主色诱暗卫h| 国产精品麻豆色哟哟av| 男男肉车小说| 古装大尺度床戏吃�| 他用舌头给我高潮五六�| aa免费在线观看| 成人一级在�| 成人动漫在线观看一区二区三�| 女人的天堂av| 滋润少妇h高h借种| 男生飞机杯www视频无遮�| 日本在线观看www| 翔田千里の熟れる肉体| 黄瓜视频成人在线观看| 91黄色短视�| 三上悠亚无snis986在线观看| 男人j进入女人j视频| 欧美性战a久久久久�| 免费操人视频| 快穿系统女配啪啪任务h| 黄色短视频在线观�| 娇妻互换太大受不了小�| 亚洲精品国产福利| 高潮韩国激情三级做爰爽美人�| 欧美成人免费在线| 乌克兰丰满少妇毛�| 韩漫网站在线看免费入�| 日本黄色一区二�| 被多个强壮汉灌满精h| 双腿吊起揉捏花蒂调教h视频| 美国美女艳妇性bbw| 色戒完整�2小时38分片集网| 国产日产欧产精品精品ai| 色婷婷亚洲婷�| 久久久久久久久久久久久久�| 成人qq�2023| 久久久av�| 国产男女猛烈无遮挡高清免费视�| 寂寞少妇av| a级情欲片在线观看免费hd| 好男人www日本| 最新黄色毛�| 日韩ww| 国产精品国产三级国产普通话三级| 都市美艳麻麻高潮小说| 别蹭了我硬了h| 国产精品宾馆| 宝贝趴好把腿扒开毛笔放调�| 欧美激情五�| 方碧如老师小说全文| 国产女人与拘做受免费视频| 一边做一边亲一边摸免费视频| 啊啊啊一区二�| 奇米网第四色| 国产凹凸久久精品一�| 精品国产一区二区三区日日嗨| 国产另类交视频免费观�| 成人一区av| 娇妻出轨�**| 奴妾调教成禁脔h虐h| 国产精品麻豆| 麻豆激情电�| 国产va精品免费观看| 国产欧美另类| 小医仙调教喷水沦为肉奴小�| 亲戚大乱炖h文阅�| 亚洲欧洲日本在线观看| 校草被两个混混脱裤玩j老番| 男女黄色一级视�| 亚洲第一男人天堂| 天堂av8在线| 日本69xxxxxxx| 久草精品在线观看| 日韩中文字幕在线�| 蒂法涩涩同人18网站| 四川妇女搡bbbb搡bbbb| 色婷婷久久久�| 《浴室激情》在线观看日�| 男男被吸�| 啊啊啊好大好爽啊| 做床爱免费视�| chinesegay粗大激�| 堕落成�| 校园情射| 张柏�54张无删码视频| 激情视频激情小说激情图�| 锁精憋尿被主人调教男�| 色综合久久中文字�| 野战做爰全过程片视频| 大胸美女操被纯欲| 五月婷婷精品| 从万米高空降临在线阅�| 《巨乳女教师の诱惑》在线看| 国产一级做a爱免费视�| 成人动漫在线免费观看| 东京男人天堂�| 亚洲国产精品国自产拍av秋霞| 强伦系列小说合集| 贱奴校花挨脔日常h惩罚| 韩国a级片在线观看| 国产精品乱码一区二区三区软�| 亚洲一区二区三区a| 美人双性受h多人运动np视频| 50丰满少妇高潮惨叫正在播放| 燕氏求子4�1h| 97人人模人人爽视频一区二�| 手机看片日韩欧美| xxxwwww18| 欧洲xxxx性xxxxhd| 国产欧美精品一区二区三�-老狼| 翘臀后进少妇大白嫩屁股小�| 免费网站在线观看高清版电�| 大肉蒂被搓的好爽娇喘呻吟视频| gogogo观看高清国语| 深夜福利在线不卡| free性满足hd性bbw| 男同性恋大尺�| 姜恩惠的29分钟激情视�| �69av| 很黄很黄视频| 日本免费无遮挡毛片的意义| 坏想法日记免费阅读完结了�| 岳乱妇乱�13�| 他把我裙子脱了摸下面| 性欧美videos另类极品小说| 刘亦菲一区二区三�| aaaaa级少妇高潮野�| 男男裸体按摩| 男女后进式猛烈啪啪xx00动�| 欧美一级大黄大黄大色毛片小�| 69式囗交免费视�| 少妇高潮无套无遮挡内谢小�| 高h喷水荡肉爽文np短篇| 五月婷色| 151电影在线观看免费�| 男生坤坤插入女生坤坤| 国产精品电影网站| 搞黄视频网站| 欧美理论片三人片4| 91亚洲影院| 欧洲精品一区二区三�| 宝贝你夹的我快受不了视频| 侵犯洗澡女教师在线观�| www,黄色| 麻生希白衣护士在线观�| 九九视频九九�| 欧美日韩国产综合另类| 今夜无人入睡免费观看�8�| 免费成人黄色| 插插插影�| 99re视频| 岳的很紧好爽| 办公室文1v1高辣h| 国产精品白丝av嫩草影院| 快穿睡遍男主们h| 原神女角色捆绑紧缚福利图| 宝贝穿情趣内衣h| 中文字幕亚洲免费| 清宫性史1�5在线观看| wwwav91| 麻豆一区二区在�| 我和室友在ktv| 印度少妇野外做爰| 美女露胸无遮挡网�| 冰块**惩罚高h视频| futa肉多荤文高h武侠| 国产在线午夜| asian性开放少妇pics| 美丽的姑娘免费高清观看国�| 国产suv一区二区三�| 老头老太裸体xxxx视频| xxxxmovies性hd18| 性欧美大战久久久久久久安居码| 免费观看日韩毛片| 男人和女人靠逼视�| 黑人长吊大战中国人妇| 99re这里只有精品在线视频| 色就是色欧美色图| 教室里调教大乳奶牛老师| 高h肉汁全肉无删�| 十三以岁女子毛片| 成年人在线视频网�| 免费观看蜜桃视频www| 国产一级做a爱片| 国产精品丝袜美女| 国产熟人av一二三�| 夏目彩春一区二区三�| 一亲芳�| 不卡一二三�| 把高贵美妇调教成玩物的视�| 嗯八灬快灬别拨灬使劲的视�| 男女爱爱网址| **性色生活片久久毛片波多野| 国产高清精品软件丝瓜软件| 国产不卡视频一区二区三�| 国产一级在�| 制服丝袜成人影院| 好姑娘国语在线观�| 丰满雪白极品少妇流白�| hdxxxxchina| 好紧好湿乖让我进去h视频| 小说《蜜汁樱桃》全文免费阅�| 亚洲欧美综合久久| 91啪在�| 女女女女女裸体bbbb播放| 总裁掀开她的内衣揉她的柔软视�| 三年片在线观看免费播放大全电�| 体内灌尿play尿便器男男漫�| 国产毛片18| 中国沟厕通偷窥piss| 日韩视频在线观看一区二区三�| 日韩欧美精品久久�| 攵女yin欲h�| 老婆的妹妹电�| 中国农村一级片| 少妇在瓜棚地里呻�| 一色屋精品久久久久久久久久| 一级片网址| 欧美�88| 嗯~啊奶水喷出来�| 亚洲狠狠�| 又长又大又粗又爽视频| 中文十次�| 日韩mv欧美mv国产精品| 美日韩精品在�| 欧美人与禽猛交狂�| 韩国一级淫片免费看| 《年轻的女教师�4在线观看| 张筱雨玉门双腿打开图片| 人人澡av| 黑人操亚�| 强壮公次次弄得我高潮| 玄霜巨龙敖无极主角小说免费阅�| 娇妻小玲穿着乳环被调教小�| 《性妲己》在线播�| 久久亚洲精品久久国产一区二�| 天天鲁一鲁摸一摸爽一爽视�| 亚洲一区二区三区欧�| 把冷欲师尊做到哭h| 狠狠躁日日躁夜夜�| 精品久久久噜噜噜久久x99a| 亚洲免费人成在线观看网站| 99精品亚洲| 好大好长好紧�69| 久久久久久毛片免费播�| 在线三级av| 亚洲免费激情视�| 她在做饭我从后面�| 色戒天使万绮雯三级视�| 被粗汉h玩松了尿进去bl| 91久久精品日日躁夜夜欧�| 黄色网址app| 丰满护士巨好爽好大乳gif| 色眯眯影�| 亚洲a区视�| 直播少妇干b视频| chinesexxxx刘婷hd| 扒开腿挺进岳湿润的花苞视�| 免费观看又色又爽又黄的软件下�| 裸体bbb大全| 黄色片的视频| 黄色小说农村| 97精品依人久久久大香线�97| 日韩一区二区三区免费视�| 国产精品乱码一区二区三区软�| 亚美裸体xxxx极品少妇| 偷自拍视频区综合视频�| 狠狠操夜夜爽| 婷婷黄色�| 久久经典国产视频| 黑丝妈妈小说| 女人与拘做受视频在线播放| 扒开双腿猛进入jk校花免费观看| 破瓜受孕h顶弄小说| 神马香蕉久久| 久久99精品热在线观�| evelynlin喷水高潮| 大地8在线影视免费观看| 久久99精品久久久久| 三级黄色小说| 特别黄的免费视频大片| 色屁屁www影院免费观看入口| 虐肉蒂肿大改造调教h| 石原莉奈丝袜一区三区四�| 欧美全部裸露的大尺度| 国产一区二区在线视频观�| 玩日本老头很兴奋xxxx| 黄色国产一级片| 中国一级伦理片| 荫蒂添的好舒服小说短�| 直男被强肉到失禁h�| 超碰人人�| 久久精品99久久| 好粗好长好舒�| 电影粉红女士| 大尺度小黄文| av不卡高清| 韩国最�19禁电�| 男生和女生日b| 色偷偷女人的天堂| 中国14一15sex性hd| 百合羞耻调教求饶sm文免费阅�| 黄色软件视频在线观看| 苏媚赵大宝小说在线阅读全�| 日本黄色三级电影| www中文字幕综合�| 日本特黄特色大片免费老年人高�| 啊啊啊啊啊水好多| 天堂av自拍| 我家的女人小�| 精品毛片在线观看| 太子妃被强行打开双腿h| 欧美色图片一区二�| 国产伦理一�| 穷游西藏赵青老周免费阅读| 男同桌上课用手指进去了好�| 国产女同玩人�| 少妇一级片免费�| 韩国最裸露的三�| 女老师h�| porno日本xxxx| 夜夜春夜夜弄| 美女翘臀少妇啪啪呻吟流水图片| 她的乳尖逐渐挺立起来| 黄色片在哪里可以�| 火车卧铺高h肉辣文虐| 国产a级黄色大�| 男男play吸乳涨揉漫画| 男女做爰猛烈视频大尺度小�| 国内脱内衣舞片在线播�| 神宫寺av| aaa特黄| 久久激情欧�| 小sao货撅起屁股扒开c�| 在熟睡中高潮高h| 一边亲胸一边摸一边揉| 久久影视中文字幕| 三级黄色片在线免费观�| 久久久久免费看少妇喷水大�| 闺蜜互慰吃奶互揉69式磨豆腐| 国产丝袜大长腿精品丝袜美�| 久久偷看国产女厕嘘嘘| 日韩成人av�| 欧美xxxxx精品| 冰山警花的堕落小说免费阅�| 精品少妇一区二区三区在线观�| 夜夜夜爽bbbb性视�| 老旺秦小�1�180章免费下�| ririsao久久精品一�| 庆余年长公主粉嫩yin水小�| xxxx性公交车xxxxⅹ视�| 少妇张莹| 趴下来让老子爽死你老师视频| 欢淫来到好色精灵之森| av免费黄色| 日本三级欧美三级久久久久| 成人涩涩日本国产一�| 国产videos麻豆丝袜老师| h文日记高h污肉1v1| 少妇撒尿一区二区在线视�| 男人捅女人捅到爽| 黄色拍拍视频| 美丽姑娘高清版在线观看中文版| 99精品国产高清一区二区麻�| 欧美午夜精品久久久久久杨�| 精品国产va久久久久久久| 欧美日韩一区二区视频在线观�| 成网站人电影亚洲国产| 老马顾婉�| 尿进去了好烫灌尿高h双�| av爱爱�| 女主被喂药催奶h�| 波多野结衣办公室33分钟| 性感少妇的诱�| 少妇被各种姿势糟蹋视频网�| 主人调教跪趴撅屁股sm视频| 马小桃比基尼泳衣图片| 国产超碰人人模人人爽人人�| 一本之道之高码清乱码加勒比| 肉岳高潮连连赵兰�| 美国床戏做爰视频| 赵丽�45分钟毛片| 被两老中医揉捏双乳高�| 挺进秦淮茹肥臀小说| 男人黄色�| 国产精品视频a| 伊东千奈美女教师紧身�| 国产精品高潮呻吟久久酷刑| 大尺度肉文小�| 我的狗老公全文免费阅读小说| 苏媚赵大宝小说在线阅读全�| 丝袜美腿啪啪| 美女露出让男生揉国产| 健身教练被嗷嗷叫合集| 特级黑人三人共一�| 国产一级免费视�| 青娱乐啪�| 国产激情麻�| 一伦一性一交一�| 被惩罚h的小娇妻h| 日本特黄色大�| 老色批影�| 91精品国产91| 欧美brazzers欧美护士| 性生交大片免费全�| 大炕上的肉体乱第1部分| 久久欧美与黑人双交男�| 男男gay捆绑网站戴套过程| 夜夜爽一区二区三�| √天堂中文在�| 村长用力挺进她的花苞影视| 国产精品视频在线观看| 全篇肉高h秘书被c办公室白| 尤物高h短篇禁乱np| 综合天堂| 扒开美女狂揉大胸| 国产精品久久�| 凌晨三点电影免费观看完整在线观看国语| 免费视频毛片| 青娱乐导�| 中文字幕一区二区三区免费看| 黑人巨大国产9丨视�| 国产又大又黄| 农村女人挨揍mf潇湘溪苑| 好姑娘国语高清观�| 男明星被调教折磨到求�| 狠狠色伊人亚洲综合网站色| 神尾舞在线播放免费完整版| 国产与自�| 远古肉吊粗大h| 52g.ppt网页版入�| 公妇公侵曰本中文字幕| 欧美粉嫩娇小xxxxxhd| 不卡日本视频| 被迫调教(高h,1v1,粗口调教)小说| 触手侵犯触手调教h| 日韩国产不卡| 久久久黄色录�| 国产一级毛片网�| 国产噜噜�| 清纯秘书地狱调教h| 色黄视频网站| 国产一区二区三区久久悠悠色av| 午夜影院你懂�| 杰克受双腿大开呻吟bl男男| 久久精品国产免费一区二区三�| 日本免费在线�| 少妇做爰奶水狂喷免费视频| 色一情一交一乱一区二区三�| 女被c黄扒衣服漫画| 特级淫片老女人高清视�| 日本女优大胸| 清纯校花的沦陷免费阅读小�| 不要了啊h| 我脱了老师内衣摸她胸的视频软件| 成人不卡视频| 欧美日本久久�| 艳魔大战2春荡女淫三级3| 伦小�500篇目�| 欧美激情在线看| 诱受h嗯啊巨肉高潮失禁�| 性猛交富婆xxx乱大�| 热热色网�| 成年人在线免费看�| 91调教在线| 99精品影视| 国产毛片毛片| 浪潮a国内一区浪潮在�| 九色丨蝌蚪丨少妇调教| 污污�| 狠狠�2021| 吮吸乳房小说| 和中年壮熊野�| 100av.com| 美女的让男人打扑�| 干美�| 天天干夜�| 她在丈夫面前被侵�| 国产成人精品2021| 极致宫交h强迫1v1| 痴汉一区二�| jizzyou中国少妇中文| 脱裤子屁屁灌水网�| 波多野结衣一区二区三区在线观�| 窝窝午夜理伦免费影院| 小雪被房东玩的好爽全文小�| 综影视小三h肉h| 在线看一级毛�| 亚洲国产成人女毛片在线主�| 青青操狠狠干| 清冷总裁被管家丑攻的小说| 双腿大开被绑到椅子上调教小说| 日本一级二级视�| 女人扒开屁股让男人捅| 777琪琪电影午夜理伦�| 久草在线视频免费资源观看| tubesex18| 娇妻被局长的粗大撑满电影| 在公车被灌满jing液渺渺视�| 百合道具高潮(h)女女调教小说| 色偷�888| 岳肉太深了使劲弄| 丰满女老板大胸老板bd高清| xxxxxhd亚洲人hd| 原来是电影神马琪琪免费观�| 撕开少妇奶罩疯狂揉吮奶app| 别揉我胸啊嗯上课h渺渺软件| 在线免费观看黄视�| 天堂√最新版中文| 乡村艳又粗又长又大免�| 一级黄色网�| 蜜臀99久久精品久久久久小说| 黄色软件视频免费观看| 扒开末成年粉嫩的小缝流白�| 一本一道精品欧美中文字�| 成人二级�| 日本一级一片免费视频思欲| bl强制被迫高h| 亚洲人成亚洲精品| 美女被狂揉大胸网�| 大码大乳少妇做爰| 欧美性猛交xxxx乱大交视�| 国产欧美日韩视频在线观看| 草莓视频在线视频| 《朋友夫�:交换�3免费观看| 各种场合h暴露刺激小说| 手机在线精品视频| 亚洲第一�| 欧美人xxxxx| 国产在线视频不卡一区二区三�| 男女日p| 麻麻下面好紧| 日本久久久久久久做爰图片| av在线资源网站| 猛男大吊大学足球教练王猛| 亚洲欧美影院| 产业规划| 苍月女战士av无删减版| 亚洲码国产精品高潮在�| 少妇让我看她三角�| 国产字幕侵犯亲女| 亚洲色图视频�| 今天高清视频免费播放一级爱�| 伊人中文娱乐�| 草逼动态视�| 亚洲综合av一区二�| a电影免费�| 嗯啊~用力~高潮了~快~啊男�| japanese国产打屁股视�| 伊人久久亚洲精品| 天天燥日日燥| 撕开胸罩一边亲一边摸| 粉嫩柔软屁股女同桌打屁股| 女王人间の便器系�| 少妇大尺度裸体做爰床戏漫�| 精品中文字幕一区二区三区av| 风骚的嫂�| 青青青久久久| 日韩精品一区二区三区免费视�| 国产中文字幕免费观看| 搞黄视频在线观看| xxxx性动�| 激情婷婷成�| 美杜莎被黄同人动�| 黄色靠逼软�| 27美女少妇洗澡偷拍| 国产视频一视频�| 贾平� 暂坐免费阅读| 5个姿势夹到男人爽| 亚洲成人精品在线播放| 国产伦精品一区二区三区无广告| 调教小秘书双腿打开揉弄视频| 乳奴h小小初进�| 老师好紧我要进去�| 美女国产一区二区三�| 国产一极片| 软糯受乖乖含着攻h| 亚洲激情综合在�| 青苹果乐园电视剧免费�| 被陌生人用手指扣爽了| 做爰高潮120分钟视频| 日本黄色福利视频| 精品欧美视频| 天美麻花传媒在线观看| japanese色系xxxxhd日本massage| 性爱免费电影| 狂野欧美激情性xxxx喷水| 自拍天堂偷拍| 国产精品丝袜久久久久久app| 三攻一�4p巨肉寝室| 强制高潮宫交体内s尿h| 女班长用白棉袜调教我| 牛牛精品成人免费视频| 水果派av解说在线观看| 蜜桃成熟�1997未删减版| 国产成人av手机在线观看| 在浴室里三p被弄得很爽小�| 曰批全过�120分钟免费视频| 国产主播福利在线观看| 爱情电影网aqdy鲁丝片二�| 欧美成人一区在�| 美丽姑娘在线视频电视剧免费观�| 天天精品视频免费观看| 国产gay玩奴**网站| 天堂va蜜桃| 夜夜躁狠狠躁日日躁视频黑�| 宅男66| 国产精品白丝jk白祙喷水网站| 日本电影少妇| 高清欧美精品xxxxx大豆行情| 啊轻点灬太粗太长了三男一�| 欧美性猛交xxxx黑人| 赵丽颖的毛片免费�| 五月天激情社�| 啊啊啊好大好粗好�| 公妇乱淫1一13小说| 主仆play调教甜肉1v1| 伊人黄色软件| 古代薄纱乳h奶水| zz236宅宅最新伦理片| 高潮h玩具play失禁调教电影| 爱爱视频体验�| 久久国产精品免费观看| 久草观看视频| 欧美日韩免费�| 美妙少妇系列| 太子粗壮h灌满小公主h| 透明紧身裤xxxx�| 李嘉欣早期三级裸体电�| 欧美日韩一区三�| 成人免费视频国产免费麻豆| 1314在线观看免费观看| 91福利�| 搡bbbb搡bbbb搡bbbb| 火车上h肉全�| 水岛津实经典av在线播放| 国产精品久久国产精品| 帝后1v1调教h| 日韩精品一区二区三区在线视�| 婷婷月色一区二区三�| 国产精彩视频在线观看| 男虐女高h文sm重口| 黑人一级黄色片| 爱情到此为止免费观看全集完整�| 摄政王受被攻h嗯啊巨肉| 饭饭之交泰剧在线观看泰剧全集| 少妇av一区二�| 女人的叫声嗯爽视�| 日韩精品一区二区三区第95| 啪啪喷水视频| 美剧妻子出轨外遇| av在线不卡网站| 国产禁忌乱偷在线观看全部1| 91精品国产综合久久久动漫日�| 趴下从后面弄进去更爽女女| 日韩小说视频| 年轻的朋友在线播�| 国产主播av在线| 91亚洲国产成人精品一�| gay吊粗大男同志夜店舞男| 69午夜视频| 2020av在线播放| 出租车上强摸帅gay司机| 调教痛苦强制高潮乳夹电击| 公交车全肉高h湿play短篇| gb视频| 在线羞羞视频| 国产激情一级毛片久久久| 国产精品日韩在线| 久久久久久久99精品免费观看| 啊好涨用力哦太深�| 美丽姑娘国语版免费看| 国产乱码精品一区二区三区精�| 北野未奈女教师の诱惑| 乳奴虐乳bdsm| 国产精品久久777| 淫男乱女小说全文阅读| 加勒比毛�| 久久综合亚洲鲁鲁五月久久| 成片免费观看大全| 西班牙黄色片| 女教师~淫辱の理�| 公车超短裙震动羞耻暴�| 国产精品18久久久久白浆软件| 播放拔萝卜电视剧免费观看| 亚洲免费观看视频网站| 亚洲综合色网�| 女搜查官av| 两攻一受的3p bl h�| 91抖音成人| 亚洲va久久久噜噜噜久牛牛影�| 舞蹈老师白丝袜踩我裆�| 国产特级全黄寡妇毛片| 小宝探花视频在线观看| 我女儿瑞�| 成人福利视频一区二�| 女人被藏獒日出白浆小�| 黑人50厘米交亚洲女�| 亚洲人成一�| 激情电影伦理视频小说图片区| 亚洲黄色影院| 国产麻豆精品95视频| 亚洲一区在线网�| 性xx十八spa按摩| 啊┅┅快┅┅用力啊岳视频| 两根撑满好大好爽太满�3p| 69久久夜色精品国产69�| 浴室里强摁做开腿呻吟的漫画免费| 国产精品福利电影在线观看| 成人看片人aa| 色戒完整�2小时38分片集网| 国产精品盗摄视频| 校花被小混混脱裤玩j出水| 久久久一区二区三区捆�**| 啊~cao死你个小sao货渺�| 亚洲天堂av免费观看| 麻豆一区在线观�| 调教室虐调教h打开腿sm视频| 蜜桃精品视频在线| 日日躁夜夜躁| 国产精品毛片视频| 少妇老师勾引我做�| 在线亚洲一区二�| 美女被男人操视频| 亚洲女人****多毛耸�| 老司机免费精品视�| 欧美性刺激| 粉嫩绯色av一区二区在线观�| 色综合色综合网色综合| 李娇娇刘大壮种公借配| 成人午夜在线观看| 潘金莲一级淫片aaaaa免费�| 啊啊啊好爽好想要| 狠狠挺进h嗯啊第一�| 性淫裸体女警在线观看| 黄瓜视频在线看免费观看www| 香水有毒微电�| h淫胯下娇吟玉�| 高辣h文乱乳h文hhh电影| 被暗卫肉强h污到�| 黑色蕾丝老师好紧好爽视频| 挨胬的女侠第二部| 不卡的黄色网| 午夜成年�| 黄瑟视频| 美女漏奶�| 在教室伦流澡到高潮h免费视文| 国产精品一区二区在线观�| 刘晓庆的一级毛�| 荫蒂每天被男人添嗯视�| 我想看av| 嫩草一区二区三�| japanese55丰满圆润�| 大尺度r级无删减电影| av黄色�| 老板办公室浪荡女�| 高中情侣电梯野战视频| 大乳xxxx吃奶| 好大好爽在线| 欧美xxx黑人xyx性爽| 一区二区三区欧美精�| 午夜性做爰免费看| 疯狂肉体粗喘娇吟av| 国产老头老太做爰视频| 濑亚美莉vs黑人在线播放| 一级久�19久久久区区区区区�| 亚洲精品视频�| aⅴ精品av导航| 被室友c哭调教双性怀孕了双男�| h揉捏娇喘乳叫床np皇上| 老太婆性视�| 深夜免费福利视频| 美女隐私视频免费�| blacked国产精品一�| chinese55丰满成熟hd| 少妇按摩做爰2在线播放| 女s脚榨精视频丨vk免费| 花蝴蝶电视剧在线看免费豆瓣评�| 张柏�6门艳全集50图片| 欧美精品一区二区在线播�| 国内老太hd性行�| 被病娇做哭h灌尿| 女生扒开腿让男生�| 脱了她的内裤猛的进去�| 性猛交xxxx乱大交孕妇免费看| 中文字幕一区视�| 手机av观看| 电视剧长河落�| 校园激情一区二�| 亚洲成a人片777777美国| 学生双腿白浆高潮视频ai换脸| 韩国电影漂亮的儿媳妇| 成人精品一区二区三区电影黑�| 嗯啊不要揉捏| 欧美午夜精品久久久久久浪�| 校草被老师肉到失粗口禁h| 天堂中文资源在线观看| 暗卫受被各种道具调教h| 久久精品�| 日本欧美www视频网站| 国产成人综合精品| 精品免费在线| 欧美肉体xxxx肉交高潮| 中文字日产幕乱六区蜜�| 91麻豆天美传媒在线| 《可不可以不》日本剧在线看免�| 后宫各种刑具爽到高h失禁小说| 男生的鸡鸡插入女生的鸡鸡| 台湾少妇的春�| 陈玉莲裸体无删减视频| 房产销售的秘密2免费观看| 蹂躏亲女稚嫩小缝h�| 性日本少�| 久久精品资源| 亚洲伊人久久�| 男人操女人的视频软件| 中国丰满女人的裸�| 夜夜高潮夜夜爽精品av免费�| 边吃奶边摸下面很爽动态图| 少妇与黑人高潮流白浆| 欧美丰满大乳高潮| 天堂中文字幕�| www.久久久久久久久久�| 91黄在�| 三人一起做爰视�| xxnxx欧美| 日本厕所偷窥| 91色老久久精品偷偷蜜臀| 1024免费视频| 日本亲子乱子伦xxxx30�| 麻豆视频在线观看免费网站| 三级毛片免费�| 青草视频中文字幕| 好姑娘在线观看视频完整版| 美女脱个精光直播免费图片可收�| 舔老师下面| 两男一�3p无删减视�| 激情卧室h呻吟张开腿视�| 日本www免费视频网站在线观看| 涩情男主播双男np文高h| 500精品导航国产一�| 三上悠亚中文字幕在线播放| 日本波多野结衣在线观�| 粉嫩av影院| 免费在线好看站密桃网| 日日摸天天摸人人�| 色哟哟—欧美精�| 国产色免�| 韩国少妇激三级做爰| 国产精品videoxxxx| 麻豆射区| 97视频精彩视频在线观看| 宁荣荣张开双腿被强小说| 国产男女无遮�| 日韩一区免费视�| y1111111丰满少妇毛片| h片在线观看视�| 黄色大片一�| 在书房里将军h男男| 日本黄色动画�| 先锋xfplay色资� 豆豆�| 欧美高清不卡| 欧美性猛交xxxxxⅹ视�| 99精品国产在热久久婷婷| 紧缚女社长被调教成奴| 荫蒂添的好舒服小说短�| japanesehdporn| 丁香花在线观看视频完整版| 欧美日韩一二三四区| 宝贝乖女你的奶真大水真多动漫| 宅男噜噜�66一区二区无广告| 欧美一区中文字�| 女教师夹震蛋上课被老师发现| 借妻借种| 欧美黄色性片| 女人高潮叫床的激烈视�| 一级黄色高�| 幺公的又粗又长又大又�| 少妇做爰免费视频网站| 亚洲一级二级三级视�| 国产精品乱码一区二区三区图�| 《年轻的女教师�3完整�| 女男漫画羞羞sss| 黄色动漫3d| 性高朝久久久久久�3小时| 99精品99| 中文字幕久久爽aⅴ一�| 热情的邻居李采潭| 国产精品久久久久久久免费软件| 小说少女的心| 亚洲性综合网| 亚洲国产aⅴ成人精品无�| 国产又粗又长�| 男女床上拍拍视频| 亚洲色图亚洲色图| 色又黄又�18件免费网�| 可不可以完整版日剧在线看| 精品久久久久久久久久中文字幕| 最佳女婿全集免�| 边摸边吃奶边做视频床�| 护士japanesexxxxtubehd| 狂干美女视频| 欧美性xxxx最大尺�| 《上司的少妇做爰hd》电�| 女仆男又爽又黄免费女仆视�| h双腿涨灌触手play双�| 客厅亲女乱怀孕小说全| 在线观看黄色�| as艳丽少妇裸体pics| 因爱疯狂电视剧全集免费播�| 久热这里只有精品在线| 国产91精品捆绑调教| 欧美性导�| 花房姑娘电视剧免费观看高清播�| 赵大宝苏媚的小说在线阅读| 脔到她哭h粗话h上司3p许清�| 极品销魂美女特嫩bbb�| 黄色网女| 欧美日韩免费在线观看| 国产成人精品久久二区二区| 欧美色图激�| 国产精品一色哟�| 久久久久少妇| 现代1v1高辣h调教| 一女六男np慎入h古风小说| 很黄很污的软�| 国产欧美一区二区三区另类精�| 强行扒开小受双腿进入钙片| 国产做受高潮动漫| 强行a破外女出血视频精品| 俺去啦在线观�| 韩国电影年轻的秘�| 在线观看黄色的网�| 欧美黑人c�| 女生扒开双腿让男生捅| 一二三四在线免费观看视�| 双龙h啊~嗯啊h浪np| 魏承泽作品小说免费阅读全�| 主人的女私奴每日调教| 日本免费黄视�| 男女激情网�| 3d大花猫图谜二版今天的| 欧美激情视频网址| 少妇被无套内谢免费视频看�| 远华红楼权色销魂h文小�| 国产一区二区电�| (《丰满老女人》伦理hd| 性欧美性天�| 娇妻张腿迎合上司h| 性工作者电�| 亚洲欧美日韩中文在线制服| 亚洲午夜久久| 久久夜色精品国产噜噜v6| 国产五十路毛�| 刑警娇妻诗云| 538任你躁在线精品视频网�| 性xxxx尼泊尔泰国娇�| 午夜影院�| 72式性无遮挡在线观看视频| 看国产到性色| 中国黄色一级大�| 91制片厂在线免费观�| 哪里有免费的毛片| 成长的秘密免费观看是什么意�| 女人露给男人�| 少妇和小伙子舌吻| 丰满女人的毛片久久久久久| 扒开女人内裤猛进猛出免费视频| 梦莹伟忠怀孕雅蓉俊凯美丽生�| 欧美中文一区二区三�| 精品国产一区久�| 健身教练太粗太深受不�| 男男gay囗交并舌吻视�| 九九热在线免费视�| 桃色一区二区三�| 后宫秀女调�(高h,np)| 艳刺激伦疯狂小�| 老外几下就让我高潮了| 国产香蕉97碰碰久久人人九色| 动漫美女被狂揉大胸羞�| 年轻漂亮的未婚妻被强�| 善良的妻子小�| 国产在线视频91| 啊轻点灬太粗嗯太深了视频| 不许穿内裤随时挨c的文男男| 亚洲色图欧洲色图| 免费看全过程曰批40分钟男男| 张行长将她双腿分得更开视频| 啊灬啊别停灬用力啊老师免费视频| 一女多男肉�| av国产一�| 91国自产精品中文字幕亚洲午�| 年轻大胸的老婆| 国产裸体艺术| 丰满岳乱妇三级高清在线观�| 我和老肥岳销�| 国产真实乱freesex| 艳妇乳肉豪妇荡乳69xx| 啊啊啊用力插| 西西www4444大胆在线| 亚洲成av人片一区二区梦�| 性欧美xxxx极品摘花| 学校里的荡货校花h| 精品中文字幕一�| ass大乳女人pics| 一级片免看| 囚禁高潮(高h)| 亚洲综合久久久久| 我被两个男人躁了一天小�| 日本吃奶水的电影2| 欧美日韩一区二区三�| 周梦莹与刘老头同人版小�| 触手 揉肉� 高潮h 失禁| 小荡女h调教重口np| 戏里戏外现场林栀季淮�| 最爽free性欧美人�| 让女人下面流水的小说| 日韩精品一区二区免�| 欧美日韩亚洲综合在线| 色一区二区三区四�| 乳色吐息在线观看免费| 偷看女人自熨全过�| 亚洲国产三区| 亚洲精品激�| 阿q正传钰慧篇之破而后�| 欧美撒尿777hd撒尿| 成人伦理视频| 性色av一区二区三�| 豪放女大兵未删版美国免费观看| 久久九九久精品国产免费直�| 黄色一级图�| 韩国hd高清xxxx视频| 元敬大尺度床戏视频在线观�| japanesehdxxxxx| 高hnp女奶水被民工| 被恶魔做到怀孕h| 欧美狂欢多p性派�| 不卡的av在线免费观看| a一级网�| 国产不卡的av| 护士的色诱hd在线观看视频| 小杰与慧琳全文无删减�| bt种子在线搜索| 女教师~淫辱の教�| 客厅乱h乱亲�| 欧美乱子伦视�| 久久国产精品精品| 无人视频在线观看完整版免费高清中�| www.日本亚洲| 云樱被到爽高潮痉�| 欧美性色综合| 91宅男噜噜�66在线观看| 无遮�1000部啪啪未满十�| 女邻居做�2伦理| 稚嫩h女娃h粗大怀孕小�| 久久久性生活片| 强制高潮捆绑震动调教| 国产露脸饥渴孕妇在线播放| 黄色小视频下�| 日本老太丰满的裸�| 亚洲码欧洲码一二三�| 粗暴发泄呻吟求饶侵犯h| √天堂资�| hezyo北岛玲办公室av在线| 女仆被主人啪啪到高潮动漫| 新疆男同志gyxxxx| 欧美黑人疯狂性受xxxxx喷水| 久草在线资源网站| 美女被强摸双乳扒开屁股| 天操天天�| 撕开校花的乳罩慢慢揉捏视�| 未孕产乳奶汁h�| 日韩精品 电影一� 亚洲| 国产成人一�| 小太正裸体脱裤子网站gay| 后人极品翘臀美女在线播放| 女人的下面无遮无�| 红楼春梦之乱淫后�| 调教捆绑震动失禁强制高潮| 被老师摁着强进了她的身�| 久久丫精�| 李海仁三级未删减| 特级**毛片免费看小�| **爰片久久毛片| yjizzzz| 成年人黄色免费网�| 国产无遮�| 午夜乱码爽中文一区二�| 寡妇肉乳奶水小说| 福利一级片| 赵大宝赵勇苏媚小说在线阅�| 交换做爰2朋友夫妇| 男人日女人b视频| 固定在bl调教椅上扩张h男男| 小莹的性荡生活| 美女丝袜诱惑久久日av| 公和我边做边爱边好爽在线播放| 黑帮大佬我的356天第一�| 国产黄色一�| 韩国理伦三级做爰电影| 美女的逼逼�| 把小受吊起来揉搓| wwwwxxxx曰本| 涩涩涩涩涩涩�| aaa级精品久久久国产�| 用手进女人的下身视频| 插小姨子| 看全色黄大色大片免费| 快手上怎么挂小黄车卖货| 啊┅┅快┅┅用力啊岳高义| 欧美极品jiizzhd欧美�| 波多野结衣伦理电影在线观�| 2023av在线视频| 福利网站在线播放| 夏目彩春av电影| av毛片一区二区三�| 中国免费毛片| 白洁被五人糟蹋一�91大神| 男同桌掀起奶罩又亲又摸小�| 免费看的黄色大片| 成人免费视频播放�| jizz女人多水| 18黄色�| china国产男男gay网站| 玖玖视频免费在线观看| 欧美 日韩 精品| 喷奶水榨乳高h百合| 久久婷婷一�|